Commit c82b3634 by Jaime Collado

Updated output predictions and README

parent ba33c58c
# PiRADS API
# BiRADS API
## Compatibilidad
Esta API ha sido desarrollada y probada con la versión de Python 3.9.7.
## Guía de instalación
1. Configuración:
......@@ -7,5 +10,5 @@
2. Crear un entorno virtual: `python3 -m venv /path/to/environment`
3. Activar el entorno virtual: `source /path/to/environment/bin/activate`
4. Instalar las bibliotecas necesarias: `pip install -r /path/to/requirements.txt`
5. Lanzar el servicio: `uvicorn main:app --host <HOST> --port <PORT>`
6. Probar que funciona en http://localhost:PORT/docs
\ No newline at end of file
5. Lanzar el servicio: `python main.py [-h] [--host HOST] [--port PORT]`
6. Probar que funciona accediendo (por defecto) a: http://localhost:8000/docs
\ No newline at end of file
......@@ -14,8 +14,9 @@ database.Base.metadata.create_all(bind=database.engine)
# APP
app = FastAPI()
#app = FastAPI(openapi_url=None) # Disable interactive docs
# CORS middleware
# Allow all CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
......@@ -41,8 +42,16 @@ def _predict(text, model, vectorizer):
X_test = vectorizer.transform([clean_text])
# Predict outputs
labels = [f"PR{i}" for i in range(7)]
probs = model.predict_proba(X_test)
probs = [prob[0][1] for prob in probs]
probs = [
{
"type": label,
"percentage": f"{prob*100:.2f}%"
} for label, prob in zip(labels, probs)
]
return probs
# Methods
......@@ -50,7 +59,7 @@ def _predict(text, model, vectorizer):
def register(user: schemas.UserCreate, db: Session = Depends(dependencies.get_db)):
db_user = crud.get_user(db, username=user.username)
if db_user:
raise HTTPException(status_code=400, detail="Email already registered")
raise HTTPException(status_code=400, detail="Username already registered")
return crud.create_user(db=db, user=user)
@app.post("/token", response_model=schemas.Token)
......
import uvicorn
import argparse
from app import app
if __name__ == '__main__':
uvicorn.run(app, host='0.0.0.0', port=1447, log_level='info')
parser = argparse.ArgumentParser()
parser.add_argument("--host", type=str, required=False, default="0.0.0.0")
parser.add_argument("--port", type=int, required=False, default=8000)
args = parser.parse_args()
uvicorn.run(app, host=args.host, port=args.port, log_level='info')
......@@ -30,7 +30,7 @@ python-multipart==0.0.5
PyYAML==6.0
rfc3986==1.5.0
rsa==4.9
scikit-learn==1.2.1
scikit-learn==1.0.2
scipy==1.10.0
six==1.16.0
sniffio==1.3.0
......
from typing import List, Union
from typing import List, Union, Dict
from pydantic import BaseModel
......@@ -33,4 +33,4 @@ class InputData(BaseModel):
class OutputData(BaseModel):
id: int
prediction: List[float]
\ No newline at end of file
prediction: List[Dict[str, str]]
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment