- (:pr:`340`, :issue:`330`) Add molecular charge and multiplicity to Molecule repr formula, so neutral singlet unchanged but radical cation has '2^formula+'.
- (:pr:`342`) Update some docs settings and requirements for newer tools.
- (:pr:`338`) Adapts for numpy v2 (only works with pint >= v0.24). v1 still compatible.
- (:pr:`335`, :issue:`334`) Numpy >=1.26 only works with pint >=0.21. @TyBalduf
- (:pr:`329`) Continues :pr:`328` adding
util.which
workaround for only python v3.12.0 and psi4 (can be expanded) to correctly select among cmd, cmd.bat, cmd.exe.
- (:pr:`326`, :pr:`327`) New protocol option
occupations_and_eigenvalues
added toWavefunctionProperties
to store lightweight fields.
- (:pr:`322`) Allow
util.which
to raise a clearer error when handling pyenv shims. Improve docs.
- (:pr:`325`, :issue:`324`) Ensure
util.measure_coordinates
isn't returning NaN angles just - because floating-point errors are outside arccos's
[-1, 1]
bounds.
- (:pr:`325`, :issue:`324`) Ensure
- (:pr:`315`) Stop resetting numpy print formatting.
- (:pr:`328`) Add workaround for only python v3.12.0 and psi4 (can be expanded) to handle
util.which
on Windows when a cmd (non-executable) and a cmd.<executable_extension> live side-by-side. Otherwise see[WinError 193] %1 is not a valid Win32 application
.
- (:pr:`320`) Reset
black
formatting to 2022. - (:pr:`327`) Enable Python v3.12 in poetry.
- (:pr:`328`) Start Windows testing and cron testing.
- (:pr:`308`) Fix CI Pipelines. Dropped Python3.6. Bring CI pipelines into harmony with local dev experience. Lint and format entire code base. Accelerate CI pipelines. Update setup.py to correctly define extras packages. Breaking change due to dropped support for Python3.6. No code functionality was altered.
- Dropped support for dead Python 3.6. Minimum supported Python is now 3.7.
- Updated CONTRIBUTING.md to contain detailed instructions for developers on how to contribute.
- Fixed broken code that failed to prepend the "v" to version numbers.
- Updated CI to run without conda and using only packages defined in setup.py. CI is now much faster and runs the same way for local developers and GitHub Actions.
- Added test.sh and format.sh to devtools/scripts for easy execution of formatting and testing.
- Formatted all code with black. Sorted imports with isort.
- Added pre-commit to repo so code formatting, linting, and testing will all run as part of regular git workflow.
- (:pr:`310`) Modernize DevOps Tooling
- Added /scripts directory to root of project that contains scripts for testing, formatting code, and building docs.
- Updated build system from setuptools to modern pyproject.toml specification using poetry for the build backend.
- Removed complicated versioning code in favor of single source of truth in pyproject.toml. Using standard library importlib for looking up package version in __init__.py file.
- Added build_docs.sh script to /scrips and removed Makefile from /docs. Flattened /docs file structure.
- Removed travis-ci code from devtools
- Removed LGTM code (they no longer exist as a project).
- Bring all package directories under black, isort, and autoflake control.
- (:pr:`305`) Initialize Molecule.extras as empty dictionary.
- (:pr:`311`) Update docs location from RTD to GH pages. Resolve escape char warnings. Update changelog.
- (:pr:`311`) Clear up NumPy "Conversion of an array with ndim > 0 to a scalar is deprecated" in util.measure_coordinates called by Molecule.measure.
- (:pr:`314`) Import pydantic.v1 from pydantic v2 so that QCElemental can work with any >=1.8.2 pydantic until QCElemental is updated for v2.
- (:pr:`297`) Rearrange imports for compatibility with Pint v0.20. No new restrictions on pint version.
- (:pr:`285`) Standardized default on
AtomicResult.native_files
to{}
fromNone
. May break strict logic. - (:pr:`289`, :pr:`290`) Transition from some early documentation tools (class
AutodocBaseSettings
andqcarchive_sphinx_theme
) to externally maintained ones (project https://github.com/mansenfranzen/autodoc_pydantic andsphinx_rtd_theme
). Expand API docs.
- (:pr:`286`) Sphinx autodocumentation with typing of
qcelemental.testing.compare_recursive
no longer warns about circular import.
- (:pr:`275`)
AtomicResult
gains anative_files
field of a dictionary of file names (or generic'input'
) and text (not binary) contents that the CMS program may have generated but which haven't necessarily been harvested into QCSchema. Contents controlled by a new native_files protocol analogous to stdout protocol.
- (:pr:`281`)
TorsionDriveInput
now accepts a list ofMolecule
objects as theinitial_molecule
to seed the torsiondrive with multiple conformations.
- (:pr:`276`)
AtomicResultProperties.dict()
no longer forces arrays to JSON flat lists but now allows NumPy arrays. That is,AtomicResultProperties
now behaves like every other QCElemental model. Expected to be disruptive to QCFractal. - (:pr:`280`) Examples of QCSchema from test cases are now saved at branch https://github.com/MolSSI/QCElemental/tree/qcschema-examples . These have passed validation as models by Pydantic and as JSON by schema generated from Pydantic models.
- (:pr:`277`) Documentation is now served from https://molssi.github.io/QCElemental/ and built by https://github.com/MolSSI/QCElemental/blob/master/.github/workflows/CI.yml . https://qcelemental.readthedocs.io/en/latest/ will soon be retired.
- (:pr:`274`) The molecule
from_string
parser when no dtype specified learned to return the most specialized error message among the dtypes, not the full input string. - (:pr:`276`)
Molecule.to_string(..., dtype="nwchem")
learned to handle ghosts (real=False
) correctly. It also now prints the user label, which is used downstream for custom basis sets and shows up in a NWChem output file. QCEngine will be edited to process the label, but other uses may need modification. - (:pr:`276`)
Molecule.align
learned a new keywordgeneric_ghosts=True
so that it can act on molecules that have centers with content Gh, not Gh(He).
- (:pr:`276`)
Molecule.to_string(..., dtype="gamess")
learned to handle ghosts (real=False
) correctly forcoord=unique
. Note that QCEngine usescoord=prinaxis
, so actual ghosts are still NOT interpretable by downstream GAMESS.
- (:pr:`268`) Add provisional models that store the inputs to and outputs of a torsion drive procedure. @SimonBoothroyd
- (:pr:`272`) Add SCF and return gradient and Hessian fields to
AtomicResultProperties
.
- (:pr:`271`)
Molecule
learned to create instances with geometry rounded to other than 8 decimal places throughMolecule(..., geometry_noise=<13>)
to optionally overrideqcel.models.molecule.GEOMETRY_NOISE = 8
. This should be used sparingly, as it will make more molecules unique in the QCA database. But it is sometimes necessary for accurate finite difference steps and to preserve intrinsic symmetry upon geometry rotation. Previous route was to reset the qcel module variable for the duration of instance creation. - (:pr:`271`)
Molecule.align
andMolecule.scramble
learned to return a fuller copy of self than previously. Now has aligned atom_labels, real, and mass_numbers as well as incidentals like Identifiers. Fragmentation still not addressed. - (:pr:`271`)
Molecule.to_string(dtype="gamess")
learned to write symmetry information to the prinaxis output if passed in through field fix_symmetry. This is provisional, as we'd like the field to be uniform across qcprogs.
- (:pr:`271`) Testing function
compare_values()
on arrays corrected the RMS maximum o-e value displayed and added a relative value.
- (:pr:`267`) Serialization learned msgpack mode that, in contrast to msgpack-ext, doesn't embed NumPy objects.
- (:pr:`266`) Testing function
compare_values()
learned to print RMS and MAX statistics for arrays.
- (:pr:`265`) Fix search path construction. @sheepforce
- (:pr:`266`) Bump minimum pydantic to 1.8.2 to avoid security hole -- https://github.com/samuelcolvin/pydantic/security/advisories/GHSA-5jqp-qgf6-3pvh .
- (:pr:`257`)
PhysicalConstantsContext
learned to write a Fortran header. @awvwgk
- (:pr:`261`) Documentation became type-aware and grew more links.
- (:pr:`253`) Fixed incompatibility with Pydantic >=1.8.
- (:pr:`237`) Exports models to JSON Schema with
make schema
. - (:pr:`237`) Build bank of JSON examples from Pydantic models defined in tests. Test that bank against exported schema with
pytest --validate qcelemental/
. - (:pr:`237`) Many model descriptions edited, dimensions added to array properties,
AtomicInput.model.basis
now takesBasisSet
object not just string, several properties added to match QCSchema, several limitations on number and uniqueness imposed.
- (:pr:`237`) Improve mypy conformance including dynamic provenance. Necessitates Pydantic >=1.5.
- (:pr:`237`)
a0
without underscore added as computable pint unit. - (:pr:`246`, :pr:`250`) Removes types deprecated in NumPy v1.20.0.
- (:pr:`244`) Fixes where in code validation throws if
center_data
missing fromBasisSet
model. - (:pr:`249`) Fixes web tests that weren't marked.
- (:pr:`238`)
molparse.to_string
MRChem dtype developed.
- (:pr:`231`)
compare
,compare_values
, andcompare_recursive
learned new keywordequal_phase
that whenTrue
allows eithercomputed
or-computed
to pass the comparison. Forcompare_recursive
, the leniency can be restricted to specific leaves of the iterable by passing a list of allowed leaves.
- (:pr:`229`)
Molecule.align
told the full truth in its documentation that themol_align
argument can take a float.
- (:pr:`228`) Fix testing bug for installed module, which was missing a dummy directory.
- (:pr:`182`) Added experimental protocol for controlling autocorrection attemps. (That is, when a calculation throws a known error that QCEngine thinks it can tweak the input and rerun.) Currently in trial for NWChem.
- (:pr:`186`, :pr:`223`)
molparse.to_string
Orca and MADNESS dtypes developed. - (:pr:`226`) Allow
which_import
to distinguish between ordinary and namespace packages. - (:pr:`227`) Add non-default
strict
argument toperiodictable.to_Z
,to_symbol
, andto_element
that fails when isotope information is given. - (:pr:`227`) Allow nonphysical masses to pass validation in
molparse.from_schema(..., nonphysical=True)
. Also allowed in formingqcel.models.Molecule(..., nonphysical=True)
.
- (:pr:`227`) Fixed deception described in issue 225 where
qcel.models.Molecule(..., symbols=["O18"])
accepted "O18" but did not influence the isotope, as user might have expected. That now raisesNotAnElementError
, and an example of correctly setting isotope/masses has been added. This error now caught atqcel.molparse.from_arrays
so general.
- (:pr:`211`) Improve testing reliability by excusing PubChem when internet flaky.
- (:pr:`216`) "CODATA2018" constants now tested.
- (:pr:`207`) Multipoles exist in
AtomicResultProperties
as ndarray with order-dimensional shape. Propertyscf_quadrupole_moment
defined.
- (:pr:`216`) Fixes a bug where "CODATA2018" constants could not be used with
conversion_factor
. - (:pr:`217`) Can now run
.schema()
on pydantic classes containingArray
fields (allowing ndarray in place of List).
- (:pr:`209`) Added the option to Hill-order molecular formulas.
- (:pr:`208`) Fixes a Molecule hashing issue due to order of operations changes in
Molecule.from_data
. The order of operations changed inMolecule.from_data
and occasionally resulted in different hashes for Molecules undergoing orient operations. This issue was introduced in 0.13.0 and is unlikely to have any serious negative effects as this did not affect hash integrity.
- (:pr:`183`, :pr:`187`) Added metadata about DFT functionals (
qcelemental.info.dftfunctionalinfo
). - (:pr:`184`) Optional PubChem identifiers were added to molecules.
- (:pr:`187`, :pr:`192`, :pr:`195`) Added metadata about CPUs (
qcelemental.info.cpu_info
).
- (:pr:`179`, :pr:`181`) QCElemental works with Python 3.8 at the expense of needing a new 0.10 pint (rather than generic install). Pint 0.10 has optional NumPy dependency of >=1.12.0, so QCElemental that requires both NumPy and pint needs this constraint.
- (:pr:`172`, :pr:`173`, :pr:`202`, :pr:`203`) Contribution improvements, including GitHub Actions checking,
make format
guidance, and updatedCONTRIBUTING.md
. - (:pr:`189`, :pr:`196`) Constants and unit conversion based on 2018 CODATA are available (but 2014 remains the default).
- (:pr:`197`, :pr:`199`, :pr:`200`) Added more atomic units and aliases (e.g.
au_length = bohr
). - (:pr:`190`, :pr:`191`, :pr:`201`) Slim molecules. Many fields in
Molecule
objects may be optionally inferred.
- (:pr:`174`) Fix
compare_recursive
for whenexpected
is a list butcomputed
is not. - (:pr:`177`) Spelling and type hint fixes.
- (:pr:`180`) Better test coverage.
- (:pr:`156`)
Molecules
can now be correctly compared with==
. - (:pr:`157`)
molparse.to_string
Q-Chem dtype developed. Psi4 dtype now includes label and doesn't have extraneous info for single fragment systems. - (:pr:`162`) New protocol
stdout
added toResultProtocols
controlling whetherstdout
field (which generally contains the primary logfile, whether a program writes it to file or stdout) is returned. - (:pr:`165`) The code base is now Black formatted.
- (:pr:`156`)
Molecule.compare
is deprecated and will be removed in v0.13.0. - (:pr:`167`, :pr:`168`)
ResultInput
,Result
,Optimization
have been removed in favor ofAtomicInput
,AtomicResult
, andOptimizationResult
and will be removed in v0.13.0.
- (:pr:`170`)
ProtoModel
subclasses now correctly allow custom__repr__
and__str__
methods. - (:pr:`164`, :pr:`166`)
nglview-sdf
molecule string format now correctly uses correct sdf format widths fixing some issues with very large molecules.
- (:pr:`152`) Patches
Molecule.from_file
andMolecule.from_data
to read XYZ+ format and correctly handle keyword arguments. - Patches
Molecule.to_file
to write XYZ+ format as the default for XYZ and XYZ+ files.
- (:pr:`152`) Patches
- (:pr:`147`) Updates Pydantic to the 1.0 release and fixes a number of breaking changes.
- (:pr:`148`) Switches from Py3dMoljs to NGLView for molecular visualization due to Jupyter Widget integration.
- (:pr:`149`) Adds statC and Debye to the units registry.
- (:pr:`150`) Patches
which_import
to correctly handle submodules.
- (:pr:`137`, :pr:`138`) Coordinates can now be output in
Turbomole
format in addition to all other formats. - (:pr:`139`) A wavefunction property have been added to the
Result
Model. Adds the ability for Engine and other programs to store and fetch wavefunction data. - (:pr:`140`)
Protocols
have been added toQCInputSpecification
which allows data to pre-pruned by different specifications. Main intention is to reduce wavefunction data which may be re-computed cheaply rather than storing all of it. This does change the input model, so requires a minor version bump.
- (:pr:`132`)
BasisSet
andResult
's documentations have been brought up to the standards of other models.
- (:pr:`123`) QCElemental now passes MyPy!
- (:pr:`127`, :pr:`131`) Adds van der Waals radii data available through
vdwradii.get(atom)
function.
- (:pr:`125`) Add back a consistency check that had been optimized out.
- (:pr:`118`) Model string representations should be more user friendly and descriptive without overload the output.
- (:pr:`119`) The
molparse.to_string
keyword-argreturn_data
now returns molecule keywords for GAMESS and NWChem. Themodels.Molecule.to_string
can usereturn_data
now, too. - (:pr:`120`) Auto documentation tech is now built into the
ProtoModel
and does not need an external function.
- (:pr:`114`) The Numpy einsum calls reference the top level functions and not core C functions. This fixes an issue which can result in NumPy version dependencies.
- (:pr:`85`, :pr:`87`) Msgpack is a new serialization option for Models. Serialization defaults to msgpack when
available (
conda install msgpack-python [-c conda-forge]
), falling back to JSON otherwise. This results in substantial speedups for both serialization and deserialization actions and should be a transparent replacement for users within Elemental itself.
- (:pr:`78`) Molecular alignments can now be aligned on the derivatives of vector components.
- (:pr:`81`) Testing is now operated both on the minimal supported and the latest released versions of dependencies.
- (:pr:`82`) Molecule fragment grouping is now disabled by default to match expected behavior.
- (:pr:`84`) Testing without internet connection should now pass since PubChem testing is skipped with no connection.
- (:pr:`85`) Molecule switches from lists to numpy arrays for internal storage of per-atom fields.
- (:pr:`86`) Molecule performance and memory enhancements through reduced validation times and LRU caching of common validations.
- (:pr:`88`, :pr:`109`) The
Molecule
Model now has its attributes documented and in an on-the-fly manner derived from the Pydantic Schema of those attributes. - (:pr:`99`, :pr:`100`, :pr:`101`, :pr:`102`, :pr:`103`, :pr:`104`, :pr:`105`, :pr:`106`, :pr:`107`) Various documentation, type hints, and small changes.
- (:pr:`87`) Molecule objects built from Schema are run through validators for consistency.
- (:pr:`76`) Adds a built-in
Molecule.to_file
function for easy serialization into.numpy
,.json
,.xyz
,.psimol
, and.psi4
file formats.
- (:pr:`74`) Atom and fragment ordering are preserved when invoking
get_fragment
.
- (:pr:`68`)
molparse.to_string
learned parameterreturn_data
that contains aspects of themodels.Molecule
not expressible in the string. Implemented for dtypes xyz, cfour, psi4. - (:pr:`68`)
Datum
gained an attributenumeric
that reflects whether arithmetic ondata
is valid.Datum
s that aren't numeric can now be created by initializing withnumeric=False
.
- (:pr:`66`) Fix tests when networkx not installed.
- (:pr:`67`) Fix "unsupported format string passed to numpy.ndarray.__format__" on Mac for
testing.compare_values
.
- (:pr:`51`) Changes
models.Molecule
connectivity to default to None rather than an empty list. WARNING this change alters the hashes produced from theMolecule.get_hash
functionality. - (:pr:`52`, :pr:`53`)
models.Molecule
learnednuclear_repulsion_energy
,nelectrons
, andto_string
functions. - (:pr:`54`)
models.ResultProperties
supports CCSD and CCSD(T) properties. - (:pr:`56`) Algorithms Kabsch
molutil.kabsch_align
, Hungarianutil.linear_sum_assignment
, and Unoutil.uno
added. Utilities to generate random 3D rotationsutil.random_rotation_matrix
and reindex a NumPy array into smaller blocksutil.blockwise_expand
added. - (:pr:`56`) Molecular alignment taking into account displacement, rotation, atom exchange, and mirror symmetry for
superimposable and differing geometries was added in
molutil.B787
(basis NumPy function) andmodels.Molecule.align
(far more convenient). Suitable for QM-sized molecules. Requires addition packagenetworkx
. - (:pr:`58`)
utils
learnedwhich_import
andwhich
that provide a path or boolean result for locating modules or commands, respectively. These were migrated from QCEngine along withsafe_version
andparse_version
to colocate the import utilities. - (:pr:`61`) Add molecular visualization to the
models.Molecule
object through the optional 3dMol.js framework. - (:pr:`65`)
testing.compare_molrecs
learned parameterrelative_geoms='align'
that lets Molecules pass if geometries within a translation and rotation of each other. - (:pr:`65`)
testing.compare_recursive
learned parameterforgive
that is a list of paths that may differ without failing the comparison.
- (:pr:`52`, :pr:`53`)
molparse.to_string
NWChem and GAMESS dtypes developed. - (:pr:`57`)
molparse.to_string
learneddtype='terachem'
for writing the separate XYZ file required by TeraChem. Angstroms or Bohr allowed, though the latter requires extra in input file. - (:pr:`60`)
util.which
added the Python interpreter path to the default search$PATH
. - (:pr:`62`) Added
*
to parameter list of many functions requiring subsequent to be keyword only. Code relying heavily on positional arguments may get broken. - (:pr:`63`)
util.which
learned parameterenv
to use an alternate search$PATH
. - (:pr:`63`)
util.which
andutil.which_import
learned parametersraise_error
andraise_msg
which raisesModuleNotFoundError
(for both functions) when not located. It error will have a generic error message which can be extended byraise_msg
. It is strongly encouraged to add specific remedies (like how to install) through this parameter. This is the third exit pattern possible from the "which" functions, of which path/None is the default, True/error happens whenraise_error=True
, and True/False happens otherwise whenreturn_bool=True
. - (:pr:`65`) Testing functions
compare
,compare_values
,compare_recursive
learned parameterreturn_handler
that lets other printing, logging, and pass/fail behavior to be interjected.
- (:pr:`63`)
util.which
usesos.pathsep
rather than Linux-focused:
. - (:pr:`65`) Fixed some minor printing and tolerance errors in molecule alignment.
- (:pr:`65`)
testing.compare_recursive
stopped doingatol=10**-atol
foratol>=1
, bringing it in line with other compare functions.
- (:pr:`49`) Precompute some mass number and mass lookups and store on
qcel.periodic_table
. Also move staticre.compile
expressions out of fns on to module. Mol validation .127s --> .005s.
- (:pr:`47`)
models.DriverEnum
now has aderivative_int
function to return 1 forgradient
, etc., for easy math.properties
returns 0. - (:pr:`47`) Optional
fix_symmetry
field in qcschema_molecule was missing frommodels.Molecule
so Pydantic got mad at Psi4. Now calmed.
- (:pr:`48`) If Molecule object has passed through molparse validation because it was created with a molparse
constructor (e.g.,
from_string
), save some time by not passing it through again atmodel.Molecule
creation time.
- (:pr:`48`) Fixed a
Molecule.get_fragment
bug where ghosted fragments still asserted charge/multiplicity to the validator, which was rightly confused.
- (:pr:`37`) Documentation now pulls from the custom QC Archive Sphinx Theme, but can fall back to the standard RTD theme. This allows all docs across QCA to appear consistent with each other.
- (:pr:`41`) Conda-build recipe removed to avoid possible confusion for everyone who isn't a Conda-Forge
recipe maintainer. Tests now rely on the
conda env
setups. - (:pr:`44`) Molecule objects are now always validated against a more rigorous model and fragment multiplicities are
fixed at the correct times, even when no multiplicities are provided. Molecule defaults to
dtype=2
.
- (:pr:`39`) Fixed
setup.py
to callpytest
instead ofunittest
when running tests on install - (:pr:`41`) Pinned a minimum Pytest version to make sure errors are not because of too old of a pytest version
- (:pr:`33`)
molparse.to_schema
recognizesdtype=2
in keeping with GH:MolSSI/QCSchema#60 with internalschema_name=qcschema_molecule
andschema_version=2
fields.molparse.from_schema
recognizes external fields (existing functionality), internal fields (dtype=2), and mixed. - (:pr:`33`) Pydantic molecule model now contains schema_name and schema_version=2 information.
- (:pr:`35`) Models now have an
extra
field for extra attributes, no additional base keys are allowed.
- (:pr:`34`) Converts
qcel.Datum
to Pydantic model. Changes: (a) comment, doi, glossary fields must be accessed by keyword, (b)to_dict()
becomesdict()
and instead of only label, units, data fields in dict, now comment, doi, glossary present _if_ non-default, (c) complex values no longer list-ified byto_dict()
. - (:pr:`36`) Changelog and Models documentation.
- (:pr:`32`) Updates compliance with Pydantic v0.20.
- (:pr:`31`) Lints the code base preparing for a release and minor test improvements.
- (:pr:`30`) Fixes
dihedral
measurement code for incorrect phase in certain quadrants.
- (:pr:`27`) Adds a new
measure
feature to Molecule for distances, angles, and dihedrals. - (:pr:`25`) Adds a new
testing
module which contains testing routines for arrays, dictionaries, and molecules.
- (:pr:`28`) Reduces loading time from ~1 second to 200 ms by delaying
pint
import and ensuring git tags are only computed once.
- (:pr:`24`) Update models to be compatible with QCFractal and MongoDB objects in the QCArchive Ecosystem.
Also enhances the
Molecule
model'sjson
function to acceptas_dict
keyword, permitting a return as a dictionary of Pydantic-serialized python (primitive) objects, instead of a string.
- (:pr:`21`) Molparse's
from_schema
method now correctly parses the newqcschema_X
strings for schema names. - (:pr:`23`) Pydantic model serializations now correctly handle Numpy Array objects in nested
BaseModels
. Model serialization testing added to catch these in the future.
- (:pr:`20`) Moves several Molecule parsing functions to the molparse module.
- now requires Python 3.6+
- now requires Pydantic
- (:pr:`14`, :pr:`16`, :pr:`17`) Added new Pydantic models for Molecules, Results, and Optimizations to make common objects used in the QCArchive project all exist in one central, always imported module.
- (:pr:`13`) Function
util.unnp
that recursively list-ifies ndarray in a dict now handles lists and flattens.
- (:pr:`12`) Adds "connectivity" validation and storage consistent with QCSchema.
- (:pr:`12`) Adds single dictionary provenance consistent with QCSchema (line 23) rather than previous list o'dicts.
- (:pr:`10`) Adds covalent radii data available through
covalentradii.get(atom)
function. - (:pr:`10`) Adds
to_units(unit)
toDatum
class to access the data in non-native units. - (:pr:`10`) Adds
periodictable.to_period(atom)
andto_group(atom)
functions to address periodic table.
- (:pr:`7`, :pr:`9`) Adds "comment" and "provenance" fields to internal repr to better match QCSchema.
- (:pr:`7`) Adds provenance stamp to
from_string
,from_arrays
,from_schema
functions.
- (:pr:`7`) Adds outer schema_name/schema_version to
to_schema(..., dtype=1)
output so is inverse tofrom_schema
.
- (:pr:`8`) Tests pass for installed module now that comparison tests are xfail.
This is the first alpha release of QCElemental containing the primary three components.
- (:pr:`6`) Updated molparse to write new Molecule QCSchema fields in keeping with GH:MolSSI/QCSchema#44
- Periodic Table data from NIST SRD144 (c. pre-2015?) collected into
qcelemental.periodictable
instance, with accessorsto_Z
,to_element
,to_E
,to_mass
,to_A
(and redundant accessorsto_mass_number
,to_atomic_number
,to_symbol
,to_name
) infloat
andDecimal
formats. Also includes functionality to write a corresponding "C" header. - Physical Constants data from NIST SRD121 (CODATA 2014) collected into
qcelemental.constants
instance, with access throughqcelemental.constants.Faraday_constant
(exact capitalization;float
result) orget
(free capitalization;float
orDecimal
result). Also includes functionality to write a corresponding "C" header. molparse
submodule wherefrom_string
,from_array
,from_schema
constructors parse and rearrange (if necessary) and validate molecule topology inputs from the QC and EFP domains into a QCSchema-like data structure. Current deficiencies from QCSchema are non-contiguous fragments and "provenance" fields. Accessorsto_string
andto_schema
are highly customizable.- A pint context has been built around the NIST physical constants
data so that
qcelemental.constants.conversion_factor(from_unit, to_unit)
uses the QCElemental values in its conversions. Resultingfloat
is within uncertainty range of NIST constants but won't be exact for conversions involving multiple fundamental dimensions orwavelength -> energy != 1 / (energy -> wavelength)
.