molsystem


Namemolsystem JSON
Version 2024.5.8 PyPI version JSON
download
home_pagehttps://github.com/molssi-seamm/molsystem
Summarymolsystem
upload_time2024-05-08 16:45:30
maintainerNone
docs_urlNone
authorPaul Saxe
requires_pythonNone
licenseGNU Lesser General Public License v3 or later (LGPLv3+)
keywords molsystem seamm
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            =============
MolSystem
=============

.. image:: https://img.shields.io/github/issues-pr-raw/molssi-seamm/dftbplus_step
   :target: https://github.com/molssi-seamm/molsystem/pulls
   :alt: GitHub pull requests

.. image:: https://github.com/molssi-seamm/molsystem/workflows/CI/badge.svg
   :target: https://github.com/molssi-seamm/molsystem/actions
   :alt: Build Status

.. image:: https://codecov.io/gh/molssi-seamm/molsystem/branch/master/graph/badge.svg
   :target: https://codecov.io/gh/molssi-seamm/molsystem
   :alt: Code Coverage

.. image:: https://github.com/molssi-seamm/molsystem/workflows/CodeQL/badge.svg
   :target: https://github.com/molssi-seamm/molsystem/security/code-scanning
   :alt: Code Quality


.. image:: https://github.com/molssi-seamm/molsystem/workflows/Release/badge.svg
   :target: https://molssi-seamm.github.io/molsystem/index.html
   :alt: Documentation Status

.. image:: https://img.shields.io/pypi/v/molsystem.svg
   :target: https://pypi.python.org/pypi/molsystem
   :alt: PyPi VERSION

Description
-----------
Molsystem provides a general class for handling molecular and periodic systems. This is
the heart of SEAMM.

* Free software: GNU Lesser General Public License v3+
* Documentation: https://molsystem.readthedocs.io.


Features
--------

* Supports molecular and periodic (crystalline) systems.
* Support for pointgroup and spacegroup symmetry.
* Implemented as a SQL database, currently using SQLite, which provides permanence and a
  disk file.
* Handles multiple systems, and for each system any number of
  configurations. Configurations are different structures, generally having different
  coordinates. Examples are conformers or frames in an MD trajectory.
* Configurations can have differing bonds, supporting reactive forcefields such as
  ReaxFF.
* Configurations can also have differing numbers of atoms, supporting e.g. grand
  canonical Monte Carlo.
* Support for templates and subsets. Templates can be used for creating or finding
  structures in systems and subsets hold substes of atoms. An atom can be in multiple
  subsets. For proteins, subsets can be used for residues and chains; for polymers,
  monomers; and for fluids the subsets can track individual molecules.
* Subsets and templates handle the correspondance between atoms so if, for instance, the
  ordering of atoms in residues are different, that can be handled using the
  correspondances.
* Direct connection to and support of RDKit and OpenBabel molecules, allowing direct
  transfer back and forth between configurations and those libraries.
* Properties of systems and configurations are stored in fact tables of integers,
  floats, strings, and JSON, using a star schema. One of the dimensions is metadata
  describing the property. This data warehousing approach is almost identical to that
  used in CIF files, with the metadata being the CIF dictionaries.
* Good support of CIF files, with the ability to store data other than the actual atoms
  using the properties warehouse.
* Direct support for SMILES, SMARTS and substructure searching.
* Scales to millions of systems and configurations, and databases in excess of 100 GB.

Credits
---------

This package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.

.. _Cookiecutter: https://github.com/audreyr/cookiecutter
.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage


Developed by the Molecular Sciences Software Institute (MolSSI_),
which receives funding from the `National Science Foundation`_ under
award OAC-1547580 and CHE-2136142.

.. _MolSSI: https://www.molssi.org
.. _`National Science Foundation`: https://www.nsf.gov


=======
History
=======
2024.5.8 -- Added more control over RDKit and OpenBabel creating systems
    * Added control to from_RDKMol and from_OBMol to allow selectively updating
      the atoms, coordinates, and bonds
      
2024.5.6 -- Rotated molecule from SMILES, InChI, or InChIKey to standard orientation
    * Molecules created from line notation are created in an random orientation. This
      enhancement rotates them to the standard orientation, which will look nice for
      small, symmetric molecules.
      
2024.5.5 -- Bugfix: bonds in RDKit
    * There was an indexing bug translating bonds back from RDKit to SEAMM. The famous
      0/1 problem!
      
2024.4.6 -- Added gradients
    * Added gradient on atoms as a separate table alongside atoms, so they take no space
      unless actually used.
      
2024.3.13 -- Handle uppercase X, Y, Z in strings for symmetry operators
    * the Crystallographic Open Database CIF files seems to use upper case X, Y, Z in
      explicit symmetry operators. These need to be lowercased in the code.

2023.12.5 -- Bugfixes for symmetry
    * Fixed issue #72, where symmetry was not correctly handled for trigonal and
      hexagonal cells where atoms had coordinates of 1/3 or 2/3.

2023.11.19 -- Bugfixes in symmetry and CIF files
    * Reading CIF files could fail if the symmetry operators were given
    * The symmetry handling did not recognize hexagonal spacegroups without :H. Changed
      so if the hexagonal group name has neither :H or :R, the hexagonal setting is
      assumed.
    * When finding the spacegroup from the symmetry operators, hard-coded to the P1 case
      to avoid what seems like a bug in spglib.
    * Enhanced to use the full International Tables HM name for spacegroups, translating
      the input to that standard name.
      
2023.11.5 -- Bugfix and improved symmetry handling
    * Fixed bug with symmetry operators containing blanks, e.g. 'x, y, z' rather than
      'x,y,z'
    * Added handling of symmetry when get properties of atoms
    * Added method to lower symmetry to P1/C1

2023.10.30 -- Support for InChI improved, RMSD and PubChem added...
    * Adds support for aligning structures and calculating RMSD
    * Adds support for working directly with PubChem to get structures, IUPAC names,
      etc.
    * Improves support for InChI, working around issues in both OpenBabel and RDKit.
    * Added substantial new functionality for spacegroups and primitive cell handling,
      but still not complete.

2023.9.20 -- Better support for primitive cells and spacegroups
    * Added getting the spacegroup from the symmetry operators
    * Fixed updating the coordinates from the primitive cell

2023.9.5 -- Support for velocities of atoms.

2023.8.30 -- Support for spacegroup symmetry.

2023.8.27 -- Bugfix: writing SDF did not handle charge and multiplicity.

2023.7.30 -- Improved handling of properties
    * Added ability to get lists of systems or configurations filtered by name
    * Improved handling of properties on just a system, not configuration
    * Added ability to filter properties retrieved
    * Improved handling of properties when creating OpenBabel OB_MOL object
      
2023.7.26 -- Bugfix: error in QCSchema bonds; enhancement: RDKit
    * Fixed bug in the bond indices in QCSchema
    * Added ability to use RDKit for SMILES and InChI

2023.7.18.1 -- Added support for creating structures from InChIKeys
    * Uses PubChem to translate the InChiKey to InChI.
       
2023.7.18 -- Added support for InChI and InChIKeys

2023.7.9 -- Added JSON properties
    * Added properties stored as JSON, which allows, vectors, tensors, etc.
      
2023.4.6 -- Enhancements for CIF files
    * Handle uncertainties in CIF files expressed as '(x)' at end of value.

2023.3.30 -- Enhancements to QCSchema support
    * Improved naming of molecule in QCSchema
    * Added creation of configurations from QCSchema objects.

2023.2.13 -- Fixed issue with valence in RDkit for cations like NH4+

2022.11.20 -- Added a method to copy a configuration.
  Added a new method to the `system` class, `copy_configuration`, that creates a copy of
  the configuration using the same atomset and bonset, but new coordinates and cell so
  that any changes to coordinates and cell are not shared between the configurations. By
  default it copies the current configuration.

2022.11.18 -- Fixed bug with handling for Open Babel
  The total charge and multiplicity were not correctly set when creating an Open Babel
  molecule.

2022.11.3 -- Add handling of strain and improved handling of properties
  Added methods for straining the unit cell, and also straining a configuration,
  correctly handling the coordinates for an affine transformation. In the future will
  add e.g. affine transformation of the centers of molecules, which is useful for
  molecular fluids.

  Added the system for properties, in addition to the configuration. This allows system
  properties that are not associated with a particular configuration, which is often
  appropriate for experimental results. It also makes it much easier to search for
  systems where any configuration has a particular property.

2022.10.26 -- Improved database write performance.
  Switched to write-ahead mode and tweaked memory settings. This gives a large
  performance improvement (10x or more) for large database (~1 GB).

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/molssi-seamm/molsystem",
    "name": "molsystem",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "molsystem, SEAMM",
    "author": "Paul Saxe",
    "author_email": "psaxe@molssi.org",
    "download_url": "https://files.pythonhosted.org/packages/88/65/e0f72c04138f6044cdf281b659c0d89d471d30ef6f0a586ce5fe22ef8f5d/molsystem-2024.5.8.tar.gz",
    "platform": "Linux",
    "description": "=============\nMolSystem\n=============\n\n.. image:: https://img.shields.io/github/issues-pr-raw/molssi-seamm/dftbplus_step\n   :target: https://github.com/molssi-seamm/molsystem/pulls\n   :alt: GitHub pull requests\n\n.. image:: https://github.com/molssi-seamm/molsystem/workflows/CI/badge.svg\n   :target: https://github.com/molssi-seamm/molsystem/actions\n   :alt: Build Status\n\n.. image:: https://codecov.io/gh/molssi-seamm/molsystem/branch/master/graph/badge.svg\n   :target: https://codecov.io/gh/molssi-seamm/molsystem\n   :alt: Code Coverage\n\n.. image:: https://github.com/molssi-seamm/molsystem/workflows/CodeQL/badge.svg\n   :target: https://github.com/molssi-seamm/molsystem/security/code-scanning\n   :alt: Code Quality\n\n\n.. image:: https://github.com/molssi-seamm/molsystem/workflows/Release/badge.svg\n   :target: https://molssi-seamm.github.io/molsystem/index.html\n   :alt: Documentation Status\n\n.. image:: https://img.shields.io/pypi/v/molsystem.svg\n   :target: https://pypi.python.org/pypi/molsystem\n   :alt: PyPi VERSION\n\nDescription\n-----------\nMolsystem provides a general class for handling molecular and periodic systems. This is\nthe heart of SEAMM.\n\n* Free software: GNU Lesser General Public License v3+\n* Documentation: https://molsystem.readthedocs.io.\n\n\nFeatures\n--------\n\n* Supports molecular and periodic (crystalline) systems.\n* Support for pointgroup and spacegroup symmetry.\n* Implemented as a SQL database, currently using SQLite, which provides permanence and a\n  disk file.\n* Handles multiple systems, and for each system any number of\n  configurations. Configurations are different structures, generally having different\n  coordinates. Examples are conformers or frames in an MD trajectory.\n* Configurations can have differing bonds, supporting reactive forcefields such as\n  ReaxFF.\n* Configurations can also have differing numbers of atoms, supporting e.g. grand\n  canonical Monte Carlo.\n* Support for templates and subsets. Templates can be used for creating or finding\n  structures in systems and subsets hold substes of atoms. An atom can be in multiple\n  subsets. For proteins, subsets can be used for residues and chains; for polymers,\n  monomers; and for fluids the subsets can track individual molecules.\n* Subsets and templates handle the correspondance between atoms so if, for instance, the\n  ordering of atoms in residues are different, that can be handled using the\n  correspondances.\n* Direct connection to and support of RDKit and OpenBabel molecules, allowing direct\n  transfer back and forth between configurations and those libraries.\n* Properties of systems and configurations are stored in fact tables of integers,\n  floats, strings, and JSON, using a star schema. One of the dimensions is metadata\n  describing the property. This data warehousing approach is almost identical to that\n  used in CIF files, with the metadata being the CIF dictionaries.\n* Good support of CIF files, with the ability to store data other than the actual atoms\n  using the properties warehouse.\n* Direct support for SMILES, SMARTS and substructure searching.\n* Scales to millions of systems and configurations, and databases in excess of 100 GB.\n\nCredits\n---------\n\nThis package was created with Cookiecutter_ and the `audreyr/cookiecutter-pypackage`_ project template.\n\n.. _Cookiecutter: https://github.com/audreyr/cookiecutter\n.. _`audreyr/cookiecutter-pypackage`: https://github.com/audreyr/cookiecutter-pypackage\n\n\nDeveloped by the Molecular Sciences Software Institute (MolSSI_),\nwhich receives funding from the `National Science Foundation`_ under\naward OAC-1547580 and CHE-2136142.\n\n.. _MolSSI: https://www.molssi.org\n.. _`National Science Foundation`: https://www.nsf.gov\n\n\n=======\nHistory\n=======\n2024.5.8 -- Added more control over RDKit and OpenBabel creating systems\n    * Added control to from_RDKMol and from_OBMol to allow selectively updating\n      the atoms, coordinates, and bonds\n      \n2024.5.6 -- Rotated molecule from SMILES, InChI, or InChIKey to standard orientation\n    * Molecules created from line notation are created in an random orientation. This\n      enhancement rotates them to the standard orientation, which will look nice for\n      small, symmetric molecules.\n      \n2024.5.5 -- Bugfix: bonds in RDKit\n    * There was an indexing bug translating bonds back from RDKit to SEAMM. The famous\n      0/1 problem!\n      \n2024.4.6 -- Added gradients\n    * Added gradient on atoms as a separate table alongside atoms, so they take no space\n      unless actually used.\n      \n2024.3.13 -- Handle uppercase X, Y, Z in strings for symmetry operators\n    * the Crystallographic Open Database CIF files seems to use upper case X, Y, Z in\n      explicit symmetry operators. These need to be lowercased in the code.\n\n2023.12.5 -- Bugfixes for symmetry\n    * Fixed issue #72, where symmetry was not correctly handled for trigonal and\n      hexagonal cells where atoms had coordinates of 1/3 or 2/3.\n\n2023.11.19 -- Bugfixes in symmetry and CIF files\n    * Reading CIF files could fail if the symmetry operators were given\n    * The symmetry handling did not recognize hexagonal spacegroups without :H. Changed\n      so if the hexagonal group name has neither :H or :R, the hexagonal setting is\n      assumed.\n    * When finding the spacegroup from the symmetry operators, hard-coded to the P1 case\n      to avoid what seems like a bug in spglib.\n    * Enhanced to use the full International Tables HM name for spacegroups, translating\n      the input to that standard name.\n      \n2023.11.5 -- Bugfix and improved symmetry handling\n    * Fixed bug with symmetry operators containing blanks, e.g. 'x, y, z' rather than\n      'x,y,z'\n    * Added handling of symmetry when get properties of atoms\n    * Added method to lower symmetry to P1/C1\n\n2023.10.30 -- Support for InChI improved, RMSD and PubChem added...\n    * Adds support for aligning structures and calculating RMSD\n    * Adds support for working directly with PubChem to get structures, IUPAC names,\n      etc.\n    * Improves support for InChI, working around issues in both OpenBabel and RDKit.\n    * Added substantial new functionality for spacegroups and primitive cell handling,\n      but still not complete.\n\n2023.9.20 -- Better support for primitive cells and spacegroups\n    * Added getting the spacegroup from the symmetry operators\n    * Fixed updating the coordinates from the primitive cell\n\n2023.9.5 -- Support for velocities of atoms.\n\n2023.8.30 -- Support for spacegroup symmetry.\n\n2023.8.27 -- Bugfix: writing SDF did not handle charge and multiplicity.\n\n2023.7.30 -- Improved handling of properties\n    * Added ability to get lists of systems or configurations filtered by name\n    * Improved handling of properties on just a system, not configuration\n    * Added ability to filter properties retrieved\n    * Improved handling of properties when creating OpenBabel OB_MOL object\n      \n2023.7.26 -- Bugfix: error in QCSchema bonds; enhancement: RDKit\n    * Fixed bug in the bond indices in QCSchema\n    * Added ability to use RDKit for SMILES and InChI\n\n2023.7.18.1 -- Added support for creating structures from InChIKeys\n    * Uses PubChem to translate the InChiKey to InChI.\n       \n2023.7.18 -- Added support for InChI and InChIKeys\n\n2023.7.9 -- Added JSON properties\n    * Added properties stored as JSON, which allows, vectors, tensors, etc.\n      \n2023.4.6 -- Enhancements for CIF files\n    * Handle uncertainties in CIF files expressed as '(x)' at end of value.\n\n2023.3.30 -- Enhancements to QCSchema support\n    * Improved naming of molecule in QCSchema\n    * Added creation of configurations from QCSchema objects.\n\n2023.2.13 -- Fixed issue with valence in RDkit for cations like NH4+\n\n2022.11.20 -- Added a method to copy a configuration.\n  Added a new method to the `system` class, `copy_configuration`, that creates a copy of\n  the configuration using the same atomset and bonset, but new coordinates and cell so\n  that any changes to coordinates and cell are not shared between the configurations. By\n  default it copies the current configuration.\n\n2022.11.18 -- Fixed bug with handling for Open Babel\n  The total charge and multiplicity were not correctly set when creating an Open Babel\n  molecule.\n\n2022.11.3 -- Add handling of strain and improved handling of properties\n  Added methods for straining the unit cell, and also straining a configuration,\n  correctly handling the coordinates for an affine transformation. In the future will\n  add e.g. affine transformation of the centers of molecules, which is useful for\n  molecular fluids.\n\n  Added the system for properties, in addition to the configuration. This allows system\n  properties that are not associated with a particular configuration, which is often\n  appropriate for experimental results. It also makes it much easier to search for\n  systems where any configuration has a particular property.\n\n2022.10.26 -- Improved database write performance.\n  Switched to write-ahead mode and tweaked memory settings. This gives a large\n  performance improvement (10x or more) for large database (~1 GB).\n",
    "bugtrack_url": null,
    "license": "GNU Lesser General Public License v3 or later (LGPLv3+)",
    "summary": "molsystem",
    "version": "2024.5.8",
    "project_urls": {
        "Homepage": "https://github.com/molssi-seamm/molsystem"
    },
    "split_keywords": [
        "molsystem",
        " seamm"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d1a65fa5ee7915ede6b5371d8d5b01483681c96c2c4d5c31ec1cba06abc23264",
                "md5": "fc9da139b4e2a20bc738882eb64514eb",
                "sha256": "c02ab09aad6be34baf2fc1cb558cb9fd93169e6649edc2e0092f046083e376c8"
            },
            "downloads": -1,
            "filename": "molsystem-2024.5.8-py2.py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "fc9da139b4e2a20bc738882eb64514eb",
            "packagetype": "bdist_wheel",
            "python_version": "py2.py3",
            "requires_python": null,
            "size": 119107,
            "upload_time": "2024-05-08T16:45:28",
            "upload_time_iso_8601": "2024-05-08T16:45:28.531644Z",
            "url": "https://files.pythonhosted.org/packages/d1/a6/5fa5ee7915ede6b5371d8d5b01483681c96c2c4d5c31ec1cba06abc23264/molsystem-2024.5.8-py2.py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8865e0f72c04138f6044cdf281b659c0d89d471d30ef6f0a586ce5fe22ef8f5d",
                "md5": "f1aea4335bf0c632bd41bee4dba13724",
                "sha256": "6dd5e2c63ab6cf51c7b98076daaad9e550592acb6bef47c9dc4f2dfb955eae4a"
            },
            "downloads": -1,
            "filename": "molsystem-2024.5.8.tar.gz",
            "has_sig": false,
            "md5_digest": "f1aea4335bf0c632bd41bee4dba13724",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 604106,
            "upload_time": "2024-05-08T16:45:30",
            "upload_time_iso_8601": "2024-05-08T16:45:30.255367Z",
            "url": "https://files.pythonhosted.org/packages/88/65/e0f72c04138f6044cdf281b659c0d89d471d30ef6f0a586ce5fe22ef8f5d/molsystem-2024.5.8.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-05-08 16:45:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "molssi-seamm",
    "github_project": "molsystem",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "tox": true,
    "lcname": "molsystem"
}
        
Elapsed time: 0.24401s