使用R获取DNA的反向互补序列

Python016

使用R获取DNA的反向互补序列,第1张

前面跟大家聊了一下 ☞R如何reverse一个字符串 ,其实这个只能实现反向,那怎么样才能实现互补呢?其实获取DNA的反向互补序列这个事情本身并不是很难。有很多网页工具都能够实现,我随便在网上搜了一下就找到3个。我这里只是想结合R语言来解决我们生物信息里面的一些小问题,帮助大家理解R。我们还是用上次的DNA序列来举例

如果大家只是想解决这个问题,可以使用下面提到的三个网页工具

1. https://www.bioinformatics.org/sms/rev_comp.html

将你的序列贴进对话框,点击SUBMIT就能得到方向互补序列

2. https://arep.med.harvard.edu/labgc/adnan/projects/Utilities/revcomp.html

你会发现这个工具不仅可以得到反向互补序列,还可以得到反向序列,互补序列,看你自己的需求是什么。将你的序列贴进对话框,点击reverse complement就能得到反向互补序列

3. http://www.cellbiol.com/cgi-bin/complement/rev_comp.cgi

将你的序列贴进对话框,点击Do the Job!就可以得到反向互补序列了

接下来我们用R语言来实现这个功能,我还是给大家介绍两种不同的方法。一种是比较原始一点的方法。第二种是站在前人的肩膀上,使用已有的R包来实现。

1.使用strsplit,rev,paste等R自带的函数来实现

2.使用mgsub包中的mgsub函数

参考资料: R如何reverse一个字符串

GenomicAlignments 可以高效储存和操作短序列比对 (short genomic alignments) ,包括 read counting, computing the coverage, junction detection, 以及比对中核苷酸含量的操作。包内有 GAlignments , GAlignmentPairs , GAlignmentsList 三种对象。

从 BAM 文件得到已比对的 reads 和其序列。

这时用到了一个数据包: RNAseqData.HNRNPC.bam.chr14 .

调用 Rsamtools 包内的函数 quickBamFlagSummary() 查看 BAM 文件中的序列是单端或双端比对。

在利用 readGAlignments() 读取基因组比对前,需要用函数 ScanBamParam() 构建一些参数。

当由高通量测序实验产生的 reads 被比对到参考基因组后,一般来说人们提出的问题分为两大类: positional only nucleotide-related .

针对比对的 "nucleotide-related" 问题, GenomicAlignments 提供了不同层次的工具。

BAM 格式中的 read 序列是“反向互补”的,当它们与反义链比对时,我们需要将它们重新“反向互补”,得到原始询问序列 ( original query sequences ).

确定需要被“反向互补”的 reads:

每个 read 都会被比对不止一次,所以 gal1 中肯定有重复。

去重:

由于比对过程中是容许一些错配、插入缺失标记、缺口的,所以 mcols(gal1)$seq 中的序列并不是完全与参考基因组匹配的。

"CIGAR" 包含着这些“小错误”出现在比对中的位置信息。