Metadata-Version: 2.4
Name: qcinput
Version: 0.1.0
Summary: Generate quantum chemistry input files from molecular structures
Project-URL: Homepage, https://github.com/yushengyangchem/qcinput
Project-URL: Issues, https://github.com/yushengyangchem/qcinput/issues
Project-URL: Documentation, https://github.com/yushengyangchem/qcinput#readme
Author-email: Yusheng Yang <yushengyangchem@gmail.com>
Maintainer-email: Yusheng Yang <yushengyangchem@gmail.com>
License-Expression: MIT
License-File: LICENSE
Keywords: cli,gaussian,orca,quantum-chemistry
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Scientific/Engineering :: Chemistry
Requires-Python: >=3.11
Description-Content-Type: text/markdown

# qcinput

`qcinput` is a CLI tool that reads an `xyz` geometry, loads task type and keywords
from TOML, and writes an ORCA or Gaussian input file.

## Install With pip

```bash
python -m pip install .
```

For development:

```bash
python -m pip install -e .
```

## Run With Nix

```bash
nix develop -c qcinput
```

Or run directly from the flake package:

```bash
nix run .
```

## Usage

```bash
qcinput generate <path/to/structure.xyz> [-c|--config <path/to/qcinput.toml>] [-o output.inp]
```

Compatibility shorthand (same behavior):

```bash
qcinput <path/to/structure.xyz> [-c|--config <path/to/qcinput.toml>] [-o output.inp]
```

First-time setup:

```bash
qcinput init-config
```

Default config path:

```text
./qcinput.toml
```

You can override this with:

```bash
QCINPUT_CONFIG=/path/to/config.toml qcinput water.xyz
```

Example:

```bash
qcinput water.xyz -c qcinput.toml -o water_opt.inp
```

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.

```toml
[qcinput]
engine = "orca" # or "gaussian"
kind = "int" # int | ts | sp

[molecule]
charge = 0
multiplicity = 1

[orca]
nprocs = 8
maxcore = 4000
base_keywords = ["r2scan-3c", "D4", "def2-mTZVPP"]

[orca.task.int]
keywords = ["Opt", "Freq"]

[orca.task.ts]
keywords = ["OptTS", "Freq"]

[orca.task.sp]
keywords = ["SP"]

[gaussian]
nprocshared = 8
mem = "8GB"
method_basis = "B3LYP/def2TZVP"

[gaussian.task.int]
route = ["Opt", "Freq"]

[gaussian.task.ts]
route = ["OptTS", "Freq"]

[gaussian.task.sp]
route = ["SP"]
```

## Output Snippet

```text
# Generated by qcinput from water.xyz
! Opt Freq r2scan-3c D4 def2-mTZVPP
%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
*
```
