public Ontology_enrichment_class Calculate_p_values_and_do_multiple_hypothesis_correction(Deg_class deg_input) { if (Options.Report) { Report_class.Write_major_separation_line(); Report_class.WriteLine("{0}: Calculate p values and perform multiple hypothesis correction for {1}", typeof(Ontology_fisher_exact_class).Name, this.Ontology_association.Ontology); } Deg_class deg = deg_input.Deep_copy(); deg.Keep_only_input_genes(this.Background_genes); this.Ontology_association.Process_gene_associations = this.Ontology_association.Process_gene_associations.OrderBy(l => l.ProcessName).ThenBy(l => l.GeneSymbol).ToArray(); deg.Degs = deg.Degs.OrderBy(l => l.Sequencing_run).ThenBy(l => l.Cell).ThenBy(l => l.Condition1).ThenBy(l => l.Condition2).ToArray(); int degs_length = deg.Degs.Length; Deg_line_class deg_line; List <string> inputGenes = new List <string>(); Ontology_enrichment_line_class[] add_enrichment_results; List <Ontology_enrichment_line_class> enrichment_results = new List <Ontology_enrichment_line_class>(); for (int indexDeg = 0; indexDeg < degs_length; indexDeg++) { deg_line = deg.Degs[indexDeg]; if ((indexDeg == 0) || (!deg_line.Sequencing_run.Equals(deg.Degs[indexDeg - 1].Sequencing_run)) || (!deg_line.Cell.Equals(deg.Degs[indexDeg - 1].Cell)) || (!deg_line.Condition1.Equals(deg.Degs[indexDeg - 1].Condition1)) || (!deg_line.Condition2.Equals(deg.Degs[indexDeg - 1].Condition2))) { inputGenes.Clear(); } if ((indexDeg != 0) && (!deg_line.Sequencing_run.Equals(deg.Degs[indexDeg - 1].Sequencing_run)) && (!deg_line.Cell.Equals(deg.Degs[indexDeg - 1].Cell)) && (!deg_line.Condition1.Equals(deg.Degs[indexDeg - 1].Condition1)) && (!deg_line.Condition2.Equals(deg.Degs[indexDeg - 1].Condition2)) && (deg_line.Gene.Equals(deg_line.Gene))) { throw new Exception(); //duplicated gene in same condition } inputGenes.Add(deg_line.Gene); if ((indexDeg == degs_length - 1) || (!deg_line.Sequencing_run.Equals(deg.Degs[indexDeg + 1].Sequencing_run)) || (!deg_line.Cell.Equals(deg.Degs[indexDeg + 1].Cell)) || (!deg_line.Condition1.Equals(deg.Degs[indexDeg + 1].Condition1)) || (!deg_line.Condition2.Equals(deg.Degs[indexDeg + 1].Condition2))) { add_enrichment_results = Calculate_p_values_and_do_mutliple_hypothesis_correcion_for_input_genes(inputGenes.ToArray(), deg_line); enrichment_results.AddRange(add_enrichment_results); } } Ontology_enrichment_class onto_enrich = new Ontology_enrichment_class(); onto_enrich.Add_to_array(enrichment_results.ToArray()); return(onto_enrich); }
public static void Main() { Deg_class deg = new Deg_class(); deg.Generate_by_reading_files(); Ontology_process_analysis_class onto_process = new Ontology_process_analysis_class(); onto_process.Options.Ontologies = new Ontology_type_enum[] { Ontology_type_enum.GO_biological_process_2017, Ontology_type_enum.Kegg_2016, Ontology_type_enum.Reactome_2016, Ontology_type_enum.Wikipathways_2016 }; onto_process.Generate(); Ontology_enrichment_class onto_enrich = onto_process.Do_fisher_exact_test_for_de_instance_filter_and_write_for_individual_ontology(deg); onto_enrich.Keep_top_predictions_per_dataset_and_ontology_based_on_pvalue(20); onto_enrich.Write_in_results_directory("LINCS_DtoxS_enrichment_results.txt"); }
public Ontology_enrichment_class Do_fisher_exact_test_for_de_instance_filter_and_write_for_individual_ontology(Deg_class deg) { int ontologies_length = this.Ontology_fishers.Length; Ontology_fisher_exact_class fisher; Ontology_enrichment_class onto_enrich = new Ontology_enrichment_class(); Ontology_enrichment_class onto_enrich_add; for (int indexO = 0; indexO < ontologies_length; indexO++) { fisher = this.Ontology_fishers[indexO]; onto_enrich_add = fisher.Calculate_p_values_and_do_multiple_hypothesis_correction(deg); onto_enrich.Add_other(onto_enrich_add); } return(onto_enrich); }