利用kseq.h parse fasta/fastq 文件
在分析中经常需要统计fasta/fastq文件的序列数和碱基数, 但是没有找到一些专门做这件事的小工具,可能是这个功能太简单了;
之前用自己写的perl的脚本统计这些信息, 当fastq文件非常大时,就变的很慢;
今天在网上搜到kseq.h可以parse fasta/fastq文件,用C写的, 速度很快;
http://lh3lh3.users.sourceforge.net/parsefastq.shtml
自己试了一下, 在这个基础上添加个小功能, 命名为parse.c:
#include <zlib.h>
#include <stdio.h>
#include <string.h>
#include "kseq.h"
// STEP 1: declare the type of file handler and the read() function
KSEQ_INIT(gzFile, gzread) int main(int argc, char *argv[])
{
gzFile fp;
kseq_t *seq;
long seqs = ;
long bases = ;
int l;
if (argc == ) {
fprintf(stderr, "Usage: %s <in.seq>\n", argv[]);
return ;
}
fp = gzopen(argv[], "r"); // STEP 2: open the file handler
seq = kseq_init(fp); // STEP 3: initialize seq
while ((l = kseq_read(seq)) >= ) { // STEP 4: read sequence
//printf("name: %s\n", seq->name.s);
//if (seq->comment.l) printf("comment: %s\n", seq->comment.s);
//printf("seq: %s\n", seq->seq.s);
//if (seq->qual.l) printf("qual: %s\n", seq->qual.s);
bases += strlen(seq->seq.s);
seqs += ;
}
//printf("return value: %d\n", l);
printf("reads: %ld\n", seqs);
printf("bases: %ld\n", bases);
kseq_destroy(seq); // STEP 5: destroy seq
gzclose(fp); // STEP 6: close the file handler
return ;
}
然后编译
gcc -o fastx_read_length -lz parse.c
因为调用zlib,读取压缩文件,所以编译时需要添加-lz 选项;
测试了一下可以跑通;感觉kseq.h功能好强大, 支持fasta/fastq,支持gzip压缩文件
利用kseq.h parse fasta/fastq 文件的更多相关文章
- fastx tookit 操作fasta/fastq 文件 (1)
准备测试文件 test.fq, 包含4条fastq 文件,碱基编码格式为phred64; @FC12044_91407_8_200_406_24 NTTAGCTCCCACCTTAAGATGTTTA + ...
- 将fasta fastq文件线性化处理
将fasta文件线性化处理 awk '/^>/ {printf("%s%s\t",(N>0?"\n":""),$0);N++;n ...
- seqtk 一款快速处理fasta/fastq 文件的小程序
seqtk 的 GitHub 官网 https://github.com/lh3/seqtk 安装 git clone https://github.com/lh3/seqtk.git cd seqt ...
- 利用Bioperl的SeqIO模块解析fastq文件
测序数据中经常会接触到fastq格式的文件,比如说拿到fastq格式的原始数据后希望查看测序碱基的质量并去除低质量碱基.一般而言大家都是用现有的工具,比如说fastqc这个Java写的小程序,确实很好 ...
- 统计 fastq 文件 q20 , GC 含量的软件
二代测序的分析过程中,经常需要统计原始下机数据的数据量,看数据量是否符合要求:另外还需要统计q20,q30,GC含量等反应测序质量的指标: 在kseq.h 的基础上稍加改造,就可以实现从fastq 文 ...
- fasta/fastq格式解读
1)知识简介--------------------------------------------------------1.1)测序质量值 首先在了解fastq,fasta之前,了解一下什么是质量 ...
- 利用mongoimport命令导入csv大文件
最近我同事做了一个PHP项目,其中有一个功能是 上传excel文件并将数据导入mongodb某个集合中. 通常的做法是 写一个上传文件的页面,然后后端 读取 这个文件,利用phpexcel类库将这个e ...
- 利用gsoap工具,通过wsdl文件生成webservice的C++工程文件
一.下载gsoap文件,下载地址:https://zh.osdn.net/projects/sfnet_gsoap2/releases/ 二.以gsoap-2.8为例,解压到D盘,在D:/gsoap- ...
- perl 截取 fastq文件
#!/usr/bin/perl -w use warnings; use strict; input_fastq trim_length}; ; my ($fastq, $trim_length) = ...
随机推荐
- git版本控制文件提交到composer应用市场,并下载用市场的软件库
要把github中的项目提交到composer中去,必须在github管理的项目中新建对应的composer.json文件, composer.json文件建立的方法 cmd定位到项目目录 compo ...
- HTML5游戏实战之精灵翻转
要实现精灵的翻转.很easy.先看实际效果点这里. 代码仅仅有区区几行: var sp = this.getWindow().find("ui-status2-general"); ...
- About - CONNECT_BY_FILTERING
再次碰到一个诡异的事情,同样的SQL在两个类似数据库中执行时间相差非常之多.直观反应就是执行计划不一样,果不其然. 在跑得很快的环境中的执行计划, 但是在另外一个环境中的执行计划却是, 从执行计划中可 ...
- js操作checkbox(复选框)的方法总结
收集了一些用js代码操作checkbox复选框的代码,分享出来,供需要的朋友参考: <script> //复选框checkbox 处理方法 //搜集整理 www.jbxue.com fun ...
- 关于XILINX芯片IO管脚的上拉电阻的疑问
XILINX的每个IO脚都有一个可选的可配上拉电阻功能,现在我在配置文件的UCF里使用了这个上拉电阻:语法如下:NET"I_key_data" LOC = " ...
- CocoaPods did not set the base configuration of your project 问题解决方式
今天在使用pod install的时候.出现了 [!] CocoaPods did not set the base configuration of your project because you ...
- Django使用表单操作数据库
前言 目标:实现Django通过表单的GET方式和POST方式提交数据,并添加到数据库 . OS:win10 x64 Django:1.11.8 Python: 3.6 本文完整示例:完整示例: 虽然 ...
- Ubuntu C/C++开发环境的安装和配置
安装ubantu会自动安装GCC,但是这个GCC什么文件都不能编译,因为没有一些必须的头文件,所以要安装build-essential这个软件包,安装了这个包会自动安装上g++,libc6-dev,l ...
- ios应用下架方法(说明)
ios应用下架方法(说明) 正在审核中的: 在binary details里边 reject按钮 已经上架的: 在itunesconnect里的app详情里面找到rights and pricin ...
- JS parseInt 中08.09 被按照0处理(转)
<script type="text/javascript"> var aa=["01","02","03" ...