Skip to content

Commit 5800bbe

Browse files
committed
Update nimads model
1 parent ecf7a4c commit 5800bbe

1 file changed

Lines changed: 17 additions & 9 deletions

File tree

autonima/coordinates/nimads_models.py

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,10 +28,12 @@ class Point:
2828
label_id: Optional[str] = None
2929
values: List[PointValue] = field(default_factory=list)
3030
analysis_id: Optional[str] = None
31+
id: Optional[str] = None
3132

3233
def to_dict(self) -> dict:
3334
"""Convert to dictionary representation."""
3435
return {
36+
"id": self.id,
3537
"coordinates": self.coordinates,
3638
"space": self.space,
3739
"kind": self.kind,
@@ -155,7 +157,7 @@ def to_dict(self) -> dict:
155157
}
156158

157159

158-
def convert_to_nimads_point(analysis_id: str, point: CoordinatePoint, study_space: Optional[str] = None) -> Point:
160+
def convert_to_nimads_point(analysis_id: str, point: CoordinatePoint, study_space: Optional[str] = None, point_id: Optional[str] = None) -> Point:
159161
"""Convert a coordinate point to a NiMADS point."""
160162
# Sanitize the coordinate space
161163
sanitized_space = sanitize_coordinate_space(point.space, study_space)
@@ -166,7 +168,8 @@ def convert_to_nimads_point(analysis_id: str, point: CoordinatePoint, study_spac
166168
nimads_point = Point(
167169
coordinates=sanitized_coordinates,
168170
space=sanitized_space,
169-
analysis_id=analysis_id
171+
analysis_id=analysis_id,
172+
id=point_id
170173
)
171174

172175
# Convert point values if they exist
@@ -193,8 +196,9 @@ def convert_to_nimads_analysis(analysis_id: str, analysis: Analysis, study_id: s
193196
)
194197

195198
# Convert points
196-
for point in analysis.points:
197-
nimads_point = convert_to_nimads_point(analysis_id, point, study_space)
199+
for i, point in enumerate(analysis.points):
200+
point_id = f"{analysis_id}_point_{i}"
201+
nimads_point = convert_to_nimads_point(analysis_id, point, study_space, point_id)
198202
nimads_analysis.points.append(nimads_point)
199203

200204
return nimads_analysis
@@ -211,8 +215,11 @@ def convert_to_nimads_study(study_id: str, autonima_study: 'autonima.models.type
211215
except (ValueError, IndexError):
212216
pass
213217

218+
# Use the study's PMID as the study_id if available
219+
nimads_study_id = autonima_study.pmid if autonima_study.pmid else study_id
220+
214221
nimads_study = Study(
215-
id=study_id,
222+
id=nimads_study_id,
216223
doi=autonima_study.doi,
217224
name=autonima_study.title,
218225
description=autonima_study.abstract,
@@ -227,8 +234,8 @@ def convert_to_nimads_study(study_id: str, autonima_study: 'autonima.models.type
227234

228235
# Convert analyses
229236
for i, analysis in enumerate(autonima_study.analyses):
230-
analysis_id = f"{study_id}_analysis_{i}"
231-
nimads_analysis = convert_to_nimads_analysis(analysis_id, analysis, study_id, study_space)
237+
analysis_id = f"{nimads_study_id}_analysis_{i}"
238+
nimads_analysis = convert_to_nimads_analysis(analysis_id, analysis, nimads_study_id, study_space)
232239
nimads_study.analyses.append(nimads_analysis)
233240

234241
return nimads_study
@@ -282,8 +289,9 @@ def convert_to_nimads_studyset(studyset_id: str, studies: List['autonima.models.
282289
)
283290

284291
# Convert studies
285-
for i, study in enumerate(studies):
286-
study_id = f"study_{i}"
292+
for study in studies:
293+
# Use the study's PMID as the study_id if available, otherwise generate one
294+
study_id = study.pmid if study.pmid else f"study_{len(studyset.studies)}"
287295
nimads_study = convert_to_nimads_study(study_id, study)
288296
studyset.studies.append(nimads_study)
289297

0 commit comments

Comments
 (0)