-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathextractPDBfl_fromHaddockparam.pl
executable file
·56 lines (43 loc) · 1.37 KB
/
extractPDBfl_fromHaddockparam.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/perl -w
#===============================================================================
#
# Li Xue (), [email protected]
# 07/14/2016 09:54:00 PM
#
# DESCRIPTION: Extract pdb files from a haddock parameter file
#
# USAGE: ./extractPDBfl_fromHaddockparam.pl haddock_parameter_file
#
#===============================================================================
use strict;
use warnings;
use utf8;
my $haddockparamFL=shift @ARGV;
if ( !defined $haddockparamFL ){
print "\n\nUsage: extractPDBfl_fromHaddockparam.pl haddockparameter_file\n\n";
exit;
}
#-- start
my $randnum = rand(100);
my $tmpFL = "/tmp/$haddockparamFL.$randnum.tmp";
system("egrep 'raw_pdb' $haddockparamFL > $tmpFL") == 0 or die ("Failed:$!");
open(INPUT, "<$haddockparamFL")or die ("Cannot open $haddockparamFL:$!");
my $num =0;
while(<INPUT>){
s/[\n\r]//mg;
if (/\"raw_pdb\"\s*:\s*[\'\"]{1}(.+)[\'\"]{1}\s*,/){
#"raw_pdb": "ATOM 1 N ... \nATOM 2..."
$num ++;
my @content = split(/\\n/,$1);
#-- write to file
my $pdbFL = "pdbFL$num.pdb";
unlink $pdbFL if (-e $pdbFL);
open(OUTPUT, ">>$pdbFL") or die ("Cannot open $pdbFL:$!");
my $content_tmp = join("\n", @content);
$content_tmp =~s/\\//g; # H4\' => H4'
print OUTPUT $content_tmp ;
close OUTPUT;
print "$pdbFL generated\n";
}
}
close INPUT;