Added a fitType argument to deGene() and now passes it to
DESeq2::DESeq().
The small bundled example uses the mean dispersion fit to avoid an unstable
local fit, while the default remains parametric. Corrected the pval
documentation to state that significant results use adjusted p values below
the threshold.
Documented the standard return-and-reassign workflow semantics and added an equivalent base-pipe quick workflow to the vignette.
Made the core TSSr() import arguments required and added fail-fast checks
for missing, blank, non-file, and nonexistent inputFiles. refSource
remains optional, but is validated when supplied; getTSS() revalidates
paths immediately before import. The README now uses this validated public
constructor and documents which inputs must be downloaded before use.
Workflow-stage checks now treat data frames with zero rows as empty. If
filtering removes every TSS, clusterTSS() reports that filtering thresholds
may need to be relaxed instead of exposing an internal data.table error.
Added explicit annotation-stage and chromosome-name checks. Fixed loss of
all clusters when a chromosome/strand subset has zero promoter or coding
overlaps, and corrected negative-strand inCoding gene-name lookup.
Removed an unused BSgenome load from annotateCluster(). GFF annotation now
suppresses only txdbmaker's known missing-genome-version warning while all
other warnings continue to propagate.
Consolidated repeated sparse chi-squared warnings from shiftPromoter() into
one summary warning. The documentation now states that affected approximate
p values may be unreliable when expected counts are small.
Rebuilt exampleTSSr without stale machine-specific input or annotation
paths while retaining inputFilesType = "bam" as provenance. Its reference
table is regenerated from the frozen bundled GFF.
Replaced the 100-row position-truncated TSStable fixture with a deterministic
482-row promoter-aware fixture containing equal promoter-near and background
positions. The vignette now shows the complete import-to-annotation workflow
for user data and consistently names the main example object myTSSr.
Made the 10th- and 90th-percentile TSS cluster boundaries deterministic across platforms. Cumulative signal that equals a percentile threshold within a scale-aware floating-point tolerance is now treated as having reached that threshold, consistently with the documented definition that the interval contains at least 80% of the cluster signal. The same rule is used for tag clusters and consensus clusters in single- and multicore code.
Added public-workflow regression tests for exact-threshold behavior and invariance under positive signal scaling. Cluster coordinates and other discrete fields remain exact in cross-platform comparisons; only aggregate floating-point tag sums use a relative tolerance. On the bundled chromosome I data, the deterministic rule changes one control cluster's lower boundary from 123531 to 123502 and its interquantile width from 16 to 45. Its promoter shape score changes accordingly; assigned clusters, enhancers, differential expression, TAG tables, and promoter-shift results are unchanged.
Reduced repeated work in tests and examples without skipping any code paths.
Workflow examples now run on the bundled 100-row, four-sample, two-strand
TSStable input rather than recomputing against the full example object. On
the Linux Bioconductor devel container used for validation, no example takes
more than five seconds and R CMD check --no-vignettes --no-manual decreased
from 566 to 421 seconds while all 1,000 test assertions still run.
GFF-based annotation no longer requires GenomeInfoDbData or a taxonomic
lookup. organismName remains available as optional descriptive metadata
for backward compatibility, but cluster-to-gene assignment is determined
from the coordinates and strands in refSource or refTable. Earlier
versions passed this value only to metadata on a temporary TxDb object; it
did not participate in the annotation calculation.
Added a reproducible GFF3 fixture containing the first 12 complete genes and
associated features from the original SGD R64-2-1 chromosome-I annotation.
Public annotateCluster() tests compare its results with an equivalent
refTable workflow on both strands.
Added public-API import coverage for BED, per-sample TSS tables, BigWig, and paired-end BAM. The tests verify format-specific coordinate, strand, aggregation, missing-site, signed-score, and proper-first-mate behavior. A reproducible 346-byte paired BAM fixture is generated from real sacCer3 sequence and requires no BAM index.
Added 13 documented, read-only accessors for TSS matrices, reference data,
library sizes, and analysis results. Table accessors return independent base
data.frame copies rather than exposing the package's internal data.table
representation. User-facing examples, the README, and the vignette now use
these accessors instead of direct slot access.
DEtables() explicitly selects either all tested genes or significant genes
with result = "all" or result = "significant".
Updated the getTSS() man-page example to import a reproducible 100-row,
four-sample TSStable fixture containing 50 TSSs from each strand. All
reviewer-requested user-facing examples now execute their documented
functions during R CMD check.
Added a reproducible, unindexed micro-BAM fixture built from real sacCer3
chromosome-I sequence. Its public getTSS() regression test covers both
strands, insertion/deletion/soft-clipping CIGAR operations, terminal
matched and mismatched G correction, quality filtering, and count
aggregation. The expected minus-strand coordinates distinguish reference
width from the former query-width implementation.
Removed inert legacy QA assertions that did not exercise TSSr. Single-sample consensus, DESeq2 output columns, and plot/export prerequisites now have behavior-level assertions, so missing results cannot produce an empty PASS.
Mutating workflow functions now return a modified TSSr object without
changing the caller's object. Assign the result to retain each operation:
Before: mergeSamples(myTSSr)
After: myTSSr <- mergeSamples(myTSSr)
Standardized all 25 exported S4 generics and restricted method dispatch to
the object argument; configuration arguments no longer participate in
dispatch.
Removed Bioconductor-build-specific test skips. Core workflow tests, the seven workflow examples, and the vignette now execute their documented functions on the reduced chromosome I example data.
Updated the vignette installation instructions to use
BiocManager::install("TSSr").
Added a compact show() method for TSSr objects. Displaying an object now
reports its data dimensions and analysis result counts without printing full
slot contents.
Fixed deGene() so TAG count tables are recomputed from the current assigned
clusters and accumulated in memory across multiple comparisons. This removes
stale cached results and the previous disk-backed return channel.
Updated the reduced example workflow to use an effective TPM filtering threshold and to verify that filtering strictly reduces the processed TSS matrix.
Added explicit normalization state to TSSr objects. Filtering no longer
guesses state from column sums, so normalized data remain valid after rows
are removed and repeated normalization is rejected reliably.
Promoter-shift Ds, pval, and padj columns are now consistently numeric
so downstream sorting, plotting, and arithmetic use their intended types.
Fixed promoter-shift chi-squared tests to use raw counts reconstructed from
TPM values and sample library sizes. The previous implementation calculated
the raw-count table but mistakenly tested the TPM table instead. In the
bundled chromosome I workflow, all 65 testable genes retain the same effect
sizes, while the genes significant at pval = 0.01 decrease from 25 to 24;
YAR019W-A is no longer significant. Expected sparse-table approximation
warnings increase from 35 to 42 and are not suppressed. The p-value direction
is scale-dependent: reconstructed counts reduce effective sample size when
librarySize / 1e6 is below one and increase it when the factor is above
one; effect-size calculations are unchanged.
Fixed restoration of graphical parameters after drawing correlation panels. Correlation documentation now states how non-positive values are handled on logarithmic scatterplot axes.
Corrected exportTSStable() raw export semantics. Raw exports now always
originate from TSSrawMatrix; merged = TRUE combines raw sample counts
according to mergeIndex and writes ALL.samples.TSS.raw.merged.txt.
Unmerged raw and processed exports remain distinct as
ALL.samples.TSS.raw.txt and ALL.samples.TSS.processed.txt.
Made TSS table import/export round trips robust to exponent notation. Imported genomic positions are validated and stored as integers, exported coordinates use integer notation, and TSStable sample values are written without scientific notation without changing global R options.
Allowed one multi-sample TSStable file to be paired with all of its sample
column labels. Constructor and class validation now compare mergeIndex
with sampleLabels, while retaining one-file-per-sample validation for the
other input formats.
Moved feature-specific heavy dependencies DESeq2, Gviz, ggfortify, and calibrate from Imports to Suggests. Core package loading no longer imports them; functions that need them load their namespace on demand and report an actionable installation command when a package is unavailable.
Optimized clusterTSS(method = "peakclu") peak detection by replacing
repeated per-row window scans with indexed range-maximum lookups. Permanent
regression tests cover open-window boundaries, tied signals, public return
semantics, and exact agreement with the previously generated tag clusters.
Removed an unused genome load from clusterTSS(), reducing fixed overhead
without changing clustering output.
Historical note: the untagged development commit 09fa236 temporarily used
version 0.99.17 for the peakclu optimization. The published v0.99.17 tag
identifies a different Bioconductor-review checkpoint; both histories are
reconciled in 0.99.19.
Fixed BAM CIGAR width handling so aligned read intervals are calculated in reference coordinates. Soft clips, hard clips, and insertions no longer inflate the reference span used to determine minus-strand TSS coordinates.
Restored the BAM terminal correction to the original G-only biological rule while correcting the implementation. With softclippingAllowed = FALSE, plus-strand reads trim only leading mismatched G bases, and minus-strand reads trim trailing C bases as transcript-sense 5' G bases. Non-G mismatches are not trimmed, and consecutive mismatched terminal G bases are removed until the first matched G or non-G read base.
Clarified that softclippingAllowed = TRUE uses the aligner's aligned 5' boundary directly and skips uncoded G correction.