perl实战-合并两个列相同的文件

perl实战-合并两个列相同的文件,第1张

目的:两文件第一列ID相同。不同的是第二列。

现把两灶判拿文件合并为一个

a.txt

b.txt

思路·把一个文件的内容存为hash。另一个文件的id去遍历,打印这个hash

--------------分割线-------------------------------------------------------

目的:求fastq文件的cg含量

fastq文件

脚本

目的:

输入文件 为test.fa如下,以第一条冲旦序列为例>ENSRNOT00000000957 gene=F1M7K0_RATCDS=1-1104 依次为基因ID、名称、编码区位置以下为碱基序列

1、将序列读入哈希变量%gene_fasta(建议 key为“基因ID” value为“碱基序列”)

2、输出隐搭第一条(ENSRNOT00000000957)序列的反向互补序列

3、输出表格依次为基因ID、名称、编码区起始位、编码区终止位,部分表格如下

4、查找其中最长的序列,输出ID编号,与碱基信息

5、统计长度在200~500之间的序列,并按长度排序输出 ID 和长度部分表格如下

例子:

································································································

目的:打印文件的前面5行

··········································································

将以下字母c a e w i m j q z s n 存入数组,排序后输出。

把fasta格式序列以tab键分割形式,也就是一列为ID,一列为序列输出

my %elm

my @files = <*.txt>

for my $f(@files){merge($f)}

save("final.log")

sub merge{

my $f = shift

my 念告$H

open $H, $f

<$H>

while (<$H>) {

chomp

my @e = split(/[ \t]/, $_)

my $k = join(',', @e[0..2])

$elm{$k} = 携高茄[] if (!exists $elm{$k})

push @{$elm{$k}}, $e[3]

}

}

sub save {

my $out = shift

my $H

open $H, '+>', 辩察$out

print $H "CHROM\tpos\tref\tfreq\n"

for my $k(keys %elm) {

print $H join("\t", split(',', $k), @{$elm{$k}}) . "\n"

}

close $H

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/tougao/12221289.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存