diff --git a/docs/main_text.md b/docs/main_text.md index 5f85620..3e8f960 100644 --- a/docs/main_text.md +++ b/docs/main_text.md @@ -9,7 +9,7 @@ We normalize data to Ensembl gene identifiers and provide abundance estimates. More precisely, we support microarray platforms based on their GEO or ArrayExpress accessions. We currently support Affymetrix microarrays and Illumina BeadArrays, and we are continuing to evaluate and add support for more platforms. This table contains the microarray platforms that we support. -We process a subset of platforms using the BrainArray Custom CDFs, which are denoted by a `y` in the `is_brainarray` column. +We process a subset of Affymetrix platforms using the BrainArray Custom CDFs, which are denoted by a `y` in the `is_brainarray` column. We also support RNA-seq experiments performed on these short-read platforms. For more information on how data are processed, see the [Processing Information](#processing-information) section of this document. If there is a platform that you would like to see processed, please file an issue on GitHub. @@ -103,8 +103,9 @@ SCAN (Single Channel Array Normalization) is a normalization method for develop SCAN models and corrects for the effect of technical bias, such as GC content, using a mixture-modeling approach. For more information about this approach, see the primary publication (Piccolo, et al. _Genomics._ 2012.) and the SCAN.UPC Bioconductor package documentation. We specifically use the `SCANfast` implementation of SCAN and the Brainarray packages as probe-summary packages when available. +When available, we use BrainArray Custom CDFs during processing with SCAN. -##### Platform detection +##### Affymetrix platform detection We have encountered instances where the platform label from the source repository and the metadata included in the sample's raw data file (`.CEL` file) itself do not match. In these cases, we take the platform information included in the raw data (`.CEL`) file header to be the true platform label. @@ -120,7 +121,7 @@ Following background correction -- either upstream presumably in the Illumina Be SCAN requires probe sequence information obtained from the Illumina BeadArray Bioconductor annotation packages (e.g., `illuminaHumanv1.db`). We only retain probes that have a "Good" or "Perfect" rating in these packages; this quality rating is in reference to how well a probe is likely to measure its target transcript. -##### Platform detection +##### Illumina platform detection We infer the Illumina BeadArray platform that a sample is likely to be run on by comparing the probe identifiers in the unprocessed file to probes for each of the Illumina expression arrays for a given organism. We again use the Illumina Bioconductor annotation packages for this step. @@ -128,6 +129,21 @@ For instance, the overlap between the probe identifiers in a human sample and th The platform with the highest overlap (provided it is >75%) is inferred to be the true platform. Some analyses around this platform detection procedure can be found in this repository. +##### Handling Illumina probes that map to multiple Ensembl gene identifiers + +Illumina probes sometimes map to multiple Ensembl gene identifiers when using the annotation in Illumina BeadArray Bioconductor annotation packages (e.g., `illuminaHumanv1.db`). +For human platforms in particular, these genes tend to be from highly polymorphic loci, e.g., Killer-cell immunoglobulin-like receptors. +Because refine.bio allows users to combine samples from multiple platforms, we prioritize Ensembl gene identifiers that maximize compatibility with other platforms. +Specifically, we select genes in order of priority as follows: + +- Pick the gene ID with the most appearances in BrainArray packages for Affymetrix platforms of the same species as the input Illumina platform +- If two or more of the associated gene IDs appear an equal number of times in BrainArray packages, or if none of the associated gene IDs appear in any BrainArray package, we break ties as follows: + - First, we check Ensembl and filter out any gene IDs that are no longer valid + - Next, if there are any Ensembl genes on the primary assembly, we take only the genes on the primary assembly and discard genes in haplotypes (alternative versions of the genome) or patches. + - If there are still two or more genes left, we pick the gene with the lowest Ensembl gene identifier to break the tie. This is an arbitrary but consistent way to break ties. + +This is implemented in `AlexsLemonade/illumina-refinery`. + ### RNA-seq pipelines ![rna-seq-pipeline](https://user-images.githubusercontent.com/15315514/44549339-c86fd680-a6ee-11e8-8d62-419ae7f10a94.png)