「instamatic」の版間の差分

提供: Eospedia
移動: 案内検索
(ページの作成:「== 必要要件 == * JEOL TEMCON (JEOL製TEMを使う場合) * Python == インストール == 最新版のインストール方法について説明する。 * 参考...」)
 
 
(同じ利用者による、間の6版が非表示)
行1: 行1:
 
== 必要要件 ==
 
== 必要要件 ==
* JEOL TEMCON (JEOL製TEMを使う場合)
+
* Windows
* Python
+
* Python3
 +
* JEOL TEMを使う場合
 +
** JEOL TemExternal
 +
* シミュレーションモードを使う場合
 +
** 特になし
  
 
== インストール ==
 
== インストール ==
行13: 行17:
 
cd instamatic
 
cd instamatic
 
</pre>
 
</pre>
 +
 +
※ commit 2c32254以降を使用すること。古いバージョンだとsimulationモードがエラーで動作しない場合あり。
  
 
依存ライブラリを記述したrequirements.txtがあるので、pipでそれらをインストールする。
 
依存ライブラリを記述したrequirements.txtがあるので、pipでそれらをインストールする。
行23: 行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が立ち上がる。パスとかは適宜変更しないと、何か操作したときにエラーメッセージが多分出てくる。

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

コンフィグロードのテスト

from instamatic import config
  • configの__init__.pyの中で各種読み込みが実行されて、各種コンフィグはディクショナリ型の値をもつ属性として保持される
  • 例えば config.microscope.wavelength のようにアクセス