Various ORCA 6 tools
Project description
Blackfish 🐋
Blackfish is a Python library for parsing and visualizing ORCA quantum chemistry output files. It provides an easy-to-use interface for extracting spectral data and generating publication-quality plots using Altair.
Features
- Parse ORCA output files for:
- IR spectra
- Spin-orbit coupling (SOC) states
- SOC absorption spectra
- Non-adiabatic coupling matrix elements (NACME)
- Electronic excited states
- Generate interactive visualizations:
- IR spectra plots
- SOC absorption spectra with Gaussian broadening
- Peak detection and labeling
- Interactive UI components using Marimo for spectrum analysis
Installation
pip install blackfish
Quick Start
from blackfish import ORCA
# Load ORCA output file
orca = ORCA("my_calculation.out")
# Access different types of data as Polars DataFrames
ir_data = orca.ir_spectrum
soc_data = orca.soc_states
nacme_data = orca.nacme
roots_data = orca.roots
absorption_data = orca.soc_absorption_spectrum
# Get SOC absorption spectrum with Gaussian broadening
soc_chart = orca.soc_absorption_spectrum_chart(
fwhm=2000, # Gaussian broadening FWHM
peaks=True, # Show peak markers
peak_threshold=0.3 # Minimum peak threshold
)
Examples
IR Spectrum Analysis
# Get IR spectrum data
ir_data = orca.ir_spectrum
# View strongest vibrational modes
strongest_modes = ir_data.filter(pl.col("rel_intensity") > 0.5)
print(strongest_modes)
# Get frequencies above 3000 cm⁻¹
high_freq = ir_data.filter(pl.col("frequency_cm") > 3000)
print(high_freq)
Electronic State Analysis
# Get excited state data
roots = orca.roots
# Group transitions by multiplicity
by_mult = roots.group_by("mult").agg([
pl.count(),
pl.mean("energy_cm").alias("avg_energy")
])
SOC States Analysis
# Get SOC states
soc = orca.soc_states
# Get contributions to specific SOC state
state1 = soc.filter(pl.col("state") == 1)
# Find states with large spin mixing
mixed_states = soc.filter(pl.col("weight") > 0.2)
# Summarize spin components per state
spin_summary = soc.group_by("state").agg([
pl.n_unique("spin").alias("n_spin_components"),
pl.max("weight").alias("max_contribution")
])
NACME Analysis
# Get non-adiabatic coupling elements
nacme = orca.nacme
# Find atoms with strong coupling
strong_coupling = nacme.filter(pl.col("magnitude") > 0.1)
# Get coupling vectors for specific atoms
h_atoms = nacme.filter(pl.col("symbol") == "H")
# Sort atoms by coupling magnitude
sorted_coupling = nacme.sort("magnitude", descending=True)
SOC Absorption Spectrum Analysis
# Get absorption spectrum
abs_spec = orca.soc_absorption_spectrum
# Find intense transitions
intense = abs_spec.filter(pl.col("rel_intensity") > 0.5)
# Get visible region transitions
visible = abs_spec.filter(
(pl.col("wavelength_nm") >= 380) &
(pl.col("wavelength_nm") <= 700)
)
# Summarize by spin multiplicity
by_mult = abs_spec.group_by("mult").agg([
pl.count(),
pl.mean("energy_ev").alias("avg_energy"),
pl.max("osc_strength").alias("max_intensity")
])
Data Structure
Blackfish uses Polars DataFrames for efficient data handling. Common DataFrame schemas include:
IR Spectrum
mode: Vibrational mode numberfrequency_cm: Frequency in cm⁻¹intensity: IR intensityrel_intensity: Normalized intensitytx/ty/tz: Transition dipole components
Excited States (Roots)
root: State numbermult: Spin multiplicitydonor: Donor orbitalacceptor: Acceptor orbitalweight: Configuration weightenergy_cm: Energy in cm⁻¹
SOC States
state: SOC state numberspin: Spin componentroot: Contributing root stateweight: State contribution weightenergy_cm: Energy in cm⁻¹
NACME
id: Atom indexsymbol: Atomic symbolx/y/z: Coupling vector componentsmagnitude: Total coupling magnitude
SOC Absorption Spectrum
state: Final state numbermult: State multiplicityenergy_ev: Transition energy in eVenergy_cm: Energy in cm⁻¹wavelength_nm: Wavelength in nmosc_strength: Oscillator strengthrel_intensity: Normalized intensity
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the Apache2.0 License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file blackfish-0.2.8.tar.gz.
File metadata
- Download URL: blackfish-0.2.8.tar.gz
- Upload date:
- Size: 633.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d638ed16352ddfd205758371f091f57f042a67cb6dc5a9644423b5feed36bd1b
|
|
| MD5 |
7e407f848c293a55922a8a1de1479c61
|
|
| BLAKE2b-256 |
864dfd120c0d30020efc3fe6f2bae8deac4d980b3a1c070ba49d36057777d8b6
|
File details
Details for the file blackfish-0.2.8-py3-none-any.whl.
File metadata
- Download URL: blackfish-0.2.8-py3-none-any.whl
- Upload date:
- Size: 36.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.20
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
477f0f268a44ee262c10b0d9fa74dcfa65101a6665b9e2b56890a90c75f6a2cb
|
|
| MD5 |
717383daeb5c4fbe6445d20009f63c04
|
|
| BLAKE2b-256 |
de39eb28e47ffe8c23b743ef5bfd139d3a294de50979eee6514173249e3ef606
|