Accurate calculation of nucleic acid melting temperature (Tm) is fundamental to many molecular biology applications, and this software scales Tm analysis from individual sequences to genome‑wide thermodynamic profiling. This package extends Tm analysis from simple sequence level computation to comprehensive genome-wide thermodynamic profiling. It takes four input sources: sequence strings, a FASTA file, an installed 'BSgenome' package named by string, or a 'GRanges' carrying sequences. A 'regions' argument selects what to cover and 'window' and 'slide' set the resolution at which it is tiled. The implementation provides three Tm calculation methods: the Wallace rule (Thein & Wallace, 1986), empirical GC‑content formulas (Marmur, 1962; Schildkraut, 2010; Wetmur, 1991; Untergasser, 2012; von Ahsen, 2001), and nearest‑neighbor thermodynamics (Breslauer, 1986; Sugimoto, 1996; Allawi, 1998; SantaLucia, 2004; Freier, 1986; Xia, 1998; Chen, 2012; Bommarito, 2000; Turner, 2010; Sugimoto, 1995; Allawi, 1997; SantaLucia, 2005; Zuber, 2022; Ghosh, 2020, 2023). Nearest-neighbor parameter sets are provided for DNA, RNA and RNA/DNA hybrid duplexes. These include sets obtained by melting-temperature optimization that are fitted directly at a stated sodium concentration (Weber, 2015; Ferreira, 2019; Basilio Barbosa, 2019; Banerjee, 2020), which replace salt correction rather than being corrected; salt correction is skipped automatically when the requested condition matches the one a set was fitted at. The Zuber (2022) set additionally replaces the single terminal-AU penalty with end terms that depend on the penultimate base pair, applied automatically at both duplex ends. Parameter sets measured under molecular crowding (Ghosh, 2020, 2023) are also provided for DNA and RNA duplexes, so that duplex stability can be evaluated under cell-like rather than dilute-solution conditions. Corrections are otherwise supported for salt ions (SantaLucia, 1996, 1998; Owczarzy, 2004, 2008) and for chemical conditions such as dimethyl sulfoxide and formamide. A compiled C++ core, and task partitioning by region across 'BiocParallel' workers through a 'BPPARAM' argument, profile the human genome in 3 minutes on a six-core laptop. This package returns result as a GRanges object for interoperability with Bioconductor workflows and downstream multi-omics analyses. Data-level integration reconciles Tm windows with external multi-omics GRanges objects through overlap, nearest-feature, windowed-count, and binned-average strategies, returning a single unified GRanges object ready for downstream analysis. Visualization-level integration renders multiple feature layers as independent concentric tracks on a shared genomic axis, each retaining its native coordinate resolution. Group comparison supports Wilcoxon rank-sum and Student's t-tests with multiple available correction methods for contrasting Tm and other features across region classes.

v1.1.1
Genome-wide nucleic acid melting temperature (Tm) profiling and multi-omics
integration. Results are returned as GRanges objects, so Tm can be used
directly as a quantitative genomic feature alongside ATAC-seq, RNA-seq,
ChIP-seq and other assays.
install.packages("TmCalculator")
install dev version from github
pak::pkg_install("JunhuiLi1017/TmCalculator@dev")
Please see the vignetts for the details.
library(TmCalculator)
seqs <- to_genomic_ranges("AAAATTTTTTTCCCCCCCCCCCCCCGGGGGGGGGGGGTGTGCGCTGC")
tm_calculate(seqs, method = "tm_nn", nn_table = "DNA_NN_SantaLucia_2004", Na = 50)
Twenty-seven nearest-neighbor parameter sets are available, in two families.
Reference-salt sets were fitted at a single reference sodium concentration.
Other conditions are reached through the salt_method correction formulas.
| Duplex | Sets |
|---|---|
| DNA/DNA | DNA_NN_Breslauer_1986, DNA_NN_Sugimoto_1996, DNA_NN_Allawi_1998, DNA_NN_SantaLucia_2004 (default) |
| RNA/RNA | RNA_NN_Freier_1986, RNA_NN_Xia_1998, RNA_NN_Chen_2012 |
| RNA/DNA | RNA_DNA_NN_Sugimoto_1995 |
Condition-specific sets were fitted directly at the sodium concentration
shown, by melting-temperature optimization. They are intended to replace
salt correction rather than be corrected. When the requested Na matches the
concentration a set was fitted at, salt correction is skipped automatically;
when it does not, the correction is applied with a warning.
| Duplex | Sets | Fitted at |
|---|---|---|
| DNA/DNA | DNA_NN_Weber_2015 |
1020 mM |
| DNA/DNA | DNA_NN_Weber_OW04_69 / _119 / _220 / _621 / _1020 |
69–1020 mM |
| RNA/RNA | RNA_NN_Weber_VIF_71 / _121 / _221 / _621 / _1021 |
71–1021 mM |
| RNA/RNA | RNA_NN_Weber_FIF_71 / _121 / _221 / _621 / _1021 |
71–1021 mM |
| RNA/DNA | RNA_DNA_NN_Weber_2019_FT, RNA_DNA_NN_Weber_2019_VH |
1000 mM |
| RNA/DNA | RNA_DNA_NN_Weber_2019_LS |
100 mM |
For RNA, the VIF (variable initiation factors) sets gave better cross-validation
than FIF. For RNA/DNA hybrids at high salt, ..._FT was the best-performing set
in the source study.
# Fitted at 100 mM, so no salt correction is applied on top of it
res <- tm_calculate(seqs, method = "tm_nn",
nn_table = "RNA_DNA_NN_Weber_2019_LS", Na = 100)
res$options[["Salt correction applied"]] # FALSE
res$options[["Parameter set fitted at [Na+] (mM)"]] # 100
Pick the set whose fitted salt is closest to your experimental condition rather
than correcting a distant one. See ?tm_nn for the full list and citations.
using R function
TmCalculatorShiny::TmCalculator_shiny()
If you use the melting-temperature-optimized parameter sets, please also cite the source studies: