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

[modeller_usage] Parallel job (part 2)



Ok, I modified my script as in the example.

---- (script)

from modeller import *
from modeller.automodel import *
from modeller.scripts import complete_pdb
from modeller.parallel import *

j = job()
j.append(local_slave())
j.append(local_slave())

log.verbose()

class mymodel(allhmodel):
	def special_restraints(self, aln):
		s1 = selection(self.chains['A'])
		s2 = selection(self.chains['B'])
		self.restraints.symmetry.append(symmetry(s1, s2, 1.0))
	def user_after_single_model(self):
		self.restraints.symmetry.report(1.0)

env = environ()

env.io_atom_files_directory = './'

a = mymodel(env,
            alnfile = 'HpUreE.ali',
            knowns = 'dimerBp',
            sequence = 'HpUreE',
            assess_methods=(assess.DOPE, assess.GA341))

a.starting_model = 1
a.ending_model = 25

a.use_parallel_job(j)
a.make()

# Output data
ok_models = filter(lambda x: x['failure'] is None, a.outputs)
key = 'DOPE score'
ok_models.sort(lambda a,b: cmp(a[key], b[key]))
m = ok_models[0]
print "Top model: %s (DOPE score %.3f)" % (m['name'], m[key])

env.libs.topology.read(file='$(LIB)/top_heav.lib')
env.libs.parameters.read(file='$(LIB)/par.lib')

# read model file
mdl = complete_pdb(env, m['name'])

# Assess with DOPE:
s = selection(mdl)
s.assess_dope(output='ENERGY_PROFILE NO_REPORT', file='HpUreE.best.profile',
              normalize_profile=True, smoothing_window=15)
---- (end)

i obtained this error:

---- (log)

Traceback (most recent call last):
  File "HpUreE.py", line 40, in ?
    a.make()
  File "/work/programs/MODELLER/modlib/modeller/automodel/automodel.py", line 109, in make
    self.multiple_models(atmsel)
  File "/work/programs/MODELLER/modlib/modeller/automodel/automodel.py", line 213, in multiple_models
    self.parallel_multiple_models(atmsel)
  File "/work/programs/MODELLER/modlib/modeller/automodel/automodel.py", line 233, in parallel_multiple_models
    self.outputs.extend(job.run_all_tasks())
  File "/work/programs/MODELLER/modlib/modeller/parallel/job.py", line 110, in run_all_tasks
    self.finish_next_task()
  File "/work/programs/MODELLER/modlib/modeller/parallel/job.py", line 127, in finish_next_task
    self.process_event(obj, s)
  File "/work/programs/MODELLER/modlib/modeller/parallel/job.py", line 141, in process_event
    task = obj.task_results()
  File "/work/programs/MODELLER/modlib/modeller/parallel/slave.py", line 54, in task_results
    r = self.get_data(allow_heartbeat=True)
  File "/work/programs/MODELLER/modlib/modeller/parallel/communicator.py", line 81, in get_data
    (cmdtype, obj) = self._recv()
  File "/work/programs/MODELLER/modlib/modeller/parallel/communicator.py", line 119, in _recv
    raise RemoteError(obj.exc, self)
modeller.parallel.communicator.RemoteError: AttributeError: 'module' object has no attribute 'mymodel' from <Slave on localhost>

---- (end)

in the .slave0 and .slave1 log file I have this error:

---- (log)
Slave startup: connect to master at 127.0.1.1:59037:0:EABQEAKC
Traceback (most recent call last):
  File "<string>", line 1, in ?
  File "/work/programs/MODELLER/modlib/modeller/parallel/slaveloop.py", line 63, in slaveloop
    handle_slave_io(master, slavedict)
  File "/work/programs/MODELLER/modlib/modeller/parallel/slaveloop.py", line 38, in handle_slave_io
    exec(cmdstr, slavedict)
  File "<string>", line 1, in ?
  File "/work/programs/MODELLER/modlib/modeller/parallel/communicator.py", line 81, in get_data
    (cmdtype, obj) = self._recv()
  File "/work/programs/MODELLER/modlib/modeller/parallel/communicator.py", line 117, in _recv
    (obj, self.buffer) = cmdtype.recv(self.buffer)
  File "/work/programs/MODELLER/modlib/modeller/parallel/data_types.py", line 71, in recv
    return (pickle.loads(obj), buffer[1+p.get_position():])
  File "/usr/local/lib/python2.3/pickle.py", line 1394, in loads
    return Unpickler(file).load()
  File "/usr/local/lib/python2.3/pickle.py", line 872, in load
    dispatch[key](self)
  File "/usr/local/lib/python2.3/pickle.py", line 1104, in load_global
    klass = self.find_class(module, name)
  File "/usr/local/lib/python2.3/pickle.py", line 1140, in find_class
    klass = getattr(mod, name)
AttributeError: 'module' object has no attribute 'mymodel'

---- (end)

running Modeller in the normal way do not produce any error.

Thanks

Francesco

---
Francesco Musiani

---