Skip to main content

Calculation of electronic aromaticity indicators

Project description

The ESIpy program is aimed at the calculation of population analysis and aromaticity indicators from different Hilbert-space partitions using the PySCF module. The program supports both restricted and unrestricted calculations for single-determinant wavefunctions, and correlated wavefunctions from a restricted object (RHF). The atomic partitions supported by the program are Mulliken, Löwdin, meta-Löwdin, Natural Atomic Orbitals (NAO), and Intrinsic Atomic Orbita ( IAO).

The on-line documentation can be found here.

Citation

All the calculations performed for the creation and implementation of this program have been conducted in the following scientific paper:

Joan Grèbol-Tomàs, Eduard Matito, Pedro Salvador, Chem. Eur. J. 2024, 30, e202401282.

Also, find it on-line here. If you are publishing the results obtained from ESIpy, remember to cite the program. The code is licensed under the GNU GPLv3. See the LICENSE file for details. See the on-line documentation for details on how to use the program. If you encounter any bugs, please feel free to report them on the Issues page, or send an email to joan.grebol@dipc.org.

Installation

ESIpy can be installed through:

pip install esipython

The latest stable version can be obtained through:

pip upgrade esipython

The latest non-stable version available on Github can be obtained through:

pip install --upgrade git+https://github.com/jgrebol/ESIpy.git

For a detailed explanation on how to run the code and how to customize it, please see the documentation.

Getting started

ESIpy works on the object ESI, which will contain all the information required for the calculation. It is recommended to initialize the object with all the data, rather than adding it once the initialization process is finished.

The simplest form of input follows a usual PySCF calculation

    from pyscf import gto, dft
    import esipy

    mol = gto.Mole()
    mol.atom = '''
    6        0.000000000      0.000000000      1.393096000
    6        0.000000000      1.206457000      0.696548000
    6        0.000000000      1.206457000     -0.696548000
    6        0.000000000      0.000000000     -1.393096000
    6        0.000000000     -1.206457000     -0.696548000
    6        0.000000000     -1.206457000      0.696548000
    1        0.000000000      0.000000000      2.483127000
    1        0.000000000      2.150450000      1.241569000
    1        0.000000000      2.150450000     -1.241569000
    1        0.000000000      0.000000000     -2.483127000
    1        0.000000000     -2.150450000     -1.241569000
    1        0.000000000     -2.150450000      1.241569000
    '''
    mol.basis = 'sto-3g'
    mol.spin = 0
    mol.charge = 0
    mol.symmetry = True
    mol.verbose = 0
    mol.build()

    mf = dft.KS(mol)
    mf.kernel()

    ring = [1, 2, 3, 4, 5, 6]
    arom = esipy.ESI(mol=mol, mf=mf, rings=ring, partition="nao")
    arom.print()

To avoid the single-point calculation, the attributes saveaoms and savemolinfo will save the AOMs and a dictionary containing information about the molecule and calculation into a binary file in disk. Hereafter, these will be accessible at any time. It is also recommended to use a for-loop scheme for all the partitions, as the computational time to generate the matrices is minimal and independent of the chosen scheme.

    ring = [1, 2, 3, 4, 5, 6]
    name = "benzene"
    for part in ["mulliken", "lowdin", "meta_lowdin", "nao", "iao"]:
        aoms_name = name + '_' + part + '.aoms'
        molinfo_name = name + '_' + part + '.molinfo'
        arom = esipy.ESI(mol=mol, mf=mf, rings=ring, partition=part, saveaoms=aoms_name, savemolinfo=molinfo_name)
        arom.print()

Additionally, one can generate a directory containing the AOMs in AIMAll format. These files are readable from ESIpy, but also from Eduard Matito's ESI-3D code. These are written through the method writeaoms():

    arom = esipy.ESI(mol=mol, mf=mf, rings=[1,2,3,4,5,6], partition="nao")
    arom.writeaoms("benzene_nao")

Further work

  • Approximations for the MCI calculation in large systems.
  • Read the AOMs (or the data required for their calculation) from other source programs and store them as ESIpy Smo.
  • Calculation of aromaticity indicators from defined fragments.
  • Split the calculation into orbital contributions.
  • Algorithm to automatically find the rings inside a system.
  • Adaptation of some indicators to non-closed circuits (e.g., linear chains).

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

ESIpython-1.0.3.tar.gz (43.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ESIpython-1.0.3-py3-none-any.whl (43.0 kB view details)

Uploaded Python 3

File details

Details for the file ESIpython-1.0.3.tar.gz.

File metadata

  • Download URL: ESIpython-1.0.3.tar.gz
  • Upload date:
  • Size: 43.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.12

File hashes

Hashes for ESIpython-1.0.3.tar.gz
Algorithm Hash digest
SHA256 3859887a980cb0e07d84e5b372bdf8bf6dfa1141ae73705b0322834370a5751c
MD5 d80c04cb09bfb0439494635d9ac03bbf
BLAKE2b-256 6726e07ab0949192883c8b6b4a8df4f09c1473f43e90976a9d58205db5d943f3

See more details on using hashes here.

File details

Details for the file ESIpython-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: ESIpython-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 43.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.8.0 colorama/0.4.4 importlib-metadata/4.6.4 keyring/23.5.0 pkginfo/1.8.2 readme-renderer/34.0 requests-toolbelt/0.9.1 requests/2.25.1 rfc3986/1.5.0 tqdm/4.57.0 urllib3/1.26.5 CPython/3.10.12

File hashes

Hashes for ESIpython-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 694b142ee29fcc58f4f8dd8185c9ef2218dbdae6037c315ba8096ddefc690e02
MD5 375f00097be8603e3af5402c6107a5fa
BLAKE2b-256 97c458483c97359b5b0a2644fece160f909143d705951bd0703fa5e6311e7470

See more details on using hashes here.

Supported by

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