C语言计算fastq文件GC含量
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含量的更多相关文章
- C语言计算fastq文件GC含量2
改进了一下,利用zlib可以读取gz格式的压缩文件,也可以直接计算非压缩格式 #include <stdio.h> #include <stdlib.h> #include & ...
- 统计 fastq 文件 q20 , GC 含量的软件
二代测序的分析过程中,经常需要统计原始下机数据的数据量,看数据量是否符合要求:另外还需要统计q20,q30,GC含量等反应测序质量的指标: 在kseq.h 的基础上稍加改造,就可以实现从fastq 文 ...
- perl练习——FASTA格式文件中序列GC含量计算&perl数组排序如何获得下标或者键
一.关于程序: FUN:计算FASTA文件中每条序列中G和C的含量百分比,输出最大值及其id INPUT:FASTA格式文件 >seq1 CGCCGAGCGCTTGACCTCCAGCAAGACG ...
- R语言计算相关矩阵然后将计算结果输出到CSV文件
R语言计算出一个N个属性的相关矩阵(),然后再将相关矩阵输出到CSV文件. 读入的数据文件格式如下图所示: R程序采用如下语句: data<-read.csv("I:\\SB\land ...
- fastq文件基本信息统计工具
之前写的一个小工具,写的很简陋,名字取的也很随意就叫skr,哈哈.主要是fq转fa.合并多个染色体的vcf文件等,功能不多(主要是C写起来太操蛋了T_T),通常我也只用来统计fastq文件信息: 这里 ...
- c语言的头文件-不是c++类的头文件?
下面的概述是参考的这篇文章:http://blog.csdn.net/bingxx11/article/details/7771437 c语言编程中也有,也需要头文件, 头文件不只是C++的类才需要! ...
- 利用Bioperl的SeqIO模块解析fastq文件
测序数据中经常会接触到fastq格式的文件,比如说拿到fastq格式的原始数据后希望查看测序碱基的质量并去除低质量碱基.一般而言大家都是用现有的工具,比如说fastqc这个Java写的小程序,确实很好 ...
- php 统计fasta 序列长度和GC含量
最近php7的消息铺天盖地, 忍不住想尝试下.星期天看了下语法, 写个小脚本练下手: 这个脚本读取fasta 文件, 输出序列的长度和GC含量: <?php $fasta = "tes ...
- perl 截取 fastq文件
#!/usr/bin/perl -w use warnings; use strict; input_fastq trim_length}; ; my ($fastq, $trim_length) = ...
随机推荐
- Spring Cloud Alibaba 介绍及工程准备
简介 SpringCloud Alibaba是阿里巴巴集团开源的一套微服务架构解决方案. 微服务架构是为了更好的分布式系统开发,将一个应用拆分成多个子应用,每一个服务都是可以独立运行的子工程.其中涵盖 ...
- 2021.6.29考试总结[NOIP模拟10]
T1 入阵曲 二位前缀和暴力n4可以拿60. 观察到维护前缀和时模k意义下余数一样的前缀和相减后一定被k整除,前缀和维护模数,n2枚举行数,n枚举列, 开一个桶记录模数出现个数,每枚举到该模数就加上它 ...
- 关于下载pyton第三方库的细节
1.下载Python第三方库有时候国外的网站网速很不好,需要选择国内的镜像网站去下载 阿里云 http://mirrors.aliyun.com/pypi/simple 中国科技大学 https: ...
- 海思 core 电压动态调整
http://www.eda365.com/forum.php?mod=viewthread&tid=108620&_dsign=5bee4dcb http://www.eda365. ...
- shell脚本自学笔记
一. 什么是Shell脚本 shell脚本并不能作为正式的编程语言,因为它是在linux的shell中运行的,所以称为shell脚本.事实上,shell脚本就是一些命令的集合. 假如完成某个需求需要一 ...
- 用Python画如此漂亮的专业插图 ?简直So easy!
本文整理自知乎问答,仅用于学术分享,著作权归作者所有.如有侵权,请联系我删文处理.多多转发,多多学习! 方法一 强烈推荐 Python 的绘图模块 matplotlib: python plottin ...
- 【转】PLI是什么以及怎么用
programmable language interface 这里就说给verilog用的一些系统函数,还是无双大大的帖子 首先介绍了怎么让你自己写的pli系统函数在ncverilog里面可以成功调 ...
- c++ get keyboard event
#include <string> #include <iostream> #include "windows.h" #include <conio. ...
- dubbo 配置 loadbalance 不生效?撸一把源码
背景 很久之前我给业务方写了一个 dubbo loadbalance 的扩展(为了叙述方便,这个 loadbalance 扩展就叫它 XLB 吧),这两天业务方反馈说 XLB 不生效了 我心想,不可能 ...
- APP自动化之Hybrid自动化解决方案(七)
基于UIAutomator+ChromeDriver模式(UIAutomator安卓原生引擎) 原理:native(原生)部分使用UIAutomator,webview部分使用ChromeDriver ...