1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Jupyter NotebookでWindowsのコマンドプロンプトの命令を実行する

Last updated at Posted at 2017-03-24

はじめに

最近 Jupyter Notebook にハマっています.
仕事での計算も,しばらく前までは Fortran 90 がメインでしたが,最近は Python3 に一本化しつつあり.Jupyter Notebook で関連プログラム類をまとめて実行・管理しています.
通常,これらの計算は,Macbook Pro 13inch Retina で行っていますが,どうしても会社支給の Windows PC でやらなければならない場合も生じてきており,Windows PC に Anaconda を入れまてみました.Python3 はもちろん,matplotlib, numpy, scipy も入っており,インストールも簡単でした.
ただし,Jupyter Notebook が入っている Anaconda Navigator を立ち上げるのに1分以上かかり,その待ち時間が結構ストレスです.まあ,一分一秒を争うわけではないので,そこは横においてある Mac をいじりながら時間つぶししています.

やりたいこと

雑談はこれくらいにして.....
計算結果を matplotlib で図化し画像出力するまではいいのですが,報告書を MS-Word で作ることが義務付けられており,これにたくさんの画像を一枚一枚貼り付けるのは大変面倒な作業です.そこで,関連する画像を結合して Word に画像を貼り付ける作業を減らすことを考えるわけです.
画像の結合は Python でプログラムを作る手もありますが,私自身画像の取扱は全くの素人でよくわかりません.ここで登場するのが,ImageMagick.
Mac なら,Jypyter Notebook の Code セルに bash のスクリプトを書き,ImageMagick のコマンドを実行できますが,Windows ではどうしたものか?

そこで思いついたのが,一手間かかりますが,Python の subprocess を使ったプログラムを作り実行すること.

以下に具体例を示します.

Jupyter Notebook で実行する Shell スクリプト(Macの場合)

ImageMagick コマンドの意味するところは以下の通り.

  • 画像 fig_chart1.png の余白を調整して画像 _1.png に出力
  • 同様に画像 fig_chart2.png の余白を調整して画像 _2.pngに出力
  • 画像 _1.png と _2.png を横に繋いで fig_flow.png を作成
%%bash
convert -trim fig_chart1.png -bordercolor 'white' -border 50x50 _1.png
convert -trim fig_chart2.png -bordercolor 'white' -border 50x50 _2.png
montage -tile 2x1 -resize 100% -geometry +0+0 _1.png _2.png fig_flow.png

Jupyter Notebook で実行する Python プログラム

Python プログラムでは,ImageMagick コマンドを文字列 cmd1, cmd2, cmd3 に格納して,subprocess.call(cmd,shell=True)で実行します.

import subprocess

cmd1='convert -trim fig_chart1.png -bordercolor "white" -border 50x50 _1.png'
cmd2='convert -trim fig_chart2.png -bordercolor "white" -border 50x50 _2.png'
cmd3='montage -tile 2x1 -resize 100% -geometry +0+0 _1.png _2.png fig_flow.png'
subprocess.call(cmd1,shell=True)
subprocess.call(cmd2,shell=True)
subprocess.call(cmd3,shell=True)
print('end')

上記により,Mac & Windows で ImageMagick を用いた同じ処理が可能となります.
もちろん ImageMagick は各マシンに別途インストールしなければなりません.

以 上

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?