「instamatic」の版間の差分

提供: Eospedia
移動: 案内検索
(起動方法)
行3: 行3:
 
* Python3
 
* Python3
 
* JEOL TEMを使う場合
 
* JEOL TEMを使う場合
** JEOL TEMCON
+
** JEOL TemExternal
 
* シミュレーションモードを使う場合
 
* シミュレーションモードを使う場合
 
** 特になし
 
** 特になし
行116: 行116:
  
 
[[File:2020-04-28 (1).png|x400px]]
 
[[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クラスインスタンスになり、そのメソッドからCOMインターフェイスを間接的にたたく感じになる
 +
* TEMServer使う場合は、ctrl.tem が MicroscopeClientクラスインスタンスになり、TEMServerを介してJeolMicroscopeインスタンスにコマンド渡す感じ (使う分には、ctrl.temをJeolMicroscopeインスタンスだと思ってAPI叩けばok)

2020年12月23日 (水) 19: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が立ち上がる。パスとかは適宜変更しないと、何か操作したときにエラーメッセージが多分出てくる。

2020-04-28 (1).png

コンソール実行

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クラスインスタンスになり、そのメソッドからCOMインターフェイスを間接的にたたく感じになる
  • TEMServer使う場合は、ctrl.tem が MicroscopeClientクラスインスタンスになり、TEMServerを介してJeolMicroscopeインスタンスにコマンド渡す感じ (使う分には、ctrl.temをJeolMicroscopeインスタンスだと思ってAPI叩けばok)