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. 微服务(三) Eureka注册中心和Ribbon负载均衡

    1. Eureka注册中心 1.1 Eureka的结构和作用 在上一篇文章中 微服务(二)服务拆分及远程调用 order-service在发起远程调用的时候,该如何得知user-service实例的i ...

  2. MIPI归纳---为什么阻抗为100欧姆

    根据LVDS(Low Voltage Differential Signaling)电平定义的. LVDS差分信号PN两线最大幅度是350mV,内部一个恒流源电流是3.5mA.于是终端匹配电阻是100 ...

  3. 从0到1搭建自己的组件(vue-code-view)库(下)

    0x00 前言 书接上文,本文将从源码功能方面讲解下 vue-code-view 组件核心逻辑,您可以了解以下内容: 动态组件的使用. codeMirror插件的使用. 单文件组件(SFC,singl ...

  4. 有关于ONVIF

    1.什么是ONVIF2008年5月,由安讯士(AXIS)联合博世(BOSCH)及索尼(SONY)公司三方宣布携手共同成立一个国际开放型网络视频产品标准网络接口开发论坛,取名为ONVIF(Open Ne ...

  5. idea关联数据库

    时区错误解决方法

  6. java语言方法中定义final类型的入参有什么用意?

    无论参数是基本数据类型,还是引用数据类型,只要加了final,不好意思,该参数不可以再赋值(实参传进来给形参,就相当于初始化完成).可以防止在方法里面不小心重新赋值,造成一些不必要的麻烦!!!参考:h ...

  7. Django笔记&教程 0-2 框架版本与相关工具

    Django 自学笔记兼学习教程第0章第2节-- 框架版本与相关工具 点击查看教程总目录 1 版本 python: 3.6.5 Django: 2.2.11 (有些地方我也会对比下各种版本的区别) 安 ...

  8. laravel DB 类库

    DB 类操作数据库    基本用法: DB::table('tableName'); 获取操作tableName 表        增加信息        对数据库中的某个表增加数据主要有两个函数可以 ...

  9. 96-00年CPU功耗感知调度研究

    最近读了一些1996-2000年的通过调度来降低cpu能耗的文章,主要文章有[1] [2] [3] [4] [5], 简单总结一些该时期单核CPU功耗感知的调度策略. 该时期还出现了很多关于低功耗电路 ...

  10. [nowcoder5669H]Harder Gcd Problem

    题目相当于问1-n中最多能选出多少对不互素无交集的二元组,并要求方案 构造:将所有数放入其最小质因子对应的集合,若素数p所对应的集合元素个数为奇数且$p\ne 2$且$2p\le n$,那么就将$2p ...