「PIONEチュートリアル-package」の版間の差分
(→作成例3(ファイルをまとめる)) |
|||
| 行56: | 行56: | ||
=== 作成例3(ファイルをまとめる) === | === 作成例3(ファイルをまとめる) === | ||
| − | パッケージの主な目的は複数の[[pione定義書]]を一つにまとめることなので試してみましょう。今回は[[PIONEチュートリアル#応用1(フローの制御)]] | + | パッケージの主な目的は複数の[[pione定義書]]を一つにまとめることなので試してみましょう。今回は[[PIONEチュートリアル#応用1(フローの制御)]]にてルール毎にファイルを単純に分割してみます。<br> |
<br> | <br> | ||
| 行63: | 行63: | ||
.@ PackageName :: "CenterGet" | .@ PackageName :: "CenterGet" | ||
.@ Editor :: "Kinoshita" | .@ Editor :: "Kinoshita" | ||
| − | .@ Tag :: "v0.0. | + | .@ Tag :: "v0.0.2" |
Rule Main | Rule Main | ||
input '*.mrc'.all | input '*.mrc'.all | ||
| − | |||
output '*.roi' | output '*.roi' | ||
output '*.tiff' | output '*.tiff' | ||
| 行84: | 行83: | ||
.@ PackageName :: "CenterGet" | .@ PackageName :: "CenterGet" | ||
.@ Editor :: "Kinoshita" | .@ Editor :: "Kinoshita" | ||
| − | .@ Tag :: "v0.0. | + | .@ Tag :: "v0.0.2" |
Rule Initial | Rule Initial | ||
| 行100: | 行99: | ||
.@ PackageName :: "CenterGet" | .@ PackageName :: "CenterGet" | ||
.@ Editor :: "Kinoshita" | .@ Editor :: "Kinoshita" | ||
| − | .@ Tag :: "v0.0. | + | .@ Tag :: "v0.0.2" |
Rule First | Rule First | ||
input '*.mrc' | input '*.mrc' | ||
| − | |||
output '{$I[1]}.info' | output '{$I[1]}.info' | ||
Action | Action | ||
| − | |||
mrcImageInfo -I -i {$I[1]} \ | mrcImageInfo -I -i {$I[1]} \ | ||
| head -2 | tail -1 \ | | head -2 | tail -1 \ | ||
| 行122: | 行119: | ||
.@ PackageName :: "CenterGet" | .@ PackageName :: "CenterGet" | ||
.@ Editor :: "Kinoshita" | .@ Editor :: "Kinoshita" | ||
| − | .@ Tag :: "v0.0. | + | .@ Tag :: "v0.0.2" |
Rule Second | Rule Second | ||
| 行128: | 行125: | ||
input '{$I[1]}.info' | input '{$I[1]}.info' | ||
input '{$I[1][1]}.parameters' | input '{$I[1][1]}.parameters' | ||
| − | |||
output '{$I[1][1]}.roi' | output '{$I[1][1]}.roi' | ||
Action | Action | ||
| − | |||
Center_x=$(awk '{printf("%s\n", $1)}' {$I[2]}) | Center_x=$(awk '{printf("%s\n", $1)}' {$I[2]}) | ||
Center_y=$(awk '{printf("%s\n", $2)}' {$I[2]}) | Center_y=$(awk '{printf("%s\n", $2)}' {$I[2]}) | ||
| 行150: | 行145: | ||
.@ PackageName :: "CenterGet" | .@ PackageName :: "CenterGet" | ||
.@ Editor :: "Kinoshita" | .@ Editor :: "Kinoshita" | ||
| − | .@ Tag :: "v0.0. | + | .@ Tag :: "v0.0.2" |
Rule Final | Rule Final | ||
input '*.mrc' | input '*.mrc' | ||
input '{$I[1][1]}.roi' | input '{$I[1][1]}.roi' | ||
| − | |||
output '{$I[1]}-1.tiff' | output '{$I[1]}-1.tiff' | ||
output '{$I[2]}-1.tiff' | output '{$I[2]}-1.tiff' | ||
| 行161: | 行155: | ||
output '{$I[2]}-2.tiff' | output '{$I[2]}-2.tiff' | ||
Action | Action | ||
| − | |||
mrcImageProjection -i {$I[1]} -o {$I[1]}.2d | mrcImageProjection -i {$I[1]} -o {$I[1]}.2d | ||
mrc2tiff -i {$I[1]}.2d -o {$O[1]} | mrc2tiff -i {$I[1]}.2d -o {$O[1]} | ||
| 行178: | 行171: | ||
<pre> | <pre> | ||
/PIONE$ pione package build Package3/ | /PIONE$ pione package build Package3/ | ||
| − | info: update the package info file: local: | + | info: update the package info file: local:/Eos/tutorial/SampleCode/PIONE/Package3/pione-package.json |
| − | info: Package local: | + | info: Package local:/Eos/tutorial/SampleCode/PIONE/CenterGet(Kinoshita)+v0.0.2.ppg has been built successfully. |
</pre> | </pre> | ||
| − | 今回はCenterGet(Kinoshita)+v0.0. | + | 今回はCenterGet(Kinoshita)+v0.0.2.ppgといったファイルができています。<br> |
<br> | <br> | ||
2014年11月20日 (木) 01:03時点における版
ここでは、PIONEのパッケージ作成について示します。これにより複数のpione定義書を1つにまとめることができ、PIONE-WebClientで使用するときに1つのファイルを選ぶだけで済むので、ユーザが内部の処理の組み合わせを考えることなく複雑な処理を行うことができます。
作成例1
まずは最も単純な例でパッケージを作成してみましょう。PIONEチュートリアル#基本1(特定のファイルを出力する)のHelloプログラムをパッケージ化してみます。まずpione定義書にパッケージ化のための情報を書き込みます。
.@ PackageName :: "HelloWorld" Rule Main output 'message.txt' Action echo "Hello PIONE world !" > message.txt End
このファイルはこちらからダウンロードできます。ここでPackageNameはパッケージ化したときの名前を指します。
次に下記のコマンドを入力するとパッケージが作成されます。
$ pione package build Package1 info: update the package info file: local:/Eos/tutorial/SampleCode/PIONE/Package1/pione-package.json info: Package local:/Eos/tutorial/SampleCode/PIONE/HelloWorld.ppg has been built successfully.
これによりHelloWorld.ppgというパッケージファイルができます。なおPackage1はHelloプログラムを格納しているディレクトリ名です。
主にpione定義書へのパッケージ情報(アノテーション)の追記とパッケージ化のコマンドでパッケージが作成される仕組みになっています。
作成例2(アノテーションの追加)
次はアノテーションを追加してパッケージを作成してみましょう。#作成例1に追加してみます。
.@ PackageName :: "HelloWorld" .@ Editor :: "Kinoshita" .@ Tag :: "v0.0.1" Rule Main output 'message.txt' Action echo "Hello PIONE world !" > message.txt End
このファイルはこちらからダウンロードできます。ここでEditorは作者名、タグはバージョンNo. などを付けます。使用する(した)パッケージの区別がつきやすくするために書くようにしましょう。では、同様にパッケージを作成してみます。
/PIONE$ pione package build Package2/ info: update the package info file: local:/Eos/tutorial/SampleCode/PIONE/Package2/pione-package.json info: Package local:/Eos/tutorial/SampleCode/PIONE/HelloWorld(Kinoshita)+v0.0.1.ppg has been built successfully.
今回はHelloWorld(Kinoshita)+v0.0.1.ppgといったファイルができています。
作成例3(ファイルをまとめる)
パッケージの主な目的は複数のpione定義書を一つにまとめることなので試してみましょう。今回はPIONEチュートリアル#応用1(フローの制御)にてルール毎にファイルを単純に分割してみます。
Main.pione
.@ PackageName :: "CenterGet" .@ Editor :: "Kinoshita" .@ Tag :: "v0.0.2" Rule Main input '*.mrc'.all output '*.roi' output '*.tiff' Flow rule Initial rule First rule Second rule Final End
Initial.pione
.@ PackageName :: "CenterGet"
.@ Editor :: "Kinoshita"
.@ Tag :: "v0.0.2"
Rule Initial
input '*.mrc'
output '{$I[1][1]}.parameters'
Action
echo "40 40 50" > {$O[1]}
End
First.pione
.@ PackageName :: "CenterGet"
.@ Editor :: "Kinoshita"
.@ Tag :: "v0.0.2"
Rule First
input '*.mrc'
output '{$I[1]}.info'
Action
mrcImageInfo -I -i {$I[1]} \
| head -2 | tail -1 \
| awk '{printf("%s %s %s", $3, $4, $5)}' \
| tr -c '[0-9]' ' ' \
> {$O[1]}
End
Second.pione
.@ PackageName :: "CenterGet"
.@ Editor :: "Kinoshita"
.@ Tag :: "v0.0.2"
Rule Second
input '*.mrc'
input '{$I[1]}.info'
input '{$I[1][1]}.parameters'
output '{$I[1][1]}.roi'
Action
Center_x=$(awk '{printf("%s\n", $1)}' {$I[2]})
Center_y=$(awk '{printf("%s\n", $2)}' {$I[2]})
Center_z=$(awk '{printf("%s\n", $3)}' {$I[2]})
N_x=$(awk '{printf("%s\n", $1)}' {$I[3]})
N_y=$(awk '{printf("%s\n", $2)}' {$I[3]})
N_z=$(awk '{printf("%s\n", $3)}' {$I[3]})
mrcImageCenterGet -i {$I[1]} -o {$O[1]} \
-Cx $Center_x -Cy $Center_y -Cz $Center_z \
-Nx $N_x -Ny $N_y -Nz $N_z
End
Final.pione
.@ PackageName :: "CenterGet"
.@ Editor :: "Kinoshita"
.@ Tag :: "v0.0.2"
Rule Final
input '*.mrc'
input '{$I[1][1]}.roi'
output '{$I[1]}-1.tiff'
output '{$I[2]}-1.tiff'
output '{$I[1]}-2.tiff'
output '{$I[2]}-2.tiff'
Action
mrcImageProjection -i {$I[1]} -o {$I[1]}.2d
mrc2tiff -i {$I[1]}.2d -o {$O[1]}
mrcImageProjection -i {$I[1]} -o {$I[1]}.2d1 -m 1
mrc2tiff -i {$I[1]}.2d1 -o {$O[3]}
mrcImageProjection -i {$I[2]} -o {$I[2]}.2d
mrc2tiff -i {$I[2]}.2d -o {$O[2]}
mrcImageProjection -i {$I[2]} -o {$I[2]}.2d1 -m 1
mrc2tiff -i {$I[2]}.2d1 -o {$O[4]}
End
これらからパッケージを作成します。
/PIONE$ pione package build Package3/ info: update the package info file: local:/Eos/tutorial/SampleCode/PIONE/Package3/pione-package.json info: Package local:/Eos/tutorial/SampleCode/PIONE/CenterGet(Kinoshita)+v0.0.2.ppg has been built successfully.
今回はCenterGet(Kinoshita)+v0.0.2.ppgといったファイルができています。