统计 fastq 文件 q20 , GC 含量的软件
二代测序的分析过程中,经常需要统计原始下机数据的数据量,看数据量是否符合要求;另外还需要统计q20,q30,GC含量等反应测序质量的指标;
在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 |
欢迎关注微信公众号<生信修炼手册>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2016-02-14 人类基因组在三大基因数据库中的不同版本