Source code for schrodinger.application.vss.config

import itertools
import os

from ruamel import yaml
from voluptuous import All
from voluptuous import Range
from voluptuous import Required
from voluptuous import Schema

from schrodinger.application.vss import database
from schrodinger.utils import fileutils

CONFIG_FILE_SCHEMA = Schema({
    'databases': [str],
    Required('glide_inp'): dict,
    'ligprep_args': [str],
    Required('decoys_pool'): str,
    'glide_al_train_host': str,
    'glide_al_eval_host': str,
    'glide_al_driver_host': str,
    'glide_al_njobs': All(int, Range(min=1)),
    'glide_al_block_size': All(int, Range(min=1)),
    'glide_al_num_rescore_ligand': All(int, Range(min=1)),
    'glide_al_glide_subjob_size': All(int, Range(min=1)),
    Required('glide_al_train_size', default=20): All(int, Range(min=1)),
    Required('glide_al_num_iter', default=2): All(int, Range(min=1)),
    'ligand_ml_train_host': str,
    'ligand_ml_eval_host': str,
    'ligand_ml_driver_host': str,
    'ligand_ml_njobs': All(int, Range(min=1)),
    'glide_host': str,
    'glide_driver_host': str,
    'shape_host': str,
    'shape_driver_host': str,
})


[docs]class Config: ''' Runner configuration data. '''
[docs] def __init__(self, filename): with open(filename, 'r') as fp: data = CONFIG_FILE_SCHEMA(yaml.safe_load(fp)) keywords = [str(k) for k in CONFIG_FILE_SCHEMA.schema] for keyword in keywords: setattr(self, keyword, data.get(keyword)) with fileutils.chdir(os.path.dirname(filename) or os.curdir): self.filename = os.path.abspath(filename) self.decoys_pool = os.path.abspath(data['decoys_pool']) self.databases = [ database.Database(p) for p in data.get('databases', []) ]
[docs] def get_smiles_csv(self, dbnames): return itertools.chain.from_iterable( db.get_smiles_csv() for db in self.databases if db.name in dbnames)
[docs] def get_shape_data(self, dbnames, *, shape_type): shape_data = [] shape_data_is_local = False for db in self.databases: if db.name in dbnames: db_data = list(db.get_shape_data(shape_type)) if db_data: shape_data.extend(db_data) if db.local: shape_data_is_local = True return shape_data, shape_data_is_local