BULMA
BULMA = Batch Utilities for Log parsing, hessian Matrix & Automation
BULMA is a command-line Python utility. It is built around one main script and supports three broad categories of tasks:
Extracting data from calculations
Generating new input files for Gaussian, ORCA, and Q-Chem
Parsing molecular dynamics trajectories
The tool is especially useful when you need to move quickly between quantum chemistry packages, reuse geometries and velocities, or convert outputs into formats compatible with other analysis tools such as Flying Nimbus.
Table of Contents
What BULMA does
BULMA combines several quantum chemistry tasks into a single CLI.
Core capabilities
Extract lower-triangular Hessians from:
Gaussian16 output
ORCA
.hessfilesQ-Chem
HESSfiles
Extract optimized geometries from:
Gaussian output
ORCA output
Q-Chem output
Generate new input files for:
Gaussian optimization and frequency jobs
ORCA optimization and frequency jobs
Q-Chem optimization, frequency, and AIMD jobs
Generate molecular dynamics inputs for:
Gaussian BOMD
ORCA QMD
Q-Chem AIMD
Parse MD output and trajectory into formats that can be reused later
Export trajectories compatible with the flying_nimbus code
In short, BULMA is a workflow glue tool: it helps you move data between electronic structure calculations, geometry files, MD trajectories, and post-processing.
Supported workflows
Workflow |
Gaussian |
ORCA |
Q-Chem |
|---|---|---|---|
Hessian extraction |
Yes |
Yes |
Yes |
Geometry extraction |
Yes |
Yes |
Yes |
Optimization input generation |
Yes |
Yes |
Yes |
Frequency input generation |
Yes |
Yes |
Yes |
BOMD / AIMD / QMD input generation |
Yes |
Yes |
Yes |
MD trajectory parsing |
Yes |
Yes |
Yes |
flying_nimbus trajectory output |
Yes |
Yes |
Yes |
Project structure
The current project is implemented as a single script:
bulma.py
The script handles all supported modes through command-line flags. Different behaviors are selected with mutually exclusive options such as:
--opt--freq--orca-opt--orca-freq--dyn--orca-qmd--qchem-opt--qchem-opt-freq--qchem-qmd--parse-dyn--parse-orca-qmd--parse-qchem-qmd--extract-geo--orca-hess--qchem-hess
Requirements
Minimum
Python 3
Standard Python library modules used by the script:
argparsepathlibresys
Optional but required for some MD parsing paths
numpy
numpy is used in the Gaussian BOMD parsing branch when converting coordinates, weighted velocities, and energies into array form.
Installation
Clone the repository
git clone https://github.com/giacomande95-oss/FLYINGNIMBUS_GUI.git
cd Bulma_terminal_version
Run directly
python bulma.py --help
Optional virtual environment
python -m venv .venv
source .venv/bin/activate
pip install numpy
If you only use Hessian extraction or input generation, you may not need any extra package beyond Python itself. For Gaussian BOMD parsing, install numpy.
Quick start
1. Extract a Gaussian Hessian
python bulma.py job.out
This writes:
Hessian.outHessian_flat.out
2. Generate a Gaussian optimization input from an XYZ file
python bulma.py geo.xyz --opt
This writes:
geom.com
3. Extract the final optimized geometry from an output file
python bulma.py opt.out --extract-geo
This writes:
geo_opt.xyz
4. Generate ORCA optimization input
python bulma.py geo.xyz --orca-opt
This writes:
geom.inp
5. Parse Gaussian BOMD output and write a flying_nimbus trajectory
python bulma.py dyn.out --parse-dyn --inizio 1 --fine 2500 --xyz geo.xyz --nimbus-traj
General command syntax
BULMA takes one positional argument:
python bulma.py <input_file> [options]
The meaning of <input_file> depends on the selected mode.
Examples
In default mode,
<input_file>is usually a Gaussian output file for Hessian extraction.With
--opt,--freq,--orca-opt,--orca-freq,--dyn,--qchem-*,<input_file>is an XYZ geometry file.With
--orca-hess,<input_file>is an ORCA.hessfile.With
--qchem-hess,<input_file>is a Q-ChemHESSfile.With
--parse-qchem-qmd,<input_file>is a Q-Chem AIMD/QMD.outfile.
Hessian extraction
BULMA writes Hessians in two different output forms:
Matrix-style lower-triangular text output
Flattened one-column vector output
Both outputs use Fortran D exponent notation.
Default output names
Matrix file:
Hessian.outFlat vector:
Hessian_flat.out
You can change them with:
-m/--matrix-out-v/--vector-out
Gaussian Hessian extraction
This is the default behavior when no mutually exclusive generation or parsing flag is used.
BULMA scans the output for the block between:
Force constants in Cartesian coordinatesFinal forces over variables
and then reconstructs the lower triangular Hessian and writes both outputs.
Basic example
python bulma.py gaussian_freq.out
Custom output names
python bulma.py gaussian_freq.out \
--matrix-out my_hessian.out \
--vector-out my_hessian_flat.out
What gets written
my_hessian.outcontains rows where rowrhas exactlyrvaluesmy_hessian_flat.outcontains the same values as a one-column vectorThe flat vector file begins with two blank lines
Typical use case
Use this mode when the code expects a lower-triangular Hessian or a flattened vector in Fortran-style notation.
ORCA Hessian extraction
Use --orca-hess when the input file is an ORCA .hess file.
BULMA reads the ORCA Hessian block starting at $hessian, reconstructs the full symmetric matrix, and converts it into the same lower-triangular BULMA format used elsewhere.
Basic example
python bulma.py job.hess --orca-hess
Custom outputs
python bulma.py job.hess --orca-hess \
-m orca_hessian.out \
-v orca_hessian_flat.out
Output behavior
Full ORCA matrix is parsed internally
Output is converted to BULMA’s lower-triangle convention
Exponents are written in
Dformat
Q-Chem Hessian extraction
Use --qchem-hess when the input file is a Q-Chem HESS file.
BULMA looks for a block shaped like:
$hessian
Dimension N
...
$end
It then reads the lower triangle, validates the expected number of elements, and writes the same two output files as for Gaussian and ORCA.
Basic example
python bulma.py HESS --qchem-hess
Custom outputs
python bulma.py HESS --qchem-hess \
-m qchem_hessian.out \
-v qchem_hessian_flat.out
Geometry extraction
Use --extract-geo to extract the final geometry from a finished calculation.
Default output:
geo_opt.xyz
Override with:
--geo-out my_geometry.xyz
How BULMA detects the engine
BULMA automatically selects the extraction strategy depending on the file content:
Gaussian: last
Standard orientation:blockQ-Chem: last
Standard Nuclear Orientation (Angstroms)blockORCA: last
CARTESIAN COORDINATES (ANGSTROEM)block afterTHE OPTIMIZATION HAS CONVERGED
Gaussian geometry extraction
For Gaussian outputs, BULMA extracts coordinates from the last Standard orientation: block.
Because Gaussian standard orientation blocks do not contain the element symbols in the final XYZ, BULMA uses an XYZ template to recover the atomic symbols and ordering.
Default template
geo.xyz
Example
python bulma.py opt.out --extract-geo --xyz-template geo.xyz
Custom output
python bulma.py opt.out --extract-geo \
--xyz-template geo.xyz \
--geo-out extracted.xyz
Important note
For Gaussian geometry extraction, the template file must contain the same atoms in the same order as the calculation.
ORCA geometry extraction
For ORCA outputs, BULMA finds the optimization convergence marker and then extracts the last Cartesian block in Ångström units.
Example
python bulma.py orca_opt.out --extract-geo --geo-out orca_final.xyz
No template is needed because ORCA prints element symbols directly in the coordinate block.
Q-Chem geometry extraction
For Q-Chem outputs, BULMA reads the last Standard Nuclear Orientation (Angstroms) block.
Example
python bulma.py qchem_opt.out --extract-geo --geo-out qchem_final.xyz
No template is required.
Input generation
BULMA can generate new job inputs directly from an XYZ file.
These modes share a common set of ab initio options.
Gaussian input generation
Gaussian optimization input
Use --opt to generate geom.com.
python bulma.py geo.xyz --opt
Output
geom.com
Default route details
The generated input includes:
EmpiricalDispersion=GD3BJOpt=(CalcAll,MaxCycles=200,<convergence>)int=ultrafineSCF(XQC,Tight)
Customized example
python bulma.py geo.xyz --opt \
--THEORY M06-2X \
--BS Def2TZVP \
--Nproc 16 \
--mem 64Gb \
--charge 1 \
--mult 2 \
--convergence Tight
Gaussian frequency input
Use --freq to generate geom_freq.com.
python bulma.py geo.xyz --freq
Output
geom_freq.com
Default route details
The generated frequency input includes:
EmpiricalDispersion=GD3BJFreqIop(7/33=1)int=ultrafineSCF(XQC,Tight)nosymm
Example
python bulma.py geo.xyz --freq \
--THEORY B3LYP \
--BS Def2TZVP \
--Nproc 24 \
--mem 128Gb
ORCA input generation
ORCA optimization input
Use --orca-opt to generate geom.inp.
python bulma.py geo.xyz --orca-opt
Output
geom.inp
ORCA optimization + frequency input
Use --orca-freq to generate geom_freq.inp.
python bulma.py geo.xyz --orca-freq
Output
geom_freq.inp
Default ORCA behavior
BULMA maps some generic defaults into ORCA-style settings:
If
--BSis left at the global defaultDef2TZVP, ORCA input usesDef2-TZVPDIf
--Nprocis left at the global default48, ORCA input uses20If
--memis left at the global default300Gb, no%maxcoreline is writtenConvergence (
--convergence) is translated into ORCA optimization keywords such as:VeryTight→VERYTIGHTOPTTight→TIGHTOPTNormal→OPT
Example
python bulma.py geo.xyz --orca-opt \
--THEORY B3LYP \
--BS Def2TZVP \
--Nproc 12 \
--mem 48Gb \
--charge 0 \
--mult 1 \
--convergence VeryTight
What is written
The ORCA input includes:
keyword line with method, dispersion, basis, SCF keyword, and job type
%PAL NPROCS ... ENDoptional
%maxcore%SCFwithMAXITER 500%geomwithMAXITER 500Cartesian geometry block in XYZ style
Q-Chem input generation
BULMA supports multiple Q-Chem generation modes.
1. Single-job optimization input
Use --qchem-opt-single.
python bulma.py geo.xyz --qchem-opt-single
Output:
opt.inp
2. Single-job frequency input
Use --qchem-freq.
python bulma.py geo.xyz --qchem-freq
Output:
freq.inp
3. Multi-job optimization input
Use --qchem-opt.
python bulma.py geo.xyz --qchem-opt
Output:
opt.inp
This creates a chained Q-Chem workflow that starts with a frequency job and then launches an optimization that reads the Hessian and SCF guess.
4. Multi-job optimization + final frequency input
Use --qchem-opt-freq.
python bulma.py geo.xyz --qchem-opt-freq
Output:
opt-freq.inp
This creates a three-stage input:
Initial frequency job
Optimization reading Hessian and guess
Final frequency job reading the SCF guess and printing vibrational analysis data
Q-Chem basis naming
BULMA automatically maps:
Def2TZVP -> def2-TZVP
when writing Q-Chem inputs.
Example
python bulma.py geo.xyz --qchem-opt-freq \
--THEORY B3LYP \
--BS Def2TZVP \
--charge 0 \
--mult 1
Dynamics and MD workflows
BULMA can both generate MD inputs and parse MD outputs.
Gaussian BOMD input generation
Use --dyn to generate a Gaussian BOMD input file.
Basic example
python bulma.py geo.xyz --dyn
Default output:
dyn.com
Default supporting files
By default, BULMA expects a velocity file named:
velocity_gau.xyz
Override it with:
--vel-file my_velocities.xyz
Additional options
--stepsize BOMD StepSize (default: 2000)
--npoints BOMD MaxPoints (default: 2500)
--dyn-out Output filename (default: dyn.com)
--chk Checkpoint name (default: dyn.chk)
Example
python bulma.py geo.xyz --dyn \
--vel-file velocity_gau.xyz \
--stepsize 2000 \
--npoints 5000 \
--dyn-out dyn.com \
--chk dyn.chk
Notes
Velocities are appended after the geometry block
BULMA writes the separator line
0before the velocity sectionThe script expects one velocity triplet per atom
ORCA QMD input generation
Use --orca-qmd to generate both:
an ORCA QMD input file
an ORCA MD restart file
Basic example
python bulma.py geo.xyz --orca-qmd
Default outputs
If the XYZ file is geo.xyz, BULMA writes:
geo_qmd.inp
geo_qmd.mdrestart
Default supporting file
velocity_orca.xyz
Override it with:
--orca-vel-file my_velocity.xyz
Velocity units
You can specify whether the ORCA velocity file uses:
au(default)angfs
with:
--orca-vel-unit au
--orca-vel-unit angfs
Example
python bulma.py geo.xyz --orca-qmd \
--orca-vel-file velocity_orca.xyz \
--orca-vel-unit au \
--qmd-timestep 0.20 \
--qmd-run 2501 \
--qmd-prefix test_run
This writes:
test_run_qmd.inp
test_run_qmd.mdrestart
Notes
The restart writer converts
auvelocities intoÅ/fswhen neededThe MD input enables position and velocity dumps with stride 1
The thermostat is set to
noneRestart mode is explicitly enabled in the
%mdblock
Q-Chem AIMD/QMD input generation
Use --qchem-qmd to generate a Q-Chem AIMD input.
Basic example
python bulma.py geo.xyz --qchem-qmd
Default files
Input XYZ:
positional argument, e.g.
geo.xyz
Default velocity file:
velocity.xyz
Default output:
dyn.inp
Q-Chem AIMD-specific options
--qchem-vel-file Velocity file (default: velocity.xyz)
--qchem-qmd-out Output filename (default: dyn.inp)
--qchem-timestep Time_step (default: 8)
--qchem-steps aimd_steps (default: 2500)
--qchem-print aimd_print (default: 1)
Example
python bulma.py geo.xyz --qchem-qmd \
--qchem-vel-file velocity.xyz \
--qchem-qmd-out dyn.inp \
--qchem-timestep 8 \
--qchem-steps 5000 \
--qchem-print 1
Notes
Velocities are written without unit conversion
The
$velocityblock contains one(vx vy vz)triplet per atomThe generated
$remsection setsJOBTYPE = aimdAIMD_METHODdefaults tobomdDFT_D = D4no_reorient = truesym_ignore = true
Trajectory parsing
BULMA supports parsing output from multiple engines into trajectory formats suitable for visualization, energy analysis, or workflows such as flying_nimbus.
Parsing Gaussian BOMD output
Use --parse-dyn to parse Gaussian BOMD output.
Required arguments
--parse-dyn
--inizio <start_step>
--fine <end_step_exclusive>
--xyz <reference_geometry.xyz>
Optional arguments
--gout Explicit Gaussian output file
--vel Fallback velocity file
--output Basename for written files (default: parsed_log)
--movie Also write coordinates-only movie XYZ
--total Also write energies file
--scale Shift Epot and Etot by --Emin
--Emin Minimum energy used with --scale
--nimbus-traj Print the trajectory for Flying Nimbus
--nimbus-out Trajectory file name for Flying Nimbus (default: parsed_log_traj.xyz)
--Natom Number of atoms (OPTIONAL, deprecated)
Basic example
python bulma.py dyn.out --parse-dyn \
--inizio 1 \
--fine 1001 \
--xyz geo.xyz
Output files
By default, BULMA writes:
parsed_log_xv.xyz
Optional outputs:
parsed_log.xyzif--movieis usedparsed_log_energies.datif--totalis usedparsed_log_traj.xyzif--nimbus-trajis used and--nimbus-outis not provided
Example with all major outputs
python bulma.py dyn.out --parse-dyn \
--inizio 100 \
--fine 600 \
--xyz geo.xyz \
--movie \
--total \
--nimbus-traj \
--output run1
This writes:
run1_xv.xyz
run1.xyz
run1_energies.dat
run1_traj.xyz
What BULMA parses from Gaussian output
It supports step segmentation based on either of these markers:
Summary information for step NTrajectory Number 1 Step Number N
For each selected step, it attempts to read:
Cartesian coordinates
Mass-weighted Cartesian velocities
EKin,EPot, andETotwhen--totalis requested
Important note on masses
The Gaussian BOMD parser uses an internal mass database. The current implementation includes:
H
C
O
N
S
If your system contains a different element, you must extend the mass table in the source code. If you are using the precompiled version feel free to write on github and we will do it for you.
Parsing ORCA QMD dumps
Use --parse-orca-qmd to parse ORCA trajectory dump files.
Default input files
trajectory.xyz
velocity.xyz
Override them with:
--orca-traj custom_trajectory.xyz
--orca-vel custom_velocity.xyz
Basic example
python bulma.py dummy_input --parse-orca-qmd
The positional input_file is still required by the CLI, but in this mode BULMA actually reads the trajectory and velocity files given by --orca-traj and --orca-vel. Give it the orca output file name if you feel more comfortable.
Output
By default:
parsed_log_traj.xyz
or whatever basename you set with:
--output myrun
Example with explicit range and Epot output
python bulma.py placeholder --parse-orca-qmd \
--orca-traj trajectory.xyz \
--orca-vel velocity.xyz \
--inizio 10 \
--fine 500 \
--output orca_run \
--epot-out epot.dat
Behavior
Positions are read in Ångström
Velocities are read in Å/fs
BULMA converts velocities to bohr/au_time for flying_nimbus-style output
Potential energies can be parsed from
trajectory.xyzcomments when availableOutput step numbering is renormalized so that the first exported frame becomes step 1
Parsing Q-Chem AIMD output
Use --parse-qchem-qmd when the input file is a Q-Chem AIMD output file.
Basic example
python bulma.py qchem_aimd.out --parse-qchem-qmd
Optional controls
--inizio
--fine
--output
--nimbus-out
--epot-out
Example
python bulma.py qchem_aimd.out --parse-qchem-qmd \
--inizio 1 \
--fine 1000 \
--output qmd_run \
--epot-out qmd_epot.dat
Behavior
BULMA looks for blocks marked by:
Nuclear coordinates (Angst) and velocities (a.u.)
and matches them to corresponding TIME STEP # sections.
It writes a flying_nimbus-style trajectory where:
positions are in Ångström
velocities are kept in atomic units
If --epot-out is requested, BULMA tries to obtain the potential energy from:
V(Electronic)otherwise
E(Total) - T(Nuclear)
Output step numbering is renormalized so that the first exported frame becomes step 1.
Complete CLI reference
Available options by purpose.
Positional argument
input_file
Meaning depends on the selected mode.
Hessian output control
-m, --matrix-out Output Hessian matrix file (default: Hessian.out)
-v, --vector-out Output Hessian vector file (default: Hessian_flat.out)
Hessian mode selection
--orca-hess Extract Hessian from ORCA .hess
--qchem-hess Extract Hessian from Q-Chem HESS
If neither is used, the default Hessian mode assumes Gaussian output.
Geometry extraction
--extract-geo Extract final geometry and exit
--geo-out Output XYZ name (default: geo_opt.xyz)
--xyz-template Template XYZ for Gaussian (default: geo.xyz)
Input generation mode selection
These options are mutually exclusive:
--opt
--freq
--orca-opt
--orca-freq
--dyn
--orca-qmd
--qchem-qmd
--qchem-opt-single
--qchem-freq
--qchem-opt
--qchem-opt-freq
Shared ab initio options
--BS Basis set (default: Def2TZVP)
--THEORY Method (default: B3LYP)
--convergence Opt keyword (default: VeryTight)
--Nproc Number of processors (default: 48)
--mem Memory (default: 300Gb)
--charge Total charge (default: 0)
--mult Spin multiplicity (default: 1)
Gaussian BOMD generation options
--stepsize BOMD StepSize (default: 2000)
--npoints BOMD MaxPoints (default: 2500)
--vel-file Velocity file (default: velocity_gau.xyz)
--dyn-out Output filename (default: dyn.com)
--chk Checkpoint filename (default: dyn.chk)
ORCA QMD generation options
--orca-vel-file Velocity file (default: velocity_orca.xyz)
--orca-vel-unit Velocity unit (choices: au, angfs; default: au)
--qmd-timestep Timestep in fs (default: 0.20)
--qmd-run Number of MD steps (default: 2501)
--qmd-prefix Prefix for output files
Q-Chem AIMD/QMD generation options
--qchem-vel-file Velocity file (default: velocity.xyz)
--qchem-qmd-out Output filename (default: dyn.inp)
--qchem-timestep Time_step (default: 8)
--qchem-steps aimd_steps (default: 2500)
--qchem-print aimd_print (default: 1)
Gaussian BOMD parsing options
--parse-dyn
-i, --inizio Starting step
-f, --fine Ending step (exclusive)
-N, --Natom Total number of atoms
-g, --gout Gaussian output override
--xyz Reference equilibrium xyz
--vel Fallback initial velocity file
-o, --output Output basename (default: parsed_log)
--Emin Minimum potential energy for scaling (default: 0.0)
--scale Shift Epot and Etot by Emin
--movie Write coordinates-only xyz
--total Write energies file
--nimbus-traj Write flying_nimbus-compatible trajectory
--nimbus-out Output filename for nimbus trajectory
ORCA and Q-Chem trajectory parsing options
--parse-orca-qmd
--parse-qchem-qmd
--orca-traj ORCA trajectory file (default: trajectory.xyz)
--orca-vel ORCA velocity file (default: velocity.xyz)
--epot-out Output potential energy file
Units and conventions
BULMA works across multiple programs that use different conventions. Understanding the units is important.
Constants used internally
Bohr to Ångström conversion is built in
Atomic time to femtoseconds conversion is built in
Velocity conversions are handled when needed
Common conventions in BULMA outputs
Hessian outputs are written with Fortran
DexponentsORCA trajectory parsing converts velocities from Å/fs to bohr/au_time for flying_nimbus output
Q-Chem QMD trajectory parsing keeps velocities in a.u.
Gaussian BOMD parsing writes:
an
xvfile with coordinates and converted velocitiesan optional flying_nimbus trajectory in Å + bohr/au_time
Geometry units
Extracted XYZ files are written in Ångström
Common file naming conventions
Hessian extraction
Hessian.outHessian_flat.out
Geometry extraction
geo_opt.xyz
Gaussian generation
geom.comgeom_freq.comdyn.com
ORCA generation
geom.inpgeom_freq.inp<prefix>_qmd.inp<prefix>_qmd.mdrestart
Q-Chem generation
opt.inpfreq.inpopt-freq.inpdyn.inp
Parsing outputs
<output>_xv.xyz<output>.xyz<output>_energies.dat<output>_traj.xyzcustom
--epot-outfile
Typical end-to-end examples
Example 1: Gaussian optimization input from XYZ
python bulma.py ethanol.xyz --opt \
--THEORY B3LYP \
--BS Def2TZVP \
--Nproc 8 \
--mem 16Gb
Result:
geom.com
Example 2: Extract final Gaussian geometry and reuse it for ORCA
python bulma.py gaussian_opt.out --extract-geo \
--xyz-template geo.xyz \
--geo-out gaussian_final.xyz
python bulma.py gaussian_final.xyz --orca-opt \
--THEORY B3LYP \
--BS Def2TZVP
Result:
gaussian_final.xyzgeom.inp
Example 3: Generate Q-Chem opt+freq workflow from optimized XYZ
python bulma.py final.xyz --qchem-opt-freq \
--THEORY B3LYP \
--BS Def2TZVP \
--charge 0 \
--mult 1
Result:
opt-freq.inp
Example 4: Convert ORCA QMD into a flying_nimbus trajectory
python bulma.py dummy.dat --parse-orca-qmd \
--orca-traj trajectory.xyz \
--orca-vel velocity.xyz \
--output nimbus_orca \
--epot-out epot_orca.dat
Result:
nimbus_orca_traj.xyzepot_orca.dat
Example 5: Parse Gaussian BOMD and write Nimbus compatible outputs
python bulma.py bomd.out --parse-dyn \
--inizio 1 \
--fine 2501 \
--xyz eq.xyz \
--movie \
--total \
--nimbus-traj \
--output bomd_analysis
Result:
bomd_analysis_xv.xyzbomd_analysis.xyzbomd_analysis_energies.datbomd_analysis_traj.xyz
Limitations and important notes
1. Gaussian geometry extraction needs an XYZ template
For Gaussian --extract-geo, BULMA uses --xyz-template to restore element labels and ordering. If the template does not match the output, the extracted XYZ will be incorrect or fail.
2. Gaussian BOMD mass table is limited
The internal mass database currently includes only:
H
C
O
N
S
If your system contains other elements, you must extend the source code in get_masses_cart(). If you are using a precompiled version feel free to contact us on Github.
3. Velocity file sizes must match the atom count
For all generated dynamics inputs and restart files, the number of velocity lines must match the number of atoms in the XYZ geometry.
4. Some CLI modes still require a positional input_file even if they mainly read auxiliary files
For example, --parse-orca-qmd uses --orca-traj and --orca-vel, but the CLI still expects a positional first argument.
5. ORCA and Q-Chem defaults are adapted internally
Some defaults are translated to engine-specific settings instead of being copied literally.
Examples:
ORCA default basis becomes
Def2-TZVPDORCA default processor count becomes
20Q-Chem default basis string becomes
def2-TZVP
Troubleshooting
“Could not find start marker” during Gaussian Hessian extraction
Cause:
The file is not a Gaussian Hessian-containing output
The calculation did not reach the expected section (Error messages?)
The wrong file was passed as input
Fix:
Confirm the file is a Gaussian frequency output containing
Force constants in Cartesian coordinates
“Could not find ORCA start marker” or incomplete ORCA Hessian parsing
Cause:
The input is not a valid ORCA
.hessfileThe file is truncated
Fix:
Use the
.hessfile rather than the.outConfirm the
$hessiansection is complete
“Q-Chem Hessian size mismatch”
Cause:
The
HESSfile is incomplete or malformed
Fix:
Regenerate the Q-Chem Hessian file
Check for accidental editing or truncation
“Velocity/geometry mismatch”
Cause:
Number of atoms in the XYZ file and velocity file differ
Fix:
Ensure that the velocity file contains one line per atom
Confirm both files refer to the same molecular system
“No MD step markers found” in Gaussian trajectory parsing
Cause:
The Gaussian output does not contain one of the supported step markers
The output is not a compatible BOMD job
Fix:
Confirm the file is a Gaussian BOMD output and that the relevant sections are present
“Atom X not in mass database”
Cause:
The molecule contains an element not hardcoded in
get_masses_cart()
Fix:
Add the missing atomic mass to the source code before running the parser again
License
This project is marked in the source with:
SPDX-License-Identifier: PolyForm-Noncommercial-1.0.0
Check the repository for the full license text and any additional usage notes.