片段相互作用 API¶
片段 API 计算双片段二聚体的 counterpoise 校正相互作用能。run 与 Molecule 也是 q2m3 的顶层导出。mode="classical_only" 只需要核心安装。mode="full" 需要 sqd extra 与 Linux x86_64。完整运行见 片段相互作用能。
工作流¶
- q2m3.fragments.run(molecule, *, avas_labels, avas_threshold, basis='cc-pvdz', mode='full', references=None, seed=0, lucj=None, reference=None, ccsd_t_budget=None)[源代码]¶
计算
molecule的 counterpoise 校正相互作用能。二聚体返回
FragmentInteractionResult。单分子返回子体系"M"的SubsystemResult。两种模式都选择 AVAS 活性空间。对二聚体,两种模式都在任何关联计算之前检查活性空间的对应关系。两种模式都计算 HF 与冻结芯 MP2。mode="classical_only"从不构造 SQD 阶段的 runner。mode="full"还执行下列步骤:预估成本在ccsd_t_budget(默认CCSDTBudget())内时运行冻结芯 CCSD(T) 参考;构造活性空间积分;在一个子解释器中对全部子体系运行 SQD;估计 QPE 与 SQD 资源。CCSD(T) 被拒绝时,e_ccsd_t为空,并写明原因。references含参考文件与ExternalReference记录。参考文件由import_references按本次运行的片段标识与basis读取。它们构成二聚体结果的活性空间误差、基组误差与模型误差。- 抛出:
TypeError --
avas_labels不是字符串序列,avas_threshold不是实数,或references是单个字符串或路径。ValueError --
mode不是"full"或"classical_only",某个 AVAS 标签格式错误或不匹配任何 AO,或对单分子传入了references。ImportError --
mode="full"且缺少可选的sqd后端。ReferenceImportError -- 参考文件不符合导入格式,或两条参考属于同一类别。
FragmentWorkflowError -- 某个子体系的 RHF 或 CCSD 不收敛,或标签解析、鬼原子守卫或预检拒绝了某个活性空间。
ActiveSpaceMismatchError -- 单体活性空间与二聚体活性空间不对应。
- 参数:
molecule (Molecule)
avas_labels (Sequence[str])
avas_threshold (float)
basis (str)
mode (str)
references (Sequence[str | PathLike[str] | ExternalReference] | None)
seed (int)
lucj (Any)
reference (Any)
ccsd_t_budget (Any)
- 返回类型:
- class q2m3.fragments.Molecule(symbols, coordinates_angstrom, fragments, charges, multiplicities, name=None)[源代码]¶
以埃为单位的几何,可选地划分为两个片段。
charges与multiplicities每个片段一项;单分子(fragments is None)时只有一项。- 参数:
symbols (tuple[str, ...])
coordinates_angstrom (tuple[tuple[float, float, float], ...])
fragments (tuple[tuple[int, ...], tuple[int, ...]] | None)
charges (tuple[int, ...])
multiplicities (tuple[int, ...])
name (str | None)
- classmethod from_xyz(source, *, fragments=None, charges=None, multiplicities=None, name=None)[源代码]¶
从 XYZ 文件路径或以埃为单位的 XYZ 文本构造分子。
不含换行符的字符串按文件路径读取。
- 抛出:
ValueError -- XYZ 文本格式错误;元素未知;片段不是恰好两个划分全部原子的非空集合;电荷数或多重度数与片段数不符;或某个多重度不是 1。
- 参数:
source (str | PathLike[str])
fragments (Sequence[Sequence[int]] | None)
charges (Sequence[int] | None)
multiplicities (Sequence[int] | None)
name (str | None)
- 返回类型:
- property charge: int¶
分子的总电荷。
结果契约¶
- class q2m3.fragments.result.FragmentInteractionResult(*, schema_version='fragments.result.v1', fragment_id, mode, basis, subsystems, delta_e, references, errors, correspondence, provenance, null_reasons, warnings=())[源代码]¶
一个片段二聚体的 counterpoise 校正相互作用能,单位为 Ha。
delta_e把ENERGY_LAYERS的每一层映射到 E(AB) - E(A) - E(B),三项都在二聚体基组中计算。delta_e与errors的空值在null_reasons中有条目,键为带点的名字,例如delta_e.casci与errors.model。- 参数:
schema_version (str)
fragment_id (str)
mode (str)
basis (str)
subsystems (Mapping[str, SubsystemResult])
delta_e (Mapping[str, float | None])
references (tuple[ExternalReference, ...])
errors (ErrorDecomposition)
correspondence (CorrespondenceReport | None)
provenance (Mapping[str, Any])
null_reasons (Mapping[str, str])
warnings (tuple[str, ...])
- class q2m3.fragments.result.SubsystemResult(*, name, real_atoms, ghost_atoms, n_ao, e_hf, e_mp2, e_ccsd_t, e_casci, e_sqd, active_space, sqd, resources, null_reasons)[源代码]¶
一个子体系的能量与记录:
AB、A、B或M(单分子)。每个
None字段在null_reasons中以字段名为键有一个条目;缺少的资源估计用resources.<qpe|sqd>为键。每个资源槽位只存放该槽位估计器的估计。e_sqd与e_casci由promote_sqd_energies()从sqd导出。- 参数:
name (Literal['AB', 'A', 'B', 'M'])
real_atoms (tuple[int, ...])
ghost_atoms (tuple[int, ...])
n_ao (int)
e_hf (float | None)
e_mp2 (float | None)
e_ccsd_t (float | None)
e_casci (float | None)
e_sqd (float | None)
active_space (ActiveSpaceRecord | None)
sqd (SQDResult | None)
resources (Mapping[str, ResourceEstimate | None])
null_reasons (Mapping[str, str])
参考与报告¶
- q2m3.fragments.import_references(path, *, fragment_id, basis)[源代码]¶
从 CSV 或 QCSchema JSON 文件读取
fragment_id的参考。基组等于
basis(不区分大小写)的参考是同基组全空间参考,其余为外部参考。返回值的单位为 Ha。- 抛出:
ReferenceImportError -- 文件既不是
.csv也不是.json;缺少某个 CSV 列;单位不是Ha、kcal/mol或kJ/mol;某个值不是数字;没有一行 CSV 的片段为fragment_id;或 QCSchema 记录缺少字段,或指向另一个片段。- 参数:
path (str | PathLike[str])
fragment_id (str)
basis (str)
- 返回类型:
tuple[ExternalReference, ...]
- class q2m3.fragments.result.ExternalReference(fragment_id, method, basis, delta_e, category)[源代码]¶
导入的一个片段二聚体的相互作用能,单位为 Ha。
basis等于工作流基组时,category为"same_basis_full_space",否则为"external"。- 参数:
fragment_id (str)
method (str)
basis (str)
delta_e (float)
category (str)
- q2m3.fragments.render_report(results, *, ks_table=None)[源代码]¶
为一次调用的全部片段结果返回一份 Markdown 报告。
- 参数:
results (Sequence[FragmentInteractionResult]) -- 要报告的片段结果,按报告顺序排列。
ks_table (Mapping[str, float] | None) -- 实验标签到导入 Ks 值的映射。按传入顺序列出。
- 抛出:
ValueError -- 报告含
BANNED_TERMS中的词。- 返回类型:
str
异常¶
片段相互作用能工作流抛出的类型化异常。