カテゴリー別アーカイブ: 研究テーマ

Python猛勉強中

これまで様々なプログラミング言語を使用してきたが、最近、Pythonが必要となり、使いこなそうと努力をしています。これまでの言語使用歴を簡単に述べると・・・

学部4年 N88BASIC(実験装置が古いPC9801で、まだ、動いていたので)
大学院~ポスドク LabVIEW(画面上で配線を繋げる特殊なプログラミング)
助手・助教 科学計算を始めたのでLinuxが必要となり、シェル関係を少し
准教授・教授
研究室を運営する状態になって、右往左往しています。少ない研究費を有効活用するために、なるべくフリーソフトで実験装置の制御系のプログラムを自作しています。
ラマン分光の実験装置 Visual C++
スパッタリングの装置 RaspberryPi上で C言語 + Qt (GUIで使えるように)
最近、ブラウン運動の研究が面白く、その解析プログラムを作成し、自動化を行っています。ブラウン運動とは顕微鏡で観測した1ミクロン程度のコロイドの不規則な動きであり、デジカメで撮影した動画ファイルを解析することになります。動画の解析には、有名なOpenCVというライブラリが存在し(デジカメでの顔の自動認識などを簡単に実装できます)、OpenCVを使うためにC++をまず使いました。ただ、SEに就職が決まった学部生が企業ではJavaを使用すると聞き、Javaで動くように移植し、これまで、Java上でブラウン運動の解析プログラムをチューンしてきました。(画像をOpenCVで解析するはずが、既存のライブラリーでは満足がいかなくなり、基本コードを一から書きはじめたら、OpenCVを呼び出す箇所が無くなっていたというオチまでありますが・・)

そんなプログラム言語に対して必要なときに必要な言語をつまみ食いしてきた感がありますが、ちょうど去年は、学部ホームページのリニューアルの仕事も行っていたので、ホームページを作成する際に使用するPHPやJavaScriptにまで詳しくなっていたりします。

まさかPythonまで手を出すと思っていなかったのですが、ブラウン運動を解析する良いプログラムをネット上で見つけたので、アルゴリズムの方針を見ると我々がJavaで作ったものと方向が違い、こちらの方が良いだろうと感じました。(解析時間は掛かるが、多くの統計データを抽出できそうなアルゴリズムだった。)そのプログラムは、IDL か MatLab で書かれており、 Pythonに移植したバージョンもありました。この中で無料で使えるのは、Pythonだけであり、Pythonを始める大きな動機となっています。

まだまだ始めたばかりであり、オフィシャルのPythonをWindowsにインストールして、pipで必要なライブラリーを集めるのが良いのか、Anacondaで一機に科学計算ルーチンをインストールした方が楽なのか、いろいろ試しているところですが、Javaで作ったソフトを超える程度までPythonも使えるようになったきたので、まずは、ホームページでPython推しの中間報告をしました。

Pythonでのブラウン運動の解析画面

ウイスキーの物理学

今回は研究の話です。
約1年前、文理学部から出版した新書「知のスクランブル」(ちくま新書)の中に新しくスタートさせた研究テーマを一般の方にも分かりやすく説明するため”ウイスキーの物理学”としてお酒の話に絡めて執筆しました。
その研究テーマが、ようやく論文という形になって公開することができましたので、内容を簡単に説明したいと思います。

“Brownian motion probe for water-ethanol inhomogeneous mixtures”
Kazuki Furukawa, Ken Judai, The Journal of Chemical Physics, 147, 24452 (2017).

ウイスキーをはじめとする蒸留酒の成分である水とエタノールですが、具体的にどのように分子が混じり合っているのか未だに分かっていない問題なのです。この問題に対して、新しい実験的手法を開発したのが、今回の論文の主旨です。
こちらは水の中に浮かべた1ミクロンの粒子の10秒間の軌跡です。ブラウン運動と呼ばれ、乱雑に予測不能な動きを示します。1ミクロンの粒子に水分子が熱運動で乱雑に衝突するので、このような動きを示すのですが、ブラウン運動を詳細に観測すれば、分子の動き、水とエタノールの分子レベルでの混ざり方に繋がると考え、研究をスタートさせたのです。
まだまだ、水とエタノールの混ざり方の解明にはたどり着いていませんが、混ざり方が1ミクロンといった巨視的に(分子から見たら)不均一であることが判明しました。

研究の話ばかりだと息が苦しくなるので、小休止。今回の論文は、私にとって色々新しいことに取り組んだものでした。新しい実験手法を開発したのですが、これまでの自分の研究を1本も参照していない論文です。普通は研究の流れから何本か過去の自身の研究をリファレンス(参照)するのですが、全く新しい自分の研究テーマであり、真のオリジナルペーパー、これから研究を広げるぞと考え執筆しました。また、物理学科に異動になって、LaTeXで書いた最初の論文でもあります。こんなに数式を書くことが無かったためMS Wordで論文を書いていたのですが、研究内容が変わったため数式表現の得意なLaTeXを使うようになりました。ようやく自分を物理学者と名乗ってもよいのではと思えるようになりました。

 

Raspberry Pi + Qt その後

Raspberry PiとQtを使って実験装置を作ると宣言して久しいが、徐々に進んでいるので途中経過を報告しようと思う。
Raspberry Piとは名刺サイズの小型コンピュータで処理能力は高くないが非常に低価格なので、研究費を有効に活用する目的で、Windowsパソコンの代わりにRaspberry Piを導入し、実験装置の制御システムを開発しました。(作り始めた頃は、Raspberry Pi 2が出た頃でしたが、今では、Raspberry Pi 3まで進化しています。)

imgp2100

マグネトロンスパッタ法という金属の蒸発手法を用いて、ナノ粒子を合成する実験装置を制御するのにRaspberry Piを使っています。真空計やアルゴンガスの流量コントローラーをADコンバーターとDAコンバーターを通じてRaspberry Piと接続し、直流高圧電源はUSBで直接コントロールしています。
制御プログラムは、C++で書いたのですが、グラフィカルに制御できるようQtも導入しています。スクリーンショットは、こちら

pi2

研究費が潤沢にある研究室だとWindowsパソコンにすべて繋げて、LabVIEWとかで制御すると簡単に早く出来るのだろうが、Raspberry Piでも問題なく実験装置を制御できました。C++のプログラムで実験装置を制御していると、学生にとっては、その仕組みを理解でき、また、実験装置の改良もハード面だけでなく、ソフト面からも実施でき、低価格以外のメリットも感じています。

 

Linux + Gamess

春休みにしていた作業なのだが、忘れないうちに記録しておこうと思っていたが、すでにゴールデンウィークである。マニアックな内容であるため、ごく一部の研究者向けの情報であるが、基本、研究者は忙しくネット上に情報を残す余裕が少ない人が多く、科学の進展のために備忘録として書き連ねておく。

とある量子化学計算を行いたくなり、計算用のマシーンにLinuxとGamessをインストールした。最初は、BLASルーチンをATLASやOpenBLASを導入したが、インテルのMKLが無償で使用できるようにライセンスが変更されており、そちらに変えた。

まず、Linuxのインストール。最もメジャーなLinuxディストリビューションの1つであるUbuntuを選択した。ちなみにバージョンは14.04LTS、こちらをDVDに焼いて使用。ただ、インストール直後にセキュリティーアップデートをして問題が発生した。当然、インストールされているCコンパイラであるgccのバージョンも最新になるのだが、最新バージョンでは、フォートランコンパイラgfortranとの連携ができておらず、gccのバージョンを下げる必要に迫られた。細かなテクニックがあるのだろうが、Ubuntuを再度、クリーンインストールした直後に、
$ sudo apt-get install gfortram
と入力し、フォートランをインストールしてから、アップデートを行い解決。
$ sudo apt-get update
$ sudo apt-get upgrade

続いて、インテルのMKLのインストール。インテルのホームページで登録を行い、レジストレーションキーを入手する。l_mkl_11.3.150.tgzをダウンロードして、/opt/intel/ に展開してインストールした。途中で入手したレジストレーションキー入力することとなる。

ここまで、準備をして、ようやく量子化学計算を行うためのプログラムGAMESSをインストールできる。無償で使用できるソフトだが、登録は必要であり、ホームページで必要事項を記入して送信すると、ダウンロード用のパスワードとURLがメールで送られてくる。今回は、ソースファイルをコンパイルすることから行った。ダウンロードしたソースファイルを/opt/gamessに展開してから
$ cd /opt/gamess
$ ./config
~~~~  please enter your target machine name: linux64
~~~~  GAMESS directory? [/opt/gamess]
~~~~  Please enter your choice of FORTRAN: gfortran
~~~~  Enter your choice of ‘mkl’ or ‘atlas’ or ‘acml’ or ‘none’: mkl
~~~~  MKL version (or ‘skip’)? skip
~~~~  communication library (‘sockets’ or ‘mpi’)? sockets
~~~~  Do you want to try LIBCCHEM?  (yes/no): no
configファイルを実行すると対話的にインストールの構成を決めることができる。詳しい内容はインストール用のドキュメント/machines/readme.unixを参照してください。ここからは、
$ cd ddi
$ ./compddi >& compddi.log &
$ mv ddikick.x ..

$ cd ..
$ ./compall >& compall.log &

ここまではマニュアル通りだったのだが、リンクの工程でエラーが出たので、lkedファイルを修正する必要があった。
~~~~ # —- Linux on 64 bit chips —–
~~~~ (中略)
~~~~ set MATHLIBS=”$MATHLIBS -ldl -Wl, –end-group”
オプション-ldlを追加した。

$ ./lked gamess 01 >& lked.log &

これで問題なくインストールできたが、32Gメモリーを積んでいるマシンの性能を引き出すためにメモリの設定ファイル/etc/sysctl.confに下記の数字を追加して再起動
kernel.shmmax = 25769803776
kernel.shmall = 6291456
どちらもメモリー32Gすべてを使用するという設定ではなく、そのうち24Gバイトでの値。

実際にgamessを実行する際のバッチファイルrungmsも修正。下記にポイントだけ。
set TARGET=sockets
set SCR=/scr/$USER
set USERSCR=/home/$USER/scr
set GMSPATH=/opt/gamess
(中略)
if (null$VERNO == null) set VERNO=01
if (null$NCPUS == null) set NCPUS=4
(中略)
if ($NCPUS == 1) then
set NNODES=1
set HOSTLIST=(`hostname`)
endif
#
if ($NCPUS > 1) then
switch (`hostname`)
(中略)
default:
set NNODES=1
set HOSTLIST=(`hostname`:cpus=$NCPUS)
endsw
endif

4CoreのCPUのマシンで並列計算できるようにした設定です。

 

金属アセチリド

この十年くらい取り組んでいる研究テーマ、というか、研究物質(対象)を紹介します。
金属アセチリドです。

acetylide

アセチレンという分子は炭素の三重結合(sp混成軌道)をもつ反応活性な物質であり、化学製品の原料として非常に重要な分子であり、物理化学的にも直線構造をしている興味深い分子です。このアセチレン分子と水素原子を銅や銀で置換したのが、銅アセチリドや銀アセチリドと呼ばれる金属アセチリドです。銅Cu、銀Ag、金Auは周期表で11族に属し、昔は11族は1B族とも呼ばれ、水素やアルカリ金属が属する1族(1A族)と近い性質があります。つまり、上図のように元素を置換できるのです。
(と、いっても、現実はかなり違って、図のように共有結合するような書き方は模式的であって、イオン結合的な特徴の方が強い感覚があります。)
これらの銅アセチリドや銀アセチリドは、古くから知られる基本的な分子なのですが、爆発性のある物質として有名であり、あまり盛んに研究が行われてきませんでした。そんなニッチな研究対象を見つけ、細々と研究を行っています。もちろん安全に研究を行うことが最も重要であり、例え爆発しても大丈夫なように少量での実験をしています。文字通り、細々と研究をしています。
最近は、置換基をつけた、例えば、銀フェニルアセチリドなど爆発性のない物質も取り扱うようになっています。

ナノでは色が変化する。

ナノサイエンス・ナノテクノロジーの「ナノ」という言葉が、非常に小さいサイズの世界であることを前回の投稿で説明しましたが、そのナノを研究する意義について今回話したいと思います。
ゴールド(金)は何色ですか?
普通の人は金色と答えるでしょう。しかし、ナノの研究者は、どんな大きさ・形のゴールドですかと逆に質問します。ゴールドという元素を指定するだけでは答えることができないからです。実は、金のナノ粒子は、金色をしていないのです。

話が逸れるが、ゴールドの金色も興味深い色で、一般の金属とは異なる色合いをしています。これは、金原子の電子軌道に対して、相対性理論の補正をして初めて現れる色合いだそうです。ゴールドを眺めながら、非常に小さな金原子を想像し、その周りを回る電子のスピードが光速に近く、宇宙空間を記述する相対論の効果が表れるのだなぁ~~と意味深な感慨にふけることもあります・・・・(怪しい??)

さてさて、話を戻して、ゴールドが金色をしているのは、指輪や小判など普通の大きさの金の塊のときの話であって、ゴールドがナノ粒子になると金色ではなく、赤色に変化します。この赤色は、古くからステンドガラスなどに応用されており、ガラスの中に金をほんの少し加えると綺麗な赤色に色づくことが経験的に知られていました。ガラスの中で金がナノサイズの大きさで分散しているためだと現在では分かっていますが、ガラス職人の間では、金赤(きんあか)と呼ばれているそうです。

IMGP0056

金のディスク金とナノ粒子の溶液

 

金のナノ粒子が赤色へと変化するように、多くの物質がサイズをナノへと変化することで、色(光学特性)・電気伝導性・磁性など様々な物性が変化します。つまり、人類に有益な物質を作成しようと考えたときに、物質を混ぜるだけでなく、そのサイズを制御することで、新しい性質を獲得することができるのです。ナノとは非常に小さな世界であるため、その制御は困難でもありますが、チャレンジする甲斐のある分野でもあるのです。

 

ナノとは?

ナノサイエンス、ナノテクノロジーという言葉を聞いたことのある人も多いと思います。ここでのナノとは、長さの単位であるナノメートル [nm] のことを指します。1メートルの1000分の1が1ミリメートル [1 mm]、そして、1ミリメートルの1000分の1が1マイクロメートル(1ミクロン)[1 μm]で、さらに、1マイクロメートルの1000分の1が1ナノメートル[1 nm]です。つまり、10億分の1メートル [0.000000001m]という途方もなく小さな世界がナノということになります。世の中を構成している原子の大きさが0.1ナノメートル程度ですので、原子が10個程度の大きさですので、人類が行える究極的な微小技術といえます。