def copyWorkflowResultFileToFinalOutput(self, stats_param, stats_param_attribute, local_attribute, file_pathes): if stats_param_attribute in stats_param.keys(): dir_path = os.path.join( self.outPath, stats_param_attribute) file_path = stats_param[ stats_param_attribute] FileUtils.createDirectory( dir_path) FileUtils.copyFile( file_path, dir_path) final_path = os.path.join( stats_param_attribute, os.path.basename( file_path)) file_pathes[ local_attribute] = final_path
def copyMotifResultFileToFinalOutput(self, motif_stats, motifStatistics_attribute, local_attribute, file_pathes): if motif_stats.hasAttribute( motifStatistics_attribute): if not local_attribute in file_pathes.keys(): file_pathes[ local_attribute] = {} dir_path = os.path.join( self.outPath, motifStatistics_attribute) file_path = motif_stats.getAttribute( motifStatistics_attribute) FileUtils.createDirectory( dir_path) FileUtils.copyFile( file_path, dir_path) final_path = os.path.join( motifStatistics_attribute, os.path.basename( file_path)) file_pathes[ local_attribute][ motif_stats.motifName] = final_path
def execute( self, input_commstructs): if input_commstructs == None or len( input_commstructs) == 0: raise ExecutionException( "FinalOutputProcessor.execute : No inputs") input_commstruct = input_commstructs[0] # Retrieve the processor parameters self.dbPath = self.getParameter( FinalOutputProcessor.MOTIF_DATABASE_PATH_PARAM) # Retrieve the list of motif database files to use database_file_line = self.getParameter( FinalOutputProcessor.MOTIF_DATABASE_FILE_LIST_PARAM) if database_file_line != None and not database_file_line.isspace(): file_list = database_file_line.split() self.dbFiles = [] for file_path in file_list: self.dbFiles.append( os.path.join( self.dbPath, file_path)) else: raise ExecutionException( "FinalOutputProcessor.getMethodParameters : No motif database file specified in parameter '" + FinalOutputProcessor.MOTIF_DATABASE_FILE_LIST_PARAM + "'") # Add the custom motif database files if any custom_database_file_line = self.getParameter( FinalOutputProcessor.CUSTOM_MOTIF_DATABASE_FILE_PARAM, False) if custom_database_file_line != None and not custom_database_file_line.isspace(): self.dbFiles.append( custom_database_file_line) limit_value = self.getParameter( FinalOutputProcessor.DISPLAY_LIMIT_VALUE, False) if limit_value == None: limit_value = 1.0 # Prepare the processor output dir self.outPath = os.path.join( self.component.outputDir, self.component.getComponentPrefix()) shutil.rmtree( self.outPath, True) FileUtils.createDirectory( self.outPath, 0777) # Copy motif graph and stats files analysis = self.AnalyseMotifStats( input_commstruct) # Create motif logos self.createLogos( input_commstruct) # Output Results self.outputClassification( input_commstruct, analysis, limit_value) # Copy other information FileUtils.copyFile( os.path.join( self.component.outputDir, Constants.PROGRESSION_XSL_FILE), self.outPath) FileUtils.copyFile( os.path.join( self.component.outputDir, Constants.PROGRESSION_XML_FILE), self.outPath)
def execute(self, input_commstructs): if input_commstructs == None or len(input_commstructs) == 0: raise ExecutionException( "FinalOutputProcessor.execute : No inputs") input_commstruct = input_commstructs[0] # Get all the pipeline parameters parameter_dic = self.collectAllParameters() # Retrieve the processor parameters self.dbPath = self.getParameter( FinalOutputProcessor.MOTIF_DATABASE_PATH_PARAM) # Retrieve the list of motif database files to use and count motifs in the list database_file_line = self.getParameter( FinalOutputProcessor.MOTIF_DATABASE_FILE_LIST_PARAM) if database_file_line != None and not database_file_line.isspace(): file_list = database_file_line.split() self.dbFiles = [] count_motif_in_db = 0 for file_path in file_list: current_path = os.path.join(self.dbPath, file_path) current_size = MotifUtils.getMotifsNumberFromTransfac( current_path) if current_size != None: count_motif_in_db = count_motif_in_db + current_size self.dbFiles.append(current_path) parameter_dic[ FinalOutputProcessor.PARAM_MotifDatabaseFileListSize] = str( count_motif_in_db) else: raise ExecutionException( "FinalOutputProcessor.getMethodParameters : No motif database file specified in parameter '" + FinalOutputProcessor.MOTIF_DATABASE_FILE_LIST_PARAM + "'") # Add the custom motif database files if any custom_database_file_line = self.getParameter( FinalOutputProcessor.CUSTOM_MOTIF_DATABASE_FILE_PARAM, False) if custom_database_file_line != None and not custom_database_file_line.isspace( ): self.dbFiles.append(custom_database_file_line) # Retrieve the ID and the name of the reference motif motif_name = parameter_dic[FinalOutputProcessor.PARAM_ReferenceMotif] for current_database in self.dbFiles: motif_ID = MotifUtils.getMotifIDFromTransfac( motif_name, current_database) if motif_ID != None: break parameter_dic[FinalOutputProcessor.PARAM_ReferenceMotifID] = motif_ID # Retrieve the Hypergeometric e/p-value threshold limit_value = self.getParameter( FinalOutputProcessor.DISPLAY_LIMIT_VALUE, False) if limit_value == None: limit_value = 1.0 # Prepare the processor output dir self.outPath = os.path.join(self.component.outputDir, self.component.getComponentPrefix()) shutil.rmtree(self.outPath, True) FileUtils.createDirectory(self.outPath, 0777) # Copy motif graph and stats files analysis = self.AnalyseMotifStats(input_commstruct) # Create motif logos self.createLogos(input_commstruct) # Copy input BED and custom motif files input_bed_file_destination_path = os.path.join( self.outPath, FinalOutputProcessor.PARAM_BEDFile) FileUtils.createDirectory(input_bed_file_destination_path) FileUtils.copyFile(parameter_dic[FinalOutputProcessor.PARAM_BEDFile], input_bed_file_destination_path) parameter_dic[FinalOutputProcessor.PARAM_BEDFile] = os.path.join( input_bed_file_destination_path, os.path.basename( parameter_dic[FinalOutputProcessor.PARAM_BEDFile])) # Copy the custom motif file (if any) to output location and count motifs in this db if FinalOutputProcessor.PARAM_CustomMotifDatabaseFile in parameter_dic.keys( ) and parameter_dic[ FinalOutputProcessor.PARAM_CustomMotifDatabaseFile] != None: custom_db_file_destination_path = os.path.join( self.outPath, FinalOutputProcessor.PARAM_CustomMotifDatabaseFile) FileUtils.createDirectory(custom_db_file_destination_path) FileUtils.copyFile( parameter_dic[ FinalOutputProcessor.PARAM_CustomMotifDatabaseFile], custom_db_file_destination_path) parameter_dic[ FinalOutputProcessor. PARAM_CustomMotifDatabaseFile] = os.path.join( custom_db_file_destination_path, os.path.basename(parameter_dic[ FinalOutputProcessor.PARAM_CustomMotifDatabaseFile])) count_custom_motif = MotifUtils.getMotifsNumberFromTransfac( parameter_dic[ FinalOutputProcessor.PARAM_CustomMotifDatabaseFile]) if (count_custom_motif != None): parameter_dic[FinalOutputProcessor. PARAM_CustomMotifDatabaseFileSize] = str( count_custom_motif) else: parameter_dic[FinalOutputProcessor. PARAM_CustomMotifDatabaseFileSize] = "0" # Output Results self.outputClassification(input_commstruct, analysis, limit_value, parameter_dic) # Copy other information FileUtils.copyFile( os.path.join(self.component.outputDir, Constants.PROGRESSION_XSL_FILE), self.outPath) FileUtils.copyFile( os.path.join(self.component.outputDir, Constants.PROGRESSION_XML_FILE), self.outPath) # Zip the complete result self.zipdir(self.outPath)