0
0

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 1 year has passed since last update.

Homcloud自分用メモ1

Posted at

HomCloudチュートリアルの内容の自分用メモです。

pdgmファイルの見方

ファイル読み込み
pdlist = hc.PDList("pointcloud.pdgm")

pdgmファイルは、0次から2次までのすべての次数のパーシステント図を保持している。

1次のパーシステント図だけ書き出す
pd1 = pdlist.dth_diagram(1)

ヒストグラムを構築し、パーシステント図をプロットする。
 histogramメソッド → ヒストグラムの構築
 plot → それをプロット

pd1.histogram().plot()

HomCloudの軸の単位は$Å^2$である。これは、半径の2乗である。

%これをやめたいとき
→PD図を,hc.PDList.from_alpha_filtrationで計算するときに、no_squared=Trueという引数を付けると、半径パラメータそのものがX軸、Y軸に現れる。

ヒストグラムの解像度の変更
histogram メソッドのx_bins引数(第2引数)を指定する。
デフォルトでは128x128
pd1.histogram((0, 0.01), 256).plot(colorbar={"type":"log"})

保存
matplotlib.pyplot.savefigで保存することができる。
pd1.histogram((0, 0.01), 256).plot(colorbar={"type": "log"}) plt.savefig("pointcloud-pd1.png")

数値データの読み出し

pd1.births
pd1.deaths
2つの差を見ることで、lifetimeが計算できる。
pd1.deaths - pd1.births

lifetimeのヒストグラム
plt.hist(pd1.deaths - pd1.births, bins=100);

行末の;は、plt.histの返り値を無視するためのトリック

逆解析

PD図の個々の点を、リング・空隙構造と対応させる

HomCloud逆解析ツール
・Birth/Death simplices
・Optimal Volume
・Stable Volume

ここではstable volumeを使う

例:0.0025,0.008)付近にあるbirth-death pairのstable volumeを調べる
pd.nearest_pair_to で (0.0025, 0.008) に一番近い birth-death pair を検索
pair = pd1.nearest_pair_to(0.0025, 0.008)

Pair クラスのオブジェクトで、birth timeやdeath timeといった情報を保持している。
pair
pair.lifetime()

以下のようにすると stable volume が計算できる
stable_volume = pair.stable_volume(0.00005)

boundary_points メソッドで、対応するリング構造に含まれる点の座標が得られる。
stable_volume.boundary_points()

このstable volumeを3次元可視化する
pl = pv.Plotter() pl.add_mesh(stable_volume.to_pyvista_boundary_mesh()) pl.show()

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?