BiocManager installation from devel; nothing in the package changed.Changes from the Bioconductor review and a pass over the submission guidelines. Nothing here changes a score.
BiocManager instructions in an unevaluated chunk.for loops remain in the repository. The cross-validation in the
vignette and the block-ordering check in the tests use lapply(); the
data-raw/ scripts use lapply() and vapply(). Every script was run
in both forms against the same inputs, and its output is unchanged.SummarizedExperiment example is now an evaluated chunk,
its "Background" section is titled "Introduction", and the unevaluated
TCGA chunk says why it is not run.print() for brs_fit objects is documented on ?brs_fit.A review of the whole package against what a Bioconductor reviewer looks at found no error in the score, and the following, all fixed:
brs_score() warned that assay was ignored whenever one of expr and
newdata was a SummarizedExperiment and the other a matrix, although
assay had been used for the container. It now goes only to the side
that is a SummarizedExperiment.predict() with standardize = "rank" and a single signature gene
crashed inside dimnames<-; it now reaches the ordinary "no signature
gene varies" error.ARNTL twice scored silently against a fit that knew the
gene as BMAL1. Both spellings are checked.log2_transform = TRUE on a matrix with negative values is an error
instead of a warning followed by a cascade of NaN warnings.predict.brs_fit() checks that object is a brs_fit. An assay that
is not a single name or index, or a numeric index out of range, is a
package error rather than a subscript error from SummarizedExperiment.brs_score() accepts containers for newdata; each
reference group needs two samples; brs_class is NA for a sample with a
missing value; "rank" ranks within the signature, not the transcriptome;
the TCGA section of the vignette describes the columns of
thca_reference.csv.inst/CITATION gives the TCGA Research Network as a single person, so
text and BibTeX renderings no longer split the name.data-raw/ are links to the repository.ExpressionSet with
labels as a pData() column, the dropped-gene listing of print(),
validate_brs() with unscored samples, input checks, one-signed
brs_scaled, and the fixes above.data-raw/: the three within/between-block correlations quoted for
GSE33630 were left over from an earlier matrix and nothing computed
them; portability.R now prints them and the notes carry the recomputed
values. derive_signature.R prints the consistency figures the notes
quote (with the definition of the median stated), and stops if a worker
fails. record_session() records the inputs, knobs and commit of each
run. validate_tcga.R sends readers to build_inputs.R for the matrix
instead of a recipe that could produce a different one; build_inputs.R
passes the GDC directory to GDCprepare() instead of relying on its
name. The median selection frequency quoted in the README and the notes
is 93-97% (93.5% and 97.2%), computed over the 70 usable published genes;
the earlier 92-97% had counted a gene absent from every annotation.Changes from a review of the package against what a Bioconductor reviewer looks at. Nothing here changes a score: the numbers in the README and the vignette are unchanged.
?validate_brs was the worst of it: the page that explains why
resubstitution is not validation reported 75% concordance on noise. It now
fits on 12 samples, compares against 20, and reports how many of them were
resubstituted.?brs_genes pointed at data-raw/, which .Rbuildignore keeps out of the
tarball, so an installed package sent readers to files it does not have.
Those references now name the repository and link to it.predict() warns about anything passed through ... instead of dropping
it. A misspelled standardise= silently produced the default
standardization, which decides the class threshold.KRAS/NRAS/
HRAS are recognised, so TCGA-shaped label columns work as written. The
error raised when nothing matches now lists the values it saw.validate_brs() checks that predictions is what it claims to be, and its
confusion table always carries both classes on both margins. It could
previously return a 1x1 table, which broke indexing it by name.genes_missing_values and shown by print(). The
accounting of requested genes is now complete.brs_fit() and predict() cut the matrix down to the signature before
applying log2(), rather than transforming and copying all ~60,000 rows to
use ~70 of them. Same result.?containers is user-facing documentation and is no longer marked
internal; brs_fit() and a runtime warning both send readers to it.BiocManager.These changes were first pushed as 0.99.4. That version number was consumed by the submission bot while it was reporting the previous build, so it could never receive a build report of its own; the version was incremented again rather than leave the reviewed code unreported.
DriverMutation biocView. The score is defined by resemblance to
two driver-mutation transcriptional profiles, so the term belongs; the
SingleCell term BiocCheck also suggested does not, as the package is bulk
only.fnd) in Authors@R.portability.R expected a bare matrix where
build_inputs.R writes a list, and derive_signature.R defaulted to a
filename holding a different structure.expected_outputs.R compared predictions by row position, so a changed
sample set would have been reported as identical -- the one case it exists
to catch. It now requires the same samples.build_inputs.R asserts the GSE33630 group split. Without it a change to
the GEO annotation would have sent every array to "normal" and saved an
empty PTC matrix silently.inst/CITATION no longer renders a version-less note when read without
package metadata.brs_genes.md: the global block orientation
was defined from the same data it is checked against, so only the per-gene
agreement is a real result.inst/CITATION is ASCII, so BiocCheck can read it: it calls
readCitationFile() without package metadata, which leaves a non-ASCII
character in an author's name with no declared encoding. This was the
bioc-checks WARNING on the first build report.data-raw/ now builds every input matrix, the reference labels and the
expected outputs from their sources, and records sessionInfo() beside
each result. Addresses an independent reproducibility audit.predict() now returns the score defined in Agrawal et al., Extended
Experimental Procedures 14.1 — the difference of normalized Euclidean
distances to the two centroids. Previous versions returned the difference
of squared distances, which has the same sign (so classes are unchanged)
but a different magnitude and a different rank order.brs_scaled column: the score rescaled to [-1, 1]
across the scored samples, which is the axis the published TCGA-THCA values
use.brs_fit() now records log2_transform in the fitted object and
predict() reuses it. Previously the two could silently disagree, which
produced meaningless scores with no error or warning.brs_fit() accepts driver-mutation labels ("BRAF_V600E", "RAS") as well
as the previous "Braf-like"/"Ras-like" values, and the documentation now
steers towards mutation status. The reference groups in the paper are
defined by genotype; the published BRAF_RAF_class column is the
classifier's own output and fitting on it is circular.brs_fit() errors instead of silently producing NaN centroids when a
reference group has fewer than two samples.brs_fit() warns when signature genes are absent from expr, instead of
dropping them silently.ARNTL was renamed BMAL1 after the paper, so
GENCODE v36 matrices and current ones spell it differently; both now give
the full 70 genes.predict() warns when samples cannot be scored because of missing values,
and when duplicated row names force it to pick one row per gene."Ras-like" rather than left to
the reader.validate_brs() gains a fit argument, reports n_resubstituted, and
warns when every compared sample also defined the centroids.SummarizedExperiment or an ExpressionSet as
well as a matrix, with assay= to pick the assay and labels optionally
naming a colData()/pData() column. See ?containers.predict() and brs_score() gain standardize, choosing how newdata is
put on the centroids' scale: "reference" (the default, unchanged
behaviour), "cohort" or "rank". The default keeps a sample's score
independent of the company it is scored with; the other two trade that away
to make the class threshold usable across platforms. See
?predict.brs_fit.predict() warns when every scored sample falls on the same side of zero,
which is what a cross-platform threshold mismatch looks like.biocViews, inst/CITATION, and a BiocStyle vignette; version
numbering moved to the 0.99.z series used for Bioconductor submission.brs_genes gains block and up_in: the two row-clusters of Figure S7A
and the group each is higher in. Refitting on TCGA-THCA recovers this split
for 70 of 70 genes.data-raw/ documents the provenance of the gene list
(brs_genes.md), re-checks the symbols (check_symbols.R), reproduces
the TCGA validation (validate_tcga.R), re-derives the signature from the
data (derive_signature.R, results in signature_rederivation.md) and
records what does and does not transfer to microarrays
(microarray_notes.md).inst/extdata/thca_reference.csv carries the TCGA-THCA driver-mutation
status and published BRS, so the validation does not depend on the paper's
supplementary spreadsheet.