Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Maint: ebrains datasets, private some properties and methods #444

Merged
merged 2 commits into from
Sep 8, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion siibra/features/dataset/ebrains.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def version_identifier(self):

@property
def version_history(self):
return self._dataset.version_changes
return self._dataset.version_changelog

@property
def url(self):
Expand Down
48 changes: 24 additions & 24 deletions siibra/retrieval/datasets.py
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ def id(self) -> str:
return self._id

@property
def detail(self):
def _detail(self):
if not self._cached_data:
match = re.search(r"([a-f0-9-]+)$", self.id)
instance_id = match.group(1)
Expand All @@ -144,7 +144,7 @@ def detail(self):
@property
def name(self) -> str:
if self._name is None:
self._name = self.detail.get("name")
self._name = self._detail.get("name")
return self._name

@property
Expand All @@ -153,29 +153,29 @@ def urls(self) -> List[EbrainsDatasetUrl]:
{
"url": f if f.startswith("http") else f"https://doi.org/{f}",
}
for f in self.detail.get("kgReference", [])
for f in self._detail.get("kgReference", [])
]

@property
def description(self) -> str:
return self.detail.get("description")
return self._detail.get("description")

@property
def contributors(self) -> List[EbrainsDatasetPerson]:
return self.detail.get("contributors")
return self._detail.get("contributors")

@property
def ebrains_page(self):
return f"https://search.kg.ebrains.eu/instances/{self.id}"

@property
def custodians(self) -> EbrainsDatasetPerson:
return self.detail.get("custodians")
return self._detail.get("custodians")


class EbrainsV3DatasetVersion(EbrainsBaseDataset):
@staticmethod
def parse_person(d: dict) -> EbrainsDatasetPerson:
def _parse_person(d: dict) -> EbrainsDatasetPerson:
assert "https://openminds.ebrains.eu/core/Person" in d.get("type"), "Cannot convert a non person to a person dict!"
_id = d.get("id")
name = f"{d.get('givenName')} {d.get('familyName')}"
Expand All @@ -194,7 +194,7 @@ def __init__(self, id, *, cached_data=None) -> None:
self._cached_data = cached_data

@property
def detail(self):
def _detail(self):
if not self._cached_data:
match = re.search(r"([a-f0-9-]+)$", self._id)
instance_id = match.group(1)
Expand All @@ -214,30 +214,30 @@ def id(self) -> str:

@property
def name(self) -> str:
fullname = self.detail.get("fullName")
fullname = self._detail.get("fullName")
if not fullname:
for dataset in self.is_version_of:
if fullname:
break
fullname = dataset.name
version_id = self.detail.get("versionIdentifier")
version_id = self._detail.get("versionIdentifier")
return f"{fullname} ({version_id})"

@property
def is_version_of(self):
if not hasattr(self, "_is_version_of"):
self._is_version_of = [EbrainsV3Dataset(id=id.get("id")) for id in self.detail.get("isVersionOf", [])]
self._is_version_of = [EbrainsV3Dataset(id=id.get("id")) for id in self._detail.get("isVersionOf", [])]
return self._is_version_of

@property
def urls(self) -> List[EbrainsDatasetUrl]:
return [{
"url": doi.get("identifier", None)
} for doi in self.detail.get("doi", [])]
} for doi in self._detail.get("doi", [])]

@property
def description(self) -> str:
description = self.detail.get("description")
description = self._detail.get("description")
for ds in self.is_version_of:
if description:
break
Expand All @@ -246,7 +246,7 @@ def description(self) -> str:

@property
def contributors(self) -> List[EbrainsDatasetPerson]:
return [EbrainsV3DatasetVersion.parse_person(d) for d in self.detail.get("author", [])]
return [EbrainsV3DatasetVersion._parse_person(d) for d in self._detail.get("author", [])]

@property
def ebrains_page(self) -> str:
Expand All @@ -256,15 +256,15 @@ def ebrains_page(self) -> str:

@property
def custodians(self) -> EbrainsDatasetPerson:
return [EbrainsV3DatasetVersion.parse_person(d) for d in self.detail.get("custodian", [])]
return [EbrainsV3DatasetVersion._parse_person(d) for d in self._detail.get("custodian", [])]

@property
def version_changes(self):
return self.detail.get("versionInnovation", "")
def version_changelog(self):
return self._detail.get("versionInnovation", "")

@property
def version_identifier(self):
return self.detail.get("versionIdentifier", "")
return self._detail.get("versionIdentifier", "")


class EbrainsV3Dataset(EbrainsBaseDataset):
Expand All @@ -281,16 +281,16 @@ def id(self) -> str:

@property
def name(self) -> str:
return self.detail.get("fullName")
return self._detail.get("fullName")

@property
def urls(self) -> List[EbrainsDatasetUrl]:
return [{
"url": doi.get("identifier", None)
} for doi in self.detail.get("doi", [])]
} for doi in self._detail.get("doi", [])]

@property
def detail(self):
def _detail(self):
if not self._cached_data:
match = re.search(r"([a-f0-9-]+)$", self._id)
instance_id = match.group(1)
Expand All @@ -306,7 +306,7 @@ def detail(self):

@property
def description(self) -> str:
return self.detail.get("description", "")
return self._detail.get("description", "")

@property
def contributors(self):
Expand All @@ -327,8 +327,8 @@ def ebrains_page(self) -> str:

@property
def custodians(self) -> EbrainsDatasetPerson:
return [EbrainsV3DatasetVersion.parse_person(d) for d in self.detail.get("custodian", [])]
return [EbrainsV3DatasetVersion._parse_person(d) for d in self._detail.get("custodian", [])]

@property
def version_ids(self) -> List['str']:
return [version.get("id") for version in self.detail.get("versions", [])]
return [version.get("id") for version in self._detail.get("versions", [])]