Ejemplo n.º 1
0
    def test_rdf_gxa_dex_levels(self):
        cond_labels = set()
        rdf = rdf_gxa_namespaces()
        rdf += rdf_gxa_dex_levels("E-MTAB-4289", "RNASeq", None, cond_labels,
                                  GxaTest.gene_filter)

        log.info("rdf_gxa_dex_levels() test output (truncated):\n%s\n\n",
                 rdf[0:4000])
        log.info("rdf_gxa_dex_levels(), returned conditions: %s", cond_labels)

        graph = rdflib.Graph()
        graph.parse(data=rdf, format="turtle")

        self.assert_rdf(graph,
                        "ASK { bkr:gene_ensrna050013890 a bioschema:Gene }",
                        "Test gene ENSRNA050013890 not stated!")

        self.assert_rdf(
            graph,
            "ASK { bkr:gene_ensrna050013890 schema:identifier 'ENSRNA050013890' }",
            "ENSRNA050013890 identifier not stated!")

        self.assert_rdf(
            graph,
            "ASK { bkr:gene_ensrna050013890 rdfs:label 'LSU_rRNA_eukarya'. }",
            "ENSRNA050013890 rdfs:label not stated!")

        cond_uri = "bkr:gxaexp_E-MTAB-4289_traescs7d02g366500_blumeria_graminis_0x3B_72_hour_vs_control"
        self.assert_rdf(
            graph, f"""ASK {{ {cond_uri} a rdfs:Statement; 
				rdf:subject bkr:gene_traescs7d02g366500;
				rdf:predicate bioschema:expressedIn;
				rdf:object bkr:cond_blumeria_graminis_0x3B_72_hour;
			}}""", f"{cond_uri} not stated!")
        self.assert_rdf(
            graph,
            "ASK { bkr:gene_traescs7d02g366500 bioschema:expressedIn bkr:cond_blumeria_graminis_0x3B_72_hour. }",
            f"{cond_uri} not stated (summary statement)!")

        self.assert_rdf(graph, f"ASK {{ {cond_uri} agri:log2FoldChange 2.2 }}",
                        f"{cond_uri}'s fold-change not stated!")

        self.assert_rdf(
            graph, f"""ASK {{ {cond_uri} agri:pvalue ?pvalue.
				         FILTER ( ?pvalue < 0.05 ) }}""",
            f"{cond_uri}'s pvalue not stated or bad pvalue!")

        self.assert_rdf(
            graph, f"ASK {{ {cond_uri} agri:evidence bkr:exp_E-MTAB-4289 }}",
            f"{cond_uri}'s evidence not stated!")

        self.assert_rdf(
            graph, f"ASK {{ {cond_uri} agri:baseCondition bkr:cond_control }}",
            f"{cond_uri}'s base condition not stated!")

        self.assertEqual(
            set([
                'control', 'Blumeria graminis; 24 hour',
                'Blumeria graminis; 72 hour'
            ]), cond_labels, "Wrong set of conditions returned!")
Ejemplo n.º 2
0
    def test_rdf_gxa_tpm_levels(self):
        cond_labels = set()
        rdf = rdf_gxa_namespaces()
        rdf += rdf_gxa_tpm_levels("E-MTAB-4484", None, cond_labels,
                                  GxaTest.gene_filter)

        log.info("rdf_gxa_tpm_levels() test output (truncated):\n%s\n\n",
                 rdf[0:4000])
        log.info("rdf_gxa_tpm_levels(), returned conditions: %s", cond_labels)

        graph = rdflib.Graph()
        graph.parse(data=rdf, format="turtle")

        self.assert_rdf(
            graph, "ASK { bkr:gene_traescs7a02g356100 a bioschema:Gene }",
            "Test gene TRAESCS7A02G356100 not stated!")

        self.assert_rdf(
            graph,
            "ASK { bkr:gene_traescs7a02g356100 schema:identifier 'TRAESCS7A02G356100' }",
            "TRAESCS7A02G356100 identifier not stated!")

        self.assert_rdf(
            graph, "ASK { bkr:gene_traescs1a02g115900 rdfs:label 'ALI1'. }",
            "traescs1a02g115900 rdfs:label not stated!")

        self.assert_rdf(
            graph,
            "ASK { bkr:gxaexp_E-MTAB-4484_traescs7a02g356100_whole_plant_fruit_formation_stage_30_to_50_0x25_0x2C_leaf a rdfs:Statement }",
            "traescs7a02g356100/stage-30-50 not stated!")

        self.assert_rdf(
            graph,
            "ASK { bkr:gxaexp_E-MTAB-4484_traescs7a02g356100_whole_plant_fruit_formation_stage_30_to_50_0x25_0x2C_leaf agri:tpmCount 17.0 }",
            "traescs7a02g356100/stage-30-50 without TPM count!")

        self.assert_rdf(
            graph,
            "ASK { bkr:gxaexp_E-MTAB-4484_traescs7a02g356100_whole_plant_fruit_formation_stage_30_to_50_0x25_0x2C_leaf agri:tpmCount 17.0 }",
            "traescs7a02g356100/stage-30-50 wrong or no TPM count!")

        self.assert_rdf(
            graph,
            "ASK { bkr:gxaexp_E-MTAB-4484_traescs7a02g356100_whole_plant_fruit_formation_stage_30_to_50_0x25_0x2C_leaf agri:ordinalTpm 'medium' }",
            "traescs7a02g356100/stage-30-50 wrong or no ordinal TPM!")

        self.assert_rdf(
            graph,
            """ASK { bkr:gxaexp_E-MTAB-4484_traescs7a02g356100_whole_plant_fruit_formation_stage_30_to_50_0x25_0x2C_leaf
								rdf:subject bkr:gene_traescs7a02g356100;
								rdf:predicate bioschema:expressedIn;
								rdf:object bkr:cond_whole_plant_fruit_formation_stage_30_to_50_0x25_0x2C_leaf;
								agri:evidence bkr:exp_E-MTAB-4484. }""",
            "traescs7a02g356100/stage-30-50 wrong statements!")

        self.assertTrue(
            "whole plant fruit formation stage 30 to 50%, leaf" in cond_labels,
            "Condition not in the result!")
Ejemplo n.º 3
0
    def test_rdf_gxa_dex_levels_microarray(self):
        cond_labels = set()
        rdf = rdf_gxa_namespaces()
        rdf += rdf_gxa_dex_levels("E-MTAB-8326", "Microarray", None,
                                  cond_labels, GxaTest.gene_filter)

        log.info(
            "rdf_gxa_dex_levels(Microarray) test output (truncated):\n%s\n\n",
            rdf[0:4000])
        log.info("rdf_gxa_dex_levels(Microarray), returned conditions: %s",
                 cond_labels)

        graph = rdflib.Graph()
        graph.parse(data=rdf, format="turtle")

        self.assert_rdf(
            graph, """ASK { 
		    ?dex a rdfs:Statement;
					rdf:subject ?gene;
					rdf:predicate bioschema:expressedIn;
					rdf:object bkr:cond_vip2_overexpression;
					agri:baseCondition bkr:cond_wild_type_genotype;
					agri:log2FoldChange ?fc;
					agri:pvalue ?pvalue;
					agri:evidence bkr:exp_E-MTAB-8326;
					agri:timePoint bkr:cond_0_hours
				.
					
				FILTER ( ?pvalue < 0.05 )
				FILTER ( ABS( ?fc ) > 1 )
				
				?gene a bioschema:Gene;
					schema:identifier "AT1G01010";
					rdfs:label "NAC001"
				.   
		  }""", "DEX statements about 0 hrs not found!")

        self.assert_rdf(
            graph, """ASK { 
		    ?dex a rdfs:Statement;
					rdf:subject ?gene;
					rdf:predicate bioschema:expressedIn;
					rdf:object ?cond;
					agri:baseCondition ?baseline;
					agri:log2FoldChange ?fc;
					agri:pvalue ?pvalue;
					agri:evidence bkr:exp_E-MTAB-8326;
					agri:timePoint bkr:cond_72_hours
				.
					
				FILTER ( ?pvalue < 0.05 )
				FILTER ( ABS( ?fc ) > 1 )
		  }""", "DEX statements about 72 hrs not found!")
Ejemplo n.º 4
0
    def test_rdf_ae_experiments(self):
        rdf = rdf_gxa_namespaces()
        rdf += rdf_ae_experiment(AeTest.ae_exps['E-MTAB-8326'], None)
        rdf += rdf_ae_experiment(AeTest.ae_exps['E-GEOD-25759'], None)
        log.info("rdf_ae_experiment() test output (truncated):\n%s\n\n",
                 rdf[0:4000])

        graph = rdflib.Graph()
        graph.parse(data=rdf, format="turtle")

        self.assert_rdf(
            graph, """ASK {
			  bkr:exp_E-MTAB-8326 a bioschema:Study;
					schema:identifier "E-MTAB-8326";
					dc:title ?title;
					schema:description ?descr;
					schema:datePublished "2019-09-26";
					schema:additionalProperty bkr:gxa_analysis_type_differential.	
				
				FILTER ( REGEX ( ?title, "Transcriptome analysis of Arabidopsis VIRE2-INTERACTING PROTEIN2" ) )
				FILTER ( REGEX ( ?descr, "C-terminal NOT2 domain of VIP2 interacts with VirE2" ) )
			}""", "Basic RDF data about E-MTAB-8326 not found!")

        self.assert_rdf(
            graph, """ASK {
				bkr:exp_E-GEOD-25759 schema:additionalProperty bkr:specie_triticum_aestivum.
				bkr:specie_triticum_aestivum a schema:PropertyValue;
					schema:propertyID "organism";
					schema:value "Triticum aestivum".
			}""", "Specie RDF data about E-GEOD-25759 not found!")

        self.assert_rdf(
            graph, """ASK {
				bkr:exp_E-GEOD-25759 schema:subjectOf bkr:pmid_21981858.
				bkr:pmid_21981858 a agri:ScholarlyPublication;
					dc:title ?title; 
					agri:authorsList ?authors;
					agri:pmedId "21981858"
				.
				
				FILTER ( REGEX ( ?title, "Effect of the down-regulation of the high Grain Protein Content" ) )
				FILTER ( REGEX ( ?authors, "Cantu D, Pearce SP, Distelfeld A" ) )
			}""", "Publication RDF data about E-GEOD-25759 not found!")
Ejemplo n.º 5
0
def gxa_rdf_all(exp_js: dict, out=stdout, target_gene_ids: set = None):
    if not out: out = io.StringIO()

    print(rdf_gxa_namespaces(), file=out)
    rdf_ae_experiment(exp_js, out)

    exp_acc = exp_js['accession']
    ae_tech_type = exp_js["aeTechnologyType"]
    gxa_analysis_type = exp_js['gxaAnalysisType']
    cond_labels = set()

    if "Baseline" == gxa_analysis_type:
        rdf_gxa_tpm_levels(exp_acc, out, cond_labels, target_gene_ids)
    else:
        rdf_gxa_dex_levels(exp_acc, ae_tech_type, out, cond_labels,
                           target_gene_ids)

    rdf_gxa_conditions(cond_labels, out)

    if (type(out) == io.StringIO): return out.getvalue()
Ejemplo n.º 6
0
    def test_gxa_conditions(self):
        cond_labels = [
            'pericarp', 'Seed growth', '10 days after anthesis', '24 hours'
        ]
        rdf = rdf_gxa_namespaces()
        rdf += rdf_gxa_conditions(cond_labels, None)
        log.info("rdf_gxa_conditions() test output:\n%s", rdf)

        graph = rdflib.Graph()
        graph.parse(data=rdf, format="turtle")

        probes = [
            ("bkr:cond_pericarp a agri:StudyFactor; schema:name 'pericarp'",
             "Cannot find RDF for pericarp!"),
            ("bkr:cond_seed_growth a agri:StudyFactor; schema:name 'Seed growth'",
             "Cannot find RDF for seed growth!"),
            ("bkr:cond_10_days_after_anthesis a agri:StudyFactor; schema:name '10 days after anthesis'",
             "Cannot find RDF for 10 days after anthesis!"),
            ("bkr:cond_pericarp dc:type <http://aims.fao.org/aos/agrovoc/c_25199>",
             "Cannot find agrovoc:c_25199 for pericarp!"),
            ("<http://aims.fao.org/aos/agrovoc/c_25199> schema:name \"pericarp\"",
             "Cannot find schema:name for pericarp!"),
            ("<http://purl.obolibrary.org/obo/PO_0009084> schema:identifier \"PO_0009084\"",
             "Cannot find schema:name for pericarp!"),
            ("<http://knetminer.org/data/rdf/resources/plantontologyterm_po_0009010> schema:sameAs <http://purl.obolibrary.org/obo/PO_0009010>",
             "Cannot fine knetminer/PO sameAs annotation for PO:0009010!"),
            ("bkr:cond_10_days_after_anthesis dc:type <http://aims.fao.org/aos/agrovoc/c_2992>",
             "Cannot find 'flowering' annotation for anthesis entry!"),
            ("bkr:cond_10_days_after_anthesis dc:type <http://www.cropontology.org/rdf/CO_330:0000155>",
             "Cannot find 'days' annotation for anthesis entry!"),
            ("""
					bkr:cond_24_hours a agri:StudyFactor;
						schema:name "24 hours";
						schema:value 24;
						schema:unitText "hours"
					.
				""", "Cannot find right annotations about the 24 hours time point!")
        ]

        for (rdf, msg) in probes:
            self.assert_rdf(graph, "ASK { %s }" % rdf, msg)
Ejemplo n.º 7
0
    def test_extended_baseline(self):
        cond_labels = set()
        rdf = rdf_gxa_namespaces()
        rdf += rdf_gxa_dex_levels("E-MTAB-8073", "RNASeq", None, cond_labels,
                                  GxaTest.gene_filter)

        log.info(
            "rdf_gxa_dex_levels(Microarray) test output (truncated):\n%s\n\n",
            rdf[0:4000])
        log.info("rdf_gxa_dex_levels(Microarray), returned conditions: %s",
                 cond_labels)

        graph = rdflib.Graph()
        graph.parse(data=rdf, format="turtle")

        self.assert_rdf(
            graph, """ASK { 
		    ?dex a rdfs:Statement;
					rdf:subject ?gene;
					rdf:predicate bioschema:expressedIn;
					rdf:object bkr:cond_sodium_chloride_0x3B_150_millimolar;
					agri:baseCondition bkr:cond_none, bkr:cond_wild_type_genotype;
					agri:log2FoldChange ?fc;
					agri:pvalue ?pvalue;
					agri:evidence bkr:exp_E-MTAB-8073;
				.
					
				FILTER ( ?pvalue < 0.05 )
				FILTER ( ABS( ?fc ) > 1 )
				
				
		  }""", "DEX statements about sodium_chloride not found!")

        self.assertTrue(
            "wild type genotype" in cond_labels,
            "Extended base condition in DEX experiment not found!")