Package: quantarhei
QUANTArhei: Open Quantum System Theory for Molecular SystemsQuantarhei is a Molecular Open Quantum Systems Simulator written predominantly
in Python. Its name is derived from the famous aphorism “Panta rhei” of the
Greek philosopher Heraclitus of Ephesus. “Panta rhei” means “Everything flows”
or “Everything is in flux” which is quite fitting when you change Panta into
Quanta.In “Quantarhei” the last four letters (“rhei”) should be written in Greek,
i.e. (using LateX convention) “\rho \epsilon \iota”.Quantarhei is in flux, but it already provides helper classes to define
molecules, their aggregates and their interaction with external environment.
It can calculate absorption spectra of individual molecules and their
aggregates and excitation energy transfer dynamics using various types
of Redfield and Foerster theories.Quantarhei provides Python code (optimized with Numpy) for all its implemented
methods and theories, and allows extensions and replacements of the reference
Python code with optimised routines written in C, Fortran or other lower level
languages.In the first development stage, we concentrate on bringing to you tools
to quickly build essential components of a quantum mechanical simulation,
such as Hamiltonian, relaxation tensors, various initial
conditions for density matrix etc.Quantarhei is at its experimental stage.
Current version isQuantarhei is available in source form on GitHub and from PyPI for installation
with the pip command.AcknowledgementsThe work on Quantarhei is supported byNeuron Fund for Support of Sciencethrough the Impuls grant in physics 2014 (2015-2017)andCzech Science Foundation (GACR)through grants: 14-25752S (2014-2016), 17-22160S (2017-2019) and 18-18022S (2018-2020)New in 0.0.65for users:bug fixesNew in 0.0.64for users:use cases introduced for input filesbug fixesNew in 0.0.63for users:bug fixesNew in 0.0.62for users:_input_file_ variable defined in scripts run through qrhei run commandassert_version() function definedbug fixesNew in 0.0.61for users:bug fixesNew in 0.0.60for users:bug fixesNew in 0.0.59for users:bug fixesNew in 0.0.58for users:Many bug fixesNew in 0.0.57for users:Bug fixesNew in 0.0.56for users:Bug fixesNew in 0.0.55for users:A bug in 2D lineshapes of ESA calculated by MockTwoDSpectrumCalculator fixedOther bug fixesNew in 0.0.54for users:TwoDSpectra can be added if they are of the same typeBug fixesNew in 0.0.53for users:Improved handling of rotating wave approximation (RWA) for density matrix and the state vectorBug fixesNew in 0.0.52for users:Improved control over parallelization from command line byqrheioptionsParallelization over multiple nodsBug fixesNew in 0.0.51for users:Bug fixesNew in 0.0.50for users:Some improvement of theqrheidriverImproved logging capabilities; standard print function can be replaced printlog functionBug fixesNew in 0.0.49for users:Runnable .yaml configuration filesBetter diagnostics of errors occuring while running a script by qrhei driverNew qrhei subcommand file, which shows information about files saved by QuantarheiBug fixesfor developers:Started work on a script compiler qtaskNew in 0.0.48for users:Bug fixesNew in 0.0.47for users:Bug fixes2D spectra can be shifted in its axis by less then the frequency step (interpolated shift)New helper class Input to simplify configuration of user scripts by “.yaml” or “.json” filesNew in 0.0.46for users:A bug introduced in 0.0.45 in 2D spectrum calculations now fixedMost of the classes can now be copied (.copy() for a shallow copy, .deepcopy() for a deep, recursive copy)Improvements of 2D calculations with dressed statesVibronic example of 2D spectrum calculation extendedClass migration:  TwoDSpectrum -> TwoDResponse; TwoDSpectrumContainer -> TwoDResponseContainerNew classes TwoDSpectrum and TwoDSpectrumContainer are simpler and contain only one type of spectraClass migration: MockTwoDSpectrum -> MocjDefinitions of positive and negative frequencies in omega2-frequency maps changed to correspond to literatureFor developers:many constants describing non-linear response, 2D spectra and data are defined on the highest quantarhei import levelAll Saveable objects now have a convenience methods copy() for shallow copying, deepcopy() for deep copying and scopy() for a deep copy by saving to and loading the object from a temporary fileNew in 0.0.45For users:Improved ability to calculate and analyze 2D frequency mapsget_Fourier_transform method of DFunction accepts a windowing function, which works the same as the one of TwoDSpectrumContainerCalculation of effective lineshape pump-probe spectraSaving of TwoDSpectrum data into text files (.dat, .txt), numpy formats (.npy, .npz) and Matlab files (.mat) is enabledProblem which caused Redfield and Lindblad operators not to transform to correct basis when represented by operators was fixedProblem which caused Liouville pathways to be calculated with site basis evolution superoperator was fixedoperator_factory class of Harmonic oscillator now fixed to return correct shift operator for complex inputsoperator_factory is now available from quantarhei.models.HarmonicOscillator packageSome small bug fixesFor developers:Failing documentation compilation fixed and adjusted to new version of matplotlibNew in 0.0.44For users:Basic implementation of HEOMSome bug fixesNew in 0.0.43For users:PureDephasing super-operator to allow additional pure dephasing for realistic lineshapes in effective lineshape description of time-resolved experimentsEmpty relaxation superopetator (as an empty Lindblad form) introduced (as a temporary fix to allow pure dephasing dynamics only)Consistent calculation of pure dephasing of non-optical coherence elements of the density matrix from effective lineshape theory (including electronic only dephasing in vibrational-electronic systems)Some bug fixesNew in 0.0.42For users:Improved effective lineshapes for 2D spectrum calculationsCalculation of absorption spectrum using first order Liouville pathwaysSome bug fixes including an frequency factor in absorption spectrumNew in 0.0.41For users:Some bug fixesBetter Louville pathway manipulation featuresNew in 0.0.40For users:Some bug fixesMinor new featuresNew in 0.0.39For users:Some bug fixesNew in 0.0.38For users:Some bug fixesNew in 0.0.37For users:Some bug fixesFor developersSome unused files removedMore precise dependencies on other packages specified in setupNew in 0.0.36For users:Quantarhei now available also as a conda packageRecommended installation procedure documentedTwoDSpectrum class revised - new method names, better storage model (keeps track of rephasing and non-rephasing part, groups of pathways associated with different processes when required, stores different pathways separately when required)Improved TwoDSpectrumContainer (can hold a group of spectra identified by an arbitrary ValueAxis (most notably TimeAxis and FrequencyAxis), integer index or list of strings). Copies the new storage improvement on TwoDSpectrum.labsetup class changed to LabSetup and extended by information about pulse profiles and spectra. labsetup is left as deprecated for compatibilityFourier transform of 2D spectra in t2, via TwoDSpectrumContainer; also enables FFT with window functionFunctions of ValueAxis introduced in a special module; Tukey window function for FFT in waiting time is one of themSuperOperator is BasisManaged; basis management is solved for both time-dependent and time-independent super operatorsRelaxationTensor now inherits from SuperOperator and it is BasisManaged through that inheritanceEvolutionSuperOperator tested, documented and it is BasisManagedEvolutionSuperOperator’s method apply() can be applied with time argument which is of type TimeAxis type, float or array of floats; returns DensityMatrix or DensityMatrixEvolutionQuantarhei driver qrhei changes format: use ‘qrhei run scriptname’ to run scripts and consult the -h option of ‘qrhei run’; parallel runs untested in this versionDocumentation contains a description of the concept of “user”, “advanced”, and “expert” levels of classes in Quantarhei.List of classes completely covered by documentation and doctests included in on-line documentationClasses Mode, SubMode, Molecule, TwoDSpectrumContainer completely documentedDocumentation enhancedCountless small improvements and bug fixesFor developers:Code of conduct file now in the root directory of the packageAbsorption spectroscopy related classes now organized in one file per class fashion so that automatic documentation is easier to readNew subpackage quantarhei.testing united all custom functions that support testing. It includes feature.py module previously found in quantarhei.dev subpacked (now removed) and a behave.py module which supports tests with behave packageBehave package is now used for some tests (in particular for tests of the “qrhei” driver). Future acceptance tests should preferentially be written with this packageNew helper script “ghenerate” autogenerates Python step files for tests with ‘behave’ package from the Gherkin feature filesNew in 0.0.35For users:Method get_DensityMatrix() of the Aggregate class improved. It accepts some new options which makes specification of desired density matrix more flexibleExperimental implementation of circular and linear dichroisms and fluorescence spectraDocumentation is now available on readthedocs.org. A badgewhich informations about the status of automatic documentation builds was added to READMEMany small improvements and bug fixesFor developers:The code is now hosted on travis-ci.com and the builds are tested after every commit. Corresponding badgehas been added to READMEThe code is now hosted on codecov.com and its coverage by tests is measured. Corresponding badge showing the coveragehas beed added to READMENew in 0.0.34For usersSome issues with addition of bath correlation functions was fixedFirst entry in a database of literature bath correlation functions was created: the vibrational part of the FMO spectral density from Wendling et al., (2004)Aggregate can return a matrix of Franck-Condon factors (get_FC_factor_matrix())Aggregate can transform excited state site-basis shifted vibrational representation of an arbitrary operator to the unshifted (ground state) one (transform_2_unshifted(A, inverse=True/False) )Several new tested examplesRelaxationTensors (Redfield, Foerster, Lindblad, etc.) can now be multiplied by a constant or added (addition only if they are in tensor, i. e. not in operator, form)Tested examples can be fetched into IPython notebook or Python/IPython console by %example magic command or fetch_example function from quantarhei.wizard.magic moduleSmall improvements and bug fixesNew in 0.0.33For users:Evolution superoperators for relaxation tensors with constant coefficients (EvolutionSuperOperator class)Liouville pathway analysis including relaxation pathways (in Aggregate class)Small improvements and bug fixesFor developers:Aggregate class is broken into smaller pieces which snowball the functionality. Basic class is AggregateBase; new functions of this powerful class are defined in separate child classes. Aggregate class inherits from the whole chain of classesquantarhei.REAL and quantarhei.COMPLEX types should be now used for numpy arrays throughout the package. These types can be controlled and with it the used numerical precision and memory needsNew in 0.0.32For users:Electronic Lindblad form for vibronic Frenkel exciton modelPropagation with relaxation tensor (in particular Redfield and Time-dependent Redfield) in operator representation (where applicable it is much faster than with the tensorial representation)Redfield tensor and Time-dependent Redfield tensor can be calculated for a model with arbitrary number of vibrational statesAggregate can vibrationally trace arbitrary operator defined on its Hilbert spaceSmall improvements and bug fixesNew in version 0.0.31For users:Arbitrary time independent Lindblad formquantarhei.wizard module which contains IPython magic commands and some helpful Python console commandsSimulation templates which can be fetched into IPython notebooks or console by %template  magic command (IPython) or fetch_template (console and IPython)Part of the test suit available for installed Quantarhei packageSome small improvements and bug fixesFor developers:Makefile is back in the package root directoryexamples directory depleted in favor of quantarhei/wizard/examples directoryNew tests under quantarhei/tests directory (mostly unit tests which contain plots)pytest required to run newtests with matplotlib plots