Esempio n. 1
0
from torsion.cubes import FilterBrI
from floe.api import WorkFloe
from floe.api import ParallelCubeGroup
from floe.api import OEMolOStreamCube
from floe.api import OEMolIStreamCube
from floe import constants

# Declare Floe, add metadata for UI
job = WorkFloe('Filtered Massively Parallel 2-stage Dihedral Scan of Torsions')
job.description = """
Filtered Calculate the Energy Profile associated with a Dihedral Scan in a massively parallel manner.
"""
job.classification = [["Torsion"]]

# Declare Cubes
ifs = OEMolIStreamCube('ifs')
ifs.promote_parameter('data_in', promoted_name='ifs')
ifs.parameter_overrides["download_format"] = {"hidden": True}
ifs.parameter_overrides["limit"] = {"hidden": True}

element_filter = FilterBrI('element_filter')

# Conformer generation
confgenCube = ParallelGenerateStartingConfs('confgenCube')
confgenCube.promote_parameter('max_confs', required=True)
confgenCube.promote_parameter('rms_cutoff', required=True)
confgenCube.parameter_overrides["energy_window"] = {"hidden": True}
confgenCube.parameter_overrides["split_output"] = {"hidden": True}

confgen_failure = OEMolOStreamCube('confgen_failure')
confgen_failure.promote_parameter('data_out',
Esempio n. 2
0
complex (file): OEB file of the prepared protein:ligand complex

Optional:
--------
picosec (float): Number of picoseconds to warm up the complex
temperature (decimal): target final temperature after warming

Outputs:
--------
ofs: Outputs the constant temperature and volume system
"""

job.classification = [['NVT']]
job.tags = [tag for lists in job.classification for tag in lists]

ifs = OEMolIStreamCube("complex", title="Complex Reader")
ifs.promote_parameter("data_in", promoted_name="complex", title='Complex Input File',
                      description="protein:ligand complex input file")

nvt = OpenMMnvtCube('nvt')
nvt.promote_parameter('time', promoted_name='picosec', default=10.0)
nvt.promote_parameter('temperature', promoted_name='temperature', default=300.0,
                      description='Selected temperature in K')
# Restraints
nvt.promote_parameter('restraints', promoted_name='restraints', default='noh (ligand or protein)')
nvt.promote_parameter('restraintWt', promoted_name='restraintWt', default=2.0)
# Trajectory and logging info frequency intervals
nvt.promote_parameter('trajectory_interval', promoted_name='trajectory_interval', default=100,
                      description='Trajectory saving interval')
nvt.promote_parameter('reporter_interval', promoted_name='reporter_interval', default=1000,
                      description='Reporter saving interval')
Esempio n. 3
0
Parameters:
-----------
protein (file): OEB file of the prepared protein
ligands (file): OEB file of the prepared ligands


Outputs:
--------
ofs: Output file
"""

job.classification = [['Simulation']]
job.tags = [tag for lists in job.classification for tag in lists]

# Ligand setting
iligs = OEMolIStreamCube("Ligands", title="Ligand Reader")
iligs.promote_parameter("data_in",
                        promoted_name="ligands",
                        title="Ligand Input File",
                        description="Ligand file name")

chargelig = LigChargeCube("LigCharge")
chargelig.promote_parameter(
    'max_conformers',
    promoted_name='max_conformers',
    description="Set the max number of conformers per ligand",
    default=800)

# Protein Setting
iprot = ProteinReader("ProteinReader")
iprot.promote_parameter("data_in",
Esempio n. 4
0
Optional:
--------
picosec (float): Number of picoseconds to warm up the complex
temperature (decimal): target final temperature in K
pressure (decimal): target final pressure in atm

Outputs:
--------
ofs: Outputs the constant temperature and pressure system
"""

job.classification = [['NPT']]
job.tags = [tag for lists in job.classification for tag in lists]

ifs = OEMolIStreamCube("SystemReader", title="System Reader")
ifs.promote_parameter("data_in",
                      promoted_name="system",
                      title='System Input File',
                      description="System input file")

npt = OpenMMnptCube('npt')
npt.promote_parameter('time',
                      promoted_name='picosec',
                      default=10.0,
                      description='Length of MD run in picoseconds')
npt.promote_parameter('temperature',
                      promoted_name='temperature',
                      default=300.0,
                      description='Selected temperature in K')
npt.promote_parameter('pressure',
Esempio n. 5
0
See [http://getyank.org](http://getyank.org) for more information on YANK and the alchemical free energy calculations it supports.

YANK is free (libre) open source software licensed under the [MIT License](https://github.com/choderalab/yank/blob/master/LICENSE).

All source code is available at: [http://github.com/choderalab/yank](http://github.com/choderalab/yank)

YANK is produced by the Chodera lab: [http://choderalab.org](http://choderalab.org).
Please help us make it better by contributing code or funds.

"""

job.classification =[["YANK", "Binding free energies", "OpenMM", "choderalab"]]
job.tags = [tag for lists in job.classification for tag in lists]

ifs = OEMolIStreamCube("ifs")
ifs.promote_parameter("data_in", promoted_name="molecules", description="Input molecules")

yank_cube = YankBindingCube('yank_binding', title = 'Yank for binding free energies')
for parameter_name in ['receptor', 'solvent', 'temperature', 'pressure', 'nsteps_per_iteration', 'simulation_time', 'timestep', 'minimize', 'verbose']:
    promoted_name = parameter_name
    description = yank_cube.parameters()[parameter_name].description
    yank_cube.promote_parameter(parameter_name, promoted_name=promoted_name, description=description)

success_ofs = OEMolOStreamCube("success_ofs")
success_ofs.promote_parameter("data_out", promoted_name="success", description="Output molecules")

failure_ofs = OEMolOStreamCube("failure_ofs")
failure_ofs.promote_parameter("data_out", promoted_name="failure", description="Failed molecules")

cubes = [ifs, yank_cube, success_ofs, failure_ofs]
Esempio n. 6
0
                                 ParallelFastFPInsertKA, AccumulateRankings,
                                 AnalyseRankings)
from cubes.output_cubes import TextRankingOutputCube, PlotResults, ResultsOutputCube
from floe.api import WorkFloe, CubeGroup
from floe.api import OEMolOStreamCube
from floe.api import OEMolIStreamCube

# Declare Floe, add metadata for UI
job = WorkFloe('VS Floe')
job.description = """
Read an index text file and write the indices in an other file
"""
job.classification = [["Virtual Screening", "Create Ranking"]]

# Declare Cubes
act_reader = OEMolIStreamCube('act_reader')
act_reader.promote_parameter('data_in', promoted_name='act_db')
#index_reader = IndexInputCube('index_reader')
#index_reader.promote_parameter('data_in', promoted_name='index_log')

index_generator = IndexGenerator('index generator')
accu_act = AccuMolList('accumulate actives')
#calc_fp = CalculateFPCube('calculate fingerprints')

prep_sim_calc = PrepareRanking('prepare similarity calculation')
prep_sim_calc.promote_parameter('method', promoted_name='method')
calc_sim = ParallelFastFPRanking('calculate similarity value')
calc_sim.promote_parameter('url', promoted_name='url')
calc_sim.promote_parameter('fptype', promoted_name='fptype')
calc_sim.promote_parameter('topn', promoted_name='topn')
#calc_sim.promote_parameter('data_in', promoted_name='screen_db')
                    '%(levelname)-8s  %(message)s',
                    datefmt='%Y-%m-%d %H:%M:%S')
from torsion.cubes import ParallelPsi4EnergyCalculation, SerialGenerateStartingConfs, SerialGenerateTorsionalConfs
from floe.api import WorkFloe
from floe.api import OEMolOStreamCube
from floe.api import OEMolIStreamCube

# Declare Floe, add metadata for UI
job = WorkFloe('Massively Parallel Dihedral Scan of Torsions')
job.description = """
Calculate the Energy Profile associated with a Dihedral Scan in a massively parallel manner.
"""
job.classification = [["Torsion"]]

# Declare Cubes
ifs = OEMolIStreamCube('ifs')
ifs.promote_parameter('data_in', promoted_name='ifs')

confgenCube = SerialGenerateStartingConfs('starting_conf_gen')
confgenCube.promote_parameter(
    'max_confs',
    title='Maximum Alternate Starting Conformers',
    description=
    'Maximum number of starting conformations to use in QM torsion driving experiment. '
    +
    'NOTE: If you do not want to generate starting conformations, set this to 1.'
)

confgen_failure = OEMolOStreamCube('confgen_failure')
confgen_failure.promote_parameter('data_out',
                                  promoted_name='confgen_failure',
Esempio n. 8
0
from floe.api import WorkFloe, OEMolIStreamCube, OEMolOStreamCube
from YankCubes.cubes import YankBindingFECube, SyncBindingFECube

job = WorkFloe("YANK small molecule absolute binding free energies")

job.description = """
# Compute small molecule absolute binding free energies using YANK.

This Floe processes the provided molecules, computes free energies of binding to a 
specified receptor, and appends the following SDData properties to the original molecules:
"""

iligand = OEMolIStreamCube("ReadingLigand")
iligand.promote_parameter("data_in",
                          promoted_name="ligands",
                          title="Ligand Input File",
                          description="Ligand file name")

icomplex = OEMolIStreamCube("ReadingComplex")
icomplex.promote_parameter("data_in",
                           promoted_name="complex",
                           title="Complex Input File",
                           description="complex file name")

sync = SyncBindingFECube("SyncCube")
yankabfe = YankBindingFECube("YankBindingFE")

ofs = OEMolOStreamCube('ofs', title='OFS-Success')
ofs.set_parameters(backend='s3')

fail = OEMolOStreamCube('fail', title='OFS-Failure')
Esempio n. 9
0
from floe.api import WorkFloe, OEMolIStreamCube, OEMolOStreamCube
from PlatformTestCubes.cubes import PlatformTestCube

job = WorkFloe("OpenMMPlatforms")

job.description = """
**Check available OpenMM Platforms**
Based on OpenMM SimTK installation check script
"""

job.classification = [
    ["OpenMM", "Platforms"]
]
job.tags = [tag for lists in job.classification for tag in lists]

ifs = OEMolIStreamCube("ifs")
ofs = OEMolOStreamCube("ofs")

# Promotes the parameter to something we can specify from the command line as "--ifs=..."
ifs.promote_parameter("data_in", promoted_name="ifs")

# this is hardwiring the filename to the molecules coming out of ofs
ofs.set_parameters(data_out="openmmPlatformCheck.oeb")

# the name of the object has to match the string: this is the name of myself
platformTester = PlatformTestCube("platformTester")

job.add_cubes(ifs, ofs, platformTester)
ifs.success.connect(platformTester.intake)
platformTester.success.connect(ofs.intake)