バッチ処理

Originであるデータに対して行った分析処理と同じ処理を複数のデータファイルやデータセットに対してバッチ処理として実行する必要があるかもしれません。これは3つの方法で行うことができ、次のセクションで情報とサンプルを提供しています。

各データセットをループで処理する

バッチ処理を行う1つの方法は、複数ファイルやデータセットをループし、ループ処理の中で、適切なXファンクションや他のスクリプトを呼び出し、必要なデータ処理を実行することです。

次のサンプルは10個のファイルをインポートし、カーブフィット操作を実行して、フィット結果を出力します。

// ワイルドカードを使ってすべてのファイルを検索
string path$ = system.path.program$ + "Samples\Batch Processing";  // ファイルを検索するパス
// path$変数で指定したフォルダ内を検索
// 結果のファイル名を文字列fname$に保存する
// CRLF で分ける(デフォルト).ここで使用しているワイルドカード * は、
// "T"からはじまり、拡張子が"csv"のファイルすべてを意味する
findFiles ext:="T*.csv";
 
// シートなしの新しいブックを開始
newbook sheet:=0;
// すべてのファイルをループ
for(int iFile = 1; iFile <= fname.GetNumTokens(CRLF); iFile++)
{
	// ファイル名を取得
	string file$ = fname.GetToken(iFile, CRLF)$;
	// ファイルを新しいシートにインポート
	newsheet;
	impasc file$;
	// 現在のデータの列2にガウスフィットを実行
	nlbegin iy:=2 func:=gaussamp nltree:=myfitresult;
	// フィットし、レポートなしで終了
	nlfit;
	nlend;
	// ファイル名と結果を出力
	type "File Name: %(file$)";
	type "   Peak Center= $(myfitresult.xc)";	
	type "   Peak Height= $(myfitresult.A)";	
	type "   Peak Width=  $(myfitresult.w)";	
}

ループ内で分析テンプレートを使用

代表的なデータセットに対してメニュー操作で必要なデータ処理を実行し、ワークブックまたはプロジェクト全体を分析テンプレートとして保存し、Originで分析用のカスタムテンプレートを作成できます。次のサンプルは、10個のファイルのカーブフィットを実行する既存の分析テンプレートを使う方法です。

// ワイルドカードを使ってすべてのファイルを検索
string fpath$ = "Samples\Batch Processing\";
string path$ = system.path.program$ + fpath$;  // ファイルを検索するパス
// path$変数で指定したフォルダ内を検索
// 結果のファイル名を文字列fname$に保存する
// CRLF で分ける(デフォルト)ここで使用しているワイルドカード * は、
// "T"からはじまり、拡張子が"csv"のファイルすべてを意味します
findFiles ext:="T*.csv";
 
// 分析テンプレートのパスをセット
string templ$ = path$ + "Peak Analysis.OGW";
// すべてのファイルでループ
for(int iFile = 1; iFile <= fname.GetNumTokens(CRLF); iFile++)
{	
   // 分析テンプレートのインスタンスを開く
   doc -a %(templ$);
   // 現在のファイルを第1シートにインポート
   page.active = 1;
   impasc fname.GetToken(iFile, CRLF)$
}
 
// テンプレートで手動再計算に設定した場合
//保留中のすべての操作を更新する
run -p au;

Xファンクションのバッチ処理を使用する

Originは、ファイルやデータセットをループする必要がないところでスクリプトアクセス可能なXファンクションでバッチ処理を行うことができます。単に処理を行うデータのリストを作成し、適切なXファンクションを呼び出します。Xファンクションは、テンプレートまたはテーマを使って、指定したデータのすべてを処理します。これらのXファンクションのいくつかは、任意のサマリーレポートを作成します。サマリーレポートには、ユーザが分析テンプレートでレポートすると指定した各ファイル/データセットからの結果が含まれています。

以下の表は、バッチ分析で利用可能なXファンクションの一覧です。

名前 説明
batchProcess

任意のサマリーレポート付きで、分析テンプレート使って複数ファイルまたはデータセットのバッチ処理を実行します。

paMultiY ピークアナライザテーマを使って複数Yデータセットのピーク分析を実行します。

次のスクリプトは、分析テンプレートを使って、10個のファイルからデータのカーブフィットを実行し、処理の終わりにサマリーレポートを作成する batchProcess Xファンクション を使用する方法を示しています。

// ワイルドカードを使ってすべてのファイルを検索
string path$ = system.path.program$ + "Samples\Batch Processing\";  // ファイルを検索するパス
// path$変数で指定したフォルダ内を検索
// 結果のファイル名を文字列fname$に保存する
// CRLF で分ける(デフォルト).ここで使用しているワイルドカード * は、
// "T"からはじまり、拡張子が"csv"のファイルすべてを意味する
findFiles ext:="T*.csv";
 
// 分析テンプレートのパスをセット
string templ$ = path$ + "Peak Analysis.OGW";
 
// バッチ処理X-Functionを呼び出す
// 最終的なサマリーシートを保持し、中間ブックを削除
batchProcess batch:=1 name:=templ$ data:=0 fill:="Raw Data" 
             append:="Summary" remove:=1 method:=impASC;

Xファンクションを使ったバッチ処理は、外部コンソールからOriginを呼び出すことで実行できます。詳細は、コンソールからスクリプトを実行するをご覧ください。