示例#1
0
def convert(path):
    contents = opusFC.listContents(path)
    opusd = opusdictionary.OpusDict()
    opath = path + "test.nxs"
    name_dict = get_name_dict()

    with h5py.File(opath, 'w') as f:
        nxEntry = f.create_group("entry1")
        nxEntry.attrs["NX_class"] = "NXentry"
        for db in contents:
            data = opusFC.getOpusData(path, db)
            if isinstance(data, opusFC.ImageDataReturn):
                add_image_data(nxEntry, data)
            if isinstance(data, opusFC.MultiRegionDataReturn):
                add_multi_data(nxEntry, data)
            if isinstance(data, opusFC.ImageTRCDataReturn):
                add_image_traces(nxEntry, data)
        #nxColl = nxEntry.create_group("parameters")
        #nxColl.attrs["NX_class"] = "NXcollection"

        #for k,v in data.parameters.items():
        #   name = k
        #   if (k in opusd):
        #      name = opusd[k]
        #   nxColl.create_dataset(name,data=v)
        images = opusFC.getVisImages(path)
        count = 1
        for im in images:
            nxe = f.create_group("microscope" + str(count))
            nxe.attrs["NX_class"] = "NXentry"
            add_visible_image(nxe, im)
            count = count + 1

        print("Created file " + opath)
示例#2
0
def parameters():

    fl = file_list()
    count = 0

    for f in fl:
        try:
            dbs = opusFC.isOpusFile(f)
            #control structure for the loop
            if dbs == True:

                conte = opusFC.listContents(f)
                data = opusFC.getOpusData(f, conte[0])
                count += 1
                print(count)
                #print conte, f
                data = opusFC.getOpusData(f, conte[0])
                print data.parameters, f

                SNM.append(data.parameters['SNM'])
                INS.append(data.parameters['INS'])
                DAT.append(data.parameters['DAT'])
                TIM.append(data.parameters['TIM'])
                DUR.append(data.parameters['DUR'])
                CNM.append(data.parameters['CNM'])
                RES.append(data.parameters['RES'])
                ZFF.append(data.parameters['ZFF'])
                NPT.append(data.parameters['NPT'])
                LWN.append(data.parameters['LWN'])
                FXV.append(data.parameters['FXV'])
                LXV.append(data.parameters['LXV'])
                minY.append(data.minY)
                maxY.append(data.maxY)

                continue

            else:
                print('identified as non-Opus', f)

        except ValueError:
            print('Cant process a non-Opus file', f)

            continue
示例#3
0
LXV = []
FXV = []
minY = []
maxY = []
dbs=[]


# loop of all files
count = 0



for f in file_list:
    try:
        dbs = opusFC.listContents(f)
        count += 1

        print(count,f)
        print(dbs)


        for i in dbs:

            data = opusFC.getOpusData(f, i)

            print(data.parameters)

    except ValueError:
        print('Cant process a non-Opus file', f)
    continue
示例#4
0
    def read(self):
        import opusFC

        if self.sheet:
            db = self.sheet
        else:
            db = self.sheets[0]

        db = tuple(db.split(" "))
        dim = db[1]

        try:
            data = opusFC.getOpusData(self.filename, db)
        except Exception:
            raise IOError("Couldn't load spectrum from " + self.filename)

        attrs, clses, metas = [], [], []

        attrs = [
            ContinuousVariable.make(repr(data.x[i]))
            for i in range(data.x.shape[0])
        ]

        y_data = None
        meta_data = None

        if type(data) == opusFC.MultiRegionDataReturn:
            y_data = []
            meta_data = []
            metas.extend([
                ContinuousVariable.make('map_x'),
                ContinuousVariable.make('map_y'),
                StringVariable.make('map_region'),
                TimeVariable.make('start_time')
            ])
            for region in data.regions:
                y_data.append(region.spectra)
                mapX = region.mapX
                mapY = region.mapY
                map_region = np.full_like(mapX, region.title, dtype=object)
                start_time = region.start_time
                meta_region = np.column_stack(
                    (mapX, mapY, map_region, start_time))
                meta_data.append(meta_region.astype(object))
            y_data = np.vstack(y_data)
            meta_data = np.vstack(meta_data)

        elif type(data) == opusFC.MultiRegionTRCDataReturn:
            y_data = []
            meta_data = []
            metas.extend([
                ContinuousVariable.make('map_x'),
                ContinuousVariable.make('map_y'),
                StringVariable.make('map_region')
            ])
            attrs = [
                ContinuousVariable.make(repr(data.labels[i]))
                for i in range(len(data.labels))
            ]
            for region in data.regions:
                y_data.append(region.spectra)
                mapX = region.mapX
                mapY = region.mapY
                map_region = np.full_like(mapX, region.title, dtype=object)
                meta_region = np.column_stack((mapX, mapY, map_region))
                meta_data.append(meta_region.astype(object))
            y_data = np.vstack(y_data)
            meta_data = np.vstack(meta_data)

        elif type(data) == opusFC.ImageDataReturn:
            metas.extend([
                ContinuousVariable.make('map_x'),
                ContinuousVariable.make('map_y')
            ])

            data_3D = data.spectra

            for i in np.ndindex(data_3D.shape[:1]):
                map_y = np.full_like(data.mapX, data.mapY[i])
                coord = np.column_stack((data.mapX, map_y))
                if y_data is None:
                    y_data = data_3D[i]
                    meta_data = coord.astype(object)
                else:
                    y_data = np.vstack((y_data, data_3D[i]))
                    meta_data = np.vstack((meta_data, coord))

        elif type(data) == opusFC.ImageTRCDataReturn:
            metas.extend([
                ContinuousVariable.make('map_x'),
                ContinuousVariable.make('map_y')
            ])

            attrs = [
                ContinuousVariable.make(repr(data.labels[i]))
                for i in range(len(data.labels))
            ]
            data_3D = data.traces

            for i in np.ndindex(data_3D.shape[:1]):
                map_y = np.full_like(data.mapX, data.mapY[i])
                coord = np.column_stack((data.mapX, map_y))
                if y_data is None:
                    y_data = data_3D[i]
                    meta_data = coord.astype(object)
                else:
                    y_data = np.vstack((y_data, data_3D[i]))
                    meta_data = np.vstack((meta_data, coord))

        elif type(data) == opusFC.TimeResolvedTRCDataReturn:
            y_data = data.traces

        elif type(data) == opusFC.TimeResolvedDataReturn:
            metas.extend([ContinuousVariable.make('z')])

            y_data = data.spectra
            meta_data = data.z

        elif type(data) == opusFC.SingleDataReturn:
            y_data = data.y[None, :]

        else:
            raise ValueError(
                "Empty or unsupported opusFC DataReturn object: " + type(data))

        import_params = ['SRT', 'SNM']

        for param_key in import_params:
            try:
                param = data.parameters[param_key]
            except KeyError:
                pass  # TODO should notify user?
            else:
                try:
                    param_name = opusFC.paramDict[param_key]
                except KeyError:
                    param_name = param_key
                if param_key == 'SRT':
                    var = TimeVariable.make(param_name)
                elif type(param) is float:
                    var = ContinuousVariable.make(param_name)
                elif type(param) is str:
                    var = StringVariable.make(param_name)
                else:
                    raise ValueError  #Found a type to handle
                metas.extend([var])
                params = np.full((y_data.shape[0], ), param,
                                 np.array(param).dtype)
                if meta_data is not None:
                    # NB dtype default will be np.array(fill_value).dtype in future
                    meta_data = np.column_stack(
                        (meta_data, params.astype(object)))
                else:
                    meta_data = params

        domain = Orange.data.Domain(attrs, clses, metas)

        meta_data = np.atleast_2d(meta_data)

        table = Orange.data.Table.from_numpy(domain,
                                             y_data.astype(float, order='C'),
                                             metas=meta_data)

        return table
cwd = os.getcwd()

file_list = os.listdir(cwd)

# Loop through files in file_list
L = []

#del file_list[0] # remove .DS_Store

file_list = glob.glob(cwd + "/*.[0-9]")

# .SNM
SNM = []
for f in file_list:
    dbs = opusFC.listContents(f)
    data = opusFC.getOpusData(f, dbs[0])
    SNM.append(data.parameters['SNM'])

# .INS
INS = []
for f in file_list:
    data = opusFC.getOpusData(f, dbs[0])
    INS.append(data.parameters['INS'])

# .DAT
DAT = []
for f in file_list:
    data = opusFC.getOpusData(f, dbs[0])
    DAT.append(data.parameters['DAT'])

# .TIM
示例#6
0
    def read(self):
        import opusFC

        if self.sheet:
            db = self.sheet
        else:
            db = self.sheets[0]

        db = tuple(db.split(" "))
        dim = db[1]

        try:
            data = opusFC.getOpusData(self.filename, db)
        except Exception:
            raise IOError("Couldn't load spectrum from " + self.filename)

        attrs, clses, metas = [], [], []

        attrs = [ContinuousVariable.make(repr(data.x[i]))
                    for i in range(data.x.shape[0])]

        y_data = None
        meta_data = None

        if dim == '3D':
            metas.extend([ContinuousVariable.make('map_x'),
                          ContinuousVariable.make('map_y')])

            if db[0] == 'TRC':
                attrs = [ContinuousVariable.make(repr(data.labels[i]))
                            for i in range(len(data.labels))]
                data_3D = data.traces
            else:
                data_3D = data.spectra

            for i in np.ndindex(data_3D.shape[:1]):
                map_y = np.full_like(data.mapX, data.mapY[i])
                coord = np.column_stack((data.mapX, map_y))
                if y_data is None:
                    y_data = data_3D[i]
                    meta_data = coord.astype(object)
                else:
                    y_data = np.vstack((y_data, data_3D[i]))
                    meta_data = np.vstack((meta_data, coord))
        elif dim == '2D':
            y_data = data.y[None,:]

        try:
            stime = data.parameters['SRT']
        except KeyError:
            pass # TODO notify user?
        else:
            metas.extend([TimeVariable.make(opusFC.paramDict['SRT'])])
            if meta_data is not None:
                dates = np.full(meta_data[:,0].shape, stime, np.array(stime).dtype)
                meta_data = np.column_stack((meta_data, dates.astype(object)))
            else:
                meta_data = np.array([stime])[None,:]

        import_params = ['SNM']

        for param_key in import_params:
            try:
                param = data.parameters[param_key]
            except Exception:
                pass # TODO should notify user?
            else:
                try:
                    param_name = opusFC.paramDict[param_key]
                except KeyError:
                    param_name = param_key
                if type(param) is float:
                    var = ContinuousVariable.make(param_name)
                elif type(param) is str:
                    var = StringVariable.make(param_name)
                else:
                    raise ValueError #Found a type to handle
                metas.extend([var])
                if meta_data is not None:
                    # NB dtype default will be np.array(fill_value).dtype in future
                    params = np.full(meta_data[:,0].shape, param, np.array(param).dtype)
                    meta_data = np.column_stack((meta_data, params.astype(object)))
                else:
                    meta_data = np.array([param])[None,:]

        domain = Orange.data.Domain(attrs, clses, metas)

        table = Orange.data.Table.from_numpy(domain,
                                             y_data.astype(float, order='C'),
                                             metas=meta_data)

        return table
示例#7
0
def export_spectra(in_folder=None,
                   out_folder=DATA_KSSL,
                   nb_decimals=4,
                   max_wavenumber=4000,
                   valid_name=['XN', 'XS'],
                   nb_chunks=1):
    """Exports KSSL MIRS spectra into a series of .csv files

    Parameters
    ----------
    in_folder: string, optional
        Specify the path of the folder containing the KSSL MIRS spectra

    out_folder: string, optional
        Specify the path of the folder that will contain exported files

    nb_decimals: int, optional
        Specify floating point precision (to save memory)

    max_wavenumber: int, optional
        Specify the max wavenumber to be considered in spectra

    valid_name: list of str, optional
        Specify valid spectra file names

    nb_chunks: int, optional
        Specify tne number of chunks/files to be created

    Returns
    -------
    None
    """
    in_folder = Path(in_folder)
    out_folder = Path(out_folder)

    if not in_folder.exists():
        raise IOError('in_folder not found.')

    if not out_folder.exists():
        out_folder.mkdir(parents=True)

    columns = None
    valid_files = [
        f for f in in_folder.rglob('*.0')
        if re.search(r'X.', f.name)[0] in valid_name
    ]

    for (l_bound, u_bound) in list(chunk(len(valid_files), nb_chunks)):
        columns = None
        rows_list = []
        for i, f in enumerate(tqdm(valid_files[l_bound:u_bound])):
            dbs = opusFC.listContents(f)
            if dbs:
                data = opusFC.getOpusData(str(f), dbs[0])
                row = [f.name] + list(data.y[data.x <= max_wavenumber])
                rows_list.append(row)
                if columns is None:
                    columns = list(
                        (data.x[data.x <= max_wavenumber]).astype(int))
        df = pd.DataFrame(rows_list, columns=['id'] + list(columns))
        df = df.round(nb_decimals)
        df.to_csv(out_folder /
                  'spectra_{}_{}.csv'.format(l_bound, u_bound - 1),
                  index=False)
示例#8
0
    def read(self):
        try:
            import opusFC
        except ImportError:
            raise RuntimeError(self._OPUS_WARNING)

        if self.sheet:
            db = self.sheet
        else:
            db = self.sheets[0]

        db = tuple(db.split(" "))
        dim = db[1]

        try:
            data = opusFC.getOpusData(self.filename, db)
        except Exception:
            raise IOError("Couldn't load spectrum from " + self.filename)

        attrs, clses, metas = [], [], []

        attrs = [ContinuousVariable.make(repr(data.x[i]))
                 for i in range(data.x.shape[0])]

        y_data = None
        meta_data = None

        if type(data) == opusFC.MultiRegionDataReturn:
            y_data = []
            meta_data = []
            metas.extend([ContinuousVariable.make('map_x'),
                          ContinuousVariable.make('map_y'),
                          StringVariable.make('map_region'),
                          TimeVariable.make('start_time')])
            for region in data.regions:
                y_data.append(region.spectra)
                mapX = region.mapX
                mapY = region.mapY
                map_region = np.full_like(mapX, region.title, dtype=object)
                start_time = region.start_time
                meta_region = np.column_stack((mapX, mapY,
                                               map_region, start_time))
                meta_data.append(meta_region.astype(object))
            y_data = np.vstack(y_data)
            meta_data = np.vstack(meta_data)

        elif type(data) == opusFC.MultiRegionTRCDataReturn:
            y_data = []
            meta_data = []
            metas.extend([ContinuousVariable.make('map_x'),
                          ContinuousVariable.make('map_y'),
                          StringVariable.make('map_region')])
            attrs = [ContinuousVariable.make(repr(data.labels[i]))
                     for i in range(len(data.labels))]
            for region in data.regions:
                y_data.append(region.spectra)
                mapX = region.mapX
                mapY = region.mapY
                map_region = np.full_like(mapX, region.title, dtype=object)
                meta_region = np.column_stack((mapX, mapY, map_region))
                meta_data.append(meta_region.astype(object))
            y_data = np.vstack(y_data)
            meta_data = np.vstack(meta_data)

        elif type(data) == opusFC.ImageDataReturn:
            metas.extend([ContinuousVariable.make('map_x'),
                          ContinuousVariable.make('map_y')])

            data_3D = data.spectra

            for i in np.ndindex(data_3D.shape[:1]):
                map_y = np.full_like(data.mapX, data.mapY[i])
                coord = np.column_stack((data.mapX, map_y))
                if y_data is None:
                    y_data = data_3D[i]
                    meta_data = coord.astype(object)
                else:
                    y_data = np.vstack((y_data, data_3D[i]))
                    meta_data = np.vstack((meta_data, coord))

        elif type(data) == opusFC.ImageTRCDataReturn:
            metas.extend([ContinuousVariable.make('map_x'),
                          ContinuousVariable.make('map_y')])

            attrs = [ContinuousVariable.make(repr(data.labels[i]))
                     for i in range(len(data.labels))]
            data_3D = data.traces

            for i in np.ndindex(data_3D.shape[:1]):
                map_y = np.full_like(data.mapX, data.mapY[i])
                coord = np.column_stack((data.mapX, map_y))
                if y_data is None:
                    y_data = data_3D[i]
                    meta_data = coord.astype(object)
                else:
                    y_data = np.vstack((y_data, data_3D[i]))
                    meta_data = np.vstack((meta_data, coord))

        elif type(data) == opusFC.TimeResolvedTRCDataReturn:
            y_data = data.traces

        elif type(data) == opusFC.TimeResolvedDataReturn:
            metas.extend([ContinuousVariable.make('z')])

            y_data = data.spectra
            meta_data = data.z

        elif type(data) == opusFC.SingleDataReturn:
            y_data = data.y[None, :]

        else:
            raise ValueError("Empty or unsupported opusFC DataReturn object: " + type(data))

        import_params = ['SRT', 'SNM']

        for param_key in import_params:
            try:
                param = data.parameters[param_key]
            except KeyError:
                pass  # TODO should notify user?
            else:
                try:
                    param_name = opusFC.paramDict[param_key]
                except KeyError:
                    param_name = param_key
                if param_key == 'SRT':
                    var = TimeVariable.make(param_name)
                elif type(param) is float:
                    var = ContinuousVariable.make(param_name)
                elif type(param) is str:
                    var = StringVariable.make(param_name)
                else:
                    raise ValueError #Found a type to handle
                metas.extend([var])
                params = np.full((y_data.shape[0],), param, np.array(param).dtype)
                if meta_data is not None:
                    # NB dtype default will be np.array(fill_value).dtype in future
                    meta_data = np.column_stack((meta_data, params.astype(object)))
                else:
                    meta_data = params

        domain = Orange.data.Domain(attrs, clses, metas)

        meta_data = np.atleast_2d(meta_data)

        table = Orange.data.Table.from_numpy(domain,
                                             y_data.astype(float, order='C'),
                                             metas=meta_data)

        return table