最近看了一下进入PLoB的网页来路分析,看到有同学搜索计算fasta序列长度。其实自己在之前的数据分析中也遇到过相关的问题,这里给大家分享两种我常用的方法。

方法一:linux下用awk计算fasta序列的长度

前面发表一篇文章《用awk和sed快速将fasta格式的序列改成一行显示》,其实我的这种方法就是在这基础上进行的。加入已经有一个fasta文件为contig.fa,文件中的序列如下:>1 cvg_0.0_tip_0

ATTTTGGCTTTGGAAGGGC

>3 cvg_0.0_tip_0

GAATAGTGATACAAATTATATAGTTTCAAGTATGTGACTTGAACATGAGATTAT

>5 cvg_0.0_tip_0

TAATCTAGGCTTGAAACTATATAATTTGTATCACTATTCTAAGGATTTTTTT

>7 cvg_0.0_tip_0

TATTCATCTTTGCACTACGTTCATCTCAA

>9 cvg_0.0_tip_0

TCCGTTGTGGGGTCCACCAATGATTAAAACGAATATTCCC

>11 cvg_0.0_tip_0

GGAATATTCGTTTTAACAGGGAATATTCGTAGATGGCACAA

>13 cvg_0.0_tip_0

AGAAATAAATAAATTAAATAAAGTGATGTTTCTAATTTATTAAGGAAATTAA

>15 cvg_0.0_tip_0

GAAAGGACCAGACATCAATTATTATTGAAATAAATGTCAATTTT

>17 cvg_0.0_tip_0

GTTAATTACCCGATTGGTCAATATAACCTCCAGACATCAATTATTATTG

>19 cvg_0.0_tip_0

GATTATTTTTTATAACCTCCAGACA

首先通过上面的命令将fasta序列转换成一行显示,命令如下:awk '/^>/&&NR>1{print "";}{ printf "%s",/^>/ ? $0" ":$0 }' contig.fa

得到如下结果:

如果想直接显示每条序列的长度,可以运行如下命令:awk '/^>/&&NR>1{print "";}{ printf "%s",/^>/ ? $0" ":$0 }' contig.fa |awk '{print $1"\t"length($3)}'

得到结果如下:>1 19

>3 54

>5 52

>7 29

>9 40

>11 41

>13 52

>15 44

>17 49

>19 25

方法二:利用bioperl计算fasta序列长度

上面的方法是基于linux计算的,直接输出结果。但是有是有计算fasta序列的长度只是程序某一个小的操作步骤,那我们可以采用下面的方法.

首先,确定bioperl正确安装了。

然后再perl中利用如下的代码:use Bio::SeqIO;

my $file;

my $seq;

my %hash

my $in=Bio::SeqIO->new(-file=>"$file",-format=>"fasta");

while ($seq=$in->next_seq())

{

$hash{$seq->id}=length($seq->seq()); # length($seq->seq()) 计算的是序列长度,序列的长度被存入hash表中

print $seq->id."\t".$seq->seq()."\n";# 直接输入,输出的结果与上面awk的方法是一致的

}

这样每一条序列的长度就被存入以其序列名字为key的hash表中

linux系统fasta程序,快速计算fasta序列长度的方法相关推荐

  1. linux文件向磁带备份,如何在Linux系统上进行快速磁带备份

    如何在Linux系统上进行快速磁带备份 发布时间:2006-09-08 00:28:08来源:红联作者:Myiozzdoc 使用mt-st 工具,在Linux系统上进行快速文件备份. 在CD.DVD以 ...

  2. 如何查看Linux系统下程序运行时使用的库?

    Linux系统下程序运行会实时的用到相关动态库,某些场景下,比如需要裁剪不必要的动态库时,就需要查看哪些动态库被用到了. 以运行VLC为例. VLC开始运行后,首先查看vlc的PID,比如这次查到的V ...

  3. Linux系统和程序中的DEP和ASLR保护机制

    2014年,OpenSSL加密库中的一个缓冲区溢出漏洞被公开.该缺陷被称为"心脏出血".它使受欢迎的在线服务和软件平台的数亿用户暴露于易受攻击的OpenSSL软件版本中.于是操作系 ...

  4. mysql隐藏密码_MySQL在Linux系统中隐藏命令行中的密码的方法

    在命令行中输入命令并不是一个好主意,会造成安全问题.但是如果你决定去写一个应用,而这个应用需要在命令行中使用密码或者其他敏感信息.那么,你能通过以下方法禁止系统的其他用户轻易的看到这些敏感数据 呢?, ...

  5. linux进程看门狗使用方式,Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法...

    Linux系统中基于看门狗的精细化进程监控方法及系统的制作方法 [技术领域] [0001] 本发明涉及Linux系统的进程监控技术领域,特别是涉及一种Linux系统中基于看 门狗的精细化进程监控方法及 ...

  6. linux判断usb进程命令,一种在Linux系统下审计USB设备历史使用情况的方法与流程...

    本发明涉及计算机审计技术领域,具体涉及一种在Linux系统下审计USB设备历史使用情况的方法. 背景技术: 如今,在linux系统中,对于USB设备的插入拔出事件,系统自身是不带有审计功能的,这使得普 ...

  7. linux删除panel命令,Linux系统删除gnome panel上的图标的解决方法(图)

    原标题:"Linux系统删除gnome panel上的图标的解决方法"相关电脑问题教程分享. - 来源:191路由网. 众所周知,Linux系统的gnome panel的功能实际上 ...

  8. linux 查看u盘文件,详细介绍Linux系统下检测U盘是不是已经连接的方法

    Linux操作系统是基于Unix操作系统发展而来的一种克隆系统,它诞生于1991年的10月5日(这是第一次正式向外公布的时间).今天就跟着小编一起来看一看:详细介绍linux系统下检测U盘是不是已经连 ...

  9. 网络基础知识 快速计算子网掩码的2种方法

    网络基础知识 快速计算子网掩码的2种方法<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...

最新文章

  1. 测试类异常Manual close is not allowed over a Spring managed SqlSession
  2. Matlab实用程序--图形应用-填充图
  3. SpringCloud-Eureka-ProviderConsumer
  4. Docker教程-安装
  5. golang 数组 最后一个_Golang 速览
  6. [react] 为什么说React中的props是只读的?
  7. 迷宫java代码_java写的迷宫代码
  8. mysql分片库分页查询_准备开发一个数据库分片的中间件,请问下分页查询用什么样的算法效率较高?...
  9. 新手坐高铁怎么找车厢_一个新手怎么做直播卖衣服?找对货源供应商成功一半...
  10. golang 的time包之time
  11. Android Framework 全面分析 FallbackHome
  12. Operations Manager 2007 R2系列之单台服务器拓扑图监控
  13. Android黑名单自动挂断电话
  14. 【算法笔记】Diadem Metric
  15. 详细“企业库”编写流程
  16. 100%概率与任意好友获取QQ幸运字符的方法
  17. mysql5.7优化
  18. Codeforces Round #469 (Div. 2) C. Zebras
  19. xp系统蓝屏代码7b_蓝屏代码7b怎么修复
  20. bugku convert [MISC]

热门文章

  1. python标准数据类型叮叮叮
  2. 微软官方工具_微软官方小工具,每天让你眼前一新
  3. java怎么连发子弹_HTML-坦克大战-完成子弹连发功能(三)
  4. 我的世界中国版服务器账号封了,Hypixel中国版服务器停止运营公告
  5. UE4之添加开场动画
  6. WebService的简单案例记录(Java)
  7. 装逼神器,逼真黑客范儿
  8. jAVA EE NZ2001 java EE学习总结 第七周(包含思维导图) 主要内容I/O框架、网络编程、反射
  9. 剑指 Offer II 017. 含有所有字符的最短字符串
  10. 删除非空目录linux_如何在Linux中删除空的非空目录