Skip to content

Commit 391596b

Browse files
committed
creating person
1 parent df64ded commit 391596b

File tree

3 files changed

+52
-3
lines changed

3 files changed

+52
-3
lines changed

bids2openminds/main.py

+50-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from warnings import warn
44

55
import pandas as pd
6+
from nameparser import HumanName
67

78
import openminds.latest.core as omcore
89
import openminds.latest.controlled_terms as controlled_terms
@@ -12,6 +13,53 @@
1213
from .mapping import bids2openminds_instance
1314

1415

16+
def create_openminds_person(full_name):
17+
18+
alternate_names = []
19+
person = HumanName(full_name)
20+
given_name = person.first
21+
family_name = person.last
22+
23+
if person.middle:
24+
alternate_names.append(person.full_name)
25+
26+
if person.nickname:
27+
alternate_names.append(person.nickname)
28+
29+
if not alternate_names:
30+
alternate_names = None
31+
32+
openminds_person = omcore.Person(
33+
alternate_names=alternate_names, given_name=given_name, family_name=family_name)
34+
35+
return openminds_person
36+
37+
38+
def create_persons(dataset_description, collection):
39+
40+
if "Authors" in dataset_description:
41+
person_list = dataset_description["Authors"]
42+
else:
43+
return None
44+
45+
if not (isinstance(person_list, list)):
46+
# handel's only one name
47+
if isinstance(person_list, str):
48+
openminds_person = create_openminds_person(person_list)
49+
collection.add(openminds_person)
50+
return openminds_person
51+
else:
52+
return None
53+
54+
openminds_list = []
55+
for person in person_list:
56+
openminds_person = create_openminds_person(person)
57+
openminds_list.append(openminds_person)
58+
collection.add(openminds_person)
59+
60+
return openminds_list
61+
62+
1563
def create_techniques(layout_df):
1664
suffixs = layout_df["suffix"].unique().tolist()
1765
techniques = []
@@ -56,8 +104,7 @@ def create_dataset_version(bids_layout, dataset_description, layout_df, studied_
56104
else:
57105
digital_identifier = None
58106

59-
# TODO extract person
60-
# author=person_create(dataset_description["Authors"])
107+
authors = create_persons(dataset_description, collection)
61108

62109
if "Acknowledgements" in dataset_description:
63110
other_contribution = dataset_description["Acknowledgements"]
@@ -92,6 +139,7 @@ def create_dataset_version(bids_layout, dataset_description, layout_df, studied_
92139
experimental_approaches=experimental_approaches,
93140
short_name=dataset_description["Name"],
94141
studied_specimens=studied_specimens,
142+
authors=authors,
95143
techniques=techniques,
96144
how_to_cite=how_to_cite,
97145
repository=file_repository,

pyproject.toml

+1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ dependencies = [
66
"openminds >= 0.2.2",
77
"click>=8.1",
88
"pandas",
9+
"nameparser >= 1.1.3"
910
]
1011
requires-python = ">=3.9"
1112
authors = [

test/test_example_datasets_click.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from bids2openminds.converter import convert_click
44
from click.testing import CliRunner
55

6-
(test_data_set, number_of_openminds_files) = ("ds003", 98)
6+
(test_data_set, number_of_openminds_files) = ("ds003", 102)
77

88

99
def test_example_datasets_click():

0 commit comments

Comments
 (0)