예제 #1
0
 def callThirdPartyProgram(self, should_write_sim0_output):
     current_directory = os.getcwd()
     directory_of_files = self.files_directory + "/GenomeFiles"
     OperatingSystemUtil.changeWorkingDirectory(directory_of_files)
     outputs = collections.OrderedDict()
     if self.file_type == SupportedFileTypes.MATLAB:
         try:
             import matlab.engine
             outputs = self.callMatlabAPI(outputs)
         except ImportError as error:
             self.log.warn(
                 "Unable to find MATLAB API hook. Starting program once per trial file.\n%s",
                 error)
             for file in self.file_list:
                 self.logAndIncrementProgress()
                 file_result = self.callMATLAB(directory_of_files, file)
                 outputs[file.split(".")[0]] = file_result
                 if self.number_of_trials != 0:
                     output_file_name = self.SIM1OUTPUT_FILE_NAME + '_' + file.split(
                         ".")[0]
                     self.writeOutputFile(file_result, output_file_name)
                     self.writeSim1Matrix(outputs)
     elif self.file_type == SupportedFileTypes.R:
         for file in self.file_list:
             self.logAndIncrementProgress()
             file_result = self.callR(directory_of_files, file)
             outputs[file.split(".")[0]] = file_result
             if self.number_of_trials != 0:
                 output_file_name = self.SIM1OUTPUT_FILE_NAME + '_' + file.split(
                     ".")[0]
                 self.writeOutputFile(file_result, output_file_name)
                 self.writeSim1Matrix(outputs)
     elif self.file_type == SupportedFileTypes.OCTAVE:
         for file in self.file_list:
             self.logAndIncrementProgress()
             file_result = self.callOctave(directory_of_files, file)
             outputs[file.split(".")[0]] = file_result
             if self.number_of_trials != 0:
                 output_file_name = self.SIM1OUTPUT_FILE_NAME + '_' + file.split(
                     ".")[0]
                 self.writeOutputFile(file_result, output_file_name)
                 self.writeSim1Matrix(outputs)
     if should_write_sim0_output:
         output_list = []
         for file in outputs.keys():
             output_list.append(outputs[file])
         self.writeOutputFile(output_list, self.SIM0OUTPUT_FILE_NAME)
     elif self.number_of_trials != 0:
         sim1matrix_service = MatrixService(outputs, self.number_of_genomes,
                                            self.number_of_trials)
         sim1matrix_service.generateSimilarityMatrix('final')
         if self.response_type == SupportedThirdPartyResponses.FLOAT or self.response_type == SupportedThirdPartyResponses.INTEGER:
             sim1matrix_service.generateResponseMatrix()
     OperatingSystemUtil.changeWorkingDirectory(current_directory)
     return outputs
예제 #2
0
 def writeDataFile(self, genomes_matrix):
     current_directory = os.getcwd()
     OperatingSystemUtil.changeWorkingDirectory(self.path + "/GenomeFiles")
     with open(self.OUTPUT_FILE_NAME, 'w') as csv_file:
         try:
             data_writer = csv.writer(csv_file, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL)
             for i in range(0, self.number_of_genomes):
                 data_writer.writerow(genomes_matrix[i])
         finally:
             csv_file.close()
             OperatingSystemUtil.changeWorkingDirectory(current_directory)
예제 #3
0
 def writeDataFile(self, matrix, file_name):
     path = os.getcwd()
     OperatingSystemUtil.changeWorkingDirectory(path +
                                                self.OUTPUT_FOLDER_NAME)
     n = len(matrix)
     with open(file_name, 'w') as csv_file:
         try:
             data_writer = csv.writer(csv_file)
             for i in range(0, n):
                 data_writer.writerow(matrix[i])
         finally:
             csv_file.close()
             os.chdir(path)
 def writeOutputFile(self, outputs, output_file_name):
     if type(outputs) != list:
         outputs = [outputs]
     path = os.getcwd()
     OperatingSystemUtil.changeWorkingDirectory(path +
                                                self.OUTPUT_FOLDER_NAME)
     file_name = output_file_name + ".csv"
     with open(file_name, 'w') as csv_file:
         try:
             outputs_writer = csv.writer(csv_file)
             outputs_writer.writerow(outputs)
         except ValueError as error:
             self.log.error("Error writing %s to file %s. %s", outputs,
                            file_name, error)
         finally:
             csv_file.close()
             os.chdir(path)
예제 #5
0
    def makeMultiBarPlotWithMultipleAnalysis(self, full_data, output_path,
                                             analysis_type, title):
        basic_plot = matplotlib.figure()

        full_data_sorted_by_percentage = self.sortByPercentage(full_data)

        location_on_plot = 1
        x_ticks = []

        for percentage in full_data_sorted_by_percentage.keys():
            data = full_data_sorted_by_percentage[percentage].values()
            keys = full_data_sorted_by_percentage[percentage].keys()
            positions = SafeCastUtil.safeCast(
                range(location_on_plot, location_on_plot + len(keys)), list)
            plot = matplotlib.boxplot(data, positions=positions, widths=0.6)
            self.color_by_analysis(keys, plot)
            x_ticks.append(location_on_plot + (len(keys) / 2))
            location_on_plot += 4

        matplotlib.title(title)

        # set axes limits and labels
        if analysis_type == SupportedAnalysisTypes.CLASSIFICATION:
            matplotlib.ylim(0, 1)
        else:
            matplotlib.ylim(-1, 1)
        matplotlib.ylabel("Accuracy distribution")

        matplotlib.xlim(0, location_on_plot - 1)
        matplotlib.xlabel("% Train")
        matplotlib.xticks(x_ticks, [
            SafeCastUtil.safeCast(k * 100, int)
            for k in full_data_sorted_by_percentage.keys()
        ])
        self.createLegend(full_data)

        basic_plot.show()

        current_path = os.getcwd()
        OperatingSystemUtil.changeWorkingDirectory(output_path)
        basic_plot.savefig(self.DEFAULT_PLOT_FILENAME, bbox_inches='tight')
        OperatingSystemUtil.changeWorkingDirectory(current_path)