Transcript
Page 1: Igor Proの基本的な操作の説明 for化学実験B3kuchem.kyoto-u.ac.jp/ubung/15ueb/invitation_to_igor2015.pdfIgor Proの基本的な操作の説明 for化学実験B3 文責 八田(課題2「相図と熱分析」担当)

Igor Pro の基本的な操作の説明 for 化学実験 B3

文責 八田(課題 2「相図と熱分析」担当)

0. まえがき

Igor Proには、表計算ソフトでしかデータ操作を行ってこなかった人が初めて扱うに当たって戸惑いやすい部分があります。そこで、マニュアルのような形式ではなく、実際に行う

ような処理を見ることによって、このソフトの「感触」を得てもらおうという狙いでこの文

章は作成しました。

1.wave の操作

(ⅰ)wave というデータ形式について

皆さんは Excel でグラフを作ったことはあると思われますが、Excel は表計算ソフトであり、データ解析を主とする Igor Pro(以後 Igorと呼びます)はそれとはだいぶ異なる機能を強化したソフトウェアです。表計算ソフトでは、スプレッドシート上に並べた数字の縦また

は横の集合について計算や分析を便利に行えます。しかし、シートに載っている情報だけが

扱えるデータです。これに対して、Igor は内部にパソコンのハードディスクと同じようなフォルダ構造をもち、それらの中で各データを個別に操作することができます。後に示す Tableや Graphはそのようなデータを見るためのツールといった位置づけです。 Igor内部のデータについて具体的に見ていきましょう。「Data Browser」(以下「」は Igorについて独自の意味をもつ言葉の初出の際に付けています)という機能があります。これは

メニューバーから Data–Data Browser(以後斜体はメニューバーから行う操作手順を表します)を選ぶと画面上に現れます。図1はその一例です(これは課題 2「相図と熱分析」で測定した temp_Pb の冷却曲線を取り込んだ Igor ファイルの中身です)。「root」と呼ばれるデ

ィレクトリの中に3つのデータが格納されています。上の 1 つは「wave」と呼ばれる形式のデータ、下の二つはそれぞれ「variable」と「string」という形式のデータです。それぞれ異なるマーク(波マーク、#と$)が先頭に付いています。 wave には複数の数字または文字が収納されています。イメージとしては Excelの縦のデータ一列分と考えておいて初めは問題あ

りません(多次元のものを定義することもで

きますが、今は省略します)。これに対して

variable と string はそれぞれ一つの数字または文字のみを保持しています。この2つを

使うようになるのは「Macro」を記述するようになってからなので、ここではこれ以上触

れません。

図1Data Browerのウィンドウ

Page 2: Igor Proの基本的な操作の説明 for化学実験B3kuchem.kyoto-u.ac.jp/ubung/15ueb/invitation_to_igor2015.pdfIgor Proの基本的な操作の説明 for化学実験B3 文責 八田(課題2「相図と熱分析」担当)

temp_Pbと名付けられた waveには実験で測定した温度のデータ(℃)が格納されています。この wave は測定用ソフトウェアから出力されたテキストファイルを読み込んだものです。この中身をテーブル(表)として表示したのが図2の左図です(Windows–New Tableで wave の一覧から選択、「Do it」)。このデータは全部で 500 個の数字の集合からなり、それぞれに左端の列に表示してあるように 0から 499までの「point」が割り振られていると考えてください。pointの意味は単にテーブル中の行数(row)に限らないことが後に分かります。これをグラフとして表示すると図2の右図のようになります(Windows–New Graphで「Y waves」の waveの一覧から temp_Pbを選択、「X waves」の一覧からは「_calculated_」を選択して Do it)。 以下、この temp_Pbの一部分を取り出す、℃から Kに変換するということを行います。 (ⅱ)wave の作成、コマンド操作

全体で 500 点からなる temp_Pb から相転移が現れている 100点分を抽出することにします。Igor内で waveを作成するときには Data–Make waves…を選択します。図3のようなウィンドウが出てきます。

「Dimension」つまり次元は temp_Pbが 1ですから、同じく1(vectors)とします。その下「Rows」という項目があり、今は128(デフォルト)と記入されています。これはこれから作る wave に入れられる各データの数にあたるので、100 と書き直します。それから Names の欄、左上の欄に(一部分という意味で)「Part」と記入し

ます。ここまで記入すると Do itがアクティブになるので、実行します。すると Data Browser中に新しく Partという名の waveが現れます。これをテーブルに表示してみると(先のテー

図2 wave「Pb」の内容を Table上に表示したもの(左)と Graphにしたもの(右)

図3 wave作成の window

Page 3: Igor Proの基本的な操作の説明 for化学実験B3kuchem.kyoto-u.ac.jp/ubung/15ueb/invitation_to_igor2015.pdfIgor Proの基本的な操作の説明 for化学実験B3 文責 八田(課題2「相図と熱分析」担当)

ブルのウィンドウをクリックして最前面に持ってくるとメニューバーに Table という項目が出るので、Table–Append Columns to Tableを選択すると、waveの一覧が表示され、Partを選択します)、中身は全部 0(初期値)になっていることが分かります。ここに temp_Pbの中の一部のデータを移す(コピーする)ためにはコマンド操作をする必要があります。 実は Igor のほとんどの操作はコマンドとして文字列を書

き、enter(⏎)することで行えます。そのコマンドを書き込

む場所は図4のようなウィン

ド ウ ( Windows–Command Windowで最前面に出てきます)です。書き込みを行うのは赤線

より下の部分です。そしてその

線の上にこれまでの履歴が残

されています。これまで waveを作成したり、テーブルに表示

したりする際に行っていた操作はこのようなコマンドを打つ代わりのものでした。 まず、コマンドを使って、Partに適当な数字を入力することをやってみましょう。 Part[0] = 5⏎ Part[2,5] = 8⏎ Part[7,12] = p⏎ Part[14,16] = p*2+1⏎ 図5にこの結果を示します。始めの2つの操作の結果

は分かりやすく、[ ]内に示された特定の行や範囲に数字を入れているだけです。3つ目の操作では「p」という文字を入力していますが、結果は数字として入力されてい

ます。そして、その値は左端の列の数字と一致していま

す。つまり「p」は wave の何行目(row)という情報を呼び出します。これが理解できると4つ目の操作はそれ

をちょっと応用しただけと分かります。 では、temp_Pbの 70行目から 169行目までの 100個の値を Partにコピーします。入力するコマンドは Part[0,99] = temp_Pb[70+p] ⏎ です。この操作で行われていることは『Partの p行目にtemp_Pb の(70+p)行目の数字を代入しなさい』ということです。pの範囲は左側、操作を行われる waveの側で指定されています。(全ての行を対象としているこの場合に

は[0,99]は省略してもよい) 次に Partの値を Kに変換します。今の値に 273.15を加えればよいだけです。入力するコマンドは Part = Part + 273.15⏎ または Part +=273.15⏎ となります。全ての行が対象なので、あからさまな行指定は必要ありません。右側の構文は

図4コマンドウィンドウの様子。上のバーに書かれてい

るのはこの操作を行っている Igor ファイル(拡張子.pxp)の名前。

図5 Partに対する操作の結果

Page 4: Igor Proの基本的な操作の説明 for化学実験B3kuchem.kyoto-u.ac.jp/ubung/15ueb/invitation_to_igor2015.pdfIgor Proの基本的な操作の説明 for化学実験B3 文責 八田(課題2「相図と熱分析」担当)

プログラミングをかじったことがある人には見慣れたものでしょう。(余談:Partと同じ row数を持つデータならば、別の waveを同じようなコマンド操作で Partに加算することもできます。このような操作は実験データからバックグラウンドを差し引く操作や、規格化する操

作としてしばしば行われます。)

この Partをグラフに追加表示してみましょう(先のグラフウィンドウをクリックして最前面に持ってくるとメニューバーに Graphという項目が出るので、Graph–Append Traces to Graph…を選択して、Y wavesに Partを、X wavesに_calculated_を選択します)。図6左のようなグラフが現れます。切り出した範囲が分かるように 70 から 169 の範囲を描画機能で示しました。Partに temp_Pbから数字がコピーされ、さらに Kの値に変更されているのが分かります。しかし、Partのグラフが bottom axisの 0から描かれてしまっている。そこで、次のセクションでwaveの付加的な設定とグラフ上の描画との関係について説明します。

2.Scaling の使い方

(ⅰ)wave の scaling を設定する ここまで temp_Pbの waveがどのように測定したものか説明していませんでしたが、これは試料温度を一定時間間隔(5 sec)で記録した結果です。これまでのグラフでは横軸は行数という意味しか示していませんでしたが(縦軸の意味は温度だったので、ラベルは書くべき

ですが省略します)、この行数 pと時間 tは t=5×pの関係にあるわけです。これをグラフに反映させるには二つの方法があります。 (a)X軸用の waveを作成して、X-Yグラフとして表示する (b)「scaling」を設定して、X wavesは_calculated_のままとする (a)の方法は先に述べた wave の操作を少し応用するだけです。コマンドだけを以下に示します。 Make/N=100 t_Part⏎(先に Part を作成した操作と同じ) t_Part = 5*70+5*p⏎(これで 350から 845までの数字が入る) グラフにPartを追加する際にこれまでX wavesとして_calculated_を選択していたところ

図6 Pbと Partのグラフ。左は bottom axis(x軸)が point、右は scalingされた量。

Page 5: Igor Proの基本的な操作の説明 for化学実験B3kuchem.kyoto-u.ac.jp/ubung/15ueb/invitation_to_igor2015.pdfIgor Proの基本的な操作の説明 for化学実験B3 文責 八田(課題2「相図と熱分析」担当)

をこの t_Partに変えます。図6右のようなグラフを最終的に得るためには、t_temp_Pbのような temp_Pbの X軸用の waveも作る必要があります。 次に(b)の方法について説明します。scalingとは『waveの p(point)に対して一次関数で定義される「x」という量を定義したもの』と考えることができます。具体的にその使い方を見ていく方が理解への近道かと思うので、早速 temp_Pbや Partに scalingを定義してみます。 メニューバーの Data–Change Wave Scaling…を選択すると図7のようなウィンドウが表示されます。

右側には今 root 下にある wave の一覧があります。まずこの中から

temp_Pb を選択しています。左上段の薄い線で囲まれた領域が scalingの設定項目にあたります。SetScale Modeとして「Start and Delta」が選択されていることを確認してくだ

さい。(これ以外の modeについてはこれ以降の内容が理解できれば、意

味はすぐ分かります)その上に Startの欄に0、Deltaの欄に 1が入力されています。この場合 x と p は同じ値です(デフォルト)。先ほどの t=5×p という関係を x に当てはめるため、Deltaの欄を 5を入力します。すると Do itがアクティブになり、その変更が実行されます。再び scaling の設定ウィンドウを呼び出し、次は Part を選択し、Start に350(=5*70)、Deltaに 5と入力し、実行します。この後、図6と同様のグラフ表示操作(X wavesには_calculated_を選ぶ)をすると図6右のようなグラフが得られます。 つまり、wave に対して scaling を定義すると Igor がそれらの x 座標の値を自動的に計算してくれるような感覚です(ここまで理解できるとグラフの作成時に見る「_calculated_」の意味が自然に受け入れられるでしょう)。ただし、等間隔のパラメータで各 row の値が関係付けられていることが必須ですので、お忘れないよう。(余談:非等間隔のデータであって

も補間機能(interpolate)を利用して、近似的に等間隔データに変換するツールも Igorには備わっています) (ⅱ)おまけ:scaling を応用して関数を描く

もう少し scalingについて理解を深めるために、簡単な関数を Igorで描く方法を紹介します。Data–Make waves…から TrigoWaveと PolyWaveという名前(自分で試す時にはお好きに)で rowは 128(デフォルト)の waveを作成します。続いて、Change Wave Scalingウィンドウを開いて、SetScale Modeを Start and Endに変更します。TrigoWaveまたはPolyWaceを選択して、Startの欄には-6.28、Endの欄には 6.28と記入します。約 2πということです。そして、次のようにコマンドを入力します。 TrigoWave = 10*sin(3*x)/x⏎ PolyWave = 0.05*x^4-x^2+1⏎ 四則演算、指数や組み込みの関数(sin(x))などを使ったこのような数式も、C言語などで使うような形式で入力することができます。一応間違いのないように入力した数式を筆記で表

現する形式に直すとそれぞれ

図7 Scalingの設定ウィンドウ

Page 6: Igor Proの基本的な操作の説明 for化学実験B3kuchem.kyoto-u.ac.jp/ubung/15ueb/invitation_to_igor2015.pdfIgor Proの基本的な操作の説明 for化学実験B3 文責 八田(課題2「相図と熱分析」担当)

(TrigoWave)、

(PolyWave) です。前に出てきた pを使った演算とよく似ています。scalingを設定した時点で、xは pとは異なる値となり、この場合には p と xは x=−6.28+p*(6.28×2)/(128-1)という関係で結ばれています。図8にこのような形式で

描いた関数のグラフを示します。点と点の間

を線で結ぶようなスタイルで描いています

が、変化に対して点が十分細かくとられてい

れば、スムーズな曲線のように見えます。「荒

いな」と感じたら waveを作成する時の row数をもっと多くすればよいわけです。

3.Fitting の行い方

Igorを使ってFittingを行う場合、まずはグラフにFittingを行いたいデータを表示します。そのグラフウィンドウが最前面にある状態で Analysis–Curve Fitting...から図 9のウィンドウを呼び出します。いろいろ設定する項目が多いのでタブごとに整理されています。始めに

「Function and Data」というタブが選択され、Fittingを行う上で一番基本的な情報−対象となるデータの集合と適用する関数–を設定します。Scalingが適切に設定されたデータであれば、X Dataの欄は「_calculated_」のままでよく、Y Dataのところで対象となるウェーブ名のリストから Fitting を行いたいデータを選択します。ここで Y Data の欄のすぐ右横に「From Target」というチェックボックスがあります。これにチェックを入れると今最前面にもってきたグラフウィンド

ウ内で表示されている waveのみが Y Dataおよび X Dataのリストに表示されます。こ

れは今いるディレクトリに多

数の wave データがある場合にとても便利な機能です。さ

らに同じチェックボックスは

実はほとんどの操作ウィンド

ウにあるので、ぜひ活用して

ください。 ここでは Fitting を行うデータとして準備実験に含まれ

る「気体の粘度」の課題で得

られる圧力の時間変化のデー

タを用います(図 10 中の各マーカー)。測定は 15 秒おきに行うとされているので、スケー

図8 scalingを利用して描いた関数の例

図9 Curve Fittingの設定ウィンドウ

Page 7: Igor Proの基本的な操作の説明 for化学実験B3kuchem.kyoto-u.ac.jp/ubung/15ueb/invitation_to_igor2015.pdfIgor Proの基本的な操作の説明 for化学実験B3 文責 八田(課題2「相図と熱分析」担当)

リングの Deltaを 15に設定して、表示しています。 この課題における圧力変化は下記のように表されます。P0は大気圧で、時間とともに容器

内の圧力 Pが漸近する様子がこの式で表現されています。そして、Fittingによって決定するパラメータは kと aであり、kが気体の粘度に比例する量です。 P0は本来既知ですが、これ

を作成した時点で記録がなかったので、パラメータとしました。

Igor の Fitting 機能には多項式などいくつか単純な関数がデフォルトで利用できるようになっていますが(図9の「line」と書かれた部分のタブを展開すると一覧が表示されます)、上記の式は含まれていません。そのような場合には Function の欄の中にある「New Fit Function」ボタンをクリックします。図11に示したウィンドウが現れます。まずは関数の名前を付ける(ここでは Pressure とした)。この文字列がデフォルト関数のリストに追加される。左の列は Fittingによって決定したいパラメータの名前、右は独立変数の名

前(普通 xにしておく)。「Fit Expression」の欄に式を書き、「Test Compile」ボタンを押して式や変数名の確認を行った後、

「Save Fit Function Now」ボタンを押す。 つぎに、各パラメータに初期値を決め

ます(ただし、デフォルトで入っている

関数を使う場合には不要です)。Fittingでは各パラメータの値を振って残差自乗

和(重みを付けないχ2)が小さくなる方

向を検知し、一定量その方向にパラメー

タを変化させてから、またどちらに変化

させれば残差和が減少するのか、という

操作を逐次的に行っています。この方法

では初期値がほどほどにデータに合って

いることが求められますので、適切な初

期値の入力が必要になるわけです。具体

的には、「Coefficients」のタブに移動して、パラメータ値を入れ、「Graph Now」ボタンを押してグラフ上で Fitting関数とデータとの差を確認します。まったく見当違いの値ではグラフの表示範囲に表示されないかもしれません

から、「適当」ではだめです。 最後に、右端の「Output Options」を選択しましょう。Destinationは「auto」にしておくと、Fittingを実行したときに Fittingした関数データ(fit_+「データ wave名」という名前になる)が生成、表示されます。Add Textbox to Graphのチェックボックスを入れておくと、Fitting結果がグラフに表示されて便利です(図 10中のテキストボックス)。ここまで用意ができたら、「Do it」を押して Fittingを実行します。

P = (

2

1 + a exp(�2P0kt)� 1)P0

図10 銅線と NTC サーミスタの抵抗の測定結果と直線 Fittingの結果

Page 8: Igor Proの基本的な操作の説明 for化学実験B3kuchem.kyoto-u.ac.jp/ubung/15ueb/invitation_to_igor2015.pdfIgor Proの基本的な操作の説明 for化学実験B3 文責 八田(課題2「相図と熱分析」担当)

Igor の Fitting にはたくさんのオプション機能が備わっています。ここで触れなかったタブ「Data Options」では Fitting する範囲を限定することができます。この他、高度なエラー評価などが可能ですが、その評価法の知識が不十分なまま使用とすると誤った解釈をして

しまうおそれがあります。まずはそのオプションがどんな処理をするものなのか調べ、理解

してから使用するようにしましょう。

5.おわりに

ここではグラフ作成についてほぼデフォルトの出力形式のまま表示しています。実際、Igorのグラフ作成における自由度は Excel よりずっと多いです。軸の設定、offset の設定、ラベルの設定、tick(軸上の適当な数字の間隔で描かれている短い線のこと)の設定などの変更をライブで確認しながら設定できるので、慣れてしまえば大変使い易いと感じるはずです。

(図8のグラフでもちょっとしたオプション設定を加えて見ました。)「こんな風に格好良く

グラフを作成してみたい」というはっきりしたイメージがあるのにうまくいかない場合には

スタッフまたは TAに尋ねてみてください。

図11 新しい関数の設定ウィンドウ


Top Related