In [1]:
import os
import sys
print 'python version', sys.version.split()[0]
In [2]:
# set default verbose level
print os.environ.get('RADICAL_PILOT_VERBOSE')
print os.environ.get('RADICAL_PILOT_DBURL')
verbose = os.environ.get('RADICAL_PILOT_VERBOSE', 'REPORT')
os.environ['RADICAL_PILOT_VERBOSE'] = verbose
# set default URL to IMP Mongo DB
# path_to_db = os.environ.get(
# 'RADICAL_PILOT_DBURL', "mongodb://ensembletk.imp.fu-berlin.de:27017/rp")
# assume we run a local
path_to_db = os.environ.get(
'RADICAL_PILOT_DBURL', "mongodb://localhost:27017/rp")
os.environ['RADICAL_PILOT_DBURL'] = path_to_db
In [3]:
import radical.pilot as rp
import radical.utils as ru
In [4]:
# import adaptive components
from adaptivemd import OpenMMEngine, AllegroCluster, Brain, MDCluster, \
LocalCluster, File, NTrajectories
import adaptivemd.util as amp
from adaptivemd import Copy, Move, Link
from adaptivemd import Task
from adaptivemd.task import PythonTask
from adaptivemd.analysis import PyEMMAAnalysis
import numpy as np
We pick to run on this machine
In [5]:
resource = LocalCluster(150, 2)
We still need to add the necessary path to find the conda installation
In [6]:
resource.add_path(amp.path_conda_local_jhp)
Set a reporter for radical pilot
In [8]:
# we use a reporter class for nicer output
report = ru.LogReporter(name='radical.pilot', level=verbose)
report.title('Getting Started (RP version %s)' % rp.version)
pick a file from the currend working directory
In [9]:
pdb_file = File('file://input.pdb')
create the engine
In [10]:
engine = OpenMMEngine(
pdb_file=pdb_file,
system_file=File('file://system.xml'),
integrator_file=File('file://integrator.xml'))
In [11]:
modeller = PyEMMAAnalysis(
pdb_file=pdb_file,
source_folder=File('../staging_area/alanine/trajs'))
In [12]:
cluster = MDCluster(
system='alanine',
resource=resource,
report=report)
In [13]:
# add the path to CONDA if now already in the default
cluster.add_path(os.environ.get('CONDA_PATH', '~/anaconda/bin'))
In [14]:
cluster.register(engine)
cluster.register(modeller)
select a strategy aka brain
In [15]:
brain = Brain(cluster) # this needs to be smarter
In [16]:
w = resource.wrapper
w.append('export MODULEPATH=/import/ag_cmb/software/modules/:$MODULEPATH')
w.append('module load cuda/7.5')
So let's do it...
In [18]:
cluster.enter()
In [40]:
self.folder_name = '%s-%s' % (cluster.session._uid, cluster.pilot._uid)
Out[40]:
In [43]:
from os.path import *
In [52]:
relpath('rp.session.Stevie.fritz.box.jan-hendrikprinz.017200.0000-pilot.0000/staging_area/trajs', 'rp.session.Stevie.fritz.box.jan-hendrikprinz.017200.0000-pilot.0001/staging_area/trajs')
Out[52]:
In [53]:
f = File('staging:///trajs/output.dcd')
In [57]:
f.location
Out[57]:
In [25]:
t = engine.task_run_trajectory(cluster.new_trajectory(engine['pdb'], 10, number=1))
In [28]:
t.pre_exec
Out[28]:
In [17]:
cluster.submit(cluster.new_trajectory(engine['pdb'], 10, number=1))
Out[17]:
In [18]:
def task_generator(cluster):
return [
cluster['engine'].task_run_trajectory(traj) for traj in
cluster.new_ml_trajectory(10, 2)]
In [19]:
cluster\
.on(cluster.on_ntraj(1))\
.do(task_generator)
Out[19]:
In [20]:
cluster\
.on(cluster.on_ntraj(1))\
.do(task_generator)\
.repeat().until(cluster.on_ntraj(20))
Out[20]:
In [39]:
cluster\
.on(cluster.on_ntraj(range(25, 28)))\
.do(task_generator)\
# .repeat().until(cluster.on_ntraj(20))
Out[39]:
In [34]:
cluster._events
Out[34]:
In [40]:
cluster.trigger()
In [44]:
for ev in cluster._events:
print ev, bool(ev), ev.has_running_tasks, ev._active_tasks
In [45]:
cluster.trigger()
In [46]:
print cluster.trajectories
In [51]:
cluster.exit()
In [39]:
for m in cluster.models:
print
print m['msm']['P']
In [68]:
msm = np.array(cluster.models[-1]['msm']['P'])
print msm
In [69]:
len(cluster.models)
Out[69]:
In [71]:
len(cluster.files)
Out[71]:
In [73]:
cluster.wait()
report.header('generated new trajectories')
for f in cluster.files:
report.info(repr(f) + '\n\t')
In [ ]: