The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
genevintage answers two questions about a set of gene
identifiers: which species, and which release. Both are answered from
the identifiers alone, using the bundled fingerprint index.
detect_species() first works out what fraction of the
input each candidate species’ identifier prefix explains:
ids <- c(
"ENSMUSG00000051951", "ENSMUSG00000089699", "ENSMUSG00000051951",
"TP53"
)
cand <- detect_species(ids)
head(cand[, c("species", "prefix", "frac")])
#> species prefix frac
#> 1 mus_musculus ENSMUSG 0.75
#> 2 mus_musculus_cbaj ENSMUSG 0.75
#> 3 mus_musculus_fvbnj ENSMUSG 0.75
#> 4 mus_musculus_c3hhej ENSMUSG 0.75
#> 5 mus_musculus_nodshiltj ENSMUSG 0.75
#> 6 mus_musculus_dba2j ENSMUSG 0.75Three of the four inputs (one a repeat) carry the
ENSMUSG prefix, so every mouse strain that shares it ties
at frac = 0.75. Ties are broken in order by:
reach. Could the species have issued
the input’s highest identifier number? The largest number in the input
is compared with the largest qmax (the highest identifier
number in a gene set) ever indexed for the species, within
QMAX_TOLERANCE.fit. How close is the input’s gene
count to a real gene set? It is the smallest log-scale gap between the
number of unique IDs and any indexed release’s gene count. It is only
informative for a full gene set.Any remaining tie is broken by species name, for a stable order; such
species are indistinguishable from the identifiers alone.
reach and fit are used for ranking only and
are not returned.
detect_release() compares the input against the
fingerprint index and rules out releases that could not have produced
it, using two facts:
QMAX_TOLERANCE lets a release’s qmax fall
slightly short of the input’s highest number. Ensembl sometimes retires
its top-numbered genes, which lowers qmax without changing
the assembly. qmax_violations() lists every case in the
shipped index:
qmax_violations()
#> [1] "camarhynchus_parvulus 11: qmax falls sharply at release 108 -- check the assembly labels"
#> [2] "corvus_moneduloides 1: qmax falls sharply at release 108 -- check the assembly labels"
#> [3] "melopsittacus_undulatus 1: qmax falls sharply at release 108 -- check the assembly labels"
#> [4] "ovis_aries 31: qmax falls sharply at release 114 -- check the assembly labels"
#> [5] "takifugu_rubripes 4: qmax falls sharply at release 49 -- check the assembly labels"Where a violation exists, detect_release() skips the
floor for that species, since the check would fail against the species’
own history.
Among the releases left feasible, distance ranks the rest:
ids2 <- readLines(system.file("extdata", "example_ids.txt.gz",
package = "genevintage"
))
head(detect_release(ids2), 3)
#> species source release assembly feasible dist n_index
#> 1 homo_sapiens gencode 44 38 TRUE 1.1551 62700
#> 2 homo_sapiens gencode 46 38 TRUE 1.1582 63086
#> 3 homo_sapiens gencode 45 38 TRUE 1.1599 63187dist is the absolute difference in
log1p(gene count) between the input and each candidate
release, so a thousand genes matter less in human (tens of thousands of
genes) than in a species with a few hundred. For species whose
identifier numbers are ordered, it adds the same comparison on the 90th
percentile of identifier numbers, which separates releases that share a
gene count but use different numbers.
Most non-Ensembl schemes carry no order in their identifier numbers. Such schemes skip the numeric floor and the quantile term entirely:
head(detect_release(c("YAL001C", "YAL002W", "YAL003W"), species = "yeast"), 5)
#> sgd identifiers are not numerically ordered; ranking by gene count alone.
#> species source release assembly feasible dist n_index
#> 1 saccharomyces_cerevisiae ensembl 94 4 NA 7.4110 6615
#> 2 saccharomyces_cerevisiae ensembl 95 4 NA 7.4110 6615
#> 3 saccharomyces_cerevisiae ensembl 96 4 NA 7.4110 6615
#> 4 saccharomyces_cerevisiae ensembl 100 4 NA 7.4246 6706
#> 5 saccharomyces_cerevisiae ensembl 101 4 NA 7.4246 6706Human and mouse are indexed against GENCODE as well as Ensembl, since
their RNA-seq is often quantified against GENCODE, whose gene set
differs in size from Ensembl’s at the same release.
detect_release() ranks across both and reports which one
each row came from in source.
The index covers a fixed range of releases. If your best match is the
oldest or newest release in that range, treat it with caution. Your IDs
may come from a release just outside the range.
detect_release() warns when this happens.
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.