nerdd-module 0.3.29__tar.gz → 0.3.31__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/PKG-INFO +3 -2
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/models.py +9 -0
- nerdd_module-0.3.31/nerdd_module/tests/representations.py +129 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module.egg-info/PKG-INFO +3 -2
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/pyproject.toml +1 -1
- nerdd_module-0.3.29/nerdd_module/tests/representations.py +0 -81
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/LICENSE +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/README.md +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/cli.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/configuration.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/default_configuration.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/dict_configuration.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/merged_configuration.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/package_configuration.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/search_yaml_configuration.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/yaml_configuration.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/basic_type_converter.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/converter.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/converter_config.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/mol_converter.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/problem_list_converter.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/representation_converter.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/source_list_converter.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/void_converter.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/depth_first_explorer.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/explorer.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/file_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/gzip_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/inchi_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/list_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/mol_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/reader_config.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/sdf_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/smiles_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/string_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/tar_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/input/zip_reader.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/model/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/model/assign_name_step.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/model/convert_representations_step.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/model/enforce_schema_step.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/model/model.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/model/read_input_step.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/model/simple_model.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/model/write_output_step.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/output/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/output/csv_writer.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/output/file_writer.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/output/iterator_writer.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/output/pandas_writer.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/output/record_list_writer.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/output/sdf_writer.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/output/writer.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/output/writer_config.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/polyfills/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/polyfills/block_logs.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/polyfills/files.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/polyfills/get_entry_points.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/polyfills/literal.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/polyfills/typed_dict.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/polyfills/types.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/polyfills/version.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/check_valid_smiles.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/chembl_structure_pipeline.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/filter_by_element.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/filter_by_weight.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/preprocessing_step.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/remove_stereochemistry.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/sanitize.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/problem.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/py.typed +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/steps/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/steps/map_step.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/steps/output_step.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/steps/step.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/tests/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/tests/checks.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/tests/files.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/tests/models/AtomicMassModel.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/tests/models/MolWeightModel.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/tests/models/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/tests/predictions.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/tests/preprocessing/DummyPreprocessingStep.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/tests/preprocessing/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/util/__init__.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/util/call_with_mappings.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/util/package.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/version.py +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module.egg-info/SOURCES.txt +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module.egg-info/dependency_links.txt +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module.egg-info/requires.txt +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module.egg-info/top_level.txt +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/setup.cfg +0 -0
- {nerdd_module-0.3.29 → nerdd_module-0.3.31}/tests/test_features.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: nerdd-module
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.31
|
|
4
4
|
Summary: Base package to create NERDD modules
|
|
5
5
|
Author-email: Steffen Hirte <steffen.hirte@univie.ac.at>
|
|
6
6
|
Maintainer-email: Steffen Hirte <steffen.hirte@univie.ac.at>
|
|
@@ -87,6 +87,7 @@ Provides-Extra: docs
|
|
|
87
87
|
Requires-Dist: mkdocs; extra == "docs"
|
|
88
88
|
Requires-Dist: mkdocs-material; extra == "docs"
|
|
89
89
|
Requires-Dist: mkdocstrings; extra == "docs"
|
|
90
|
+
Dynamic: license-file
|
|
90
91
|
|
|
91
92
|
# NERDD Module
|
|
92
93
|
|
|
@@ -38,6 +38,14 @@ class Publication(BaseModel):
|
|
|
38
38
|
doi: Optional[str]
|
|
39
39
|
|
|
40
40
|
|
|
41
|
+
class ColorPalette(BaseModel):
|
|
42
|
+
type: Optional[str] = None
|
|
43
|
+
name: Optional[str] = None
|
|
44
|
+
domain: List[str]
|
|
45
|
+
range: List[str]
|
|
46
|
+
unknown: Optional[str] = None
|
|
47
|
+
|
|
48
|
+
|
|
41
49
|
class JobParameterChoice(BaseModel):
|
|
42
50
|
value: str
|
|
43
51
|
label: Optional[str] = None
|
|
@@ -82,6 +90,7 @@ class ResultProperty(BaseModel):
|
|
|
82
90
|
from_property: Optional[str] = None
|
|
83
91
|
image_width: Optional[int] = None
|
|
84
92
|
image_height: Optional[int] = None
|
|
93
|
+
color_palette: Optional[ColorPalette] = None
|
|
85
94
|
|
|
86
95
|
def is_visible(self, output_format: str) -> bool:
|
|
87
96
|
formats = self.formats
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import numpy as np
|
|
2
|
+
from hypothesis import given as hgiven
|
|
3
|
+
from hypothesis import seed, settings
|
|
4
|
+
from hypothesis import strategies as st
|
|
5
|
+
from hypothesis_rdkit import mols
|
|
6
|
+
from pytest_bdd import given, parsers
|
|
7
|
+
from rdkit.Chem import MolToInchi, MolToMolBlock, MolToSmiles
|
|
8
|
+
from ..polyfills import BlockLogs
|
|
9
|
+
from rdkit.Chem.rdMolDescriptors import CalcExactMolWt
|
|
10
|
+
import re
|
|
11
|
+
from functools import reduce
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
@given(parsers.parse("a random seed set to {seed:d}"), target_fixture="random_seed")
|
|
15
|
+
def random_seed(seed):
|
|
16
|
+
return seed
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@given(
|
|
20
|
+
parsers.parse("an input molecule specified by '{input}'"),
|
|
21
|
+
target_fixture="representations",
|
|
22
|
+
)
|
|
23
|
+
def representations_from_input(input):
|
|
24
|
+
return [input]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@given(
|
|
28
|
+
parsers.parse("the representations of the molecules in {input_type} format"),
|
|
29
|
+
target_fixture="representations",
|
|
30
|
+
)
|
|
31
|
+
def representations_from_molecules(molecules, input_type):
|
|
32
|
+
input_type = input_type.lower()
|
|
33
|
+
|
|
34
|
+
if input_type == "smiles":
|
|
35
|
+
converter = MolToSmiles
|
|
36
|
+
elif input_type == "mol_block":
|
|
37
|
+
converter = MolToMolBlock
|
|
38
|
+
elif input_type == "inchi":
|
|
39
|
+
converter = MolToInchi
|
|
40
|
+
elif input_type == "rdkit_mol":
|
|
41
|
+
converter = lambda mol: mol
|
|
42
|
+
else:
|
|
43
|
+
raise ValueError(f"Unknown input_type: {input_type}")
|
|
44
|
+
|
|
45
|
+
with BlockLogs():
|
|
46
|
+
result = [converter(mol) if mol is not None else None for mol in molecules]
|
|
47
|
+
|
|
48
|
+
return result
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@given(
|
|
52
|
+
parsers.re(
|
|
53
|
+
r"a list of (?P<num>\d+) random molecules(?:, where(?P<conditions>[\s\S]*))?"
|
|
54
|
+
),
|
|
55
|
+
target_fixture="molecules",
|
|
56
|
+
)
|
|
57
|
+
def molecules(num, conditions, random_seed=0):
|
|
58
|
+
num = int(num)
|
|
59
|
+
|
|
60
|
+
filters = []
|
|
61
|
+
maps = []
|
|
62
|
+
|
|
63
|
+
if conditions is not None:
|
|
64
|
+
def filter_weight(min_weight, max_weight):
|
|
65
|
+
min_weight = float(min_weight)
|
|
66
|
+
max_weight = float(max_weight)
|
|
67
|
+
return lambda mol: (min_weight <= CalcExactMolWt(mol) <= max_weight)
|
|
68
|
+
|
|
69
|
+
def map_to_none(num_none):
|
|
70
|
+
num_none = int(num_none)
|
|
71
|
+
|
|
72
|
+
# draw indices of molecules that should be set to None
|
|
73
|
+
indices = np.random.choice(num, num_none, replace=False)
|
|
74
|
+
|
|
75
|
+
return lambda ms: [m if i not in indices else None for i, m in enumerate(ms)]
|
|
76
|
+
|
|
77
|
+
expressions = [
|
|
78
|
+
# filters are functions that return True if the molecule should be kept
|
|
79
|
+
("filter", r"each mol has a weight between (?P<min_weight>\d+) and (?P<max_weight>\d+)", filter_weight),
|
|
80
|
+
# maps are functions that modify the molecule
|
|
81
|
+
("map", r"(?P<num_none>\d+) entries are None", map_to_none)
|
|
82
|
+
]
|
|
83
|
+
|
|
84
|
+
conditions_list = [c for c in conditions.split("\n") if c.strip() != ""]
|
|
85
|
+
|
|
86
|
+
for condition in conditions_list:
|
|
87
|
+
for kind, expression, f in expressions:
|
|
88
|
+
# conditions might be a markdown list (starting with a star character)
|
|
89
|
+
expression = r"\s*(\*\s*)?" + expression + r"\s*"
|
|
90
|
+
|
|
91
|
+
match = re.match(expression, condition)
|
|
92
|
+
if match:
|
|
93
|
+
params = match.groupdict()
|
|
94
|
+
break
|
|
95
|
+
|
|
96
|
+
assert match is not None, f"Could not parse condition: {condition}"
|
|
97
|
+
|
|
98
|
+
if kind == "filter":
|
|
99
|
+
filters.append(f(**params))
|
|
100
|
+
elif kind == "map":
|
|
101
|
+
maps.append(f(**params))
|
|
102
|
+
else:
|
|
103
|
+
raise ValueError(f"Unknown kind: {kind}")
|
|
104
|
+
|
|
105
|
+
filter_func = lambda mol: all(f(mol) for f in filters)
|
|
106
|
+
map_func = lambda ms: reduce(lambda ms, f: f(ms), maps, ms)
|
|
107
|
+
|
|
108
|
+
result = None
|
|
109
|
+
|
|
110
|
+
# pytest-bdd and hypothesis don't play well together (yet)
|
|
111
|
+
# --> use this workaround to generate random molecules
|
|
112
|
+
@hgiven(st.lists(mols().filter(filter_func), min_size=num, max_size=num, unique_by=MolToSmiles))
|
|
113
|
+
@settings(max_examples=1, deadline=None)
|
|
114
|
+
@seed(random_seed)
|
|
115
|
+
def generate(ms):
|
|
116
|
+
nonlocal result
|
|
117
|
+
result = ms
|
|
118
|
+
|
|
119
|
+
generate()
|
|
120
|
+
|
|
121
|
+
# apply maps
|
|
122
|
+
result = map_func(result)
|
|
123
|
+
|
|
124
|
+
for m in result:
|
|
125
|
+
if m is None:
|
|
126
|
+
continue
|
|
127
|
+
m.SetProp("_Name", "mol")
|
|
128
|
+
|
|
129
|
+
return result
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: nerdd-module
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.31
|
|
4
4
|
Summary: Base package to create NERDD modules
|
|
5
5
|
Author-email: Steffen Hirte <steffen.hirte@univie.ac.at>
|
|
6
6
|
Maintainer-email: Steffen Hirte <steffen.hirte@univie.ac.at>
|
|
@@ -87,6 +87,7 @@ Provides-Extra: docs
|
|
|
87
87
|
Requires-Dist: mkdocs; extra == "docs"
|
|
88
88
|
Requires-Dist: mkdocs-material; extra == "docs"
|
|
89
89
|
Requires-Dist: mkdocstrings; extra == "docs"
|
|
90
|
+
Dynamic: license-file
|
|
90
91
|
|
|
91
92
|
# NERDD Module
|
|
92
93
|
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import numpy as np
|
|
2
|
-
from hypothesis import given as hgiven
|
|
3
|
-
from hypothesis import seed, settings
|
|
4
|
-
from hypothesis import strategies as st
|
|
5
|
-
# TODO: remove "type: ignore" later
|
|
6
|
-
from hypothesis_rdkit import mols # type: ignore
|
|
7
|
-
from pytest_bdd import given, parsers
|
|
8
|
-
from rdkit.Chem import MolToInchi, MolToMolBlock, MolToSmiles
|
|
9
|
-
from ..polyfills import BlockLogs
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
@given(parsers.parse("a random seed set to {seed:d}"), target_fixture="random_seed")
|
|
13
|
-
def random_seed(seed):
|
|
14
|
-
return seed
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
@given(
|
|
18
|
-
parsers.parse("an input molecule specified by '{input}'"),
|
|
19
|
-
target_fixture="representations",
|
|
20
|
-
)
|
|
21
|
-
def representations_from_input(input):
|
|
22
|
-
return [input]
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
@given(
|
|
26
|
-
parsers.parse("the representations of the molecules in {input_type} format"),
|
|
27
|
-
target_fixture="representations",
|
|
28
|
-
)
|
|
29
|
-
def representations_from_molecules(molecules, input_type):
|
|
30
|
-
input_type = input_type.lower()
|
|
31
|
-
|
|
32
|
-
if input_type == "smiles":
|
|
33
|
-
converter = MolToSmiles
|
|
34
|
-
elif input_type == "mol_block":
|
|
35
|
-
converter = MolToMolBlock
|
|
36
|
-
elif input_type == "inchi":
|
|
37
|
-
converter = MolToInchi
|
|
38
|
-
elif input_type == "rdkit_mol":
|
|
39
|
-
converter = lambda mol: mol
|
|
40
|
-
else:
|
|
41
|
-
raise ValueError(f"Unknown input_type: {input_type}")
|
|
42
|
-
|
|
43
|
-
with BlockLogs():
|
|
44
|
-
result = [converter(mol) if mol is not None else None for mol in molecules]
|
|
45
|
-
|
|
46
|
-
return result
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
@given(
|
|
50
|
-
parsers.re(
|
|
51
|
-
r"a list of (?P<num>\d+) random molecules(?:, where (?P<num_none>\d+) entries are None)?"
|
|
52
|
-
),
|
|
53
|
-
target_fixture="molecules",
|
|
54
|
-
)
|
|
55
|
-
def molecules_with_none(num, num_none=None, random_seed=0):
|
|
56
|
-
num = int(num)
|
|
57
|
-
num_none = int(num_none) if num_none is not None else 0
|
|
58
|
-
result = None
|
|
59
|
-
|
|
60
|
-
# pytest-bdd and hypothesis don't play well together (yet)
|
|
61
|
-
# --> use this workaround to generate random molecules
|
|
62
|
-
@hgiven(st.lists(mols(), min_size=num, max_size=num, unique_by=MolToSmiles))
|
|
63
|
-
@settings(max_examples=1, deadline=None)
|
|
64
|
-
@seed(random_seed)
|
|
65
|
-
def generate(ms):
|
|
66
|
-
nonlocal result
|
|
67
|
-
result = ms
|
|
68
|
-
|
|
69
|
-
generate()
|
|
70
|
-
|
|
71
|
-
for m in result:
|
|
72
|
-
if m is None:
|
|
73
|
-
continue
|
|
74
|
-
m.SetProp("_Name", "mol")
|
|
75
|
-
|
|
76
|
-
# replace random entries with None
|
|
77
|
-
indices = np.random.choice(num, num_none, replace=False)
|
|
78
|
-
for i in indices:
|
|
79
|
-
result[i] = None
|
|
80
|
-
|
|
81
|
-
return result
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/config/search_yaml_configuration.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/problem_list_converter.py
RENAMED
|
File without changes
|
{nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/representation_converter.py
RENAMED
|
File without changes
|
{nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/converters/source_list_converter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/model/convert_representations_step.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/check_valid_smiles.py
RENAMED
|
File without changes
|
{nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/chembl_structure_pipeline.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/preprocessing_step.py
RENAMED
|
File without changes
|
{nerdd_module-0.3.29 → nerdd_module-0.3.31}/nerdd_module/preprocessing/remove_stereochemistry.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|