Newer
Older
if (is_identifier(obj)):
object_id = {
"identifier": obj,
"@type": identifierType
}
else:
object_id = {
"permId": obj,
"@type": permIdType
}
else:
object_id = {
"identifier": obj.identifier,
"@type": identifierType
return object_id
Chandrasekhar Ramakrishnan
committed
@staticmethod
def data_set_to_data_set_id(data_set):
if isinstance(data_set, str):
code = data_set
else:
code = data_set.permId
return {
"permId": code,
"@type": "as.dto.dataset.id.DataSetPermId"
}
def external_data_managment_system_to_dms_id(self, dms):
if isinstance(dms, str):
dms_id = {
"permId": dms,
"@type": "as.dto.externaldms.id.ExternalDmsPermId"
}
else:
dms_id = {
"identifier": dms.code,
"@type": "as.dto.sample.id.SampleIdentifier"
}
return dms_id
def new_sample(self, type, project=None, props=None, **kwargs):
""" Creates a new sample of a given sample type.
if 'collection' in kwargs:
kwargs['experiment'] = kwargs['collection']
kwargs.pop('collection', None)
Swen Vermeul
committed
return Sample(self, type=self.get_sample_type(type), project=project, data=None, props=props, **kwargs)
new_object = new_sample # Alias
def new_dataset(self, type=None, kind='PHYSICAL_DATA', files=None, props=None, folder=None, **kwargs):
""" Creates a new dataset of a given sample type.
"""
type_obj = self.get_dataset_type(type.upper())
if 'object' in kwargs:
kwargs['sample'] = kwargs['object']
kwargs.pop('object', None)
if 'collection' in kwargs:
kwargs['experiment'] = kwargs['collection']
kwargs.pop('collection', None)
return DataSet(self, type=type_obj, kind=kind, files=files, folder=folder, props=props, **kwargs)
def new_semantic_annotation(self, entityType=None, propertyType=None, **kwargs):
""" Note: not functional yet. """
return SemanticAnnotation(
openbis_obj=self, isNew=True,
entityType=entityType, propertyType=propertyType, **kwargs
)
def new_vocabulary(self, code, terms, managedInternally=False, internalNameSpace=False, chosenFromList=True, **kwargs):
""" Creates a new vocabulary
Usage::
new_vocabulary(
code = 'vocabulary_code',
description = '',
terms = [
{ "code": "term1", "label": "label1", "description": "description1" },
{ "code": "term2", "label": "label2", "description": "description2" },
]
)
"""
kwargs['code'] = code
kwargs['managedInternally'] = managedInternally
kwargs['internalNameSpace'] = internalNameSpace
kwargs['chosenFromList'] = chosenFromList
return Vocabulary(self, data=None, terms=terms, **kwargs)
def _get_dss_url(self, dss_code=None):
""" internal method to get the downloadURL of a datastore.
"""
Swen Vermeul
committed
dss = self.get_datastores()
if dss_code is None:
return dss['downloadUrl'][0]
else:
Swen Vermeul
committed
return dss[dss['code'] == dss_code]['downloadUrl'][0]
class LinkedData():
def __init__(self, data=None):
self.data = data if data is not None else []
self.attrs = ['externalCode', 'contentCopies']
def __dir__(self):
return self.attrs
def __getattr__(self, name):
if name in self.attrs:
if name in self.data:
return self.data[name]
else:
return ''
Swen Vermeul
committed
class ExternalDMS():
""" managing openBIS external data management systems
Swen Vermeul
committed
def __init__(self, openbis_obj, data=None, **kwargs):
self.__dict__['openbis'] = openbis_obj
Swen Vermeul
committed
Swen Vermeul
committed
self.__dict__['data'] = data
Swen Vermeul
committed
if kwargs is not None:
for key in kwargs:
setattr(self, key, kwargs[key])
Swen Vermeul
committed
def __getattr__(self, name):
return self.__dict__['data'].get(name)
Swen Vermeul
committed
"""all the available methods and attributes that should be displayed
when using the autocompletion feature (TAB) in Jupyter
"""
return ['code', 'label', 'urlTemplate', 'address', 'addressType', 'openbis']
Swen Vermeul
committed
def __str__(self):
return self.data.get('code', None)
class ServerInformation():
Fuentes Serna Juan Mariano (ID SIS)
committed
def __init__(self, info):
self._info = info
self.attrs = [
'api_version', 'archiving_configured', 'authentication_service',
'enabled_technologies', 'project_samples_enabled'
]
def __dir__(self):
return self.attrs
def __getattr__(self, name):
return self._info.get(name.replace('_', '-'))
Fuentes Serna Juan Mariano (ID SIS)
committed
def get_major_version(self):
return int(self._info["api-version"].split(".")[0]);
def get_minor_version(self):
return int(self._info["api-version"].split(".")[1]);
def is_openbis_1605(self):
return (self.get_major_version() == 3) and (self.get_minor_version() <= 2);
def is_openbis_1806(self):
return (self.get_major_version() == 3) and (self.get_minor_version() >= 5);
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
def _repr_html_(self):
html = """
<table border="1" class="dataframe">
<thead>
<tr style="text-align: right;">
<th>attribute</th>
<th>value</th>
</tr>
</thead>
<tbody>
"""
for attr in self.attrs:
html += "<tr> <td>{}</td> <td>{}</td> </tr>".format(
attr, getattr(self, attr, '')
)
html += """
</tbody>
</table>
"""
return html