Giter Site home page Giter Site logo

ggirelli / oligo-melting Goto Github PK

View Code? Open in Web Editor NEW
11.0 2.0 3.0 184 KB

Software to estimate oligonucleotide duplexes melting temperature. Includes state-of-the-art monovalent (e.g., Na+) and bivalent (Mg2+) ion correction, formamide (or general denaturant) correction, and melting curve estimation.

License: MIT License

Python 100.00%
meltingprobe melting-temperature oligonucleotide duplex formamide sodium magnesium duplexes hacktoberfest

oligo-melting's Introduction

oligo-melting

DOI

A Python3 package for melting temperature calculation of oligonucleotides hybridization and secondary structures.

Features

  • Handles DNA:DNA, RNA:RNA and DNA/RNA hybridizations.
  • Corrects for both salt and chemicals.
  • Compatible with UNAfold (OligoArrayAux) output for direct salt and chemicals (denaturants) correction.
  • Produces melting curves for the provided sequence.
  • Input either as single sequence or FASTA file.
  • Slightly faster than BioPython.SeqUtils.MeltingTemp.
  • Provides dG, dS and dH alongside melting temperature.

Limitations

  • Does not handle mismatches or dangling ends
  • Does not handle ambiguous bases

Installation

To install, run the following:

git clone http://github.com/ggirelli/oligo-melting
cd oligo-melting
sudo -H pip3 install .

To uninstall run the following from within the repository folder:

sudo -H pip3 uninstall oligo_melting

To update, first uninstall, and then run the following from within the repository folder.

git pull
sudo -H pip3 uninstall oligo_melting
sudo -H pip3 install .

Usage

From command line

Duplexes

The melt_duplex command allows to calculate the melting temperature of a nucleic acid duplex, provided the sequence of one of the two strands.

The hybridization delta free energy calculation is based on the N-N thermodynamic values in literature and is available for DNA:DNA[3], RNA:RNA[1] and DNA:RNA[2] duplexes. The melting temperature calculation is based on Santalucia, 1998[4]. Sodium and cagnesium concentration correction is based on the work of Owczarzy et al[5][6]. Formamide correction can be performed based on two different published models[7][8].

  • Use the -t option to specify the type of nucleic acid duplex.
  • Use --fa-mode to switch between linear melting temperature formamide-based correction[7] and linear ΔG formamide-based correction[8].
  • Use --fa-mvalue together with --fa-mode wright to specify the m-value for the formamide-based correction.
  • Provide the path to a fasta file instead of a single sequence to calculate the melting temperature of every sequence in the file.
  • Use the -v option to trigger the verbose mode, which provides more details for every single sequence.
  • Use -C for the temperature in degree Celsius instead of Kelvin.
  • Use --out-curve to specify a file where to save estimated single-sequence melting curves with temperature range and step around the melting temperature as defined with --t-curve.

Secondary structure

The melt_secstr script allows to correct the melting temperature of a nucleic acid secondary structure, previously calculated with OligoArrayAux, and to produce the corresponding melting curves.

As a library

Import the package and use the corresponding functions.

import oligo_melting as OligoMelt

seq = "CAGTCAGTCGATC"

# Calculate melting temperature for 25uM oligos
(name, g, h, s, tm, seq) = OligoMelt.Duplex.calc_tm(seq, oligo_conc = 25e-6)
print(tm)

# Adjust for 300 mM [Na+]
tm = OligoMelt.Duplex.adj_ions(tm, 0.3, 0, seq)
print(tm)

The Duplex module contains functions for duplex hybridization and melting temperature calculation, while the SecStr module contains similar methods for evaluating secundary structure melting temperatures.

References

  • [1]: Freier et al, PNAS(83), 1986;
  • [2]: Sugimoto et al, Biochemistry(34), 1995.
  • [3]: Allawi & Santalucia, Biochemistry(36), 1997;
  • [4]: SantaLucia, PNAS(95), 1998;
  • [5]: Owczarzy et al, Biochemistry(43), 2004;
  • [6]: Owczarzy et al, Biochemistry(47), 2008;
  • [7]: McConaughy et al, Biochemistry(8), 1969;
  • [8]: Wright et al, Appl. env. microbiol.(80), 2014.

License

MIT License
Copyright (c) 2017 Gabriele Girelli

This project comes from the potpourri sandbox. \( ゚ヮ゚)/

oligo-melting's People

Contributors

ggirelli avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

oligo-melting's Issues

melt_duplex errors

Trying out melt_duplex doesn't seem to work as-is.

python3 melt_duplex -t DNA:RNA gatctgtcaccacataatta
yields

Traceback (most recent call last):
  File "melt_duplex", line 215, in <module>
    else: run_seq(args.seq[0], **data)
  File "melt_duplex", line 161, in run_seq
    output = OligoMelt.XDuplex.calc_tm(**kwargs)

I figured XDuplex was a typo; changing it to
output = OligoMelt.XDuplex.calc_tm(**kwargs)
lets the script generate appropriate output, but then throw an exception later

Traceback (most recent call last):
  File "melt_duplex", line 215, in <module>
    else: run_seq(args.seq[0], **data)
  File "melt_duplex", line 164, in run_seq
    print_header(fasta_like = fasta_like, **kwargs)
NameError: name 'fasta_like' is not defined

output formamide corrected delta G, vary delta G based on hybridization temperature

For delta-G based formamide correction, it would be nice to output a corrected delta G. Currently only the Tm output changes.

Similarly, it looks like the delta G calculations are hardcoded for a hybridization temperature of 37 C. This is sometimes useful to vary if you're looking for probes with different Tm but the same delta G at a given temperature

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.