Usage

Command Line Usage

Generates an input for a computational chemistry package

usage: ccinput [-h] [--basis_set BASIS_SET] [--solvent SOLVENT]
               [--solvation_model SOLVATION_MODEL]
               [--solvation_radii SOLVATION_RADII]
               [--custom_solvation_radii CUSTOM_SOLVATION_RADII]
               [--specifications SPECIFICATIONS]
               [--density_fitting DENSITY_FITTING]
               [--custom_basis_sets CUSTOM_BASIS_SETS] [--xyz XYZ]
               [--file FILE [FILE ...]] [--output OUTPUT]
               [--constraints CONSTRAINTS] [--freeze ATOM [ATOM ...]]
               [--scan ATOM [ATOM ...]] [--from FROM] [--to TO]
               [--nsteps NSTEPS] [--step STEP] [--nproc NPROC] [--mem MEM]
               [--charge CHARGE] [--mult MULT] [--parse_name] [--trust_me]
               [--d3 | --d3bj] [--name NAME] [--aux_name AUX_NAME]
               [--header HEADER] [--save SAVE] [--preset [PRESET]]
               [--driver {none,ORCA,pysis}] [--version]
               [--fragments FRAGMENTS]
               [software] [type] [method]

Positional Arguments

software

Desired software package (Gaussian, ORCA, Q-Chem, …)

type

Calculation type (opt, freq, sp, …)

method

Computational method (HF, AM1, B3LYP, …)

Named Arguments

--basis_set, -bs

Basis set

Default: “”

--solvent, -s

Solvent for implicit solvation

Default: “”

--solvation_model, -sm

Solvation model for implicit solvation

Default: “”

--solvation_radii, -sr

Set of solvation radii for implicit solvation

Default: “”

--custom_solvation_radii, -csr

Specific solvation radii to modify

Default: “”

--specifications, -spec

Additional commands

Default: “”

--density_fitting, -df

Basis set for density fitting (Gaussian only)

Default: “”

--custom_basis_sets, -cbs

String specification of custom basis sets on a per-atom basis

Default: “”

--xyz, -x

XYZ structure as string

Default: “”

--file, -f

XYZ structure(s) as file(s)

--output, -o

Write the result to the specified file (single file) or using the specified pattern (multiple files)

Default: “”

--constraints, -co

String specification of constraints for certain calculations

Default: “”

--freeze

Freeze specified distance/angle/dihedral between the specified atoms

Default: []

--scan

Scan specified distance/angle/dihedral between the specified atoms (additional parameters required)

Default: []

--from

Initial distance (for –scan)

Default: []

--to

Final distance (for –scan)

Default: []

--nsteps

Number of steps (for –scan)

Default: []

--step

Step size in Å (for –scan)

Default: []

--nproc, -n

Number of CPU cores to use

Default: 1

--mem

Amount of memory to use (if no unit is provided, assumed to be in MB)

Default: “1000MB”

--charge, -c

Charge of the system

Default: 0

--mult, -m

Multiplicity of the system

Default: 1

--parse_name

Use filenames to assign the charge and multiplicity

Default: False

--trust_me

Unknown values will be accepted as given

Default: False

--d3

Use the D3(0) dispersion correction

Default: False

--d3bj

Use the D3 dispersion correction with Becke-Johnson damping

Default: False

--name

Name of the produced file (unused by some packages)

--aux_name

Name of the auxiliary file (some calculation types only)

--header

Header in produced file (unused by some packages)

Default: “File created by ccinput”

--save

Save the current parameters as a preset of the given name

--preset

Load parameters from the chosen preset

--driver

Possible choices: none, ORCA, pysis

Specify a computation driver other than the calculation package

Default: none

--version, -v

show program’s version number and exit

--fragments

Assign each atom to a fragment

Python Library Usage

When using ccinput as a Python library, the desired wrapper must be imported as such:

>>> from ccinput.wrapper import gen_input
>>> inp = gen_input(...)

The generated input can be directly written to files:

>>> from ccinput.wrapper import write_input
>>> inp = write_input(filename, ...)

The parameters to these two wrappers will be the same as in the command line usage, using their long name as named parameters. For example:

>>> from ccinput.wrapper import gen_input
>>> inp = gen_input(software="orca", type="ts", method="PBEh-3c", file="ethanol.xyz", nproc=16, solvent="ethanol", solvation_model="SMD")

Parameter Details

The parameters not case sensitive and ccinput recognizes several synonyms for each of them. For example, “Def2-TZVP” can be written in any of these forms:

  • def2-TZVP

  • DEF2TZVP

  • def2tzvp

Spaces and symbols other than + and * will be ignored. The otherwise different synonyms will be listed for each parameter. If you believe that a common or useful synonym is missing, feel free to send a pull request.

Software

Software package for which the input should be generated. This can influence the availability of certain options.

As of version 1.0, the following packages are supported for most features:

Software id

Synonyms

gaussian

g16

gaussian16

nwchem

orca

orca5

psi4

psi4

qchem

xtb

Type

Type of calculation (e.g. single-point energy, geometrical optimization, transition state optimization…)

Calculation type

Code

Conformational Search

CalcType.CONF_SEARCH

Constrained Conformational Search

CalcType.CONSTR_CONF_SEARCH

Constrained Optimisation

CalcType.CONSTR_OPT

Frequency Calculation

CalcType.FREQ

Geometrical Optimisation

CalcType.OPT

MO Calculation

CalcType.MO

Minimum energy path

CalcType.MEP

NMR Calculation

CalcType.NMR

Opt+Freq Calculation

CalcType.OPTFREQ

Single-point Energy

CalcType.SP

TDA UV-Vis Calculation

CalcType.UVVIS_TDA

TS Optimisation

CalcType.TS

UV-Vis Calculation

CalcType.UVVIS


Method

Calculation method to use.

All computational methods

Method

Synonyms

am1

apfd

b1b95

b1lyp

b1p

b2gpplyp

b2kplyp

b2plyp

b2tplyp

b3lyp

b3p

b3p86

b97

b973c

b97d

b97d3

b98

bhandhlyp

blyp

bmk

bnl

bnull

bp

bvwn

camb3lyp

ccsd

ccsdt

dlpnoccsd

dlpnoccsdt

dlpnoqcisd

dlpnoqcisdt

g1lyp

g1p

g3lyp

g3p

gfn0xtb

xtb0

gfn0

gfn1xtb

xtb1

gfn1

gfnxtb

gfn2xtb

xtb2

gfn2

gfn2xtbgfnff

gfn2gfnff

gfnff

glyp

gp

hcth147

hcth407

hcth93

hf

hartreefock

scf

hf3c

hfs

hissbpbe

hse06

hse1pbe

l7pnoqcisdt

lcblyp

lcpbe

lcpbe0

campbe0

lcwhpbe

lrcwpbeh

lcwpbe

lpnoccsd

lpnoccsdt

lpnoqcisd

lsd

m05

m052x

m06

m062x

m06hf

m06l

m08hx

m11

m11l

mcscf

mn12l

mn12sx

mn15

mn15l

mndo

mp2

mpw1lyp

mpw1pbe

mpw1pw

mpw1pw91

mpw2plyp

mpw3pbe

mpwlyp

mpwpw

n12

n12sx

o3lyp

ohse1pbe

ohse2pbe

olyp

opbe

pbe

pbe96

pbe0

pbe1pbe

pbeh1pbe

pbeh3c

pm3

pm6

pm7

pm7r6

pw6b95

pw6b95d3

pw86pbe

pw91

pw910

pwlda

pwp

pwp1

pwpb95

qcisd

qcisdt

qtp00

r2scan3c

revpbe

revtpss

rimp2

rpbe

rpw86pbe

scanfunc

sogga11

sogga11x

thcth

thcthhyb

tpss

tpss0

tpssh

xctpssh

vsxc

vwn3

vwn5

wb2gpplyp

wb2plyp

wb97

wb97x

wb97xd

wb97xd3

wb97xd3bj

wb97xv

x3lyp

xalpha

xlyp


Basis set (--basis_set, -bs)

Basis set used for the calculation. Required for most methods, except “-3c” methods (e.g. HF-3c, PBEh-3c) and semi-empirical methods (e.g. AM1, PM3, …), including tight-binding methods (e.g. GFN2-xTB).

All basis sets

Basis set

Synonyms

321g

321gsp

422gsp

431g

621g

631++g2d2p

631++g2df

631++g2df2p

631++g2df2pd

631++g2dp

631++gdp

631++g**

631+g2d

631+g2d2p

631+g2df

631+g2df2p

631+g2df2pd

631+g2dp

631+gd

631+g*

631+gdp

631+g**

6311++g2d

6311++g2d2p

6311++g2df

6311++g2df2p

6311++g2df2pd

6311++g2dp

6311++g3df

6311++g3df3pd

6311++gdp

6311++g**

6311+g2d

6311+g2d2p

6311+g2df

6311+g2df2p

6311+g2df2pd

6311+g2dp

6311+g3df

6311+g3df2p

6311+g3df3pd

6311+gd

6311+g*

6311+gdp

6311+g**

6311g2d

6311g2d,2p

6311g2df

6311g2df2p

6311g2df2pd

6311g2dp

6311g3df

6311g3df3pd

6311gd

6311g*

6311gdp

6311g**

631g

631g2d

631g2d2p

631g2df

631g2df2p

631g2df2pd

631g2dp

631gd

631g*

631gdp

631g**

anopv5z

anopv6z

anopvdz

anopvqz

anopvtz

anorccdzp

anorccfull

anorccqzp

anorcctzp

anosz

auganopv5z

auganopvdz

auganopvqz

auganopvtz

augccpcv5z

augccpcv5zpp

augccpcv6z

augccpcvdz

augccpcvdzpp

augccpcvqz

augccpcvqzpp

augccpcvtz

augccpcvtzpp

augccpv5+dz

augccpv5z

augccpv5zdk

augccpv5zpp

augccpv6+dz

augccpv6z

augccpvd+dz

augccpvdz

augccpvdzdk

augccpvdzpp

augccpvq+dz

augccpvqz

augccpvqzdk

augccpvqzpp

augccpvt+dz

augccpvtz

augccpvtzdk

augccpvtzj

augccpvtzpp

augccpwcv5z

augccpwcvdz

augccpwcvqz

augccpwcvtz

augccpwv5zdk

augccpwv5zpp

augccpwvdzdk

augccpwvdzpp

augccpwvqzdk

augccpwvqzpp

augccpwvtzdk

augccpwvtzpp

augpc0

augpc1

augpc2

augpc3

augpc4

augpcj0

augpcj1

augpcj2

augpcj3

augpcj4

augpcseg0

augpcseg1

augpcseg2

augpcseg3

augpcseg4

augpcsseg0

augpcsseg1

augpcsseg2

augpcsseg3

augpcsseg4

cbsb7

ccpcv5z

ccpcv5zpp

ccpcv6z

ccpcvdz

ccpcvdzf12

ccpcvdzpp

ccpcvqz

ccpcvqzf12

ccpcvqzpp

ccpcvtz

ccpcvtzf12

ccpcvtzpp

ccpv5+dz

ccpv5z

ccpv5zdk

ccpv5zpp

ccpv6z

ccpvd+dz

ccpvdz

ccpvdzdk

ccpvdzf12

ccpvdzpp

ccpvdzppf12

ccpvq+dz

ccpvqz

ccpvqzdk

ccpvqzf12

ccpvqzpp

ccpvqzppf12

ccpvt+dz

ccpvtz

ccpvtzdk

ccpvtzf12

ccpvtzpp

ccpvtzppf12

ccpwcv5z

ccpwcv5zdk

ccpwcvdz

ccpwcvdzdk

ccpwcvqz

ccpwcvqzdk

ccpwcvtz

ccpwcvtzdk

ccpwv5zpp

ccpwvdzpp

ccpwvqzpp

ccpwvtzpp

cep121g

cep31g

cep4g

cp

cpppp

d95

d95p

d95v

def2

def2msvp

def2mtzvp

def2mtzvpp

def2qzv

def2qzvp

def2qzvpd

def2qzvpp

def2qzvppd

def2sv

def2svp

def2svpd

def2svpp

def2tzv

def2tzvp

def2tzvpd

def2tzvpf

def2tzvpp

def2tzvppd

dgdzvp

dgdzvp2

dkhdef2qzvp

dkhdef2qzvpp

dkhdef2svp

dkhdef2tzvp

dkhdef2tzvpf

dkhdef2tzvpp

dkhqzvp

dkhqzvpp

dkhsvp

dkhtzvp

dkhtzvpp

eprii

epriii

gdtzvp

hav5+dz

havq+dz

havt+dz

igloii

igloiii

lanl08

lanl08f

lanl2dz

lanl2mb

lanl2tz

lanl2tzf

m631g

m631gd

m631g*

madef2msvp

madef2qzvp

madef2qzvpp

madef2svp

madef2tzvp

madef2tzvpf

madef2tzvpp

madkhdef2qzvp

madkhdef2qzvpp

madkhdef2svp

madkhdef2tzvp

madkhdef2tzvpf

madkhdef2tzvpp

mazoradef2qzvpp

mazoradef2svp

mazoradef2tzvp

mazoradef2tzvpf

mazoradef2tzvpp

midi

midix

mini

minis

minix

partridge1

partridge2

partridge3

partridge4

pc0

pc1

pc2

pc3

pc4

pcj0

pcj1

pcj2

pcj3

pcj4

pcseg0

pcseg1

pcseg2

pcseg3

pcseg4

pcsseg0

pcsseg1

pcsseg2

pcsseg3

pcsseg4

qzvp

qzvpp

sapporodkh3dzp2012

sapporodkh3qzp2012

sapporodkh3tzp2012

sapporodzp2012

sapporoqzp2012

sapporotzp2012

sarc

sarc2dkhqzv

sarc2dkhqzvp

sarc2zoraqzv

sarc2zoraqzvp

sarcdkhsvp

sarcdkhtzvp

sarcdkhtzvpp

sauganopv5z

sauganopvdz

sauganopvqz

sauganopvtz

sdd

sddall

shc

sto3g

sv

svp

tzv

tzvp

tzvpp

ugbs

w1dz

w1mtsmall

w1opt

w1qz

w1tz

wachters+f

x2c

zoradef2qzvp

zoradef2qzvpp

zoradef2svp

zoradef2tzvp

zoradef2tzvpf

zoradef2tzvpp

zoraqzvp

zoraqzvpp

zorasvp

zoratzvp

zoratzvpp


Custom basis sets (--custom_basis_sets, -cbs)

Specific basis sets for specific atoms. Uses the format “<Element>=<Basis set label>;…” (e.g. “I=Def2-TZVPD;”). To see all the valid basis set labels per element, visit the Basis Set Exchange. Nonetheless, ccinput will also detect close synonyms of the requested basis set.

If applicable, the effective core potential (ECP) corresponding to the requested basis set will also be added to the input file.

Density fitting (--density_fitting, -df)

Basis set to use for density fitting. For NWChem, specify the name of the basis set you want to use for density fitting.

Gaussian documentation about density fitting

Note

Only available (explicitly) for Gaussian 16 and NWChem for the moment. In NWChem, density fitting for DFT is only available for version 7.2.0.

Structure files (--file, -f)

Structure file(s) to use in the input. Only XYZ files are currently supported.

Multiple files can be specified at once when using from the command line:

$ ccinput [...] -f struct1.xyz struct2.xyz

If no output pattern is specified, each input file will be printed to the console sequentially separated by a header. With an output pattern, the files will be created in the chosen directory with the given prefix and extension. When specifying only one file, the exact output path will be used.

$ ccinput [...] -f struct1.xyz struct2.xyz -o calc_dir/sp.inp
Input file written to calc_dir/sp_struct1.inp
Input file written to calc_dir/sp_struct2.inp

$ ccinput [...] -f struct1.xyz struct2.xyz -o .com
Input file written to struct1.com
Input file written to struct2.com

$ ccinput [...] -f struct1.xyz -o my_struct.com
Input file written to my_struct.com

Solvent (--solvent, -s)

Solvent to model using implicit solvation.

All solvents

Solvent

Synonyms

111trichloroethane

112trichloroethane

124trimethylbenzene

12dibromoethane

12ethanediol

14dioxane

1bromo2methylpropane

1bromooctane

1bromopentane

1bromopropane

1butanol

1chlorohexane

1chloropentane

1chloropropane

1decanol

1fluorooctane

1heptanol

1hexanol

1hexene

1hexyne

1iodobutane

1iodohexadecane

1iodopentane

1iodopropane

1nitropropane

1nonanol

1pentanol

1pentene

1propanol

222trifluoroethanol

224trimethylpentane

24dimethylpentane

24dimethylpyridine

26dimethylpyridine

2bromopropane

2butanol

2chlorobutane

2heptanone

2hexanone

2methoxyethanol

2methyl1propanol

2methyl2propanol

2methylpentane

2methylpyridine

2nitropropane

2octanone

2pentanone

2propanol

2propen1ol

3methylpyridine

3pentanone

4heptanone

4methyl2pentanone

4methylpyridine

5nonanone

aceticacid

acetone

acetone

acetonitrile

acetonitrile

acn

ch3cn

mecn

acetophenone

achlorotoluene

aniline

anisole

argon

benzaldehyde

benzene

benzene

c6h6

benzonitrile

benzylalcohol

bromobenzene

bromoethane

bromoform

butanal

butanoicacid

butanone

butanonitrile

butylamine

butylethanoate

carbondisulfide

carbontetrachloride

ccl4

carbontetrachloride

chlorobenzene

phcl

chloroform

chcl3

trichloromethane

cis1,2dimethylcyclohexane

cisdecalin

cyclohexane

cyclohexanone

cyclopentane

cyclopentanol

cyclopentanone

decalinmixture

dibromomethane

dibutylether

dichloroethane

12dichloroethane

dichloromethane

ch2cl2

dcm

diethylamine

diethylether

ether

et2o

diethylsulfide

diiodomethane

diisopropylether

dimethyldisulfide

dimethylformamide

dmf

dimethylsulfoxide

dmso

diphenylether

dipropylamine

e1,2dichloroethene

e2pentene

ethanethiol

ethanol

ethylbenzene

ethylethanoate

ethylmethanoate

ethylphenylether

fluorobenzene

formamide

formicacid

heptane

hexanoicacid

iodobenzene

iodoethane

iodomethane

isopropylbenzene

isoquinoline

krypton

mcresol

mesitylene

methanol

meoh

methylbenzoate

methylbutanoate

methylcyclohexane

methylethanoate

methylmethanoate

methylpropanoate

mxylene

nbutylbenzene

ndecane

ndodecane

nhexadecane

nhexane

hexane

hex

nitrobenzene

phno2

nitroethane

nitromethane

meno2

nmethylaniline

nmethylformamidemixture

nndimethylacetamide

nndimethylformamide

dmf

nnonane

noctane

noctanol

1octanol

octanol

npentadecane

npentane

nundecane

ochlorotoluene

ocresol

odichlorobenzene

onitrotoluene

oxylene

pentanal

pentanoicacid

pentylamine

pentylethanoate

perfluorobenzene

pisopropyltoluene

propanal

propanoicacid

propanonitrile

propylamine

propylethanoate

pxylene

pyridine

quinoline

secbutylbenzene

tertbutylbenzene

tetrachloroethene

tetrahydrofuran

thf

tetrahydrothiophenessdioxide

tetralin

thiophene

thiophenol

toluene

phme

phch3

transdecalin

tributylphosphate

trichloroethene

triethylamine

water

h2o

xenon

xylenemixture

z12dichloroethene


Solvation model (--solvation_model, -sm)

Model used for implicit solvation.

Software

Models

Gaussian

SMD

PCM

CPCM

ORCA

SMD

CPCM

xtb

GBSA

ALPB

NWChem

SMD

COSMO

Solvation radii (--solvation_radii, -sr)

Set of element radii to use in the solvation model.

Model

Sets of radii

SMD

Default

SMD18 [SMD18]

All

UFF (g16 default)

UA0

UAHF

UAKS

Pauling

Bondi

[SMD18]
  1. Engelage, N. Schulz, F. Heinen, S. M. Huber, D. G. Truhlar, C. J. Cramer, Chem. Eur. J. 2018, 24, 15983-15987.

Custom solvation radii (-custom_solvation_radii, -csr)

Specific solvation radii to use for some elements.

The format to use is “<ELEMENT>=<RADIUS>;…”, for example: “H=1.00;Li=1.70;”.

Parse Name (--parse_name)

Input files can have different charges or multiplicities, as long as the file name reflects this and the --parse_name option is used.

By default, inputs are assumed to be neutral and in the singlet state. Charges are indicated by having (tri/di)cation or (tri/di)anion in the file name. Doublet states are denoted with radical or doublet, and triplet states with triplet.

If a charge or multiplicity is also provided explicitly, it will be used as default state for all inputs. However, the charge and multiplicity in the file names have priority over the default state. As such, neutral can be added to the file name to ensure that the input will be considered neutral, even if the option --charge 1 is provided, for example.

Specifications (--specifications)

Custom keywords to add to the command of the input.

$ ccinput orca opt HF --xyz "Cl 0 0 0" -c -1 -bs Def2SVP
!OPT HF Def2-SVP
[...]

$ ccinput orca opt HF --xyz "Cl 0 0 0" -c -1 -bs Def2SVP --specifications "TIGHTSCF"
!OPT HF Def2-SVP tightscf
[...]

With Gaussian 16, this can also add parameters to the calculation keyword:

$ ccinput g16 opt HF --xyz "Cl 0 0 0" -c -1 -bs Def2SVP
[...]
#p opt HF/Def2SVP
[...]

$ ccinput g16 opt HF --xyz "Cl 0 0 0" -c -1 -bs Def2SVP --specifications "opt(maxstep=5)"
[...]
#p opt(maxstep=5) HF/Def2SVP
[...]

$ ccinput g16 opt HF --xyz "Cl 0 0 0" -c -1 -bs Def2SVP --specifications "opt(maxstep=5) SCF(restart)"
[...]
#p opt(maxstep=5) HF/Def2SVP scf(restart)
[...]

Note that the specifications are not checked for validity beyond simple syntax checks. This allows you to use all valid keywords of the software, but can also lead to invalid inputs.

In nwchem, the syntax for specifcations in the following:

$ ccinput g16 opt HF --xyz "Cl 0 0 0" -c -1 -bs Def2SVP --specifications "scf(maxiter 20);opt(tight)"

Constraints (--constraints, -co, --freeze, --scan, --from, --to, --nsteps, --step)

Constraints (freeze or scan) can be specified either as a string or as separate parameters.

The string representation allows to specified all the constraints at once in a relatively readable fashion:

# Freeze the bond between atoms 1 and 2 (starting at 1)
$ ccinput [...] --constraints "freeze/1_2;"

# Freeze the angle between atoms 1, 2 and 3
$ ccinput [...] --constraints "freeze/1_2_3;"

# Freeze the dihedral angle between atoms 1, 2, 3 and 4
$ ccinput [...] --constraints "freeze/1_2_3_4;"

# Different constraints are delimited by semi-colons
$ ccinput [...] --constraints "freeze/1_2;freeze/3_4_5;"

# Scans the bond 1-2 from 2 A to 1 A in 10 steps
# Note that Gaussian does not allow starting values other than those of the current structure.
# As such, the starting value is ignored with Gaussian.
$ ccinput [...] --constraints "scan_2_1_10/1_2;"

# Scans the angle 1-2-3 from 90 degrees to 0 degrees in 10 steps
$ ccinput [...] --constraints "scan_90_0_10/1_2_3;"

# Scans the angle 1-2-3 from its current value to 0 degrees in 10 steps
$ ccinput [...] --constraints "scan_auto_0_10/1_2_3;"

# Scans the dihedral angle 1-2-3-4 from 90 degrees to 0 degrees in 10 steps
$ ccinput [...] --constraints "scan_90_0_10/1_2_3_4;"

# Different types of constraint can be combined
$ ccinput [...] --constraints "scan_90_0_10/1_2_3;freeze/4_5;"

The library usage uses an identical syntax:

>>> from ccinput.wrapper import gen_input
>>> inp = gen_input([...], constraints="scan_90_0_10/1_2_3;freeze/4_5;")

With the string, scans always require the starting value, the final value as well as the number of steps. However, more convenient options are available using --scan, --from, --to, --nsteps and --step:

Note

Scans are not implemented in nwchem for the moment

# Also scans the bond 1-2 from 2 A to 1 A in 10 steps
$ ccinput [...] --scan 1 2 --from 2 --to 1 --nsteps 10

# Scans the bond 1-2 from its current value to 1 A in 10 steps
$ ccinput [...] --scan 1 2 --to 1 --nsteps 10

# Scans the bond 1-2 from its current value to 1 A in steps of 0.1 A
$ ccinput [...] --scan 1 2 --to 1 --step 0.1

# Equivalent to the above
$ ccinput [...] --scan 1 2 --to 1 --step -0.1

# Scans the bonds 1-2 and 3-4 from their current values to 1 A in steps of 0.1 A
$ ccinput [...] --scan 1 2 --to 1 --step 0.1 --scan 3 4 --to 1 --step 0.1

# The order of the sets of parameters matters:
# Scans the bond 1-2 from 1.9 A to 0.5 A by step of 0.15 and
# the bond 3-4 from 1.5 A to 1.0 A in step of 0.1 A
$ ccinput [...] --scan 1 2 --from 1.9 --to 0.5 --step 0.15 --scan 3 4 --from 1.5 --to 1 --step 0.1

# Scans the bond 1-2 from 1.5 A to 1.0 A in step of 0.1 A and
# the bond 3-4 from 1.9 A to 0.5 A by step of 0.15
$ ccinput [...] --scan 1 2 --from 1.5 --to 1 --step 0.1 --scan 3 4 --from 1.9 --to 0.5 --step 0.15

# However, the exact ordering of each different parameter does not matter
# Equivalent to the above
$ ccinput [...] --scan 1 2 --to 1 --from 1.5 --step 0.1 --scan 3 4 --step 0.15 --to 0.5 --from 1.9

# Moreover, coordinates can be frozen in a similar fashion
# Freezes the angle between atoms 1, 2 and 3
$ ccinput [...] --freeze 1 2 3

# Freezes the angle between atoms 1, 2 and 3 and
# scans the bond 1-2 from its current value to 1 A in steps of 0.1 A
$ ccinput [...] --freeze 1 2 3 --scan 1 2 --to 1 --step 0.1

# Equivalent to the above
$ ccinput [...] --scan 1 2 --to 1 --step 0.1 --freeze 1 2 3

# Also equivalent to the above (although confusing)
$ ccinput [...] --scan 1 2 --to 1 --freeze 1 2 3 --step 0.1

The library usage employs arrays for each parameter, with freeze and scan being arrays of arrays (for multiple constraints of multiple atoms each). The scanning parameters are prefixed by the letter “s” (for “scan”) due to the name clash with the Python keyword from.

>>> from ccinput.wrapper import gen_input
>>> inp = gen_input([...], freeze=[[1, 2]])

>>> inp = gen_input([...], scan=[[2, 3]], sfrom=[1.0], sto=[1.5], snsteps=[5])

>>> inp = gen_input([...], scan=[[2, 3]], sfrom=[1.0], sto=[1.5], sstep=[0.1])

>>> inp = gen_input([...], scan=[[2, 3], [1, 2, 3, 4]], sfrom=[1.0, 120], sto=[1.5, 160], sstep=[0.1, 5])

Presets

Presets offer a convenient way to save sets of parameters and reuse them easily in the command line:

$ ccinput gaussian opt m062x -bs def2tzvp --specifications "opt(maxstep=5) 5d nosymm" -sm smd -sr smd18 -s methanol --save my_preset
--- Saved preset 'my_preset'
software                      gaussian
type                          opt
method                        m062x
basis_set                     def2tzvp
version                       <Y.X.Z>
solvent                       methanol
solvation_model               smd
solvation_radii               smd18
specifications                opt(maxstep=5) 5d nosymm

$ ccinput --preset my_preset --xyz "Cl 0 0 0" -c -1
%chk=calc.chk
%nproc=1
%mem=1000MB
#p opt(maxstep=5) M062X/Def2TZVP 5d nosymm SCRF(SMD, Solvent=methanol, Read)

File created by ccinput

-1 1
Cl   0.00000000   0.00000000   0.00000000

modifysph

Br 2.60
I 2.74

All parameters can be saved in the preset, except the calculation name and the XYZ structure. To create a preset, simply enter all the desired parameters exactly like when creating an input file and append --preset <preset_name> to the command. This will not generate any input file and will instead same the parameters as JSON in an accessible user directory (generally ~/.local/share/ccinput or C:\\Users\\<username>\\AppData\\Local\\CYLlab\\ccinput).

Parameters in the preset file can be overwritten when creating the input file:

$ ccinput --preset my_preset --xyz "Cl 0 0 0" -c -1
%chk=calc.chk
%nproc=1
%mem=1000MB
#p opt(maxstep=5) M062X/Def2TZVP 5d nosymm SCRF(SMD, Solvent=methanol, Read)

File created by ccinput

-1 1
Cl   0.00000000   0.00000000   0.00000000

modifysph

Br 2.60
I 2.74


$ ccinput --preset my_preset --xyz "Cl 0 0 0" -c -1 -s vacuum
%chk=calc.chk
%nproc=1
%mem=1000MB
#p opt(maxstep=5) M062X/Def2TZVP 5d nosymm

File created by ccinput

-1 1
Cl   0.00000000   0.00000000   0.00000000

Specifications are the only parameters that are not overwritten, but combined:

$ ccinput --preset my_preset --xyz "Cl 0 0 0" -c -1 -s vacuum --specifications "Int(Ultrafinegrid)"

%chk=calc.chk
%nproc=1
%mem=1000MB
#p opt(maxstep=5) M062X/Def2TZVP 5d nosymm int(ultrafinegrid)

File created by ccinput

-1 1
Cl   0.00000000   0.00000000   0.00000000

Presets can be permanently modified by specifying new parameters and saving them in the same preset. Unspecified options will not be modified:

$ ccinput -s vacuum --save my_preset
--- Saved preset 'my_preset'
software                      gaussian
type                          opt
method                        m062x
basis_set                     def2tzvp
version                       1.2.2+7.g8e241e2.dirty
solvent                       vacuum
solvation_model               smd
solvation_radii               smd18
specifications                opt(maxstep=5) 5d nosymm

$ ccinput --preset my_preset --xyz "Cl 0 0 0" -c -1
%chk=calc.chk
%nproc=1
%mem=1000MB
#p opt(maxstep=5) M062X/Def2TZVP 5d nosymm

File created by ccinput

-1 1
Cl   0.00000000   0.00000000   0.00000000

Note that the parameters are not validated on preset creation.