public Ontology_enrichment_class Analyse_data_instance(Data_class data_input) { Data_class data = data_input.Deep_copy(); data.Keep_only_input_rowNames(this.Bg_genes); int data_length = data.Data_length; int col_length = data.ColChar.Columns_length; string[] symbols; List <Ontology_enrichment_line_class> enrich_list = new List <Ontology_enrichment_line_class>(); Ontology_enrichment_line_class[] add_enrich; Entry_type_enum entryType; int timepoint; string sample_name; for (int indexCol = 0; indexCol < col_length; indexCol++) { entryType = data.ColChar.Columns[indexCol].EntryType; timepoint = data.ColChar.Columns[indexCol].Timepoint; sample_name = (string)data.ColChar.Columns[indexCol].SampleName.Clone(); symbols = data.Get_alphabetically_ordered_ncbi_official_symbols__with_non_empty_entries_in_indicated_column(indexCol); add_enrich = Generate_enrichment_lines_and_calculate_pvalues(symbols, entryType, timepoint, sample_name); add_enrich = Add_missing_process_information(add_enrich); add_enrich = Add_upregulated_downregulated_symbol_information(add_enrich, data, indexCol); enrich_list.AddRange(add_enrich); } Ontology_enrichment_line_class[] enrich_array = Add_missing_process_information(enrich_list.ToArray()); Ontology_enrichment_class enrich = new Ontology_enrichment_class(); enrich.Add_other_lines(enrich_array); return(enrich); }
public void Analyze_de_instance(Data_class data, string base_file_name) { this.Base_file_name = (string)base_file_name.Clone(); Data_class data_sep = Generate_data_instance_with_separated_or_combined_entries(data); data_sep.Set_all_ncbi_official_gene_symbols_to_upper_case(); Ontology_enrichment_class standard_onto_enrich_standard; Ontology_enrichment_class standard_onto_enrich_filtered = Do_standard_enrichment_analysis_and_write_results(data_sep, out standard_onto_enrich_standard); Ontology_enrichment_class dynamic_onto_enrich_filtered = Do_dynamic_enrichment_analysis_for_mbco_and_write(standard_onto_enrich_standard, data_sep); Write_parent_child_network_for_results_of_standard_enrichment_analysis(standard_onto_enrich_filtered); Write_scp_network_for_results_of_dynamic_enrichment_analsyis(dynamic_onto_enrich_filtered, standard_onto_enrich_filtered); Write_legend_for_networks(base_file_name); }
private Data_class Generate_data_instance_with_separated_or_combined_entries(Data_class data) { if (Options.Report) { Report_class.WriteLine("{0}: Prepare data for enrichment analysis", typeof(Mbc_enrichment_pipeline_class).Name); } bool positive_entries_exist = false; bool negative_entries_exist = false; int data_length = data.Data_length; Data_line_class data_line; int col_length = data.ColChar.Columns_length; for (int indexData = 0; indexData < data_length; indexData++) { data_line = data.Data[indexData]; for (int indexCol = 0; indexCol < col_length; indexCol++) { if (data_line.Columns[indexCol] > 0) { positive_entries_exist = true; } else if (data_line.Columns[indexCol] < 0) { negative_entries_exist = true; } } } if ((positive_entries_exist) && (negative_entries_exist)) { Data_class data_sep = new Data_class(); if (Options.Data_value_signs_of_interest.Contains(Data_value_signs_of_interest_enum.Combined)) { data_sep.Add_other_data_instance(data); } if (Options.Data_value_signs_of_interest.Contains(Data_value_signs_of_interest_enum.Upregulated)) { data_sep.Add_other_data_instance(data.Get_data_instance_with_only_upregulated_entries()); } if (Options.Data_value_signs_of_interest.Contains(Data_value_signs_of_interest_enum.Downregulated)) { data_sep.Add_other_data_instance(data.Get_data_instance_with_only_downregulated_entries()); } return(data_sep); } else { return(data); } }
private Ontology_enrichment_line_class[] Add_upregulated_downregulated_symbol_information(Ontology_enrichment_line_class[] enrichment_lines, Data_class data, int indexCol) { int de_symbols_length = data.Data_length; Data_line_class data_line; Dictionary <string, float> symbol_value_dict = new Dictionary <string, float>(); for (int indexS = 0; indexS < de_symbols_length; indexS++) { data_line = data.Data[indexS]; if (data_line.Columns[indexCol] != 0) { symbol_value_dict.Add(data_line.NCBI_official_symbol, data_line.Columns[indexCol]); } } enrichment_lines = enrichment_lines.OrderBy(l => l.Scp_name).ToArray(); int enrich_length = enrichment_lines.Length; Ontology_enrichment_line_class enrich_line; string symbol; int overlap_symbols_length; for (int indexE = 0; indexE < enrich_length; indexE++) { enrich_line = enrichment_lines[indexE]; overlap_symbols_length = enrich_line.Overlap_symbols.Length; for (int indexS = 0; indexS < overlap_symbols_length; indexS++) { symbol = (string)enrich_line.Overlap_symbols[indexS].Clone(); enrich_line.Overlap_symbols[indexS] = symbol + " (" + symbol_value_dict[symbol] + ")"; } } return(enrichment_lines); }
private Ontology_enrichment_class Do_dynamic_enrichment_analysis_for_mbco_and_write(Ontology_enrichment_class mbco_onto_enrich_standard, Data_class data) { if (Options.Report) { Report_class.WriteLine("{0}: Do dynamic enrichment analysis and write results", typeof(Mbc_enrichment_pipeline_class).Name); } string subdirectory = Get_results_subdirectory_for_indicated_ontology(Ontology_type_enum.Molecular_biology_cell); mbco_onto_enrich_standard.Order_by_complete_sample_pvalue(); int mbco_onto_enrich_length = mbco_onto_enrich_standard.Enrich.Length; Ontology_enrichment_line_class enrich_line; MBCO_association_line_class[] new_mbco_association_lines; MBCO_association_class new_mbco_association; List <Ontology_enrichment_line_class> current_onto_enrich = new List <Ontology_enrichment_line_class>(); Ontology_fisher_class mbco_fisher_dynamic; int col_length = data.ColChar.Columns.Length; Data_class current_data; Colchar_column_line_class current_column_line; Ontology_enrichment_class current_dynamic_onto_enrich; Ontology_enrichment_class complete_dynamic_onto_enrich = new Ontology_enrichment_class(); List <Ontology_enrichment_line_class> dynamic_onto_enrich_list = new List <Ontology_enrichment_line_class>(); int added_standard_results_count = 0; for (int indexCol = 0; indexCol < col_length; indexCol++) { current_data = data.Deep_copy(); current_data.Keep_only_input_columns_and_remove_all_rows_that_are_left_over_with_only_zero_values(indexCol); current_column_line = current_data.ColChar.Columns[0]; current_onto_enrich.Clear(); for (int indexMbco = 0; indexMbco < mbco_onto_enrich_length; indexMbco++) { enrich_line = mbco_onto_enrich_standard.Enrich[indexMbco]; if ((enrich_line.EntryType.Equals(current_column_line.EntryType)) && (enrich_line.Timepoint.Equals(current_column_line.Timepoint)) && (enrich_line.Sample_name.Equals(current_column_line.SampleName))) { current_onto_enrich.Add(enrich_line); added_standard_results_count++; } } if (current_onto_enrich.Count == 0) { throw new Exception(); } new_mbco_association_lines = Generate_new_mbco_association_lines_by_merging_neighboring_scps(current_onto_enrich.ToArray()); new_mbco_association = new MBCO_association_class(); new_mbco_association.Add_to_array(new_mbco_association_lines); mbco_fisher_dynamic = new Ontology_fisher_class(); mbco_fisher_dynamic.Generate(new_mbco_association, Ontology_type_enum.Molecular_biology_cell, this.Final_bg_genes); current_dynamic_onto_enrich = mbco_fisher_dynamic.Analyse_data_instance(current_data); complete_dynamic_onto_enrich.Add_other(current_dynamic_onto_enrich); } if (added_standard_results_count != mbco_onto_enrich_standard.Enrich.Length) { throw new Exception(); } complete_dynamic_onto_enrich.Add_other(mbco_onto_enrich_standard); complete_dynamic_onto_enrich.Keep_only_enrichment_lines_of_indicated_levels(Options.Scp_levels_for_dynamicEnrichment); complete_dynamic_onto_enrich.Write(subdirectory, "Dynamic_enrichment_results.txt"); Ontology_enrichment_class complete_dynamic_onto_enrich_filtered = complete_dynamic_onto_enrich.Deep_copy(); complete_dynamic_onto_enrich_filtered.Keep_enrichment_lines_below_pvalue_cutoff(Options.Maximum_pvalue_for_standardDynamicEnrichment); complete_dynamic_onto_enrich_filtered.Keep_top_x_predictions_per_level_for_each_sample(Options.Kept_top_predictions_dynamicEnrichment_per_level); complete_dynamic_onto_enrich_filtered.Keep_top_x_predictedSCPs_as_part_of_SCPunit_or_singleSCPs(Options.Kept_singleSCPs_dynamicEnrichment_per_level); complete_dynamic_onto_enrich_filtered.Write(subdirectory, "Dynamic_enrichment_results_filtered.txt"); return(complete_dynamic_onto_enrich_filtered); }
private Ontology_enrichment_class Do_standard_enrichment_analysis_and_write_results(Data_class data, out Ontology_enrichment_class onto_enrich) { if (Options.Report) { Report_class.WriteLine("{0}: Do standard enrichment analysis and write results", typeof(Mbc_enrichment_pipeline_class).Name); } onto_enrich = this.MBCO_fisher_standard.Analyse_data_instance(data); Ontology_type_enum ontology = Ontology_type_enum.Molecular_biology_cell; string subdirectory = Get_results_subdirectory_for_indicated_ontology(ontology); onto_enrich.Write(subdirectory, "Standard_enrichment_results.txt"); Ontology_enrichment_class onto_enrich_filtered = onto_enrich.Deep_copy(); onto_enrich_filtered.Keep_enrichment_lines_below_pvalue_cutoff(Options.Maximum_pvalue_for_standardDynamicEnrichment); onto_enrich_filtered.Keep_top_x_predictions_per_level_for_each_sample(Options.Kept_top_predictions_standardEnrichment_per_level); onto_enrich_filtered.Write(subdirectory, "Standard_enrichment_results_filtered.txt"); return(onto_enrich_filtered); }