2012-01-29 2 views
-4

Чтобы извлечь строки Atom из PDB файла Я написал код, приведенную ниже, не показывая никакого OutputFile, когда я запустить программуИзвлечение координат из PDB файла

print" Enter the file name"; 

$a=<>; 

@arr=split(" ",$a); 

if($i=0; $i< scalar @arr; $i++) 

foreach $values(@arr) 
{ 

    if($values=~/^ATOM/) 
    { 
     print FH1 $a; 

     open(FH1,">>output.pdb") 
    } 
} 
+0

Вы не открываете файл для чтения в любом месте этого кода. – Mat

+0

@Mat, вам не нужно явно открывать рукописную рукопись ARGV. Реальная проблема заключается в том, что его код даже не компилируется. Это первое 'if' похоже, что оно предназначалось для' for'. Он также не имеет брекетов, которые не являются обязательными для Perl. – cjm

+0

@cjm: Я не думаю, что 'foreach $ values ​​(@arr)' делает любую магию, я не вижу, как дескриптор файла ARGV можно использовать в любом месте этого кода. Я что-то упускаю? (За исключением '$ a = <>;' конечно.) – Mat

ответ

2

Вы не можете использовать раскол с PDB текстовых файлов, так как поля определяются положением, а не разделителями. См. Coordinate File Description (PDB Format).

Вместо этого, вы должны использовать substr ($line,$start,$len) с различными значениями $start и $len для каждого поля (взято из Coordinate File Description), или полагаться на один из имеющихся парсеров PDB, такой как Bioperl's.