&ltInput txt&gt\n" unless(@ARGV == 1)open IN,$ARGV[0]open OUT,"&am"og:type" content="webpage"> &ltInput txt&gt\n" unless(@ARGV == 1)open IN,$ARGV[0]open OUT,"&am" /> &ltInput txt&gt\n" unless(@ARGV == 1)open IN,$ARGV[0]open OUT,"&am"> 简单问题请教:perl读取序列,给每个序列加上序列名称(即编号)然后写入新文件。_IT百科_内存溢出

阅读 8

简单问题请教:perl读取序列,给每个序列加上序列名称(即编号)然后写入新文件。,第1张

#!/usr/bin/perl -w

die "perl $0 <Input txt>\n" unless(@ARGV == 1)

open IN,$ARGV[0]

open OUT,">Output.fa"

my $count = 1

while(<IN>){

if($_) { #这个判断存在问题

print ">Leaf_$count\n"

print OUT ">Leaf_$count\n"

$count++

}

}

close IN

close OUT

将if($_) 这个去掉再试试吧。

或者将这一句修改为 if($_=~/[ATCG]/gi)也可以因为看你说的输出结果,文件句柄

应该是打开了的,否则执行不到wile循环里面来,所以只可能是那一个判断的问题了。

我假设你的“数字”都是按行存放的

我还假设你的“数字”和重叠不会发生结尾不足等问题

以上假设都是非常小的问题,可轻松解决,在此只为解释方法省去不必要的麻烦

程序接口等自己完成

打开文件有两种方法,一种在一开始全部打开,一种边输出边打开

本人能力有限,就简单化为第一种

前提,已知“数字”个数,即<输入文件>行数

可用shell, wc -l得到行数

my $line_number = 300

my $contig = 100

my $overlap = 20

my $nolap = $contig - $overlap

my $start = 0

my %hash

while (1)

{

my $name = "句柄名字"

$hash{$start} = $name

my $over = $start + $contig

open $name ">", $start ..$over " ...

$name = "新的句柄名字" # 自己想办法循环有效地转换句柄名称,可用正则等

$start = $start + $nolap # 开始位置改变

last, if ($over == $line_number)# 超过了就跳出

}

my $i # 计数器

my @print# 句柄数组

$start = 0

while ( <输入文件>)

{

my $line = $_

if ($i == $start)

{

push @print, $hash{$start}

$start = $nolap + $nolap

&printout(\@print, $line)

}

}

sub printout

{

my @print = @{$_[0]}

foreach (@print)

{

print {$_} $_[1]

}

}

以上,都是我自己现写的,没有测试的半伪代码,很有可能有致命错误,仅供参考

看到FASTA我就开心了,果然是搞生物的同行,互相学习了。

P.s 这样的程序你们的前辈应该有,管他们要吧,那些程序优化过,更成熟,如果得到了给我发一份学习下~谢

while (<DATA>)

{

chomp

if (/(\d+) (\w+)$/ && allsame($1) && allsame($2))

{

my $c = substr($2, 0, 1)

$c = $c eq 'a'?'A':'U'

print "$_ $c\n"

}

}

sub allsame

{

my $c  = substr($_[0], 0, 1)

return  1 if ($_[0] =~/^$c+$/ ) 

return 0


}

欢迎分享,转载请注明来源:

内存溢出

原文地址:

http://outofmemory.cn/bake/11832561.html
打开
(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
android 如何将一个view添加到layout中
上一篇
2023-05-19
如何在word2003的工具栏中添加字体字号按钮
2023-05-19

发表评论
请登录后评论... 登录
提交

    评论列表(0条)
保存
{label} {label} &ltInput txt&gtn" unless(@ARGV == 1)open IN,$ARGV[0]open OUT,"&am', author : '等额本息还款法', cat_name : 'IT百科', time_y_m : '2023年05月', time_d : '19', site_motto : '内存溢出' }; {script} {script}