首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从输入文件中提取匹配的模式并打印到Perl中的输出文件

从输入文件中提取匹配的模式并打印到Perl中的输出文件
EN

Stack Overflow用户
提问于 2019-11-05 21:27:14
回答 1查看 33关注 0票数 1

我有一个来自ncbi blastn的巨大输入文件,格式如下:

代码语言:javascript
复制
<ul id="msgFrm" class=" msg">
Job Title: otu0                  
Database: rRNA_typestrains/prokaryotic_16S_ribosomal_RNA 16S ribosomal RNA (Bacteria and Archaea)
Query #1: otu0 Query ID: lcl|Query_16950 Length: 460

Sequences producing significant alignments:
                                                                  Max    Total Query   E   Per.                  
Description                                                       Score  Score cover Value Ident  Accession        
Bacteroides dorei strain 175 16S ribosomal RNA, partial sequence  839    839   100%  0.0   99.57  NR_041351.1      

Alignments:
>Bacteroides dorei strain 175 16S ribosomal RNA, partial sequence
Sequence ID: NR_041351.1 Length: 1493 
Range 1: 341 to 800

Score:839 bits(454), Expect:0.0, 
Identities:458/460(99%),  Gaps:0/460(0%), Strand: Plus/Plus

Query  1    CCTACGGGGGGCAGCAGTGAGGAATATTGGTCAATGGGCGATGGCCTGAACCAGCCAAGT  60
            |||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct  341  CCTACGGGAGGCAGCAGTGAGGAATATTGGTCAATGGGCGATGGCCTGAACCAGCCAAGT  400


Query #2: otu1 Query ID: lcl|Query_16951 Length: 460

Sequences producing significant alignments:
                                                                  Max    Total Query   E   Per.                  
Description                                                       Score  Score cover Value Ident  Accession          
Bacteroides vulgatus ATCC 8482 16S ribosomal RNA, partial...      811    811   100%  0.0   98.48  NR_074515.1      
Bacteroides paurosaccharolyticus strain WK042 16S ribosomal RN... 673    673   100%  0.0   93.06  NR_112668.1      


Alignments:
>Bacteroides dorei strain 175 16S ribosomal RNA, partial sequence
Sequence ID: NR_041351.1 Length: 1493 
Range 1: 341 to 800

Score:833 bits(451), Expect:0.0, 
Identities:457/460(99%),  Gaps:0/460(0%), Strand: Plus/Plus

Query  1    CCTACGGGGGGCAGCAGTGAGGAATATTGGTCAATGGGCGATGGCCTGAACCAGCCAAGT  60
            |||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct  341  CCTACGGGAGGCAGCAGTGAGGAATATTGGTCAATGGGCGATGGCCTGAACCAGCCAAGT  400


Query #3: otu2 Query ID: lcl|Query_16952 Length: 460

Sequences producing significant alignments:
                                                                  Max    Total Query   E   Per.                  
Description                                                       Score  Score cover Value Ident  Accession             
Bacteroides sartorii JCM 16497 16S ribosomal RNA, partial...      684    684   100%  0.0   93.48  NR_113064.1      
Bacteroides paurosaccharolyticus strain WK042 16S ribosomal RN... 678    678   100%  0.0   93.28  NR_112668.1      


Alignments:
>Bacteroides dorei strain 175 16S ribosomal RNA, partial sequence
Sequence ID: NR_041351.1 Length: 1493 
Range 1: 341 to 800

Score:839 bits(454), Expect:0.0, 
Identities:458/460(99%),  Gaps:0/460(0%), Strand: Plus/Plus

Query  1    CCTACGGGTGGCAGCAGTGAGGAATATTGGTCAATGGGCGATGGCCTGAACCAGCCAAGT  60
            |||||||| |||||||||||||||||||||||||||||||||||||||||||||||||||
Sbjct  341  CCTACGGGAGGCAGCAGTGAGGAATATTGGTCAATGGGCGATGGCCTGAACCAGCCAAGT  400

...and so one

现在,对于文件中的每个"Query #“,我需要提取包含在"Query #”和"Alignments“之间的段落信息,并在另一个输出文件中打印。

我尝试使用以下基本代码,但在Perl编程中遇到了一些困难。有人能帮我解决这个问题吗?非常感谢

代码语言:javascript
复制
#!/usr/bin/perl -w

use warnings;

open(GENBANK, "Bact_ncbi_output.txt") or die;

my $outfile = 'output.txt';
open OUT,'>',$outfile 
  or die "Could not open $outfile : $!";

$content = join("", <GENBANK>);   
close GENBANK;

$content =~ /Query\s+([A-Z0-9_.]+)Alignments$/;         

print OUT "$content\n";
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-05 22:08:29

请尝试以下操作:

代码语言:javascript
复制
#!/usr/bin/perl -w

use warnings;

open(GENBANK, "txt.txt") or die "";
local $/; $_= <GENBANK>; my $content = $_;

my $outfile = 'output.txt';
open(OUT,">",$outfile) or die "Could not open $outfile : $!";
my (@fetch) = $content=~m{(Query\s*\#((?:(?!Alignments\:\n).)*)\nAlignments\:\n)}gs;
#print OUT @fetch;
print OUT join "\n", @fetch;

请在您需要的地方更换。

谢谢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58712339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档