以下は Python プログラム pg_generators.py の機能や実行方法をまとめたドキュメントです。

1) プログラムの動作
- 概要
  - 点群論に基づく「HW（H–M）32 種の PMI-like 点群」から、与えられた点群記号に対して対称操作群を構成し、生成元（ generators ）と、それらの生成で作られる群の元（群要素）を「語（word）」付きで出力します。
  - 生成元には初期推定（自動推定）と、必要に応じてユーザが指定したラベルを適用します。語は各要素を生成元の積として表現し、指数表記・正の指数の正規化を行います。
  - 群の検算として、生成元の閉包が対象の全ての対称操作と一致するかを検証します。
- 主な処理の流れ
  - 指定された点群符号（例：6, 4mm, 6mm, -3m など）を受け取り、対応する PointGroup を取得。
  - 対象群のすべての対称操作の 3x3 行列を取得・重複除去。
  - 語付き閉包を用いた生成元探索（find_generators、closure_with_words など）を通じて、最小限の生成元集合を見つける。
  - 自動ラベルの推定（default_label_of）を実行。必要があれば user_gen_labels に従って上書き。
  - 各生成元の位数を推定（estimate_orders）。
  - 生成元と全群の対応、各非恒等元の「語付き表現」を作成（format_word）。
  - 出力形式は標準出力にテキストとして表示。--json 指定時には JSON 形式でも出力。
- 出力の要点
  - 総操作数（全体の群要素数）
  - 生成元（gens）とそのラベル・位数
  - 非恒等元の要素の語付き表現とクラスラベル
  - --json 指定時には、gens, elements などを含む JSON を標準出力へ出力

2) 必要な非標準ライブラリとインストールコマンドとインストール方法
- 必要な非標準ライブラリ
  - numpy
  - pymatgen
- インストール方法
  - Python 環境が整っている前提で、以下のコマンドを実行してください。
    - pip を利用する場合:
      - pip install numpy
      - pip install pymatgen
  - あるいは Anaconda / mamba を使用している場合は:
      - conda install numpy
      - conda install -c conda-forge pymatgen
- 注意点
  - pymatgen は結晶・対称性の計算に依存する複雑なライブラリです。適切なバージョンの Python（一般には Python 3.7+ 以降）と依存関係を満たす環境を用意してください。
  - pg_generators.py 自体は numpy と pymatgen が利用可能であれば動作します。

3) 必要な入力ファイル
- 本プログラムは外部のファイルを読み込む必要はなく、コマンドライン引数によって点群符号を受け取り、内部で pymatgen の PointGroup から対称操作を取得します。
- 入力形式の要点
  - コマンドライン引数 --pg または -p で点群記号を指定します（例: 6, 4mm, 6mm, -3m など）。
  - オプション --gen-labels で生成元のラベルをカスタマイズ可能。例: g1=C6(z),g2=m(⊥z)
  - その他オプションとして --json（JSON 出力）など。

4) 実行後に生成される出力ファイル
- 標準出力
  - テキスト形式での情報表示（以下の項目が含まれます）。
    - Point Group と総操作数
    - 生成元（gens）とそのラベル・位数
    - 恒等元を除く生成によって得られる要素（語付き表現とクラスラベル）
  - 形式例（詳細はコードの実行結果に準じます）:
    - "--- Point Group {symbol} ---"
    - "Total operations: N"
    - "Verification (⟨gens⟩ == group): OK/NG"
    - "Generators (preferred order):" 各生成元 g1, g2, ... とその行列
    - "Generated elements (excluding identity):" O01, O02, ... と対応する語とラベル
- JSON 出力
  - --json を指定した場合、以下の情報を JSON 形式で出力（標準出力に表示）。
    - point_group: 点群符号
    - total_ops: 総操作数
    - verified: 群が生成元で生成可能かの真偽
    - generators: 各生成元の name, label, order, matrix
    - elements: 各非恒等元の name, word, class, matrix

5) コマンドラインでの使用例 (Usage)
- 基本的な使い方
  - 点群の識別子を指定して実行（標準出力へテキスト表示）
    - python pg_generators.py -p 6
    - python pg_generators.py --pg 4mm
  - 指定する例として、6mm の点群を想定
    - python pg_generators.py -p "6mm"
- 生成元ラベルをカスタマイズする例
  - g1=C6(z) などのラベルを事前に指定
    - python pg_generators.py -p 6mm --gen-labels "g1=C6(z),g2=m(⊥z)"
  - 生成元ごとのラベルを自由に設定して出力を整える
- JSON 出力を有効にする例
  - --json オプションをつけると、JSON 形式のデータを標準出力にも出力
    - python pg_generators.py -p 6mm --json
- 実行時の出力例の要点
  - 点群 symbol、総操作数、生成元一覧、生成元ごとの行列、各非恒等元の語付き表現（word）
  - 必要に応じて、生成元の語付き表現を json に含める

補足メモ
- 入力の点群記号はコード内の PG_HM 配列と pymatgen の PointGroup によって取り扱われます。既知の 32 種（H–M）に対応します。
- 出力は主にコンソール表示で、ファイル出力はされません。JSON 出力を使えば後続処理用のデータとして利用可能です。
- 非標準ライブラリのバージョン差や互換性に注意してください。特に pymatgen は多くの依存関係を抱えるため、公式推奨環境に合わせて導入してください。

このドキュメントを参考に pg_generators.py を実行してください。必要に応じて追加の具体例（特定の点群符号とラベルの組み合わせ）もご案内します。