Julia v1.10.3 has been released

discourse.julialang.org/t/juli

ダウンロードサイト(julialang.org/downloads/)を見て、A Silicon用のJuliaがTier 1になっていることに気付く。
ありがたい。

既にあるPythonの関数(サブルーチン)をJuliaで使いたい、あるいは、JuliaよりもPythonを使った方が書きやすい場合にはPycallが便利と思う。

今、呼びたい関数を含むファイルの名前がhoge.py、呼びたい関数をfoo、その引数がx,、y、戻り値をzとする。
まず
using Pycall
として、次いでpyincludeというマクロを使って
@pyinclude("hoge.py")
として、Pythonのファイルを読み込むと準備完了。

あとは呼びたい位置で
z = py”foo”(x, y)
とすれば呼び出せる。
関数名だけをダブルクオーテーションで括り、戻り値や引数部分は外にするというちょっと不思議な書き方をする。

github.com/JuliaPy/PyCall.jl

のバージョン管理を楽にするツール をインストール。バージョンの使いわけも可能にしてくれる。
本家サイトはgithub.com/JuliaLang/juliaup/

別ファイル仕立てにした の使い方の粗末なメモ

・使いたい関数の名前をfuga
・使いたいモジュール名をHoge
※Juliaではモジュール名の先頭は大文字にする慣習らしい
・モジュールが書かれているファイルの名前をmodule.jlとする。

>モジュールを使うためには
1) まずそのモジュールが書かれているファイル(ココデハmodule.jl)をincludeする必要がある。
include("module.jl")
2) 次いで、usingを使って使いたいモジュールを読み込む。
using .Hoge
使いたいモジュールの名前の前に.(ピリオド)を忘れない。
ピリオドは「このファイル中」を意味する。

>使いたい関数がモジュール内で
export fuga
という具合にexportが宣言されていれば、単にfugaだけでその関数を呼べる。
そうでない場合、モジュール名と繋げて
hoge.fuga
とすれば呼べる。

※モジュール名と関数名がダブっていると、ダブった関数は呼べない。
経験で知った。

★今後の課題★
モジュールを読み込むときの別法であるimportとの違いを理解する。

のお絵描きツールに慣れていないせいか、Julia上でお絵描きがしにくい。
ここで悩むよりは に持ち込んだ方が早いので、やや大きめでのファイルをPythonとやりとりできるフォーマットを探していて、 がよさげに見えたので、書き出す方法を変更した。
HDF5の仕様には深入りせずに、とにかくまずはネットに出ている「呪文」を唱えて、まがりなりにもファイルの読み書きできることを最優先。

qiita.com/cometscome_phys/item
の記事でどうにかなった。

前のTootで触れた記事を執筆された方は、『1週間で学べる! Julia数値計算プログラミング』の著者の方と思われますが、この本は の入門用としては個人的にはオススメです。
この本でとっかかりさえつかめれば、あとはネットの情報でだんだんと使いこなせていけると思います。

最初は、Juliaらしさとか余計なことは考えずに、とにかく動くコードを作ることに集中して慣れていくようにした方がよいと思います。
コーディングの仕方で、Pythonほどは処理速度が変わったりもしないと思いますので。
早いコードを書くのは、まがりなりにもコードが書けるようになった次のステップと思います。
というか、書き方で処理速度が変わるぐらいのレベルに達したときにはかなり上級者の域と思います。

に相当するものとして、 には なるものがある。
JLDとJLD2との間の互換性は考慮されていない。
JLD2の方が読み書きは早いらしい。
ということで、JLD2を使ってみることに。
HDF5の「亜種」らしいが、HDF5をほとんど理解できていないので、「そうなんですか」以上の感想が持てない。

JLDの本家:github.com/JuliaIO/JLD.jl
JLD2の本家:github.com/JuliaIO/JLD2.jl

うむむ、私がやりたいことに使うには厳しい模様。
として出力した100万行のリスト(1行あたりは3つの倍精度の実数からなる1行のリストで、リストが入れ子になっている)を読み込ませたところ、 では2秒足らずで済むところをPickle.jlを使った では50秒超えであった。
のモジュールを使って読み込んだ上で に持ち込むのがよさそう。

スレッドを表示

Juliaで を直接読み込めるパッケージがある。
名前はPickle.jlとまんま。
experimental packageとのことなので、自分のやりたいことができるかはまた別の話かもしれないが。

juliapackages.com/p/pickle

Fedibird

様々な目的に使える、日本の汎用マストドンサーバーです。安定した利用環境と、多数の独自機能を提供しています。