Skip to main content

QuantumDNA is an open-source Python package for simulating energy and charge transfer in DNA using quantum mechanical methods.

Project description

QuantumDNA Logo

License DOI Documentation Status Latest Release PyPI Version GitHub Workflow Status Code Style: black


Welcome to QuantumDNA

This python package can be cited as:

Herb, D. et al. QuantumDNA: A python package for analyzing quantum charge dynamics in DNA and exploring its biological relevance. Computer Physics Communications 313, 109626 (2025). DOI: 10.1016/j.cpc.2025.109626

Introduction

The study of DNA charge dynamics is a highly interdisciplinary field and plays an important role in processes such as DNA damage detection, protein-DNA interactions, and DNA-based nanotechnology. However, despite significant progress in each of these areas, knowledge often remains inaccessible to researchers in other scientific communities. To bridge this gap, we have developed QuantumDNA: an open-source python package for simulating DNA charge transfer and excited state dynamics using quantum physical methods.

QuantumDNA uses a linear combination of atomic orbitals (LCAO) approach combined with tight-binding models and open quantum systems techniques. This way one can quickly scan large numbers DNA sequences, enabling statistical studies of genetic and epigenetic phenomena.

Whether you're a scientist, student, or just curious, QuantumDNA: dive in and start exploring!

Image package structure

Features

  • Coarse-graining approach: linear combination of atomic orbitals (LCAO) and tight-binding models to efficiently simulate DNA charge dynamics.
  • Parallelized Calculations: Enabling the analysis of large numbers of DNA seqeunces.
  • Integration with publicly accessible databases: Users can input geometries from DNA structure databases as PDB files.
  • GUI: Designed for researchers across physics, chemistry, biology, and medicine.

What's new

  • Added a graphical user interface (GUI) to the package which is based on the customtkinter package.
  • Added a Tutorial Jupyter Notebooks available on another GitHub repopsitory.

Getting started

Quick Installation

For a quick installation, you can install the qDNA package via pip:

pip install qDNA

To ensure compatibility and avoid conflicts with other packages, we recommend using a virtual environment. For detailed installation instructions, please refer to the Installation Guide.

Example Program

To test QuantumDNA, you can run the following simple example where the exciton lifetime and the average charge separation of a double-stranded GCG DNA sequence are calculated. You can try different sequences, tight-binding models, and keyword arguments to investigate how these factors affect the exciton lifetime and average charge separation. For example, you might find that in general more uniform sequences show higher values.

from qDNA import calc_lifetime, calc_dipole

# input
tb_sites = get_tb_sites('GCG')
kwargs = dict(tb_model_name = 'ELM', unit='rad/ps', relax_rate=3, source='Hawke2010')

# calculation
eva = Evaluation(tb_sites, **kwargs)
lifetime = eva.calc_lifetime()
charge_separation = eva.calc_charge_separation()

# output
print(f"Exciton lifetime {lifetime} fs")
print(f"Average charge separation {charge_separation} A")

Documentation

Documentation Status

The documentation webpage for the latest release is available for reading on Read The Docs. Tutorials can be found in a separate GitHub repository QuantumDNA-notebooks.

Graphical User Interface

The qDNA package includes a GUI that provides an intuitive and user-friendly way to interact with the package's functionalities. You can access the GUI with the following code:

from qDNA.gui import QDNApp

QDNApp().run()

The GUI allows you to easily explore and utilize the capabilities of the qDNA package. Below are some examples demonstrating its use:

  • Usage example: Perform simulations with geometries from publically availbale databases (here: PDB geometry of the 1BNA sequence from RCSB.org).

GUI Screenshot.

Simulations with Real Geometries via the GUI

(a) A Protein Data Bank (PDB) file containing the DNA geometry was obtained from RCSB.org (identifier: 1BNA) and modified using Biovia Discovery Studio. The subsequence selected for simulation is highlighted in blue.

(b) The PDB Input Window allows users to upload the modified PDB file, specify an identifier, and select a Tight-Binding (TB) model. Clicking the "Save" button computes TB parameters.

(c) To simulate the highlighted sequence from (a), set the upper strand to 02G_03C_04G and the lower strand to 23C_22G_21C. Ensure the identifier (e.g., 1BNA) is selected as the source. Exciton calculations can be performed using the Evaluation tab, with results displayed in the console at the bottom right (highlighted in green).

(d) The plotting window provides a heatmap visualization of time-evolved populations for the DNA sequence highlighted in (a). All simulation steps can also be performed programmatically without the GUI, such as using Jupyter Notebooks.

  • Plot Generation: Plot obtained after pressing the submit button on the menu.

GUI Screenshot

  • Calculation Display: Screenshot of the menu of the user interface with calculations of the exciton lifetime, average charge separation and dipole moment displayed in the frame on the bottom right.

GUI Screenshot.

Shortcuts

To enhance the readability of the code, we have frequently used the following shortcuts:

  • ham: hamiltonian
  • dm: density matrix
  • tb: tight-binding
  • eigv: eigenvalue/ eigenenergy
  • eigs: eigenstates/ eigenvectors
  • dim: dimension
  • fig: figure
  • op: operator
  • loc: local
  • glob: global
  • deph: dephasing
  • therm: thermalizing
  • seq: sequence
  • calc: calculate

References

Papers from our group:

Tight-binding parameters:

Tight-binding models:

DNA excited states and excitons:

DNA charge transfer:

Simulation of open quantum systems:

Support

For support, please contact the author at dennis.herb@uni-ulm.de.

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

qdna-1.0.1.tar.gz (4.7 MB view details)

Uploaded Source

Built Distribution

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

qdna-1.0.1-py3-none-any.whl (3.5 MB view details)

Uploaded Python 3

File details

Details for the file qdna-1.0.1.tar.gz.

File metadata

  • Download URL: qdna-1.0.1.tar.gz
  • Upload date:
  • Size: 4.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for qdna-1.0.1.tar.gz
Algorithm Hash digest
SHA256 2980e3f45d626c708cb787bb270304ecb2e1db598b5889baf6db1e51a495aea8
MD5 b7ba8d85b4bbca50737bbe3668efa2d0
BLAKE2b-256 433f78771aba2107e6383a164407ec9b034e27bf14e6c5e8c2acdc391de70bd6

See more details on using hashes here.

File details

Details for the file qdna-1.0.1-py3-none-any.whl.

File metadata

  • Download URL: qdna-1.0.1-py3-none-any.whl
  • Upload date:
  • Size: 3.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.9

File hashes

Hashes for qdna-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3d35c337c5569af508b691b7a0ce37bfe23ffaf8b62f8172f4948dfa1767ff9e
MD5 f45eaa21c156a34300713f34266f015d
BLAKE2b-256 9f4f7b87481dfe145d8d697bd84d4b22c0a4bb5ae4e6994ee6efbd400c64310a

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