Ejemplo n.º 1
0
    transformation = Transformation(
        run_id=run_id,
        xchem_fragment_id=xchem_fragment_id,
        initial_microstate=CompoundMicrostate(
            compound_id=get_compound_id(reference_microstate.microstate_id),
            microstate_id=reference_microstate.microstate_id),
        final_microstate=CompoundMicrostate(
            compound_id=get_compound_id(microstate.microstate_id),
            microstate_id=microstate.microstate_id))
    transformations.append(transformation)
    run_id += 1

# Compile compound series
from fah_xchem.schema import CompoundSeries
compound_series = CompoundSeries(metadata=series_metadata,
                                 compounds=list(compounds.values()),
                                 transformations=transformations)

# Write JSON
print(f'Writing JSON to {json_filename}')
if '.bz2' in json_filename:
    import bz2
    with bz2.open(json_filename, "wt") as f:
        f.write(compound_series.json())
elif '.gz' in json_filename:
    import gzip
    with gzip.open(json_filename, "wt") as f:
        f.write(compound_series.json())
else:
    with open(json_filename, "wt") as f:
        f.write(compound_series.json())
            nmols_with_assay_data += 1

    print(
        f'Found assay data for {nmols_with_assay_data} / {len(oemols)} molecules'
    )


if __name__ == '__main__':
    new_json_filename = 'json/sprint-5-x12073-monomer-neutral-simulated.json'
    from fah_xchem.schema import CompoundSeries, Transformation, CompoundMicrostate, CompoundMetadata, Microstate, Compound

    # Read source JSON
    source_json_filename = 'json/sprint-5-x12073-monomer-neutral.json'
    import json
    with open(source_json_filename, "r") as infile:
        compound_series = CompoundSeries.parse_obj(json.loads(infile.read()))

    # Read all microstates
    import os
    project = '13429'
    from glob import glob
    runs = glob(f'{project}/RUNS/RUN*')
    nruns = len(runs)
    from rich.progress import track
    runs = list()
    oemols = dict()
    for run in track(
            range(nruns),
            description='Reading initial and final molecules from all RUNs...'
    ):
        try:
    return

# work out which ligand pair to run

def load_json(filename):
    """
    Load a JSON file that may be .bz2 or .gz compressed
    """
    if '.bz2' in filename:
        import bz2
        with bz2.open(filename, 'rt') as infile:
            return json.load(infile)
    elif '.gz' in filename:
        import gzip
        with gzip.open(filename, 'rt') as infile:
            return json.load(infile)
    else:
        with open(filename, 'rt') as infile:
            return json.load(infile)

# Sprint 5
json_filename = 'json/sprint-5-x12073-monomer-neutral.json'
microstate_sdf_filename = 'docked/sprint-5-microstates-x12073-sorted.sdf' # TODO: Encapsulate this in JSON file as source_sdf_filename and source_molecule_index?
json_data = load_json(json_filename)
from fah_xchem.schema import CompoundSeries
compound_series = CompoundSeries.parse_obj(json_data)

# Process 0-indexed transformation index
transformation_index = int(sys.argv[1])
run_relative_perturbation(compound_series, transformation_index, microstate_sdf_filename)
Ejemplo n.º 4
0
    mol = oechem.OEGraphMol()
    oechem.OESmilesToMol(mol, smiles)
    return oechem.OEMolToSmiles(mol)


if __name__ == '__main__':
    from fah_xchem.schema import CompoundSeries, Transformation, CompoundMicrostate

    new_json_filename = 'json/sprint-5-x12073-monomer-neutral-corrected.json'
    from fah_xchem.schema import CompoundSeries, Transformation, CompoundMicrostate

    # Read source JSON
    source_json_filename = 'json/sprint-5-x12073-monomer-neutral.json'
    import json
    with open(source_json_filename, "r") as infile:
        compound_series = CompoundSeries.parse_obj(json.loads(infile.read()))

    # Index microstates
    compound_microstates = dict()
    for compound in compound_series.compounds:
        for microstate in compound.microstates:
            compound_microstate = CompoundMicrostate(
                compound_id=compound.metadata.compound_id,
                microstate_id=microstate.microstate_id)
            compound_microstates[canonical_smiles(
                microstate.smiles)] = compound_microstate

    xchem_fragment_id = compound_series.transformations[0].xchem_fragment_id

    # Scan RUNs
    print('Scanning RUNs...')