GNU parallelを使って画像変換

下記のEMAN2付属のe2proc2d.pyはシーケンシャルに処理される。
多数のファイルを一度に変換したい場合、GNU parallelと併用して4coreマシンなら4つ同時並行に変換してくれる
方法としては、入力ファイルをlsで表記して、それをパイプ(|)で繋ぎます

(--dry-runで確認)
ls sq03_ps0_10000?.mrc | parallel --dry-run e2proc2d.py {} {.}.jpeg --meanshrink=4  --fixintscaling=sane  --writejunk
 
ls sq03_ps0_10000?.mrc | parallel e2proc2d.py {} {.}.jpeg --meanshrink=4  --fixintscaling=sane  --writejunk
 
* 「{}」はパイプ経由で渡される値。
* 「{.}」はパイプ経由で渡された値で拡張子を除いたもの

な感じで。
もし作った変換ファイルを別のディレクトリに置きたいのなら

ls sq03_ps0_10000?.mrc | parallel e2proc2d.py {} jpeg/{.}.jpeg --meanshrink=4  --fixintscaling=sane  --writejunk

とかとする。
もし対象となるファイルにディレクトリ名を含めて処理したいのなら

ls e2proc2d/sq03_ps0_10000?.mrc | parallel  --dry-run e2proc2d.py {} e2proc2d/jpeg/{/.}.jpeg  --meanshrink=4  --fixintscaling=sane  --writejunk
 
* 「{/.}」はパイプ経由で渡される値で拡張子とディレクトリが除かれる

とかとする。

mrcファイルをpng/jpegに

EMAN2に付属しているe2proc2d.pyにて変換可能っぽい

[foo@c ~]$ time e2proc2d.py Falcon_2016_05_12-20_26_42.mrc Falcon_2016_05_12-20_26_42.tiff
1 images, processing 0-0 stepping by 1
1 images
 
real    0m0.567s
user    0m0.182s
sys     0m0.384s
[foo@c ~]$
[foo@c ~]$ time e2proc2d.py Falcon_2016_05_12-20_26_42.mrc Falcon_2016_05_12-20_26_42.jpeg
1 images, processing 0-0 stepping by 1
 
real    0m0.753s
user    0m0.535s
sys     0m0.217s
[foo@c ~]$
[foo@c ~]$ time e2proc2d.py Falcon_2016_05_12-20_26_42.mrc Falcon_2016_05_12-20_26_42.png
1 images, processing 0-0 stepping by 1
1 images
 
real    0m4.861s
user    0m4.747s
sys     0m0.106s
[foo@c ~]$

TIFF/crop

電顕から得られたTIFFデータに対してサイズ調整が必要になった
画像ファイルの縮小ではなく、切り取り作業である

TIFFファイルのジオメトリは identify コマンドで確認可能で、ここでのTIFFファイルはmulti-pageなTIFFファイルで
それぞれのジオメトリが表示される

[foo@c run]$ identify Jun28_18.26.55.conv1.tif
Jun28_18.26.55.tif[0] TIFF 7424x7680 7424x7680+0+0 8-bit Grayscale DirectClass 550.3MB 0.000u 0:00.000
Jun28_18.26.55.tif[1] TIFF 7424x7680 7424x7680+0+0 8-bit Grayscale DirectClass 550.3MB 0.000u 0:00.000
Jun28_18.26.55.tif[2] TIFF 7424x7680 7424x7680+0+0 8-bit Grayscale DirectClass 550.3MB 0.000u 0:00.000
Jun28_18.26.55.tif[3] TIFF 7424x7680 7424x7680+0+0 8-bit Grayscale DirectClass 550.3MB 0.000u 0:00.000
 (中略)
Jun28_18.26.55.tif[37] TIFF 7424x7680 7424x7680+0+0 8-bit Grayscale DirectClass 550.3MB 0.000u 0:00.000
Jun28_18.26.55.tif[38] TIFF 7424x7680 7424x7680+0+0 8-bit Grayscale DirectClass 550.3MB 0.000u 0:00.000
Jun28_18.26.55.tif[39] TIFF 7424x7680 7424x7680+0+0 8-bit Grayscale DirectClass 550.3MB 0.000u 0:00.000
[foo@c run]$

もっと詳しくは identify -verbose で確認できる。
ここでは 7424x7680 のサイズである。このサイズを(0,0)から7420x7674分切り出すには convert -crop で可能みたい

[foo@c tiff]$ convert -crop 7420x7676+0+0 Jun28_18.26.55.tif Jun28_18.26.55.conv1.tif

っで切りだしたJun28_18.26.55.conv1.tifのサイズを確認すると

[foo@c run]$ identify Jun28_18.26.55.conv1.tif
Jun28_18.26.55.conv1.tif[0] TIFF 7420x7676 7420x7676+0+0 8-bit Grayscale DirectClass 675.6MB 0.000u 0:00.009
Jun28_18.26.55.conv1.tif[1] TIFF 7420x7676 7420x7676+0+0 8-bit Grayscale DirectClass 675.6MB 0.000u 0:00.009
Jun28_18.26.55.conv1.tif[2] TIFF 7420x7676 7420x7676+0+0 8-bit Grayscale DirectClass 675.6MB 0.000u 0:00.009
Jun28_18.26.55.conv1.tif[3] TIFF 7420x7676 7420x7676+0+0 8-bit Grayscale DirectClass 675.6MB 0.000u 0:00.009
 (中略)
Jun28_18.26.55.conv1.tif[36] TIFF 7420x7676 7420x7676+0+0 8-bit Grayscale DirectClass 675.6MB 0.000u 0:00.000
Jun28_18.26.55.conv1.tif[37] TIFF 7420x7676 7420x7676+0+0 8-bit Grayscale DirectClass 675.6MB 0.000u 0:00.000
Jun28_18.26.55.conv1.tif[38] TIFF 7420x7676 7420x7676+0+0 8-bit Grayscale DirectClass 675.6MB 0.000u 0:00.000
Jun28_18.26.55.conv1.tif[39] TIFF 7420x7676 7420x7676+0+0 8-bit Grayscale DirectClass 675.6MB 0.000u 0:00.000
[foo@c run]$

となる。切り出したのにサイズが大きくなるのは?なのだが、とりあえずOK

参照先:https://www.jstage.jst.go.jp/article/itej/61/12/61_12_1725/_pdf


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2020-01-24 (金) 00:25:55 (239d)