Simon Duerr commited on
Commit
fe26361
1 Parent(s): 0a6b286

change bfactor

Browse files
Files changed (1) hide show
  1. app.py +18 -12
app.py CHANGED
@@ -196,6 +196,21 @@ def prepare_input(input, jobname, baseconfig, hard_case):
196
 
197
  return yaml.dump(yaml_dict).replace("'", "\""),os.path.join("/tmp/", f"{jobname}.zip")
198
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
199
  def run_rf2aa(jobname, zip_archive):
200
  current_dir = os.getcwd()
201
  try:
@@ -203,20 +218,11 @@ def run_rf2aa(jobname, zip_archive):
203
  zip_ref.extractall(os.path.join(current_dir))
204
  os.system(f"python -m rf2aa.run_inference --config-name {jobname}.yaml --config-path {current_dir}/{jobname}")
205
  # scale pLDDT to 0-100 range in pdb output file
206
- parser = PDBParser(QUIET=True)
207
- structure = parser.get_structure(jobname, f"{current_dir}/{jobname}/{jobname}.pdb")
208
- for model in structure:
209
- for chain in model:
210
- for residue in chain:
211
- for atom in residue:
212
- atom.bfactor = atom.bfactor * 100
213
- io = PDBIO()
214
- io.set_structure(structure)
215
- io.save(f"{current_dir}/{jobname}/{jobname}.pdb")
216
 
217
  except Exception as e:
218
  raise gr.Error(f"Error running RFAA: {e}")
219
- return f"{current_dir}/{jobname}/{jobname}.pdb"
220
 
221
 
222
 
@@ -287,7 +293,7 @@ with gr.Blocks() as demo:
287
  runfiles = gr.File(label="files to run RFAA", visible=False)
288
  instructions = gr.Markdown(visible=False)
289
 
290
- out = Molecule3D(visible=False)
291
 
292
  btn.click(predict, inputs=[inp, jobname, dry_run, base_config, hard_case], outputs=[config_file, runfiles, instructions, out])
293
 
 
196
 
197
  return yaml.dump(yaml_dict).replace("'", "\""),os.path.join("/tmp/", f"{jobname}.zip")
198
 
199
+
200
+ def convert_bfactors(pdb_path):
201
+ with open(pdb_path, 'r') as f:
202
+ lines = f.readlines()
203
+ for i,line in enumerate(lines):
204
+ # multiple each bfactor by 100
205
+ if line[0:6] == 'ATOM ' or line[0:6] == 'HETATM':
206
+ bfactor = float(line[60:66])
207
+ bfactor *= 100
208
+ line = line[:60] + f'{bfactor:6.2f}' + line[66:]
209
+ lines[i] = line
210
+ with open(pdb_path.replace(".pdb", "_processed.pdb"), 'w') as f:
211
+ f.write(''.join(lines))
212
+
213
+
214
  def run_rf2aa(jobname, zip_archive):
215
  current_dir = os.getcwd()
216
  try:
 
218
  zip_ref.extractall(os.path.join(current_dir))
219
  os.system(f"python -m rf2aa.run_inference --config-name {jobname}.yaml --config-path {current_dir}/{jobname}")
220
  # scale pLDDT to 0-100 range in pdb output file
221
+ convert_bfactors(f"{current_dir}/{jobname}/{jobname}.pdb")
 
 
 
 
 
 
 
 
 
222
 
223
  except Exception as e:
224
  raise gr.Error(f"Error running RFAA: {e}")
225
+ return f"{current_dir}/{jobname}/{jobname}_processed.pdb"
226
 
227
 
228
 
 
293
  runfiles = gr.File(label="files to run RFAA", visible=False)
294
  instructions = gr.Markdown(visible=False)
295
 
296
+ out = Molecule3D(visible=False)
297
 
298
  btn.click(predict, inputs=[inp, jobname, dry_run, base_config, hard_case], outputs=[config_file, runfiles, instructions, out])
299