6
6
import sys
7
7
import os
8
8
import argparse
9
- import glob
10
9
import shutil
11
10
import re
12
11
from prody .measure .contacts import Contacts
22
21
log = LoggingManager .get_logger ('lgd_filter_restraints' )
23
22
24
23
25
- def get_structures (dir_path ):
26
- return glob .glob (os .path .join (dir_path , 'swarm_*' , '*.pdb' ))
24
+ def get_structures (ranking , base_path = '.' ):
25
+ structures = []
26
+ for rank in ranking :
27
+ swarm_id = rank .id_cluster
28
+ glowworm_id = rank .id_glowworm
29
+ structures .append (os .path .join (base_path ,
30
+ 'swarm_{}' .format (swarm_id ),
31
+ 'lightdock_{}.pdb' .format (glowworm_id )))
32
+ return structures
27
33
28
34
29
35
def get_restraints (restraints_file ):
@@ -44,16 +50,14 @@ def parse_command_line():
44
50
"""Parses command line arguments"""
45
51
parser = argparse .ArgumentParser (prog = 'lgd_filter_restraints' )
46
52
47
- parser .add_argument ("structures_path " , help = "Path of generated structures " , metavar = "structures_path " )
53
+ parser .add_argument ("ranking_file " , help = "Path of ranking to be used " , metavar = "ranking_file " )
48
54
parser .add_argument ("restraints_file" , help = "File including restraints" , metavar = "restraints_file" )
49
55
parser .add_argument ("receptor_chains" , help = "Chains on the receptor partner" , metavar = "receptor_chains" )
50
56
parser .add_argument ("ligand_chains" , help = "Chains on the receptor partner" , metavar = "ligand_chains" )
51
57
parser .add_argument ("--cutoff" , "-cutoff" , "-c" , help = "Interaction cutoff" ,
52
58
dest = "cutoff" , type = float , default = 5.0 )
53
59
parser .add_argument ("--fnat" , "-fnat" , "-f" , help = "Structures with at least this fraction of native contacts" ,
54
60
dest = "fnat" , type = float )
55
- parser .add_argument ("--rank" , "-rank" , "-r" , help = "Ranking file" ,
56
- dest = "ranking_file" )
57
61
58
62
return parser .parse_args ()
59
63
@@ -65,8 +69,12 @@ def parse_command_line():
65
69
66
70
log .info ("Calculating interface at {:3.1f}A" .format (args .cutoff ))
67
71
72
+ # Get ranking
73
+ ranking = read_ranking_file (args .ranking_file )
74
+
68
75
# Get all the PDB structures in a given directory
69
- structures = get_structures (args .structures_path )
76
+ base_path = os .path .abspath (os .path .dirname (args .ranking_file ))
77
+ structures = get_structures (ranking , base_path )
70
78
71
79
restraints_receptor , restraints_ligand = get_restraints (args .restraints_file )
72
80
@@ -123,14 +131,12 @@ def parse_command_line():
123
131
log .error ('Filtering has failed for structure {}. Please see error:' .format (pdb_file ))
124
132
log .error (str (e ))
125
133
126
- if args .ranking_file :
127
- print (filter_passed )
128
- ranking = read_ranking_file (args .ranking_file )
129
- filtered_ranking = os .path .join (filtered_folder , 'rank_filtered.list' )
130
- with open (filtered_ranking , 'w' ) as handle :
131
- for rank in ranking :
132
- print (rank )
133
- if rank .id_cluster in filter_passed and rank .id_glowworm in filter_passed [rank .id_cluster ]:
134
- handle .write ('swarm_{}_{}.pdb {:5.3f} {:5.3f}' .format (rank .id_cluster ,
135
- rank .id_glowworm , rank .scoring , percentages [(rank .id_cluster , rank .id_glowworm )]) + os .linesep )
136
134
135
+ print (filter_passed )
136
+ filtered_ranking = os .path .join (filtered_folder , 'rank_filtered.list' )
137
+ with open (filtered_ranking , 'w' ) as handle :
138
+ for rank in ranking :
139
+ print (rank )
140
+ if rank .id_cluster in filter_passed and rank .id_glowworm in filter_passed [rank .id_cluster ]:
141
+ handle .write ('swarm_{}_{}.pdb {:5.3f} {:5.3f}' .format (rank .id_cluster ,
142
+ rank .id_glowworm , rank .scoring , percentages [(rank .id_cluster , rank .id_glowworm )]) + os .linesep )
0 commit comments