读取SD文件并提取有关每个片段的信息

时间:2012-05-23 11:00:17

标签: perl

我有一个要读取的SD文件。我无法上传整个文件。所以我在下图中给出了快照。

A SD file (Structural data file) that explains the structure of a molecule. 803 and AMH are two molecules. Also, within same molecule there are several fragments. Each fragment is separated by four dollar sign ($$$$). 这是一个解释分子结构的SD文件(结构数据文件)。 803和AMH是两个分子。而且,在同一分子内有几个片段。每个片段由四个美元符号($$$$)分隔。我是一名新人,因为我是一名生物医学研究生。但是,我写了一个脚本,找到了$$$$的出现,然后在它旁边排列了分子代码(这里是803)。

{
    open (FILE, '<', "try_803.txt");    
    my $ligandcode="803";    
    while (<FILE>) {
        my $nextline = <FILE>;     
        if ( $_=~/\x24\x24\x24\x24/ &&  $nextline=~/$ligandcode/){    
            # do something
        }    
    }    
} 

此代码检查第一次出现的$$$$后跟803.但是,我希望它继续下一次出现$$$$后跟803.我不知道这种模式会发生多少次会发生。从技术上讲,我不能事先指定片段的否。你能帮助我改进这段代码并找到问题的解决方案吗?我将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以将输入记录分隔符设置为四个dolar符号,换行符和803。

local $/ = '$$$$' . "\n803";

然后,你可以循环读取整个分子:

while (<FILE>) {
    my $molecule = $_;
}