利用Bioperl的SeqIO模块解析fastq文件
测序数据中经常会接触到fastq格式的文件,比如说拿到fastq格式的原始数据后希望查看测序碱基的质量并去除低质量碱基。一般而言大家都是用现有的工具,比如说fastqc这个Java写的小程序,确实很好用,运行速度快,检查的项目也多。有时候我们也需要对这些数据进行个性化的分析,那么这个时候这些小工具就不能胜任了,需要我们自己写程序(脚本)来处理。本人目前才疏学浅,因此只有一下三种方案:
1.完全自己写脚本,读取每一行,手动解析,然后实现个性化分析。(显然这个比较慢,相当于重造了一个转速很慢的轮子)
2.利用前人写好的工具,找出源码里面的核心解析程序,然后加以改进,实现个性化。(当然这个只能自己私下用用。这里推荐一个C语言的库 kseq.h,可以用来解析fasta/fastq格式的文件,底层语言运行速度非常快!)
3.利用Bioperl或者Biopython里面的工具解析文件,然后再写脚本个性化分析。(鉴于python的速度,这里推荐Bioperl)
下面具体介绍如何使用Bioperl的SeqIO模块解析fastq格式文件。
首先是安装Bioperl。
sudo apt-get install perlbrew sudo perlbrew install-cpanm sudo /path/cpanm Bio::Perl
解析 head10000.fastq 文件的前四行(第一条序列)。
#!/bin/perl -w
use Bio::SeqIO;
use Bio::Seq::Quality;
my $in = Bio::SeqIO->new(-format => "fastq",
-variant => "sanger",
-file => 'head10000.fastq' );
while(my $seq = $in->next_seq){ print $seq->id,"\n";
print $seq->seq,"\n";
print $seq->length,"\n";
print "@{$seq->qual}","\n";
last;
}
运行结果如下:
E00552::HHCM5ALXX::::
NTCGAAACGGCGGATCATGCCAGGCTGCAACTGCAGCTGGCCTACAACTGGCACTTTGAGGTGAATGACCGGAAGGACCCCCAAGAGACGGCCAAGCTCGTTTCAGTGCCAGACTTTGTAGGTGATGCCTGCAAAGCCATCGCATCCCGG
与此同时,我们查看 head10000.fastq 文件的前四行:
@E00552::HHCM5ALXX:::: :N::TACAGCAT
NTCGAAACGGCGGATCATGCCAGGCTGCAACTGCAGCTGGCCTACAACTGGCACTTTGAGGTGAATGACCGGAAGGACCCCCAAGAGACGGCCAAGCTCGTTTCAGTGCCAGACTTTGTAGGTGATGCCTGCAAAGCCATCGCATCCCGG
+
#AA<FJJJFJJJJFJJJJJJJJJFJJJJ<-F<JF7JJJJJJJJJJF<JF7FJFAJFJJJJJJ<F-FJFAJJFJFJFAJJJJJJJAAFF<AJF7AFJJAF-AJJJFJJJJJJJJFJJF<AAFJJFJJJFAFFAAFFJ-AFJJA<-7F)-<
对照ascii码表可以发现,运行结果的最后一行,即为原始文件的第四行的ascii码对应的十进制数值减去33。例如 "#"(35) - 33 = 2;"A"(65) - 33 = 32;“<”(60) - 33 = 27。也就是说这里的碱基质量用的是phred33。
最后解释一下这几行命令的意思:
print $seq->id; #打印$seq对象的序列ID;
print $seq->seq; #打印$seq对象的序列碱基;
print $seq->length; #打印$seq对象的序列长度;
print "@{$seq->qual}"; #打印$seq对象的序列质量;
利用Bioperl的SeqIO模块解析fastq文件的更多相关文章
- python 利用三方的xlrd模块读取excel文件,处理合并单元格
目的: python能使用xlrd模块实现对Excel数据的读取,且按照想要的输出形式. 总体思路: (1)要想实现对Excel数据的读取,需要用到第三方应用,直接应用. (2)实际操作时候和我 ...
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
- PS常见错误-无法完成请求,因为文件格式模块不能解析该文件
无法完成请求,因为文件格式模块不能解析该文件 将图片格式变成.jpg格式就可以了
- 在java项目中怎样利用Dom4j解析XML文件获取数据
在曾经的学习.net时常常会遇到利用配置文件来解决项目中一些须要常常变换的数据.比方数据库的连接字符串儿等.这个时候在读取配置文件的时候.我们一般会用到一个雷configuration,通过这个类来进 ...
- 利用kseq.h parse fasta/fastq 文件
在分析中经常需要统计fasta/fastq文件的序列数和碱基数, 但是没有找到一些专门做这件事的小工具,可能是这个功能太简单了: 之前用自己写的perl的脚本统计这些信息, 当fastq文件非常大时, ...
- 安卓开发之利用XmlPullParser解析XML文件
package com.lidaochen.phonecall; import android.support.v7.app.AppCompatActivity; import android.os. ...
- python XML文件解析:用xml.dom.minidom来解析xml文件
python解析XML常见的有三种方法: 一是xml.dom.*模块,是W3C DOM API的实现,若需要处理DOM API则该模块很合适, 二是xml.sax.*模块,它是SAX API的实现,这 ...
- optparse模块解析命令行参数的说明及优化
一.关于解析命令行参数的方法 关于“解析命令行参数”的方法我们一般都会用到sys.argv跟optparse模块.关于sys.argv,网上有一篇非常优秀的博客已经介绍的很详细了,大家可以去这里参考: ...
- 如何用python解析mysqldump文件
一.前言 最近在做离线数据导入HBase项目,涉及将存储在Mysql中的历史数据通过bulkload的方式导入HBase.由于源数据已经不在DB中,而是以文件形式存储在机器磁盘,此文件是mysqldu ...
随机推荐
- 未能加载文件或程序集“ RevitAPIUI.dll”
revit二次开发中遇到的问题 RevitAPIUI.dll 只能 Native Library 中执行: 脱离了Native Library,API是跑不起来的 . 检查程序流程:登录,配置,启动r ...
- jodatime 时间比较
public ArrayList<CalcPeriod> getCalcPeriods() { DateTime now = DateTime.now(); DateTime.Proper ...
- tomcat 热替换class
需要在server.xml中做以下配置: 在host节点内加入<Context>标签,reloadable属性设置为true. <Host name="localhost& ...
- 服务器批量管理软件ansible安装以及配置
1.yum安装(管理主机以及被管理主机都需要安装) yum install epel-release yum install ansible 2.配置管理主机 vim /etc/ansible/hos ...
- z-index的学习整理转述
前言:这是笔者第一次写博客,主要是学习之后自己的理解.如果有错误或者疑问的地方,请大家指正,我会持续更新! z-index属性描述元素的堆叠顺序(层级),意思是A元素可以覆盖B元素,但是B元素并没有消 ...
- poj1094-Sorting It All Out-拓扑排序
题意: 1).给你一些大写字母,共n个:大写字母间有m条关系: 2).举例:关系:A<B,意思就是A要排在B的前面(也就是说可能B排在A的前面 3).输出:有三种情况: 1.n个字母在前 i 条 ...
- C#之PixturBox控件实现缩放和拖动图片
一.实现鼠标滚轮控制图片缩放: 1.设置PixtureBox属性: Dock:none SizeMode:StretchImage 2.添加事件: pbxDrawing.MouseWheel += n ...
- 运用正则+replace+substring将一段英语的字母大写 angurlar运用自定义指令filter完成首字母大写
复习下js基础并运用正则+replace+substring将一段英语的字母大写 <!DOCTYPE html><html> <head> <meta cha ...
- HashMap 你真的了解吗?
HashMap深入解析及详细介绍 一. hashmap简介 HashMap是基于哈希表的Map接口的非同步实现.此实现提供所有可选的映射操作,并允许使用null值和null键.此类不保证映射的顺序,特 ...
- 出错信息:Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column 'username'
出错信息: java.sql.SQLException: Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column 'username ...