复现此篇文章: https://mp.weixin.qq.com/s/5Bdx7YyAk8InYs2MFIUUVQ
下载相应的R包
options(BioC_mirror="http://mirrors.ustc.edu.cn/bioc/") # 设置镜像
BiocManager::install('stringi')
BiocManager::install('GEOquery')
BiocManager::install('limma')
BiocManager::install('ggfortify')
BiocManager::install('ggplot2')
BiocManager::install('pheatmap')
BiocManager::install('ggstatsplot')
BiocManager::install('VennDiagram')
BiocManager::install('clusterProfiler')
BiocManager::install('org.Hs.eg.db')
浏览器下载gtf格式文件:没录全屏,最后点击链接后,浏览器就开始下载文件了。
gtf.gif
gtf格式:GTF基因注释文件详解
gunzip .gtf.zip文件
cat .gtf文件
tail .gtf文件
通过以上步骤复制粘贴出前后的两条注释,做初步了解:
1 havana gene 11869 14409 . + . gene_id "ENSG00000223972"; gene_version "5"; gene_name "DDX11L1"; gene_source "havana"; gene_biotype "transcribed_unprocessed_pseudogene";
KI270713.1 ensembl CDS 35407 35913 . + 0 gene_id "ENSG00000268674"; gene_version "2"; transcript_id "ENST00000601199"; transcript_version "2"; exon_number "1"; gene_name "AC213203.1"; gene_source "ensembl"; gene_biotype "protein_coding"; transcript_name "AC213203.1-201"; transcript_source "ensembl"; transcript_biotype "protein_coding"; protein_id "ENSP00000473163"; protein_version "
- seq_id:序列的编号,一般为chr或者scanfold编号;
- source: 注释的来源,一般为数据库或者注释的机构,如果未知,则用点“.”代替;
- type: 注释信息的类型,比如Gene、cDNA、mRNA、CDS等
- start:该基因或转录本在参考序列上的起始位置;
- end: 该基因或转录本在参考序列上的终止位置;
- score: 得分,数字,是注释信息可能性的说明,可以是序列相似性比对时的E-values值或者基因预测是的P-values值,“.”表示为空;
- strand: 该基因或转录本位于参考序列的正链(+)或负链(-)上;
- phase: 仅对注释类型为“CDS”有效,表示起始编码的位置,有效值为0、1、2(对于编码蛋白质的CDS来说,本列指定下一个密码子开始的位置。每3个核苷酸翻译一个氨基酸,从0开始,CDS的起始位置,除以3,余数就是这个值,,表示到达下一个密码子需要跳过的碱基个数。该编码区第一个密码子的位置,取值0,1,2。0表示该编码框的第一个密码子第一个碱基位于其5'末端;1表示该编码框的第一个密码子的第一个碱基位于该编码区外;2表示该编码框的第一个密码子的第一、二个碱基位于该编码区外;如果Feature为CDS时,必须指明具体值。);
- attributes:一个包含众多属性的列表,格式为“标签=值”(tag=value),标签与值之间以空格分开,且每个特征之后都要有分号;(包括最后一个特征),其内容必须包括gene_id和transcript_id。以多个键值对组成的注释信息描述,键与值之间用“=”,不同的键值用“;
要得到基因与基因类型的对应关系即需要取出第三列和 gene_name这一列。
cat Homo_sapiens.GRCh38.96.gtf >hg38
awk '{print $3}' hg38 >type1 #输出第三列内容到type1里
sed '/^\s*$/d' type1 >type2 删除空行并输出内容到type2里
uniq type2 >type3 #去掉重复行
awk '{print NR $0}' type3 | tail -1 #统计行数
awk命令:awk '{pattern + action}' 或者 awk 'pattern {action}'
-
作用:把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
-
pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号 ({}) 不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。
-
变量NF : field 在文本文件表示一个竖行
NR:record 在文本文件表示一个横行
awk '{print $0}' tmp.txt # 打印出tmp.txt的全部内容 $0:全部内容 $1:第一列 $n:第n列
awk'$3==1986{print $0}' tmp.txt #第三列是1986则打印出所有内容
awk '{if($0!="") print}' tmp.txt #删除空行
awk '{if(!NF || /^#/){next}}1' file1 实现对文件里面的空行和#开头的行进行跳过操作,并输出结果。
sed命令:
附:
网友评论