Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions Dockerfile-dmpk
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ WORKDIR ${HOME}

# numpy is pinned below 2 because this matplotlib release predates
# NumPy 2.0 and its compiled extensions are not ABI-compatible with it
RUN pip install "numpy<2" matplotlib==3.7.1 im-data-manager-job-utilities==1.0.1
RUN pip install "numpy<2" matplotlib==3.7.1 sigfig "im-data-manager-job-utilities>=1.4.0"

COPY utils.py ./
COPY dmpk/*.py ./dmpk/
4 changes: 2 additions & 2 deletions Dockerfile-fns
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ WORKDIR ${HOME}
RUN pip install \
neo4j-driver==4.4.11 \
im-standardize-molecule==0.1.0 \
im-data-manager-job-utilities==1.1.1
"im-data-manager-job-utilities>=1.4.0"

COPY fn_*.py utils.py ./
COPY fn_*.py ./

4 changes: 2 additions & 2 deletions Dockerfile-jaqpot
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@ RUN apt-get -y update &&\
apt-get -y install procps &&\
apt-get clean

RUN pip install im-data-manager-job-utilities==1.3.0 im-rdkit-utilities==1.0.0
RUN pip install "im-data-manager-job-utilities>=1.4.0" "im-rdkit-utilities>=1.1.2"

ENV HOME=/code
WORKDIR ${HOME}

COPY utils.py jaqpot*.py ./
COPY jaqpot*.py ./
4 changes: 2 additions & 2 deletions Dockerfile-moldb
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ RUN apt-get update && apt-get install -y gcc libpq-dev &&\
RUN pip install sqlalchemy==1.4.49\
psycopg2-binary==2.9.6\
im-standardize-molecule==0.1.0\
im-data-manager-job-utilities==1.3.0\
im-rdkit-utilities==1.0.0
"im-data-manager-job-utilities>=1.4.0"\
"im-rdkit-utilities>=1.1.2"

COPY *.py site_substructures.smarts ./
COPY moldb/* ./moldb/
5 changes: 2 additions & 3 deletions Dockerfile-mordred
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,7 @@ WORKDIR ${HOME}
# install our requirements. RDKit is present in base container
RUN pip install mordredcommunity==2.0.4 \
im-standardize-molecule==0.1.0 \
im-data-manager-job-utilities>=1.4.0 \
im-rdkit-utilities>=1.1.2
"im-data-manager-job-utilities>=1.4.0" \
"im-rdkit-utilities>=1.1.2"

COPY im_mordred/descriptor_generator.py ./im_mordred/
COPY utils.py ./
4 changes: 2 additions & 2 deletions Dockerfile-oddt
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,8 @@ ENV HOME=/code
WORKDIR ${HOME}

RUN pip install wheel six &&\
pip install im-data-manager-job-utilities==1.3.0\
im-rdkit-utilities==1.0.0\
pip install "im-data-manager-job-utilities>=1.4.0"\
"im-rdkit-utilities>=1.1.2"\
git+https://github.com/oddt/oddt.git@master

COPY *.py ./
4 changes: 2 additions & 2 deletions Dockerfile-plants
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ RUN apt-get update &&\
python3-openbabel &&\
apt-get clean

COPY pharmacophore.py utils.py /code/
COPY pharmacophore.py /code/

RUN chmod a+x /code/*.py &&\
pip install im-data-manager-job-utilities==1.1.1
pip install "im-data-manager-job-utilities>=1.4.0"
4 changes: 2 additions & 2 deletions Dockerfile-prep
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ WORKDIR ${HOME}
RUN pip install scikit-learn==1.2.2\
pdb2pqr==3.6.1\
im-standardize-molecule==0.1.0\
im-data-manager-job-utilities>=1.4.0\
im-rdkit-utilities>=1.1.2\
"im-data-manager-job-utilities>=1.4.0"\
"im-rdkit-utilities>=1.1.2"\
sigfig==1.3.19

COPY *.py fpscores.pkl.gz site_substructures.smarts ./
Expand Down
2 changes: 1 addition & 1 deletion align_mol.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
from rdkit.Chem import rdMolAlign
from rdkit.Chem import rdFMCS

import utils
from dm_job_utilities import utils


def align(query_mol, inputs_sdf, outputs_sdf, query_atoms=None, keep_all=False, mcs_params={}, interval=None):
Expand Down
6 changes: 4 additions & 2 deletions assemble_conformers.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,9 @@
"""

import argparse, os, time, gzip
import utils, rdkit_utils
import rdkit_utils
from dm_job_utilities import utils
from digest_utils import get_path_from_digest
from dm_job_utilities.dm_log import DmLog

from rdkit import Chem
Expand Down Expand Up @@ -66,7 +68,7 @@ def execute(input, output, data_dir, mode,
uid = tokens[1]
digest = tokens[2]
parts = [data_dir]
parts.extend(utils.get_path_from_digest(digest))
parts.extend(get_path_from_digest(digest))
path = os.path.join(*parts)
if not os.path.isdir(path):
utils.log('WARNING, path', path, 'not found')
Expand Down
2 changes: 1 addition & 1 deletion cluster_butina.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
from rdkit.Chem import AllChem, MACCSkeys
from rdkit.ML.Cluster import Butina

import utils
from dm_job_utilities import utils
import rdkit_utils
from dm_job_utilities.dm_log import DmLog

Expand Down
40 changes: 40 additions & 0 deletions digest_utils.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 2025 Informatics Matters Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Mapping a molecule digest onto the sharded directory layout used by the
enumeration/conformer pipeline.

This lives here rather than in dm_job_utilities: the shared package
deliberately dropped get_path_from_digest as obsolete, but the layout it
describes is still what prepare_enum_conf_lists.py writes and
assemble_conformers.py reads back.
"""

default_num_chars = 2
default_num_levels = 2


def get_path_from_digest(
digest, num_chars=default_num_chars, num_levels=default_num_levels
):
"""Split a digest into the directory components that locate its files,
e.g. 'abcdef...' -> ['ab', 'cd'] for the default 2 chars over 2 levels.
"""
parts = []
start = 0
for _ in range(0, num_levels):
end = start + num_chars
parts.append(digest[start:end])
start = start + num_chars
return parts
20 changes: 14 additions & 6 deletions dmpk/pk_tmax_cmax_sim.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,15 @@
matplotlib.use('Agg')
import matplotlib.pyplot as plt

import utils
from dm_job_utilities import utils
from sigfig import round as _sigfig_round


def sigfig_round(value, sigfigs):
"""Round to N significant figures. warn=False keeps sigfig quiet when a
value carries fewer significant figures than requested, which is common
here and was silent under the previous implementation."""
return _sigfig_round(value, sigfigs=sigfigs, warn=False)


def generatePlot(t_hf, t_hf_a, D, AUC, tn, quiet=False, plot_height=4, plot_width=10, font_size=12, basename='output'):
Expand All @@ -37,11 +45,11 @@ def generatePlot(t_hf, t_hf_a, D, AUC, tn, quiet=False, plot_height=4, plot_widt
V_F = D/kel/AUC

outputs = collections.OrderedDict()
outputs['Tmax(hr)'] = utils.round_to_significant_number(Tmax, 3)
outputs['Cmax(mg/L)'] = utils.round_to_significant_number(Cmax, 3)
outputs['Kel(hr-1)'] = utils.round_to_significant_number(kel, 3)
outputs['Ka(hr-1)'] = utils.round_to_significant_number(ka, 3)
outputs['V/F(L)'] = utils.round_to_significant_number(V_F, 3)
outputs['Tmax(hr)'] = sigfig_round(Tmax, 3)
outputs['Cmax(mg/L)'] = sigfig_round(Cmax, 3)
outputs['Kel(hr-1)'] = sigfig_round(kel, 3)
outputs['Ka(hr-1)'] = sigfig_round(ka, 3)
outputs['V/F(L)'] = sigfig_round(V_F, 3)

if not quiet:
utils.log('------------------------------------------------------------------------------------------')
Expand Down
3 changes: 2 additions & 1 deletion enumerate.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@

"""
import os, sys, argparse, traceback, uuid, gzip
import utils, rdkit_utils
import rdkit_utils
from dm_job_utilities import utils
from dm_job_utilities.cli import ProgressReporter, add_reporting_args
from dm_job_utilities.dm_log import DmLog

Expand Down
2 changes: 1 addition & 1 deletion fn_expand.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

import os, argparse, time

import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog
from standardize_molecule import standardize_to_noniso_smiles

Expand Down
2 changes: 1 addition & 1 deletion fn_find_synthons.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

import os, argparse, time

import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog
from standardize_molecule import standardize_to_noniso_smiles

Expand Down
2 changes: 1 addition & 1 deletion fn_synthon_expansion.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@

import os, argparse, time

import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog
from standardize_molecule import standardize_to_noniso_smiles

Expand Down
3 changes: 2 additions & 1 deletion im_mordred/descriptor_generator.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@

from rdkit import Chem

import utils, rdkit_utils
import rdkit_utils
from dm_job_utilities import utils
from dm_job_utilities.cli import ProgressReporter, add_reporting_args
from dm_job_utilities.dm_log import DmLog

Expand Down
3 changes: 2 additions & 1 deletion le_conformers.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
"""
import os, sys, argparse, traceback, time, gzip

import utils, rdkit_utils
import rdkit_utils
from dm_job_utilities import utils
from dm_job_utilities.cli import ProgressReporter, add_reporting_args
from dm_job_utilities.dm_log import DmLog

Expand Down
3 changes: 2 additions & 1 deletion le_conformers_for_mol.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,8 @@


import time, argparse
import utils, le_conformers
import le_conformers
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog

from rdkit import Chem
Expand Down
2 changes: 1 addition & 1 deletion max_min_picker.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@


import argparse, time
import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog

from rdkit import Chem, SimDivFilters
Expand Down
2 changes: 1 addition & 1 deletion minimize.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@


import sys, argparse, time
import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog

from rdkit import Chem
Expand Down
2 changes: 1 addition & 1 deletion moldb/analyse.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@

import argparse, datetime, time

import utils
from dm_job_utilities import utils
from . import models, filter, moldb_utils

from dm_job_utilities.dm_log import DmLog
Expand Down
2 changes: 1 addition & 1 deletion moldb/conformers.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
same methodology that this module uses.
"""
import os, argparse, traceback, time, gzip
import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog

from rdkit import Chem
Expand Down
3 changes: 2 additions & 1 deletion moldb/enumerate.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@

"""
import os, sys, argparse, traceback, logging
import utils, rdkit_utils
import rdkit_utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog

from rdkit import Chem
Expand Down
2 changes: 1 addition & 1 deletion moldb/extract_need_molprops.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@

import argparse, time, os, random, string, traceback

import utils
from dm_job_utilities import utils
from . import models

from sqlalchemy import text
Expand Down
2 changes: 1 addition & 1 deletion moldb/filter.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@


import os, glob, argparse, time
import utils
from dm_job_utilities import utils

from sqlalchemy import text
from sqlalchemy.orm import Session
Expand Down
2 changes: 1 addition & 1 deletion moldb/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

import sqlalchemy

import utils
from dm_job_utilities import utils

utils.log('sqlalchemy version:', sqlalchemy.__version__)

Expand Down
2 changes: 1 addition & 1 deletion moldb/moldb_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

import utils
from dm_job_utilities import utils

def add_filter_args(parser):
parser.add_argument('--min-hac', type=int, help="Min value for heavy atom count")
Expand Down
2 changes: 1 addition & 1 deletion moldb/standardize.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@


import argparse, os, json, gzip, time, logging
import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog

from rdkit import Chem, RDLogger
Expand Down
2 changes: 1 addition & 1 deletion oddt_ifp.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@


import sys, argparse
import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog

from oddt import toolkit, fingerprints
Expand Down
3 changes: 2 additions & 1 deletion oddt_interactions.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,8 @@
import argparse, traceback
import json, sys

import utils, interact
import interact
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog

import oddt
Expand Down
2 changes: 1 addition & 1 deletion open3dalign.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
"""

import argparse, sys
import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog

from rdkit import Chem
Expand Down
2 changes: 1 addition & 1 deletion pharmacophore.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

import utils
from dm_job_utilities import utils
from dm_job_utilities.dm_log import DmLog
from openbabel import pybel, openbabel
from jinja2 import Template
Expand Down
Loading
Loading