Skip to content

Commit f5ec02f

Browse files
authored
Merge pull request #5 from moleculemaker/cx/update-data-model
update data model to match front end
2 parents e985951 + 5e624ce commit f5ec02f

File tree

4 files changed

+37
-22
lines changed

4 files changed

+37
-22
lines changed

app/db/queries.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ async def build_conditions(
2020
"protein_name": params.protein_name,
2121
"organism": params.organism,
2222
"gene_name": params.gene_name,
23+
"uniprot_id": params.uniprot_id,
2324
}
2425

2526
for column, values in string_columns.items():

app/models/clean_data.py

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33

44
from pydantic import BaseModel, Field
55

6+
class ECNumberConfidence(BaseModel):
7+
ec_number: str
8+
score: float
9+
610
class CLEANColumn(Enum):
711
predictions_uniprot_annot_id = "predictions_uniprot_annot_id"
812
uniprot_id = "uniprot_id"
@@ -27,7 +31,7 @@ class CLEANDataBase(BaseModel):
2731
None,
2832
description="Unique identifier for the CLEAN predictions record.",
2933
)
30-
uniprot_id: Optional[str] = Field(
34+
uniprot: Optional[str] = Field(
3135
None,
3236
description="Unique identifier for the Uniprot record.",
3337
)
@@ -39,40 +43,37 @@ class CLEANDataBase(BaseModel):
3943
None,
4044
description="Uniprot accession number.",
4145
)
42-
protein_name: Optional[str] = Field(
46+
protein: Optional[str] = Field(
4347
None,
4448
description="Name of the protein associated with the Uniprot record.",
4549
)
4650
organism: Optional[str] = Field(
4751
None,
4852
description= "Name of the organism associated with the Uniprot record.",
4953
)
50-
ncbi_taxid: Optional[int] = Field(
54+
ncbi_tax_id: Optional[int] = Field(
5155
None,
5256
description="NCBI Taxonomy ID for the organism associated with the Uniprot record.",
5357
)
5458
amino_acids: Optional[int] = Field(
5559
None, description= "Length of the amino acid sequence associated with the Uniprot record.",
5660
)
57-
protein_sequence: Optional[str] = Field(
61+
sequence: Optional[str] = Field(
5862
None,
5963
description="Amino acid sequence of the protein associated with the Uniprot record.",
6064
)
61-
enzyme_function: Optional[str] = Field(
65+
function: Optional[str] = Field(
6266
None,
6367
description="Function of the enzyme associated with the Uniprot record.",
6468
)
6569
gene_name: Optional[str] = Field(
6670
None, description="Name of the gene associated with the Uniprot record.",
6771
)
68-
clean_ec_number_array: Optional[List[str]] = Field(
69-
None,
70-
description="List of CLEAN predicted EC numbers associated with the Uniprot record. Each EC number is a string.",
71-
)
72-
clean_ec_confidence_array: Optional[List[float]] = Field(
72+
predicted_ec: Optional[List[ECNumberConfidence]] = Field(
7373
None,
74-
description="List of confidence scores for each CLEAN predicted EC number. Each score is a float.",
74+
description="List of CLEAN predicted EC numbers with associated confidence scores."
7575
)
76+
7677
annot_ec_number_array: Optional[List[str]] = Field(
7778
None,
7879
description="List of annotated EC numbers associated with the Uniprot record. Each EC number is a string.",

app/models/query_params.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,9 @@ class CLEANSearchQueryParams(BaseModel):
3636
gene_name: Optional[List[str]] = Field(
3737
None, description="Gene Name, case-insensitive exact match (multiple values allowed, OR logic)"
3838
)
39+
uniprot_id: Optional[List[str]] = Field(
40+
None, description=""
41+
)
3942
clean_ec_number: Optional[List[str]] = Field(
4043
None, description="CLEAN predicted EC number, exact match or wildcard match using terminal dash (multiple values allowed, OR logic)"
4144
)

app/routers/search.py

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,22 @@ def parse_query_params(
2626
None,
2727
description="Organism Name",
2828
),
29-
protein_name: Optional[List[str]] = Query(
29+
protein: Optional[List[str]] = Query(
3030
None,
3131
description="Protein Name",
3232
),
3333
gene_name: Optional[List[str]] = Query(
3434
None,
3535
description="Gene Name"
3636
),
37-
clean_ec_number: Optional[List[str]] = Query(
37+
ec_number: Optional[List[str]] = Query(
3838
None,
3939
description="CLEAN predicted EC number"
4040
),
41+
uniprot: Optional[List[str]] = Query(
42+
None,
43+
description="Uniprot ID"
44+
),
4145
# Additional filters
4246
clean_ec_confidence: Optional[float] = Query(
4347
None, description="Minimum confidence for CLEAN predicted EC number"
@@ -62,12 +66,13 @@ def parse_query_params(
6266

6367
return CLEANSearchQueryParams(
6468
accession=accession,
65-
protein_name=protein_name,
69+
protein_name=protein,
6670
organism=organism,
6771
gene_name=gene_name,
68-
clean_ec_number=clean_ec_number,
72+
clean_ec_number=ec_number,
6973
clean_ec_confidence = clean_ec_confidence,
7074
sequence_length = sequence_length,
75+
uniprot_id = uniprot,
7176
format=format,
7277
limit=limit,
7378
offset=offset,
@@ -142,18 +147,23 @@ async def get_data(
142147
limit=total_count if total_count < params.limit else params.limit,
143148
data=[CLEANDataBase(
144149
predictions_uniprot_annot_id=record["predictions_uniprot_annot_id"],
145-
uniprot_id=record["uniprot_id"],
150+
uniprot=record["uniprot_id"],
146151
curation_status=record["curation_status"],
147152
accession=record["accession"],
148-
protein_name=record["protein_name"],
153+
protein=record["protein_name"],
149154
organism=record["organism"],
150-
ncbi_taxid=record["ncbi_taxid"],
155+
ncbi_tax_id=record["ncbi_taxid"],
151156
amino_acids=record["amino_acids"],
152-
protein_sequence=record["protein_sequence"],
153-
enzyme_function=record["enzyme_function"],
157+
sequence=record["protein_sequence"],
158+
function=record["enzyme_function"],
154159
gene_name=record["gene_name"],
155-
clean_ec_number_array=record["clean_ec_number_array"],
156-
clean_ec_confidence_array=record["clean_ec_confidence_array"],
160+
predicted_ec=[
161+
{
162+
"ec_number": ec,
163+
"score": conf
164+
}
165+
for ec, conf in zip(record["clean_ec_number_array"], record["clean_ec_confidence_array"])
166+
],
157167
annot_ec_number_array=record["annot_ec_number_array"]
158168
) for record in data],
159169
)

0 commit comments

Comments
 (0)