diff --git a/molpipeline/abstract_pipeline_elements/mol2any/mol2bitvector.py b/molpipeline/abstract_pipeline_elements/mol2any/mol2bitvector.py index b4b0e27c..17080112 100644 --- a/molpipeline/abstract_pipeline_elements/mol2any/mol2bitvector.py +++ b/molpipeline/abstract_pipeline_elements/mol2any/mol2bitvector.py @@ -15,7 +15,7 @@ import numpy as np import numpy.typing as npt from rdkit.Chem import rdFingerprintGenerator -from rdkit.DataStructs import ExplicitBitVect +from rdkit.DataStructs import ExplicitBitVect # type: ignore[attr-defined] from scipy import sparse from molpipeline.abstract_pipeline_elements.core import MolToAnyPipelineElement diff --git a/molpipeline/any2mol/sdf2mol.py b/molpipeline/any2mol/sdf2mol.py index 88507f18..4a0fb574 100644 --- a/molpipeline/any2mol/sdf2mol.py +++ b/molpipeline/any2mol/sdf2mol.py @@ -119,7 +119,7 @@ def pretransform_single(self, value: str) -> OptionalMol: "Invalid SDF string!", self.name, ) - supplier = Chem.SDMolSupplier() + supplier = Chem.SDMolSupplier() # type: ignore[call-arg] supplier.SetData(value) mol = next(supplier, None) if mol is None: diff --git a/molpipeline/estimators/leader_picker_clustering.py b/molpipeline/estimators/leader_picker_clustering.py index 1640a3ea..cdb1c1b2 100644 --- a/molpipeline/estimators/leader_picker_clustering.py +++ b/molpipeline/estimators/leader_picker_clustering.py @@ -8,7 +8,7 @@ import numpy as np import numpy.typing as npt from rdkit import DataStructs -from rdkit.DataStructs import ExplicitBitVect +from rdkit.DataStructs import ExplicitBitVect # type: ignore[attr-defined] from rdkit.SimDivFilters import rdSimDivPickers from sklearn.base import BaseEstimator, ClusterMixin, _fit_context from sklearn.utils._param_validation import Interval @@ -92,7 +92,7 @@ def _assign_points_to_clusters_based_on_centroid( max_similarities = np.full(len(fps), -np.inf, dtype=np.float64) for i, pick_idx in enumerate(picks): - similarities = DataStructs.BulkTanimotoSimilarity(fps[pick_idx], fps) + similarities = DataStructs.BulkTanimotoSimilarity(fps[pick_idx], fps) # type: ignore[attr-defined] max_mask = similarities > max_similarities labels[max_mask] = i max_similarities[max_mask] = list(compress(similarities, max_mask)) diff --git a/molpipeline/experimental/explainability/visualization/heatmaps.py b/molpipeline/experimental/explainability/visualization/heatmaps.py index 19f65b25..ce78aeb8 100644 --- a/molpipeline/experimental/explainability/visualization/heatmaps.py +++ b/molpipeline/experimental/explainability/visualization/heatmaps.py @@ -299,6 +299,6 @@ def color_canvas(canvas: Draw.MolDraw2D, color_grid: ColorGrid) -> None: for x, y in zip(*mask): upper_left, lower_right = color_grid.grid_field_lim(x, y) - upper_left, lower_right = Point2D(*upper_left), Point2D(*lower_right) - canvas.SetColour(tuple(color_grid.color_grid[x, y])) + upper_left, lower_right = Point2D(*upper_left), Point2D(*lower_right) # type: ignore[assignment] + canvas.SetColour(tuple(color_grid.color_grid[x, y])) # type: ignore[call-arg] canvas.DrawRect(upper_left, lower_right) diff --git a/molpipeline/experimental/explainability/visualization/utils.py b/molpipeline/experimental/explainability/visualization/utils.py index 3fe9c836..b1026e58 100644 --- a/molpipeline/experimental/explainability/visualization/utils.py +++ b/molpipeline/experimental/explainability/visualization/utils.py @@ -34,7 +34,7 @@ def get_mol_lims(mol: Chem.Mol) -> tuple[tuple[float, float], tuple[float, float coords_list = [] conf = mol.GetConformer(0) for i, _ in enumerate(mol.GetAtoms()): - pos = conf.GetAtomPosition(i) + pos = conf.GetAtomPosition(i) # type: ignore[call-arg] coords_list.append((pos.x, pos.y)) coords: npt.NDArray[np.float64] = np.array(coords_list) min_p = np.min(coords, axis=0) diff --git a/molpipeline/mol2any/mol2bin.py b/molpipeline/mol2any/mol2bin.py index 3f14b8b7..d3f0df7f 100644 --- a/molpipeline/mol2any/mol2bin.py +++ b/molpipeline/mol2any/mol2bin.py @@ -21,4 +21,4 @@ def pretransform_single(self, value: Chem.Mol) -> str: str Binary representation of molecule. """ - return value.ToBinary() + return value.ToBinary() # type: ignore[call-overload] diff --git a/molpipeline/mol2any/mol2maccs_key_fingerprint.py b/molpipeline/mol2any/mol2maccs_key_fingerprint.py index 6c3a7663..5e3583f7 100644 --- a/molpipeline/mol2any/mol2maccs_key_fingerprint.py +++ b/molpipeline/mol2any/mol2maccs_key_fingerprint.py @@ -3,7 +3,7 @@ import numpy as np from numpy import typing as npt from rdkit.Chem import MACCSkeys -from rdkit.DataStructs import ExplicitBitVect +from rdkit.DataStructs import ExplicitBitVect # type: ignore[attr-defined] from molpipeline.abstract_pipeline_elements.mol2any.mol2bitvector import ( MolToFingerprintPipelineElement, diff --git a/molpipeline/mol2any/mol2morgan_fingerprint.py b/molpipeline/mol2any/mol2morgan_fingerprint.py index 62b974c2..2b98c90b 100644 --- a/molpipeline/mol2any/mol2morgan_fingerprint.py +++ b/molpipeline/mol2any/mol2morgan_fingerprint.py @@ -163,7 +163,7 @@ def _explain_rdmol(self, mol_obj: RDKitMol) -> dict[int, list[tuple[int, int]]]: Dictionary with bit position as key and list of tuples with atom index and radius as value. """ fp_generator = self._get_fp_generator() - additional_output = AllChem.AdditionalOutput() + additional_output = AllChem.AdditionalOutput() # type: ignore[attr-defined] additional_output.AllocateBitInfoMap() # using the dense fingerprint here, to get indices after folding _ = fp_generator.GetFingerprint(mol_obj, additionalOutput=additional_output) diff --git a/molpipeline/mol2any/mol2rdkit_phys_chem.py b/molpipeline/mol2any/mol2rdkit_phys_chem.py index aebfc30c..2a8b41cf 100644 --- a/molpipeline/mol2any/mol2rdkit_phys_chem.py +++ b/molpipeline/mol2any/mol2rdkit_phys_chem.py @@ -27,7 +27,7 @@ from molpipeline.utils.molpipeline_types import AnyTransformer, RDKitMol RDKIT_DESCRIPTOR_DICT: dict[str, Callable[[Chem.Mol], float]] -RDKIT_DESCRIPTOR_DICT = dict(Descriptors.descList) +RDKIT_DESCRIPTOR_DICT = dict(Descriptors.descList) # type: ignore[attr-defined] # MolWt is removed as ExactMolWt is already included. # Ipc is removed because it causes trouble with numpy. diff --git a/molpipeline/utils/substructure_handling.py b/molpipeline/utils/substructure_handling.py index 4352a7a1..58a9a367 100644 --- a/molpipeline/utils/substructure_handling.py +++ b/molpipeline/utils/substructure_handling.py @@ -70,6 +70,6 @@ def from_mol( env = Chem.FindAtomEnvironmentOfRadiusN(mol, radius, central_atom_index) amap: dict[int, int] = {} - _ = Chem.PathToSubmol(mol, env, atomMap=amap) + _ = Chem.PathToSubmol(mol, env, atomMap=amap) # type: ignore[call-arg] env_atoms = amap.keys() return CircularAtomEnvironment(central_atom_index, radius, set(env_atoms)) diff --git a/tests/test_estimators/test_leader_picker_clustering.py b/tests/test_estimators/test_leader_picker_clustering.py index d2011ad0..e18f32df 100644 --- a/tests/test_estimators/test_leader_picker_clustering.py +++ b/tests/test_estimators/test_leader_picker_clustering.py @@ -20,7 +20,7 @@ class TestLeaderPickerEstimator(unittest.TestCase): def test_leader_picker_clustering_estimator(self) -> None: """Test LeaderPicker clustering estimator.""" fingerprint_matrix = [ - DataStructs.CreateFromBitString(x) + DataStructs.CreateFromBitString(x) # type: ignore[attr-defined] for x in [ "000", # 0 "100", # 1 diff --git a/tests/test_estimators/test_similarity_transformation.py b/tests/test_estimators/test_similarity_transformation.py index 2af28265..a940e80b 100644 --- a/tests/test_estimators/test_similarity_transformation.py +++ b/tests/test_estimators/test_similarity_transformation.py @@ -8,7 +8,7 @@ import numpy.typing as npt from rdkit import Chem from rdkit.Chem import rdFingerprintGenerator -from rdkit.DataStructs import BulkTanimotoSimilarity +from rdkit.DataStructs import BulkTanimotoSimilarity # type: ignore[attr-defined] from scipy import sparse from sklearn.neighbors import KNeighborsClassifier diff --git a/tests/test_experimental/test_explainability/test_visualization/test_visualization.py b/tests/test_experimental/test_explainability/test_visualization/test_visualization.py index 307e325f..67b63a05 100644 --- a/tests/test_experimental/test_explainability/test_visualization/test_visualization.py +++ b/tests/test_experimental/test_explainability/test_visualization/test_visualization.py @@ -198,15 +198,15 @@ def test_explicit_hydrogens(self) -> None: """ mol_implicit_hydrogens = Chem.MolFromSmiles("C") explanations1 = self.test_tree_explainer_clf.explain( - [Chem.MolToSmiles(mol_implicit_hydrogens)] + [Chem.MolToSmiles(mol_implicit_hydrogens)] # type: ignore[arg-type] ) - mol_added_hydrogens = Chem.AddHs(mol_implicit_hydrogens) + mol_added_hydrogens = Chem.AddHs(mol_implicit_hydrogens) # type: ignore[arg-type] explanations2 = self.test_tree_explainer_clf.explain( - [Chem.MolToSmiles(mol_added_hydrogens)] + [Chem.MolToSmiles(mol_added_hydrogens)] # type: ignore[arg-type] ) mol_explicit_hydrogens = Chem.MolFromSmiles("[H]C([H])([H])[H]") explanations3 = self.test_tree_explainer_clf.explain( - [Chem.MolToSmiles(mol_explicit_hydrogens)] + [Chem.MolToSmiles(mol_explicit_hydrogens)] # type: ignore[arg-type] ) # test explanations' atom weights diff --git a/tests/utils/fingerprints.py b/tests/utils/fingerprints.py index 9a97c36b..8361d640 100644 --- a/tests/utils/fingerprints.py +++ b/tests/utils/fingerprints.py @@ -5,13 +5,18 @@ import numpy as np import numpy.typing as npt from rdkit import Chem -from rdkit.Chem import rdFingerprintGenerator as rdkit_fp -from rdkit.DataStructs import ExplicitBitVect, UIntSparseIntVect +from rdkit.Chem import rdFingerprintGenerator +from rdkit.DataStructs import ( # type: ignore[attr-defined] + ExplicitBitVect, + UIntSparseIntVect, +) from scipy import sparse def make_sparse_fp( - smiles_list: list[str], radius: int, n_bits: int + smiles_list: list[str], + radius: int, + n_bits: int, ) -> sparse.csr_matrix: """Create a sparse Morgan fingerprint matrix from a list of SMILES. @@ -30,9 +35,10 @@ def make_sparse_fp( ------- sparse.csr_matrix Feature matrix. + """ vector_list = [] - morgan_fp = rdkit_fp.GetMorganGenerator(radius=radius, fpSize=n_bits) + morgan_fp = rdFingerprintGenerator.GetMorganGenerator(radius=radius, fpSize=n_bits) for smiles in smiles_list: mol = Chem.MolFromSmiles(smiles) vector = morgan_fp.GetFingerprintAsNumPy(mol)