Newer
Older
if data is not None:
self.a(data)
self.__dict__['data'] = data
if kwargs is not None:
for key in kwargs:
setattr(self, key, kwargs[key])
def __dir__(self):
"""all the available methods and attributes that should be displayed
when using the autocompletion feature (TAB) in Jupyter
"""
return ['code', 'permId', 'identifier', 'description', 'space', 'registrator',
'registrationDate', 'modifier', 'modificationDate', 'add_attachment()',
'get_attachments()', 'download_attachments()',
'get_experiments()', 'get_samples()', 'get_datasets()',
Swen Vermeul
committed
'save()', 'delete()'
def get_samples(self, **kwargs):
return self.openbis.get_samples(project=self.permId, **kwargs)
def get_sample(self, sample_code):
if is_identifier(sample_code) or is_permid(sample_code):
return self.openbis.get_sample(sample_code)
else:
# we assume we just got the code
return self.openbis.get_sample(project=self, code=sample_code)
get_objects = get_samples # Alias
def get_experiments(self):
return self.openbis.get_experiments(project=self.permId)
def get_datasets(self):
return self.openbis.get_datasets(project=self.permId)
def delete(self, reason):
self.openbis.delete_entity(entity='Project', id=self.permId, reason=reason)
if VERBOSE: print("Project {} successfully deleted.".format(self.permId))
if self.is_new:
request = self._new_attrs()
resp = self.openbis._post_request(self.openbis.as_v3, request)
if VERBOSE: print("Project successfully created.")
new_project_data = self.openbis.get_project(resp[0]['permId'], only_data=True)
self._set_data(new_project_data)
return self
request = self._up_attrs()
self.openbis._post_request(self.openbis.as_v3, request)
if VERBOSE: print("Project successfully updated.")
class SemanticAnnotation():
def __init__(self, openbis_obj, isNew=True, **kwargs):
self._openbis = openbis_obj
self._isNew = isNew;
self.permId = kwargs.get('permId')
self.entityType = kwargs.get('entityType')
self.propertyType = kwargs.get('propertyType')
self.predicateOntologyId = kwargs.get('predicateOntologyId')
self.predicateOntologyVersion = kwargs.get('predicateOntologyVersion')
self.predicateAccessionId = kwargs.get('predicateAccessionId')
self.descriptorOntologyId = kwargs.get('descriptorOntologyId')
self.descriptorOntologyVersion = kwargs.get('descriptorOntologyVersion')
self.descriptorAccessionId = kwargs.get('descriptorAccessionId')
self.creationDate = kwargs.get('creationDate')
def __dir__(self):
return [
'permId', 'entityType', 'propertyType',
'predicateOntologyId', 'predicateOntologyVersion',
'predicateAccessionId', 'descriptorOntologyId',
'descriptorOntologyVersion', 'descriptorAccessionId',
'creationDate',
'save()', 'delete()'
]
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
def save(self):
if self._isNew:
self._create()
else:
self._update()
def _create(self):
creation = {
"@type": "as.dto.semanticannotation.create.SemanticAnnotationCreation"
}
if self.entityType is not None and self.propertyType is not None:
creation["propertyAssignmentId"] = {
"@type": "as.dto.property.id.PropertyAssignmentPermId",
"entityTypeId" : {
"@type": "as.dto.entitytype.id.EntityTypePermId",
"permId" : self.entityType,
"entityKind" : "SAMPLE"
},
"propertyTypeId" : {
"@type" : "as.dto.property.id.PropertyTypePermId",
"permId" : self.propertyType
}
}
elif self.entityType is not None:
creation["entityTypeId"] = {
"@type": "as.dto.entitytype.id.EntityTypePermId",
"permId" : self.entityType,
"entityKind" : "SAMPLE"
}
elif self.propertyType is not None:
creation["propertyTypeId"] = {
"@type" : "as.dto.property.id.PropertyTypePermId",
"permId" : self.propertyType
}
for attr in ['predicateOntologyId', 'predicateOntologyVersion', 'predicateAccessionId', 'descriptorOntologyId', 'descriptorOntologyVersion', 'descriptorAccessionId']:
creation[attr] = getattr(self, attr)
request = {
"method": "createSemanticAnnotations",
"params": [
self._openbis.token,
[creation]
]
}
self._openbis._post_request(self._openbis.as_v3, request)
self._isNew = False
if VERBOSE: print("Semantic annotation successfully created.")
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
def _update(self):
update = {
"@type": "as.dto.semanticannotation.update.SemanticAnnotationUpdate",
"semanticAnnotationId" : {
"@type" : "as.dto.semanticannotation.id.SemanticAnnotationPermId",
"permId" : self.permId
}
}
for attr in ['predicateOntologyId', 'predicateOntologyVersion', 'predicateAccessionId', 'descriptorOntologyId', 'descriptorOntologyVersion', 'descriptorAccessionId']:
update[attr] = {
"@type" : "as.dto.common.update.FieldUpdateValue",
"isModified" : True,
"value" : getattr(self, attr)
}
request = {
"method": "updateSemanticAnnotations",
"params": [
self._openbis.token,
[update]
]
}
self._openbis._post_request(self._openbis.as_v3, request)
if VERBOSE: print("Semantic annotation successfully updated.")
def delete(self, reason):
self._openbis.delete_entity(entity='SemanticAnnotation', id=self.permId, reason=reason)
if VERBOSE: print("Semantic annotation successfully deleted.")