def get_ensemble_responses(*, res: LibresFacade = Depends(get_res), ensemble_id: UUID) -> Mapping[str, js.RecordOut]: response_map: Mapping[str, js.RecordOut] = {} case = get_name("ensemble", ensemble_id) for response_name in get_response_names(): obs_keys = res.observation_keys(response_name) observations_list = [ js.ObservationOut( id=uuid4(), userData=[], errors=obs["errors"], values=obs["values"], x_axis=obs["x_axis"], name=obs["name"], ) for obs in observations_for_obs_keys(case, obs_keys) ] response_map[str(response_name)] = js.RecordOut( id=get_id(f"response", f"{ensemble_id}/{response_name}"), name=response_name, userdata={}, observations=observations_list, ) return response_map
async def get_record_observations( *, db: Session = Depends(get_db), ensemble_id: UUID, name: str, realization_index: Optional[int] = None, ) -> List[js.ObservationOut]: if realization_index is None: bundle = _get_ensemble_record(db, ensemble_id, name) else: bundle = _get_forward_model_record(db, ensemble_id, name, realization_index) if bundle.observations: return [ js.ObservationOut( id=obs.id, name=obs.name, x_axis=obs.x_axis, errors=obs.errors, values=obs.values, records=[rec.id for rec in obs.records], metadata=obs.metadata_dict, ) for obs in bundle.observations ] return []
def get_observations(*, res: LibresFacade = Depends(get_res), experiment_id: UUID) -> List[js.ObservationOut]: return [ js.ObservationOut( id=uuid4(), userData=[], errors=obs["errors"], values=obs["values"], x_axis=obs["x_axis"], name=obs["name"], ) for obs in create_observations(res) ]
async def get_record_observations( *, db: Session = Depends(get_db), record: ds.Record = Depends(get_record_by_name), ) -> List[js.ObservationOut]: if record.observations: return [ js.ObservationOut( id=obs.id, name=obs.name, x_axis=obs.x_axis, errors=obs.errors, values=obs.values, records=[rec.id for rec in obs.records], userdata=obs.userdata, ) for obs in record.observations ] return []
async def get_record_observations( *, res: LibresFacade = Depends(get_res), ensemble_id: UUID, name: str, realization_index: Optional[int] = None, ) -> List[js.ObservationOut]: obs_keys = res.observation_keys(name) case = get_name("ensemble", ensemble_id) obss = observations_for_obs_keys(case, obs_keys) return [ js.ObservationOut( id=uuid4(), userData=[], errors=obs["errors"], values=obs["values"], x_axis=obs["x_axis"], name=obs["name"], ) for obs in obss ]
def _observation_from_db( obs: ds.Observation, transformations: Optional[Mapping[str, Any]] = None) -> js.ObservationOut: transformation = None if transformations is not None and obs.name in transformations: transformation = js.ObservationTransformationOut( id=transformations[obs.name].id, name=obs.name, observation_id=obs.id, scale=transformations[obs.name].scale_list, active=transformations[obs.name].active_list, ) return js.ObservationOut( id=obs.id, name=obs.name, x_axis=obs.x_axis, errors=obs.errors, values=obs.values, records=[rec.id for rec in obs.records], userdata=obs.userdata, transformation=transformation, )