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 }

C语言计算fastq文件GC含量的更多相关文章

  1. C语言计算fastq文件GC含量2

    改进了一下,利用zlib可以读取gz格式的压缩文件,也可以直接计算非压缩格式 #include <stdio.h> #include <stdlib.h> #include & ...

  2. 统计 fastq 文件 q20 , GC 含量的软件

    二代测序的分析过程中,经常需要统计原始下机数据的数据量,看数据量是否符合要求:另外还需要统计q20,q30,GC含量等反应测序质量的指标: 在kseq.h 的基础上稍加改造,就可以实现从fastq 文 ...

  3. perl练习——FASTA格式文件中序列GC含量计算&perl数组排序如何获得下标或者键

    一.关于程序: FUN:计算FASTA文件中每条序列中G和C的含量百分比,输出最大值及其id INPUT:FASTA格式文件 >seq1 CGCCGAGCGCTTGACCTCCAGCAAGACG ...

  4. R语言计算相关矩阵然后将计算结果输出到CSV文件

    R语言计算出一个N个属性的相关矩阵(),然后再将相关矩阵输出到CSV文件. 读入的数据文件格式如下图所示: R程序采用如下语句: data<-read.csv("I:\\SB\land ...

  5. fastq文件基本信息统计工具

    之前写的一个小工具,写的很简陋,名字取的也很随意就叫skr,哈哈.主要是fq转fa.合并多个染色体的vcf文件等,功能不多(主要是C写起来太操蛋了T_T),通常我也只用来统计fastq文件信息: 这里 ...

  6. c语言的头文件-不是c++类的头文件?

    下面的概述是参考的这篇文章:http://blog.csdn.net/bingxx11/article/details/7771437 c语言编程中也有,也需要头文件, 头文件不只是C++的类才需要! ...

  7. 利用Bioperl的SeqIO模块解析fastq文件

    测序数据中经常会接触到fastq格式的文件,比如说拿到fastq格式的原始数据后希望查看测序碱基的质量并去除低质量碱基.一般而言大家都是用现有的工具,比如说fastqc这个Java写的小程序,确实很好 ...

  8. php 统计fasta 序列长度和GC含量

    最近php7的消息铺天盖地, 忍不住想尝试下.星期天看了下语法, 写个小脚本练下手: 这个脚本读取fasta 文件, 输出序列的长度和GC含量: <?php $fasta = "tes ...

  9. perl 截取 fastq文件

    #!/usr/bin/perl -w use warnings; use strict; input_fastq trim_length}; ; my ($fastq, $trim_length) = ...

随机推荐

  1. Noip模拟80 2021.10.18

    预计得分:5 实际得分:140?????????????? T1 邻面合并 我考场上没切掉的大水题....(证明我旁边的cty切掉了,并觉得很水) 然而贪心拿了六十,离谱,成功做到上一篇博客说的有勇气 ...

  2. 转向系统的传递路径分析(Transfer Path Analysis)入门的一些分享

    分享一些自己对于<转向系统><传递路径分析>的理解 (只是一些个人理解,不涉及任何公司隐私问题,logo就懒得一个个去擦了) (1) (2) (3) (4) (5) (6) ( ...

  3. @RequestAttribute与@MatrixVariable

    @RequestAttribute 它只能使用在方法入参上,从request请求参数中获取对应的属性值. //路径跳转 @GetMapping("/goto") public St ...

  4. PTA 7-3 树的遍历 (25分)

    PTA 7-3 树的遍历 (25分) 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 输入格式: 输入第一行给出一个正整数N(≤30),是二叉树中结点 ...

  5. Vue中computed计算属性

    话不多说,使用方法直接上代码//在模板中调用computedTest这个函数,切记不要在函数后添加()<template> <div class="home"&g ...

  6. S2-001漏洞分析

    前言 开始好好学Java,跟着师傅们的文章走一遍 Strust简介 Struts2是流行和成熟的基于MVC设计模式的Web应用程序框架. Struts2不只是Struts1下一个版本,它是一个完全重写 ...

  7. MyBatis 中为什么不建议使用 where 1=1?

    最近接手了一个老项目,"愉悦的心情"自然无以言表,做开发的朋友都懂,这里就不多说了,都是泪... ​ 接手老项目,自然是要先熟悉一下业务代码,然而在翻阅 mapper 文件时,发现 ...

  8. Java学习(十九)

    先学了字体分类 大概是这种效果: 一般把这些大类放在font-family的最后使用,防止字体呈现的效果不够好. 今天把final关键字学完了 也要几点要注意,我觉得比较重要的就是public sta ...

  9. Ubuntu加速訪問GitHub

    Github一般用于Git的远程仓库,由于服务器位于国外,国内访问速度比较慢,为了提高访问速度,决定绕过DNS域名解析. 获取Github的IP地址 按下ctrl+alt+T打开命令终端,输入: ns ...

  10. Nginx server_name翻译

    http://nginx.org/en/docs/http/server_names.html#regex_names 匹配优先顺序 精确名称,无通配符,无正则. 以星号开头的最长的通配符名称,例如& ...