Skip to main content

A Python package to analyze magnetic molecular orbitals (SOMOs) from Gaussian outputs

Project description

SOMOs

Versions [0.9.0] - [1.0.0a] - 2024-04-27

Changed

  • logo is now gSOMOs instead of SOMOs
  • in the projection scheme (proj.py), there are now two criteria to identify a SOMO, namely "SOMO P2v?" (formerly SOMO?) and "SOMO dom. β MO?" (see scientific documentation)
    • SOMOs identified according to the P^2_virtual criterion are highlighted in green
    • SOMOs identified only on the basis of a dominant virtual beta MO are highlighted in orange (weaker criterion)
  • Scientific documentation renamed gSOMOs.pdf. And content updated
  • gSOMOs-v3.pdf scientific document now downloadable in gsomos.readthedocs.io
  • Images in README.md now point to their https://raw.githubusercontent.com counterpart
  • Update of DOCUMENTATION_setup.md, PUBLISHING.md
  • Link toward the Jupyter notebook with examples and a log zip file with two Gaussian logs in DOCUMENTATION_setup.md and in README.md

Added

  • new analyzis scheme in proj.py: bases on the diagonalization of projection matrices
  • new clean_logfile_name() function in io.py (made to solve a prefix issue for X.log.gz files)
  • Short examples in the documentation
  • docstring for projection_heatmap_from_df
  • docstring of show_alpha_to_homo translated in English
  • updated Installation section in README.md

Fixed

  • minor fixes
  • wrong initialization of visualID_Eng at the beginning of the notebook, and tricky issues

gSOMOs

🔗 Available on PyPI

A Python library to identify and analyze Single Occupied Molecular Orbitals (SOMOs) from Gaussian 09 or Gaussian 16 .log files.

PyPI version Documentation Status License Python Build


🛠️ Installation

⚡ Quickstart

  1. Open a terminal:
  • On Linux/macOS: open a Terminal (bash)

  • On Windows: open PowerShell

  1. (Recommended) Set up a local virtual environment inside your project folder using virtualenv.

    # Create, if necessary, a project folder
    mkdir my-project-folder
    
    # Move to your project directory
    cd my-project-folder
    
    # Create the virtual environment
    virtualenv gSOMOS-venv # or any other name that has nothing to do with gSOMOS
    
    # Activate the environment
    source gSOMOS-venv/bin/activate   # On Linux/macOS
    # or
    gSOMOS-venv\Scripts\activate      # On Windows
    
  2. Install gSOMOs inside the environment:

    pip install gSOMOs
    

📦 All necessary Python packages will be installed automatically !


📋 Requirements

  • 🐍 Python ≥ 3.8
  • 📦 A working installation of virtualenv
  • 🔄 An up-to-date version of pip (python -m pip install --upgrade pip)

📝 Notes

  • Keeping the virtual environment inside the project folder makes it easier to manage and remove if needed.

  • To deactivate the environment at any time, simply type:

    deactivate
    

🔎 Capabilities Overview

SOMOs is a Python toolkit for analyzing molecular orbitals (MOs) from Gaussian log files, with a focus on identifying SOMOs (Singly Occupied Molecular Orbitals) in open-shell systems.


🚀 Main Features

from somos import io # optional
from somos import cosim, proj

Load Gaussian Log Files

  • Parses .log and .log.gz Gaussian output files
  • Extracts orbital energies, coefficients, overlap matrices, and spin

Cosine Similarity & SOMO Detection

  • Computes cosine similarities between alpha and beta orbitals
  • Identifies SOMO candidates from orbital projections

Projection-Based Analysis

  • Projects occupied and virtual alpha MOs onto virtual beta MOs
  • Decomposes projection matrix to extract leading contributions

📊 Visualization Tools

Heatmaps

  • Interactive or static heatmaps of MO similarities
heatmap

t-SNE (Dimensionality Reduction)

  • Projects high-dimensional orbital space to 2D for visual exploration
  • Enables inspection of orbital families and similarity patterns
tSNE

📁 Output

  • .xlsx tables of SOMO similarity and projections
  • .png images of heatmaps and projections
  • All results saved in the logs/ folder
  • well-organized dataframes and printing
=== Summary of SOMO candidates ===

──────────── SOMO Candidate #1 ────────────
  α occupied contributions:
    • α 187 (44.2%)
    • α 164 (27.3%)
  β virtual projections:
    • β 194 (73.3%)
    • β 196 (16.1%)

──────────── SOMO Candidate #2 ────────────
  α occupied contributions:
    • α 169 (41.1%)
    • α 186 (21.6%)
    • α 165 (15.7%)
  β virtual projections:
    • β 192 (53.1%)
    • β 193 (26.9%)

──────────── SOMO Candidate #3 ────────────
  α occupied contributions:
    • α 186 (30.0%)
  β virtual projections:
    • β 198 (73.0%)

──────────── SOMO Candidate #4 ────────────
  α occupied contributions:
    • α 168 (51.8%)
    • α 183 (16.3%)
  β virtual projections:
    • β 193 (41.6%)
    • β 192 (26.7%)

🧠 Examples and Documentation

✅ Examples Used in Notebooks (compressed Gaussian files)

  • logs/H2CO_T1.log.gz
  • logs/FeComplex.log.gz

📓 Example Jupyter Notebook

An example notebook demonstrating gSOMOs usage is available at: gSOMOs Examples Notebook on GitHub. Save it in my-project-folder.

Also download the logs/ folder with the two examples. Store it also in my-project-folder.


📚 Technical and scientific documentation

This document describes two complementary methods to identify singly occupied molecular orbitals (SOMOs) in open-shell systems:

  • Orbital projection analysis, where occupied α orbitals are projected onto the β orbital basis using the AO overlap matrix;
  • Cosine similarity mapping, which computes the angular similarity between α and β orbitals and matches them using the Kuhn–Munkres (Hungarian) algorithm.

The two examples, which involve finding the SOMOs of the lowest triplet state (T1) of formaldehyde (H2CO) and the lowest quintet state of an iron complex, are discussed in this document.


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

gsomos-1.0.0a0.tar.gz (48.4 MB view details)

Uploaded Source

Built Distribution

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

gsomos-1.0.0a0-py3-none-any.whl (5.3 MB view details)

Uploaded Python 3

File details

Details for the file gsomos-1.0.0a0.tar.gz.

File metadata

  • Download URL: gsomos-1.0.0a0.tar.gz
  • Upload date:
  • Size: 48.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for gsomos-1.0.0a0.tar.gz
Algorithm Hash digest
SHA256 8ac640199d3f794c793076fe0be18a98df121f1bd0d54d8d44d38fd87f98d856
MD5 c073e1ff9c500ae8854d771e93428240
BLAKE2b-256 4cab5bd82e4d58f4c10908172fdf7b78174e4c10ce77ad1cf3483ab6fee79665

See more details on using hashes here.

File details

Details for the file gsomos-1.0.0a0-py3-none-any.whl.

File metadata

  • Download URL: gsomos-1.0.0a0-py3-none-any.whl
  • Upload date:
  • Size: 5.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.12

File hashes

Hashes for gsomos-1.0.0a0-py3-none-any.whl
Algorithm Hash digest
SHA256 5b39afb236ddc0c79ec5bb5dbcbbc2d131e1426bc79ea1355141974303f21510
MD5 eab518158f04742c4114a9252cabdc5d
BLAKE2b-256 215ce96098ba126f094f872b3bbecab59993c83422a0ec0e745c27cb1b7e072f

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