Skip to main content

Python wrapper for Q-Chem

Project description

Build, Test & Upload Coverage Status PyPI version Documentation Status

PyQchem

Python wrapper for Q-Chem (https://www.q-chem.com)
Online manual: https://pyqchem.readthedocs.io/

Main features

  • Easy to use clean python interface for Q-Chem
  • No special q-chem installation needed (reads Q-Chem environment)
  • Output parsers for different type of calculations
  • Custom basis set and guess support using high level interface
  • Calculation Cache system powered by SQLite database
  • python 2.7.x/3.5+ compatibility

Installation instructions

  1. Requirements
  • numpy
  • scipy
  • matplotlib
  • requests
  • lxml
  • wfnsympy (optional)
  • paramiko (optional)
  • pymatgen (optional)

2a. From pypi repository (recommended)

pip install pyqchem --user

2b. Installation from source

python setup.py install --user

Examples

Simple pythonic API to define your input

from pyqchem import Structure, QchemInput, get_output_from_qchem
from pyqchem.parsers.basic import basic_parser_qchem

molecule = Structure(coordinates=[[0.0, 0.0, 0.0],
                                  [0.0, 0.0, 0.9]],
                     symbols=['H', 'H'],
                     charge=0,
                     multiplicity=1)

qc_input = QchemInput(molecule,
                      jobtype='sp',
                      exchange='hf',
                      basis='6-31G')

data = get_output_from_qchem(qc_input,
                             processors=4,
                             parser=basic_parser_qchem)

# obtain a python dictionary
print('Energy: ', data['scf_energy'])

Link calculations in powerful workflows

from pyqchem import QchemInput, get_output_from_qchem
from pyqchem.parsers.parser_optimization import basic_optimization
from pyqchem.parsers.parser_frequencies import basic_frequencies
from pyqchem.tools import get_geometry_from_pubchem

molecule = get_geometry_from_pubchem('aspirin')

qc_input = QchemInput(molecule,
                      jobtype='opt',
                      exchange='hf',
                      basis='sto-3g',
                      geom_opt_tol_gradient=300,
                      geom_opt_tol_energy=100,
                      geom_opt_tol_displacement=1200)

parsed_data, electronic_structure = get_output_from_qchem(qc_input,
                                                          processors=4,
                                                          parser=basic_optimization,
                                                          read_fchk=True)

qc_input = QchemInput(parsed_data['optimized_molecule'],
                      jobtype='freq',
                      exchange='hf',
                      basis='sto-3g',
                      scf_guess=electronic_structure['coefficients'])

parsed_data = get_output_from_qchem(qc_input,
                                    processors=4,
                                    parser=basic_frequencies)


for i, mode in enumerate(parsed_data['modes']):
    print('mode:                      {}'.format(i+1))
    print('frequency (cm-1):          {:10.2f}'.format(mode['frequency']))
    print('force constant (mdyne/A):  {:10.5f}\n'.format(mode['force_constant']))

Custom basis support

from pyqchem import QchemInput, Structure
from pyqchem.basis import get_basis_from_BSE


molecule = Structure(coordinates=[[0.0, 0.0, 0.0000],
                                  [0.0, 0.0, 1.5811]],
                     symbols=['Se', 'H'],
                     charge=-1,
                     multiplicity=1)

basis_custom = get_basis_from_BSE(molecule, 'cc-pVTZ')

qc_input = QchemInput(molecule,
                      jobtype='sp',
                      exchange='hf',
                      basis=basis_custom)

Handle qchem errors

from pyqchem import get_output_from_qchem
from pyqchem.errors import OutputError, ParserError
from pyqchem.parsers.parser_rasci import parser_rasci

try:
    parsed_data = get_output_from_qchem(qc_input,
                                        processors=4,
                                        parser=parser_rasci,
                                        )

except OutputError as e:
    print('Calculation ended with errors. Error lines:')
    print(e.error_lines)
    
    # Try to parse your output anyway
    try: 
        parsed_data = parser_rasci(e.full_output)
    except ParserError:
        print('Failed parsing')
        exit()


print('Energy: ', parsed_data['scf_energy'])

Additional example scripts are found at the examples folder

Contact info

Abel Carreras
abelcarreras83@gmail.com

Donostia International Physics Center (DIPC)
Donostia-San Sebastian (Spain)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyqchem-0.9.6.tar.gz (53.7 kB view details)

Uploaded Source

Built Distribution

pyqchem-0.9.6-py3-none-any.whl (59.8 kB view details)

Uploaded Python 3

File details

Details for the file pyqchem-0.9.6.tar.gz.

File metadata

  • Download URL: pyqchem-0.9.6.tar.gz
  • Upload date:
  • Size: 53.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for pyqchem-0.9.6.tar.gz
Algorithm Hash digest
SHA256 b1fac68bd44d02b2e082d5b728a56a8a3e278b0579d309fb2f80d46133af4488
MD5 74a6f562dd0d70902abd7a63b960ebfa
BLAKE2b-256 6602a93cd064c6571779a1831a26f6c6959e8c10bde56ab57908578f15631b03

See more details on using hashes here.

File details

Details for the file pyqchem-0.9.6-py3-none-any.whl.

File metadata

  • Download URL: pyqchem-0.9.6-py3-none-any.whl
  • Upload date:
  • Size: 59.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for pyqchem-0.9.6-py3-none-any.whl
Algorithm Hash digest
SHA256 5f15393c85ae41f66c2fa2a9e14b28dbad827003bce67ea15bb27f36b4c82ed0
MD5 96120f8aeed430d68b855addb673aa51
BLAKE2b-256 49ca7ba1cafa789f621f17cfd26ca6b248247fd71c690dc03587df70515dd587

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page