Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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");
        }
Esempio n. 3
0
        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);
        }