第一单元 基因组学相关基础知识(8分)
1、 人类基因组组成与遗传规律:
-
DNA的分子结构
DNA分子是以A,T,C,G 4种脱氧核苷酸为单位组成的双螺旋结构。碱基对是以氢键相结合的两个含氮碱基,以胸腺嘧啶(T)、腺嘌呤(A)、胞嘧啶(C)和鸟嘌呤(G)四种碱基排列成碱基序列,其中A与T之间由两个氢键连接,G与C之间由三个氢键连接。 -
DNA复制方式
半保留复制。
起始阶段->DNA 片段生成->RNA引物水解->完整DNA分子形成->螺旋结构形成 -
人类基因组DNA序列特征
人类基因组由23对染色体组成,其中包括22对常染色体、1条X染色体和1条Y染色体。1号到22号染色体编号顺序,大致符合他们由大到小的尺寸排列。共含有约31.6亿个DNA碱基对,最大的染色体约含有2亿5千万个碱基对,最小的则约有3800万个碱基对。
2、基因及其表达与调控: -
基因的基本结构
-
基因的表达
基因表达是指细胞在生命过程中,把储存在DNA顺序中遗传信息经过转录和翻译,转变成具有生物活性的蛋白质分子的过程。 -
基因表达的调控
基因表达调控是生物体内基因表达的调节控制,使细胞中基因表达的过程在时间、空间上处于有序状态,并对环境条件的变化作出反应的复杂过程。
基因调控主要发生在3个水平上,即:DNA修饰水平、RNA转录的调控、和mRNA翻译过程的控制;
微生物通过基因调控可以改变代谢方式以适应环境的变化,这类基因调控一般是短暂的和可逆的;多细胞生
物的基因调控是细胞分化、形态发生和个体发育的基础,这类调控一般是长期的,而且往往是不可逆的。
3、 基因突变及其生物学效应:
- 基因突变类型
基因突变指基因组DNA分子发生的突然的、可遗传的变异现象。主要类型包括碱基置换突变、移码突变、缺失突变、插入突变。
(1) 碱基置换突变:指DNA分子中一个碱基对被另一个不同的碱基对取代所引起的突变,也称为点突变。
(2) 移码突变:指DNA片段中某一位点插入或丢失一个或几个(非3或3的倍数)碱基对时,造成插入或丢失位点以后的一系列编码顺序发生错位的一种突变。
(3) 缺失突变:基因也可以因为较长片段的DNA的缺失而发生突变。
(4) 插入突变:一个基因的DNA中如果插入一段外来的DNA,那么它的结构便被破坏而导致突变。 - 基因突变的生物学效应
碱基置换突变和移码突变都能使多肽链中氨基酸组成或顺序发生改变,进而影响蛋白质或酶的生物功能,使机体的表型出现异常。碱基突变对多肽链中氨基酸序列的影响一般有四种类型:同义突变、错义突变、无义突变、终止密码突变。 - 基因突变的诱变因素
(1) 外因。物理因素(x射线、激光、紫外线、伽马射线等)、化学因素(亚硝酸、黄曲霉素、碱基类似物等)、生物因素(某些病毒和细菌等);
(2) 内因。DNA复制过程中,基因内部的脱氧核苷酸的数量、顺序、种类发生了局部改变从而改变了遗传信息。 - DNA损伤的修复
DNA损伤修复是细胞对DNA受损伤后的一种反应,这种反应可能使DNA结构恢复原样,重新能执行它原来的功能;但有时并非能完全消除DNA的损伤,只是使细胞能够耐受这DNA的损伤而能继续生存。对不同的DNA损伤,细胞可以有不同的修复反应。在哺乳动物细胞中有四个较为完善的DNA修复通路,分别是核苷酸切除修复、碱基切除修复、重组修复和错配修复。
4、 人类基因组学: -
人类基因组计划
于20世纪80年代提出,由美、英、日、中、德、法等国参加并于2001年完成的针对人体23对染色体全部DNA的碱基对序列进行排序,对大约25 000个基因进行染色体定位,构建人类基因组遗传图谱和物理图谱的国际合作研究计划。
2) 人类基因组单体型图计划
国际人类基因组单体型图计划(简称HapMap计划)是由多个国家(加拿大、中国、日本、尼日利亚、英国和美国)联合进行的项目。这一计划的目的在于建立一个免费向公众开放关于人类疾病(及疾病对药物反应)相关基因的数据库。利用HapMap数据库,研究人员通过比较不同个体的基因组序列来确定染色体上共有的变异区域。这将能够发现与人类健康、疾病以及对药物和环境因子的个体反应差异相关的基因。
3) 人类DNA元件百科全书计划
“DNA元件百科全书”计划(encyclopedia of dna elements,encode)是继“人类基因组计划”后最大的国际合作计划之一,于2003年9月由美国国立人类基因组研究所启动,其目的是寻求新一代DNA研究技术对人类基因调控序列在全基因组的水平上研究的应用。这个计划包括全世界11个国家80家科研机构35个小组的研究人员,当前已经产生了许多令人惊讶的发现,为未来进一步认识整个人类基因组的功能蓝图开辟了道路,对与人类疾病相关的基因序列研究产生重大的影响。
4) 人类表观基因组计划
继人类基因组计划(HGP)完成后,人类表观基因组协会(Human Epigenome Con-Sortium,HEC)于2003年宣布正式启动人类表观基因组计划(HEP),HEP是在基因组水平对表观遗传学(Epigenetic)改变的研究,遗传学是基于基因序列改变所致的基因表达水平变化(如基因突变、基因杂合丢失等),表观遗传学指基于非基因序列改变所致基因表达水平的变化,(如DNA甲基化和染色质构象变化等)
5) 癌症基因组图谱计划
2005年12月13日由美国政府发起的癌症和肿瘤基因图谱(Cancer Genome Atlas,TCGA)计划,试图通过应用基因组分析技术,特别是采用大规模的基因组测序,将人类全部癌症(近期目标为50种包括亚型在内的肿瘤)的基因组变异图谱绘制出来,并进行系统分析,旨在找到所有致癌和抑癌基因的微小变异,了解癌细胞发生、发展的机制,在此基础上取得新的诊断和治疗方法,最后可以勾画出整个新型“预防癌症的策略”,这一项目由美国国家癌症和肿瘤研究所(NCI)和国家人类基因组研究所(NHGRI)联合进行,预计耗资1亿美元。
第二单元 测序技术相关基本知识(10分)
1、 PCR技术的基本原理与流程:
-
PCR实验原理:
类似于DNA的天然复制过程,PCR由变性–退火–延伸三个基本反应步骤构成:①模板DNA的变性:模板DNA经加热至95℃左右一定时间后,DNA双链解离成为单链.②退火(复性):温度降至55℃左右,引物与模板DNA单链的互补序列配对结合;③引物的延伸:72℃条件下,DNA模板–引物结合物在TaqDNA聚合酶的作用下,以dNTP为反应原料,靶序列为模板,按碱基配对与半保留复制原理,合成一条新的与模板DNA 链互补的半保留复制链。重复循环这三过程,就可获得更多的扩展产物
b)PCR实验流程
准备体系-> 循环{变性–退火–延伸}-> 最后延伸15min -> 电泳纯化和检测
c) 影响PCR循环反应体系正常运转的关键因素
- 适宜的反应体系(PH,Mg离子浓度,dNTP质量,酶的保真度和质量等)。
- 引物设计合理,避免不完全互补或形成引物二聚体。
- 适宜的反应温度和时间。
2、 第一代测序技术:
-
Sanger 双脱氧末端终止法测序原理、测序特点
原理:在PCR时,除了加入四种dNTP外,还加入了被不同荧光标记的四种双脱氧碱基(ddNTP)。由于ddNTP的3’羟基是双脱氧的,无法连接5’磷酸,延伸反应在每一个位置遇到ddNTP都会终止,这样就能产生从第一个碱基到最后一个碱基所有不同长度的产物。用高分辨率的变性聚丙烯酰胺凝胶电泳(PAGE)分离产物,就能在每一个碱基位置上看到相应的荧光标记,从而实现测序。
特点:金标准,准确率很高,读长较长。
2) 技术流程及优劣势
流程:测序目标片段PCR扩增->PCR产物纯化->测序PCR->测序PCR产物纯化->上机测序
优点:准确,读长长;缺点:成本高,通量低。
3、 第二代测序技术:五种测序平台(454焦磷酸测序、SOLiD 连接测序、Illumina 边合成边测序技术、Ion Torrent 半导体测序技术、华大基因Complete Genomics测序仪)
-
五种测序平台的测序原理、测序特点
454——单碱基添加(SNA):
引物与模板DNA退火后,在dna聚合酶(DNA polymerase)、ATP硫酸化酶(ATP sulfurytase).荧光素酶(1uciferase)和三磷酸腺苷双磷酸酶(Apyrase)4种酶的协同作用下,将引物上每一个dNTP的聚合与一次荧光信号的释放偶联起来,通过检测荧光的释放和强度,达到实时测定DNA序列的目的。
单碱基添加(SNA),454焦磷酸测序和Ion Torrent都属于这种测序原理。SNA的方法依赖单个信号来标记每个测序的碱基。因为它不能终止反应,所以每次只能允许进一种碱基来防止继续延长。这样要是单碱基重复就会继续读取。
特点:454的SNA系统是含有特定引物的珠子连同酶混合物一起进入PicoTiterPlate,当有一个碱基连入DNA链,就会产生一个生物荧光信号,通过相机捕获。
SOLiD ——基于连接的测序原理(SBL)
SBL测序就是用1-2个已知碱基标记的探针与目标DNA杂交,然后再与下一个标记的探针连接,检测标记探针的信号,从而知道目标DNA的序列信息。SOLiD和CG都是基于这种测序原理。
SOLiD基本原理是通过荧光标记的8碱基单链DNA探针与模板配对连接,发出不同的荧光信号,从而读取目标序列的碱基排列顺序。
Illumina —— 边合成边测序(SBS)
四种dNTP被不同的荧光标记,每个循环就结合一个互补的碱基,拍四次照,四个照片重合,出现哪种荧光标记就可以确定是哪个碱基。反应之后荧光基团会被切除,这样就露出了3’羟基基团,可以与下一个碱基连接。
特点:可逆阻断(CRT),一次只连接一个碱基,检测一次,去掉荧光基团后再进行下一次连接。
Ion Torrent:第一台不用光学传感的测序仪。4种dNTP依次流过Ion芯片,DNA聚合过程中释放氢离子,带来PH值变化。使用CMOS-ISFET检测器来检测PH值来识别不同碱基。所以要是有连续碱基重复的情况下,准确度不高。
CG测序:利用四种不同颜色标记的探针去读取接头附近的碱基,探针能够与DNA片段结合,T4 DNA连接酶连接探针和anchor,使探针稳定结合,从该探针携带的荧光基团的颜色为判断出该位置是何种碱基。
-
不同测序平台文库构建类型、不同类型文库构建原理
一般分为片段/单末端和双末端配对文库,双末端分小片段和大片段文库,具体内容太多了,估计不会考那么细…
Illumina
CG:环状文库,没有单链文库
乳液PCR(454、SOLiD)
片段DNA模板与dNTP、引物和DNA聚合酶包在一个油滴中。在凝胶中进行PCR扩增,最后得到成千上万份相同的DNA序列。
固相的模板移位(SOLiD )
片段DNA与固定的引物结合,PCR扩增延长引物得到第二链。然后部分变性,使得自由端可以与邻近的引物结合,再次扩增,起到放大的效果。
固相桥式扩增(Illumina)
片段DNA分散到Flowcell上,与固定的引物结合,进行桥式扩增,从而形成很多DNA簇。
DNA纳米球(Complete Genomics)
片段DNA加两次接头,然后进行滚环扩增,形成一个DNA纳米球,最后纳米球通过杂交的原理固定在阵列的flow cell。
3) 下机数据特点
454测序 SFF,需要转换成Fna/Qual
Illumina FASTQ
SOLiD CSFASTA / QV.qual质量文件 测序结果包含峰值
Ion torrent Bam
d) 技术流程及优缺点
一般流程:DNA文库制备(打断,加接头,末端修复,筛选等) ->扩增 -> 上机测序
4、 第三代单分子测序技术:
-
Nanopore测序原理及流程、
-
解螺旋,将双链DNA解开成单链。 -
DNA单链分子通过一个孔道蛋白,孔道中有个充当转换器的蛋白分子。 -
DNA单分子停留在孔道中,有一些离子通过带来电流变化,而不同的碱基带来的电流变化是不同的。 -
转化器蛋白分子感受5个碱基的电流变化。 -
根据电流变化的频谱,应用模式识别算法得到碱基序列。
-
单分子实时(SMRT)DNA测序原理、
Pacific Biosciences公司研发的单分子实时测序系统(Single Molecule Real Time,SMRT)应用了边合成边测序的原理,并以SMRT芯片为测序载体。基本原理如下: 聚合酶捕获文库DNA序列,锚定在零模波导孔底部 4种不同荧光标记的dNTP随机进入零模波导孔底部 荧dNTP被激光照射,发出荧光,检测荧光
荧光dNTP与DNA模板的碱基匹配,在酶的作用下合成一个碱基 统计荧光信号存在时间长短,区分匹配碱基与游离碱基,获得DNA序列 酶反应过程中,一方面使链延伸,另一方面使dNTP上的荧光基团脱落 聚合反应持续进行,测序同时持续进行
c) 文库制备原理
d) 单分子实时(SMRT)DNA测序数据读取方法
第三单元 生物统计学方法与原理(6分)
- 生物统计学相关基本概念及原理:生物信息分析中涉及到的
a) 均值、
b) 众数、统计分布中具有明显集中趋势点的数值,代表数据的一般水平
c) 中位数、将数据从大到小排序,处在中间位置的数
d) 中程数、是极差(最大和最小值)的平均值
e) N50、在序列拼接中,将contig或者scaffold按照从到短进行排序,并对其长度进行累加,当累加长度达到contig或者scaffold全长的1/2时,最后一个contig或者scaffold的长度即为N50
f) 概率、随机事件出现的可能性。
g) 误差、测量值或计算值与真实值得差异
h) 变量、计算机语言中能储存计算结果或能表示值抽象概念,没有固定值,可以改变的
i) 数据分布、数据呈现出在一定范围内围绕某个中心而波动的分布特征。
j) 显著性检验:事先对总体的参数或分布形式做出一个假设,然后利用样本信息来判断这个假设(备择假设)是否合理,即判断真实值与原假设之间是否有显著差异性。
k) p值:极端事件集合的总概率
l) 相关性:两个变量的关联程度
m) 离散程度:指通过随机地观测变量各个取值之间的差异程度,用来衡量风险大小的指标。 - 常用生物数据统计方法:
-
多重检验 :
- 使数据的Type I error(假阳性)出现小于特定数值
-
假设检验
- 基本原理:
- 一个命题只能证伪,不能证明为真
- 在一次观测中,小概率事件不可能发生
- 证明逻辑就是:我要证明命题为真->证明该命题的否命题为假->在否命题的假设下,观察到小概率事件发生了->搞定。
- 步骤
i. 确定零假设和备选假设
ii. 根据数据,计算在零假设成立的情况下,得到的观察的数据
iii. 确定判断标准 5%, 1% ?
iv. 做出结论
b. 实例(http://www.cnblogs.com/ywliao/p/6724334.html )
i. 参数检验是在总体分布形式已知的情况下,对总体分布的参数如均值、方差等进行推断的方法。非参数检验往往不假定总体的分布类型,直接对总体的分布的某种假设(例如如称性、分位数大小等等假设)作统计检验
ii. 正态分布参数检验 - T检验参数检验: t.test(X,alternative = “greater”,mu=225)
- T检验两个分布参数是否一致
a. 不配对 : t.test(X,Y,var.equal = TRUE,alternative = “less”)
b. 配对: t.test(X-Y, alternative = “less”) - 方差检验 : var.test(x, y, ratio = 1, alternative = c(“two.sided”, “less”, “greater”), conf.level = 0.95, …)
iii. 二项分布参数检验 - binom.test(x, n, p = 0.5, alternative = c(“two.sided”, “less”, “greater”), conf.level = 0.95)
iv. 非参数检验 - 卡方检验
a. chisq.test(x, y = NULL, correct = TRUE, p = rep(1/length(x), length(x)), rescale.p = ALSE, simulate.p.value = FALSE, B = 2000) 其中x是由观测数据构成的向量或者矩阵,y是数据向量(当x为矩阵时,y无效)。correct是逻辑变量,标明是否用于连续修正,TRUE(缺省值)表示修正,FALSE表示不修正。p是原假设落在小区间的理论概率,缺省值表示均匀分布,rescale.p是逻辑变量,选择FALSE(缺省值)时,要求输入的p满足和等于1;选择TRUE时,并不要求这一点,程序将重新计算p值。simulate.p.value逻辑变量(缺省值为FALSE),当为TRUE,将用仿真的方法计算p值,此时,B表示仿真的此值。 - 正太w检验 shapiro.test(w)
- 差异分析
a. FPKM与RPKM区别 -
多重校正
a. 参考来源:
i. https://zhuanlan.zhihu.com/p/31027746
ii. https://blog.youkuaiyun.com/zhu_si_tao/article/details/71077703
b. FWER校正方法:
i. bonferroni校正: p_adjust = p * N , N为检验的次数
ii. Holm校正,P_adjust(n)=(N-n+1)*P , N为检验的次数,n为p值的秩。对于10000次假设检验,调整后的P value为
c. FDR校正
i. Benjamin and Hochberg FDR
-
1.1 按照P value大小排列各个检验:
-
1.2 对于排列在第j个位置的检验来说,其P value为 Pj,若其小于等于 j/m×δ,我们可以认为这个检验具有显著性。当δ = 0.05时,
d. R实现 -
数据统计特征 https://wenku.baidu.com/view/6c8f875e4b73f242326c5f6d.html
a. 集中趋势的描述
i. 数据平均值
ii. 位置代表值 :众数,中位数、分位数
b. 离散程度的描述
i. 方差和标准差
ii. 极差和四分位差
iii. 变异系数
c. 分布形态的描述
i. 偏度:数据偏斜方向和程度
ii. 峰度:数据陡缓程度
5. Lander-Waterman模型
a. http://www.math.ucsd.edu/~gptesler/186/slides/shotgun_15-handout.pdf
b. 这个模型是鸟枪法测序和基因组装的最基本的理论模型,它揭示了测序深度与覆盖度之间的关系。
c. G:基因组大小;L:reads长度 N:序列数 c=NL/G : 深度
d. 符合泊松分布,lambda=c
e. gap的比例: p=P(no read start in I)=e**(-c) ,覆盖度q=1-p = 1-e**(-c)
f. gap的长度:e**(-c)G , contig的长度: Gq
g. contig预计个数: Np = Ne**(-c)
h. 每个congtig预计的reads数 e**c
g) 基因组特征参数估计 : 见上一条
h) 数据分析结果的展示与评论
§ venn图
□ 变种: 方图,各种多边形
§ 二叉树:多个变量的系统分类系统
□ 连通的无环图,每个顶点度不大于3
□ 森林: 若干互不交互的数集合
§ 散点图
□ 解释两个变量的相关性
§ 直方图
□ 单个变量数据集分布
® 数据位置
® 数据散布
® 偏度
® 异常
® 众数
§ 柱状图
□ 可以先归一化,数据集之间的比较情况
§ Boxplot
□ 表达位置和方差的极好工具
□ 异常值:大于1.5倍四分位差
□ 极端值:大于三倍四分位差
§ 饼图
热图
第四单元 Linux系统的基本操作与常用命令(6分)
- Linux 操作系统安装:
a) 个人电脑安装Linux虚拟机安装的具体流程与方法 - Linux 操作系统基本操作:
a) Linux操作系统安装与登录方法、
b) 简单的集群登录与操作方法 - Linux 操作系统常用基本命令:(列出命令常用参数及基础示例用法)
a) pwd,
b) cd,
c) mkdir
d) rm,
e) cp,
f) mv,
g) cat,
h) less,
i) wc,
j) cut,
k) uniq,
l) df - Linux 操作系统常用操作符号:(列出用法及常用操作)
a) |,
b) >,
c) >>
d) &
5.VI编辑器的使用方法。
a) 列出VI编辑器的常用命令
第五单元 Perl 语言简单编程与数据处理分析(10分)
第五单元 Perl 语言简单编程与数据处理分析
1、 perl语言编程环境、编程语言的格式:
a) 变量:变量是存储在内存中的数据,创建一个变量即会在内存上开辟一个空间。
b) 标量数据:标量是一个单一的数据单元。 数据可以是整数,浮点数,字符,字符串,段落等。简单的说它可以是任何东西
c) 换行符:Windows上的换行是 \r\n , Unix上是 \n , Mac \r
d) 列表与数组:列表是包含在括号里的一序列的值,可以为任何数值,也可为空;数组一个是存储标量值的列表变量,变量可以是不同类型
e) 哈希:哈希是一种数据结构。 与数组相似之处:可以容纳任意多的值并能按需取用。 与数组不同之处:不同在于索引方式,数组是以数字来索引,哈希则以名字来索引。 哈希的索引值,此处称为键key),并不是数字,而是任意唯一的字符串。
f) 正则表达式:描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。Perl语言的正则表达式功能非常强大,基本上是常用语言中最强大的,很多语言设计正则式支持的时候都参考Perl的正则表达式。Perl的正则表达式的三种形式,分别是匹配,替换和转化: 匹配:m//(还可以简写为//,略去m);替换:s///转化:tr///
g) perl语言的帮助系统:perldoc -f 你想查的指令 ( 如: opendir );perldoc -m 你想查的模块 ( 如: MIME::Base64 );其他还有 perldoc perldoc ( 教你怎样用 perldoc )
2、 perl语言各命令、代码的含义及文件信息处理:
a) 文件的输入与文件输出
读取标准输入():键盘输入,回车分行,Ctrl+C截止
例:
while(){
print “I saw $";
}
foreach(){
print "I saw $”;
}
简单写法,将输入处理到结尾,不同的是while是取一行处理一行,foreach是全部取出之后再一行行处理。都是每一行作为一条数据,存在默认变量$_中。
钻石操作符(<>):
例:
while(<>){
chomp;
print "It was KaTeX parse error: Expected 'EOF', got '\n' at position 14: _ that I saw!\̲n̲"; } …_中,需要在执行的时候给出要操作的文件。
在windows中的操作方法:打开cmd,输入:perl程序.pl 处理文件1 处理文件2… (可以有更多要操作的文件,如果不在当前目录下,要把程序和处理文件的绝对路径写下来)。
调用参数:
因为调用的文件(注意是文件,也就是cmd运行时要操作的那一串文件)都是事先存放在@ARGV数组中,所以如果改变了@ARGV,无论你调用什么参数执行,只会执行你改变后的文件,如在代码中加入下面一行:
@ARGV = qw # F:/EditPlus/old/a.txtF:EditPlus/old/b.txt#
这样,无论你执行是的参数是什么,都会且只操作a.txt和b.txt
输出到标准输出(print):
①print “字符串”, n+m, “字符串”; ——无论是字符串,表达式,还是标量都可以一起输出出来
②print @数组名; —— 无间隔把数组打印出来
print “@数组名”; ——先把数组变成字符串,即以空格分隔成一个字符串,再输出,因此这种有间隔
print “@数组名\n”; —— 有换行符输出
③print <>; ——输出文件内容,相当于unix下的cat
print sort <>; —— 排序输出文件内容
④ print的返回值是0或1,代表输出是否成功,一般返回1
⑤print后面有括号的时候,像函数,那就是函数
例:print (2+3)*4; 相当于 (print(2+3))*4,结果为4(因为print返回值为1)。用print时要记得它本身是有括号的,只是可以省略。
用printf格式化输出:
可以像C语言一样,用格式字符串(如%s,%d,M等)
%g ——浮点数,整数,指数
%d ——十进制整数(如果放入格式之前是小数,就会舍去小数,是舍去,不是四舍五入)
%s ——字符串
%f ——浮点数(会四舍五入,可以指定小数点后的位数)
%% ——%
除了%f和%%都可以带数字,表示数的长度,正数的话,多出的位数空格往左加,负数空格往右加,%f如果加数字,第一个数字是长度,第二个数字是小数的位数,以“.”分开。
例:〇代表空格
printf “m\n”,42; —— 〇〇〇〇42
printf “%-10s\n”,“abcde”; —— abcde〇〇〇〇〇
printf “.3f\n”,6*7+2/3; —— 〇〇〇〇〇〇42.667
数组和printf:
例:printf “The itemsare:\n”.("s\n"x@items),@items;
第1个@items是数组长度,就是要把s\n重复3次,第2个是数组的值,这样即使不确定数组元素个数也能格式化输出。
文件句柄:
用来以固定格式输入输出。
命名规范:虽然没有特殊要求,但尽量全大写命名,避免与保留字冲突。
6个特殊文件句柄:STDIN、STDOUT、STDERR、DATA、ARGV、ARGVOUT
创建文件句柄(打开):
文件句柄只要打开,就可以定义他的名字和执行方式,使用open。
例:
open CONFIG, ‘dion’; ——打开,名为CONFIG文件句柄,指向文件dino
open CONFIG, ’ —— 指定了它是读取文件
open Bedrock, ‘>fred’; ——指定输出到新文件,如果是有这个文件,清除原文件
open LOG, ‘>>logfile’; ——以追加的方式写入,没有,新建文件,如果存在,添加到最文件后面
以二进制的方式读写文件句柄:
binmode 文件句柄名, ‘编码方式’;
例:
binmode STDOUT, ‘:encoding(UTF-8)’; ——读写都能用
关闭文件句柄:close文件句柄名; (通常都会自动关闭)
用die处理致命错误:
一般处理文件都会返回一个状态,非0代表不成功,只有0是成功,因此可以判断它不是0的时候用die()方法终止程序。
例:
if(! open LOG,'>>','logfile'){
die "Can not create logfile:$!";
}
$!是错误信息,后面还会自动加程序名和行号
用warn送出警告信息:
和die差不多,只是不会终止。
自动检测致命错误:
use autodie; ——如果open失败,自动启动die
使用文件句柄:
例:
if(! open PASSWD,"/etc/passwd"){
die "How did you get logged in ?($!)";
}
while(){ #<>表示一行行读,PASSWD文件句柄
b) 序列提取
#!/usr/bin/perl
open(LIST,"RUTC30")||die "$!";
while(<LIST> ){
chomp;
my ($name)=$_=~/^(\S+)/;
$hash{$name}=1;
}
close(LIST);
open(IN,"seq.fasta")||die "$!";
open(OUT,">result.fasta")||die "$!";
local $/ = ">";
while(<IN> ){
chomp;
my ($head,$seq) = split(/\n/,$_,2);
next unless($head && $seq);
$seq=~s/\s+//g;
$head=~s/\s+$//;
my ($name)=$head=~/^\S+\|\S+\|(\d+)/;
if(exists $hash{$name}){
print OUT ">$head\n$seq\n";
}
}
close(IN);
close(OUT);
c) 子程序
Perl 子程序也就是用户定义的函数。Perl 子程序即执行一个特殊任务的一段分离的代码,它可以使减少重复代码且使程序易读。Perl 子程序可以出现在程序的任何地方,语法格式如下:
sub subroutine{
statements;
}
调用子程序语法格式:
subroutine( 参数列表 )
d) 统计FASTA序列文件子程序;
#!/usr/bin/perl -w
use warnings;
use strict;
my $filename;
my @DNA;
my $DNA;
# main:read the DNA file
sub clean_data{
$filename = <STDIN>;
chomp $filename;
unless(open(DNAFILE,$filename)){
die "Can't read the file and I'm exiting!\n";
}
@DNA = <DNAFILE>;
close DNAFILE;
print "Have read the file sucessfully!\n";
# modify the base sequence
$DNA = join('',@DNA);
$DNA =~ s/\s//g;
return $DNA;
}
# the base number counter and percentage analysis
sub base_counter {
my
@DNA = split('',$DNA);
my $count_of_A = 0;
my $count_of_T = 0;
my $count_of_C = 0;
my $count_of_G = 0;
my $count_of_others = 0;
my $total_count = 0;
foreach(@DNA) {
$total_count++;
if ($_ eq "A"){
$count_of_A++;
}elsif($_ eq "T"){
$count_of_T++;
}elsif($_ eq "C"){
$count_of_C++;
}elsif($_ eq "G"){
$count_of_G++;
}else{
print "This is a wrong base!: $_\n";
$count_of_others++;
}
}
my $percentage_of_A = $count_of_A / $total_count * 100;
my $percentage_of_T = $count_of_T / $total_count * 100;
my $percentage_of_T = $count_of_T / $total_count * 100;
my $percentage_of_T = $count_of_T / $total_count * 100;
my $percetage_of_others = $count_of_others / $total_count * 100;
print "The count of A is: $count_of_A\n";
print "The percent of A is: $percent_of_A\%\n";
print "The count of T is: $count_of_T\n";
print "The percent of T is: $percent_of_T\%\n";
print "The count of C is: $count_of_C\n";
print "The percent of C is: $percent_of_C\%\n";
print "The count of G is: $count_of_G\n";
print "The percent of G is: $percent_of_G\%\n";
print "The count of wrong base is: $count_of_others\n";
print "The percent of wrong base is: $percent_of_others\%\n";
return ($total_count,$count_of_A,$count_of_C,$count_of_T,$count_of_G,$count_of_others);
}
# analysis of CG base percentage
sub CG_analyze{
my $dna_filename = shift @_;
my @basic_data = base_analysis(my $dna_filename);
my $count_of_CG = $basic_data[2] + $basic_data[4];
my $percent_of_CG = $count_of_CG / $basic_data[0];
print "The total number of base 'C' and 'G' is :$count_of_CG\n";
print "The percent of 'C' and 'G' is $percent_of_CG\n";
}
3、 perl语言的常用基本操作:
a) 利用perl读取FASTA文件中碱基序列,统计FASTA文件的CG含量,统计序列的长度分布、并对测序数据进行删除、挑取、排序等基础操作;
4、 在Perl程序中调用其它软件:
1)使用system函数 运行成功,返回0,运行失败则返回非负整数
system(“cmd”);
2)使用qx
my $cmd1=qx/date/;
3)使用“ 与qx等效
4)使用open函数
open(CMD,“ifconfig |”) or die $!
my @result=;
close(CMD);
5)使用readpipe函数
使用readpipe函数可以获取外部程序运行的结果,比如运行 ls 会列出当前目录的文件和文件夹,
my $result=readpipe(“ls “);
a) Perl里调用R、
system(“$PATH/Rscript …”) (主要用这个)
b) Perl里调用BWA比对软件
my $cmd1=qx/BWA/; (BWA需已在系统路径中)
c) Perl里调用Samtools软件、
my $cmd2=`Samtools`;
print "this time use \`\` $cmd2 ";
d) Perl里调用Soap SNP软件
open(CMD,“soap |”) or die $!
my @result=;
close(CMD);
e) Perl里调用
GATK软件;
my $result=readpipe("gatk –paramaters");
print $result;
5、 利用perl编写简单的生物信息分析程序:
a) 格式转换程序 fastq2fasta
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my($in,$out)=@ARGV;
my (%hash,$i,$j,$sum);
unless($in){
print "perl $0 <in.fq> <out.fa>\n";
exit;
}
if($in=~/.gz$/){
open IN,"gunzip -c $in|" ||die $!;
}
else{
open IN,"$in" || die $!;
}
open OUT,">$out"||die;
while(<IN>){
my $id=$_;
my $seq=<IN>;chomp $seq;
my $add=<IN>;
my $qual=<IN>;
$hash{$seq}+=1;
}
#print Dumper \%hash;
#-------- print ------------------------------
$i="00000001";
$j=0;
foreach my $k(sort {$hash{$b} <=> $hash{$a}} keys %hash){
$sum+=$hash{$k};
# if($sum<=1.25*$cutoff){
print OUT ">t$i\t$hash{$k}\n$k\n";
$i++;$j++;
}
print STDERR "Total clean reads:$sum
Total unique reads:$j";
close IN;
close OUT;
b) 利用正则表达式处理文本
/pattern/ 结果
. 匹配除换行符以外的所有字符
x? 匹配 0 次或一次 x 字符串
x* 匹配 0 次或多次 x 字符串,但匹配可能的最少次数
x+ 匹配 1 次或多次 x 字符串,但匹配可能的最少次数
.* 匹配 0 次或一次的任何字符
.+ 匹配 1 次或多次的任何字符
{m} 匹配刚好是 m 个 的指定字符串
{m,n} 匹配在 m个 以上 n个 以下的指定字符串
{m,} 匹配 m个 以上 的指定字符串
[] 匹配符合 [] 内的字符
[^] 匹配不符合 [] 内的字符
[0-9] 匹配所有数字字符
[a-z] 匹配所有小写字母字符
[^0-9] 匹配所有非数字字符
[^a-z] 匹配所有非小写字母字符
^ 匹配字符开头的字符
$ 匹配字符结尾的字符
\d 匹配一个数字的字符,和 [0-9] 语法一样
\d+ 匹配多个数字字符串,和 [0-9]+ 语法一样
\D 非数字,其他同 \d
\D+ 非数字,其他同 \d+
\w 英文字母或数字的字符串,和 [a-zA-Z0-9] 语法一样
\w+ 和 [a-zA-Z0-9]+ 语法一样
\W 非英文字母或数字的字符串,和 [^a-zA-Z0-9] 语法一样
\W+ 和 [^a-zA-Z0-9]+ 语法一样
\s 空格,和 [\n\t\r\f] 语法一样
\s+ 和 [\n\t\r\f]+ 一样
\S 非空格,和 [^\n\t\r\f] 语法一样
\S+ 和 [^\n\t\r\f]+ 语法一样
\b 匹配以英文字母,数字为边界的字符串
\B 匹配不以英文字母,数值为边界的字符串
a|b|c 匹配符合a字符 或是b字符 或是c字符的字符串
abc 匹配含有 abc 的字符串
(pattern) () 这个符号会记住所找寻到的字符串,是一个很实用的语法。第一个 () 内所找到的字符串变成 $1 这个变量或是 \1 变量,第二个 () 内所找到的字符串变成 $2 这个变量或是 \2 变量,以此类推下去。
/pattern/i i 这个参数表示忽略英文大小写,也就是在匹配字符串的时候,不考虑英文的大小写问题。
\ 如果要在 pattern 模式中找寻一个特殊字符,如 “*”,则要在这个字符前加上 \ 符号,这样才会让特殊字符失效
c) 基因组信息的统计
计算基因组N50和N90信息
#/usr/bin/perl -w
use strict;
my ($len,$total,$contigs)=(0,0,1);
my @x;
while(<>){
if(/^[\>\@]/){
if($len>0){
$total+=$len;
$contigs ++;
push @x,$len;
}
$len=0;
}
else{
s/\s//g;
$len+=length($_);
}
}
if ($len>0){
$total+=$len;
push @x,$len;
}
@x=sort{$b<=>$a} @x;
my $max_value = $x[0];
my ($count,$half)=(0,0);
for (my $j=0;$j<@x;$j++){
$count+=$x[$j];
if (($count>=$total/2)&&($half==0)){
print "sequence #: $contigs\t";
print "total length: $total\t";
print "max length: $max_value\t";
print "N50: $x[$j]\t";
$half=$x[$j]
}elsif ($count>=$total*0.9){
print "N90: $x[$j]\n";
exit;
}
}
d) 遗传漂变模拟
use strict;
use warnings;
srand(time | $$); #为随机数发生器设定种子
my $a1percent; #声明变量:
my $i;my $j; my $a1sum; my $randomnum;
my $generation; my $avegeneration;my $sumgeneration;
my $fix1; my $fix2;
for($i=0; $i<10000; ++$i){ #10000次重复
$a1percent=0.7; #设定等位基因a1初始频率为0.7
for($generation=0; 1;++$generation){ #模拟世代更替,记录a1或a2固定时经历的世代数($generation)
if ($a1percent==0 or $a1percent==1){
last; #当a1固定或丢失的时候跳出世代更替的循环
}
$a1sum=0;
for ($j=0; $j<20; ++$j){ #随机挑选20个配子作为下一代个体的组成
$randomnum=rand(1);
if ($randomnum<=$a1percent){
++$a1sum; #记录挑选到a1基因的总数
}
}
$a1percent=$a1sum/20; #记录挑选到a1基因的频率
}
$sumgeneration+=$generation; #将每次a1或a2固定时经历世代数求和
if ($a1percent==1){ #a1固定
++$fix1; #记录a1固定的次数
}else{ #a1丢失,a2固定
++$fix2; #记录a2固定的次数
}
}
$avegeneration=$sumgeneration/10000;
$fix1=$fix1/10000;
$fix2=$fix2/10000;
print "a1或a2固定的平均世代数为: $avegeneration\n";
print "a1固定的概率为:$fix1\n";
print "a2固定的概率为:$fix2\n";
exit;
第六单元 R语言编程、绘图及生物统计分析(10分)
-
R语言相关基础知识:
a) R语言的历史、定义、功能、现状、优势及帮助系统;
历史:R本来是由来自新西兰奥克兰大学的Ross Ihaka和Robert Gentleman开发,因两人名字 都是以R开头,所以也因此形象称为R。R是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。可以认为R是S语言的一种实现。而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和作图的解释型语言。最初S语言的实现版本主要是S-PLUS。S-PLUS是一个商业软件,它基于S语言,并由MathSoft公司的统计科学部进一步完善。后来新西兰奥克兰大学的Robert Gentleman和Ross Ihaka及其他志愿人员开发了一个R系统。由“R开发核心团队”负责开发。 R是基于S语言的一个GNU项目,所以也可以当作S语言的一种实现,通常用S语言编写的代码都可以不作修改的在R环境下运行。 R的语法是来自Scheme。R的使用与S-PLUS有很多类似之处,这两种语言有一定的兼容性。S-PLUS的使用手册,只要稍加修改就可作为R的使用手册。所以有人说:R,是S-PLUS的一个“克隆”。但是请不要忘了:R是免费的(R is free)。
定义:R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。
功能:R是一套完整的数据处理、计算和制图软件系统。其功能包括:数据存储和处理系统;数组运算工具(其向量、矩阵运算方面功能尤其强大);完整连贯的统计分析工具;优秀的统计制图功能;简便而强大的编程语言:可操纵数据的输入和输出,可实现分支、循环,用户可自定义功能。
现状:由于R语言自身扩展性非常强.随着发展和使用人数增多,因此也吸引了大量用户编写的自定义的函数包供更多人使用,这些附件包可以从世界各地的CRAM镜像上下载。截止当目前,R语言源程序已经更迭了超过了70以上的版本,从版本更新和文件大小来看,R的发展速度的确非常之快,而且整个软件体系一直都保持者非常小的优势,这也几乎是任何一门商业软件都无法比拟的。现在随着数据呈现几何数量级的增加,数据挖掘需求的增长而使R日益得到普及,它虽源于S但其发展却远远地超过了S,”青出于蓝而胜于蓝”。R语言也在目前机器学习、统计计算、高性能计算得到广泛应用。近年来,R编程语言的需求和使用它的人数在迅速增加,从TIOBE编程社区指数2018年7月截至的数据来看,R在2018年已经跻身TIOBE排名前十,成为全球最受欢迎的编程语言Top10。(前面9个最受欢迎的编程语言依次为Java、C、C++、python、C#、Visual Basic .NET、JavaScript、PHP、Ruby)
优势:免费开源,可以部署在任何操作系统,例如 Windows、Linux、Mac OS X、BSD、Unix;是专门为统计和数据分析开发的语言,各种功能和函数琳琅满目,是高质量、广泛的统计分析、数据挖掘平台;强大的作图能力,ggplot2,plotly,shiny,ggmap等用起来真的很方便;强大的社区支持,开发者还不少,是个不断壮大的社区,并且目前发展的已经比较成熟;良好的交互式界面,R提供了十分友好的交互式操作方式,Rstudio界面非常友好,是个很优秀的IDE;简单易学,与编程语言的龙头java和C相较,R语言进行了一定的简易化(比如语言结构相对松散,使用变量前不需明确正式定义变量类型等),同时仍保留了程序设计语言的基础逻辑与自然的语言风格;方便的扩展性,可通过相应接口连接数据库(例如 Oracle、DB2、MySQL),也可以同 Python、Java、C、C++等语言进行互相调用,其他统计软件大部分均可调用R(例如 SAS、SPSS、Statistica 等), 甚至有一些比较直接的商业应用(例如 Oracle R Enterprise、R add-on for Teradata、Sybase RAP 等)。
缺点:设计基于单线程和纯粹的内存计算,不能处理大数据而且R中的循环运算时间过长;R的package非常的泛,开发包的人水平参差不齐,很多package都没有持续的更新,很多bug都没有修复;R的部分package各种依赖比较繁琐,虽然多数的R安装包比较友好,但是由于部分开发包的人没有进行友好化处理,依赖太多,安装十分麻烦。
b) R程序的安装与运行;
windows下R的安装:到官网下载对应版本的R内核或者windows版本的RStudio,如R-3.3.3-win.exe或者RStudio 1.1.383.exe,然后直接安装即可。
ubuntu下R的安装:到官网下载ubuntu版本的R内核(tar.gz),或deb包进行安装,到官网下载ubuntu版本的R内核(tar.gz),或deb包进行安装;在apt-get安装是一种更为方便的方式,sudo apt-get install r-base,如果安装失败,可以先添加软件源,然后再安装。
R的交互式运行:启动R软件后进入命令行界面,每输入一行命令,就在后面显示计算结果。如果使用RStudio软件, 有一个“Console窗格”相当于命令行界面。
R脚本运行:在ubuntu环境下,可以先将R命令写好,存放在一个脚本文件中,然后用Rscript命令调用脚本。R代码支持一行命令的格式,每条命令之间不强制要求换行和缩进,但是一行代码每条命令之间要用分号隔开。
c) R语言的语法、对象及属性;
对象是R所进行操作的实体,对象可以是向量、列表、数据框、矩阵、因子、函数、环境等。
R的对象有两个固有属性–对象的模式和对象的长,可以分别用mode(object)和length(object)两个函数查看;函数attributes(object)将给出当前对象所具有的所有非基本属性(长度和模式属于基本属性)的一个列表;函数attr(object,name)可以被用来选取一个指定的属性。除了为某些特殊的目的创建新属性这样特殊的环境下,这些函数很少被用到。
对象的一个特别属性是类别,被用来指定对象在R编程中的风格。比如:如果对象类别"data.frame"则会以特定方式处理;unclass()可以去除对象的类别。summary()可以查看对象的基本信息(min, max, mean, etc.)
2.使用R对生物数据进行统计分析:
a) R语言数据结构、类型及常用运算符;
R语言的常用数据结构和类型包括向量、列表、数据框、矩阵、数组、因子和函数,常用的运算符根据类型可以分为算术运算符、关系运算符、逻辑运算符、赋值运算符以及其他运算符。算数运算符包括加法(+,如3+2,结果为5)、减法(-,如3-2,结果为1)、乘法(,如32,结果为6)、除法(/,如3/2,结果为0.5)、求余(%%,如3%%2,结果为1)、求模(%/%,如5%/%2,结果为2)、求指数幂(,如32,结果为9)、取对数(log,如log2(4),结果为2)等;关系运算符包括大于(>)、小于(<)、等于(=)、不大于(<=)、不小于(>=)、不等于(!=);逻辑运算符包括与(&)、或(|)、非(!)、逻辑与(&&)、逻辑或(||);赋值运算符包括左分配符号(=,<-,<<-,比如命令“a=2”、“a<-2”和“a<<-2”都是将a赋值为2)、右分配符号(->,->>,比如命令“2->a”和“2->>a”都是将a赋值为2);其他预算符号主要包括冒号运算符(:)、成员运算符(%in%)和转置相乘(%*%)
b) R数据结构——向量建立、向量运算、数组、数据框、列表、因子、 R程序设计;
建立向量:向量是R中最基本的数据结构,是用于存储数值型、字符型或逻辑型数据的一维数组,定义一个向量一般必须用到关键字c,例如a<-c(1,‘x’);也可以用一些其他的特定函数生成向量,例如seq(from=12,to=30,by=3),rep(‘hello’,3)等。
向量运算:基于向量的运算一般是指完全由数字组成的向量进行的算术运算,一般可以分为两类运算–标量与向量的运算和向量与向量的运算。标量与向量的运算,是将向量中的每一个元素依次与标量进行运算,生成的结果是一个新的向量,如2+(1,2,3),结果为向量(3,4,5);向量与向量的运算,是将两个向量中相对应的元素依次进行计算,一般情况下要求两个向量中的元素个数相同,如c(3,2,1)+c(3,2,1),结果为向量(6,4,2),如果两个向量的元素个数不相同,会将元素较少的向量循环使用,如c(4,3,2,1)+ c(3,2,1),结果为向量(7,5,3,4)。
数组:数组是一个可以在两个以上的维度存储数据的R数据对象,可以使用 array()函数创建数组,形式是myarray<-array(vector, dimensions,dimnames)。其中vector包含了数组中的数据,dimensions是一个数值型向量,给出了各个维度下标的最大值,而dimnames是可选的、各维度名称标签的列表。如下是一个创建数组的代码:
vector1 <- c(5,9,3)
vector2 <- c(10,11,12,13,14,15)
column.names <- c(“COL1”,“COL2”,“COL3”)
row.names <- c(“ROW1”,“ROW2”,“ROW3”)
matrix.names <- c(“Matrix1”,“Matrix2”)
array(c(vector1,vector2),dim=c(3,3,2),dimnames = list(column.names,row.names,matrix.names))
其结果为:
, , Matrix1
ROW1 ROW2 ROW3
COL1 5 10 13
COL2 9 11 14
COL3 3 12 15
, , Matrix2
ROW1 ROW2 ROW3
COL1 5 10 13
COL2 9 11 14
COL3 3 12 15
数据框:数据框和矩阵类似,都是以行和列的形式来存储数据,但矩阵各列必须是同一数据类型,数据框则可以将不同的数据类型结构组合在一起,R中的数据框是最常见常用的数据结构。数据框可通过函数data.frame()创建:mydata<-data.frame(col1,col2,col3), 其中的列向量 col1, col2, col3,… 可为任何类型(如字符型、数值型或逻辑型)。每一列的名称可由函数 names指定。如下是一个生成数据框的代码:
data.frame(name=c(“李明”, “张聪”, “王建”), age=c(30, 35, 28),
-
height=c(180, 162, 175))
结果为:
name age height
1 李明 30 180
2 张聪 35 162
3 王建 28 175
列表:列表是R的数据类型中最为复杂的一种,一般来说,列表就是一些对象(或成分, component)的有序集合。列表允许你整合若干(可能无关的)对象到单个对象名下。例如,某个列表中可能是若干向量、矩阵、数据框,甚至其他列表的组合。可以使用函数list()创建列表:
mylist<-list(names1=object1,names2=object2,…)
其中的对象可以是目前为止讲到的任何结构,下面是一个创建列表的代码:
list(“Red”, “Green”, c(21,32,11), TRUE, 51.23, 119.1)
*当我们上面的代码执行时,它产生以下结果:
[[1]]
[1] “Red”
[[2]]
[1] “Green”
[[3]]
[1] 21 32 11
[[4]]
[1] TRUE
[[5]]
[1] 51.23
[[6]]
[1] 119.1
因子:变量可归为名义型变量、有序型变量和连续型变量,名义型变量是无顺序之分的类别变量,有序型变量则表示一种顺序关系而非数量关系,而连续型变量可以呈现某个范围内的任意值,同时表示了顺序和数量。名义型变量和有序型变量在R中被称为因子,用于将数据分类并存储为不同等级的数据对象,因子决定了数据的分析方式以及如何进行视觉呈现,使用factor()函数以一个整数向量的形式来存储类别值,下面是生成因子的代码:
colour <- c(‘G’, ‘G’, ‘R’, ‘Y’, ‘G’, ‘Y’, ‘Y’, ‘R’, ‘Y’)
factor(colour, levels = c(‘G’, ‘R’, ‘Y’), labels = c(‘Green’, ‘Red’, ‘Yellow’))
运行上面命令,将labels的内容替换colour相应位置对应levels的内容生成的结果为:
[1] Green Green Red Yellow Green Yellow Yellow Red Yellow
Levels: Green Red Yellow
R程序设计:R语言函数的标准格式:
函数名=function(参数){
函数语句
#如果需要返回值,可以在最后一条语句是返回值,可用return()方法
}
R将所有的对象都存储在虚拟内存中。对于大部分人而言,这种设计可以带来很好的交互体验,但如果要处理大型数据,这就会影响程序的运行速度,带来和内存相关的错误。因此在设计R程序时,要注意以下几点:
1、尽可能的向量化。用 R内建的函数来处理向量、矩阵和列表(例如 sapply、lapply和mapply),而且要尽量避免使用循环( for和while)。
2、多用矩阵,而不是数据框(矩阵更轻量级)。 对于完全由数字构成的数据框,最好先转化为矩阵,再进行分析操作。
3、在使用read.table()系列函数将外部数据读取到数据框中时,明确的指定 colClasses和nrows,设置 comment.char = “”,并且用"NULL"标明不需要的列。这可降低内存使用量,显著地提高处理速度。在将外部数据读入矩阵时,可以用 scan()函数。
4、删除临时对象和不再需要的对象。调用 rm(list=ls())会从内存中删除所有的对象,得到一个干净的环境。要删除特定的对象,可以用 rm(object)。
c) 生物统计数据的读取与存储——数据浏览与编辑、数据读取、分析与存储;
数据浏览和编辑:R提供了友好的交互式操作模式,可以十分方便地对数据进行浏览和辑。如果想查看数据框中的数据,可以用View(mydata)命令;如果想编辑数据框中的数据,可以用命令edit(mydata)命令,运行这两种命令后,都会产生一个新的交互式窗口,对数据框中的数据进行展示,如下图所示:
数据读取:R中读取的文件一般就在这里插入代码片是文本文件、Excel表格和Rdata,对于文本文件,要求文件内部是矩阵格式,可以用read.table或者read.csv进行文件读取;对于Excel文件,可以用程序包RODBC中的odbcConnectExcel进行读取;需要加载Rdata时,可以用load函数进行加载。
分析和存储: 在数据分析中应该注意尽可能的向量化,用 R内建的函数来处理向量、矩阵和列表(例如 sapply、lapply和mapply),而且要尽量避免使用循环( for和while);多用矩阵,而不是数据框(矩阵更轻量级)。 对于完全由数字构成的数据框,最好先转化为矩阵,再进行分析操作。对于存储的临时对象,要注意及时进行删除;需要对结果保存为文本文件时,可以用函数save.table进行保存;需要对大量的数据进行保存时,为了节省磁盘空间,可以用save函数将要保存的对象存款为Rdata文件。
3.R的基础绘图工具:
a) 常用绘图参数
绘制R图形常用的参数有:
主标题,main参数,用法是main=’图形主标题’;
轴标签,xlab和ylab分别指定横轴和纵轴的标签,用法是xlab=’横轴标签’;
刻度范围,xlim和ylim分别表示横轴和纵轴的刻度范围,用法是xlim=c(起点,终点);
颜色,col指定图形的颜色,col.axis指定刻度的颜色,col.lab指定坐标轴的颜色,col.main指定标题颜色,col.sub指定副标题颜色,bg指定背景颜色;
点,pch指定点的类型,用法是pch=n,n可以是1到24,分别代表不同类型的点,例如pch=20表示黑色的实心点;
线,type指定图形中的线条或者点的类型,"b"表示点加线,"l"表示只有线,"p"表示只有点,"s"表示梯形线,用法是type=’b’;
线条,lty表示线条的类型,lty=n,可以是1到6,分别代表不同类型的线条,例如lty=2表示虚线;
线宽 lwd指定线条宽度,默认值是lwd=1,
缩放 cex=缩放倍数值 cex.axis=刻度缩放,cex,lab=轴缩放,cex.main=标题缩放
字体 front=
尺寸 pin=c(宽度值,高度值)
边界 mar=c(下边界大小值,左边界大小值,上边界大小值,右边界大小值)
排版 mfrow=(行数,列数)
位置 pos=1表示下,2表示左,3表示上,4表示右
符号和线条:可以使用图形参数来指定绘图时使用的符号和线条类型,参数说明如下
颜色:R中有若干和颜色相关的参数,参数说明如下
文本属性:图形参数同样可以用来指定字号、字体和字样。其参数说明如下
b) 常用绘图函数的含义
-
dev.new()新建画板;plot()函数绘制点线图,条形图,散点图;barplot( )函数绘制条形图;dotchart( )函数绘制点图;pie( )函数绘制饼图;pair( )函数绘制散点图阵;boxplot( )函数绘制箱线图;hist( )函数绘制直方图。scatterplot3D( )函数绘制3D散点图;dev.off()关闭画板。title( )添加标题;axis( )调整刻度;rug( )添加轴密度;grid( )添加网格线;abline( )添加直线;lines( )添加曲线;text( )添加标签;legend()添加图例。
c) 高级绘图参数、
Legend()参数:用于添加图例,用法为legend(loc,title,legend,…)。其中loc指定图例的位置,可以直接给定方位如topright指定;title为图例标题。
*Par()参数:用于优化默认的绘图参数,避免如坐标轴或者标题出界或者图例说明的大小或者位 置遮挡住了图形等情况出现。用法是par(“参数”=“赋值”)的形式 ,例如adj参数用于 调整text,mtext,title函数中文本串的位置,=0 文本串左对齐,=0.5(默认)居中,=1右对齐;bg参数设置绘图区背景色;cex参数用于表示对默认的绘图文本和符号放大多少倍,默认cex=1;cex.axis参数表示在当前的cex设定下,放大坐标轴上标记的数字,默认cex.axis=1;fg参数设置绘图前景色,主要用于坐标轴,边框,图形等,对坐标标记与坐标轴标题等外围无影响,默认为fg=”black”;fig参数在画布任意位置上画图,做大图,小图,内嵌图时非常实用,在使用fig数时,需要把画布理解成左下角为坐标(0,0),右上角为(1,1)的一个坐标系,fig=c(x1,x2,y1,y2)来设置该参。Par()也可以用于画板分割、图形组合。
d) 画图面板分割及图形保存
Par()参数可以用于画板分割。参数mfcol表示以列的方式分割图形界面,参数mfcol表示以行方式分割图形界面,例如par(mfcol=c(3,2))表示以3行2列分割图形界面;参数mar设置图形区域和图形边界的距离,单位是英寸,形如par(mar=c(,a,b,c,d)),从底部开始,顺时钟旋转,依次设定底部、左部、上部、右部的与边界;参数mai与mar类似,但是它设定的距离单位是文本行数。
R画图保存,可以在画图前选择一种保存图片的格式,如pdf、png、jpeg,打开对应的图片保存,然后绘图,在绘图结束后关闭图形画板。其用法如下:
(file=“myplot.pdf” )
绘图程序
dev.off( )
4.使用R绘制简单图形:(绘制方法)
a) 散点图、
x1 <- round(runif(20,min = 0 ,max = 100))
y1 <- round(runif(20,min = 0 , max = 100))
plot(x1,y1)
b) 条形图、
height <- c(1:3)
names(height) <- c(“A”, “B”, “C”)
barplot(height)
c) 文氏图、
library(“VennDiagram”)
Length_A <- 54.07
Length_B <- 38.86
Length_C <- 3.55
Length_AB <- 2.31
Length_BC <- 0.24
Length_AC <- 0.71
Length_ABC <- 0.07
require(VennDiagram)
draw.triple.venn(area1=Length_A, area2=Length_B, area3=Length_C
,n12=Length_AB, n23=Length_BC, n13=Length_AC, n123=Length_ABC
,category = c(‘天猫’,‘线下’,‘京东’)
,col=c(‘red’,‘green’,‘blue’),fill=c(‘red’,‘green’,‘blue’)
,cat.col=c(‘red’,‘green’,‘blue’)
,reverse = FALSE
,euler.d = TRUE
,scaled = TRUE
,cex = c(4,2,1,1,1,1,1)
)
d) 饼图
x <- c(11, 30, 39, 20)
labels <- c(“70后”, “80后”, “90后”, “00后”)
pie(x,labels)
e) 盒形图
x<-c(1,3,4,3,5,3,4,3,5)
y<-1:5
boxplot(x,y,col=c(“steelblue”,“darkgreen”))
f) 频率直方图、
x=runif(100,1,50)
hist(x,prob=F,col=’#EE8262’,main=“uniform on [0,50]”,breaks=20)
g) 热图’
d<-data.frame(s1=c(10,20,13,44,23,44),s2=c(20,30,64,23,54,19),s3=c(14,70,37,90,78,64),s4=c(13,80,9,43,65,22),s5=c(46,4,68,8,1,41))
rownames(d)<-c(‘A’,‘B’,‘C’,‘D’,‘E’,‘F’)
library(gplots)
heatmap.2(as.matrix(d),col=redgreen,scale=“row”,key=T,keysize=1.5,trace=“none”)
第七单元 生物信息分析常用软件及分析方法(40分)
1、 生物信息分析相关序列比对原理、算法、流程及软件使用方法:
6. 序列比对原理与算法 、
https://wenku.baidu.com/view/5f2ae11d876fb84ae45c3b3567ec102de2bddf38.html
-
常用全局比对软件使用方法、
http://www.cnblogs.com/leezx/p/6100667.html
常用全局比对软件 MUSCLE
-
常用局部比对软件、
常用局部比对软件Blast
-
Blast在线软件、
-
常用短序列比对软件 SOAP2
http://soap.genomics.org.cn/soapaligner.html
-
数据的质量控制及结果解读
HIC方面的,可做参考
http://www.360doc.com/content/17/1213/15/31841004_712716195.shtml
2、 基因组de novo组装:
12. 基因组de novo组装的概念
De Novo 测序也叫从头测序,不需要任何基因序列信息即可对某个物种进行测序。用生物信息学的分析方法对序列进行拼接、组装,从而获得该物种的基因组序列图谱。目前广泛应用于从头解析未知物种的基因组序列、基因组成、进化特点等。
13. 基因组de novo组装意义相关基础知识
大片段文库(mate-pair)是指插入片段大于1Kb的文库,大片段文库主要是用于将Contig进一步组装成Scaffold。文库类型通常有2Kb、5Kb、10Kb、15Kb以及20Kb等。
小片段文库(pair-end)是指插入片段小于1Kb的文库,小片段文库产生的Reads主要用于拼接成Contig。例如在de nove测序中,我们通常要不同梯度下片段如250bp、350bp、500bp等。
值得注意的是除了de nove测序需要建大片段文库外,其他测序如重测序只需建一个小片段文库(250bp),而构建大片段文库过程繁琐,价格较高。这是de novo测序比重测序价格贵的原因之一。
基因组组装质量评估:
除用ContigN50和ScaffoldN50对基因组进行评估外,还会对基因组进行序列一致性评估、序列完整性评估、准确性评估、Cegma保守性评估等。
基因组注释:
我们要做的是对基因组进行注释,注释主要是对基因组中的
重复序列注释
非编码RNA的注释
基因结构的注释
基因功能的注释
注释的方法有同源注释以及de nove预测等。重复序列的注释主要是串联重复序列注释(卫星DNA、小卫星DNA以及微卫星DNA等)和散列重复序列(LTR、LINE、SINE以及转座子序列等)。非编码RNA的注释主要是对MicroRNA、rRNA以及tRNA等注释;基因注释主要是对基因的启动子、外显子、内含子等注释。
14. mate-pair文库构建
Mate-pair 文库制备旨在生成一些短的 DNA 片段,这些片段包含基因组中 较大跨度(2-10 kb)片段两端的序列,更具体地说:首先将基因组 DNA 随机打 断到特定大小(2-40 kb 范围可选,华大已经做到了100kb);然后经末端修复,生物素标记和环化等实 验步骤后,再把环化后的 DNA 分子打断成 400-600 bp 的片段并通过带有链亲 和霉素的磁珠把那些带有生物素标记的片段捕获。 这些捕获的片段再经末端修饰 和加上特定接头后建成 mate-pair 文库,然后上机测序。
https://era7bioinformatics.com/en/page.cfm?id=1626&title=paired-end-and-mate-pair-sequencing:-what-is-it-and-how-is-it-done?
15. 不同测序数据特点
一代测序:又称Sanger测序(多分子,单克隆)
历史:第一代DNA测序技术(又称Sanger测序)在1975年,由Sanger等人开创,并在1977年完成第一个基因组序列(噬菌体X174),全长5375个碱基。研究人员经过30年的实践并对技术及测序策略的不断改进(如使用了不同策略的作图法、鸟枪法),2001年完成的首个人类基因组图谱就是以改进了的Sanger法为其测序基础。
原理:在4个DNA合成反应体系(含dNTP)中分别加入一定比例带有标记的ddNTP(分为:ddATP,ddCTP,ddGTP和ddTTP),通过凝胶电泳和放射自显影后可以根据电泳带的位置确定待测分子的DNA序列。由于ddNTP的2’和3’都不含羟基,其在DNA的合成过程中不能形成磷酸二酯键,因此可以用来中断DNA合成反应。
二代测序:NGS技术(多分子,多克隆)
背景:Sanger测序虽读长较长、准确性高,但其测序成本高通量低等缺点,使得de novo测序、转录组测序等应用难以普及。经过数据不断的技术开发和改进,以Roche公司的454技术、illumina公司的Solexa,Hiseq技术,ABI公司的Solid技术为标记的第二代测序技术诞生,后起之秀Thermo Fisher的Ion Torrent技术近年来也杀入历史舞台。
1、Illumina 原理:
桥式PCR+4色荧光可逆终止+激光扫描成像
主要步骤:
①DNA文库制备——超声打断加接头
②Flowcell——吸附流动DNA片段
③桥式PCR扩增与变性——放大信号
④测序——测序碱基转化为光学信号
优势劣势:Illumina的这种测序技术每次只添加一个dNTP的特点能够很好的地解决同聚物长度的准确测量问题,它的主要测序错误来源是碱基的替换。而读长短(200bp-500bp)也让其应用有所局限。
2、Roche 454
油包水PCR + 4种dNTP车轮大战 + 检测焦磷酸水解发光
主要步骤:
①DNA文库制备——喷雾打断加接头
②乳液PCR——注水入油独立PCR
③焦磷酸测序——磁珠入孔,焦磷酸信号转化为光学信号
优势劣势:454技术优势测序读长较长,平均可达400bp,缺点是无法准确测量类似于PolyA的情况时,测序反应会一次加入多个T,可能导致结果不准确。也正是由于这一原因,454技术会在测序过程中引入插入和缺失的测序错误。
3、Ion Torrent 原理
油包水PCR + 4种dNTP车轮大战 + 微电极PH检测
主要步骤:
①DNA文库制备——喷雾打断加接头
②乳液PCR——注水入油独立PCR
③微电极pH检测——磁珠入池记录pH
优势劣势:Ion Torrent与454相比,主要差异在测序中,Ion Torrent不需要昂贵的物理成像设备,成本相对较低体积较小,同时操作更为简单,整个上机测序可在2-3.5小时内完成(文库构建时间除外)。其劣势在于芯片的通量并不高,非常适合小基因组和外显子验证的测序。
小结:二代测序相比一代测序大幅降低了成本,保持了较高准确性,并且大幅降低了测序时间,将一个人类基因组从3年降为1周以内,但在序列读长方面比起第一代测序技术则要短很多,这也给三代测序提供了发展空间。
三代测序:单分子测序
背景:测序技术经过第一代、第二代的发展,读长从一代测序的近1000bp,降到了二代测序的几百bp,通量和速度大幅提升,那么第三代测序的发展思路在于保持二代测序的速度和通量优势同时,弥补其读长较短的劣势。三代测序与前两代相比,最大的特点就是单分子测序,测序过程无需进行PCR扩增。
1、Oxford nanopore
纳米孔 + 电流检测技术
原理:该技术设计了一种特殊的纳米孔,孔内共价结合有分子接头,最终得到电信号而不是光信号或pH信号的测序技术。当DNA碱基通过纳米孔时,电荷将发生变化,因而短暂地影响流过纳米孔的电流强度(每种碱基所影响的电流变化幅度是不同的),灵敏的电子设备检测到这些变化从而鉴定所通过的碱基。
优势劣势:
①读长很长,大约在几十kb,甚至100 kb;
②错误率目前相比较高,且是随机错误,而不是聚集在读取的两端;
③数据可实时读取;
④通量很高(30x人类基因组有望在一天内完成);
⑤起始DNA在测序过程中不被破坏;
⑥样品制备简单又便宜;
⑦可直接测序RNA。
2、PacBio SMRT
纳米孔 + 荧光可逆终止dNTP技术
原理:PacBio SMRT技术其实是应用了边合成边测序的思想(使用4色荧光标记 4 种碱基),其超长读长的关键在于使用了活性持久且高保真的DNA聚合酶,并以SMRT芯片为测序载体(ZMW原理)。
优势劣势:
①SMRT技术的测序速度很快,每秒约10个dNTP;
②错误率较高,达到15%,出错随机,可通过多次测序来进行有效的纠错(如使用Sparc对30X的数据进行分析,错误率可达到0.5%);
③原始DNA不被破坏;
④读长可达10kbp。
3、Helicos Heliscope
单分子荧光可逆终止技术
原理:该技术基于边合成边测序的思想,将DNA随机打断成小片段分别进行dNTP荧光标记,经过不断地重复合成、洗脱、成像、淬灭过程完成测序。
主要步骤:
①制备:DNA打断加polyA+Cy3
②测序:dNTP荧光可逆终止
特点:
①读取长度约为30-35 bp,每个循环的数据产出量为21-28 Gb;在测序完成前,各小片段的测序进度不同;
②可根据同聚物的合成会导致荧光信号的减弱这一特点来推测同聚物的长度;
③可通过二次测序来提高准确度(直接变形洗脱模板)
小结:
三代测序优势:
①第三代基因测序读长较长,可以减少拼接成本,节省内存和计算时间;
②作用原理上避免了 PCR 扩增引入错误;
③拓展应用:RNA的序列,甲基化的DNA序列等;
三代测序缺陷:
①单读长的错误率偏高,需重复测序以纠错(增加测序成本);
②依赖DNA聚合酶的活性;
③成本较高(二代Illumina的测序成本是每100万个碱基0.05-0.15美元,三代测序成本是每100万个碱基0.33-1.00美元)。
④生信分析软件不够丰富、数据积累少。
e) 组装基本思路
f) overlap、
g) Contig、
Reads:即我们通常说的读长的意思,它是指高通量测序平台直接产生的DNA序列。
Contig:是指Reads基于Overlap关系,拼接获得的长的序列;
h) scaffold
Scaffold:是指将获得的Contig根据大片段文库的Pair-end关系,将Contig进一步组装成更长的序列;
Contig是无Gap的连续的DNA序列,而Scaffold是存在Gap的DNA序列。
i) N50
Contig N50是指将拼接得到的Contig从长到短进行排列,排列成一条线。当长度达到总长度一半的时候,此时该条Contig的长度即为ContigN50;如图所示,Contig 2的长度即是ContigN50。
Scaffold N50是将组装得到的Scaffold从长到短进行排列,当长度达到总长度一半的时候,此时该条Scaffold的长度即Scaffold N50。
一般来说C是ontiN50和ScaffoldN50的长度越长,基因组组装的质量也就越好。但是ContigN50和ScaffoldN50也不是唯一评估标准,还要看基因组的拼接的完整性等。
j) 利用测序深度及泊松分布模型预估测序数据量、
k) Kmer深度分布 、
l) Kmer分析方法的其他应用范围 、
m) 组装的具体流程和算法、
n) 组装结果影响因素、
o) 组装常用结果评估指标、
p) SOAP de novo 组装软件下载安装与使用方法、
q) 下机数据质量控制、
r) 基因组大小的评估&数据纠错、
s) SOAP de novo 配置文件
3、 基因组重测序:基因组重测序原理及常用软件使用方法:
16. 比对方法及常见问题说明
比对方法:
线性查找(从头到尾):BLAST;
哈希表(Hash table):MAQ,Bowtie,SOAP;
索引数组(Suffix array)或索引树(Suffix tree)和BWT算法:BWA,SOAP2,Bowtie2(主要用于RNA-seq比对);
70bp以下的read,比对用BWA sampe或samse;70bp-100bp以上的read,比对用BWA mem;
SAM、BAM和CRAM是常用的比对数据存储格式,存储内容相同,区别在于存储方式不同;
常见问题说明:
Amplification errors;
Strand bias;
Duplicate reads;
Multireads;
Chimeric reads;
Un-properly paired reads
17. 比对数据的质量控制
基于某基因组区域的深度与覆盖度,对该区域的比对进行质控
18. 深度与覆盖度统计
深度:depth,每个位点覆盖reads的条数称为该位点的深度;
覆盖度:coverage,目标区域内满足特定覆盖深度位点的比例,如某个基因区域内,深度在10x以上的覆盖度就是该基因区域内所有大于10x的位点占该基因总位点的比例;
用bamdst进行深度与覆盖度的统计
19. 变异检测
基于HTSlib开发的通用处理工具;
bcftools;
GATK系列;
SOAP系列;
20. 结构变异检测
结构变异指近1kb或1kb以上的DNA区域发生的变异,可以是倒位、平衡性的易位、非平衡性的插入缺失;
CNV,copy number variation,拷贝数变异,指在基因组上特定的一段序列发生缺失(少于正常拷贝个数)或重复(多于正常拷贝个数),是一种特殊的SV;
检测CNV的三种方案,包括利用深度检测,利用断裂点检测(同SV),利用突变基因型检测
21. 突变检测数据QC
单个样品总体QC,包括Ti/Tv,突变个数;
单个突变位点的QC,包括read depth,strand bias,allele balance;
多样品群体分析QC,包括HWE,fisher’s exact test,allele frequency(开放数据库中该位点频率)
22. 数据注释突变数据库
突变频率数据库,包括G1000,ExAC,ESP6500,dbSNP,dbVar(包含了大范围的突变信息)
功能预测数据库,dbNSFP
突变致病信息与表型数据库,包括HGMD,dbGap,ClinVar
23. 群体遗传突变分析
研究目的,包括了解某一物种或族群的进化历史(迁移),了解某一物种或族群的遗传特性;
研究步骤,1 SNP变异查找(与个体变异信息查找方法相同),2a 进化树构建,2b 人群突变频率统计与解读(plink,MVNcall),2c 遗传标记查找(SNPs,SVs,SSRs,InDels)
4、 基因注释:
a) 基因注释原理
b) 基因注释流程
c) 基因注释常用软件
d) 基因组组装结果是否符合注释要求的结果评估与质量控制
e) 不同类型重复序列预测方法及分析流程
f) 利用Genscan
g) Glimmer进行基因结构注释的软件使用方法
h) 利用Genewise进行基因同源结构预测的流程及软件使用方法
i) 利用tRNAscan进行ncRNA预测的操作方法
j) 数据的质量控制及结果解读
第八单元 生物信息分析常用数据库 (10分)
24. NCBI数据库的结构、使用方法、
NCBI数据库简介
25. 国际三大核酸数据库:NCBI、EMBL、DDBJ
26. NCBI的组成:检索窗口、资源列表(数据库,软件等)以及常用资源
NCBI数据库的使用方法
27. 搜索完成之后可以根据数据库,基因类型等筛选过滤也可以使用高级搜索Advance(根据物种、杂志、来源等各种限定条件搜索)
28. GeneBank格式:LOCUS、ACCESSION、JOURNAL、REFERENCE、FEATURE以及基因序列信息等
29. FASTA格式
30. 右上角send to可以批量下载
-
NCBI PubMed 文献检索方法 - PubMed是提供免费的MEDLINE、PERMEDLINE与其他相关数据库接入服务,MEDLINE是一个拥有1亿字条的巨大数据库
- 选择PubMed,用关键字进行检索
-
GO功能注释数据库的组成、结构、用途及在线检索方法
构建GO数据库的目的
35. GO基因本体联合会(Gene Ontology Consortium)构建的一个结构化的标准生物学模型,旨在建立基因及其产物知识的标准词汇体系
36. 一个基因注释是对基因产物的描述,有特定的分子功能(molecular function),涉及到特定的生物过程(biological process) 和作用在特定的细胞组分(cellular component)
GO数据库的组成与结构
37. 预定义术语(term)来描述基因产物
38. 包括三个本体(Ontology):MF、BP与CC
39. Ontology Structure :有向无环图Nodes和Edges
40. Ontology relationship
is a :上一个概念包括下一个概念,下一个概念是上一个概念的实例
part of:下一个概念是上一个概念的一部分
GO数据库的用途
41. 使基因及其产物知识词汇标准化,有利于计算机处理数据
42. GO通过控制注释词汇的层次结构使得研究人员能够从不同层面查询和使用基因注释信息
43. 与其它数据库建立联系,使研究者能更加方便的获取数据
GO数据库在线查询
44. AmiGO
45. 可根据GO terms或者gene or proteins检索
46. KEGG数据库的组成、结构、用途、在线检索方法及其生物学意义
KEGG数据库简介
47. 1995 KEGG京都百科全书
48. KEGG是一个整合了基因组、化学和系统功能信息的数据库
KEGG数据库组成
49. 数据库、软件以及资源列表;数据库的种类,常用的是KEGG Pathway数据库
50. 包含系统信息、基因组信息、化学信息和疾病相关数据库等19个数据库构成
51. KEGG ID号,以KEGG PATNWAY为例:由前缀(map,ko,ec,m,(org))和五位数字组成。
KEGG 数据库在线检索
52. 输入基因名字检索,可检索到基本信息、生物通路、功能分类、蛋白结构数据库、其他数据库、蛋白序列和核算序列
53. pathway查询:选物种,输入编号检索
54. DBGET
55. DAVID数据库的组成、结构、用途、在线检索方法及其生物学意义
56. DAVID,功能注释数据库,信息整合以及可视化,可用于
功能注释
功能聚类
数据库基因ID转换
基因名称展示
2. Start Analysis
upload gene list
选择基因ID的数据库类型
选择gene list还是backgroud
Submit
f) UCSC数据库的组成、结构、用途、在线检索方法及其生物学意义
g) UniProt数据库的组成、结构、用途、在线检索方法及其生物学意义
h) UniRef数据库的组成、结构、用途、在线检索方法及其生物学意义
i) UniPare数据库的组成、结构、用途、在线检索方法及其生物学意义

640

被折叠的 条评论
为什么被折叠?



