{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# `psiclone` 入力データ `Geometry`\n", "\n", "`psiclone`\n", "は様々な形式のデータを扱うことができますが,実際には内部ではどの形式に対しても\n", "`Geometry` オブジェクトに変換してから計算しています.<br>\n", "この過程を理解しておくと,「どのようなデータを扱うことが出来るのか(出来ないのか)」だけではなく,必要であれば独自のデータ形式に対しても\n", "`psiclone` を利用することが出来ます.<br> 以下では,単純な `Geometry`\n", "オブジェクトを直接構成し, `psiclone` の一連の流れを解説していきます.\n", "\n", "例として〼の形の `Geometry` オブジェクト `geom`\n", "を作成してみましょう.<br>\n", "このオブジェクトはノードに情報が付いた(無向)グラフです.<br>\n", "各ノードには以下の変数を与える必要があります:\n", "\n", "- id: ノードID\n", "- x: ノードのx座標\n", "- y: ノードのy座標\n", "- level: ノードの渦度\n", "- geotype:\n", " 他のチュートリアルで解説します.必須引数なので,ここではひとまず\n", " `Geotype.EXTERIOR` を与えることにします.\n", "\n", "エッジを追加するときは端点がどのノードかを指定します.\n", "\n", "最後に `geom` を `draw_geometry` を用いて可視化します.<br>\n", "edge_colorを指定しないと辺が白くなって見えなくなることがあるため注意してください." ], "id": "983fba68-0295-4cbf-b1ed-abfb86ba051f" }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "output_type": "display_data", "metadata": {}, "data": { "image/png": "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\n" } } ], "source": [ "from psiclone.data import Geometry, Geotype\n", "from psiclone.visualization import draw_geometry\n", "\n", "geom = Geometry()\n", "geom.add_node(id=0, x=0, y=0, level=0, geotype=Geotype.EXTERIOR)\n", "geom.add_node(id=1, x=0, y=1, level=1, geotype=Geotype.EXTERIOR)\n", "geom.add_node(id=2, x=1, y=0, level=2, geotype=Geotype.EXTERIOR)\n", "geom.add_node(id=3, x=1, y=1, level=3, geotype=Geotype.EXTERIOR)\n", "geom.add_edge(geom.nodes[0], geom.nodes[1])\n", "geom.add_edge(geom.nodes[0], geom.nodes[2])\n", "geom.add_edge(geom.nodes[1], geom.nodes[3])\n", "geom.add_edge(geom.nodes[2], geom.nodes[3])\n", "geom.add_edge(geom.nodes[0], geom.nodes[3])\n", "draw_geometry(geom, edge_color=\"k\") # edge_colorを指定しないと辺が白くなって見えなくなることがあるため注意" ], "id": "aed1159c" }, { "cell_type": "markdown", "metadata": {}, "source": [ "`Psi2tree` でこの入力データを処理し,COT 表現に変換します.<br>\n", "`Psi2tree(geom, threshold=0.0)` でオブジェクトを作ってから\n", "`psi2tree.compute()` で COT 表現を計算します." ], "id": "bf529d32-2a54-4547-9c1e-08fbb9cf6b07" }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from psiclone.psi2tree import Psi2tree\n", "\n", "psi2tree = Psi2tree(geom, threshold=0.0)\n", "psi2tree.compute()" ], "id": "1d1db499" }, { "cell_type": "markdown", "metadata": {}, "source": [ "計算した COT 表現は次のコードで確認できます." ], "id": "1a08223b-8a6e-4634-9cb9-d6df03095d9c" }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "output_type": "display_data", "metadata": {}, "data": { "text/plain": [ "'a0(L~)'" ] } } ], "source": [ "from psiclone.cot import to_str\n", "\n", "psi2tree.get_tree().convert(to_str)" ], "id": "487337cc" }, { "cell_type": "markdown", "metadata": {}, "source": [ "### まとめ\n", "\n", "`psiclone` はどのようなデータであっても `Geometry`\n", "オブジェクトを通して計算しています.<br>\n", "他のチュートリアルでは画像やメッシュなどを入力データとして扱っていますが,どの入力形式でも共通して\n", "`Geometry`\n", "オブジェクトを生成するステップがあることに注意しましょう.<br>\n", "もしあなたが `psiclone`\n", "でサポートしていないデータを扱いたい場合には,`Geometry`\n", "オブジェクトに変換するコードを書くだけで,同様に COT\n", "表現を計算できます." ], "id": "14e2cf7e-6b54-4474-8de9-0fde1adcf0cc" } ], "nbformat": 4, "nbformat_minor": 5, "metadata": { "kernelspec": { "name": "python3", "display_name": "Python 3 (ipykernel)", "language": "python", "path": "/opt/build/repo/.venv/share/jupyter/kernels/python3" }, "language_info": { "name": "python", "codemirror_mode": { "name": "ipython", "version": "3" }, "file_extension": ".py", "mimetype": "text/x-python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.3" } } }