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) = ...
随机推荐
- Prometheus的单机部署
Prometheus的单机部署 一.什么是Prometheus 二.Prometheus的特性 三.支持的指标类型 1.Counter 计数器 2.Gauge 仪表盘 3.Histogram 直方图 ...
- 洛谷 P3147 [USACO16OPEN]262144 P
链接: P3147 P3146双倍经验 前言: 今天发现的一道很有意思的DP题 分析: 第一眼以为是区间DP,于是设f[i][j]为从第i个数到第j个数可以合出的最大值,但思考后发现并不能简单合并,并 ...
- 『学了就忘』Linux基础 — 10、VMware虚拟机中克隆的使用
目录 1.什么是克隆 2.克隆的两种类型 (1)完整克隆 (2)链接克隆 3.克隆操作 步骤一:克隆虚拟机 步骤二:进行克隆导向 3.快照与克隆的区别 4.镜像的管理 快照和克隆是VMware中两个非 ...
- git merge远程合并
当某个分支上的开发工作完成后需要将其合入主分支master 但是在提交合并前我们自己最好做一次衍合,目的是检测是否有冲突的风险,如果有应该在本分支先解决冲突然后在提交合并. 否则解决冲突的工作就全部转 ...
- dhcpd:bad subnet number/mask combination. subnet
今天在调试wifi热点启动hdcpd服务时出现报错"bad subnet number/mask combination. subnet 192.168.1.1", Interne ...
- TypeError: 'encoding' is an invalid keyword argument for this function 解决Python 2.7
在python2.7中这样调用代码 open('file/name.txt','r',encoding= 'utf-8').read() 会出现 TypeError: 'encoding' is an ...
- Luogu P1118 [USACO06FEB]数字三角形 Backward Digit Sums | 搜索、数学
题目链接 思路:设一开始的n个数为a1.a2.a3...an,一步一步合并就可以用a1..an表示出最后剩下来的数,不难发现其中a1..an的系数恰好就是第n层杨辉三角中的数.所以我们可以先处理出第n ...
- PHP笔记2__变量/字符串/类型转换/常量/,,
<?php //可变变量 $a = "ok"; $$a = "fine"; $$$a = "er"; echo $ok; echo & ...
- 数字孪生 3D 科技馆的科学传播新模式
前言 科技馆是一种参与型体验型的博物馆,以传播科学知识.培养公众的科学创新技术为宗旨,并以其生动的展现方式得到公众的广泛欢迎.一直以来,我国科技馆的发展受到各种因素的制约和影响,发展缓慢.如今在我国经 ...
- 『学了就忘』Linux基础命令 — 28、别名和常用快捷键
目录 1.别名 2.常用快捷键 1.别名 别名也是Shell中的命令. 命令的别名,就是命令的小名,主要是用于照顾管理员使用习惯的. 命令格式: # 查询系统中命令别名 [root@localhost ...