perl练习——FASTA格式文件中序列GC含量计算perl数组排序如何获得下标或者键
一、关于程序:
FUN:计算FASTA文件中每条序列中G和C的含量百分比,输出最大值及其id
INPUT:FASTA格式文件
>seq1
CGCCGAGCGCTTGACCTCCAGCAAGACGCCGTCTGGCACATGCAACGAGCTGTAGCAGAC
>seq2
ATGCCTAGAACGTTCGAGACTTCTCGGGTGCGGTAGAATTAGCCATTCGACCGACTTCCA
GCATCTGCGAGCCGCCTGTTGATTGCATCCGCCGGGGACGCAACAAGGCAAGGCCCTAAC
OUTPUT:最高含量的序列id及其含量(这是上面的结果)
seq1
63.333333%
二、编程思想及代码
当是注释行时(>……),获得序列 ID ,并跳过该次循环;当读到非注释行即序列行时,记录该行“G和C的含量”以及“序列的总含量”,这都可以利用perl上下文实现。(但是在这里有一些疑惑——当把14行@num换成$num会出现计算错误,知道的朋友欢迎留言)
1 use strict; 2 my %GC_content; # id=>GC_content 3 my %sequences; # id=>sequence 4 my ($id, $sum); # id, 每个序列的字符个数 5 my @num; # 中间变量,用于存储单行中某字符的含量 6 while(my $seq = <>){ 7 chomp($seq); 8 if($seq =~ m/^>(.*)/){ 9 $id = $1; 10 next; 11 } 12 @num = ($seq =~ m/(G|C)/g); 13 $GC_content{$id} += @num; 14 @num = ($seq =~ m/(.)/g); 15 $sequences{$id} += @num; 16 } 17 18 foreach(keys(%GC_content)){ 19 $GC_content{$_} /= $sequences{$_}; 20 } 21 my @sort = sort{$GC_content{$b} <=> $GC_content{$a}} keys(%GC_content); 22 printf("%s\n%.6f%\n", $sort[0], $GC_content{$sort[0]}*100);
三、技巧
神奇的perl,神奇的sort!!
对数组(或者哈希)排序获得下标的方式:
# 数字排序: my @arr = qw(2 3 41 2 34 ); my @result1 = sort{$a <=> $b} @arr; # 获得下标: my @result2 = sort{$arr[$a] <=> $arr[$b]} 0..$#arr; # 获得key: my %hash = (one =>1,two =>5,tree=>9 ); my @result3 = sort{$hash{$a} <=> $hash{$b}} keys(%hash); print "数字排序:@result1\n获得下标:@result2\n获得key:@result3\n";
备注:贴一个感觉不错的代码(学习学习)
$/ = '>'; <>; # 读一次">"前的序列,以免下面代码出错 while (<>) {chomp;my ($id, @ary) = split '\n';my $seq = join '', @ary; my $ratio = &GC_content($seq);if ($ratio > $highest) {$highest = $ratio;@result = ($id, $ratio);} } print join "\n", @result;sub GC_content {my ($seq) = @_;my $ratio = $seq =~ s/([CG])/$1/g / length($seq) * 100;return $ratio }
转载于:https://www.cnblogs.com/steamed-bread/p/5641035.html
perl练习——FASTA格式文件中序列GC含量计算perl数组排序如何获得下标或者键相关推荐
- linux系统fasta程序,fasta格式文件处理大全(一)
前面我们介绍了fastq格式文件的处理,大概有20多个案例,掌握了这些案例,后面拿到fastq格式之后就可以根据需求,使用合适的软件工具进行处理了,从这次内容开始,我们将逐渐介绍fasta格式文件的处 ...
- R语言ggplot2可视化、在一张图中画出两条曲线(two lines in same ggplot2 graph)、使用pdf函数将ggplot2可视化图像保存到指定目录的pdf格式文件中
R语言ggplot2可视化.在一张图中画出两条曲线(two lines in same ggplot2 graph).使用pdf函数将ggplot2可视化图像保存到指定目录的pdf格式文件中 目录
- html表格打印成pdf格式文件,使用html2pdf打印PDF格式文件中的数据作为PDF文件
我想从表单文章中获取一些数据并将其输出到PDF2文件中,并在同一页面上使用html2pdf.但是,当试图将表单数据发布到同一页面时,它不会打开PDF文件,这可能是因为PHP文件的其余部分将出现在if( ...
- Python中序列的累积计算
[小白从小学Python.C.Java] [Python-计算机等级考试二级] [Python-数据分析] Python中序列的累积计算 cumsum()函数 选择题 以下python代码输出什么? ...
- fasta文件中序列的排序
同样的名为read_1.fa 的fasta文件,里面有若干序列,如: >@r1 TGAATGCGAACTCCGGGACGCTCAGTAATGTGACGATAGCTGAAAACTGTACGATAA ...
- 用 Python 从 GFF3 格式文件中查找注释信息
作者:SunCOOL ,写python的农学生. 什么是GFF3格式文件 GFF全称为general feature format,3表示是第三个版本,这种格式主要是用来注释基因组,由tab分割,共9 ...
- python将html转换成excel_Python将HTML格式文件中字段提取到EXCEL表的方法
首先不需要关心HTML格式文件具体是什么内容(电子病历还是其他网页啥的),这篇主要内容是介绍如何用Python批量处理HTML格式文件.TXT格式文件,以及Python字典列表导出到EXCEL的一种解 ...
- 利用python计算fasta文件中ATGC的含量
1 #!/usr/bin/python3 2 #-*- coding:utf-8 -*- 3 "计算fatsa文件中的不同类型的碱基含量" 4 f=open('./test.txt ...
- netcdf库读取nc格式文件中的字符串类型的数据
netcdf库读取nc格式文件 一.背景 二.工具使用 三.测试代码 四.测试结果 一.背景 这两天解析数据需要解析nc格式的文件,时间是字符串类型的,最开始还以为这个数据有问题呢,使用panoply ...
- vim中删除dos格式文件中的^M号的方法以及深度规整文件格式
在windows平台上开发时, 我们编辑的文件多半是dos格式, 当我们将它们采用xftp或是secureCRT等ssh软件传输到Linux的vim环境下面时, 通常会出现如下令人惨不忍睹的画面: 为 ...
最新文章
- HTML在表格右边增加一个表格,如何在表格右侧增加一列
- 自习室网上预约系统设计_港澳居民“回乡证”出新规啦!新系统网上预约更方便!...
- Linux入门!Linux无法联网解决办法!CentOS7、VMPlayer、VMWareWorkstation16资源!VMWareWorkstation16序列号!VMware安装Centos7!
- Re: 从零开始的【comic spider】(序幕)
- 负载均衡器 Ribbion
- springcloud 网关_Spring Cloud 系列之 Netflix Zuul 服务网关(二)
- MySQL高级 —— 高性能索引
- Gmail推出视频聊天功能 间接否认欲收购Skype
- 无线性能优化:FPS 测试
- java编程50题和解释_最新JAVA编程题全集(50题及答案)29515
- 高斯c语言百度云免费,高斯数学(1-6年级)精品课程全集百度云下载
- 太拼了!张朝阳的一张作息表刷爆朋友圈
- 太湖之光超级计算机应用最高奖,“神威·太湖之光”两项应用入围“戈登·贝尔”奖...
- NPR——卡通渲染(二)
- background-position进行图片定位
- java 栈队列区别是什么意思_Java实现数据结构栈stack和队列Queue是什么?
- 华为mate20 pro 专业模式拍照
- 技法の穴をふさぐ:コスト編 --人月単価は案件ごとにバラバラ公表データで相場を知る
- Windows7下新建记事本的四种编码方式
- 避免使用std::dynamic_pointer_cast