Fortran Kernel
せんべいを齧りながら考えた結果、結局どの道何らかのワーク・ファイルを経由しないと図は出せないので、Fortran の中から図を描くのは諦めて、素直にいったん結果を出力し、それを matplotlib で読み込むことにした。
ただ、いちいちカーネルを切り替えたりするのは面倒なので、オプションでセルの入力を python の eval/exec コマンドで実行することにした。しかし、困ったことに fig = plt.figure() や imgdata = BytesIO() のような、ポインタを取ってくるような命令は eval/exec ではうまく機能しなかったので、これらはカーネルにべた書きすることにした。したがって matplotlib.pyplot と numpy は、それぞれ慣例にのっとって plt, np で import しておくことにし、fig という変数は予約変数として、これで plt.figure のポインタを取っておくことにする。
ポインタを取ってこれない理由はよく分からないが、さもありなんという感じはする。ただ、PIL (pillow) の im = Image.open(fn) は機能するので、区分がよく分からないが、Python 自体が全く分からないので、分からなくてもしょうがないw
ついでなので、コンパイラを選べるようにしてみた。単に、名前を変えるだけだけなので、拡張子とセットで変えれば、一定の規約下のコンパイラなら何でも行ける気もする。
TAB と Space が混在してしまったせいで、蛇にむちゃくちゃ怒られた。インタープリタだから、その行が実行されるまでエラーを黙っているので、ゲス蛇ホントむかつくw
以下の記事は、大変ためになりました。感謝感激雨あられ。
ipython-books.github.io
[追記] gcc 可能
FORTRAN77 形式を可能にするには拡張子を .f / .for にしなければならないので、拡張子も変えられるようにした。結果的に gcc + .c の組み合わせでも実行できることが確認できた。
%fig: オプションの場合、fig 等の内部変数が、eval/exec で書き換え可能になっているので、python の慣例に従ってアンダースコアを手前につけておくことにした。
もう少し debug したら、うpしてみたい。
Ipython Interactive Computing and Visualization Cookbook - Second Edition
- 作者: Cyrille Rossant
- 出版社/メーカー: Packt Publishing
- 発売日: 2018/01/31
- メディア: ペーパーバック
- この商品を含むブログを見る
- 作者: Cyrille Rossant
- 出版社/メーカー: Packt Publishing
- 発売日: 2014/09/25
- メディア: ペーパーバック
- この商品を含むブログを見る