A wrap retroapi package for retrosynthesis routes and exploring reaction conditions
Project description
RetroSynthesis API
-
retroapi get predict routes given target molecule.
-
supply plausible value for all predicts.
-
predict conditions base on one reaction.
-
add aync support
-
deploy your backend server with torchserve (if api failed)
install torchserve and other libraries from requirements.txt run download_models.sh run
torchserve --start --foreground --ncs --model-store=mars --models reaxys=reaxys.mar
test server
curl http://127.0.0.1:8080/predictions/reaxys \ (base) --header "Content-Type: application/json" \ --request POST \ --data '{"smiles": ["CC(C)(C)OC(=O)N1CCC(OCCO)CC1"]}'
Install
- using pip
pip install retroapi
Usage
from retroapi import RetroApi, Name2Smiles
token = "" # you may get token first
retro_api = RetroApi(token)
# if you have simles of molecule.
smiles = "COc1cccc(OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)c1"
# else:
chemical_name = "4-Hydroxycoumarin"
name2smiles = Name2Smiles()
smiles = name2smiles.get_smiles(chemical_name)
# check if smiles is valid or not
is_valid_smiles = retro_api.validate_smiles(smiles)
if is_valid_smiles:
routes = retro_api.predict_routes(smiles)
if routes is not None:
# work with routes
pass
# check if chemical is buyable or not
is_buyable = retro_api.check_stock(smiles)
# check reaction conditions
# first you should get product smile
# second you should get reactants smile
products = "COc1cc(C(=O)O)cc(OC)c1OC"
reactants = "C=CC(=O)O.COc1cc(Br)cc(OC)c1OC"
conds = retro_api.process_reaction(product, reactants)
if conds is not None:
# check reaction condition with plausible
pass
Async Usage
from retroapi import RetroApi, Name2Smiles
async def foo():
retro_api = RetroApi(token)
# if you have simles of molecule.
smiles = "COc1cccc(OC(=O)/C=C/c2cc(OC)c(OC)c(OC)c2)c1"
# else:
chemical_name = "4-Hydroxycoumarin"
name2smiles = Name2Smiles()
smiles = await name2smiles.aget_smiles(chemical_name)
# check if smiles is valid or not
is_valid_smiles = await retro_api.avalidate_smiles(smiles)
if is_valid_smiles:
routes = await retro_api.apredict_routes(smiles)
if routes is not None:
# work with routes
pass
# check if chemical is buyable or not
is_buyable = await retro_api.acheck_stock(smiles)
# check reaction conditions
# first you should get product smile
# second you should get reactants smile
products = "COc1cc(C(=O)O)cc(OC)c1OC"
reactants = "C=CC(=O)O.COc1cc(Br)cc(OC)c1OC"
conds = await retro_api.aprocess_reaction(product, reactants)
if conds is not None:
# check reaction condition with plausible
pass
Change log:
2023-12-30 Extract condition recommend code from ASKCOS to notebook for local test.
2023-12-25 Run backend server with torchserve
Add try_times in predict_routes and process_reaction w/ async
routes = await retro_api.apredict_routes(smiles, try_num=20)
Need Token to use this package
It's wrap package for askcos.mit.edu API, so you can get token from website first.
add aync for package
with function name prefix with 'a', for example get_smile -> aget_smile
API Documentation
Class Name2Smiles
- get_smiles
- parameter
- chemical_name: str
- output
- smiles: str
- parameter
Class RetroApi
-
validate_smiles
- parameter
- smiles: str
- output
- true/false
- parameter
-
predict_routes
- parameter
- smiles: str
- output
- routes: list
- parameter
-
process_reaction
- parameter
- product: str
product smiles
- reactants: str
reactants smiles jointed by "." like "C=CC(=O)O.COc1cc(Br)cc(OC)c1OC"
- product: str
- output conditions: list
- parameter
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for retroapi-0.8.10-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6873a0fb5bcff5670f248d8e95459a090aae199956588539daa7205b114b8594 |
|
MD5 | c43710792fe4e50dca0764fff600b96a |
|
BLAKE2b-256 | 1b2a47ad90a3b27a246c36a2de4a28d7d5bfd8d7577b8da17cc7839144337778 |