「instamatic」の版間の差分
提供: Eospedia
(→必要要件) |
|||
| (同じ利用者による、間の5版が非表示) | |||
| 行1: | 行1: | ||
== 必要要件 == | == 必要要件 == | ||
* Windows | * Windows | ||
| − | * JEOL | + | * Python3 |
| − | * | + | * JEOL TEMを使う場合 |
| + | ** JEOL TemExternal | ||
| + | * シミュレーションモードを使う場合 | ||
| + | ** 特になし | ||
== インストール == | == インストール == | ||
| 行14: | 行17: | ||
cd instamatic | cd instamatic | ||
</pre> | </pre> | ||
| + | |||
| + | ※ commit 2c32254以降を使用すること。古いバージョンだとsimulationモードがエラーで動作しない場合あり。 | ||
依存ライブラリを記述したrequirements.txtがあるので、pipでそれらをインストールする。 | 依存ライブラリを記述したrequirements.txtがあるので、pipでそれらをインストールする。 | ||
| 行24: | 行29: | ||
python setup.py install | python setup.py install | ||
</pre> | </pre> | ||
| + | |||
| + | == シミュレーションモード == | ||
| + | 実際にTEM、カメラに接続せず、シミュレーションモードで動作させる方法。 | ||
| + | === 初期設定 === | ||
| + | Powershellを開き、instamaticを起動する。 | ||
| + | <pre> | ||
| + | instamatic.exe | ||
| + | </pre> | ||
| + | 初回起動の時は、設定ファイルを格納したディレクトリを自動で作ってくれる。執筆者環境の場合、C:\Users\kttn8\AppData\Roaming\instamatic\config が作成された。 | ||
| + | |||
| + | コンフィグが作成されたら、autoconfigで設定を変えられる。 | ||
| + | <pre> | ||
| + | instamatic.autoconfig.exe | ||
| + | </pre> | ||
| + | インタラクティブなプロンプトが表示されるので、適宜答えていく。今回はシミュレーションモードで設定をしてみる。 | ||
| + | |||
| + | ↓プロンプトでのやりとり | ||
| + | <pre> | ||
| + | PS C:\Users\kttn8> instamatic.autoconfig.exe | ||
| + | Config directory: C:\Users\kttn8\AppData\Roaming\instamatic\config | ||
| + | |||
| + | 1: jeol | ||
| + | 2: fei | ||
| + | 3: simulate | ||
| + | |||
| + | Which microscope can I connect to? [simulate] >> | ||
| + | simulate | ||
| + | |||
| + | 1: None | ||
| + | 2: gatan | ||
| + | 3: tvips | ||
| + | 4: simulate | ||
| + | |||
| + | Which camera can I connect to? [simulate] >> | ||
| + | simulate | ||
| + | |||
| + | 1: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\orius.yaml | ||
| + | 2: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\simulate.yaml | ||
| + | 3: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\simulateDLL.yaml | ||
| + | 4: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\timepix.yaml | ||
| + | 5: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\tvips-f416.yaml | ||
| + | 6: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\tvips-xf416.yaml | ||
| + | 7: None | ||
| + | |||
| + | Which camera type do you want to use (select closest one and modify if needed)? [None] >> | ||
| + | None | ||
| + | |||
| + | Mode: mag1 | ||
| + | High tension: 200 kV | ||
| + | Current density: 100221.24 pA/cm2 | ||
| + | GunShift(x=57788, y=11163) | ||
| + | GunTilt(x=42281, y=34217) | ||
| + | BeamShift(x=32772, y=30285) | ||
| + | BeamTilt(x=36439, y=255) | ||
| + | ImageShift1(x=37126, y=55930) | ||
| + | ImageShift2(x=42692, y=62856) | ||
| + | DiffShift(x=52452, y=45943) | ||
| + | Stage(x=52584.0, y=-33851.0, z=-8761.0, a=35.0, b=-9.0) | ||
| + | Magnification(value=25000, index=10) | ||
| + | DiffFocus(value=n/a) | ||
| + | Brightness(value=20770) | ||
| + | SpotSize(1) | ||
| + | Saved alignments: ('neutral.yaml',) | ||
| + | |||
| + | |||
| + | Wrote files config files: | ||
| + | Copy simulate_tem.yaml -> `C:\Users\kttn8\AppData\Roaming\instamatic\config\simulate_tem.yaml` | ||
| + | Copy simulate_calib.yaml -> `C:\Users\kttn8\AppData\Roaming\instamatic\config\simulate_calib.yaml` | ||
| + | |||
| + | In `settings.yaml`: | ||
| + | microscope: simulate_tem | ||
| + | calibration: simulate_calib | ||
| + | |||
| + | Todo: Check and update the pixelsizes in `simulate_calib.yaml` | ||
| + | In real space, pixelsize in nm | ||
| + | In reciprocal space, pixelsize in px/Angstrom | ||
| + | </pre> | ||
| + | |||
| + | === 起動方法 === | ||
| + | シェルで以下コマンドを打つ。 | ||
| + | <pre> | ||
| + | instamatic | ||
| + | </pre> | ||
| + | |||
| + | すると以下のようなGUIが立ち上がる。パスとかは適宜変更しないと、何か操作したときにエラーメッセージが多分出てくる。 | ||
| + | |||
| + | [[File:2020-04-28 (1).png|x400px]] | ||
| + | |||
| + | == コンソール実行 == | ||
| + | === JEOL TemExternal(COM)をPythonから直接叩く === | ||
| + | <pre> | ||
| + | import comtypes | ||
| + | comtypes.CoInitialize() | ||
| + | import comtypes.client | ||
| + | temext = comtypes.client.GetModule(('{CE70FCE4-26D9-4BAB-9626-EC88DB7F6A0A}', 3, 0)) | ||
| + | # TEM3コンポーネントのオブジェクト | ||
| + | tem3 = comtypes.client.CreateObject(temext.TEM3, comtypes.CLSCTX_ALL) | ||
| + | # LEN3インターフェイス | ||
| + | lens3 = tem3.CreateLens3() | ||
| + | # DEF3インターフェイス (deflector制御API) | ||
| + | stage3 = tem3.CreateDef3() | ||
| + | # などなど | ||
| + | </pre> | ||
| + | |||
| + | === Instamatic TEMControllerでTEMを制御 === | ||
| + | <pre> | ||
| + | from instamatic import TEMController | ||
| + | ctrl = TEMController.initialize(tem_name='jeol', cam_name=None) | ||
| + | </pre> | ||
| + | * instamaticのTEMServer使わない場合(setting.yamlでuse_tem_server=False)は ctrl.tem が JeolMicroscopeクラスインスタンスになり、そのメソッドからTemExternalのCOMインターフェイスを間接的にたたく感じになる | ||
| + | * TEMServer使う場合は、ctrl.tem が MicroscopeClientクラスインスタンスになり、TEMServerを介してJeolMicroscopeインスタンスにコマンド渡す感じ (使う分には、ctrl.temをJeolMicroscopeインスタンスだと思ってAPI叩けばok) | ||
| + | |||
| + | == コンフィグロードのテスト == | ||
| + | <pre> | ||
| + | from instamatic import config | ||
| + | </pre> | ||
| + | * configの__init__.pyの中で各種読み込みが実行されて、各種コンフィグはディクショナリ型の値をもつ属性として保持される | ||
| + | * 例えば config.microscope.wavelength のようにアクセス | ||
2020年12月23日 (水) 12:23時点における最新版
目次
必要要件
- Windows
- Python3
- JEOL TEMを使う場合
- JEOL TemExternal
- シミュレーションモードを使う場合
- 特になし
インストール
最新版のインストール方法について説明する。
https://github.com/stefsmeets/instamatic より、ソースコードをクローンする。
git clone https://github.com/stefsmeets/instamatic.git cd instamatic
※ commit 2c32254以降を使用すること。古いバージョンだとsimulationモードがエラーで動作しない場合あり。
依存ライブラリを記述したrequirements.txtがあるので、pipでそれらをインストールする。
pip install -r requirements.txt
instamaticをPython環境へインストールする。
python setup.py install
シミュレーションモード
実際にTEM、カメラに接続せず、シミュレーションモードで動作させる方法。
初期設定
Powershellを開き、instamaticを起動する。
instamatic.exe
初回起動の時は、設定ファイルを格納したディレクトリを自動で作ってくれる。執筆者環境の場合、C:\Users\kttn8\AppData\Roaming\instamatic\config が作成された。
コンフィグが作成されたら、autoconfigで設定を変えられる。
instamatic.autoconfig.exe
インタラクティブなプロンプトが表示されるので、適宜答えていく。今回はシミュレーションモードで設定をしてみる。
↓プロンプトでのやりとり
PS C:\Users\kttn8> instamatic.autoconfig.exe
Config directory: C:\Users\kttn8\AppData\Roaming\instamatic\config
1: jeol
2: fei
3: simulate
Which microscope can I connect to? [simulate] >>
simulate
1: None
2: gatan
3: tvips
4: simulate
Which camera can I connect to? [simulate] >>
simulate
1: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\orius.yaml
2: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\simulate.yaml
3: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\simulateDLL.yaml
4: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\timepix.yaml
5: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\tvips-f416.yaml
6: C:\Users\kttn8\AppData\Local\Programs\Python\Python38\lib\site-packages\instamatic-1.3.0-py3.8.egg\instamatic\config\camera\tvips-xf416.yaml
7: None
Which camera type do you want to use (select closest one and modify if needed)? [None] >>
None
Mode: mag1
High tension: 200 kV
Current density: 100221.24 pA/cm2
GunShift(x=57788, y=11163)
GunTilt(x=42281, y=34217)
BeamShift(x=32772, y=30285)
BeamTilt(x=36439, y=255)
ImageShift1(x=37126, y=55930)
ImageShift2(x=42692, y=62856)
DiffShift(x=52452, y=45943)
Stage(x=52584.0, y=-33851.0, z=-8761.0, a=35.0, b=-9.0)
Magnification(value=25000, index=10)
DiffFocus(value=n/a)
Brightness(value=20770)
SpotSize(1)
Saved alignments: ('neutral.yaml',)
Wrote files config files:
Copy simulate_tem.yaml -> `C:\Users\kttn8\AppData\Roaming\instamatic\config\simulate_tem.yaml`
Copy simulate_calib.yaml -> `C:\Users\kttn8\AppData\Roaming\instamatic\config\simulate_calib.yaml`
In `settings.yaml`:
microscope: simulate_tem
calibration: simulate_calib
Todo: Check and update the pixelsizes in `simulate_calib.yaml`
In real space, pixelsize in nm
In reciprocal space, pixelsize in px/Angstrom
起動方法
シェルで以下コマンドを打つ。
instamatic
すると以下のようなGUIが立ち上がる。パスとかは適宜変更しないと、何か操作したときにエラーメッセージが多分出てくる。
コンソール実行
JEOL TemExternal(COM)をPythonから直接叩く
import comtypes
comtypes.CoInitialize()
import comtypes.client
temext = comtypes.client.GetModule(('{CE70FCE4-26D9-4BAB-9626-EC88DB7F6A0A}', 3, 0))
# TEM3コンポーネントのオブジェクト
tem3 = comtypes.client.CreateObject(temext.TEM3, comtypes.CLSCTX_ALL)
# LEN3インターフェイス
lens3 = tem3.CreateLens3()
# DEF3インターフェイス (deflector制御API)
stage3 = tem3.CreateDef3()
# などなど
Instamatic TEMControllerでTEMを制御
from instamatic import TEMController ctrl = TEMController.initialize(tem_name='jeol', cam_name=None)
- instamaticのTEMServer使わない場合(setting.yamlでuse_tem_server=False)は ctrl.tem が JeolMicroscopeクラスインスタンスになり、そのメソッドからTemExternalのCOMインターフェイスを間接的にたたく感じになる
- TEMServer使う場合は、ctrl.tem が MicroscopeClientクラスインスタンスになり、TEMServerを介してJeolMicroscopeインスタンスにコマンド渡す感じ (使う分には、ctrl.temをJeolMicroscopeインスタンスだと思ってAPI叩けばok)
コンフィグロードのテスト
from instamatic import config
- configの__init__.pyの中で各種読み込みが実行されて、各種コンフィグはディクショナリ型の値をもつ属性として保持される
- 例えば config.microscope.wavelength のようにアクセス