qcinput
qcinput reads an xyz or gjf geometry, applies task-specific keywords from a TOML config,
It reads an xyz or gjf geometry, applies task-specific keywords from a TOML config,
and emits ORCA or Gaussian input files for int, ts, or sp jobs.
Install With pip
pip install qcinput
For development (from source):
pip install -e .
Usage
qcinput generate [<path/to/structure.xyz|.gjf> ...] [--input-dir structures/] [-c|--config <path/to/qcinput.toml>] [-o output.inp | --output-dir outputs/]
Compatibility shorthand (same behavior):
qcinput [<path/to/structure.xyz|.gjf> ...] [--input-dir structures/] [-c|--config <path/to/qcinput.toml>] [-o output.inp | --output-dir outputs/]
Show version:
qcinput --version
qcinput -V
First-time setup:
qcinput init-config
qcinput init-config --kind int
qcinput init-config --kind ts
qcinput init-config --kind sp
init-config always writes int/ts/sp task sections in one TOML file; --kind
only sets the initial active value of [qcinput].kind.
Default config path:
./qcinput.toml
You can override this with:
QCINPUT_CONFIG=/path/to/config.toml qcinput water.xyz
Example:
qcinput water.xyz -c qcinput.toml -o water_opt.inp
Batch examples:
qcinput *.xyz *.gjf -c qcinput.toml
qcinput --input-dir structures/ -c qcinput.toml
qcinput *.xyz --input-dir structures/ -c qcinput.toml --output-dir generated/
*.xyz / *.gjf are expanded by your shell before qcinput runs.
--input-dir scans the given directory for .xyz and .gjf files.
--output-dir writes all generated files into one directory and creates it automatically.
-o/--output is only valid when converting a single input structure.
For ORCA and Gaussian, kind = "ts" now uses a two-step TS template.
Use:
qcinput water.xyz -c qcinput.toml -o water_ts.inp
ORCA TS settings:
[orca.task.ts]
step1_keywords = ["Opt"]
step2_keywords = ["OptTS", "Freq"]
constraint_atoms = [[0, 1], [2, 3]]
calc_hess = true
constraint_atoms accepts either one pair ([0, 1]) or multiple pairs
([[0, 1], [2, 3], ...]).
ORCA TS uses global [orca].nprocs and [orca].maxcore for the compound workflow.
Step-2 reads <output_stem>_Compound_1.xyz.
Gaussian TS settings (Link1):
[gaussian.task.ts]
step1_keywords = ["Opt=ModRedundant"]
constraint_atoms = [[0, 1], [2, 3]]
step2_keywords = ["Opt=(TS,CalcFC,NoEigenTest,NoFreeze)", "Freq", "Geom=AllCheck", "Guess=Read"]
constraint_atoms accepts one pair ([0, 1]) or multiple pairs
([[0, 1], [2, 3], ...]) and will be converted to B i j F lines.
Note: TOML uses 0-indexed atoms, but Gaussian ModRedundant is 1-indexed; conversion is automatic.
Legacy modredundant is still supported for compatibility.
%chk is auto-generated as <structure_stem>.chk (e.g. water.xyz -> water.chk).
This applies to Gaussian int, sp, and ts.
When qcinput.engine = "gaussian", default output suffix is .gjf.
Config Format (TOML)
We use TOML because it is readable for humans, easy to version control, and strongly structured.
[qcinput]
engine = "orca" # or "gaussian"
kind = "int" # int | ts | sp
[molecule]
charge = 0
multiplicity = 1
[orca]
nprocs = 8
maxcore = 4000
extra_keywords = ["TightSCF", "NormalSCF"] # optional, appended at end
smd = false # optional
smd_solvent = "toluene"
[orca.task.int]
base_keywords = ["B3LYP", "def2-TZVP"]
keywords = ["Opt", "Freq"]
[gaussian]
nprocshared = 8
mem = "8GB"
extra_keywords = ["SCF=Tight"] # optional, appended at end of keywords
[gaussian.task.int]
base_keywords = ["B3LYP/def2TZVP"]
keywords = ["Opt", "Freq"]
Output Snippet
# Generated by qcinput v<version> (https://github.com/yushengyangchem/qcinput)
! Opt Freq B3LYP def2-TZVP
%pal
nprocs 8
end
%maxcore 4000
* xyz 0 1
O 0.000000 0.000000 0.000000
H 0.757000 0.586000 0.000000
H -0.757000 0.586000 0.000000
*
Metadata
Release files for qcinput 0.8.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| qcinput-0.8.0.tar.gz | 17.2 kB | Without provenance | Details for qcinput-0.8.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| qcinput-0.8.0-py3-none-any.whl | Python 3 | none | any | Details for qcinput-0.8.0-py3-none-any.whl |
Total release size: 30.9 kB
Release files / qcinput-0.8.0.tar.gz
| Download URL | qcinput-0.8.0.tar.gz |
|---|---|
| Size | 17.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
041b2f4c1d38e5791e982c77ad83b5abf123c22d0d18b0fb3c24e6f6bdeaf604
|
|
BLAKE2b-256 checksum How to use checksums |
6296707cb1565f9f58e0d8b55792e2965f65e772dd9789a6aba7b6b59cf1ac86
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Release files / qcinput-0.8.0-py3-none-any.whl
| Download URL | qcinput-0.8.0-py3-none-any.whl |
|---|---|
| Size | 13.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
13a32a7b2d649acd50d1613c6d7b2c08ceae7cd3ced88be47dd7a8d23af4b453
|
|
BLAKE2b-256 checksum How to use checksums |
b8f09a525d5caec2b1711329dc47076541c564206f4afda5cd5ea9f54af73a3a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.12
|
Security for qcinput 0.8.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.