9 from sys
import argv,stderr
10 from os
import popen,system
11 from os.path
import exists,basename
12 from amino_acids
import longer_names
13 from amino_acids
import modres
16 local_pdb_database =
"/lab/shared/scaffolds/"
20 shit_stat_insres =
False
21 shit_stat_altpos =
False
22 shit_stat_modres =
False
23 shit_stat_misdns =
False
44 for line
in residue_buffer:
45 atomname = line[12:16]
47 occupancy=
float(line[55:60])
51 if atomname ==
" CA " and occupancy > 0.0: hasCA =
True
52 if atomname ==
" N " and occupancy > 0.0: hasN =
True
53 if atomname ==
" C " and occupancy > 0.0: hasC =
True
54 if (line[0:6] ==
'HETATM' and keep_ligand):
58 if hasN
or hasC : CA_MODEL =
False
59 if ((hasCA
and hasN
and hasC)
or (IsGoodLigand)) :
60 for line
in residue_buffer:
62 newnum =
'%4d ' % count
63 line_edit = line[0:22] + newnum + line[27:]
65 pdbfile = pdbfile + line_edit
68 fastaseq = fastaseq + residue_letter
82 if (pdbname[-4:] !=
'.pdb' and pdbname[-8:] !=
'.pdb1.gz'):
88 if argv.count(
'-nopdbout'):
92 if argv.count(
'-nochain'):
96 if argv.count(
'-ignorechain'):
99 netpdbname = local_pdb_database + pdbname[1:3] +
'/' + pdbname[0:4] +
'/' + argv[1] +
'_0.pdb'
101 if not exists(netpdbname):
105 if netpdbname[-3:]==
'.gz':
106 lines = popen(
'zcat '+netpdbname,
'r').readlines()
108 lines =
open(netpdbname,
'r').readlines()
118 residue_invalid =
False
123 for i
in range(
len(lines)):
126 if len(line)>5
and line[:6]==
'ENDMDL':
break
128 if (chainid == line[21]
or ignorechain):
130 if line[0:3] ==
'TER':
132 elif (line[0:6] ==
'HETATM'):
137 if modres.has_key( line[17:20] ):
139 line_edit =
'ATOM '+line[6:17]+modres[line[17:20]] +line[20:]
140 modifiedres = modifiedres + line[17:20] +
', '
142 if line[17:20] !=
"MSE":
143 shit_stat_modres =
True
147 elif (line[17:20]==
'MSE'):
148 if (line_edit[12:14] ==
'SE'):
149 line_edit = line_edit[0:12]+
' S'+line_edit[14:]
150 if len(line_edit)>75:
151 if (line_edit[76:78] ==
'SE'):
152 line_edit = line_edit[0:76]+
' S'+line_edit[78:]
156 if line[17:20] !=
"MSE":
157 shit_stat_modres =
True
158 hetatm_list.append(line[17:20])
164 if (line_edit[0:4] ==
'ATOM')
or (line_edit[0:6] ==
'HETATM' ):
174 resnum = line_edit[22:27]
177 if insres !=
' ': shit_stat_insres =
True
180 if altpos !=
' ': shit_stat_altpos =
True
182 if not resnum == oldresnum:
183 if residue_buffer != []:
184 if not residue_invalid:
188 shit_stat_misdns =
True
194 residue_invalid =
False
196 longname = line_edit[17:20]
197 if longer_names.has_key(longname):
198 residue_letter = longer_names[longname];
206 if line_edit[16:17] ==
'A':
207 line_edit = line_edit[:16]+
' '+line_edit[17:]
209 if line_edit[16:17] !=
' ':
213 line_edit = line_edit[0:21]+
' '+line_edit[22:]
216 residue_buffer.append( line_edit )
224 shit_stat_misdns =
True
230 if shit_stat_altpos : flag_altpos =
"ALT"
232 if shit_stat_insres : flag_insres =
"INS"
234 if shit_stat_modres : flag_modres =
"MOD"
236 if shit_stat_misdns : flag_misdns =
"DNS"
239 flag_successful =
"OK"
241 flag_successful =
"BAD"
242 if CA_MODEL: flag_successful = flag_successful +
" (CA only model )"
243 if NO_OCCUPANCY: flag_successful = flag_successful +
" (No occupancy )"
245 print netpdbname, pdbname, chainid,
"%5d"%nres, flag_altpos, flag_insres, flag_modres, flag_misdns, flag_successful
250 if chainid ==
' ': chainid =
'_'
251 print "chainid is", chainid
252 if chainid ==
"-ignorechain": chainid =
'_00'
255 outfile = pdbcode + chainid +
".pdb"
256 outfile = outfile.replace(
'.pdb1.gz',
'.pdb')
263 fastaid.write(
'>'+pdbname[0:4]+chainid+
'\n');
264 fastaid.write( fastaseq )
Fstring::size_type len(Fstring const &s)
Length.
bool open(utility::io::izstream &db_stream, std::string const &db_file, bool warn)
Open a database file on a provided stream.