# change data orientation to be top=ventral, right=lateral imgseq = block.segments[0].imagesequences[0] imgseq = flip_image(imgseq, axis=-2) imgseq = rotate_image(imgseq, rotation=-90) block.segments[0].imagesequences[0] = imgseq # Transform into analogsignals block.segments[0].analogsignals = [] block = ImageSequence2AnalogSignal(block) block.segments[0].analogsignals[0] = time_slice( block.segments[0].analogsignals[0], args.t_start, args.t_stop) if args.annotations is not None: block.segments[0].analogsignals[0].annotations.\ update(parse_string2dict(args.annotations)) block.segments[0].analogsignals[0].annotations.update( orientation_top=args.orientation_top) block.segments[0].analogsignals[0].annotations.update( orientation_right=args.orientation_right) # ToDo: add metadata block.name = args.data_name block.segments[0].name = 'Segment 1' block.segments[0].description = 'Loaded from mat file. '\ .format(neo.__version__) if block.segments[0].analogsignals[0].description is None: block.segments[0].analogsignals[0].description = '' block.segments[0].analogsignals[0].description += 'MF simulation output '
except Exception as e: print(e) block = load_neo(args.data, try_signal_grouping=True) asigs = block.segments[0].analogsignals if len(asigs) > 1: print(f'Merging {len(asigs)} AnalogSignals into one.') asig = merge_analogsingals(asigs) else: asig = asigs[0] asig = time_slice(asig, args.t_start, args.t_stop) # add metadata kwargs = parse_string2dict(args.kwargs) channels = asig.array_annotations[kwargs['ELECTRODE_ANNOTATION_NAME']] coords = np.array([ kwargs['NAME2COORDS'][str(channel)] for channel in channels.astype(int) ]) asig.array_annotations.update(x_coords=coords[:, 0]) asig.array_annotations.update(y_coords=coords[:, 1]) # locations = [] # for channel in channels: # locations.append([loc for loc in kwargs['ELECTRODE_LOCATION'].keys() # if channel in kwargs['ELECTRODE_LOCATION'][loc]][0]) # asig.array_annotations.update(electrode_location=locations)
block = load_neo(args.data) # If there is no Neo IO for the data type available, # the data must be loaded conventioally and added to a newly constructed # Neo block. For building a Neo objects, have a look into the documentation # https://neo.readthedocs.io/ # In case the dataset is imagaging data and therefore stored as an # ImageSequence object, it needs to be transformed into an AnalogSignal # object. To do this use the function ImageSequence2AnalogSignal in utils.py asig = block.segments[0].analogsignals[0] asig = time_slice(asig, args.t_start, args.t_stop) # Add metadata from ANNOTIATION dict asig.annotations.update(parse_string2dict(args.annotations)) asig.annotations.update(spatial_scale=args.spatial_scale * pq.mm) asog.annotations.update(orientation_top=args.orientation_top) asog.annotations.update(orientation_right=args.orientation_right) # Add metadata from ARRAY_ANNOTIATION dict asig.array_annotations.update(parse_string2dict(args.array_annotations)) # Do custom metadata processing from KWARGS dict (optional) # kwargs = parse_string2dict(args.kwargs) # ... do something # Add description to the Neo object block.name = args.data_name block.segments[0].name = 'Segment 1' block.segments[0].description = 'Loaded with neo.io version {}'\