Q. Numpy 2 への対応状況はどうでしょうか#
対応は完了しています。
Q. PDをログスケール表示でプロットしようとすると,「ValueError: Data has no positive values, and therefore can not be log-scaled.」というメッセージがでて何も表示されない.#
A. プロット範囲にデータがありません.#
考えられる可能性としては,
- そもそもbirth-death pairが1つもない
- プロット範囲がずれている
の2つがあります.というわけでまずはbirth time,death timeの値を確認してください.2つ目の場合はプロット範囲を調整してください.
Q. 結晶データを解析するとエラーがでます#
A. データに小さな乱数を加えてください.#
データが
- 3点が同一直線上に並んでいる
- 4点が同一平面上に並んでいる
- 5点が同一球面上に並んでいる
場合などには,計算時にエラーが出たり,奇妙な結果(例えば対角線の下にbirth-death pairが現われるなど)になったりします. この場合入力の頂点座標の値に小さな乱数を加えると回避できます.
数学的にこの小さな乱数は結果にほとんど影響を与えないことが保証されている(詳しくはPHの安定性定理を調べてみてくださ)ので,安心して小さな乱数を加えてください.
Q. sshで接続したターミナルにInvalid DISPLAY VARIABLEと表示され実行できない#
matplotlibがGUIを使おうとしてエラーが発生しています.回避策として「GUIをオフにする」「X forwardingを設定する」の2つがあります.
A1. GUI表示をオフにする#
matplotlibを使用時に、お使いの環境でGUI表示が使えない状況であるため、このエラーが出ていると考えられます。
matplotrcの環境設定でGUIをオフにすることで回避できます。$HOME/.config/matplotlib/matplotlibrcに以下の内容を追加します.
backend: agg
もしくはプログラム上で
import matplotlib
matplotlib.rcParams['backend'] = "Agg"
のようにするのも可能です. より詳細な情報はMatplotlibのドキュメントを参考にしてください。
A2. X forwardingの設定を行い,ウィンドウが表示されるようにする#
matplotlibによるグラフの表示や、新規にXwindowでグラフを表示する場合など、クライアント側にウィンドウ表示の設定がされていない場合はグラフを表示するプログラムでエラーが出ます。
Windowsの場合、teratermやPuttyなどでログインしている場合は以下にあるXウィンドウ表示ためのプログラムをインストールし、 X11 forwarding の設定を適宜行ってください。
- Xming: https://ja.osdn.net/projects/sfnet_xming/releases/
- VcXsrv: https://sourceforge.net/projects/vcxsrv/
Macの場合は ssh でログインするときに
ssh -X server
ssh -Y server
として -X か -Y のオプションをつけてください。
Q. ParaView のインターフェースはどうなりましたか?#
チュートリアルからParaViewへの言及がなくなりました. ParaViewインターフェースはどうなったのですか?
A. ParaViewインターフェースは廃止予定です。#
ParaViewインターフェースはHomCloud 4.xでも利用可能です. ParaViewによる3次元可視化機能はしばらくこのまま維持する予定です.
しかし,HomCloudはParaViewのバージョンアップについていけていません. HomCloudはParaViewのPython APIを使っていますが,このAPIはあまり安定しておらず,ドキュメントも不足しています. そのためサポートには消極的です. 新しいバージョンへのParaViewへの対応などは優先順位が低いです. HomCloudのParaViewサポートは徐々にフェードアウトさせる予定です.
PyVistaによるインターフェースが代わりに利用可能です. Pythonでコードを書いてParaView的な3次元可視化ができます.
Q. Dockerで動かない#
A. root以外で動作させる,もしくはOpenMPIの設定を変える#
HomCloudは内部的にOpenMPIを使っています.そしてOpenMPIはrootではデフォルトでは 動作拒否をします.一方一般的にDockerでは内部的にrootで動かしていることが多いです. そのためDockerではエラーが発生して止まります.
対応策は以下のいずれかです.
root以外のユーザを使う.詳しくはDockerのドキュメントなどを見てください.
OpenMPIにDockerでの動作を許容させる.OpenMPIのバージョンに依存しますが,以下の2つの環境変数を
1に指定するとROOTでも動作します.OMPI_ALLOW_RUN_AS_ROOTOMPI_ALLOW_RUN_AS_ROOT_CONFIRM
Q. PyQt のインストールで問題が生じる#
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/
A. PyQtの特定のバージョンの問題なので,問題ないバージョンを指定します#
pip install pyqt5の代わりにpip3 install pyqt5==5.14としてください.
Q. 3次元可視化が遅い#
もっと高速に動かしたい.特に3次元ボクセルデータの描画がするまでが遅い.
A. PyVista インターフェースで別ウィンドウで動かすのが一番高速#
次のように 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
Q. ポイントクラウドデータ解析で,異なる半径を持つ粒子を解析したい.#
A. homcloud.interface.PDList.from_alpha_filtration の weight パラメータに半径の二乗を渡す#
homcloud.interface.PDList.from_alpha_filtrationのweightパラメータを使うと各粒子の初期半径を指定できます.
初期半径の二乗を渡してください.詳しくはリファレンスマニュアルのfrom_alpha_filtrationの項を参考にしてください.
Q. 3次元のグレイスケール画像は解析できる?#
チュートリアルには3次元白黒画像と2次元グレイスケール画像の例しかないのですが,3次元のグレイスケール画像は解析できますか?
A. できます#
チュートリアルは準備されていませんが可能です. 解析法については2次元グレイスケール画像のチュートリアルを,可視化については3次元白黒画像のチュートリアルを,それぞれ参考にしてください.
Q. HomCloud は商用利用可能か?#
A. HomCloudはGPL3ライセンスの下で配布されており,その範囲で利用可能です#
HomCloud は GPL 3 で配布されており,使用は常に自由です. データ分析をするのであれば特に制約はありません。
HomCloudを組み込んだソフトウェアを配布する場合には,GPL3に従わなければなりません. 詳しくはライセンスを読んでください. またあなたの所属する組織の法務部に相談してください.
Q. Linux / Windows / Mac はどれも使えるようですがどれがお勧めですか?#
A. Linux > Windows > Mac の順です.#
どれでもそれなりにちゃんと動きますが,開発者がLinuxをメインで使っているのでこれが一番確実に動作します. またエラー報告があったときにLinuxが一番対応が早いです. Linux以外は後回しになります.
WindowsとMacだとWindowsのほうが動作の確実度は高い気がします. MacはIntel Macはフェイドアウト最中なので積極的に対応する予定はありませんのでApple Silicon Macのほうがよいでしょう.