[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[modeller_usage] Getting a ligand to work in homology models



Hello,

I'm currently trying to model a hemoglobin monomer that has a heme group as a ligand. If I run Modeller through the chimera interface, the ligand carries over to the models. However, if I run through IDLE, which I prefer to do because I'm using parallel jobs, the ligand does not carry over. Any help appreciated.


# --- UCSF Chimera Copyright ---
# Copyright (c) 2000 Regents of the University of California.
# All rights reserved.  This software provided pursuant to a
# license agreement containing restrictions on its disclosure,
# duplication and use.  This notice must be embedded in or
# attached to all copies, including partial copies, of the
# software or any revisions or derivations thereof.
# --- UCSF Chimera Copyright ---

# This script is generated by the Modeller Dialog in Chimera, 
# incorporating the settings from the user interface. User can revise 
# this script and submit the modified one into the Advanced Option panel. 


# Import the Modeller module
from modeller import *
from modeller.automodel import *
from modeller.parallel import *


# ---------------------- namelist.dat --------------------------------
# A "namelist.dat" file contains the file names, which was output from 
# the Modeller dialog in Chimera based on user's selection.
# The first line it the name of the target sequence, the remaining 
# lines are name of the template structures
namelist = open( 'namelist.dat', 'r' ).read().split('\n')
tarSeq = namelist[0]
template = tuple( [ x.strip() for x in namelist[1:] if x != '' ] )
# ---------------------- namelist.dat --------------------------------
j = job(host = 'localhost')
j.append(local_slave())
j.append(local_slave())
j.append(local_slave())
j.append(local_slave())
j.append(local_slave())
j.append(local_slave())
#j.append(local_slave())
#j.append(local_slave())



# create a new Modeller environment
env = environ()

env.io.hetatm = True
env.io.hydrogen = True
# Directory of atom/PDB/structure files. It is a relative path, inside 
# a temp folder generated by Chimera. User can modify it and add their 
# absolute path containing the structure files.
env.io.atom_files_directory = ['.', './template_struc']

		
a = automodel(env,
                sequence = tarSeq,
		# alignment file with template codes and target sequence
		alnfile = 'alignment.ali',
		# PDB codes of the templates
		knowns = template)


# index of the first model
a.starting_model = 1
# index of the last model
a.ending_model = 5
loopRefinement = False

# perform thorough optimization
a.library_schedule = autosched.normal
a.max_var_iterations = 500
a.md_level = refine.slow


# Assesses the quality of models using
# the DOPE (Discrete Optimized Protein Energy) method (Shen & Sali 2006)
# and the GA341 method (Melo et al 2002, John & Sali 2003)
a.assess_methods = (assess.DOPEHR)

# ------------------------- build all models --------------------------
a.use_parallel_job(j)

a.make()


# ---------- Accesing output data after modeling is complete ----------

# Get a list of all successfully built models from a.outputs
ok_models = [x for x in a.outputs if x['failure'] is None]

key = 'DOPE-HR score'
ok_models.sort(key=lambda a: a[key])


# Output the list of ok_models to file ok_models.dat 
fMoutput = open('ok_models.dat', 'w')
fMoutput.write('File name of aligned model\t DOPEHR\n')

for m in ok_models:
	results  = '%s\t' % m['name']
	results += '%.5f\n' % m['DOPE-HR score']
	fMoutput.write( results )

fMoutput.close()