Skip to content

Commit 2212a0f

Browse files
feat: added orcid and invesigator name now pid name (#807)
* feat: added orcid and invesigator name now pid name * feat:fixed format and updated examples --------- Co-authored-by: jtyoung84 <[email protected]>
1 parent 3859bbe commit 2212a0f

File tree

5 files changed

+34
-18
lines changed

5 files changed

+34
-18
lines changed

examples/data_description.json

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,12 @@
3737
"data_level": "raw",
3838
"group": null,
3939
"investigators": [
40-
"Jane Smith"
40+
{
41+
"name": "Jane Smith",
42+
"abbreviation": null,
43+
"registry": null,
44+
"registry_identifier": null
45+
}
4146
],
4247
"project_name": null,
4348
"restrictions": null,

examples/data_description.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
from aind_data_schema.core.data_description import Funding, RawDataDescription
55
from aind_data_schema.models.modalities import Modality
66
from aind_data_schema.models.organizations import Organization
7+
from aind_data_schema.models.pid_names import PIDName
78
from aind_data_schema.models.platforms import Platform
89

910
d = RawDataDescription(
@@ -12,7 +13,7 @@
1213
subject_id="12345",
1314
creation_time=datetime(2022, 2, 21, 16, 30, 1),
1415
institution=Organization.AIND,
15-
investigators=["Jane Smith"],
16+
investigators=[PIDName(name="Jane Smith")],
1617
funding_source=[Funding(funder=Organization.AI)],
1718
)
1819

src/aind_data_schema/core/data_description.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
from aind_data_schema.base import AindCoreModel, AindModel
1111
from aind_data_schema.models.modalities import Modality
1212
from aind_data_schema.models.organizations import Organization
13+
from aind_data_schema.models.pid_names import PIDName
1314
from aind_data_schema.models.platforms import Platform
1415

1516

@@ -147,7 +148,7 @@ class DataDescription(AindCoreModel):
147148
description="A short name for the group of individuals that collected this data",
148149
title="Group",
149150
)
150-
investigators: List[str] = Field(
151+
investigators: List[PIDName] = Field(
151152
...,
152153
description="Full name(s) of key investigators (e.g. PI, lead scientist, contact person)",
153154
title="Investigators",

src/aind_data_schema/models/registry.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,13 +48,21 @@ class NationalCenterForBiotechnologyInformation(_Registry):
4848
abbreviation: Literal["NCBI"] = "NCBI"
4949

5050

51+
class OpenResearcherAndContributorID(_Registry):
52+
"""NationalCenterForBiotechnologyInformation"""
53+
54+
name: Literal["Open Researcher and Contributor ID"] = "Open Researcher and Contributor ID"
55+
abbreviation: Literal["ORCID"] = "ORCID"
56+
57+
5158
class Registry:
5259
"""Registry definitions"""
5360

5461
ADDGENE = Addgene()
5562
ROR = ResearchOrganizationRegistry()
5663
MGI = MouseGenomeInformatics()
5764
NCBI = NationalCenterForBiotechnologyInformation()
65+
ORCID = OpenResearcherAndContributorID()
5866
RRID = ResearchResourceIdentifiers()
5967

6068
_ALL = tuple(_Registry.__subclasses__())

tests/test_data_description.py

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
)
2323
from aind_data_schema.models.modalities import Modality
2424
from aind_data_schema.models.organizations import Organization
25+
from aind_data_schema.models.pid_names import PIDName
2526
from aind_data_schema.models.platforms import Platform
2627

2728
DATA_DESCRIPTION_FILES_PATH = Path(__file__).parent / "resources" / "ephys_data_description"
@@ -60,7 +61,7 @@ def test_constructors(self):
6061
modality=[Modality.ECEPHYS],
6162
platform=Platform.ECEPHYS,
6263
subject_id="12345",
63-
investigators=["Jane Smith"],
64+
investigators=[PIDName(name="Jane Smith")],
6465
)
6566

6667
r1 = DerivedDataDescription(
@@ -72,7 +73,7 @@ def test_constructors(self):
7273
modality=da.modality,
7374
platform=da.platform,
7475
subject_id=da.subject_id,
75-
investigators=["Jane Smith"],
76+
investigators=[PIDName(name="Jane Smith")],
7677
)
7778

7879
r2 = DerivedDataDescription(
@@ -84,7 +85,7 @@ def test_constructors(self):
8485
modality=r1.modality,
8586
platform=r1.platform,
8687
subject_id="12345",
87-
investigators=["Jane Smith"],
88+
investigators=[PIDName(name="Jane Smith")],
8889
)
8990

9091
r3 = DerivedDataDescription(
@@ -96,7 +97,7 @@ def test_constructors(self):
9697
modality=r2.modality,
9798
platform=r2.platform,
9899
subject_id="12345",
99-
investigators=["Jane Smith"],
100+
investigators=[PIDName(name="Jane Smith")],
100101
)
101102
assert r3 is not None
102103

@@ -109,7 +110,7 @@ def test_constructors(self):
109110
creation_time=dt,
110111
institution=Organization.AIND,
111112
funding_source=[f],
112-
investigators=["Jane Smith"],
113+
investigators=[PIDName(name="Jane Smith")],
113114
)
114115

115116
assert dd is not None
@@ -125,7 +126,7 @@ def test_constructors(self):
125126
creation_time=dt,
126127
institution=Organization.AIND,
127128
funding_source=[f],
128-
investigators=["Jane Smith"],
129+
investigators=[PIDName(name="Jane Smith")],
129130
)
130131

131132
ad = AnalysisDescription(
@@ -137,7 +138,7 @@ def test_constructors(self):
137138
platform=Platform.EXASPIM,
138139
institution=Organization.AIND,
139140
funding_source=[f],
140-
investigators=["Jane Smith"],
141+
investigators=[PIDName(name="Jane Smith")],
141142
)
142143
self.assertEqual(ad.name, build_data_name("project_analysis", dt))
143144

@@ -151,7 +152,7 @@ def test_constructors(self):
151152
creation_time=dt,
152153
institution=Organization.AIND,
153154
funding_source=[f],
154-
investigators=["Jane Smith"],
155+
investigators=[PIDName(name="Jane Smith")],
155156
)
156157

157158
with self.assertRaises(ValueError):
@@ -185,7 +186,7 @@ def test_constructors(self):
185186
creation_time=dt,
186187
institution=Organization.AIND,
187188
funding_source=[f],
188-
investigators=["Jane Smith"],
189+
investigators=[PIDName(name="Jane Smith")],
189190
)
190191

191192
with self.assertRaises(ValueError):
@@ -198,7 +199,7 @@ def test_constructors(self):
198199
creation_time=dt,
199200
institution=Organization.AIND,
200201
funding_source=[f],
201-
investigators=["Jane Smith"],
202+
investigators=[PIDName(name="Jane Smith")],
202203
)
203204

204205
def test_pattern_errors(self):
@@ -214,7 +215,7 @@ def test_pattern_errors(self):
214215
creation_time=datetime.datetime(2020, 10, 10, 10, 10, 10),
215216
institution=Organization.AIND,
216217
funding_source=[Funding(funder=Organization.NINDS, grant_number="grant001")],
217-
investigators=["Jane Smith"],
218+
investigators=[PIDName(name="Jane Smith")],
218219
)
219220
expected_exception = (
220221
"1 validation error for DataDescription\n"
@@ -278,7 +279,7 @@ def test_name_label_error(self):
278279
creation_time=datetime.datetime(2020, 10, 10, 10, 10, 10),
279280
institution=Organization.AIND,
280281
funding_source=[Funding(funder=Organization.NINDS, grant_number="grant001")],
281-
investigators=["Jane Smith"],
282+
investigators=[PIDName(name="Jane Smith")],
282283
)
283284
self.assertTrue("Value error, Either label or name must be set" in repr(e.exception))
284285

@@ -295,7 +296,7 @@ def test_round_trip(self):
295296
modality=[Modality.SPIM],
296297
platform=Platform.EXASPIM,
297298
subject_id="12345",
298-
investigators=["Jane Smith"],
299+
investigators=[PIDName(name="Jane Smith")],
299300
)
300301

301302
da2 = RawDataDescription.model_validate_json(da1.model_dump_json())
@@ -355,7 +356,7 @@ def test_from_data_description(self):
355356
creation_time=datetime.datetime(2020, 10, 10, 10, 10, 10),
356357
institution=Organization.AIND,
357358
funding_source=[Funding(funder=Organization.NINDS, grant_number="grant001")],
358-
investigators=["Jane Smith"],
359+
investigators=[PIDName(name="Jane Smith")],
359360
)
360361

361362
process_name = "spikesorter"
@@ -377,7 +378,7 @@ def test_derived_data_description_build_name(self):
377378
modality=[Modality.ECEPHYS],
378379
platform=Platform.ECEPHYS,
379380
subject_id="12345",
380-
investigators=["Jane Smith"],
381+
investigators=[PIDName(name="Jane Smith")],
381382
)
382383
self.assertEqual("input_2020-10-10_10-10-10", dd.name)
383384

0 commit comments

Comments
 (0)