def added(self): data = super().added # FIXME conditional lifts ... if 'award_number' not in data['meta']: am = self.lifters.award_manual if am: data['meta']['award_number'] = am if 'modality' not in data['meta']: m = self.lifters.modality if m: data['meta']['modality'] = m if 'organ' not in data['meta']: if 'award_number' in data['meta']: an = data['meta']['award_number'] o = self.lifters.organ(an) if o: if o != 'othertargets': o = OntId(o) if o.prefix == 'FMA': ot = OntTerm(o) o = next( OntTerm.query(label=ot.label, prefix='UBERON')).OntTerm data['meta']['organ'] = o if 'organ' not in data['meta'] or data['meta'][ 'organ'] == 'othertargets': o = self.lifters.organ_term if o: if isinstance(o, str): o = o, out = tuple() for _o in o: _o = OntId(_o) if _o.prefix == 'FMA': ot = OntTerm(_o) _o = next( OntTerm.query(label=ot.label, prefix='UBERON')).OntTerm out += (_o, ) data['meta']['organ'] = out return data
def _update_technique(self, cell): # NOTE some rows won't update if the dataset no longer exists value = cell.value if value: try: term = next(OntTerm.query(label=value)) cell.value = term.asCellHyperlink() except StopIteration: log.info(f'no term for technique {value}')
def query(value, prefix): for query_type in ('term', 'search'): terms = [q.OntTerm for q in OntTerm.query(prefix=prefix, **{query_type:value})] if terms: #print('matching', terms[0], value) #print('extra terms for', value, terms[1:]) return terms[0] else: continue else: log.warning(f'No ontology id found for {value}') return value
def award_number(self, value): _, s = self.c.award_number(value) yield s, a, owl.NamedIndividual yield s, a, TEMP.FundedResearchProject return o = self.integrator.organ(value) if o: if o != 'othertargets': o = OntId(o) if o.prefix == 'FMA': ot = OntTerm(o) o = next(OntTerm.query(label=ot.label, prefix='UBERON')).OntTerm yield s, isAbout, o.u
def added(self): data = super().added if data['meta'] == {'techniques': []}: breakpoint() # FIXME conditional lifts ... if 'award_number' not in data['meta']: am = self.lifters.award_manual if am: data['meta']['award_number'] = am if 'modality' not in data['meta']: m = self.lifters.modality if m: data['meta']['modality'] = m if False and 'organ' not in data['meta']: # skip here, now attached directly to award if 'award_number' in data['meta']: an = data['meta']['award_number'] o = self.lifters.organ(an) if o: if o != 'othertargets': o = OntId(o) if o.prefix == 'FMA': ot = OntTerm(o) o = next( OntTerm.query(label=ot.label, prefix='UBERON')) data['meta']['organ'] = o if 'organ' not in data['meta'] or data['meta'][ 'organ'] == 'othertargets': o = self.lifters.organ_term if o: if isinstance(o, str): o = o, out = tuple() for _o in o: _o = OntId(_o) if _o.prefix == 'FMA': ot = OntTerm(_o) _o = next( OntTerm.query(label=ot.label, prefix='UBERON')) out += (_o, ) data['meta']['organ'] = out if 'protocol_url_or_doi' not in data['meta']: if self.lifters.protocol_uris: data['meta']['protocol_url_or_doi'] = tuple( self.lifters.protocol_uris) else: if not isinstance(data['meta']['protocol_url_or_doi'], tuple): _test_path = deque(['meta', 'protocol_url_or_doi']) if not [e for e in data['errors'] if e['path'] == _test_path]: raise ext.ShouldNotHappenError('urg') else: data['meta']['protocol_url_or_doi'] += tuple( self.lifters.protocol_uris) data['meta']['protocol_url_or_doi'] = tuple( sorted(set(data['meta']['protocol_url_or_doi']))) # ick return data
def added(self): data = super().added if data['meta'] == {'techniques': []}: breakpoint() # FIXME conditional lifts ... if 'award_number' not in data['meta']: am = self.lifters.award_manual if am: data['meta']['award_number'] = am if 'modality' not in data['meta']: m = self.lifters.modality if m: data['meta']['modality'] = m if False and 'organ' not in data['meta']: # skip here, now attached directly to award if 'award_number' in data['meta']: an = data['meta']['award_number'] o = self.lifters.organ(an) if o: if o != 'othertargets': o = OntId(o) if o.prefix == 'FMA': ot = OntTerm(o) o = next(OntTerm.query(label=ot.label, prefix='UBERON')) data['meta']['organ'] = o if 'organ' not in data['meta'] or data['meta']['organ'] == 'othertargets': o = self.lifters.organ_term if o: if isinstance(o, str): o = o, out = tuple() for _o in o: _o = OntId(_o) if _o.prefix == 'FMA': ot = OntTerm(_o) _o = next(OntTerm.query(label=ot.label, prefix='UBERON')) out += (_o,) data['meta']['organ'] = out if 'protocol_url_or_doi' not in data['meta']: if self.lifters.protocol_uris: data['meta']['protocol_url_or_doi'] = tuple(self.lifters.protocol_uris) else: if not isinstance(data['meta']['protocol_url_or_doi'], tuple): _test_path = deque(['meta', 'protocol_url_or_doi']) if not [e for e in data['errors'] if 'path' in e and e['path'] == _test_path]: raise ext.ShouldNotHappenError('urg') else: data['meta']['protocol_url_or_doi'] += tuple(self.lifters.protocol_uris) data['meta']['protocol_url_or_doi'] = tuple(sorted(set(data['meta']['protocol_url_or_doi']))) # ick # FIXME this is a really bad way to do this :/ maybe stick the folder in data['prov'] ? # and indeed, when we added PipelineStart this shifted and broke everything local = (self .previous_pipeline.pipelines[0] .previous_pipeline.pipelines[0] .previous_pipeline.pipelines[0] .path) remote = local.remote if 'doi' not in data['meta']: doi = remote.doi if doi is not None: try: metadata = doi.metadata() if metadata is not None: data['meta']['doi'] = doi.identifier except requests.exceptions.HTTPError: data['meta']['doi'] = None pass else: data['meta']['doi'] = None if 'status' not in data: data['status'] = {} if 'status_on_platform' not in data['status']: data['status']['status_on_platform'] = remote.bfobject.status return data