Skip to content

Commit 9d65799

Browse files
author
basiekjusz
committed
Implement compound naming
1 parent 944e49c commit 9d65799

2 files changed

Lines changed: 43 additions & 6 deletions

File tree

m1wrapper/m1wrapper.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import requests
1+
import requests, copy
22
from urllib.parse import urljoin
33
from typing import List, Dict
44
from enum import Enum, IntEnum
@@ -82,6 +82,39 @@ def run_batch_search(
8282
name=name
8383
)
8484

85+
def run_batch_search_with_metadata(
86+
self,
87+
targets_with_metadata: List[Dict[str, str]],
88+
parameters: Dict = None,
89+
detail_level = DetailLevel.SCORE,
90+
priority = Priority.NORMAL,
91+
invalid_target_strategy = InvalidTargetStrategy.REJECT ,
92+
starting_materials: List[str] = None,
93+
name = None
94+
) -> BatchSearch:
95+
targets = []
96+
targets_with_metadata_copy = copy.deepcopy(targets_with_metadata)
97+
metadata = {}
98+
for index, item in enumerate(targets_with_metadata_copy):
99+
target = item.pop('smiles', None)
100+
targets.append(target)
101+
102+
if item:
103+
metadata[str(index)] = item
104+
105+
return BatchSearch(
106+
self.api_base_url,
107+
self.request_headers,
108+
targets=targets,
109+
parameters=parameters,
110+
detail_level=detail_level,
111+
priority=int(priority),
112+
invalid_target_strategy=invalid_target_strategy,
113+
starting_materials=starting_materials,
114+
name=name,
115+
metadata=metadata
116+
)
117+
85118
def get_batch_search(self, search_id: str) -> BatchSearch:
86119
search = BatchSearch.from_id(
87120
self.api_base_url,

m1wrapper/search.py

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,8 @@ def __init__(
3636
priority=None,
3737
invalid_target_strategy=None,
3838
starting_materials=None,
39-
name=None
39+
name=None,
40+
metadata=None,
4041
):
4142
self.search_id = search_id
4243
self.base_url = base_url
@@ -50,11 +51,12 @@ def __init__(
5051
priority=priority,
5152
invalid_target_strategy=invalid_target_strategy,
5253
starting_materials=starting_materials,
53-
name=name
54+
name=name,
55+
metadata=metadata
5456
)
5557
self.search_id = new_search['id']
5658

57-
def __prepare_payload(self, targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials, name ) -> dict:
59+
def __prepare_payload(self, targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials, name, metadata) -> dict:
5860
payload = {
5961
'targets': targets,
6062
'parameters': parameters or {},
@@ -66,6 +68,8 @@ def __prepare_payload(self, targets, parameters, detail_level, priority, invalid
6668
payload["starting_materials"] = starting_materials
6769
if name is not None:
6870
payload["name"] = name
71+
if metadata is not None:
72+
payload['metadata'] = metadata
6973

7074
return payload
7175

@@ -83,8 +87,8 @@ def __prepare_http(self):
8387
http.mount("http://", adapter)
8488
return http
8589

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)
90+
def __run(self, targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials, name, metadata):
91+
payload = self.__prepare_payload(targets, parameters, detail_level, priority, invalid_target_strategy, starting_materials, name, metadata)
8892
response = self.http.post(
8993
urljoin(self.base_url, api_search_endpoint),
9094
data=json.dumps(payload),

0 commit comments

Comments
 (0)