HomCloud 自体は Numpy 2 でビルドできます。おそらくちゃんと動作すると思います。 ただ,幾つかの依存ライブラリ(ripserなど)がNumpy 2に対応していないので,しばらくHomCloud自体も1.xでしか動作しません。
考えられる可能性としては,
の2つがあります.というわけでまずはbirth time,death timeの値を確認してください.2つ目の場合はプロット範囲を調整してください.
データが
場合などには,計算時にエラーが出たり,奇妙な結果(例えば対角線の下にbirth-death pairが現われるなど)になったりします. この場合入力の頂点座標の値に小さな乱数を加えると回避できます.
数学的にこの小さな乱数は結果にほとんど影響を与えないことが保証されている(詳しくはPHの安定性定理を調べてみてくださ)ので,安心して小さな乱数を加えてください.
matplotlibがGUIを使おうとしてエラーが発生しています.回避策として「GUIをオフにする」「X forwardingを設定する」の2つがあります.
matplotlibを使用時に、お使いの環境でGUI表示が使えない状況であるため、このエラーが出ていると考えられます。
matplotrcの環境設定でGUIをオフにすることで回避できます。$HOME/.config/matplotlib/matplotlibrc
に以下の内容を追加します.
backend: agg
もしくはプログラム上で
import matplotlib
matplotlib.rcParams['backend'] = "Agg"
のようにするのも可能です. より詳細な情報はMatplotlibのドキュメントを参考にしてください。
matplotlibによるグラフの表示や、新規にXwindowでグラフを表示する場合など、クライアント側にウィンドウ表示の設定がされていない場合はグラフを表示するプログラムでエラーが出ます。
Windowsの場合、teratermやPuttyなどでログインしている場合は以下にあるXウィンドウ表示ためのプログラムをインストールし、 X11 forwarding の設定を適宜行ってください。
Macの場合は ssh でログインするときに
ssh -X server
ssh -Y server
として -X か -Y のオプションをつけてください。
まず,HomCloud自体の問題があるのでできるだけ新しいバージョンをインストールしてください.
もう一つ,ParaViewのバージョンが新しすぎるとうまく動かない問題も判明しているので古いバージョン(5.6くらい)を使うようにしてください.
最新のHomCloudではPyVistaを使った可視化をもっており,こちらのほうがバージョン問題が生じにくいのでこちらの利用をお勧めします.
チュートリアルからParaViewへの言及がなくなりました. ParaViewインターフェースはどうなったのですか?
ParaViewインターフェースはHomCloud 4.xでも利用可能です. ParaViewによる3次元可視化機能はしばらくこのまま維持する予定です.
しかし,一つ上のQ&AにもあるようにHomCloudはParaViewのバージョンアップについていけていません. HomCloudはParaViewのPython APIを使っていますが,このAPIはあまり安定しておらず,ドキュメントも不足しています. そのためサポートには消極的です. 新しいバージョンへのParaViewへの対応などは優先順位が低いです. HomCloudのParaViewサポートは徐々にフェードアウトさせる予定です.
PyVistaによるインターフェースが代わりに利用可能です. Pythonでコードを書いてParaView的な3次元可視化ができます.
HomCloudは内部的にOpenMPIを使っています.そしてOpenMPIはrootではデフォルトでは 動作拒否をします.一方一般的にDockerでは内部的にrootで動かしていることが多いです. そのためDockerではエラーが発生して止まります.
対応策は以下のいずれかです.
OpenMPIにDockerでの動作を許容させる.OpenMPIのバージョンに依存しますが,以下の2つの環境変数を1
に指定するとROOTでも動作します.
OMPI_ALLOW_RUN_AS_ROOT
OMPI_ALLOW_RUN_AS_ROOT_CONFIRM
CGAL のパッケージがないようなのでインストールが面倒です.どうしてもRHELやRocky Linuxが使いたい場合はcondaを使うほうがいいかもしれません.
pip install pyqt5
とすると次のようなエラーがでる.
Collecting pyqt5
Installing build dependencies ... done
Complete output from command python setup.py egg_info:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/lib/python3.7/tokenize.py", line 447, in open
buffer = _builtin_open(filename, 'rb')
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/pip-install-bvg6_fyh/pyqt5/setup.py'
----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-install-bvg6_fyh/pyqt5/
pip install pyqt5
の代わりにpip3 install pyqt5==5.14
としてください.
もっと高速に動かしたい.特に3次元ボクセルデータの描画がするまでが遅い.
次のように pyvista.Plotter
に notebook=False
を渡すと,Jupyter notebook の inline ではなく別のウィンドウで描画されます.
これが現状では一番高速のようです.
import pyvsta as pv
pl = pv.Plotter(notebook=False)
pl.add_mesh(...)
pl.show()
デフォルトで別ウィンドウで描画したい場合は次のコードをJupyter notebookで実行するとデフォルトの挙動が変化します.
import pyvsta as pv
pv.global_theme.notebook = False
homcloud.interface.PDList.from_alpha_filtration
の weight
パラメータに半径の二乗を渡すhomcloud.interface.PDList.from_alpha_filtration
のweightパラメータを使うと各粒子の初期半径を指定できます.
初期半径の二乗を渡してください.詳しくはリファレンスマニュアルのfrom_alpha_filtration
の項を参考にしてください.
チュートリアルには3次元白黒画像と2次元グレイスケール画像の例しかないのですが,3次元のグレイスケール画像は解析できますか?
チュートリアルは準備されていませんが可能です. 解析法については2次元グレイスケール画像のチュートリアルを,可視化については3次元白黒画像のチュートリアルを,それぞれ参考にしてください.
HomCloud は GPL 3 で配布されており,使用は常に自由です. HomCloudを組み込んだソフトウェアを配布する場合には,GPL3に従わなければなりません. 詳しくはライセンスを読んでください. またあなたの所属する組織の法務部に相談してください.
どれでもそれなりにちゃんと動きますが,開発者がLinuxをメインで使っているのでこれが一番確実に動作します. またエラー報告があったときにLinuxが一番対応が早いです. Linux以外は後回しになります.
WindowsとMacだとWindowsのほうが動作の確実度は高い気がします. MacはIntel Macはフェイドアウト最中なので積極的に対応する予定はありませんのでApple Silicon Macのほうがよいでしょう.