24小时热门版块排行榜    

查看: 863  |  回复: 4
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

shuifeng1988

金虫 (小有名气)

木虫

[求助] ubuntu10.10 中脚本求助

我在桌面上有一个in文件夹和一个out文件夹,in文件夹中有十个不同的文件,如a.fas, b.fas, c.fas ......., 每个文件内容如下所示(每个文件有多条序列,每条序列名都在>号后面,序列名要保留和原来一样)!我想将每条序列的最后面20个碱基除去,然后用相同的文件名字保存在out文件夹中,我应该如何写脚本!


>Myotis ricketti
ATGGATCATGCTGAAGAAACTGAAATCCTTGCAGCGGCCCAGAAGTACTATGTGGACAGG
CCTATCTTCAGTCACCTGGCCCTCCAGGAAATACTGCACACGAAGGACAAGATTCCGGAT
TCCATTGGGGATAAGCTAAAACAGGCATTCACATGTACTCCGAAGAAAATAAGAAATATC
ATTTATATGTTCTTACCCATAACTAAGTGGTTGCCAGCATACAAATTCAAGGAGTATGTG
TTGGGTGACTTGGTCTCAGGCATTAGCACAGGGGTGCTTCAGCTTCCTCAAGGCTTAGCC
TTCGCAATGTTGGCAGCTGTGCCTCCGGTGTTCGGCCTGTACTCTTCGTTTTACCCTGTT
ATCATGTATTGTTTTTTTGGAACCTCCAGACACATATCCATAGGTCCGTTTGCTGTAATT
AGCCTGATG
>Rhinopoma hardwickii
ATGGATCATGCTGAAGAAAATGAAATCCTTGCAGCAACCCAGAGGTACTATGTGGAAAGG
CCTATCTTTAGTCATCCCATCCTCCAGGAAAGACTGCACCAGAAGGACAAGATTTCGGAT
TCCATTGGGGATAAGCTGAAACAGGCATTCACATGTACTCCTAAGAAAATAAGAAATATC
ATTTATATGTTCTTACCCATAACTGAGTGGCTGCCAGCATACAAATTCAAGGAGTATGTG
TTGGGTGACTTGGTCTCAGGCATAAGCACAGGGGTGCTTCAGCTTCCTCAAGGTTTAGCC
TTTGCAATGTTGGCAGCTGTGCCTCCGGTGTTTGGCCTGTACTCTTCGTTTTACCCTGTT
ATCATGTATTGCTTTTTTGGAACCTCCAAACACATATCCATAGGTCCATTTGCTGTTATT
AGCCTGATG
>Murina leucogaster
ATGGATCATGCTGAAGAAACTGAAATCCTTGCAGCGGCCCAGAAGTACTATGTGGACAGG
CCTATCTTTAGTCACCTGGCCCTCCAGGAAATACTGCACACGAAGGACAAGATTCCGGAT
TCCATTGGGGATAAGCTAAAACAGGCGTTCACATGTACTCCTAAGAAAATAAGAAATATC
ATTTATATGTTCTTACCCATAACTGAGTGGTTGCCAGCATACAAATTCAAGGAGTATGTG
TTGGGTGACTTGGTCTCAGGCATTAGCACAGGGGTGCTTCAGCTTCCTCAAGGCTTAGCC
TTCGCAATGCTGGCAGCTGTGCCTCCGGTGTTCGGCCTGTACTCCTCGTTTTACCCTGTT
ATCATGTATTGTTTTTTTGGAACCTCCAAACACATATCCATAGGTCCGTTTGCTGTAATT
AGCCTGATG
>Megaderma lyra
ATGGATCATGCTGAAGAAACTGAAATCCTTGCAGCAACCCAGAAGTACTATGTGGAAAGG
CCTATCTTTAGTCATTCAGTCCTCCAGGAAAGACTGCACAAGAAGGACAAGATTTCAGAG
TCCATTGGGGATAAGCTGAAACAGGCATTCACATGTACTCCTAAGAAAATAAGAAATATC
ATTTATATGTTCCTACCCATAACTAAGTGGTTGCCAGCATACAATTTCAAGGAATATGTG
TTGGGTGACTTGGTCTCAGGCATAAGCACAGGAGTGCTTCAGCTTCCTCAAGGTTTAGCC
TTTGCAATGTTGGCAGCTGTGCCACCAGTGTTTGGCCTGTACTCTTCGTTTTACCCTGTT
ATCATGTATTGCTTTTTTGGAACCTCCAGACATATATCCATAGGTCCATTTGCTGTTATT
AGCCTGATG
回复此楼
平生两愿:抱着美人,浪迹天涯!
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

594wolfo

至尊木虫 (正式写手)

★ ★
微尘、梦想(金币+2): 谢谢参与应助! 2011-04-26 17:39:30
上个回复中有些字符 被解析成 表情了 麻烦斑竹删除 谢谢
试试这个
用perl吧
>Myotis ricketti 后面跟着的 跟它是一行么?
如果是一行 20个碱基=n个字符?
CODE:
#!/user/bin/perl
use warnings;
use strict;
use Cwd;
my $dir= getcwd; #current directory
open IN, "<$dir\/in\/a.fas";
open OUT, ">>$dir\/out\/a.fas";
  for my $line () {
  chomp($line);
  $line=~ s/[A-Z]{n}$//; ##n是行尾的目标字符数
  print OUT "$line\n";
}
close IN;
close OUT;

copy下来 另存为 test.pl 放在跟in out文件夹一个路径上
多个文件的话 glob *.fas下 加个 循环 就行了

本地没安装perl 没法测试了 找本书看看 一天时间就Ok了
3楼2011-04-26 02:40:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 5 个回答

594wolfo

至尊木虫 (正式写手)

用perl吧
>Myotis ricketti 后面跟着的 跟它是一行么?
如果是一行 20个碱基=n个字符?
#!/user/bin/perl
use warnings;
use strict;
use Cwd;
my $dir= getcwd; #current directory
open IN, "<$dir\/in\/a.fas";
open OUT, ">>$dir\/out\/a.fas";
for my $line ( {
  chomp($line);
  $line=~ s/[A-Z]{n}$//;  ##n是行尾的目标字符数
  print OUT "$line\n";
}
copy下来 另存为 test.pl 放在跟in out文件夹一个路径上
多个文件的话 glob *.fas下 加个 循环 就行了

本地没安装perl 没法测试了 找本书看看 一天时间就Ok了
2楼2011-04-26 02:35:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

【答案】应助回帖

★ ★
微尘、梦想(金币+2): 谢谢参与应助! 2011-04-26 17:39:51
俺给你来一个,经过测试的,假定abs文件的每个记录只有两行,多行的没测试过,不过应该也没得问题,因为.不匹配换行。
假定工作目录是in:
CODE:
#!/usr/bin/perl
use strict;
my @files = glob("*.abs");
foreach my $file (@files){
    open IN, "<", $file;
    open OUT, ">", "../out/$file";
    while(){
        if(/^>/){
            print OUT $_;
            next;
        }
        my($data) = /(.*)[ATCG]{20}$/;
        print OUT $data;
    }
    close IN;
    close OUT;
}

漩涡的中心有一块空地,空空的。
4楼2011-04-26 10:28:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

huycwork

金虫 (著名写手)

【答案】应助回帖

shuifeng1988(金币+10): 谢谢啊,基 本上好了,但还有个问题,就是序列要求在一行上,而我的序列是多行的,用你的方法,我得先将我的每条序列排在一行上 2011-04-27 01:16:36
上面的程序少了一个换行,补上,print OUT "$data\n";
漩涡的中心有一块空地,空空的。
5楼2011-04-26 10:31:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见