From 98b6547c2c1610db10b21f534a621e0a7cf63b81 Mon Sep 17 00:00:00 2001 From: Kohulan Date: Tue, 14 Mar 2023 09:03:33 +0100 Subject: [PATCH] feat: selfies encoding and decoding --- app/routers/chem.py | 20 ++++++++++++++++++-- requirements.txt | 3 ++- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/app/routers/chem.py b/app/routers/chem.py index c223fd0..62333ad 100644 --- a/app/routers/chem.py +++ b/app/routers/chem.py @@ -1,7 +1,9 @@ +import os +import requests from fastapi import Request, APIRouter from typing import Optional from rdkit import Chem -import requests + from urllib.request import urlopen from urllib.parse import urlsplit @@ -10,11 +12,11 @@ from rdkit.Chem.EnumerateStereoisomers import ( EnumerateStereoisomers, ) -import os from chembl_structure_pipeline import standardizer from fastapi.responses import Response, JSONResponse from rdkit.Chem.Scaffolds import MurckoScaffold from STOUT import translate_forward, translate_reverse +import selfies as sf from app.modules.npscorer import getnp_score from app.modules.descriptor_calculator import GetBasicDescriptors from app.modules.classyfire import classify, result @@ -129,6 +131,20 @@ async def nplikeliness_score(smiles: Optional[str]): return np_score +@router.get("/{smiles}/selfies") +async def encodeselfies(smiles: Optional[str]): + if smiles: + selfies_e = sf.encoder(smiles) + return selfies_e + + +@router.get("/{selfies}/smiles") +async def decodeselfies(selfies: Optional[str]): + if selfies: + selfies_d = sf.encoder(selfies) + return selfies_d + + @router.get("/classyfire/{smiles}/classify") async def classyfire_classify(smiles: Optional[str]): if smiles: diff --git a/requirements.txt b/requirements.txt index b81c436..4375314 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,4 +16,5 @@ pystow>=0.4.9 unicodedata2==15.0.0 efficientnet tensorflow==2.10.0 -pyheif==0.7.1 \ No newline at end of file +pyheif==0.7.1 +selfies>=2.1.1 \ No newline at end of file