Skip to content

Commit 7ffc96a

Browse files
Initialise git with minimal project
1 parent 2d32dae commit 7ffc96a

File tree

4 files changed

+24
-7
lines changed

4 files changed

+24
-7
lines changed

src/include_access_model/datamodel/include_access_model.py

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Auto generated from include_access_model.yaml by pythongen.py version: 0.0.1
2-
# Generation date: 2025-11-10T19:04:46
2+
# Generation date: 2025-11-10T19:22:06
33
# Schema: include-access-model
44
#
55
# id: https://includedcc.org/include-access-model
@@ -103,6 +103,10 @@ class InvestigatorId(RecordId):
103103
pass
104104

105105

106+
class PublicationId(RecordId):
107+
pass
108+
109+
106110
@dataclass(repr=False)
107111
class Record(YAMLRoot):
108112
"""
@@ -170,7 +174,7 @@ class Study(Record):
170174
vbr: Optional[Union[str, VirtualBiorepositoryId]] = None
171175
selection_criteria: Optional[str] = None
172176
website: Optional[Union[str, URI]] = None
173-
publication: Optional[Union[Union[dict, "Publication"], list[Union[dict, "Publication"]]]] = empty_list()
177+
publication: Optional[Union[Union[str, PublicationId], list[Union[str, PublicationId]]]] = empty_list()
174178
acknowledgments: Optional[str] = None
175179
citation_statement: Optional[str] = None
176180

@@ -274,7 +278,7 @@ def __post_init__(self, *_: str, **kwargs: Any):
274278

275279
if not isinstance(self.publication, list):
276280
self.publication = [self.publication] if self.publication is not None else []
277-
self.publication = [v if isinstance(v, Publication) else Publication(**as_dict(v)) for v in self.publication]
281+
self.publication = [v if isinstance(v, PublicationId) else PublicationId(v) for v in self.publication]
278282

279283
if self.acknowledgments is not None and not isinstance(self.acknowledgments, str):
280284
self.acknowledgments = str(self.acknowledgments)
@@ -405,7 +409,7 @@ def __post_init__(self, *_: str, **kwargs: Any):
405409

406410

407411
@dataclass(repr=False)
408-
class Publication(YAMLRoot):
412+
class Publication(Record):
409413
"""
410414
Information about a specific publication.
411415
"""
@@ -416,10 +420,17 @@ class Publication(YAMLRoot):
416420
class_name: ClassVar[str] = "Publication"
417421
class_model_uri: ClassVar[URIRef] = INCLUDEDCC.Publication
418422

423+
id: Union[str, PublicationId] = None
424+
uuid: str = None
419425
bibliographic_reference: Optional[str] = None
420426
website: Optional[Union[str, URI]] = None
421427

422428
def __post_init__(self, *_: str, **kwargs: Any):
429+
if self._is_empty(self.id):
430+
self.MissingRequiredField("id")
431+
if not isinstance(self.id, PublicationId):
432+
self.id = PublicationId(self.id)
433+
423434
if self.bibliographic_reference is not None and not isinstance(self.bibliographic_reference, str):
424435
self.bibliographic_reference = str(self.bibliographic_reference)
425436

@@ -724,7 +735,7 @@ class slots:
724735
model_uri=INCLUDEDCC.clinical_data_source_type, domain=None, range=Union[Union[str, "EnumClinicalDataSourceType"], list[Union[str, "EnumClinicalDataSourceType"]]])
725736

726737
slots.publication = Slot(uri=INCLUDEDCC.publication, name="publication", curie=INCLUDEDCC.curie('publication'),
727-
model_uri=INCLUDEDCC.publication, domain=None, range=Optional[Union[Union[dict, Publication], list[Union[dict, Publication]]]])
738+
model_uri=INCLUDEDCC.publication, domain=None, range=Optional[Union[Union[str, PublicationId], list[Union[str, PublicationId]]]])
728739

729740
slots.expected_number_of_participants = Slot(uri=INCLUDEDCC.expected_number_of_participants, name="expected_number_of_participants", curie=INCLUDEDCC.curie('expected_number_of_participants'),
730741
model_uri=INCLUDEDCC.expected_number_of_participants, domain=None, range=int)

src/include_access_model/datamodel/include_access_model_pydantic.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ class Study(Record):
260260
clinical_data_source_type: list[EnumClinicalDataSourceType] = Field(default=..., title="Clinical Data Source Type", description="""Source(s) of data collected from study participants""", json_schema_extra = { "linkml_meta": {'domain_of': ['Study']} })
261261
data_category: list[EnumDataCategory] = Field(default=..., title="Data Category", description="""General category of data in this Record (e.g. Clinical, Genomics, etc)""", json_schema_extra = { "linkml_meta": {'domain_of': ['Study']} })
262262
website: Optional[str] = Field(default=None, title="Website", description="""Website for the Record.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Study', 'VirtualBiorepository', 'Publication']} })
263-
publication: Optional[list[Publication]] = Field(default=[], title="Publication", description="""Publications associated with this Record.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Study']} })
263+
publication: Optional[list[str]] = Field(default=[], title="Publication", description="""Publications associated with this Record.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Study']} })
264264
expected_number_of_participants: int = Field(default=..., title="Expected Number of Participants", description="""Total expected number of participants to be recruited.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Study']} })
265265
actual_number_of_participants: int = Field(default=..., title="Actual Number of Participants", description="""Total participants included at this time.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Study']} })
266266
acknowledgments: Optional[str] = Field(default=None, title="Acknowledgments", description="""Funding statement and acknowledgments for this study""", json_schema_extra = { "linkml_meta": {'domain_of': ['Study']} })
@@ -317,7 +317,7 @@ class Investigator(Record):
317317
external_id: Optional[list[str]] = Field(default=[], title="External Identifiers", description="""Other identifiers for this entity, eg, from the submitting study or in systems like dbGaP""", json_schema_extra = { "linkml_meta": {'domain_of': ['Record']} })
318318

319319

320-
class Publication(ConfiguredBaseModel):
320+
class Publication(Record):
321321
"""
322322
Information about a specific publication.
323323
"""
@@ -326,6 +326,9 @@ class Publication(ConfiguredBaseModel):
326326

327327
bibliographic_reference: Optional[str] = Field(default=None, title="Bibiliographic Reference", description="""Text use to reference this Record.""", json_schema_extra = { "linkml_meta": {'domain_of': ['DOI', 'Publication']} })
328328
website: Optional[str] = Field(default=None, title="Website", description="""Website for the Record.""", json_schema_extra = { "linkml_meta": {'domain_of': ['Study', 'VirtualBiorepository', 'Publication']} })
329+
uuid: str = Field(default=..., title="UUID", description="""Internally assigned UUID for data management and QC purposes""", json_schema_extra = { "linkml_meta": {'domain_of': ['Record']} })
330+
id: str = Field(default=..., title="ID", description="""INLCUDE Global ID for this record""", json_schema_extra = { "linkml_meta": {'domain_of': ['Record']} })
331+
external_id: Optional[list[str]] = Field(default=[], title="External Identifiers", description="""Other identifiers for this entity, eg, from the submitting study or in systems like dbGaP""", json_schema_extra = { "linkml_meta": {'domain_of': ['Record']} })
329332

330333

331334
# Model rebuild

src/include_access_model/schema/include_access_model.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ classes:
104104
Publication:
105105
title: Publication
106106
description: Information about a specific publication.
107+
is_a: Record
107108
#Could add more here
108109
slots:
109110
- bibliographic_reference

tests/data/valid/Record-000.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
uuid: e9d804b4-9d51-4c82-be25-876839de744e
2+
id: 000

0 commit comments

Comments
 (0)