Source code for pycalibration.extract

#  Copyright (c) 2017-2021 Jeorme Douay <jerome@far-out.biz>
#  All rights reserved.
# Far-Out extraction
import glob
import pandas
import progressbar
import logging
from .mdf import MDF

[docs]class Extract(MDF): ''' Extract class extract channels from single or multiple files ''' def __init__(self): super().__init__() self.files = []
[docs] def add_file(self, filename, duplicates=True): ''' Add single file to the list of files to be processed :param file: file name path to the file :param duplicates: allow duplicates in the list of files :return: none ''' self.files.append(filename) if duplicates==False: self.files=list(set(self.files)) # remove dual entries just in case
[docs] def add_directory(self, pathname): ''' Add a directory recursively to the files to be processed. Files recognize are mdf and mf4 exensions :param path: path to be added :return: none ''' self.files.extend(glob.glob(pathname + '/**/*.mdf', recursive=True)) self.files.extend(glob.glob(pathname + '/**/*.mf4', recursive=True)) self.files.extend(glob.glob(pathname + '/**/*.dat', recursive=True)) self.files=list(set(self.files)) # remove dual entries just in case
[docs] def get(self): ''' Read the MDF files and retrieved the requested data. :return: list of pandas dataframe contaiing the datas. ''' data = pandas.DataFrame() count=0 data=[] with progressbar.ProgressBar(max_value=len(self.files)) as bar: bar.update(count) for filename in self.files: self.set_file(filename) data.append(self.get_data()) count+=1 bar.update(count) return data
def __iter__(self): self.index=0 return self def __next__(self): if self.index>=len(self.files): raise StopIteration filename=self.files[self.index] self.index+=1 self.set_file(filename) return self.get_data()