-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathreplaceTBL.pl
executable file
·88 lines (73 loc) · 2.54 KB
/
replaceTBL.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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#!/usr/bin/env perl
#===============================================================================
# Li Xue
# Sep. 16, 2015
#
# DESCRIPTION: replace the tbl data in the haddock parameter file with a new tbl file
#
# Unambiguous restraints in the parameter file:
# unambigtbldata = "assign (name ca and segid A and resi 64) (name ca and segid B and resi 177) 8.319 1.006 1.171\nassi...... 1.168\n",
#
# Ambiguous restraints in the parameter file:
# tbldata = "assign ( ...",
#
#===============================================================================
use strict;
use warnings;
use utf8;
use File::Copy;
my $haddockparamFL = shift @ARGV;
my $tblFL = shift @ARGV;
my $restraint_type = shift @ARGV;
if ( !defined $restraint_type ) {
die("\nUSAGE: replaceTBL.pl original_haddock_paramFL new.tbl restraint_type (ambig or unambig)\n\n");
}
if ($restraint_type !~/^ambig$/ && $restraint_type !~/^unambig$/){
print ("\nrestraint type has to be: ambig or unambig\n\n");
die("USAGE: replaceTBL.pl original_haddock_paramFL new.tbl restraint_type (ambig or unambig)\n\n");
}
#-- read the new tbl file
open( INPUT, "<$tblFL" ) or die("Cannot open $tblFL:$!");
my @a = <INPUT>;
map {s/[\n\r]//g} @a;
close INPUT;
if ( !@a ) {
die("Nothing read from $tblFL:$!");
}
my $newTbl = join( '\n', @a );
# -- add the new tbl content to haddock param file
my $flag = 0;
copy( $haddockparamFL, "$haddockparamFL.ori" )
or die("Cannot copy $haddockparamFL to $haddockparamFL.ori:$!");
my $haddockparamFL_tmp = "$haddockparamFL.tmp";
unlink $haddockparamFL_tmp if ( -e $haddockparamFL_tmp );
open( OUTPUT, ">>$haddockparamFL_tmp" )
or die("Cannot open $haddockparamFL_tmp:$!");
open( INPUT, "<$haddockparamFL" ) or die("Cannot open $haddockparamFL:$!");
while (<INPUT>) {
s/[\n\r]//mg;
if ($restraint_type eq 'unambig' && $_=~/^(\s*\"unambigtblfile\s*\":\s*)['"]{1}/) {
# "unambigtblfile": "assign (segid A and resi 23 and ....)",
$_ = "$1\"$newTbl\",";
$flag = 1;
}
if ($restraint_type eq 'ambig' && $_ =~/^(\s*\"tblfile\"\s*:\s*)['"]{1}/) {
# tbldata = '! generated by ...',
#
$_ = "$1\"$newTbl\",";
$flag = 1;
}
print OUTPUT "$_\n";
}
close INPUT;
close OUTPUT;
if ( $flag == 0 ) {
print "\nWARNING: nothing changed!!!\n";
unlink $haddockparamFL_tmp;
unlink "$haddockparamFL.ori";
}
else {
move( $haddockparamFL_tmp, $haddockparamFL )
or die("Cannot rename $haddockparamFL_tmp as $haddockparamFL:$!");
print "unambig tbl data updated in $haddockparamFL.\n";
}