Genome-Wide Nucleic Acid Melting Temperature Profiling and Multi-Omics Integration
Overview
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, 1965; Wetmur, 1991; Untergasser, 2012; von Ahsen, 2001), and nearest-neighbor thermodynamics (Breslauer, 1986; Sugimoto, 1996; Allawi, 1997, 1998; SantaLucia, 2004; Freier, 1986; Xia, 1998; Chen, 2012; Bommarito, 2000; Turner, 2010; Sugimoto, 1995; Peyret, 1999; SantaLucia & Peyret, 2001; Watkins & 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. Salt corrections are otherwise applied to the nearest-neighbor model (SantaLucia, 1996, 1998; Owczarzy, 2004, 2008), while each empirical GC-content formula carries the salt term it was published with; corrections for chemical conditions such as dimethyl sulfoxide and formamide apply to both. 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.
The paper describing the package is published
- **
citation("TmCalculator")now returns the article rather than a generated entry.** Li J & Zhu LJ (2026), *Applied Sciences* **16**(20), 10400, <doi:10.3390/app162010400>. The DOI has also been added toURLinDESCRIPTION, so it appears on the CRAN landing page. The parameter sets taken from other studies still carry their own citations;citation()says so in its footer, and?tm_nnlists the sources per set.
Two parameter sets renamed, old names still accepted
- **
DNA_NN_Allawi_1998is nowDNA_NN_Allawi_1997, andDNA_TMM_Bommarito_2000is nowDNA_TMM_SantaLucia_2001.** The 1.1.2 audit found both names credited the wrong paper. The Watson-Crick set is Allawi & SantaLucia (1997) Biochemistry 36:10581 Table 1, together with SantaLucia (1998) PNAS 95:1460 Table 2; the 1998 paper the old name pointed at reports internal C·T mismatches. The terminal-mismatch set is SantaLucia & Peyret (2001), WO 01/94611, Tables 2–3; Bommarito et al. (2000) is the dangling-end paper, andDNA_DE_Bommarito_2000, which does come from it, is unchanged. 1.1.2 corrected the citations but kept the names, marked as legacy identifiers. On reflection that left the misleading part in the place people actually read, since a parameter-set name is the first thing anyone cites. **No values changed.** The tables are byte-identical to 1.1.2, so no melting temperature moves. The old spellings still work and resolve to the new sets, with a warning naming the replacement and the reason. They are not listed among the accepted values, so help pages and completion show only the current names. They will be removed in a later release. ```r
Show all changes in 1.1.3Hide the rest of the changes in 1.1.3
both give the same answer; the first warns
tm_nn(seq, nn_table = "DNA_NN_Allawi_1998")
tm_nn(seq, nn_table = "DNA_NN_Allawi_1997")
```
Vignettes no longer require a suggested package
- **Three vignette chunks called
plot_genome_track()in its linear layout without checking forkaryoploteRfirst.** That package is inSuggests, andplot_genome_track()raises an error rather than returning quietly when it is missing, so on any platform wherekaryoploteRis unavailable the error propagated out ofknitrand failed the vignette build. This is what produced the fourre-building of vignette outputsERRORs that 1.1.1 and 1.1.2 show on the macOS check flavors, where Bioconductor has no binary for it. The Windows and Linux flavors have one, so the vignettes built there and the incoming-submission pretest, which covers only Windows and Debian, never saw it. The affected chunks arelinear-fullandzoom-singleingenome_wide_tm_ecoli.Rmdandsensitivity-zoominwindow_size_sensitivity.Rmd. Each is now conditional onrequireNamespace("karyoploteR"), and prints a short note in place of the figure when it is skipped. The five circular chunks are unchanged, since the circular layout does not usekaryoploteR. No package code changed, and no melting temperature changes.
From NEWS.md in the release
Install
Health
ERRORre-building of vignette outputsr-oldrel-macos-arm64, r-oldrel-macos-x86_64, r-release-macos-arm64
r-oldrel-macos-arm64
Error(s) in re-building vignettes:
--- re-building ‘genome_wide_tm_ecoli.Rmd’ using rmarkdown
trying URL 'https://bioconductor.org/packages/3.22/bioc/bin/macosx/big-sur-arm64/contrib/4.5/BSgenomeForge_1.10.2.tgz'
Content type 'application/x-compressed-tar' length 832361 bytes (812 KB)
==================================================
downloaded 812 KB
trying URL 'https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.fna.gz'
Content type 'application/x-gzip' length 1379902 bytes (1.3 MB)
==================================================
downloaded 1.3 MB
2026-10-22 05:26:40.690 R[16136:178827] XType: Using static font registry.
Quitting from genome_wide_tm_ecoli.Rmd:358-364 [linear-full]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error:
! Package 'karyoploteR' is required for linear genome plots. Install it with: BiocManager::install("karyoploteR")
---
Backtrace:
...[truncated]...
e_parallel.Rmd’
--- re-building ‘window_size_sensitivity.Rmd’ using rmarkdown
2026-10-22 05:27:00.411 R[48103:230403] XType: Using static font registry.
Quitting from window_size_sensitivity.Rmd:394-428 [sensitivity-zoom]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error:
! Package 'karyoploteR' is required for linear genome plots. Install it with: BiocManager::install("karyoploteR")
---
Backtrace:
▆
1. └─TmCalculator::plot_genome_track(...)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: processing vignette 'window_size_sensitivity.Rmd' failed with diagnostics:
Package 'karyoploteR' is required for linear genome plots. Install it with: BiocManager::install("karyoploteR")
--- failed re-building ‘window_size_sensitivity.Rmd’
SUMMARY: processing the following files failed:
‘genome_wide_tm_ecoli.Rmd’ ‘window_size_sensitivity.Rmd’
Error: Vignette re-building failed.
Execution haltedr-oldrel-macos-x86_64
Error(s) in re-building vignettes:
--- re-building ‘genome_wide_tm_ecoli.Rmd’ using rmarkdown
trying URL 'https://bioconductor.org/packages/3.21/bioc/bin/macosx/big-sur-x86_64/contrib/4.5/BSgenomeForge_1.8.1.tgz'
Content type 'application/x-compressed-tar' length 827147 bytes (807 KB)
==================================================
downloaded 807 KB
trying URL 'https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.fna.gz'
Content type 'application/x-gzip' length 1379902 bytes (1.3 MB)
==================================================
downloaded 1.3 MB
Quitting from genome_wide_tm_ecoli.Rmd:358-364 [linear-full]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error:
! Package 'karyoploteR' is required for linear genome plots. Install it with: BiocManager::install("karyoploteR")
---
Backtrace:
▆
1. └─TmCalculator::plot_genome_track(...)
~~~~~~~~~~~~~~~~~~~~~~~~~~~
...[truncated]...
nce_parallel.Rmd’ using rmarkdown
--- finished re-building ‘hg38_performance_parallel.Rmd’
--- re-building ‘window_size_sensitivity.Rmd’ using rmarkdown
Quitting from window_size_sensitivity.Rmd:394-428 [sensitivity-zoom]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error:
! Package 'karyoploteR' is required for linear genome plots. Install it with: BiocManager::install("karyoploteR")
---
Backtrace:
▆
1. └─TmCalculator::plot_genome_track(...)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: processing vignette 'window_size_sensitivity.Rmd' failed with diagnostics:
Package 'karyoploteR' is required for linear genome plots. Install it with: BiocManager::install("karyoploteR")
--- failed re-building ‘window_size_sensitivity.Rmd’
SUMMARY: processing the following files failed:
‘genome_wide_tm_ecoli.Rmd’ ‘window_size_sensitivity.Rmd’
Error: Vignette re-building failed.
Execution haltedr-release-macos-arm64
Error(s) in re-building vignettes:
--- re-building ‘genome_wide_tm_ecoli.Rmd’ using rmarkdown
trying URL 'https://bioconductor.org/packages/3.23/bioc/bin/macosx/sonoma-arm64/contrib/4.6/BSgenomeForge_1.12.0.tgz'
Content type 'application/x-compressed-tar' length 833586 bytes (814 KB)
==================================================
downloaded 814 KB
trying URL 'https://ftp.ncbi.nlm.nih.gov/genomes/all/GCF/000/005/845/GCF_000005845.2_ASM584v2/GCF_000005845.2_ASM584v2_genomic.fna.gz'
Content type 'application/x-gzip' length 1379902 bytes (1.3 MB)
==================================================
downloaded 1.3 MB
Quitting from genome_wide_tm_ecoli.Rmd:358-364 [linear-full]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error:
! Package 'karyoploteR' is required for linear genome plots. Install it with: BiocManager::install("karyoploteR")
---
Backtrace:
▆
1. └─TmCalculator::plot_genome_track(...)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...[truncated]...
nce_parallel.Rmd’ using rmarkdown
--- finished re-building ‘hg38_performance_parallel.Rmd’
--- re-building ‘window_size_sensitivity.Rmd’ using rmarkdown
Quitting from window_size_sensitivity.Rmd:394-428 [sensitivity-zoom]
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<error/rlang_error>
Error:
! Package 'karyoploteR' is required for linear genome plots. Install it with: BiocManager::install("karyoploteR")
---
Backtrace:
▆
1. └─TmCalculator::plot_genome_track(...)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error: processing vignette 'window_size_sensitivity.Rmd' failed with diagnostics:
Package 'karyoploteR' is required for linear genome plots. Install it with: BiocManager::install("karyoploteR")
--- failed re-building ‘window_size_sensitivity.Rmd’
SUMMARY: processing the following files failed:
‘genome_wide_tm_ecoli.Rmd’ ‘window_size_sensitivity.Rmd’
Error: Vignette re-building failed.
Execution haltedNOTEfor non-standard things in the check directoryr-devel-linux-x86_64-fedora-gcc
Found the following files/directories: ‘BSgenome.Ecoli.NCBI.ASM584v2’ ‘BSgenomeForge’
- ERROR9 OK, 1 NOTE, 3 ERRORNow
- ERROR7 OK, 2 NOTE, 5 ERROR2026-03-21
- NOTE12 OK, 2 NOTE2026-03-10
Documentation
- Help pages
- 51 (27 internal)includes a package overview page
- Examples that run
- 68%13 run in a plain check · 6 never run
- Exported functions with examples
- 94%
- Documented parameters
- 92%
- Return-value docs
- 89%
- Help pages citing references
- 18%
Downloads
Repository
- PRs merged (all time)
- 80%
- Median days to close, 50 most recently updated closed issues
- 2
- Median days to close, 50 most recently updated closed PRs
- 0
Stars over time
Forks over time
Issues over time
PRs over time
Commits over time
4 development-tooling and community-health practices detected across 3 families in the upstream repository
Checks run against github.com/junhuili1017/tmcalculator on 2026-10-18.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
Dependencies
Installing TmCalculator adds 1 package (1 with compiled code, 1.8 MB of source tarballs). Heaviest: Rcpp 1.8 MB. 7 more not on CRAN are not measured.
Code & Tests
Datasets
People & History
Pick two releases to compare their code metrics.
- 1.1.3Latest2026-10-21 · current release · diff ↗ ·
22 hours in CRAN's queue
Listed in CRAN's incoming queue from 2026-10-20 17:40 to 2026-10-21 15:47 UTC, in 6 readings. - 1.1.22026-10-05 · diff ↗
- 1.1.12026-09-21 · diff ↗
- 1.1.0
- 1.0.92026-08-28 · diff ↗
- 1.0.82026-07-29 · diff ↗
- 1.0.7
- 1.0.62026-06-13 · diff ↗ ·
removed 9 exports
plot_circos_genome, plot_karyotype_genome, plot_linear_genome, plot_tm_genome_tracks, plot_tm_genome_tracks_interactive, plot_tm_heatmap, plot_tm_heatmap_interactive, plot_tm_karyotype_interactive, plot_tm_linearadded 2 exports
plot_genome_track, plot_tm - 1.0.52026-06-04 · diff ↗ ·
removed 1 export
plot_tm_karyotypeadded 9 exports
compare_groups, complement_fast, integrate_granges, make_genomiccoord, plot_circos_genome, plot_karyotype_genome, plot_linear_genome, plot_tm_linear, to_genomic_ranges_fast - RR 4.6.0 released · 2026-04-24
- 1.0.42026-03-20 · diff ↗ ·
removed 10 exports
GC, Tm_GC, Tm_NN, Tm_Wallace, c2s, check_filter, chem_correction, complement, print.TmCalculator, s2cadded 17 exports
chem_correct, coor_to_genomic_ranges, fa_to_genomic_ranges, gc, generate_complement, plot_tm_genome_tracks, plot_tm_genome_tracks_interactive, plot_tm_heatmap, plot_tm_heatmap_interactive, plot_tm_karyotype, plot_tm_karyotype_interactive, tm_calculate, tm_gc, tm_nn, tm_wallace, to_genomic_ranges, vec_to_genomic_ranges - RR 4.5.0 released · 2025-04-11
- RR 4.4.0 released · 2024-04-24
- RR 4.3.0 released · 2023-04-21
- RR 4.2.0 released · 2022-04-22
- 1.0.32022-02-21 · diff ↗
Show 7 earlier eventsHide 7 earlier events
- 1.0.22022-01-21 · diff ↗ ·
removed 1 export
pattern:^[[:alpha:]]+added 11 exports
GC, Tm_GC, Tm_NN, Tm_Wallace, c2s, check_filter, chem_correction, complement, print.TmCalculator, s2c, salt_correction - RR 4.1.0 released · 2021-05-18
- 1.0.12020-07-31 · diff ↗
- RR 4.0.0 released · 2020-04-24
- RR 3.6.0 released · 2019-04-26
- 1.0.02019-02-11
- RR 3.5.0 released · 2018-04-23
Package metadata
- First published
- 2019-02-11
- Total releases
- 14 / 7 yrs
- License
- MIT + file LICENSE OSI · relicensed from GPL (>= 2) in 1.0.4
- Minimum R
- ≥ 3.5
- Bundled data
- 37 KB / 3 files
- Download size
- 2.5 MB
Cite
Cite this package
Run in R for the authors' entry:
citation("TmCalculator")The package provides a citation file, so citation() returns the authors' own entry.
It points to 10.3390/app162010400.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-21, which the citation names so these numbers can be found later. More on citing and the projects behind them.