<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software | Bose Research Group</title><link>https://bose-research-group.github.io/category/software/</link><atom:link href="https://bose-research-group.github.io/category/software/index.xml" rel="self" type="application/rss+xml"/><description>Software</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Tue, 11 Mar 2025 16:07:46 +0530</lastBuildDate><image><url>https://bose-research-group.github.io/media/icon_hu_9bd251d90a98e6b2.png</url><title>Software</title><link>https://bose-research-group.github.io/category/software/</link></image><item><title>QuantumDynamicsCLI.jl</title><link>https://bose-research-group.github.io/project/quantumdynamicscli/</link><pubDate>Tue, 11 Mar 2025 16:07:46 +0530</pubDate><guid>https://bose-research-group.github.io/project/quantumdynamicscli/</guid><description>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: center">&lt;strong>Documentation&lt;/strong>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: center">&lt;a href="https://amartyabose.github.io/QuantumDynamicsCLI.jl/dev/" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://img.shields.io/badge/docs-dev-blue.svg" alt="Dev" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="what-is-quantumdynamicscli">What is QuantumDynamicsCLI?&lt;/h2>
&lt;p>Simulating the dynamics of quantum systems is a challenging task with a
multitude of complicated computational methods. The
&lt;a href="https://github.com/amartyabose/QuantumDynamics.jl" target="_blank" rel="noopener">QuantumDynamics.jl&lt;/a> package
provides modular open-source implementations of an increasingly growing number
of these methods, while remaining a flexible platform for further development.
However, owing primarily to its exceptionally flexible nature, the usage of
QuantumDynamics.jl happens through short Julia scripts. This means that for the
most common simulation jobs, one needs to effectively rewrite the same code
multiple times increasing the chances of errors. As a means to making some of
the common types of simulations more facile, we now offer the
QuantumDynamicsCLI.jl package which installs the qdsim application as a sister
code of the QuantumDynamics.jl package. As the framework grows, so will this
application grow to accommodate the new methods and their most common use cases.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>QuantumDynamicsCLI.jl is a registered package. Installation is a simple procedure. It can be done either through the Pkg REPL:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">~ julia
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">julia&amp;gt; ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pkg&amp;gt; add QuantumDynamicsCLI
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>or by using the &lt;code>Pkg&lt;/code> package manager in a script as follows:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-julia" data-lang="julia">&lt;span class="line">&lt;span class="cl">&lt;span class="n">julia&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="k">using&lt;/span> &lt;span class="n">Pkg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">julia&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">Pkg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;QuantumDynamicsCLI&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>After the package gets built, an executable called &lt;code>qdsim&lt;/code> will be placed in &lt;code>$HOME/.julia/bin&lt;/code> along with the code completions for the shell in &lt;code>$HOME/.julia/completions&lt;/code>. Please add &lt;code>$HOME/.julia/bin&lt;/code> to your path and source the correct completions file.&lt;/p>
&lt;p>While QuantumDynamicsCLI.jl builds on top of the QuantumDynamics.jl package, separate installation of that package is unnecessary. Just installing QuantumDynamicsCLI.jl would install QuantumDynamics.jl as a dependency.&lt;/p>
&lt;h2 id="basic-usage">Basic Usage&lt;/h2>
&lt;p>&lt;code>qdsim&lt;/code> comes as a single program with multiple sub-components. These components can call each other, but are mostly meant for the end-user, and are used for running simulations and post-processing the data. The general syntax for running any particular component is as follows:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">&amp;gt; qdsim &amp;lt;component_name&amp;gt; &amp;lt;command_name&amp;gt; &amp;lt;arguments&amp;gt;
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Currently, two &lt;code>command&lt;/code>s are supported:&lt;/p>
&lt;ul>
&lt;li>&lt;code>simulate&lt;/code>: gives access to various techniques for simulating the dynamics&lt;/li>
&lt;li>&lt;code>post&lt;/code>: provides post-processing tools for the output&lt;/li>
&lt;/ul>
&lt;p>The most important sub-command of &lt;code>simulate&lt;/code> is &lt;code>run&lt;/code>, and for &lt;code>post&lt;/code> is &lt;code>get-observable&lt;/code>.&lt;/p>
&lt;h2 id="types-of-simulations">Types of Simulations&lt;/h2>
&lt;p>The primary focus of the qdsim application provided by the QuantumDynamicsCLI.jl package and the underlying QuantumDynamics.jl package is the simulation of dynamics and spectra of open quantum systems. New methods are consistently added and the support for old methods improved. Currently the following methods are supported:&lt;/p>
&lt;ul>
&lt;li>Iterative Quasi-adiabatic Propagators Path Integral (iQuAPI)&lt;/li>
&lt;li>Blip QuAPI&lt;/li>
&lt;li>Time-Evolved Matrix Product Operators (TEMPO)&lt;/li>
&lt;li>Pairwise-Connected Tensor Network Path Integral (PC-TNPI)&lt;/li>
&lt;li>standard Hierarchical Equations of Motion (HEOM)&lt;/li>
&lt;li>scaled HEOM&lt;/li>
&lt;li>Transfer Tensor Method coupled with any of the path integral methods&lt;/li>
&lt;li>Generalized Quantum Master Equation (GQME)&lt;/li>
&lt;li>Multichromophore Incoherent Forster Theory&lt;/li>
&lt;li>Bloch-Redfield Master Equation&lt;/li>
&lt;li>Lindblad Master Equation&lt;/li>
&lt;/ul></description></item><item><title>QuantumDynamics.jl: A modular approach to simulations of dynamics of open quantum systems</title><link>https://bose-research-group.github.io/publication/2023-quantum-dynamics_jl/</link><pubDate>Tue, 23 May 2023 00:00:00 +0000</pubDate><guid>https://bose-research-group.github.io/publication/2023-quantum-dynamics_jl/</guid><description/></item><item><title>QuantumDynamics.jl</title><link>https://bose-research-group.github.io/project/quantumdynamics/</link><pubDate>Fri, 05 May 2023 00:00:00 +0000</pubDate><guid>https://bose-research-group.github.io/project/quantumdynamics/</guid><description>&lt;table>
&lt;thead>
&lt;tr>
&lt;th style="text-align: center">&lt;strong>Documentation&lt;/strong>&lt;/th>
&lt;th style="text-align: center">&lt;strong>Build Status&lt;/strong>&lt;/th>
&lt;th style="text-align: center">&lt;strong>Citation&lt;/strong>&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td style="text-align: center">&lt;a href="https://amartyabose.github.io/QuantumDynamics.jl/dev/" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://img.shields.io/badge/docs-dev-blue.svg" alt="Dev" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/td>
&lt;td style="text-align: center">&lt;a href="https://github.com/amartyabose/QuantumDynamics.jl/actions/workflows/test.yml" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://github.com/amartyabose/QuantumDynamics.jl/actions/workflows/test.yml/badge.svg?branch=main" alt="Run tests" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/td>
&lt;td style="text-align: center">&lt;a href="https://doi.org/10.1063/5.0151483" target="_blank" rel="noopener">
&lt;figure >
&lt;div class="d-flex justify-content-center">
&lt;div class="w-100" >&lt;img src="https://img.shields.io/badge/DOI-10.1063/5.0151483-blue.svg" alt="DOI" loading="lazy" data-zoomable />&lt;/div>
&lt;/div>&lt;/figure>
&lt;/a>&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;p>QuantumDynamics is an open-source software for the simulation of open quantum systems. Though written with performance in mind, QuantumDynamics provides a high throughput platform for experimentation with state-of-the-art approaches to method development.&lt;/p>
&lt;p>The primary problem that QuantumDynamics is aimed at solving is the simulation of the dynamics of a relatively small quantum system coupled to a dissipative environment. Such a system-solvent decomposed problem can typically be represented by the Hamiltonian:
$$\hat{H} = \hat{H}_0 + \hat{H}_\text{env}$$
where
$\hat{H}_0$ is the Hamiltonian of the isolated system and
$\hat{H}_\text{env}$ is the Hamiltonian corresponding to the environment and the interaction between the system and the environment.&lt;/p>
&lt;p>As demonstrated in the tutorials and the example codes, QuantumDynamics provides some approximate methods for simulating the dynamics of the system. However, the goal of this package is to provide access to more state-of-the-art techniques based on path integrals, tensor networks and other ideas in such a manner that all of these methods can be used as far as possible in a composable manner.&lt;/p>
&lt;h2 id="installation">Installation&lt;/h2>
&lt;p>The QuantumDynamics.jl package is registered. The installation can either be done by going into the Pkg REPL mode for Julia&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">~ julia&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-julia" data-lang="julia">&lt;span class="line">&lt;span class="cl">&lt;span class="n">julia&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="p">]&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">pkg&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">add&lt;/span> &lt;span class="n">QuantumDynamics&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>or by using the &lt;code>Pkg&lt;/code> package manager in a script:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-julia" data-lang="julia">&lt;span class="line">&lt;span class="cl">&lt;span class="n">julia&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="k">using&lt;/span> &lt;span class="n">Pkg&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">julia&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="n">Pkg&lt;/span>&lt;span class="o">.&lt;/span>&lt;span class="n">add&lt;/span>&lt;span class="p">(&lt;/span>&lt;span class="s">&amp;#34;QuantumDynamics&amp;#34;&lt;/span>&lt;span class="p">)&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>This installs the latest stable release of QuantumDynamics.jl. Currently new features are being implemented quite regularly. The stable release may not always be up-to-date. Please add the bleeding edge release version to take advantage of the new features by adding the git repository:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="cl">~ julia
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">julia&amp;gt; ]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">pkg&amp;gt; add https://github.com/amartyabose/QuantumDynamics.jl
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>Various parts of QuantumDynamics.jl depends on the BLAS and LAPACK libraries for efficient implementation of linear algebra routines. Julia generally uses OpenBLAS as a default implementation. The most common alternative is Intel&amp;rsquo;s Math Kernel Library (MKL), which can be used with QuantumDynamics.jl by first installing MKL.jl. In the actual script, MKL.jl should be loaded before loading QuantumDynamics.jl:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-julia" data-lang="julia">&lt;span class="line">&lt;span class="cl">&lt;span class="n">julia&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="k">using&lt;/span> &lt;span class="n">MKL&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="n">julia&lt;/span>&lt;span class="o">&amp;gt;&lt;/span> &lt;span class="k">using&lt;/span> &lt;span class="n">QuantumDynamics&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="citation">Citation&lt;/h2>
&lt;p>If you use QuantumDynamics in your work, please cite the &lt;a href="https://pubs.aip.org/aip/jcp/article/158/20/204113/2892511/QuantumDynamics-jl-A-modular-approach-to" target="_blank" rel="noopener">QuantumDynamics.jl paper&lt;/a>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bibtex" data-lang="bibtex">&lt;span class="line">&lt;span class="cl">&lt;span class="nc">@article&lt;/span>&lt;span class="p">{&lt;/span>&lt;span class="nl">10.1063/5.0151483&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">author&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{Bose, Amartya}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">title&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">&amp;#34;{QuantumDynamics.jl: A modular approach to simulations of dynamics of open quantum systems}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">journal&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{The Journal of Chemical Physics}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">volume&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{158}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">number&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{20}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">year&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{2023}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">month&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{05}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">abstract&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">&amp;#34;{A simulation of the non-adiabatic dynamics of a quantum system coupled to dissipative environments poses significant challenges. New sophisticated methods are regularly being developed with an eye toward moving to larger systems and more complicated descriptions of solvents. Many of these methods, however, are quite difficult to implement and debug. Furthermore, trying to make the individual algorithms work together through a modular application programming interface can be quite difficult as well. We present a new, open-source software framework, QuantumDynamics.jl, designed to address these challenges. It provides implementations of a variety of perturbative and non-perturbative methods for simulating the dynamics of these systems. Most prominently, QuantumDynamics.jl supports hierarchical equations of motion and methods based on path integrals. An effort has been made to ensure maximum compatibility of the interface between the various methods. Additionally, QuantumDynamics.jl, being built on a high-level programming language, brings a host of modern features to explorations of systems, such as the usage of Jupyter notebooks and high level plotting, the possibility of leveraging high-performance machine learning libraries for further development. Thus, while the built-in methods can be used as end-points in themselves, the package provides an integrated platform for experimentation, exploration, and method development.}&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">issn&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{0021-9606}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">doi&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{10.1063/5.0151483}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">url&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{https://doi.org/10.1063/5.0151483}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">note&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{204113}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> &lt;span class="na">eprint&lt;/span> &lt;span class="p">=&lt;/span> &lt;span class="s">{https://pubs.aip.org/aip/jcp/article-pdf/doi/10.1063/5.0151483/17794821/204113\_1\_5.0151483.pdf}&lt;/span>&lt;span class="p">,&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">&lt;span class="p">}&lt;/span>
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item></channel></rss>