Automated EM Data Acquisition with SerialEM
本家様 http://bio3d.colorado.edu/SerialEM/

どうやらこのseralEMがMIT licenseで公開されているみたい.
入手はMercurialで可能で、

[foo@c pc]$ hg clone http://bio3d.colorado.edu/SerialEM/OpenSerialEM
[foo@c pc]$ cd OpenSerialEM
[foo@c OpenSerialEM]$
[foo@c OpenSerialEM]$ ls
AlignFocusWindow.cpp   EMimageBuffer.h          MacroControlDlg.h      PluginManager.h*          TSController.cpp
AlignFocusWindow.h     EMimageExtra.cpp         MacroEditer.cpp        ProcessImage.cpp          TSController.h
AmtCamera.tlb*         EMimageExtra.h           MacroEditer.h          ProcessImage.h            TSExtraFile.cpp*
AutoTuning.cpp         EMmontageController.cpp  MacroProcessor.cpp     PropertyTests.h           TSExtraFile.h*
AutoTuning.h           EMmontageController.h    MacroProcessor.h       ReadFileDlg.cpp*          TSPolicyDlg.cpp*
AutocenSetupDlg.cpp*   EMscope.cpp              MacroToolbar.cpp*      ReadFileDlg.h*            TSPolicyDlg.h*
AutocenSetupDlg.h*     EMscope.h                MacroToolbar.h*        ReadMe.txt                TSRangeDlg.cpp*
 :
 :
SerialEM.sln           SerialEM.vcxproj
 :
 :
[foo@c OpenSerialEM]$

「ReadMe.txt」にwindows2000,xpに対応のためVS2010でVS2008のv90で構築しているとある.

[foo@c OpenSerialEM]$ head -n2 SerialEM.sln
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
[foo@c OpenSerialEM]$

と確かにVS2010のプロジェクト.
こちらで調べた限りどうもMicrosoftのMFCライブラリを使っているようで、無償で使えるVSExpress系では
MFCライブラリが備わっていないので無理。Professional版などの有償版ならMFCは含まれる

だが、2014年末にリリースされたVisualStudioCommunity2013からMFCも条件がありながらも無償で
使えるようになった。ここではこの無償版のVisualStudioCommunity2013でこのOpenSerialEMをコンパイルしてみる

準備

VisualStudioCommunity2013のインストールらはwindows/IDE#p00c5496参照で。
このVisualStudioCommunity2013のインストール後に、「Visual Studio 2013 のマルチバイト MFC ライブラリ」もインストールします。

VisualStudio2013に読み込み

VS2013を起動させ、入手したOpenSerialEMにある「SerialEM.sln」を読み込む
「FILE」->「Open」->「Project/Solution...」
2017y08m13d_002923493.png
2017y08m13d_003027478.png

下図のようなセキュリティメッセージが表示されるが、「OK」ボタンを押下して進めます
2017y08m13d_003440275.png

SerialEM.sln」の読み込みが完了すると、オリジナルがvs2010なのにvs2013で開いているので
下記のようなメッセージが表示される。「OK」ボタンを押下して進めます
2017y08m13d_003548014.png

読み込みが完了して、「Solution Explorer」には下図のように各種ファイルが読み込まれます
2017y08m13d_003817699.png

だが、この時点で変更された、新規に追加されたファイルは下記のみです

[foo@c OpenSerialEM]$ find . -cmin -5 |less
.
./SerialEM.vcxproj
./SerialEM.opensdf
./SerialEM.sdf
[foo@c OpenSerialEM]$

*こちらでは、sambaでmacOS/Linux/Windowsとデータ共有しています。なので目的に応じて最適なプラットホームで処理することが可能で、上記はLinuxでfindの結果を示しているだけです。

コンパイル前に

OpenSerialEMに付随している「ReadMe.txt」に

It can be compiled in VS 2013 by reading in the current solution file,
allowing it to upgrade the project, and changing preprocessor definition
_WIN32_WINNT=0x0500 to 0x0501 and adding NO_WARN_MBCS_MFC_DEPRECATION.  The
64-bit version will compile without problems; the 32-bit Release version will
not link with the FFTW included in the package and that should be excluded as
described above.

とある。
コンパイル前にこの処置を施します。施す先は「SerialEM.vcxproj」なのですが、
vs2013からこれらの変更を施してみます。
まず、「Solution Explorer」の「SerialEM」フォルダを選択して、メニューから「Properties」を押下します
2017y08m13d_005744826.png

表示された「SerialEM Property Pages」画面にて、左ツリーから
「Configuration Properties」->「C/C++」->「Preprocessor」を選択します。
「Preprocessor」での設定項目とその定義値のリストが表示されます
2017y08m13d_010534778.png

ここで「Preprocessor Definitions」項目の値を変更します。

「Preprocessor Definitions」項目の値欄を選択すると「下向き」のアイコンが表示されます。ここをクリックして「Edit...」を選びます
2017y08m13d_010916707.png

するとさらに画面「Preprocessor Definitions」が現れる
2017y08m13d_011051697.png

ここに先ほどの「ReadMe.txt」に書かれた内容を反映させます。
「_WIN32_WINNT=0x0500」を「_WIN32_WINNT=0x0501」に変更して、「NO_WARN_MBCS_MFC_DEPRECATION」を加えます
*ちなみに「0x501」はWindows XP、「0x600」は Vista、「0x601」はwindows7
2017y08m13d_011301911.png

「OK」ボタンを押下後、「SerialEM Property Pages」画面に戻り、「OK」ボタンを押して完了です。
留意 ただし、これは現在選ばれている「Configuration」でのみ有効で、他の「Configuration」、例えば今現在「Debug」において修正したが、これは「Release」には反映されないです。
2017y08m13d_012037302.png
*方法があるのかも知れませんが、、

コンパイル

「Solution Explorer」の「SerialEM」フォルダを選択して、右クリックから「Build」を選びます。
2017y08m13d_012210792.png
「Output」にコンパイルの進捗が表示され、コンパイルが正常に終われば、「1 successded」と表示される
2017y08m13d_012424036.png

32bit/release版

32bit/debug版は上記の通りで作成できるが、リリース版は作れない。コンパイルするには、「Debug」と同じように「Preprocessor Definitions」項目を修正して、 OpenSerialEM/Utilities/XCorr.cpp の修正も必要です。ReadMe.txtより
vs2013の「Solution Explorer」では「SerialEM/CSource Files」に位置します

[foo@c OpenSerialEM]$ diff -u /tmp/XCorr.cpp Utilities/XCorr.cpp
--- /tmp/XCorr.cpp      2017-08-13 01:51:35.103369409 +0900
+++ Utilities/XCorr.cpp 2017-08-13 01:51:49.802421492 +0900
@@ -28,14 +28,14 @@
 #define FLOAT SLICE_MODE_FLOAT
 
 #define DTOR 0.01745329252
-
+/*
 #ifndef _WIN64
 #define USE_FFTW
 #endif
 #ifdef USE_FFTW
 #include "rfftw.h"
 #endif
-
+*/
 /*static void FFTtodfft(float *array, int nx, int ny, int idir);
 static void FFTtodfft(float *array, int nx, int ny, int idir)
 {
[foo@c OpenSerialEM]$

次に、「FFT.cpp」をコンパイル対象に変更します。
「Solution Explorer」で「SerialEM/CSource Files」に「FFT.cpp」があります。しかしファイルにはマークが付いていてBuild対象から外されております。これを無効にして、コンパイル対象にします。
2017y08m13d_015647102.png
「FFT.cpp」を選択して、「Solution Explorer」のメニューから「Properties」リンクを押下します
2017y08m13d_015940381.png

表示された「FFT.cpp Property Pages」画面にて、General欄の「Excluded From Build」項目の「Yes」を「No」へ変更します。
2017y08m13d_020310336.png
「OK」ボタンを押下して、ファイルのマークが消えたら完了です。

そうして、コンパイルを実施します

64bit/release版

「FFT.cpp」をコンパイル対象から外します。「XCorr.cpp」を元に戻します。
vs2013の上部メニュー欄を「Release」「x64」に変更して
2017y08m13d_153415230.png

「Solution Explorer」の「SerialEM」フォルダを選択して、メニューから「Properties」を押下して
「SerialEM Property Pages」を開く
2017y08m13d_153707064.png

そこから再び「Preprocessor」から「Preprocessor Definitions」で「_WIN32_WINNT=0x0501」への修正と「NO_WARN_MBCS_MFC_DEPRECATION」の追加を行います
2017y08m13d_154046368.png

そうしてコンパイルを実行します。
「Solution Explorer」の「SerialEM」フォルダを選択して右クリックメニューから「Build」を選択
「Output」に進捗が掲示され、コンパイルが正常に終われば、「1 successded」と表示される
2017y08m13d_154232965.png

windowsXP向け

「Solution Explorer」の「SerialEM」フォルダを選択して、メニューから「Properties」を押下する。
すると「SerialEM Property Pages」が開く。
左ツリーの「Configuration Properties」から「General」を選択して、右側の
「Platform Toolset」を確認する。
ここの値を「Visual Studio 2013 - Windows XP (v120_xp)」としてコンパイルします。
2017y08m19d_161147869.png

これで出来たバイナリをwindowsXPマシンに運び、実行数には別途「Visual Studio 2013 の Visual C++ 再頒布可能パッケージ」が必要になるかもしれない。それは https://www.microsoft.com/ja-jp/download/details.aspx?id=40784 にて入手可能です。

テスト実行

OpenSerialEM/launch


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2017-08-19 (土) 16:14:19 (5h)