コード例 #1
0
class BorderAnalytics:
    def __init__(self, inputFile, outputFilePath):
        self.input = inputFile
        self.outputFilePath = outputFilePath
        self.inputHandler = None
        self.outputHandler = None
        self.preprocessor = None
        self.borderCrossingCompute = None

    def inputFile(self, name):
        self.inputHandler = InputHandler(name)
        return self.inputHandler.parse()

    def preprocess(self, inputList):
        self.preprocessor = Preprocessor(inputList)
        return self.preprocessor.parseDateTime()

    def computeTotalCrossing(self):
        store = self.inputFile(self.input)
        print("Store size:" + str(len(store)))

        processedList = self.preprocess(store)
        print("List processed:" + str(len(store)))

        self.borderCrossingCompute = BorderCrossingComputation(processedList)

        print("Starting computation for total crossing")
        self.borderCrossingCompute.computeTotalCross()
        print("Finished")

        return self.borderCrossingCompute.get_total_cross()

    def computeAverageCrossing(self):
        print("Starting avg cross computation")
        self.borderCrossingCompute.calculate_running_avg()
        print("Finished")

        return self.borderCrossingCompute.get_monthly_avg()

    def startAnalysis(self):
        totalCrossing = self.computeTotalCrossing()
        avgCrossing = self.computeAverageCrossing()

        print("Merging results")
        output = self.borderCrossingCompute.getTotalCrossAndAverage()
        print("Finished")

        print("Saving output")
        self.saveOutput(output)

    def saveOutput(self, output):
        self.outputHandler = OutputHandler(self.outputFilePath)
        header = ["Border", "Date", "Measure", "Value", "Average"]
        status = self.outputHandler.save_to_csv(header, output)
        print(status)
コード例 #2
0
class BorderAnalytics:
    def __init__(self, inputFile, outputFilePath):
        self.input = inputFile
        self.outputFilePath = outputFilePath
        self.inputHandler = None
        self.outputHandler = None
        self.preprocessor = None
        self.borderCrossingCompute = None

    def inputFile(self, name):
        """
        This function fetches the input file from
        the name given and redirects it to the
        InputHandler.py file to get input data
        rows in a lists
        :param string name: name of the input file
        :returns: input file in list
        """
        self.inputHandler = InputHandler(name)
        return self.inputHandler.parse()

    def preprocess(self, inputList):
        """
        This function parses date time values into
        correct format.
        :param inputList: list of input data
        :return: parsed list of date time values
        """
        self.preprocessor = Preprocessor(inputList)
        return self.preprocessor.parseDateTime()

    def computeTotalCrossing(self):
        """
        This function computes the total crossing for each
        defined condition
        :return: a sorted array of data with total crossings value
        """
        store = self.inputFile(self.input)
        print("Store size:" + str(len(store)))

        processedList = self.preprocess(store)
        print("List processed:" + str(len(store)))

        self.borderCrossingCompute = BorderCrossingComputation(processedList)

        print("Starting computation for total crossing")
        self.borderCrossingCompute.computeTotalCross()
        print("Finished")

        return self.borderCrossingCompute.get_total_cross()

    def computeAverageCrossing(self):
        """
        This function computes the average for each category
        as required
        :return: a dictionary of computed averages
        """
        print("Starting avg cross computation")
        self.borderCrossingCompute.calculate_running_avg()
        print("Finished")

        return self.borderCrossingCompute.get_monthly_avg()

    def startAnalysis(self):
        """
        This function starts the core computation process of
        the project
        :return: a sorted list of final output
        """
        totalCrossing = self.computeTotalCrossing()
        avgCrossing = self.computeAverageCrossing()

        print("Merging results")
        output = self.borderCrossingCompute.getTotalCrossAndAverage()
        print("Finished")

        print("Saving output")
        self.saveOutput(output)

    def saveOutput(self, output):
        """
        This function saves the output list data structure
        into a csv file
        :param output: list of output rows
        """
        self.outputHandler = OutputHandler(self.outputFilePath)
        header = ["Border", "Date", "Measure", "Value", "Average"]
        status = self.outputHandler.save_to_csv(header, output)