Ejemplo n.º 1
0
 def _time_from_ecat(self, ecat_file, ft_array):
     shdrs = ecat.load(ecat_file).get_subheaders()
     mlist = ecat.load(ecat_file).get_mlist()
     framelist = mlist.get_series_framenumbers().values()
     for fn, shdr in zip(framelist, shdrs.subheaders):
         start = shdr['frame_start_time'] / 1000
         duration = shdr['frame_duration'] / 1000
         ft_array[fn, 1:4] = [start, duration, start + duration]
Ejemplo n.º 2
0
 def _time_from_ecat(self, ecat_file, ft_array):
     shdrs = ecat.load(ecat_file).get_subheaders()
     mlist = ecat.load(ecat_file).get_mlist()
     framelist = mlist.get_series_framenumbers().values()
     for fn, shdr in zip(framelist, shdrs.subheaders):
         start = shdr['frame_start_time'] / 1000
         duration = shdr['frame_duration'] / 1000
         ft_array[fn, 1:4] = [start, duration, start + duration]
Ejemplo n.º 3
0
 def _time_from_ecat(self, ecat_file, ft_array):
     """ fills in a fiels of empty ft_array using
     data from the ecat mlist and subheaders"""
     shdrs = ecat.load(ecat_file).get_subheaders()
     mlist = ecat.load(ecat_file).get_mlist()
     framelist = mlist.get_series_framenumbers().values()
     for fn, shdr in zip(framelist, shdrs.subheaders):
         start = shdr['frame_start_time'] / 1000
         duration = shdr['frame_duration'] / 1000
         idx = np.where(ft_array[:,0] == fn)
         ft_array[idx, 1:] = [start, duration, start + duration]
Ejemplo n.º 4
0
def frametime_from_ecat(ecatf):
    """given an ecat file , finds timing info for each frame
    
    Returns
    -------
    out : array
          array holding framenumber, starttime, duration, endtime
          in milliseconds
    """
    img = ecat.load(ecatf)
    shdrs = img.get_subheaders()
    mlist = img.get_mlist()
    framenumbers = mlist.get_series_framenumbers()
    out = np.zeros((len(framenumbers), 4))
    if shdrs.subheaders[0]['frame_start_time']== 16:
        adj = 16
    else:
        adj = 0
    for i, fn in framenumbers.items():
        startt = shdrs.subheaders[i]['frame_start_time']
        dur = shdrs.subheaders[i]['frame_duration']
        out[i,0] = fn 
        out[i,1] = startt - adj
        # fix adj, divide by 60000 to get minutes
        out[i,2] = dur
        out[i,3] = startt - adj + dur
    out = out[out[:,0].argsort(),]
    return out
Ejemplo n.º 5
0
    def from_ecats(self, ecat_files, units=None):
        """Pulls timing info from ecat file(s) and stores in an array"""
        if not hasattr(ecat_files, '__iter__'):
            ecat_files = [ecat_files]
        nframes = 0
        for f in ecat_files:
            x, y, z, nf = ecat.load(f).get_shape()
            nframes += nf
        empty_ft = self.generate_empty_protocol(nframes)

        for ef in ecat_files:
            self._time_from_ecat(ef, empty_ft)

        self.data = np.array(empty_ft[0:,0:4]).astype(float)
        # call to correct_data fails due to empty_ft dtype
        if not units:
            self.units = guess_units(self.data)
        else:
            self.units = units
        try:
            self.data = self.correct_data_order(self.data)
            self._validate_frames()
        except FrameError:
            raise DataError('Bad data', self.data, ecat_files)
        return self 
Ejemplo n.º 6
0
    def from_ecats(self, ecat_files, units=None):
        """Pulls timing info from ecat file(s) and stores in an array"""
        if not hasattr(ecat_files, '__iter__'):
            ecat_files = [ecat_files]
        nframes = 0
        for f in ecat_files:
            x, y, z, nf = ecat.load(f).get_shape()
            nframes += nf
        empty_ft = self.generate_empty_protocol(nframes)

        for ef in ecat_files:
            self._time_from_ecat(ef, empty_ft)

        self.data = np.array(empty_ft[0:, 0:4]).astype(float)
        # call to correct_data fails due to empty_ft dtype
        if not units:
            self.units = guess_units(self.data)
        else:
            self.units = units
        try:
            self.data = self.correct_data_order(self.data)
            self._validate_frames()
        except FrameError:
            raise DataError('Bad data', self.data, ecat_files)
        return self
Ejemplo n.º 7
0
 def _loadFile(self, path: str) -> None:
     if path != self._FILE_CACHE:
         e = ecat.load(path)
         self._ECAT_CACHE = e.header
         self._SUB_CACHE = e.get_subheaders().subheaders
         self._FILE_CACHE = path
         self.setManufacturer("Unknown", {})
         self.resetMetaFields()
         self.setupMetaFields(_ECAT.metafields)
         self.testMetaFields()