C语言小练习:计算非压缩fastq格式的GC含量

 1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #define buff 1024
5
6 typedef unsigned long long int u_llong;
7
8 static void usage(int num,const char *str)
9 {
10 if(num !=2)
11 {
12 fprintf(stderr,"usage: %s fqFile\n",str);
13 exit(0);
14 }
15 }
16
17 static u_llong* gcN(char base[buff])
18 {
19 base[strlen(base)-1]='\0';
20
21 int i;
22 static u_llong gactn[]={0,0,0,0,0};
23 for(i=0; i<strlen(base); i++)
24 {
25 if(base[i]=='G')
26 gactn[0]++;
27 if(base[i]=='A')
28 gactn[1]++;
29 if(base[i]=='C')
30 gactn[2]++;
31 if(base[i]=='T')
32 gactn[3]++;
33 if(base[i]=='N')
34 gactn[4]++;
35 }
36 return gactn;
37 }
38
39 static void calc(const char *fqfile)
40 {
41 FILE *fq;
42 if((fq=fopen(fqfile,"r")) == NULL)
43 {
44 perror("fopen");
45 exit(1);
46 }
47 //fprintf(stderr,"fq file <%s> open suceed!\n",fqfile);
48
49 char base[buff];
50 char qual=0;
51 u_llong *p=NULL;
52 while((fgets(base,buff,fq))!= NULL)
53 {
54 if(base[0]=='@')
55 {
56 continue;
57 }
58 if(base[0]=='+')
59 {
60 qual=1;
61 continue;
62 }
63 if(qual==1)
64 {
65 qual=0;
66 continue;
67 }
68
69 p=gcN(base); // G A C T N
70 }
71
72 float GClevel,Nlevel;
73 u_llong sum=0;
74 for(int i=0; i<5; i++)
75 {
76 sum+=*(p+i);
77 }
78 GClevel=(float)(*p+*(p+2)) / sum * 100;
79 Nlevel=(float)(*p+4) / sum * 100;
80
81 fprintf(stdout,"G:%lld\tA:%lld\nC:%lld\tT:%lld\nN:%lld\tsum:%lld\n",*p,*(p+1),*(p+2),*(p+3),*(p+4),sum);
82 fprintf(stdout,"GC:%.2f%%\n",GClevel);
83
84 fclose(fq);
85 }
86
87 int main(int argc,const char *argv[])
88 {
89 usage(argc,argv[0]);
90 calc(argv[1]);
91
92 exit(0);
93 }

最新文章

  1. 【HDU 4305】Lightning(生成树计数)
  2. jsp学习---css基础知识学习,float,position,padding,div,margin
  3. 【读书笔记】iOS-使用应用内支付注意事项
  4. [Effective JavaScript 笔记]第5章:数组和字典--个人总结
  5. mongo链接报错:couldn&#39;t connect to server 127.0.0.1:27017 (127.0.0.1)
  6. 用jQuery解析复杂的xml结构文件
  7. this的用法this.name=name 这个什么意思
  8. altKey,ctrlKey,shiftKey
  9. Vxworks下的SATA提速
  10. 2019/4/19 wen 线程2
  11. Java框架部分---面试题
  12. solus下 修改 crate-react-app 的默认下载依赖方式为 yarn
  13. 在caffe中执行脚本文件时 报错:-bash: ./train.sh: Permission denied
  14. 1.3.5、CDH 搭建Hadoop在安装之前(端口---Cloudera Search使用的端口)
  15. ARKit从入门到精通(2)-ARKit工作原理及流程介绍
  16. innodb 源码分析 --锁
  17. loj#121.「离线可过」动态图连通性
  18. JS自动爆炸案例
  19. C# 时间戳与DateTime间的互相转换
  20. TCP Server有两个套接字

热门文章

  1. 【二食堂】Beta - 项目展示
  2. docker multi-stage 多阶段构建
  3. Python爬虫之爬取淘女郎照片示例详解
  4. Redis的浅入门
  5. 对SQLServer错误使用聚集索引的优化案例(千万级数据量)
  6. 转帖:新版vivado2019.2新增增量综合功能
  7. Device /dev/sdb excluded by a filter
  8. namaspace之pid namespace
  9. Springboot+vue前后端分离项目,poi导出excel提供用户下载的解决方案
  10. linux磁盘空间查看