`kpath_pymatgen.py` プログラムは、結晶構造ファイルからブリルアンゾーンの高対称k点とその経路を計算し、標準出力に表示するスクリプトです。

---

### 1) プログラムの動作

このPythonプログラムは、入力された結晶構造ファイル（CIFなど）を解析し、その結晶のブリルアンゾーンにおける高対称点の座標と、それらの点を結ぶ標準的なk経路を計算して表示します。

具体的な動作は以下の通りです。

1.  **入力ファイルの読み込み**: コマンドライン引数またはデフォルト設定 (`ZnO.cif`) に従って、結晶構造ファイル（CIF形式などが一般的）を読み込みます。
2.  **K経路タイプの指定**: コマンドライン引数またはデフォルト設定 (`hinuma`) に従って、k経路の生成アルゴリズムを選択します。
    *   `hinuma`: Hinuma–Pizzi–Kumagai–Oba–Tanaka (2017) の提案に基づく経路。
    *   `sc`: Setyawan–Curtarolo (2010) の提案に基づく経路。
3.  **原始セルの取得**: 読み込んだ結晶構造から、その原始セル（primitive structure）を抽出します。これは、高対称k経路の計算の基盤となります。
4.  **高対称k経路の計算**: `pymatgen` ライブラリの `HighSymmKpath` クラスを使用して、原始セルと指定された経路タイプに基づいて高対称点とそれらを結ぶ経路を計算します。
5.  **結果の表示**:
    *   計算されたk経路の各セグメント（例: "Γ → X → M"）を整形して標準出力に表示します。
    *   計算された各高対称点の名称と、それに対応する分数座標を整形して標準出力に表示します。
6.  **エラーハンドリング**: k経路の計算に失敗した場合は、エラーメッセージを表示してプログラムを終了します。

---

### 2) 必要な非標準ライブラリとインストールコマンドとインストール方法

**必要なライブラリ**:
*   `pymatgen`

**インストールコマンド**:
```bash
pip install pymatgen
```

**インストール方法**:
1.  Pythonがシステムにインストールされていることを確認してください。
2.  ターミナルまたはコマンドプロンプトを開きます。
3.  以下のコマンドを実行して `pymatgen` ライブラリをインストールします。大規模なプロジェクトでは、[仮想環境](https://docs.python.org/ja/3/library/venv.html) を使用してライブラリをインストールすることが推奨されます。

    ```bash
    pip install pymatgen
    ```

---

### 3) 必要な入力ファイル

*   **ファイル名**: デフォルトでは `ZnO.cif`。
*   **ファイルの種類**: `pymatgen` がサポートする結晶構造ファイル形式。一般的には以下のものが使われます。
    *   CIF (`.cif`)
    *   POSCAR (`POSCAR`) - VASP形式
    *   CONTCAR (`CONTCAR`) - VASP形式
    *   他、`pymatgen.core.Structure.from_file()` が読み込める形式

このプログラムは、入力ファイルとして指定された結晶構造ファイルが存在しない場合、エラーを発生させます。

---

### 4) 実行後に生成される出力ファイル

このプログラムは**いかなるファイルも生成しません**。
すべての計算結果（k経路の定義と高対称点の座標）は標準出力（コンソール）に表示されます。

---

### 5) コマンドラインでの使用例 (Usage)

基本的な使用法は以下の通りです。

```bash
python kpath_pymatgen.py [infile] [path_type]
```

*   `[infile]`: 結晶構造ファイルのパス（例: `structure.cif`, `POSCAR`）。省略した場合、`ZnO.cif` が使用されます。
*   `[path_type]`: k経路のタイプ。`hinuma` または `sc` を指定します。省略した場合、`hinuma` が使用されます。

**使用例**:

1.  **デフォルトの入力ファイル (`ZnO.cif`) とデフォルトの経路タイプ (`hinuma`) を使用する場合:**
    ```bash
    python kpath_pymatgen.py
    ```

2.  **`my_structure.cif` というファイルを使用し、デフォルトの経路タイプ (`hinuma`) を使用する場合:**
    ```bash
    python kpath_pymatgen.py my_structure.cif
    ```

3.  **`my_structure.cif` というファイルを使用し、経路タイプを `sc` に指定する場合:**
    ```bash
    python kpath_pymatgen.py my_structure.cif sc
    ```

4.  **`POSCAR` ファイルを使用し、経路タイプを `sc` に指定する場合:**
    ```bash
    python kpath_pymatgen.py POSCAR sc
    ```