统计 fastq 文件 q20 , GC 含量的软件
2017-02-14 14:56
1796 查看
二代测序的分析过程中,经常需要统计原始下机数据的数据量,看数据量是否符合要求;另外还需要统计q20,q30,GC含量等反应测序质量的指标;
在kseq.h 的基础上稍加改造,就可以实现从fastq 文件中统计这些指标的功能,而且速度非常的快
源代码保存为 parse.c , 然后编译
在kseq.h 的基础上稍加改造,就可以实现从fastq 文件中统计这些指标的功能,而且速度非常的快
#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 = 0; long bases = 0; long q20_cnt = 0; long q30_cnt = 0; long gc_cnt = 0; int l; if (argc != 2) { fprintf(stderr, "Usage: %s <in.seq>\n", argv[0]); return 1; } fp = gzopen(argv[1], "r"); // STEP 2: open the file handler seq = kseq_init(fp); // STEP 3: initialize seq while ((l = kseq_read(seq)) >= 0) { // STEP 4: read sequence char *q = seq->qual.s; int c = 0; while (c < strlen(seq->qual.s)) { if (*q - 33 >= 20) { q20_cnt++;} if (*q - 33 >= 30) { q30_cnt++;} q++; c++; } char *s = seq->seq.s; int d = 0; while (d < strlen(seq->seq.s)) { if (*s == 'C' || *s == 'G') { gc_cnt++; } s++; d++; } bases += strlen(seq->seq.s); seqs += 1; } printf("%ld\t%ld\t%ld\t%ld\t%ld\n", seqs, bases, q20_cnt, q30_cnt, gc_cnt); kseq_destroy(seq); // STEP 5: destroy seq gzclose(fp); // STEP 6: close the file handler return 0; }
源代码保存为 parse.c , 然后编译
gcc -o fastq_stat parse.c -lz
相关文章推荐
- 统计 fasta 文件序列长度及 GC 含量
- 使用UpdateFile文件生成软件注意事项-----运维日志20
- Linux:centos释放缓存,查看磁盘空间大小,xxx文件夹, 查看文件夹大小,查看剩余内存,查看xxx软件位置,统计某文件夹,统计某文件夹下目录数量,查看文件夹大小,给文件夹下所有的文件赋值权限
- 20.文件系统――使用RPM安装、卸载、查询、升级和校验软件包
- 滑窗口统计基因组GC含量的分布
- Linux Fedora20 配置desktop文件,将软件添加到应用程序浏览器中
- php 统计fasta 序列长度和GC含量
- 统计一个文件中特定字符的个数
- 借助什么软件可以拆分pdf文件
- linux下如何统计一个目录下的文件个数以及代码总行数的命令
- 统计文件夹和文件数的算法
- .dll 文件反编译的工具软件
- Linux系统下统计目录及其子目录文件个数
- Atitit.软件开发概念说明--io系统区--特殊文件名称保存最佳实践文件名称编码...filenameEncode
- ubuntu 无法解析或打开软件包的列表或是状态文件-----解决方法
- Linux shell 脚本攻略之统计文件的行数、单词数和字符数
- java/android 统计文件夹大小及删除文件夹下所有文件和路径
- 20.软件缺陷管理流程(1)
- shell 统计一个文件夹下不同类型文件的个数
- hdfs统计行数和统计文件大小