Question: Hi all, I am new to the BioInformatics, and quite a beginner in programming languages. Can anyone suggest me some sources where I can at least learn 50% of the scRNA seq data analysis? I am familiar with C language, and I know a little bit of molecular biology too.

Answer: The [Hemberg Lab](https://hemberg-lab.github.io/scRNA.seq.course/) has a very useful introduction to scRNA-seq analysis using R.

In terms of R packages and actually understanding why the objects are becoming fairly complex, the [explanations from the bioconductor people](https://www.biorxiv.org/content/10.1101/590562v1.full) are fairly insightful and the principles are applicable to Seurat, too (although the names of the accessor functions for, say, retrieving the matrix of read counts, will be different). The accompanying book is [here](https://osca.bioconductor.org/).

Generally, there are these steps that the analysis will involve:

1. **Read alignment** (FASTQ --> BAM), depends a bit on the type of data you have, for data from the 10X Genomics platform, they offer their [CellRanger](https://support.10xgenomics.com/single-cell-gene-expression/software/pipelines/latest/what-is-cell-ranger) software, but there are other tools like [alevin](https://salmon.readthedocs.io/en/latest/alevin.html) and [STARsolo](https://github.com/alexdobin/STAR/releases). This step is usually done for all NGS data, but it is slightly more complicated for single-cell data because the tools need to keep track of where each read came from (which cell and which transcript, if UMI were used)
2. **Count matrix generation**: The first major goal is to obtain a matrix of read counts per gene, where rows usually correspond to genes and columns to cells. For single-cell RNA-seq, this is usually part of the alignment step.
3. **Filtering, Normalization, Batch correction, ...**: this is where scRNA-seq becomes really frustrating, even for experienced bioinformaticians because there's no real consensus yet as to how scRNA-seq data is properly normalized. This is why many people will point you to `Seurat`, which pretends it has it all figured out by providing functions that are aptly named `NormalizeData` and `ScaleData` and if your data looks similar to what people have been working with, the default settings may work.
4. **Dimensionality reduction**: tSNE, PCA, UMAP, ... These are techniques to allow you to represent the data in a xy-coordinates ( = 2 dimensions) rather than the original number of dimensions your count matrix will have (probably something like 30 000 genes x 10 000 cells).
5. **Clustering cells**: usually done with graph-based methods because they seem to offer the best compromise between speed and accuracy for single-cell data, there are a couple of excellent reviews on the topic: [Menon 2018](https://www.ncbi.nlm.nih.gov/pubmed/29236955), [Kiselev 2019](https://www.ncbi.nlm.nih.gov/pubmed/30617341), and some benchmarking papers: [Duo 2019](https://f1000research.com/articles/7-1141/v1), [Freytag 2019](https://f1000research.com/articles/7-1297/v1)
6. **Assigning labels to cells**: this is usually the main goal of many scRNA-seq data sets these days and it's usually quite tricky, but in principle, we're expecting to see certain genes that are only expressed in certain clusters of cells (**marker genes**) and based on those we try to infer the "cell type". While not very technical in nature, I found the discussions by Jesse Gilles and Meghan Crow ([here](https://www.ncbi.nlm.nih.gov/pubmed/30146183) and [here](https://www.ncbi.nlm.nih.gov/pubmed/30654233)) quite insightful.

In short, as other have pointed out, scRNA-seq is really not ideal to start out as a bioinformatician because it's a fairly new data type and we're still grappling with all its intricacies and caveats. That being said, you may find more automated solutions like the one provided by the EPFL ([asap](https://asap-beta.epfl.ch/)) useful to play around with some data, just be cautious with making bold interpretations and claims.