def data_for_specimen_id(specimen_id, passed_only): name, roi_id, specimen_id = lq.get_specimen_info_from_lims_by_id(specimen_id) nwb_path = lq.get_nwb_path_from_lims(roi_id) if len(nwb_path) == 0: # could not find an NWB file logging.debug("No NWB file for {:d}".format(specimen_id)) return {"error": {"type": "no_nwb", "details": ""}} # Check if NWB has lab notebook information, or if additional hdf5 file is needed ontology = StimulusOntology(ju.read(StimulusOntology.DEFAULT_STIMULUS_ONTOLOGY_FILE)) h5_path = None with h5py.File(nwb_path, "r") as h5: if "general/labnotebook" not in h5: h5_path = lq.get_igorh5_path_from_lims(roi_id) try: data_set = AibsDataSet(nwb_file=nwb_path, h5_file=h5_path, ontology=ontology) except Exception as detail: logging.warn("Exception when processing specimen {:d}".format(specimen_id)) logging.warn(detail) # return {"error": {"type": "dataset", "details": traceback.format_exc(limit=1)}} return {} try: lsq_sweep_numbers = categorize_iclamp_sweeps(data_set, ontology.long_square_names) ssq_sweep_numbers = categorize_iclamp_sweeps(data_set, ontology.short_square_names) ramp_sweep_numbers = categorize_iclamp_sweeps(data_set, ontology.ramp_names) except Exception as detail: logging.warn("Exception when processing specimen {:d}".format(specimen_id)) logging.warn(detail) # return {"error": {"type": "sweep_table", "details": traceback.format_exc(limit=1)}} return {} try: result = extract_features(data_set, ramp_sweep_numbers, ssq_sweep_numbers, lsq_sweep_numbers) except Exception as detail: logging.warn("Exception when processing specimen {:d}".format(specimen_id)) logging.warn(detail) # return {"error": {"type": "processing", "details": traceback.format_exc(limit=1)}} return {} result["specimen_id"] = specimen_id return result
def lims_nwb_information(specimen_id): _, roi_id, _ = lq.get_specimen_info_from_lims_by_id(specimen_id) if roi_id is None: logging.warning( "No ephys ROI result found for {:d}".format(specimen_id)) return { "error": { "type": "no_ephys_roi_result", "details": "roi ID was None" } }, None nwb_path = lq.get_nwb_path_from_lims(roi_id) if (nwb_path is None) or (len(nwb_path) == 0): # could not find an NWB file logging.warning("No NWB file for {:d}".format(specimen_id)) return {"error": {"type": "no_nwb", "details": "empty nwb path"}}, None # Check if NWB has lab notebook information, or if additional hdf5 file is needed h5_path = None try: with h5py.File(nwb_path, "r") as h5: if "general/labnotebook" not in h5: try: h5_path = lq.get_igorh5_path_from_lims(roi_id) except Exception as detail: logging.warning( "Exception when loading h5 file for {:d}".format( specimen_id)) logging.warning(detail) return { "error": { "type": "dataset", "details": traceback.format_exc(limit=None) } }, None except: logging.warning("Could not open NWB file for {:d}".format(specimen_id)) return {"error": {"type": "no_nwb", "details": ""}}, None return nwb_path, h5_path
def test_get_igorh5_path_from_lims(): ephys_roi_result = 500844779 result = lq.get_igorh5_path_from_lims(ephys_roi_result) assert result == "/allen/programs/celltypes/production/mousecelltypes/prod589/Ephys_Roi_Result_500844779/Vip-IRES-Cre;Ai14(IVSCC)-226110.03.01.h5"