Skip to content

Commit f8887f5

Browse files
dybekTomasz Dybowskiardcore
authored
Add name parameter to batch search (#7)
* Add name to batch search * Add name to batch search only if name is not None * Update docs Co-authored-by: Tomasz Dybowski <t.dybowski@molecule.one> Co-authored-by: Szymon Piłkowski <s.pilkowski@molecule.one>
1 parent 45d2c5d commit f8887f5

4 files changed

Lines changed: 18 additions & 8 deletions

File tree

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ search = m1wrapper.run_batch_search(
3636
- *priority* (optional): [priority of the batch request](#batch-scoring-priorities)
3737
- *invalid_target_strategy* (optional): if set to `InvalidTargetStrategy.PASS`, targets that cannot be canonized by our SMILES parser won't cause the whole batch request to be rejected. Defaults to `InvalidTargetStrategy.REJECT`.
3838
- *starting_materials* (optional): list of available compounds in SMILES format
39+
- *name* (optional): name of your batch request
3940

4041
### Batch scoring detail level
4142
Detail level determines how much information about each target synthesis you'll get. We define it as a `DetailLevel` enum with two variants:

examples/example.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from m1wrapper import MoleculeOneWrapper, Priority, DetailLevel
1+
from m1wrapper import MoleculeOneWrapper, Priority, DetailLevel, InvalidTargetStrategy
22

33
if __name__ == '__main__':
44
# get your token at https://app.molecule.one/dashboard/user/api-tokens
@@ -14,7 +14,10 @@
1414
'cc', 'O=C(Nc1cc(Nc2nc(-c3cnccc3)ccn2)c(cc1)C)c3ccc(cc3)CN3CCN(CC3)C'],
1515
parameters={'model': 'gat'},
1616
detail_level=DetailLevel.SCORE,
17-
priority=Priority.LOW
17+
priority=Priority.LOW,
18+
invalid_target_strategy=InvalidTargetStrategy.REJECT,
19+
starting_materials=None,
20+
name='API EXAMPLE'
1821
)
1922
print('created search:', search.search_id)
2023

m1wrapper/m1wrapper.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def __prepare_request_headers(self) -> dict:
5050
'User-Agent': f'api-wrapper-python/{wrapper_version}',
5151
'Authorization': f'ApiToken-{api_token_version} {self.api_token}'
5252
}
53-
53+
5454
def list_batch_searches(self):
5555
response = requests.get(
5656
urljoin(self.api_base_url, api_search_endpoint),
@@ -68,6 +68,7 @@ def run_batch_search(
6868
priority = Priority.NORMAL,
6969
invalid_target_strategy = InvalidTargetStrategy.REJECT ,
7070
starting_materials: List[str] = None,
71+
name = None
7172
) -> BatchSearch:
7273
return BatchSearch(
7374
self.api_base_url,
@@ -77,7 +78,8 @@ def run_batch_search(
7778
detail_level=detail_level,
7879
priority=int(priority),
7980
invalid_target_strategy=invalid_target_strategy,
80-
starting_materials=starting_materials
81+
starting_materials=starting_materials,
82+
name=name
8183
)
8284

8385
def get_batch_search(self, search_id: str) -> BatchSearch:

m1wrapper/search.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ def __init__(
3636
priority=None,
3737
invalid_target_strategy=None,
3838
starting_materials=None,
39+
name=None
3940
):
4041
self.search_id = search_id
4142
self.base_url = base_url
@@ -48,11 +49,12 @@ def __init__(
4849
detail_level=detail_level,
4950
priority=priority,
5051
invalid_target_strategy=invalid_target_strategy,
51-
starting_materials=starting_materials
52+
starting_materials=starting_materials,
53+
name=name
5254
)
5355
self.search_id = new_search['id']
5456

55-
def __prepare_payload(self, targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials ) -> dict:
57+
def __prepare_payload(self, targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials, name ) -> dict:
5658
payload = {
5759
'targets': targets,
5860
'parameters': parameters or {},
@@ -62,6 +64,8 @@ def __prepare_payload(self, targets, parameters, detail_level, priority, invalid
6264
}
6365
if starting_materials is not None:
6466
payload["starting_materials"] = starting_materials
67+
if name is not None:
68+
payload["name"] = name
6569

6670
return payload
6771

@@ -79,8 +83,8 @@ def __prepare_http(self):
7983
http.mount("http://", adapter)
8084
return http
8185

82-
def __run(self, targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials):
83-
payload = self.__prepare_payload(targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials)
86+
def __run(self, targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials, name):
87+
payload = self.__prepare_payload(targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials, name)
8488
response = self.http.post(
8589
urljoin(self.base_url, api_search_endpoint),
8690
data=json.dumps(payload),

0 commit comments

Comments
 (0)