def extract_age(metadata: dict) -> Optional[models.PropertyValue]: try: dob = ensure_datetime(metadata["date_of_birth"]) start = ensure_datetime(metadata["session_start_time"]) except (KeyError, TypeError, ValueError): if metadata.get("age") is not None: duration, ref = parse_age(metadata["age"]) else: return None else: duration, ref = timedelta2duration(start - dob), "Birth" return models.PropertyValue( value=duration, unitText="ISO-8601 duration", valueReference=models.PropertyValue( value=getattr(models.AgeReferenceType, f"{ref}Reference")), )
def extract_age(metadata): try: dob = ensure_datetime(metadata["date_of_birth"]) start = ensure_datetime(metadata["session_start_time"]) except (KeyError, TypeError, ValueError): try: duration = parse_age(metadata["age"]) except (KeyError, TypeError, ValueError): return ... else: duration = timedelta2duration(start - dob) return models.PropertyValue(value=duration, unitText="Years from birth")
def process_ndtypes(metadata: Dict[str, Any], nd_types: Iterable[str]) -> None: approach = set() technique = set() variables = set() for val in nd_types: val = val.split()[0] if val not in neurodata_typemap: continue if neurodata_typemap[val]["approach"]: approach.add(neurodata_typemap[val]["approach"]) if neurodata_typemap[val]["technique"]: technique.add(neurodata_typemap[val]["technique"]) variables.add(val) metadata["approach"] = [models.ApproachType(name=val) for val in approach] metadata["measurementTechnique"] = [ models.MeasurementTechniqueType(name=val) for val in technique ] metadata["variableMeasured"] = [ models.PropertyValue(value=val) for val in variables ]
def process_ndtypes(asset, nd_types): approach = set() technique = set() variables = set() for val in nd_types: if val not in neurodata_typemap: continue if neurodata_typemap[val]["approach"]: approach.add(neurodata_typemap[val]["approach"]) if neurodata_typemap[val]["technique"]: technique.add(neurodata_typemap[val]["technique"]) variables.add(val) asset.approach = [models.ApproachType(name=val) for val in approach] asset.measurementTechnique = [ models.MeasurementTechniqueType(name=val) for val in technique ] asset.variableMeasured = [ models.PropertyValue(value=val) for val in variables ] return asset