什么是CNV?
copy number variation (CNV)
A copy number variation (CNV) is when the number of copies of a particular gene varies from one individual to the next. Following the completion of the Human Genome Project, it became apparent that the genome experiences gains and losses of genetic material. The extent to which copy number variation contributes to human disease is not yet known. It has long been recognized that some cancers are associated with elevated copy numbers of particular genes.
https://github.com/broadinstitute/inferCNV
教程:InferCNV: Inferring copy number alterations from tumor single cell RNA-Seq data
安装
conda install -c conda-forge jags if (!requireNamespace("BiocManager", quietly = TRUE)) install.packages("BiocManager") BiocManager::install("infercnv") library(infercnv)
下载github仓库测试数据
git clone https://github.com/broadinstitute/infercnv.git cd inferCNV/example Rscript ./run.R
进入服务器jupyter,查看和准备输入文件:
# create the infercnv object infercnv_obj = CreateInfercnvObject(raw_counts_matrix=system.file("extdata", "oligodendroglioma_expression_downsampled.counts.matrix.gz", package = "infercnv"), annotations_file=system.file("extdata", "oligodendroglioma_annotations_downsampled.txt", package = "infercnv"), delim=" ", gene_order_file=system.file("extdata", "gencode_downsampled.EXAMPLE_ONLY_DONT_REUSE.txt", package = "infercnv"), ref_group_names=c("Microglia/Macrophage","Oligodendrocytes (non-malignant)"))
system.file("extdata", "oligodendroglioma_expression_downsampled.counts.matrix.gz", package = "infercnv") system.file("extdata", "oligodendroglioma_annotations_downsampled.txt", package = "infercnv") system.file("extdata", "gencode_downsampled.EXAMPLE_ONLY_DONT_REUSE.txt", package = "infercnv")
因为R版本不够,不能在本地装上最新的版本,可以用容器代替。
module load singularity singularity build infercnv.latest.simg docker://trinityctat/infercnv:latest singularity exec -e -B `pwd` infercnv.latest.simg Rscript run.R
需要运行的R脚本
#!/usr/bin/env Rscript options(error = function() traceback(2)) packageVersion("infercnv") library("infercnv") # create the infercnv object infercnv_obj = CreateInfercnvObject(raw_counts_matrix="~/project/scPipeline/infercnv/cell.count.matrix.txt.gz", annotations_file="~/project/scPipeline/infercnv/cell.anno.txt", delim=" ", gene_order_file="~/project/scPipeline/infercnv/gene.anno.txt", ref_group_names=c("IMR_ENCC","UE_ENCC")) out_dir="HSCR_CNV" # perform infercnv operations to reveal cnv signal infercnv_obj = infercnv::run(infercnv_obj, cutoff=1, # cutoff=1 works well for Smart-seq2, and cutoff=0.1 works well for 10x Genomics out_dir=out_dir, cluster_by_groups=TRUE, plot_steps=FALSE, denoise=TRUE, HMM=TRUE, num_threads=10 )
可能不是癌症样本,结果没有那么突出。
结果解读
把基因按染色体的坐标排列,如果某个染色体片段的表达显著提高或减少,则说明其CNV发生了变化。
参考文章:Single-cell RNA-seq highlights intratumoral heterogeneity in primary glioblastoma
结果描述:
Normalization of CNV profiles using signal from the ‘normal’ cluster revealed coherent chromosomal aberrations in each tumor (Fig. 1C). Gain of chromosome 7 and loss of chromosome 10, the two most common genetic alterations in glioblastoma (20), were consistently inferred in every tumor cell. Chromosomal aberrations were relatively consistent within tumors, with the exception that MGH31 appears to contain two genetic clones with discordant copy number changes on chromosomes 5, 13 and 14. While this data suggests largescale intratumoral genetic homogeneity, we recognize that heterogeneity generated by focal alterations and point mutations will be grossly underappreciated using this method. Nevertheless, such panoramic analysis of chromosomal landscape effectively separated normal from malignant cells.
待续~
参考: