投稿

5月, 2025の投稿を表示しています

PiMagの自動・外部制御にむけて(1)

イメージ
PiMag(ポータブル40テスラ装置)にはraspberry piが搭載されていて、そこにに置いた自作pythonプログラムで制御しています。そこでtkinterというpython標準のGUIを使用しています。そのGUI特有の機能を使っています。 問題は外部でリモートコントロールしたり、自動計測することを考えたときに、GUIベースなのは微妙と言うことです。今のソフトはtkinterの機能を駆使しているので、フレキシブルじゃないです。そこで 「テキスト設定ファイル」に値を読み書きすることを基本とする、というプログラムにしようと思います。ボタンを押しても、まずはテキストファイルの値を書き換え、それを別のプログラムが参照して次の動きを作る、ということです。 そうすれば、GUIのボタンを押さなくても、外部からテキストファイルを書き換えることで、ボタンを押すようなことができそうです。 そのテキストファイルは複数のプログラムが参照する可能性があるので、ファイルを安全に読み書きできる必要があります。 ファイル名readerwriter.pyとして下記を作ります。 from filelock import FileLock def safe_write(filename, content): lock_file = filename + ".lock" with FileLock(lock_file): with open(filename, 'w') as f: f.write(content) def safe_read(filename): lock_file = filename + ".lock" with FileLock(lock_file): with open(filename, 'r') as f: return f.read() 実行結果は下記です。 これを応用して、望みのプログラムを作ろうと思います。

PiMagの自動・外部制御にむけて(1)

イメージ
PiMag(ポータブル40テスラ装置)にはraspberry piが搭載されていて、そこにに置いた自作pythonプログラムで制御しています。そこでtkinterというpython標準のGUIを使用しています。そのGUI特有の機能を使っています。 問題は外部でリモートコントロールしたり、自動計測することを考えたときに、GUIベースなのは微妙と言うことです。今のソフトはtkinterの機能を駆使しているので、フレキシブルじゃないです。そこで 「テキスト設定ファイル」に値を読み書きすることを基本とする、というプログラムにしようと思います。ボタンを押しても、まずはテキストファイルの値を書き換え、それを別のプログラムが参照して次の動きを作る、ということです。 そうすれば、GUIのボタンを押さなくても、外部からテキストファイルを書き換えることで、ボタンを押すようなことができそうです。 そのテキストファイルは複数のプログラムが参照する可能性があるので、ファイルを安全に読み書きできる必要があります。 ファイル名readerwriter.pyとして下記を作ります。 from filelock import FileLock def safe_write(filename, content): lock_file = filename + ".lock" with FileLock(lock_file): with open(filename, 'w') as f: f.write(content) def safe_read(filename): lock_file = filename + ".lock" with FileLock(lock_file): with open(filename, 'r') as f: return f.read() 実行結果は下記です。 これを応用して、望みのプログラムを作ろうと思います。

macでpythonの環境を作る2025版

イメージ
科学研究用途で macでpythonを使えるようにするための環境構築をしています。自己責任です。画面の動画も撮ったので置いておきます。 homebrewをいれる( 参考ブログ1 ) tcl-tkをいれる( 参考ブログ2 ) pyenvをいれる( 参考ブログ1 ) pythonをいれる( 参考ブログ1 ) pipでnumpy, scipy, matplotlib, jupyter-labをいれる( 参考ブログ1 ) 簡単なプロットを作るテスト 以上10分程度で終わります。環境はmacbook air (M2)です。あとはpipで好きなパッケージを追加できます。 現在anacondaを利用していて、anacondaを削除するところからスタートしたい場合は、先に、 こちらのブログ を参考にして、anacondaを消してから、上をスタートすると良いです。

arxivの記事をpythonとmacの機能で英語音声に変換する

使っているのは、 python arxivライブラリ(pip install arxivでok) sayコマンド(macでテキストファイルを音声m4aファイルに変換できる) ffmpeg(m4aをmp3に変換できる。macではhomebrewでインストールできる) apple siliconのmac pythonでarxivのAPIをつかい、cond-matで3日前に発表された論文の情報をもらってきます。ローカルにテキストファイルにして保存します。 https://info.arxiv.org/help/api/index.html # making text file import arxiv import numpy as np import datetime def spaceinsert(tin): t2 = ' ' * len(tin) tout = '' for i in range(len(tin)): tout += tin[i] + t2[i] return tout lastdays = 3 day = datetime.date.today() - datetime.timedelta(days=lastdays) fday = day.strftime ( '%Y%m%d' ) floc = f'./dat/arxiv_cm_{fday}' txtloc = floc + '.txt' f = open(txtloc, 'w') print(f'date: {day.strftime ( '%B %d, %Y' )}.') f.write(f'Date: {day.strftime ( '%B %d, %Y' )}.\n\n\n\n') # Construct the default API client. client = arxiv.Client() # Search for the 10 most recent articles matching the keyword "quantum....