Skip to main content

Asymptotic classification of transition-state normal modes via projection onto roto-translational internal coordinates

Project description

PORTICO

Projection Onto Roto-Translational Internal COordinates

+------------------------------------+
|                   _   _            |
|  _ __   ___  _ __| |_(_) ___ ___   |
| | '_ \ / _ \| '__| __| |/ __/ _ \  |
| | |_) | (_) | |  | |_| | (_| (_) | |
| | .__/ \___/|_|   \__|_|\___\___/  |
| |_|                                |
+------------------------------------+

PORTICO is a Python program for the asymptotic classification of transition-state normal modes. For a dissociation channel

R  →  TS‡  →  P1 + P2

some of the normal modes that are vibrational at the saddle point evolve asymptotically into rotations or translations of the product fragments. PORTICO identifies these transitional modes automatically, with no manual inspection of normal-mode animations and no propagation of the reaction path toward the products.

How it works

PORTICO builds a redundant internal-coordinate representation of the transition state that explicitly separates two classes of motion:

  • {q}v — internal coordinates describing the vibrations of the product fragments (generated automatically for each isolated product and verified for completeness against its Cartesian frequencies);
  • {q}t,r — displacement vectors representing the translations and rotations of the fragments embedded in the transition-state geometry.

The transition-state normal modes are expressed in this mixed basis by solving the Wilson GF problem, and each mode i is assigned a scalar projection Ωi ∈ [0, 1] measuring the contribution of the roto-translational subspace. Combined with the dimensionality of the product channel, the Ωi values identify the transitional modes — those that correlate with rotations and relative translations of the separating fragments.

Channels leading to atomic, linear, and non-linear fragments are treated on the same footing.

Requirements

  • Python ≥ 3.8
  • numpy, scipy, matplotlib, ase

Installation

From PyPI

pip install cathpkg-portico

From GitHub

pip install git+https://github.com/cathedralpkg/portico.git

In a conda environment

conda create -n portico python=3.11
conda activate portico
pip install cathpkg-portico

Any of the above installs the portico and gaussian2gts commands in your PATH. Alternatively, the two scripts (portico.py, gaussian2gts.py) are self-contained and can simply be downloaded and run with python3 provided the dependencies are available.

Usage

portico -h                       # help
portico --input                  # create an example input file
portico channel.inp              # run the classification
portico channel.inp --plot       # ... and plot the Omega_i weights
portico -v                       # program version

Input file

# Files with the electronic-structure data (gts format)
file_saddle   TS.gts        # transition state
file_product1 P1.gts        # product fragment 1
file_product2 P2.gts        # product fragment 2

# Thresholds (optional; default values shown)
eps_conn 1.30               # bonding threshold
eps_ccic 6.00               # frequency tolerance (cm-1)

# Atom mapping: product atom <--> TS atom (1-based)
product1:
1 1
2 2
3 3
4 4
end
product2:
1 5
2 6
end

The required data for the transition state and for each optimized product are: geometry, Cartesian Hessian, charge/multiplicity and energy, provided in gts format. The atom mapping defines which atom of the transition state corresponds to each atom of the products.

Converting Gaussian outputs to gts

The helper script gaussian2gts converts a Gaussian log file (from a freq calculation) into a gts file:

gaussian2gts TS.log        # creates TS.gts
gaussian2gts P1.log        # creates P1.gts
gaussian2gts P2.log        # creates P2.gts

If you use a different electronic-structure package, write an analogous converter producing the gts format (a simple, documented plain-text format; see the header of any generated file).

Output

PORTICO prints the Ωi projection of every real-frequency normal mode of the transition state, sorted by weight, and identifies the transitional modes of the channel. With --plot, a bar chart of the weights is also generated:

      freq (cm^-1)   Omega_i
    --------------------------
        -1531.2        ifreq   [roto-translational]
         1266.7        0.955   [roto-translational]
         2210.0        0.954   [roto-translational]
          812.1        0.934   [roto-translational]
          715.0        0.907   [roto-translational]
         1644.3        0.706
         1166.2        0.537
         ...

Citation

If you use PORTICO in your work, please cite:

D. Ferro-Costas, PORTICO: Projection Onto Roto-Translational Internal COordinates — a program for the asymptotic classification of transition-state normal modes, submitted (2026).

License

Distributed under the MIT license. See LICENSE for details.

Author

David Ferro-Costas — Universidade de Santiago de Compostela (ORCID 0000-0002-8365-4047)

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

cathpkg_portico-2026.0.post3.tar.gz (34.5 kB view details)

Uploaded Source

Built Distribution

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

cathpkg_portico-2026.0.post3-py3-none-any.whl (35.3 kB view details)

Uploaded Python 3

File details

Details for the file cathpkg_portico-2026.0.post3.tar.gz.

File metadata

  • Download URL: cathpkg_portico-2026.0.post3.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for cathpkg_portico-2026.0.post3.tar.gz
Algorithm Hash digest
SHA256 3436d09663bc532ad4c86a7702cc7866ca1888138765632bde9cdb652238b750
MD5 be9b974ebb45f099aee846bc9a0aac27
BLAKE2b-256 bf09d68bb551f7cc51e59849f3aabb95c083854829259fa4d68671a8079ff507

See more details on using hashes here.

File details

Details for the file cathpkg_portico-2026.0.post3-py3-none-any.whl.

File metadata

File hashes

Hashes for cathpkg_portico-2026.0.post3-py3-none-any.whl
Algorithm Hash digest
SHA256 ef33d91ced3684b475529ea3c5ff949a2f4a6cd639bef5ffd2fb905dbf3b7db5
MD5 f921d925501439260ea2e602704d098a
BLAKE2b-256 0b6d4419c978e199563ccd50358f845b18ca1ecbb42e39718f8184959062a9f1

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