tkcif プログラム仕様
CIFファイルを管理するためのパッケージ。
CIF (Crystallographic Information File) 形式のファイルを読み込み、解析し、 結晶構造データとして操作するためのクラスと関数を提供します。 ファイルからのデータの抽出、キーワードと値のペアの解析、ループデータの処理などをサポートします。
- class tklib.tkcrystal.tkcif.tkCIF(path=None, mode='r', **args)[ソース]
ベースクラス:
tkCIFObjectCIFファイルを管理するためのクラス。
CIFファイルの読み込み、解析、およびデータ抽出機能を提供します。 tkCIFObjectを継承し、ファイルI/OおよびCIFデータ構造の処理を拡張します。
- GetNextKey(lines, i)[ソース]
指定された行からCIFキーワードと対応する値を抽出します。
CIFファイルの行を解析し、data_`ヘッダー、コメント、単一キーワード、 または `loop_ ブロックのキーワードと値を識別します。
- パラメータ:
lines -- list[str] 解析対象の行のリスト。
i -- int 解析を開始する行のインデックス。
- 戻り値:
tuple[int, int, list] 現在の行インデックス、ステータス、および抽出されたキーワードと値のリスト。 ステータスは end_of_cifdata、header、comment、singlekey、 multikeys (実際には`loopkeys`が返される)、loopkeys、other のいずれかです。 keyval の形式はステータスに依存します。 - header: ['header', 'data_name'] - comment: ['# comment text', ''] - singlekey: ['keyword', 'value'] - loopkeys: [[['kw1', 'val1a'], ['kw2', 'val2a']], [['kw1', 'val1b'], ['kw2', 'val2b']], ...]
- GetNextValues(lines, nrequired, i)[ソース]
複数行からCIF値を抽出します。
lines[i] から始まる複数行からCIF値を抽出し、指定された数の値が要求されるまで読み込みを続けます。 主に _keyword に続く値や loop_ データブロック内の値を処理するために使用されます。
- パラメータ:
lines -- list[str] 解析対象の行のリスト。
nrequired -- int 必要とされる値の数。
i -- int 解析を開始する行のインデックス。
- 戻り値:
tuple[int, int, str, list[str]] 現在の行インデックス、ステータス、関連する結合行(文字列)、値のリスト。 ステータスは multikeys または end_of_cifdata のいずれかです。
- GetNextValuesOne(lines, nrequired, i)[ソース]
単一の行からCIF値を抽出します。
lines[i] からCIFデータを抽出し、指定された数の値が要求された場合に、 それらをリストとして返します。マルチラインの値(セミコロンで開始・終了)も処理します。
- パラメータ:
lines -- list[str] 解析対象の行のリスト。
nrequired -- int 必要とされる値の数。
i -- int 解析を開始する行のインデックス。
- 戻り値:
tuple[int, int, str, list[str]] 現在の行インデックス、ステータス、関連する行(文字列)、値のリスト。 ステータスは end_of_cifdata、singlekey、multikeys のいずれかです。
- ReadCIF(path=None, find_valid_structure=1, print_level=1)[ソース]
CIFファイルを読み込み、tkCIFData オブジェクトを返します。
read_cif メソッドのエイリアスです。 有効な結晶構造データを持つ最初のデータブロックを返します。
- パラメータ:
path -- str, optional 読み込むCIFファイルのパス。指定しない場合、self.path を使用します。
find_valid_structure -- int, optional 1の場合、有効な構造データが見つかるまでセクションを読み込みます。 0の場合、最初のセクションのみを読み込みます。デフォルトは1。
print_level -- int, optional デバッグ出力レベル。デフォルトは1。
- 戻り値:
tkCIFData 有効な結晶構造データを持つ tkCIFData オブジェクト。 find_valid_structure が有効で適切なデータが見つからない場合はNone。
- ReadCIFs(path=None, print_level=1)[ソース]
CIFファイルを読み込み、その中の全てのデータブロックを tkCIFData オブジェクトのリストとして返します。
data_ で始まる各セクションを個別の tkCIFData オブジェクトとして解析し、リストに格納します。 ファイルポインタが io.StringIO オブジェクトである可能性も考慮します。
- パラメータ:
path -- str or io.StringIO, optional 読み込むCIFファイルのパス、またはStringIOオブジェクト。 指定しない場合、self.path または self.fp を使用します。
print_level -- int, optional デバッグ出力レベル。デフォルトは1。
- 戻り値:
list[tkCIFData] 読み込まれた全てのCIFデータを含む tkCIFData オブジェクトのリスト。
- ReadNextCIF(path=None, print_level=0)[ソース]
CIFファイルの次のデータブロックを読み込み、行のリストとして返します。
data_ で始まる次のCIFデータブロックを見つけ、#End または次の data_ ブロックの手前までを読み込みます。 パスが指定された場合、そのファイルを開いてから読み込みます。 それ以外の場合は、現在のファイルポインタ (self.fp) から読み込みます。
- パラメータ:
path -- str, optional 読み込むCIFファイルのパス。指定しない場合、self.path を使用します。
print_level -- int, optional デバッグ出力レベル。デフォルトは0。
- 戻り値:
list[str] CIFデータの行のリスト。読み込むデータブロックがない場合はNone。
- StringsToCIF(lines)[ソース]
文字列のリストからCIFの内容を抽出して辞書形式に変換します。
GetNextKey メソッドを使用して行のリストを解析し、 キーワードと値のペアを格納する辞書を構築します。 ループデータは keyword[i] の形式でインデックス付きエントリとして格納されます。
- パラメータ:
lines -- list[str] CIFデータの行のリスト。
- 戻り値:
dict CIF情報を含む辞書。 キーはCIFキーワード(ループデータの場合は _keyword[index] 形式)、 値は対応するデータです。
- read_cif(path=None, find_valid_structure=1, print_level=1)[ソース]
CIFファイルを読み込み、tkCIFData オブジェクトのリスト (self.cifdata_list) を更新します。
単一のCIFデータブロック、または複数のブロックを読み込むことができます。 find_valid_structure が真の場合、有効な結晶構造データ(_cell_length_a > 0)を 持つ最初のデータブロックを返します。
- パラメータ:
path -- str, optional 読み込むCIFファイルのパス。指定しない場合、self.path を使用します。
find_valid_structure -- int, optional 1の場合、有効な構造データが見つかるまでセクションを読み込みます。 0の場合、最初のセクションのみを読み込みます。デフォルトは1。
print_level -- int, optional デバッグ出力レベル。デフォルトは1。
- 戻り値:
tkCIFData 有効な結晶構造データを持つ tkCIFData オブジェクト。 find_valid_structure が有効で適切なデータが見つからない場合はNone。