diff --git a/demo.ipynb b/demo.ipynb index 6a35a68..8f7d8bc 100644 --- a/demo.ipynb +++ b/demo.ipynb @@ -13,24 +13,31 @@ "cell_type": "code", "execution_count": 1, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Loading custom data...\n" + ] + } + ], "source": [ "from popper import Popper\n", - "path = '/dfs/user/kexinh/popper_data_processed'\n", - "agent = Popper(llm=\"claude-3-5-sonnet-20240620\")\n", - "agent.register_data(data_path=path, loader_type='bio')" + "# Modify the path to the data folder\n", + "path = '/Users/jinyoungkim/Desktop/Projects/POPPER/data'\n", + "agent = Popper(llm=\"claude-3-7-sonnet-20250219\")\n", + "agent.register_data(data_path=path, loader_type='custom')" ] }, { - "cell_type": "markdown", + "cell_type": "code", + "execution_count": 2, "metadata": {}, + "outputs": [], "source": [ - "The agent requires a LLM model name, so please make sure API key is set in the environment variable or specify here. Here using claude model:\n", - "\n", - "```python\n", "import os\n", - "os.setenv('ANTHROPIC_API_KEY', 'YOUR_API_KEY')\n", - "```" + "os.environ['ANTHROPIC_API_KEY'] = '' # put in correct Anthropic API key" ] }, { @@ -40,1147 +47,20 @@ "In the initial instantiation of Popper, we focus on data analysis experiments that are drawn from a massive hypothesis free databases. Here is the hypothesis-free datasets look like: " ] }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DescriptionTissueExpressionGene
0ENSG00000186092Adipose - Subcutaneous0.045396OR4F5
\n", - "
" - ], - "text/plain": [ - " Description Tissue Expression Gene\n", - "0 ENSG00000186092 Adipose - Subcutaneous 0.045396 OR4F5" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
DATE ADDED TO CATALOGPUBMEDIDFIRST AUTHORDATEJOURNALLINKSTUDYDISEASE/TRAITINITIAL SAMPLE SIZEREPLICATION SAMPLE SIZE...CONTEXTINTERGENICRISK ALLELE FREQUENCYP-VALUEPVALUE_MLOGP-VALUE (TEXT)OR or BETA95% CI (TEXT)PLATFORM [SNPS PASSING QC]CNV
02018-07-3027618447Surendran P2016-10-01Nat Genetwww.ncbi.nlm.nih.gov/pubmed/27618447Trans-ancestry meta-analyses identify rare and...systolic blood pressureup to 165,276 European ancestry individuals, u...up to 125,713 European ancestry individuals, u......intron_variant0.00.52618.000000e-098.09691NaN0.0196mmHg decreaseIllumina [242296]N
\n", - "

1 rows × 34 columns

\n", - "
" - ], - "text/plain": [ - " DATE ADDED TO CATALOG PUBMEDID FIRST AUTHOR DATE JOURNAL \\\n", - "0 2018-07-30 27618447 Surendran P 2016-10-01 Nat Genet \n", - "\n", - " LINK \\\n", - "0 www.ncbi.nlm.nih.gov/pubmed/27618447 \n", - "\n", - " STUDY DISEASE/TRAIT \\\n", - "0 Trans-ancestry meta-analyses identify rare and... systolic blood pressure \n", - "\n", - " INITIAL SAMPLE SIZE \\\n", - "0 up to 165,276 European ancestry individuals, u... \n", - "\n", - " REPLICATION SAMPLE SIZE ... CONTEXT \\\n", - "0 up to 125,713 European ancestry individuals, u... ... intron_variant \n", - "\n", - " INTERGENIC RISK ALLELE FREQUENCY P-VALUE PVALUE_MLOG P-VALUE (TEXT) \\\n", - "0 0.0 0.5261 8.000000e-09 8.09691 NaN \n", - "\n", - " OR or BETA 95% CI (TEXT) PLATFORM [SNPS PASSING QC] CNV \n", - "0 0.0196 mmHg decrease Illumina [242296] N \n", - "\n", - "[1 rows x 34 columns]" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
gene_idtranscript_idchrgene_startgene_endstrandtranscript_starttranscript_endtsstranscript_is_canonicalgene_namepercentage_gene_gc_contentgene_type
0ENSG00000228037ENST0000042421512581560258453312581560258453325815601.0NaN51.11lncRNA
\n", - "
" - ], - "text/plain": [ - " gene_id transcript_id chr gene_start gene_end strand \\\n", - "0 ENSG00000228037 ENST00000424215 1 2581560 2584533 1 \n", - "\n", - " transcript_start transcript_end tss transcript_is_canonical \\\n", - "0 2581560 2584533 2581560 1.0 \n", - "\n", - " gene_name percentage_gene_gc_content gene_type \n", - "0 NaN 51.11 lncRNA " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
96170206363YCR011CYCL025CgeneticPUBMED:16269340559292559292High Throughput-5.6431
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id experimental_system_type \\\n", - "96170 206363 YCR011C YCL025C genetic \n", - "\n", - " pubmed_id organism_id_a organism_id_b throughput_type \\\n", - "96170 PUBMED:16269340 559292 559292 High Throughput \n", - "\n", - " experimental_score \n", - "96170 -5.6431 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
annotationPvaluePvalue_BurdenPvalue_SKATBETA_BurdenSE_Burdengenepheno_description
0synonymous0.721990.851980.522150.003470.018598TSPAN6Eye problems/disorders; Macular degeneration
\n", - "
" - ], - "text/plain": [ - " annotation Pvalue Pvalue_Burden Pvalue_SKAT BETA_Burden SE_Burden \\\n", - "0 synonymous 0.72199 0.85198 0.52215 0.00347 0.018598 \n", - "\n", - " gene pheno_description \n", - "0 TSPAN6 Eye problems/disorders; Macular degeneration " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
annotationPvaluePvalue_BurdenPvalue_SKATBETA_BurdenSE_Burdengenepheno_description
0missense_LC0.854340.696370.87135-0.0046970.012037TSPAN6Treatment/medication code; co-dydramol
\n", - "
" - ], - "text/plain": [ - " annotation Pvalue Pvalue_Burden Pvalue_SKAT BETA_Burden SE_Burden \\\n", - "0 missense_LC 0.85434 0.69637 0.87135 -0.004697 0.012037 \n", - "\n", - " gene pheno_description \n", - "0 TSPAN6 Treatment/medication code; co-dydramol " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
annotationPvaluePvalue_BurdenPvalue_SKATBETA_BurdenSE_Burdengenepheno_description
0pLoF0.591450.963980.42053-0.0005380.011913DPM1Mean L1 in fornix on FA skeleton
\n", - "
" - ], - "text/plain": [ - " annotation Pvalue Pvalue_Burden Pvalue_SKAT BETA_Burden SE_Burden \\\n", - "0 pLoF 0.59145 0.96398 0.42053 -0.000538 0.011913 \n", - "\n", - " gene pheno_description \n", - "0 DPM1 Mean L1 in fornix on FA skeleton " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
121446241421ENSG00000169217ENSG00000144028physicalPUBMED:1735393196069606High Throughput1.0
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id \\\n", - "121446 241421 ENSG00000169217 ENSG00000144028 \n", - "\n", - " experimental_system_type pubmed_id organism_id_a \\\n", - "121446 physical PUBMED:17353931 9606 \n", - "\n", - " organism_id_b throughput_type experimental_score \n", - "121446 9606 High Throughput 1.0 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
143903269293ENSG00000114395ENSG00000109103physicalPUBMED:1616907096069606High Throughput1.0
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id \\\n", - "143903 269293 ENSG00000114395 ENSG00000109103 \n", - "\n", - " experimental_system_type pubmed_id organism_id_a \\\n", - "143903 physical PUBMED:16169070 9606 \n", - "\n", - " organism_id_b throughput_type experimental_score \n", - "143903 9606 High Throughput 1.0 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
165214299191SPBC30D10.04SPAC14C4.13geneticPUBMED:18931302284812284812High Throughput-366.0
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id experimental_system_type \\\n", - "165214 299191 SPBC30D10.04 SPAC14C4.13 genetic \n", - "\n", - " pubmed_id organism_id_a organism_id_b throughput_type \\\n", - "165214 PUBMED:18931302 284812 284812 High Throughput \n", - "\n", - " experimental_score \n", - "165214 -366.0 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
433922637589YDR515WYAL030WphysicalPUBMED:22271760559292559292High Throughput0.736666667
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id experimental_system_type \\\n", - "433922 637589 YDR515W YAL030W physical \n", - "\n", - " pubmed_id organism_id_a organism_id_b throughput_type \\\n", - "433922 PUBMED:22271760 559292 559292 High Throughput \n", - "\n", - " experimental_score \n", - "433922 0.736666667 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
503979740709ENSG00000160201ENSG00000063244physicalPUBMED:2293962996069606High Throughput0.874
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id \\\n", - "503979 740709 ENSG00000160201 ENSG00000063244 \n", - "\n", - " experimental_system_type pubmed_id organism_id_a \\\n", - "503979 physical PUBMED:22939629 9606 \n", - "\n", - " organism_id_b throughput_type experimental_score \n", - "503979 9606 High Throughput 0.874 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
573129818564YLR418CYLR103CgeneticPUBMED:23390603559292559292High Throughput|Low Throughput4.75e-06
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id experimental_system_type \\\n", - "573129 818564 YLR418C YLR103C genetic \n", - "\n", - " pubmed_id organism_id_a organism_id_b \\\n", - "573129 PUBMED:23390603 559292 559292 \n", - "\n", - " throughput_type experimental_score \n", - "573129 High Throughput|Low Throughput 4.75e-06 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
632718908565YBL009WYPR058WgeneticPUBMED:22282571559292559292High Throughput-0.504
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id experimental_system_type \\\n", - "632718 908565 YBL009W YPR058W genetic \n", - "\n", - " pubmed_id organism_id_a organism_id_b throughput_type \\\n", - "632718 PUBMED:22282571 559292 559292 High Throughput \n", - "\n", - " experimental_score \n", - "632718 -0.504 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
637481913336ENSG00000206560ENSG00000103194physicalPUBMED:2425517896069606High Throughput1.0
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id \\\n", - "637481 913336 ENSG00000206560 ENSG00000103194 \n", - "\n", - " experimental_system_type pubmed_id organism_id_a \\\n", - "637481 physical PUBMED:24255178 9606 \n", - "\n", - " organism_id_b throughput_type experimental_score \n", - "637481 9606 High Throughput 1.0 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
665944986367YJR017CYHR114WgeneticPUBMED:24470217559292559292High Throughput-0.2
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id experimental_system_type \\\n", - "665944 986367 YJR017C YHR114W genetic \n", - "\n", - " pubmed_id organism_id_a organism_id_b throughput_type \\\n", - "665944 PUBMED:24470217 559292 559292 High Throughput \n", - "\n", - " experimental_score \n", - "665944 -0.2 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
interaction_idgene_a_idgene_b_idexperimental_system_typepubmed_idorganism_id_aorganism_id_bthroughput_typeexperimental_score
19350012841862ENSG00000169083ENSG00000097007physicalPUBMED:2472807496069606High Throughput2.13
\n", - "
" - ], - "text/plain": [ - " interaction_id gene_a_id gene_b_id \\\n", - "1935001 2841862 ENSG00000169083 ENSG00000097007 \n", - "\n", - " experimental_system_type pubmed_id organism_id_a \\\n", - "1935001 physical PUBMED:24728074 9606 \n", - "\n", - " organism_id_b throughput_type experimental_score \n", - "1935001 9606 High Throughput 2.13 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
rs_idgene_idcell_type_nameqtl_scoregene_name
0rs111972115ENSG00000134250CEDAR-MONOCYTE_CD144.851274NOTCH2
\n", - "
" - ], - "text/plain": [ - " rs_id gene_id cell_type_name qtl_score gene_name\n", - "0 rs111972115 ENSG00000134250 CEDAR-MONOCYTE_CD14 4.851274 NOTCH2" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [], + "source": [ + "df = list(agent.data_loader.table_dict.items())[0][1]" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -1202,142 +82,150 @@ " \n", " \n", " \n", - " rs_id\n", - " gene_id\n", - " cell_type_name\n", - " qtl_score\n", - " gene_name\n", + " time\n", + " low\n", + " high\n", + " open\n", + " close\n", + " volume\n", " \n", " \n", " \n", " \n", " 0\n", - " rs41265213\n", - " ENSG00000160712\n", - " SCALLOP_2020-UBERON_0001969\n", - " 5.137153\n", - " IL6R\n", + " 1644475980\n", + " 43976.59\n", + " 43996.20\n", + " 43991.89\n", + " 43980.88\n", + " 0.698505\n", " \n", - " \n", - "\n", - "" - ], - "text/plain": [ - " rs_id gene_id cell_type_name qtl_score \\\n", - "0 rs41265213 ENSG00000160712 SCALLOP_2020-UBERON_0001969 5.137153 \n", - "\n", - " gene_name \n", - "0 IL6R " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - "
rs_idgene_idcell_type_nameqtl_scoregene_name
1164447604043973.4343990.4943980.0443983.5114.357343
239217rs12756687ENSG00000265491GTEx-sQTL-Brain_Caudate_basal_ganglia3.198466RNF1152164447610043983.5044010.1743983.5044005.242.686727
\n", - "
" - ], - "text/plain": [ - " rs_id gene_id cell_type_name \\\n", - "239217 rs12756687 ENSG00000265491 GTEx-sQTL-Brain_Caudate_basal_ganglia \n", - "\n", - " qtl_score gene_name \n", - "239217 3.198466 RNF115 " - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "
\n", - "\n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", - " \n", - " \n", " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", " \n", " \n", "
RSIDCHRPOSA1A2MAF
3164447616044001.9244010.3044005.2344010.281.060343
0rs1165879301:727841_G_A1727841GA0.0507034164447622043968.1044010.7244006.8143981.913.283861
.....................
1576232173908368096930.0096961.3496961.3496946.690.487527
1576233173908374096919.1696965.9896946.6796939.414.036762
1576234173908380096939.4297024.7796939.4397016.653.024262
1576235173908386096994.4097034.3797016.6597023.310.289057
1576236173908392097023.3297073.8397023.3297043.910.226021
\n", + "

1576237 rows × 6 columns

\n", "
" ], "text/plain": [ - " RS ID CHR POS A1 A2 MAF\n", - "0 rs116587930 1:727841_G_A 1 727841 G A 0.050703" + " time low high open close volume\n", + "0 1644475980 43976.59 43996.20 43991.89 43980.88 0.698505\n", + "1 1644476040 43973.43 43990.49 43980.04 43983.51 14.357343\n", + "2 1644476100 43983.50 44010.17 43983.50 44005.24 2.686727\n", + "3 1644476160 44001.92 44010.30 44005.23 44010.28 1.060343\n", + "4 1644476220 43968.10 44010.72 44006.81 43981.91 3.283861\n", + "... ... ... ... ... ... ...\n", + "1576232 1739083680 96930.00 96961.34 96961.34 96946.69 0.487527\n", + "1576233 1739083740 96919.16 96965.98 96946.67 96939.41 4.036762\n", + "1576234 1739083800 96939.42 97024.77 96939.43 97016.65 3.024262\n", + "1576235 1739083860 96994.40 97034.37 97016.65 97023.31 0.289057\n", + "1576236 1739083920 97023.32 97073.83 97023.32 97043.91 0.226021\n", + "\n", + "[1576237 rows x 6 columns]" ] }, + "execution_count": 4, "metadata": {}, - "output_type": "display_data" - }, + "output_type": "execute_result" + } + ], + "source": [ + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ { "data": { "text/html": [ @@ -1359,23 +247,31 @@ " \n", " \n", " \n", - " pheno_name\n", - " description\n", + " time\n", + " low\n", + " high\n", + " open\n", + " close\n", + " volume\n", " \n", " \n", " \n", " \n", " 0\n", - " 120_1\n", - " Birth weight known; Yes - pounds and ounces\n", + " 1644475980\n", + " 43976.59\n", + " 43996.2\n", + " 43991.89\n", + " 43980.88\n", + " 0.698505\n", " \n", " \n", "\n", "" ], "text/plain": [ - " pheno_name description\n", - "0 120_1 Birth weight known; Yes - pounds and ounces" + " time low high open close volume\n", + "0 1644475980 43976.59 43996.2 43991.89 43980.88 0.698505" ] }, "metadata": {}, @@ -1401,681 +297,6 @@ "`use_react_agent`: Whether to use the react agent. default is True. If False, using codegen." ] }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "agent.configure(\n", - " alpha=0.1,\n", - " max_num_of_tests=5,\n", - " max_retry=3,\n", - " time_limit=2,\n", - " aggregate_test='E-value',\n", - " relevance_checker=True,\n", - " use_react_agent=True\n", - ")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Let's test a biological hypothesis from the target validation benchmark:" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'prompt': 'Gene VAV1 regulates the production of Interleukin-2 (IL-2).',\n", - " 'gene': 'VAV1',\n", - " 'answer': 2.916,\n", - " 'binary_answer': True}" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from popper.benchmark import gene_perturb_hypothesis\n", - "bm = gene_perturb_hypothesis(num_of_samples = 1, permuted=False, dataset = 'IL2', path = path)\n", - "example = bm.get_example(0)\n", - "example" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Here you can simply validate a hypothesis via:" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "\n", - "Given a biology hypothesis \"Gene VAV1 regulates the production of Interleukin-2 (IL-2).\", your goal is to propose a novel falsification test given the available biology data sources. \n", - "A falsification test is a test that can potentially falsify the main hypothesis. \n", - "The outcome of the falsification test is to return a p-value that measures the evidence to falsify the main hypothesis.\n", - "\n", - "Notably, the falsification test should satisfy the following property: if the main hypotheiss is null, then the falsification sub-hypothesis should also be null. \n", - "\n", - "Here are the list of available data sources, and you can directly call the dataframe as it has already been loaded; no need to load from file path. Each is a pandas dataframe with columns and example rows:\n", - "\n", - "df_gtex_tissue_gene_tpm:\n", - "{'Description': 'ENSG00000186092', 'Tissue': 'Adipose - Subcutaneous', 'Expression': 0.0453961, 'Gene': 'OR4F5'}\n", - "\n", - "df_gwas_catalog:\n", - "{'DATE ADDED TO CATALOG': '2018-07-30', 'PUBMEDID': 27618447, 'FIRST AUTHOR': 'Surendran P', 'DATE': '2016-10-01', 'JOURNAL': 'Nat Genet', 'LINK': 'www.ncbi.nlm.nih.gov/pubmed/27618447', 'STUDY': 'Trans-ancestry meta-analyses identify rare and common variants associated with blood pressure and hypertension.', 'DISEASE/TRAIT': 'systolic blood pressure', 'INITIAL SAMPLE SIZE': 'up to 165,276 European ancestry individuals, up to 27,487 South Asian ancestry individuals', 'REPLICATION SAMPLE SIZE': 'up to 125,713 European ancestry individuals, up to 2,641 South Asian ancestry individuals, 4,632 Hispanic individuals, 22,077 African American individuals', 'REGION': '3q26.2', 'CHR_ID': '3', 'CHR_POS': '169383111', 'REPORTED GENE(S)': 'MECOM', 'MAPPED_GENE': 'MECOM', 'UPSTREAM_GENE_ID': nan, 'DOWNSTREAM_GENE_ID': nan, 'SNP_GENE_IDS': 'ENSG00000085276', 'UPSTREAM_GENE_DISTANCE': nan, 'DOWNSTREAM_GENE_DISTANCE': nan, 'STRONGEST SNP-RISK ALLELE': 'rs448378-A', 'SNPS': 'rs448378', 'MERGED': 0, 'SNP_ID_CURRENT': 448378.0, 'CONTEXT': 'intron_variant', 'INTERGENIC': 0.0, 'RISK ALLELE FREQUENCY': '0.5261', 'P-VALUE': 8e-09, 'PVALUE_MLOG': 8.096910013008056, 'P-VALUE (TEXT)': nan, 'OR or BETA': 0.0196, '95% CI (TEXT)': 'mmHg decrease', 'PLATFORM [SNPS PASSING QC]': 'Illumina [242296]', 'CNV': 'N'}\n", - "\n", - "df_gene_info:\n", - "{'gene_id': 'ENSG00000228037', 'transcript_id': 'ENST00000424215', 'chr': '1', 'gene_start': 2581560, 'gene_end': 2584533, 'strand': 1, 'transcript_start': 2581560, 'transcript_end': 2584533, 'tss': 2581560, 'transcript_is_canonical': 1.0, 'gene_name': nan, 'percentage_gene_gc_content': 51.11, 'gene_type': 'lncRNA'}\n", - "\n", - "df_genetic_interaction:\n", - "{'interaction_id': 206363, 'gene_a_id': 'YCR011C', 'gene_b_id': 'YCL025C', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:16269340', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput', 'experimental_score': '-5.6431'}\n", - "\n", - "df_genebass_synonymous_filtered:\n", - "{'annotation': 'synonymous', 'Pvalue': 0.72199, 'Pvalue_Burden': 0.85198, 'Pvalue_SKAT': 0.52215, 'BETA_Burden': 0.0034703, 'SE_Burden': 0.018598, 'gene': 'TSPAN6', 'pheno_description': 'Eye problems/disorders; Macular degeneration'}\n", - "\n", - "df_genebass_missense_LC_filtered:\n", - "{'annotation': 'missense_LC', 'Pvalue': 0.85434, 'Pvalue_Burden': 0.69637, 'Pvalue_SKAT': 0.87135, 'BETA_Burden': -0.0046974, 'SE_Burden': 0.012037, 'gene': 'TSPAN6', 'pheno_description': 'Treatment/medication code; co-dydramol'}\n", - "\n", - "df_genebass_pLoF_filtered:\n", - "{'annotation': 'pLoF', 'Pvalue': 0.59145, 'Pvalue_Burden': 0.96398, 'Pvalue_SKAT': 0.42053, 'BETA_Burden': -0.00053797, 'SE_Burden': 0.011913, 'gene': 'DPM1', 'pheno_description': 'Mean L1 in fornix on FA skeleton'}\n", - "\n", - "df_affinity_capture_ms:\n", - "{'interaction_id': 241421, 'gene_a_id': 'ENSG00000169217', 'gene_b_id': 'ENSG00000144028', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:17353931', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '1.0'}\n", - "\n", - "df_two_hybrid:\n", - "{'interaction_id': 269293, 'gene_a_id': 'ENSG00000114395', 'gene_b_id': 'ENSG00000109103', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:16169070', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '1.0'}\n", - "\n", - "df_synthetic_growth_defect:\n", - "{'interaction_id': 299191, 'gene_a_id': 'SPBC30D10.04', 'gene_b_id': 'SPAC14C4.13', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:18931302', 'organism_id_a': 284812, 'organism_id_b': 284812, 'throughput_type': 'High Throughput', 'experimental_score': '-366.0'}\n", - "\n", - "df_affinity_capture_rna:\n", - "{'interaction_id': 637589, 'gene_a_id': 'YDR515W', 'gene_b_id': 'YAL030W', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:22271760', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput', 'experimental_score': '0.736666667'}\n", - "\n", - "df_co_fractionation:\n", - "{'interaction_id': 740709, 'gene_a_id': 'ENSG00000160201', 'gene_b_id': 'ENSG00000063244', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:22939629', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '0.874'}\n", - "\n", - "df_synthetic_lethality:\n", - "{'interaction_id': 818564, 'gene_a_id': 'YLR418C', 'gene_b_id': 'YLR103C', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:23390603', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput|Low Throughput', 'experimental_score': '4.75e-06'}\n", - "\n", - "df_dosage_growth_defect:\n", - "{'interaction_id': 908565, 'gene_a_id': 'YBL009W', 'gene_b_id': 'YPR058W', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:22282571', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput', 'experimental_score': '-0.504'}\n", - "\n", - "df_proximity_label_ms:\n", - "{'interaction_id': 913336, 'gene_a_id': 'ENSG00000206560', 'gene_b_id': 'ENSG00000103194', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:24255178', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '1.0'}\n", - "\n", - "df_synthetic_rescue:\n", - "{'interaction_id': 986367, 'gene_a_id': 'YJR017C', 'gene_b_id': 'YHR114W', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:24470217', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput', 'experimental_score': '-0.2'}\n", - "\n", - "df_reconstituted_complex:\n", - "{'interaction_id': 2841862, 'gene_a_id': 'ENSG00000169083', 'gene_b_id': 'ENSG00000097007', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:24728074', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '2.13'}\n", - "\n", - "df_eqtl_ukbb:\n", - "{'rs_id': 'rs111972115', 'gene_id': 'ENSG00000134250', 'cell_type_name': 'CEDAR-MONOCYTE_CD14', 'qtl_score': 4.851273983601853, 'gene_name': 'NOTCH2'}\n", - "\n", - "df_pqtl_ukbb:\n", - "{'rs_id': 'rs41265213', 'gene_id': 'ENSG00000160712', 'cell_type_name': 'SCALLOP_2020-UBERON_0001969', 'qtl_score': 5.13715334001706, 'gene_name': 'IL6R'}\n", - "\n", - "df_sqtl_ukbb:\n", - "{'rs_id': 'rs12756687', 'gene_id': 'ENSG00000265491', 'cell_type_name': 'GTEx-sQTL-Brain_Caudate_basal_ganglia', 'qtl_score': 3.19846622732464, 'gene_name': 'RNF115'}\n", - "\n", - "df_variant_table:\n", - "{'RS': 'rs116587930', 'ID': '1:727841_G_A', 'CHR': 1, 'POS': 727841, 'A1': 'G', 'A2': 'A', 'MAF': 0.0507035}\n", - "\n", - "df_trait:\n", - "{'pheno_name': '120_1', 'description': 'Birth weight known; Yes - pounds and ounces'}\n", - "\n", - "\n", - "\n", - "For the final test, return\n", - "(1) Name: name of the test\n", - "(2) Test description: be clear and concise. Describe the falsification outcomes.\n", - "(3) Null sub-hypothesis h_0: what is the statistical null sub-hypothesis does this falsification test aim to test?\n", - "(4) Alternate sub-hypothesis h_1: what is the statistical alternative sub-hypothesis does this falsification test aim to test?\n", - "\n", - "Here are the falsification tests that you've created in the previous rounds and their corresponding test results:\n", - "\n", - "\"\"\"\n", - "No Implemented Falsification Test Yet.\n", - "\"\"\"\n", - "\n", - "You may use these information to formulate your next subhypothesis and falsification test, but make sure the proposed falsification test is non-redundant with any of the existing tests.\n", - "\n", - "The proposed test should also avoid these failed falsification tests in the previous rounds:\n", - "\n", - "\"\"\"\n", - "[]\n", - "\"\"\"\n", - "\n", - "A good falsification test should serve as a strong evidence for the main hypothesis. However, make sure it is answerable with the given available data sources.\n", - "You should aim to maximize the implication strength of the proposed falsification test using the relevant parts of the provided data.\n", - "\n", - "---- \n", - "First produce an initial falsification test proposal.\n", - "\n", - "Then, in each round i, you will do the following:\n", - "(1) critic: ask if the main hypothesis is null, is this test also null? be rigorous. this is super important, otherwise, the test is invalid. Is it redundant on capabilities with existing tests? Is it overlapping with failed tests? Can this be answered and implemented based on the given data? \n", - "(2) reflect: how to improve this test definition. \n", - "\n", - "If you think the test definition is good enough, return the final test definition to the user. \n", - "If not, either refine the test definition that is better than the previous one or propose a new test definition, then go to the next round.\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Initial Falsification Test Proposal:\n", - "\n", - "(1) Name: VAV1 and IL-2 Expression Correlation Test\n", - "\n", - "(2) Test description: Examine the correlation between VAV1 and IL-2 gene expression levels across different tissues using GTEx data. If VAV1 regulates IL-2 production, we expect a significant positive correlation between their expression levels.\n", - "\n", - "(3) Null sub-hypothesis h_0: There is no significant correlation between VAV1 and IL-2 gene expression levels across tissues.\n", - "\n", - "(4) Alternate sub-hypothesis h_1: There is a significant positive correlation between VAV1 and IL-2 gene expression levels across tissues.\n", - "\n", - "Critic:\n", - "1. If the main hypothesis is null, this test would also be null, as no regulation would imply no correlation in expression levels.\n", - "2. This test is not redundant with any existing tests, as there are no implemented falsification tests yet.\n", - "3. It doesn't overlap with any failed tests.\n", - "4. This test can be answered using the provided df_gtex_tissue_gene_tpm dataframe, which contains gene expression data across tissues.\n", - "\n", - "Reflect:\n", - "While this test is valid and can be implemented with the given data, we can improve it by considering the following:\n", - "1. The test assumes a direct linear relationship between VAV1 and IL-2 expression, which may not capture complex regulatory mechanisms.\n", - "2. It doesn't account for potential confounding factors or tissue-specific effects.\n", - "3. We could strengthen the test by incorporating additional relevant data sources.\n", - "\n", - "Let's refine the test to address these points.\n", - "\n", - "Refined Falsification Test Proposal:\n", - "\n", - "(1) Name: VAV1 Knockout Effect on IL-2 Expression Test\n", - "\n", - "(2) Test description: Analyze the impact of VAV1 loss-of-function (LoF) variants on IL-2 expression-related phenotypes using GeneBass data. If VAV1 regulates IL-2 production, we expect VAV1 LoF variants to significantly affect IL-2-related phenotypes.\n", - "\n", - "(3) Null sub-hypothesis h_0: VAV1 loss-of-function variants have no significant effect on IL-2-related phenotypes.\n", - "\n", - "(4) Alternate sub-hypothesis h_1: VAV1 loss-of-function variants have a significant effect on IL-2-related phenotypes.\n", - "\n", - "Critic:\n", - "1. If the main hypothesis is null, this test would also be null, as no regulation of IL-2 by VAV1 would imply no effect of VAV1 LoF variants on IL-2-related phenotypes.\n", - "2. This test is not redundant with any existing tests and doesn't overlap with failed tests.\n", - "3. This test can be implemented using the df_genebass_pLoF_filtered dataframe, which contains information on the effects of loss-of-function variants on various phenotypes.\n", - "\n", - "Reflect:\n", - "This refined test addresses the limitations of the previous proposal by:\n", - "1. Focusing on the causal relationship between VAV1 and IL-2 through loss-of-function variants.\n", - "2. Utilizing a more direct measure of VAV1's impact on IL-2 production.\n", - "3. Incorporating additional relevant data from GeneBass.\n", - "\n", - "The test definition appears to be good enough, as it provides a strong falsification test for the main hypothesis and can be implemented using the available data. Therefore, I will return this final test definition to the user.\n", - "Proposed falsification test passes relevance check: \n", - " Proposal: Main hypothesis: Gene VAV1 regulates the production of Interleukin-2 (IL-2). \n", - " Falsification Test name: VAV1 Knockout Effect on IL-2 Expression Test \n", - " Falsification Test description: Analyze the impact of VAV1 loss-of-function (LoF) variants on IL-2 expression-related phenotypes using GeneBass data. If VAV1 regulates IL-2 production, we expect VAV1 LoF variants to significantly affect IL-2-related phenotypes. \n", - " Falsification Test Null sub-hypothesis: VAV1 loss-of-function variants have no significant effect on IL-2-related phenotypes. \n", - " Falsification Test Alternate sub-hypothesis: VAV1 loss-of-function variants have a significant effect on IL-2-related phenotypes. \n", - "Relevance score 0.8 \n", - "Reasoning: The proposed sub-hypothesis test, \"VAV1 Knockout Effect on IL-2 Expression Test,\" is strongly relevant to the main hypothesis that \"Gene VAV1 regulates the production of Interleukin-2 (IL-2).\" This test directly addresses the relationship between VAV1 and IL-2 production by examining the effects of VAV1 loss-of-function variants on IL-2-related phenotypes. \n", - "\n", - "The test provides a clear mechanistic insight into the role of VAV1 in IL-2 production. By analyzing the impact of VAV1 loss-of-function variants, it directly tests the regulatory relationship proposed in the main hypothesis. This approach has strong predictive value, as significant effects on IL-2-related phenotypes would strongly support the main hypothesis, while a lack of effects would challenge it.\n", - "\n", - "The use of GeneBass data to analyze VAV1 loss-of-function variants and their impact on IL-2 expression-related phenotypes provides a robust method to gather substantial supporting or refuting evidence for the main hypothesis. The results of this test would significantly impact the confidence in the main hypothesis, regardless of whether they support or contradict it.\n", - "\n", - "While this test is highly relevant and directly addresses the main hypothesis, it is scored 0.8 instead of 1.0 because it focuses on loss-of-function variants rather than providing a complete mechanistic explanation of how VAV1 regulates IL-2 production. Additionally, other factors or genes might also influence IL-2 production, which this test does not address. Nevertheless, the strong mechanistic alignment and high predictive value make this sub-hypothesis test strongly relevant to the main hypothesis.\n", - "\n", - "\n", - "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", - "\u001b[32;1m\u001b[1;3mTo test the hypothesis that VAV1 loss-of-function variants have a significant effect on IL-2-related phenotypes, we need to analyze the GeneBass data for VAV1 gene and look for IL-2 related phenotypes. Let's start by examining the GeneBass pLoF (predicted Loss of Function) data for VAV1.\n", - "\n", - "Action: python_repl_ast\n", - "Action Input: import pandas as pd\n", - "import numpy as np\n", - "from scipy import stats\n", - "\n", - "# Filter the GeneBass pLoF data for VAV1 gene\n", - "vav1_plof = df_genebass_pLoF_filtered[df_genebass_pLoF_filtered['gene'] == 'VAV1']\n", - "\n", - "# Display the results\n", - "print(vav1_plof)\n", - "\u001b[0m\u001b[36;1m\u001b[1;3m annotation Pvalue Pvalue_Burden Pvalue_SKAT BETA_Burden SE_Burden \\\n", - "6387 pLoF 0.077879 NaN NaN NaN NaN \n", - "7710 pLoF 0.447700 0.784130 0.28032 -0.003158 0.011527 \n", - "7811 pLoF 1.000000 0.838330 1.00000 -0.040086 0.196470 \n", - "7901 pLoF 0.002822 0.001308 0.28354 0.022644 0.007045 \n", - "7859 pLoF 0.597760 0.654830 0.39745 -0.009697 0.021691 \n", - "... ... ... ... ... ... ... \n", - "7836 pLoF 0.923390 0.756330 1.00000 -0.040162 0.129430 \n", - "7846 pLoF 0.807530 0.591690 1.00000 -0.040474 0.075457 \n", - "6387 pLoF 0.029540 NaN NaN NaN NaN \n", - "6387 pLoF 0.997310 NaN NaN NaN NaN \n", - "6387 pLoF 0.544050 NaN NaN NaN NaN \n", - "\n", - " gene pheno_description \n", - "6387 VAV1 Mean L1 in fornix on FA skeleton \n", - "7710 VAV1 Age at menopause (last menstrual period) \n", - "7811 VAV1 Operative procedures - secondary OPCS4; Y08.8 ... \n", - "7901 VAV1 Lymphocyte percentage \n", - "7859 VAV1 Ever used hormone-replacement therapy (HRT) \n", - "... ... ... \n", - "7836 VAV1 Non-cancer illness code, self-reported; multip... \n", - "7846 VAV1 Treatment/medication code; insulin product \n", - "6387 VAV1 Weighted-mean L1 in tract superior thalamic ra... \n", - "6387 VAV1 Mean L1 in cingulum cingulate gyrus on FA skel... \n", - "6387 VAV1 Weighted-mean ICVF in tract cingulate gyrus pa... \n", - "\n", - "[1418 rows x 8 columns]\n", - "\u001b[0m\u001b[32;1m\u001b[1;3mThe data shows multiple phenotypes associated with VAV1 loss-of-function variants. However, we need to focus on IL-2 related phenotypes. Lymphocyte percentage is the most relevant phenotype in this dataset, as IL-2 plays a crucial role in lymphocyte proliferation and differentiation.\n", - "\n", - "Let's examine the specific row for lymphocyte percentage:\n", - "\n", - "Action: python_repl_ast\n", - "Action Input: # Filter for lymphocyte percentage\n", - "lymphocyte_row = vav1_plof[vav1_plof['pheno_description'] == 'Lymphocyte percentage']\n", - "print(lymphocyte_row)\n", - "\u001b[0m\u001b[36;1m\u001b[1;3m annotation Pvalue Pvalue_Burden Pvalue_SKAT BETA_Burden SE_Burden \\\n", - "7901 pLoF 0.002822 0.001308 0.28354 0.022644 0.007045 \n", - "\n", - " gene pheno_description \n", - "7901 VAV1 Lymphocyte percentage \n", - "\u001b[0m\u001b[32;1m\u001b[1;3mThe row for lymphocyte percentage shows a significant p-value (0.002822) for the association between VAV1 loss-of-function variants and lymphocyte percentage. This is highly relevant to our hypothesis about IL-2 related phenotypes, as IL-2 is crucial for lymphocyte function and proliferation.\n", - "\n", - "Let's analyze this result in more detail:\n", - "\n", - "1. The overall p-value (Pvalue column) is 0.002822, which is statistically significant at the conventional 0.05 level.\n", - "2. The Burden test p-value (Pvalue_Burden) is 0.001308, which is even more significant.\n", - "3. The SKAT test p-value (Pvalue_SKAT) is 0.28354, which is not significant.\n", - "4. The effect size (BETA_Burden) is positive (0.022644), indicating that VAV1 loss-of-function variants are associated with an increase in lymphocyte percentage.\n", - "\n", - "To make a final conclusion, we should consider the overall p-value, which combines both the Burden and SKAT test results. This p-value (0.002822) is statistically significant.\n", - "\n", - "Given these results, we can reject the null hypothesis and conclude that VAV1 loss-of-function variants have a significant effect on at least one IL-2-related phenotype (lymphocyte percentage).\n", - "\n", - "Final Answer: Falsification test passes. The null hypothesis is rejected with a p-value of 2.82e-03. VAV1 loss-of-function variants have a significant effect on lymphocyte percentage, which is an IL-2-related phenotype.\u001b[0m\n", - "\n", - "\u001b[1m> Finished chain.\u001b[0m\n", - "{'check_output_error': 'Yes', 'p_val': '2.822e-03'}\n", - "---NO CODE TEST FAILURES---\n", - "---DECISION: FINISH---\n", - "==============\u001b[1m Falsification test implementation successful? True \u001b[0m==============\n", - "==============================\u001b[1m Sequential Testing \u001b[0m==============================\n", - "List of p-values: [0.002822] \n", - " Summarized sequential statistics: 9.412207643723193 \n", - " Sequential test result: insufficient evidence - CONTINUE\n", - "=============\u001b[1m Testing decision is insufficient evidence - CONTINUE \u001b[0m=============\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "\n", - "Given a biology hypothesis \"Gene VAV1 regulates the production of Interleukin-2 (IL-2).\", your goal is to propose a novel falsification test given the available biology data sources. \n", - "A falsification test is a test that can potentially falsify the main hypothesis. \n", - "The outcome of the falsification test is to return a p-value that measures the evidence to falsify the main hypothesis.\n", - "\n", - "Notably, the falsification test should satisfy the following property: if the main hypotheiss is null, then the falsification sub-hypothesis should also be null. \n", - "\n", - "Here are the list of available data sources, and you can directly call the dataframe as it has already been loaded; no need to load from file path. Each is a pandas dataframe with columns and example rows:\n", - "\n", - "df_gtex_tissue_gene_tpm:\n", - "{'Description': 'ENSG00000186092', 'Tissue': 'Adipose - Subcutaneous', 'Expression': 0.0453961, 'Gene': 'OR4F5'}\n", - "\n", - "df_gwas_catalog:\n", - "{'DATE ADDED TO CATALOG': '2018-07-30', 'PUBMEDID': 27618447, 'FIRST AUTHOR': 'Surendran P', 'DATE': '2016-10-01', 'JOURNAL': 'Nat Genet', 'LINK': 'www.ncbi.nlm.nih.gov/pubmed/27618447', 'STUDY': 'Trans-ancestry meta-analyses identify rare and common variants associated with blood pressure and hypertension.', 'DISEASE/TRAIT': 'systolic blood pressure', 'INITIAL SAMPLE SIZE': 'up to 165,276 European ancestry individuals, up to 27,487 South Asian ancestry individuals', 'REPLICATION SAMPLE SIZE': 'up to 125,713 European ancestry individuals, up to 2,641 South Asian ancestry individuals, 4,632 Hispanic individuals, 22,077 African American individuals', 'REGION': '3q26.2', 'CHR_ID': '3', 'CHR_POS': '169383111', 'REPORTED GENE(S)': 'MECOM', 'MAPPED_GENE': 'MECOM', 'UPSTREAM_GENE_ID': nan, 'DOWNSTREAM_GENE_ID': nan, 'SNP_GENE_IDS': 'ENSG00000085276', 'UPSTREAM_GENE_DISTANCE': nan, 'DOWNSTREAM_GENE_DISTANCE': nan, 'STRONGEST SNP-RISK ALLELE': 'rs448378-A', 'SNPS': 'rs448378', 'MERGED': 0, 'SNP_ID_CURRENT': 448378.0, 'CONTEXT': 'intron_variant', 'INTERGENIC': 0.0, 'RISK ALLELE FREQUENCY': '0.5261', 'P-VALUE': 8e-09, 'PVALUE_MLOG': 8.096910013008056, 'P-VALUE (TEXT)': nan, 'OR or BETA': 0.0196, '95% CI (TEXT)': 'mmHg decrease', 'PLATFORM [SNPS PASSING QC]': 'Illumina [242296]', 'CNV': 'N'}\n", - "\n", - "df_gene_info:\n", - "{'gene_id': 'ENSG00000228037', 'transcript_id': 'ENST00000424215', 'chr': '1', 'gene_start': 2581560, 'gene_end': 2584533, 'strand': 1, 'transcript_start': 2581560, 'transcript_end': 2584533, 'tss': 2581560, 'transcript_is_canonical': 1.0, 'gene_name': nan, 'percentage_gene_gc_content': 51.11, 'gene_type': 'lncRNA'}\n", - "\n", - "df_genetic_interaction:\n", - "{'interaction_id': 206363, 'gene_a_id': 'YCR011C', 'gene_b_id': 'YCL025C', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:16269340', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput', 'experimental_score': '-5.6431'}\n", - "\n", - "df_genebass_synonymous_filtered:\n", - "{'annotation': 'synonymous', 'Pvalue': 0.72199, 'Pvalue_Burden': 0.85198, 'Pvalue_SKAT': 0.52215, 'BETA_Burden': 0.0034703, 'SE_Burden': 0.018598, 'gene': 'TSPAN6', 'pheno_description': 'Eye problems/disorders; Macular degeneration'}\n", - "\n", - "df_genebass_missense_LC_filtered:\n", - "{'annotation': 'missense_LC', 'Pvalue': 0.85434, 'Pvalue_Burden': 0.69637, 'Pvalue_SKAT': 0.87135, 'BETA_Burden': -0.0046974, 'SE_Burden': 0.012037, 'gene': 'TSPAN6', 'pheno_description': 'Treatment/medication code; co-dydramol'}\n", - "\n", - "df_genebass_pLoF_filtered:\n", - "{'annotation': 'pLoF', 'Pvalue': 0.59145, 'Pvalue_Burden': 0.96398, 'Pvalue_SKAT': 0.42053, 'BETA_Burden': -0.00053797, 'SE_Burden': 0.011913, 'gene': 'DPM1', 'pheno_description': 'Mean L1 in fornix on FA skeleton'}\n", - "\n", - "df_affinity_capture_ms:\n", - "{'interaction_id': 241421, 'gene_a_id': 'ENSG00000169217', 'gene_b_id': 'ENSG00000144028', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:17353931', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '1.0'}\n", - "\n", - "df_two_hybrid:\n", - "{'interaction_id': 269293, 'gene_a_id': 'ENSG00000114395', 'gene_b_id': 'ENSG00000109103', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:16169070', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '1.0'}\n", - "\n", - "df_synthetic_growth_defect:\n", - "{'interaction_id': 299191, 'gene_a_id': 'SPBC30D10.04', 'gene_b_id': 'SPAC14C4.13', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:18931302', 'organism_id_a': 284812, 'organism_id_b': 284812, 'throughput_type': 'High Throughput', 'experimental_score': '-366.0'}\n", - "\n", - "df_affinity_capture_rna:\n", - "{'interaction_id': 637589, 'gene_a_id': 'YDR515W', 'gene_b_id': 'YAL030W', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:22271760', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput', 'experimental_score': '0.736666667'}\n", - "\n", - "df_co_fractionation:\n", - "{'interaction_id': 740709, 'gene_a_id': 'ENSG00000160201', 'gene_b_id': 'ENSG00000063244', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:22939629', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '0.874'}\n", - "\n", - "df_synthetic_lethality:\n", - "{'interaction_id': 818564, 'gene_a_id': 'YLR418C', 'gene_b_id': 'YLR103C', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:23390603', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput|Low Throughput', 'experimental_score': '4.75e-06'}\n", - "\n", - "df_dosage_growth_defect:\n", - "{'interaction_id': 908565, 'gene_a_id': 'YBL009W', 'gene_b_id': 'YPR058W', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:22282571', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput', 'experimental_score': '-0.504'}\n", - "\n", - "df_proximity_label_ms:\n", - "{'interaction_id': 913336, 'gene_a_id': 'ENSG00000206560', 'gene_b_id': 'ENSG00000103194', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:24255178', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '1.0'}\n", - "\n", - "df_synthetic_rescue:\n", - "{'interaction_id': 986367, 'gene_a_id': 'YJR017C', 'gene_b_id': 'YHR114W', 'experimental_system_type': 'genetic', 'pubmed_id': 'PUBMED:24470217', 'organism_id_a': 559292, 'organism_id_b': 559292, 'throughput_type': 'High Throughput', 'experimental_score': '-0.2'}\n", - "\n", - "df_reconstituted_complex:\n", - "{'interaction_id': 2841862, 'gene_a_id': 'ENSG00000169083', 'gene_b_id': 'ENSG00000097007', 'experimental_system_type': 'physical', 'pubmed_id': 'PUBMED:24728074', 'organism_id_a': 9606, 'organism_id_b': 9606, 'throughput_type': 'High Throughput', 'experimental_score': '2.13'}\n", - "\n", - "df_eqtl_ukbb:\n", - "{'rs_id': 'rs111972115', 'gene_id': 'ENSG00000134250', 'cell_type_name': 'CEDAR-MONOCYTE_CD14', 'qtl_score': 4.851273983601853, 'gene_name': 'NOTCH2'}\n", - "\n", - "df_pqtl_ukbb:\n", - "{'rs_id': 'rs41265213', 'gene_id': 'ENSG00000160712', 'cell_type_name': 'SCALLOP_2020-UBERON_0001969', 'qtl_score': 5.13715334001706, 'gene_name': 'IL6R'}\n", - "\n", - "df_sqtl_ukbb:\n", - "{'rs_id': 'rs12756687', 'gene_id': 'ENSG00000265491', 'cell_type_name': 'GTEx-sQTL-Brain_Caudate_basal_ganglia', 'qtl_score': 3.19846622732464, 'gene_name': 'RNF115'}\n", - "\n", - "df_variant_table:\n", - "{'RS': 'rs116587930', 'ID': '1:727841_G_A', 'CHR': 1, 'POS': 727841, 'A1': 'G', 'A2': 'A', 'MAF': 0.0507035}\n", - "\n", - "df_trait:\n", - "{'pheno_name': '120_1', 'description': 'Birth weight known; Yes - pounds and ounces'}\n", - "\n", - "\n", - "\n", - "For the final test, return\n", - "(1) Name: name of the test\n", - "(2) Test description: be clear and concise. Describe the falsification outcomes.\n", - "(3) Null sub-hypothesis h_0: what is the statistical null sub-hypothesis does this falsification test aim to test?\n", - "(4) Alternate sub-hypothesis h_1: what is the statistical alternative sub-hypothesis does this falsification test aim to test?\n", - "\n", - "Here are the falsification tests that you've created in the previous rounds and their corresponding test results:\n", - "\n", - "\"\"\"\n", - "------- Round 1 ------- \n", - " Falsification Test: Main hypothesis: Gene VAV1 regulates the production of Interleukin-2 (IL-2). \n", - " Falsification Test name: VAV1 Knockout Effect on IL-2 Expression Test \n", - " Falsification Test description: Analyze the impact of VAV1 loss-of-function (LoF) variants on IL-2 expression-related phenotypes using GeneBass data. If VAV1 regulates IL-2 production, we expect VAV1 LoF variants to significantly affect IL-2-related phenotypes. \n", - " Falsification Test Null sub-hypothesis: VAV1 loss-of-function variants have no significant effect on IL-2-related phenotypes. \n", - " Falsification Test Alternate sub-hypothesis: VAV1 loss-of-function variants have a significant effect on IL-2-related phenotypes. \n", - " test statistics: 0.002822\n", - "\"\"\"\n", - "\n", - "You may use these information to formulate your next subhypothesis and falsification test, but make sure the proposed falsification test is non-redundant with any of the existing tests.\n", - "\n", - "The proposed test should also avoid these failed falsification tests in the previous rounds:\n", - "\n", - "\"\"\"\n", - "[]\n", - "\"\"\"\n", - "\n", - "A good falsification test should serve as a strong evidence for the main hypothesis. However, make sure it is answerable with the given available data sources.\n", - "You should aim to maximize the implication strength of the proposed falsification test using the relevant parts of the provided data.\n", - "\n", - "---- \n", - "First produce an initial falsification test proposal.\n", - "\n", - "Then, in each round i, you will do the following:\n", - "(1) critic: ask if the main hypothesis is null, is this test also null? be rigorous. this is super important, otherwise, the test is invalid. Is it redundant on capabilities with existing tests? Is it overlapping with failed tests? Can this be answered and implemented based on the given data? \n", - "(2) reflect: how to improve this test definition. \n", - "\n", - "If you think the test definition is good enough, return the final test definition to the user. \n", - "If not, either refine the test definition that is better than the previous one or propose a new test definition, then go to the next round.\n", - "\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "Initial Falsification Test Proposal:\n", - "\n", - "(1) Name: VAV1-IL2 Co-expression Analysis\n", - "\n", - "(2) Test description: Analyze the co-expression patterns of VAV1 and IL2 across different tissues using GTEx data. If VAV1 regulates IL-2 production, we expect to see a significant positive correlation between VAV1 and IL2 expression levels.\n", - "\n", - "(3) Null sub-hypothesis h_0: There is no significant correlation between VAV1 and IL2 expression levels across tissues.\n", - "\n", - "(4) Alternate sub-hypothesis h_1: There is a significant positive correlation between VAV1 and IL2 expression levels across tissues.\n", - "\n", - "Critic:\n", - "1. If the main hypothesis is null, this test would also be null, as lack of regulation would not necessarily imply correlated expression.\n", - "2. This test is not redundant with the existing VAV1 Knockout Effect on IL-2 Expression Test, as it focuses on expression correlation rather than genetic variants.\n", - "3. This test is not overlapping with any failed tests from previous rounds.\n", - "4. This test can be implemented using the provided df_gtex_tissue_gene_tpm data.\n", - "\n", - "Reflection:\n", - "The proposed test is generally sound, but we can improve it by considering the following:\n", - "1. Specify the statistical method for correlation analysis (e.g., Pearson or Spearman correlation).\n", - "2. Include a threshold for significance to make the test more precise.\n", - "3. Consider potential confounding factors that might affect the correlation.\n", - "\n", - "Refined Falsification Test Proposal:\n", - "\n", - "(1) Name: VAV1-IL2 Tissue-specific Co-expression Analysis\n", - "\n", - "(2) Test description: Analyze the co-expression patterns of VAV1 and IL2 across different tissues using GTEx data. Calculate the Spearman rank correlation coefficient between VAV1 and IL2 expression levels. If VAV1 regulates IL-2 production, we expect to see a significant positive correlation (ρ > 0.3, p-value < 0.05) between VAV1 and IL2 expression levels, particularly in immune-related tissues.\n", - "\n", - "(3) Null sub-hypothesis h_0: The Spearman rank correlation coefficient (ρ) between VAV1 and IL2 expression levels across tissues is not significantly different from 0, or ρ ≤ 0.3.\n", - "\n", - "(4) Alternate sub-hypothesis h_1: The Spearman rank correlation coefficient (ρ) between VAV1 and IL2 expression levels across tissues is significantly greater than 0.3 (ρ > 0.3, p-value < 0.05).\n", - "\n", - "This refined test proposal addresses the previous concerns and provides a more specific and implementable falsification test using the available data. It satisfies the criteria of being null if the main hypothesis is null, is non-redundant with existing tests, and can be answered using the given data sources.\n", - "Proposed falsification test passes relevance check: \n", - " Proposal: Main hypothesis: Gene VAV1 regulates the production of Interleukin-2 (IL-2). \n", - " Falsification Test name: VAV1-IL2 Tissue-specific Co-expression Analysis \n", - " Falsification Test description: Analyze the co-expression patterns of VAV1 and IL2 across different tissues using GTEx data. Calculate the Spearman rank correlation coefficient between VAV1 and IL2 expression levels. If VAV1 regulates IL-2 production, we expect to see a significant positive correlation (ρ > 0.3, p-value < 0.05) between VAV1 and IL2 expression levels, particularly in immune-related tissues. \n", - " Falsification Test Null sub-hypothesis: The Spearman rank correlation coefficient (ρ) between VAV1 and IL2 expression levels across tissues is not significantly different from 0, or ρ ≤ 0.3. \n", - " Falsification Test Alternate sub-hypothesis: The Spearman rank correlation coefficient (ρ) between VAV1 and IL2 expression levels across tissues is significantly greater than 0.3 (ρ > 0.3, p-value < 0.05). \n", - "Relevance score 0.8 \n", - "Reasoning: The VAV1-IL2 Tissue-specific Co-expression Analysis is strongly relevant to the main hypothesis that Gene VAV1 regulates the production of Interleukin-2 (IL-2). This test directly addresses the relationship between VAV1 and IL-2 by examining their co-expression patterns across different tissues. The test provides substantial supporting or refuting evidence for the main hypothesis:\n", - "\n", - "1. Evidence strength: The test uses GTEx data, a well-established and comprehensive gene expression database, to analyze the co-expression patterns. This provides a strong foundation for the evidence.\n", - "\n", - "2. Mechanistic connection: While the test doesn't directly prove a regulatory mechanism, it establishes a clear connection between VAV1 and IL-2 expression levels. A significant positive correlation would strongly suggest a regulatory relationship, aligning closely with the main hypothesis.\n", - "\n", - "3. Predictive value: The results of this test would significantly impact the confidence in the main hypothesis. A strong positive correlation (ρ > 0.3) would provide substantial support for the regulatory role of VAV1 in IL-2 production, while a lack of correlation or negative correlation would significantly challenge the hypothesis.\n", - "\n", - "The test is specific to the variables involved in the main hypothesis (VAV1 and IL-2) and focuses on their expression patterns, particularly in immune-related tissues, which is highly relevant to the hypothesized regulatory relationship.\n", - "\n", - "While this test doesn't directly demonstrate the regulatory mechanism, it provides strong circumstantial evidence for or against the hypothesis, justifying the 0.8 score. A score of 1.0 would require a more direct test of the regulatory mechanism, such as a gene knockout study or a direct measurement of IL-2 production in response to VAV1 manipulation.\n", - "\n", - "\n", - "\u001b[1m> Entering new AgentExecutor chain...\u001b[0m\n", - "\u001b[32;1m\u001b[1;3mTo implement the falsification test for the co-expression analysis of VAV1 and IL2 across different tissues, I'll need to use the GTEx dataset (df_gtex_tissue_gene_tpm). First, I'll examine the structure of this dataset and extract the relevant information for VAV1 and IL2.\n", - "\n", - "Action: python_repl_ast\n", - "Action Input: import pandas as pd\n", - "import numpy as np\n", - "from scipy import stats\n", - "\n", - "# Check the structure of the dataset\n", - "print(df_gtex_tissue_gene_tpm.head())\n", - "print(df_gtex_tissue_gene_tpm.columns)\n", - "\u001b[0m\u001b[36;1m\u001b[1;3m Description Tissue Expression Gene\n", - "0 ENSG00000186092 Adipose - Subcutaneous 0.045396 OR4F5\n", - "1 ENSG00000284733 Adipose - Subcutaneous 0.037204 OR4F29\n", - "2 ENSG00000284662 Adipose - Subcutaneous 0.023821 OR4F16\n", - "3 ENSG00000187634 Adipose - Subcutaneous 0.476230 SAMD11\n", - "4 ENSG00000188976 Adipose - Subcutaneous 52.861400 NOC2L\n", - "Index(['Description', 'Tissue', 'Expression', 'Gene'], dtype='object')\n", - "\u001b[0m\u001b[32;1m\u001b[1;3mThe dataset contains the necessary information for our analysis. Now, I'll filter the data for VAV1 and IL2 genes and prepare it for the correlation analysis.\n", - "\n", - "Action: python_repl_ast\n", - "Action Input: # Filter data for VAV1 and IL2\n", - "vav1_data = df_gtex_tissue_gene_tpm[df_gtex_tissue_gene_tpm['Gene'] == 'VAV1']\n", - "il2_data = df_gtex_tissue_gene_tpm[df_gtex_tissue_gene_tpm['Gene'] == 'IL2']\n", - "\n", - "# Merge the data for VAV1 and IL2\n", - "merged_data = pd.merge(vav1_data, il2_data, on='Tissue', suffixes=('_VAV1', '_IL2'))\n", - "\n", - "# Calculate Spearman correlation\n", - "correlation, p_value = stats.spearmanr(merged_data['Expression_VAV1'], merged_data['Expression_IL2'])\n", - "\n", - "print(f\"Spearman correlation coefficient: {correlation}\")\n", - "print(f\"P-value: {p_value:.2e}\")\n", - "\n", - "# Number of samples\n", - "n = len(merged_data)\n", - "print(f\"Number of samples: {n}\")\n", - "\u001b[0m\u001b[36;1m\u001b[1;3mSpearman correlation coefficient: 0.4873421660115992\n", - "P-value: 1.86e-04\n", - "Number of samples: 54\n", - "\u001b[0m\u001b[32;1m\u001b[1;3mBased on the results of the Spearman correlation analysis, we can interpret the findings:\n", - "\n", - "1. The Spearman correlation coefficient (ρ) between VAV1 and IL2 expression levels across tissues is approximately 0.487.\n", - "2. The p-value for this correlation is 1.86e-04, which is statistically significant at the 0.05 level.\n", - "3. The analysis was performed on 54 tissue samples.\n", - "\n", - "To evaluate our falsification test:\n", - "\n", - "1. The null hypothesis stated that ρ ≤ 0.3 or not significantly different from 0.\n", - "2. The alternative hypothesis stated that ρ > 0.3 with p-value < 0.05.\n", - "\n", - "Our results show:\n", - "- ρ ≈ 0.487, which is greater than 0.3\n", - "- p-value = 1.86e-04, which is less than 0.05\n", - "\n", - "Therefore, we can reject the null hypothesis in favor of the alternative hypothesis. The data supports a significant positive correlation between VAV1 and IL2 expression levels across tissues, with a correlation coefficient greater than 0.3.\n", - "\n", - "Final Answer: Falsification test passes. The null hypothesis is rejected with a p-value of 1.86e-04. We find a statistically significant positive correlation (ρ ≈ 0.487) between VAV1 and IL2 expression levels across tissues, supporting the hypothesis that VAV1 may be involved in regulating IL-2 production.\u001b[0m\n", - "\n", - "\u001b[1m> Finished chain.\u001b[0m\n", - "{'check_output_error': 'Yes', 'p_val': '1.86e-04'}\n", - "---NO CODE TEST FAILURES---\n", - "---DECISION: FINISH---\n", - "==============\u001b[1m Falsification test implementation successful? True \u001b[0m==============\n", - "==============================\u001b[1m Sequential Testing \u001b[0m==============================\n", - "List of p-values: [0.002822, 0.000186] \n", - " Summarized sequential statistics: 345.06827423348386 \n", - " Sequential test result: sufficient evidence - PASS\n", - "================\u001b[1m Testing decision is sufficient evidence - PASS \u001b[0m================\n", - "==================================\u001b[1m Summarizer \u001b[0m==================================\n", - "================================\u001b[1m Human Message \u001b[0m=================================\n", - "\n", - "------- Round 1 ------- \n", - " Falsification Test: Main hypothesis: Gene VAV1 regulates the production of Interleukin-2 (IL-2). \n", - " Falsification Test name: VAV1 Knockout Effect on IL-2 Expression Test \n", - " Falsification Test description: Analyze the impact of VAV1 loss-of-function (LoF) variants on IL-2 expression-related phenotypes using GeneBass data. If VAV1 regulates IL-2 production, we expect VAV1 LoF variants to significantly affect IL-2-related phenotypes. \n", - " Falsification Test Null sub-hypothesis: VAV1 loss-of-function variants have no significant effect on IL-2-related phenotypes. \n", - " Falsification Test Alternate sub-hypothesis: VAV1 loss-of-function variants have a significant effect on IL-2-related phenotypes. \n", - " test statistics: 0.002822\n", - "------- Round 2 ------- \n", - " Falsification Test: Main hypothesis: Gene VAV1 regulates the production of Interleukin-2 (IL-2). \n", - " Falsification Test name: VAV1-IL2 Tissue-specific Co-expression Analysis \n", - " Falsification Test description: Analyze the co-expression patterns of VAV1 and IL2 across different tissues using GTEx data. Calculate the Spearman rank correlation coefficient between VAV1 and IL2 expression levels. If VAV1 regulates IL-2 production, we expect to see a significant positive correlation (ρ > 0.3, p-value < 0.05) between VAV1 and IL2 expression levels, particularly in immune-related tissues. \n", - " Falsification Test Null sub-hypothesis: The Spearman rank correlation coefficient (ρ) between VAV1 and IL2 expression levels across tissues is not significantly different from 0, or ρ ≤ 0.3. \n", - " Falsification Test Alternate sub-hypothesis: The Spearman rank correlation coefficient (ρ) between VAV1 and IL2 expression levels across tissues is significantly greater than 0.3 (ρ > 0.3, p-value < 0.05). \n", - " test statistics: 0.000186\n", - "\n", - " Sequential testing result: sufficient evidence - PASS with statistics E-value current combined e-value using kappa p-to-e calibrator: 345.06827423348386 \n", - " Number of total tests done: 2\n", - "==================================\u001b[1m Ai Message \u001b[0m==================================\n", - "\n", - "(1) The main scientific hypothesis under study:\n", - "Gene VAV1 regulates the production of Interleukin-2 (IL-2).\n", - "\n", - "(2) The result of the sequential falsification test:\n", - "The sequential falsification test passed with a combined e-value of 345.06827423348386 after two rounds of testing.\n", - "\n", - "(3) Reasoning, summarizing, and analyzing these results:\n", - "Two falsification tests were conducted to evaluate the hypothesis:\n", - "\n", - "1. VAV1 Knockout Effect on IL-2 Expression Test: This test analyzed the impact of VAV1 loss-of-function (LoF) variants on IL-2 expression-related phenotypes using GeneBass data. The test statistic was 0.002822, which is a very small value, suggesting a significant effect of VAV1 LoF variants on IL-2-related phenotypes.\n", - "\n", - "2. VAV1-IL2 Tissue-specific Co-expression Analysis: This test examined the co-expression patterns of VAV1 and IL2 across different tissues using GTEx data. The test statistic was 0.000186, which is also a very small value, indicating a strong positive correlation between VAV1 and IL2 expression levels.\n", - "\n", - "Both tests produced very small p-values, which were converted to e-values using the kappa p-to-e calibrator. The combined e-value of 345.06827423348386 indicates strong evidence against the null hypotheses in both tests.\n", - "\n", - "(4) Conclusion on whether or not this hypothesis is true or false:\n", - "True\n", - "\n", - "(5) Rationale of the conclusion:\n", - "Based on the results of the sequential falsification tests, we conclude that the hypothesis \"Gene VAV1 regulates the production of Interleukin-2 (IL-2)\" is true. This conclusion is supported by the following evidence:\n", - "\n", - "1. The VAV1 Knockout Effect on IL-2 Expression Test showed a significant effect of VAV1 loss-of-function variants on IL-2-related phenotypes, suggesting that VAV1 plays a role in regulating IL-2 production.\n", - "\n", - "2. The VAV1-IL2 Tissue-specific Co-expression Analysis revealed a strong positive correlation between VAV1 and IL2 expression levels across tissues, further supporting the regulatory relationship between VAV1 and IL-2.\n", - "\n", - "3. The combined e-value of 345.06827423348386 indicates strong evidence against the null hypotheses in both tests, providing substantial support for the alternative hypotheses and, consequently, the main hypothesis.\n", - "\n", - "These results consistently support the regulatory role of VAV1 in IL-2 production, leading to the conclusion that the hypothesis is true based on the available evidence from these falsification tests.\n" - ] - } - ], - "source": [ - "results = agent.validate(hypothesis=example['prompt'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "You can also see the discovery bench hypothesis via:" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "----------Loading Discovery Bench------------\n", - "Loaded 50 hypotheses\n", - "--------------------------------------\n" - ] - }, - { - "data": { - "text/plain": [ - "{'task': 'archaeology',\n", - " 'domain': 'humanities',\n", - " 'metadataid': 5,\n", - " 'query_id': 0,\n", - " 'prompt': 'From 1700 BCE onwards, the use of hatchets and swords increased while the use of daggers decreased.',\n", - " 'data_loader': ,\n", - " 'answer': True}" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "from popper.benchmark import discovery_bench_hypothesis\n", - "bm = discovery_bench_hypothesis(num_samples = 50, path = path)\n", - "example = bm.get_example(42)\n", - "example" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -2085,79 +306,23 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [], - "source": [ - "agent.register_data(data_path='/dfs/user/kexinh/popper_data_processed/bio_database', loader_type='custom')" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Lastly, you can launch an UI interface for fellow scientists to validate their hypothesis. You can simply run:" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Data already exists, loading...\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/dfs/user/kexinh/miniconda3/envs/popper_env/lib/python3.10/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html\n", - " from .autonotebook import tqdm as notebook_tqdm\n" - ] - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "* Running on local URL: http://127.0.0.1:7860\n", - "* Running on public URL: https://bb459b0fa969f90097.gradio.live\n", - "\n", - "This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from the terminal in the working directory to deploy to Hugging Face Spaces (https://huggingface.co/spaces)\n" - ] - }, - { - "data": { - "text/html": [ - "
" - ], - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], "source": [ "from popper import Popper\n", - "path = '/dfs/user/kexinh/popper_data_processed'\n", + "path = '/Users/jinyoungkim/Desktop/Projects/POPPER/data'\n", "agent = Popper(llm=\"claude-3-5-sonnet-20240620\")\n", - "agent.register_data(data_path=path, loader_type='bio')\n", - "agent.configure()\n", + "agent.register_data(data_path=path, loader_type='custom')\n", + "agent.configure(\n", + " alpha=0.05,\n", + " max_num_of_tests=8,\n", + " max_retry=4,\n", + " time_limit=5,\n", + " aggregate_test='E-value',\n", + " relevance_checker=True,\n", + " use_react_agent=True\n", + ")\n", "agent.launch_UI()" ] }, diff --git a/popper/benchmark.py b/popper/benchmark.py index 2b76d33..73d6e5e 100644 --- a/popper/benchmark.py +++ b/popper/benchmark.py @@ -210,4 +210,4 @@ def evaluate(self, response, answers=None): # 'auprc': average_precision_score(answers, res_stats), # 'stat_pos': res_stats[np.where(answers & res_stats)[0]].mean(), # 'stat_neg': res_stats[np.where(answers == False & res_stats)[0]].mean() - } \ No newline at end of file + } diff --git a/popper/popper.py b/popper/popper.py index 235ce47..26f5217 100644 --- a/popper/popper.py +++ b/popper/popper.py @@ -41,27 +41,33 @@ def register_data(self, data_path: str, data_sampling: int = -1, loader_type: st os.makedirs(data_path) self.data_path = data_path - if not os.path.exists(os.path.join(data_path, 'bio_database')): - print('It will take a few minutes to download the data for the first time...') - self.download_all_data() - else: - print('Data already exists, loading...') - if loader_type == 'bio': + if not os.path.exists(os.path.join(data_path, 'bio_database')): + print('It will take a few minutes to download the data for the first time...') + self.download_all_data() + else: + print('Bio data already exists, loading...') self.data_loader = ExperimentalDataLoader( data_path=data_path, table_dict_selection='all_bio', data_sampling=data_sampling ) elif loader_type == 'bio_selected': + if not os.path.exists(os.path.join(data_path, 'bio_database')): + print('It will take a few minutes to download the data for the first time...') + self.download_all_data() + else: + print('Bio data already exists, loading...') self.data_loader = ExperimentalDataLoader( data_path=data_path, table_dict_selection='default', data_sampling=data_sampling ) elif loader_type == 'custom': + print('Loading custom data...') self.data_loader = CustomDataLoader(data_folder=data_path) elif loader_type == 'discovery_bench': + print('Loading discovery bench data...') if metadata is None: raise ValueError("Metadata must be provided for DiscoveryBenchDataLoader") self.data_loader = DiscoveryBenchDataLoader(data_path=data_path, metadata=metadata) @@ -285,4 +291,4 @@ def _download_with_progress(self, url, file_path): if not buffer: break file.write(buffer) - pbar.update(len(buffer)) \ No newline at end of file + pbar.update(len(buffer))