aiagents4pharma 0.0.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. aiagents4pharma/__init__.py +11 -0
  2. aiagents4pharma/talk2aiagents4pharma/.dockerignore +13 -0
  3. aiagents4pharma/talk2aiagents4pharma/Dockerfile +133 -0
  4. aiagents4pharma/talk2aiagents4pharma/README.md +1 -0
  5. aiagents4pharma/talk2aiagents4pharma/__init__.py +5 -0
  6. aiagents4pharma/talk2aiagents4pharma/agents/__init__.py +6 -0
  7. aiagents4pharma/talk2aiagents4pharma/agents/main_agent.py +70 -0
  8. aiagents4pharma/talk2aiagents4pharma/configs/__init__.py +5 -0
  9. aiagents4pharma/talk2aiagents4pharma/configs/agents/__init__.py +5 -0
  10. aiagents4pharma/talk2aiagents4pharma/configs/agents/main_agent/default.yaml +29 -0
  11. aiagents4pharma/talk2aiagents4pharma/configs/app/__init__.py +0 -0
  12. aiagents4pharma/talk2aiagents4pharma/configs/app/frontend/__init__.py +0 -0
  13. aiagents4pharma/talk2aiagents4pharma/configs/app/frontend/default.yaml +102 -0
  14. aiagents4pharma/talk2aiagents4pharma/configs/config.yaml +4 -0
  15. aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/.env.example +23 -0
  16. aiagents4pharma/talk2aiagents4pharma/docker-compose/cpu/docker-compose.yml +93 -0
  17. aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/.env.example +23 -0
  18. aiagents4pharma/talk2aiagents4pharma/docker-compose/gpu/docker-compose.yml +108 -0
  19. aiagents4pharma/talk2aiagents4pharma/install.md +154 -0
  20. aiagents4pharma/talk2aiagents4pharma/states/__init__.py +5 -0
  21. aiagents4pharma/talk2aiagents4pharma/states/state_talk2aiagents4pharma.py +18 -0
  22. aiagents4pharma/talk2aiagents4pharma/tests/__init__.py +3 -0
  23. aiagents4pharma/talk2aiagents4pharma/tests/test_main_agent.py +312 -0
  24. aiagents4pharma/talk2biomodels/.dockerignore +13 -0
  25. aiagents4pharma/talk2biomodels/Dockerfile +104 -0
  26. aiagents4pharma/talk2biomodels/README.md +1 -0
  27. aiagents4pharma/talk2biomodels/__init__.py +5 -0
  28. aiagents4pharma/talk2biomodels/agents/__init__.py +6 -0
  29. aiagents4pharma/talk2biomodels/agents/t2b_agent.py +104 -0
  30. aiagents4pharma/talk2biomodels/api/__init__.py +5 -0
  31. aiagents4pharma/talk2biomodels/api/ols.py +75 -0
  32. aiagents4pharma/talk2biomodels/api/uniprot.py +36 -0
  33. aiagents4pharma/talk2biomodels/configs/__init__.py +5 -0
  34. aiagents4pharma/talk2biomodels/configs/agents/__init__.py +5 -0
  35. aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/__init__.py +3 -0
  36. aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/default.yaml +14 -0
  37. aiagents4pharma/talk2biomodels/configs/app/__init__.py +0 -0
  38. aiagents4pharma/talk2biomodels/configs/app/frontend/__init__.py +0 -0
  39. aiagents4pharma/talk2biomodels/configs/app/frontend/default.yaml +72 -0
  40. aiagents4pharma/talk2biomodels/configs/config.yaml +7 -0
  41. aiagents4pharma/talk2biomodels/configs/tools/__init__.py +5 -0
  42. aiagents4pharma/talk2biomodels/configs/tools/ask_question/__init__.py +3 -0
  43. aiagents4pharma/talk2biomodels/configs/tools/ask_question/default.yaml +30 -0
  44. aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/__init__.py +3 -0
  45. aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/default.yaml +8 -0
  46. aiagents4pharma/talk2biomodels/configs/tools/get_annotation/__init__.py +3 -0
  47. aiagents4pharma/talk2biomodels/configs/tools/get_annotation/default.yaml +8 -0
  48. aiagents4pharma/talk2biomodels/install.md +63 -0
  49. aiagents4pharma/talk2biomodels/models/__init__.py +5 -0
  50. aiagents4pharma/talk2biomodels/models/basico_model.py +125 -0
  51. aiagents4pharma/talk2biomodels/models/sys_bio_model.py +60 -0
  52. aiagents4pharma/talk2biomodels/states/__init__.py +6 -0
  53. aiagents4pharma/talk2biomodels/states/state_talk2biomodels.py +49 -0
  54. aiagents4pharma/talk2biomodels/tests/BIOMD0000000449_url.xml +1585 -0
  55. aiagents4pharma/talk2biomodels/tests/__init__.py +3 -0
  56. aiagents4pharma/talk2biomodels/tests/article_on_model_537.pdf +0 -0
  57. aiagents4pharma/talk2biomodels/tests/test_api.py +31 -0
  58. aiagents4pharma/talk2biomodels/tests/test_ask_question.py +42 -0
  59. aiagents4pharma/talk2biomodels/tests/test_basico_model.py +67 -0
  60. aiagents4pharma/talk2biomodels/tests/test_get_annotation.py +190 -0
  61. aiagents4pharma/talk2biomodels/tests/test_getmodelinfo.py +92 -0
  62. aiagents4pharma/talk2biomodels/tests/test_integration.py +116 -0
  63. aiagents4pharma/talk2biomodels/tests/test_load_biomodel.py +35 -0
  64. aiagents4pharma/talk2biomodels/tests/test_param_scan.py +71 -0
  65. aiagents4pharma/talk2biomodels/tests/test_query_article.py +184 -0
  66. aiagents4pharma/talk2biomodels/tests/test_save_model.py +47 -0
  67. aiagents4pharma/talk2biomodels/tests/test_search_models.py +35 -0
  68. aiagents4pharma/talk2biomodels/tests/test_simulate_model.py +44 -0
  69. aiagents4pharma/talk2biomodels/tests/test_steady_state.py +86 -0
  70. aiagents4pharma/talk2biomodels/tests/test_sys_bio_model.py +67 -0
  71. aiagents4pharma/talk2biomodels/tools/__init__.py +17 -0
  72. aiagents4pharma/talk2biomodels/tools/ask_question.py +125 -0
  73. aiagents4pharma/talk2biomodels/tools/custom_plotter.py +165 -0
  74. aiagents4pharma/talk2biomodels/tools/get_annotation.py +342 -0
  75. aiagents4pharma/talk2biomodels/tools/get_modelinfo.py +159 -0
  76. aiagents4pharma/talk2biomodels/tools/load_arguments.py +134 -0
  77. aiagents4pharma/talk2biomodels/tools/load_biomodel.py +44 -0
  78. aiagents4pharma/talk2biomodels/tools/parameter_scan.py +310 -0
  79. aiagents4pharma/talk2biomodels/tools/query_article.py +64 -0
  80. aiagents4pharma/talk2biomodels/tools/save_model.py +98 -0
  81. aiagents4pharma/talk2biomodels/tools/search_models.py +96 -0
  82. aiagents4pharma/talk2biomodels/tools/simulate_model.py +137 -0
  83. aiagents4pharma/talk2biomodels/tools/steady_state.py +187 -0
  84. aiagents4pharma/talk2biomodels/tools/utils.py +23 -0
  85. aiagents4pharma/talk2cells/README.md +1 -0
  86. aiagents4pharma/talk2cells/__init__.py +5 -0
  87. aiagents4pharma/talk2cells/agents/__init__.py +6 -0
  88. aiagents4pharma/talk2cells/agents/scp_agent.py +87 -0
  89. aiagents4pharma/talk2cells/states/__init__.py +6 -0
  90. aiagents4pharma/talk2cells/states/state_talk2cells.py +15 -0
  91. aiagents4pharma/talk2cells/tests/scp_agent/test_scp_agent.py +22 -0
  92. aiagents4pharma/talk2cells/tools/__init__.py +6 -0
  93. aiagents4pharma/talk2cells/tools/scp_agent/__init__.py +6 -0
  94. aiagents4pharma/talk2cells/tools/scp_agent/display_studies.py +27 -0
  95. aiagents4pharma/talk2cells/tools/scp_agent/search_studies.py +78 -0
  96. aiagents4pharma/talk2knowledgegraphs/.dockerignore +13 -0
  97. aiagents4pharma/talk2knowledgegraphs/Dockerfile +131 -0
  98. aiagents4pharma/talk2knowledgegraphs/README.md +1 -0
  99. aiagents4pharma/talk2knowledgegraphs/__init__.py +5 -0
  100. aiagents4pharma/talk2knowledgegraphs/agents/__init__.py +5 -0
  101. aiagents4pharma/talk2knowledgegraphs/agents/t2kg_agent.py +99 -0
  102. aiagents4pharma/talk2knowledgegraphs/configs/__init__.py +5 -0
  103. aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/__init__.py +3 -0
  104. aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/default.yaml +62 -0
  105. aiagents4pharma/talk2knowledgegraphs/configs/app/__init__.py +5 -0
  106. aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/__init__.py +3 -0
  107. aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/default.yaml +79 -0
  108. aiagents4pharma/talk2knowledgegraphs/configs/config.yaml +13 -0
  109. aiagents4pharma/talk2knowledgegraphs/configs/tools/__init__.py +5 -0
  110. aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/__init__.py +3 -0
  111. aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/default.yaml +24 -0
  112. aiagents4pharma/talk2knowledgegraphs/configs/tools/multimodal_subgraph_extraction/__init__.py +0 -0
  113. aiagents4pharma/talk2knowledgegraphs/configs/tools/multimodal_subgraph_extraction/default.yaml +33 -0
  114. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/__init__.py +3 -0
  115. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/default.yaml +43 -0
  116. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/__init__.py +3 -0
  117. aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/default.yaml +9 -0
  118. aiagents4pharma/talk2knowledgegraphs/configs/utils/database/milvus/__init__.py +3 -0
  119. aiagents4pharma/talk2knowledgegraphs/configs/utils/database/milvus/default.yaml +61 -0
  120. aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/ols_terms/default.yaml +3 -0
  121. aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/reactome_pathways/default.yaml +3 -0
  122. aiagents4pharma/talk2knowledgegraphs/configs/utils/enrichments/uniprot_proteins/default.yaml +6 -0
  123. aiagents4pharma/talk2knowledgegraphs/configs/utils/pubchem_utils/default.yaml +5 -0
  124. aiagents4pharma/talk2knowledgegraphs/datasets/__init__.py +5 -0
  125. aiagents4pharma/talk2knowledgegraphs/datasets/biobridge_primekg.py +607 -0
  126. aiagents4pharma/talk2knowledgegraphs/datasets/dataset.py +25 -0
  127. aiagents4pharma/talk2knowledgegraphs/datasets/primekg.py +212 -0
  128. aiagents4pharma/talk2knowledgegraphs/datasets/starkqa_primekg.py +210 -0
  129. aiagents4pharma/talk2knowledgegraphs/docker-compose/cpu/.env.example +23 -0
  130. aiagents4pharma/talk2knowledgegraphs/docker-compose/cpu/docker-compose.yml +93 -0
  131. aiagents4pharma/talk2knowledgegraphs/docker-compose/gpu/.env.example +23 -0
  132. aiagents4pharma/talk2knowledgegraphs/docker-compose/gpu/docker-compose.yml +108 -0
  133. aiagents4pharma/talk2knowledgegraphs/entrypoint.sh +180 -0
  134. aiagents4pharma/talk2knowledgegraphs/install.md +165 -0
  135. aiagents4pharma/talk2knowledgegraphs/milvus_data_dump.py +886 -0
  136. aiagents4pharma/talk2knowledgegraphs/states/__init__.py +5 -0
  137. aiagents4pharma/talk2knowledgegraphs/states/state_talk2knowledgegraphs.py +40 -0
  138. aiagents4pharma/talk2knowledgegraphs/tests/__init__.py +0 -0
  139. aiagents4pharma/talk2knowledgegraphs/tests/test_agents_t2kg_agent.py +318 -0
  140. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_biobridge_primekg.py +248 -0
  141. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_dataset.py +33 -0
  142. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_primekg.py +86 -0
  143. aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_starkqa_primekg.py +125 -0
  144. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_graphrag_reasoning.py +257 -0
  145. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_milvus_multimodal_subgraph_extraction.py +1444 -0
  146. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_multimodal_subgraph_extraction.py +159 -0
  147. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_extraction.py +152 -0
  148. aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_summarization.py +201 -0
  149. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_database_milvus_connection_manager.py +812 -0
  150. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_embeddings.py +51 -0
  151. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_huggingface.py +49 -0
  152. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_nim_molmim.py +59 -0
  153. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_ollama.py +63 -0
  154. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_sentencetransformer.py +47 -0
  155. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_enrichments.py +40 -0
  156. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ollama.py +94 -0
  157. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ols.py +70 -0
  158. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_pubchem.py +45 -0
  159. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_reactome.py +44 -0
  160. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_uniprot.py +48 -0
  161. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_extractions_milvus_multimodal_pcst.py +759 -0
  162. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_kg_utils.py +78 -0
  163. aiagents4pharma/talk2knowledgegraphs/tests/test_utils_pubchem_utils.py +123 -0
  164. aiagents4pharma/talk2knowledgegraphs/tools/__init__.py +11 -0
  165. aiagents4pharma/talk2knowledgegraphs/tools/graphrag_reasoning.py +138 -0
  166. aiagents4pharma/talk2knowledgegraphs/tools/load_arguments.py +22 -0
  167. aiagents4pharma/talk2knowledgegraphs/tools/milvus_multimodal_subgraph_extraction.py +965 -0
  168. aiagents4pharma/talk2knowledgegraphs/tools/multimodal_subgraph_extraction.py +374 -0
  169. aiagents4pharma/talk2knowledgegraphs/tools/subgraph_extraction.py +291 -0
  170. aiagents4pharma/talk2knowledgegraphs/tools/subgraph_summarization.py +123 -0
  171. aiagents4pharma/talk2knowledgegraphs/utils/__init__.py +5 -0
  172. aiagents4pharma/talk2knowledgegraphs/utils/database/__init__.py +5 -0
  173. aiagents4pharma/talk2knowledgegraphs/utils/database/milvus_connection_manager.py +586 -0
  174. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/__init__.py +5 -0
  175. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/embeddings.py +81 -0
  176. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/huggingface.py +111 -0
  177. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/nim_molmim.py +54 -0
  178. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/ollama.py +87 -0
  179. aiagents4pharma/talk2knowledgegraphs/utils/embeddings/sentence_transformer.py +73 -0
  180. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/__init__.py +12 -0
  181. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/enrichments.py +37 -0
  182. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ollama.py +129 -0
  183. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ols_terms.py +89 -0
  184. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/pubchem_strings.py +78 -0
  185. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/reactome_pathways.py +71 -0
  186. aiagents4pharma/talk2knowledgegraphs/utils/enrichments/uniprot_proteins.py +98 -0
  187. aiagents4pharma/talk2knowledgegraphs/utils/extractions/__init__.py +5 -0
  188. aiagents4pharma/talk2knowledgegraphs/utils/extractions/milvus_multimodal_pcst.py +762 -0
  189. aiagents4pharma/talk2knowledgegraphs/utils/extractions/multimodal_pcst.py +298 -0
  190. aiagents4pharma/talk2knowledgegraphs/utils/extractions/pcst.py +229 -0
  191. aiagents4pharma/talk2knowledgegraphs/utils/kg_utils.py +67 -0
  192. aiagents4pharma/talk2knowledgegraphs/utils/pubchem_utils.py +104 -0
  193. aiagents4pharma/talk2scholars/.dockerignore +13 -0
  194. aiagents4pharma/talk2scholars/Dockerfile +104 -0
  195. aiagents4pharma/talk2scholars/README.md +1 -0
  196. aiagents4pharma/talk2scholars/__init__.py +7 -0
  197. aiagents4pharma/talk2scholars/agents/__init__.py +13 -0
  198. aiagents4pharma/talk2scholars/agents/main_agent.py +89 -0
  199. aiagents4pharma/talk2scholars/agents/paper_download_agent.py +96 -0
  200. aiagents4pharma/talk2scholars/agents/pdf_agent.py +101 -0
  201. aiagents4pharma/talk2scholars/agents/s2_agent.py +135 -0
  202. aiagents4pharma/talk2scholars/agents/zotero_agent.py +127 -0
  203. aiagents4pharma/talk2scholars/configs/__init__.py +7 -0
  204. aiagents4pharma/talk2scholars/configs/agents/__init__.py +7 -0
  205. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py +7 -0
  206. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/__init__.py +3 -0
  207. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml +52 -0
  208. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/paper_download_agent/__init__.py +3 -0
  209. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/paper_download_agent/default.yaml +19 -0
  210. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/pdf_agent/__init__.py +3 -0
  211. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/pdf_agent/default.yaml +19 -0
  212. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/__init__.py +3 -0
  213. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml +44 -0
  214. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/__init__.py +3 -0
  215. aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml +19 -0
  216. aiagents4pharma/talk2scholars/configs/app/__init__.py +7 -0
  217. aiagents4pharma/talk2scholars/configs/app/frontend/__init__.py +3 -0
  218. aiagents4pharma/talk2scholars/configs/app/frontend/default.yaml +72 -0
  219. aiagents4pharma/talk2scholars/configs/config.yaml +16 -0
  220. aiagents4pharma/talk2scholars/configs/tools/__init__.py +21 -0
  221. aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/__init__.py +3 -0
  222. aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/default.yaml +26 -0
  223. aiagents4pharma/talk2scholars/configs/tools/paper_download/__init__.py +3 -0
  224. aiagents4pharma/talk2scholars/configs/tools/paper_download/default.yaml +124 -0
  225. aiagents4pharma/talk2scholars/configs/tools/question_and_answer/__init__.py +3 -0
  226. aiagents4pharma/talk2scholars/configs/tools/question_and_answer/default.yaml +62 -0
  227. aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id/__init__.py +3 -0
  228. aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id/default.yaml +12 -0
  229. aiagents4pharma/talk2scholars/configs/tools/search/__init__.py +3 -0
  230. aiagents4pharma/talk2scholars/configs/tools/search/default.yaml +26 -0
  231. aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/__init__.py +3 -0
  232. aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/default.yaml +26 -0
  233. aiagents4pharma/talk2scholars/configs/tools/zotero_read/__init__.py +3 -0
  234. aiagents4pharma/talk2scholars/configs/tools/zotero_read/default.yaml +57 -0
  235. aiagents4pharma/talk2scholars/configs/tools/zotero_write/__inti__.py +3 -0
  236. aiagents4pharma/talk2scholars/configs/tools/zotero_write/default.yaml +55 -0
  237. aiagents4pharma/talk2scholars/docker-compose/cpu/.env.example +21 -0
  238. aiagents4pharma/talk2scholars/docker-compose/cpu/docker-compose.yml +90 -0
  239. aiagents4pharma/talk2scholars/docker-compose/gpu/.env.example +21 -0
  240. aiagents4pharma/talk2scholars/docker-compose/gpu/docker-compose.yml +105 -0
  241. aiagents4pharma/talk2scholars/install.md +122 -0
  242. aiagents4pharma/talk2scholars/state/__init__.py +7 -0
  243. aiagents4pharma/talk2scholars/state/state_talk2scholars.py +98 -0
  244. aiagents4pharma/talk2scholars/tests/__init__.py +3 -0
  245. aiagents4pharma/talk2scholars/tests/test_agents_main_agent.py +256 -0
  246. aiagents4pharma/talk2scholars/tests/test_agents_paper_agents_download_agent.py +139 -0
  247. aiagents4pharma/talk2scholars/tests/test_agents_pdf_agent.py +114 -0
  248. aiagents4pharma/talk2scholars/tests/test_agents_s2_agent.py +198 -0
  249. aiagents4pharma/talk2scholars/tests/test_agents_zotero_agent.py +160 -0
  250. aiagents4pharma/talk2scholars/tests/test_s2_tools_display_dataframe.py +91 -0
  251. aiagents4pharma/talk2scholars/tests/test_s2_tools_query_dataframe.py +191 -0
  252. aiagents4pharma/talk2scholars/tests/test_states_state.py +38 -0
  253. aiagents4pharma/talk2scholars/tests/test_tools_paper_downloader.py +507 -0
  254. aiagents4pharma/talk2scholars/tests/test_tools_question_and_answer_tool.py +105 -0
  255. aiagents4pharma/talk2scholars/tests/test_tools_s2_multi.py +307 -0
  256. aiagents4pharma/talk2scholars/tests/test_tools_s2_retrieve.py +67 -0
  257. aiagents4pharma/talk2scholars/tests/test_tools_s2_search.py +286 -0
  258. aiagents4pharma/talk2scholars/tests/test_tools_s2_single.py +298 -0
  259. aiagents4pharma/talk2scholars/tests/test_utils_arxiv_downloader.py +469 -0
  260. aiagents4pharma/talk2scholars/tests/test_utils_base_paper_downloader.py +598 -0
  261. aiagents4pharma/talk2scholars/tests/test_utils_biorxiv_downloader.py +669 -0
  262. aiagents4pharma/talk2scholars/tests/test_utils_medrxiv_downloader.py +500 -0
  263. aiagents4pharma/talk2scholars/tests/test_utils_nvidia_nim_reranker.py +117 -0
  264. aiagents4pharma/talk2scholars/tests/test_utils_pdf_answer_formatter.py +67 -0
  265. aiagents4pharma/talk2scholars/tests/test_utils_pdf_batch_processor.py +92 -0
  266. aiagents4pharma/talk2scholars/tests/test_utils_pdf_collection_manager.py +173 -0
  267. aiagents4pharma/talk2scholars/tests/test_utils_pdf_document_processor.py +68 -0
  268. aiagents4pharma/talk2scholars/tests/test_utils_pdf_generate_answer.py +72 -0
  269. aiagents4pharma/talk2scholars/tests/test_utils_pdf_gpu_detection.py +129 -0
  270. aiagents4pharma/talk2scholars/tests/test_utils_pdf_paper_loader.py +116 -0
  271. aiagents4pharma/talk2scholars/tests/test_utils_pdf_rag_pipeline.py +88 -0
  272. aiagents4pharma/talk2scholars/tests/test_utils_pdf_retrieve_chunks.py +190 -0
  273. aiagents4pharma/talk2scholars/tests/test_utils_pdf_singleton_manager.py +159 -0
  274. aiagents4pharma/talk2scholars/tests/test_utils_pdf_vector_normalization.py +121 -0
  275. aiagents4pharma/talk2scholars/tests/test_utils_pdf_vector_store.py +406 -0
  276. aiagents4pharma/talk2scholars/tests/test_utils_pubmed_downloader.py +1007 -0
  277. aiagents4pharma/talk2scholars/tests/test_utils_read_helper_utils.py +106 -0
  278. aiagents4pharma/talk2scholars/tests/test_utils_s2_utils_ext_ids.py +403 -0
  279. aiagents4pharma/talk2scholars/tests/test_utils_tool_helper_utils.py +85 -0
  280. aiagents4pharma/talk2scholars/tests/test_utils_zotero_human_in_the_loop.py +266 -0
  281. aiagents4pharma/talk2scholars/tests/test_utils_zotero_path.py +496 -0
  282. aiagents4pharma/talk2scholars/tests/test_utils_zotero_pdf_downloader_utils.py +46 -0
  283. aiagents4pharma/talk2scholars/tests/test_utils_zotero_read.py +743 -0
  284. aiagents4pharma/talk2scholars/tests/test_utils_zotero_write.py +151 -0
  285. aiagents4pharma/talk2scholars/tools/__init__.py +9 -0
  286. aiagents4pharma/talk2scholars/tools/paper_download/__init__.py +12 -0
  287. aiagents4pharma/talk2scholars/tools/paper_download/paper_downloader.py +442 -0
  288. aiagents4pharma/talk2scholars/tools/paper_download/utils/__init__.py +22 -0
  289. aiagents4pharma/talk2scholars/tools/paper_download/utils/arxiv_downloader.py +207 -0
  290. aiagents4pharma/talk2scholars/tools/paper_download/utils/base_paper_downloader.py +336 -0
  291. aiagents4pharma/talk2scholars/tools/paper_download/utils/biorxiv_downloader.py +313 -0
  292. aiagents4pharma/talk2scholars/tools/paper_download/utils/medrxiv_downloader.py +196 -0
  293. aiagents4pharma/talk2scholars/tools/paper_download/utils/pubmed_downloader.py +323 -0
  294. aiagents4pharma/talk2scholars/tools/pdf/__init__.py +7 -0
  295. aiagents4pharma/talk2scholars/tools/pdf/question_and_answer.py +170 -0
  296. aiagents4pharma/talk2scholars/tools/pdf/utils/__init__.py +37 -0
  297. aiagents4pharma/talk2scholars/tools/pdf/utils/answer_formatter.py +62 -0
  298. aiagents4pharma/talk2scholars/tools/pdf/utils/batch_processor.py +198 -0
  299. aiagents4pharma/talk2scholars/tools/pdf/utils/collection_manager.py +172 -0
  300. aiagents4pharma/talk2scholars/tools/pdf/utils/document_processor.py +76 -0
  301. aiagents4pharma/talk2scholars/tools/pdf/utils/generate_answer.py +97 -0
  302. aiagents4pharma/talk2scholars/tools/pdf/utils/get_vectorstore.py +59 -0
  303. aiagents4pharma/talk2scholars/tools/pdf/utils/gpu_detection.py +150 -0
  304. aiagents4pharma/talk2scholars/tools/pdf/utils/nvidia_nim_reranker.py +97 -0
  305. aiagents4pharma/talk2scholars/tools/pdf/utils/paper_loader.py +123 -0
  306. aiagents4pharma/talk2scholars/tools/pdf/utils/rag_pipeline.py +113 -0
  307. aiagents4pharma/talk2scholars/tools/pdf/utils/retrieve_chunks.py +197 -0
  308. aiagents4pharma/talk2scholars/tools/pdf/utils/singleton_manager.py +140 -0
  309. aiagents4pharma/talk2scholars/tools/pdf/utils/tool_helper.py +86 -0
  310. aiagents4pharma/talk2scholars/tools/pdf/utils/vector_normalization.py +150 -0
  311. aiagents4pharma/talk2scholars/tools/pdf/utils/vector_store.py +327 -0
  312. aiagents4pharma/talk2scholars/tools/s2/__init__.py +21 -0
  313. aiagents4pharma/talk2scholars/tools/s2/display_dataframe.py +110 -0
  314. aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py +111 -0
  315. aiagents4pharma/talk2scholars/tools/s2/query_dataframe.py +233 -0
  316. aiagents4pharma/talk2scholars/tools/s2/retrieve_semantic_scholar_paper_id.py +128 -0
  317. aiagents4pharma/talk2scholars/tools/s2/search.py +101 -0
  318. aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py +102 -0
  319. aiagents4pharma/talk2scholars/tools/s2/utils/__init__.py +5 -0
  320. aiagents4pharma/talk2scholars/tools/s2/utils/multi_helper.py +223 -0
  321. aiagents4pharma/talk2scholars/tools/s2/utils/search_helper.py +205 -0
  322. aiagents4pharma/talk2scholars/tools/s2/utils/single_helper.py +216 -0
  323. aiagents4pharma/talk2scholars/tools/zotero/__init__.py +7 -0
  324. aiagents4pharma/talk2scholars/tools/zotero/utils/__init__.py +7 -0
  325. aiagents4pharma/talk2scholars/tools/zotero/utils/read_helper.py +270 -0
  326. aiagents4pharma/talk2scholars/tools/zotero/utils/review_helper.py +74 -0
  327. aiagents4pharma/talk2scholars/tools/zotero/utils/write_helper.py +194 -0
  328. aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_path.py +180 -0
  329. aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_pdf_downloader.py +133 -0
  330. aiagents4pharma/talk2scholars/tools/zotero/zotero_read.py +105 -0
  331. aiagents4pharma/talk2scholars/tools/zotero/zotero_review.py +162 -0
  332. aiagents4pharma/talk2scholars/tools/zotero/zotero_write.py +91 -0
  333. aiagents4pharma-0.0.0.dist-info/METADATA +335 -0
  334. aiagents4pharma-0.0.0.dist-info/RECORD +336 -0
  335. aiagents4pharma-0.0.0.dist-info/WHEEL +4 -0
  336. aiagents4pharma-0.0.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,86 @@
1
+ """
2
+ Test cases for datasets/primekg_loader.py
3
+ """
4
+
5
+ import os
6
+ import shutil
7
+
8
+ import pytest
9
+
10
+ from ..datasets.primekg import PrimeKG
11
+
12
+ # Remove the data folder for testing if it exists
13
+ LOCAL_DIR = "../data/primekg_test/"
14
+ shutil.rmtree(LOCAL_DIR, ignore_errors=True)
15
+
16
+
17
+ @pytest.fixture(name="primekg")
18
+ def primekg_fixture():
19
+ """
20
+ Fixture for creating an instance of PrimeKG.
21
+ """
22
+ return PrimeKG(local_dir=LOCAL_DIR)
23
+
24
+
25
+ def test_download_primekg(primekg):
26
+ """
27
+ Test the loading method of the PrimeKG class by downloading PrimeKG from server.
28
+ """
29
+ # Load PrimeKG data
30
+ primekg.load_data()
31
+ primekg_nodes = primekg.get_nodes()
32
+ primekg_edges = primekg.get_edges()
33
+
34
+ # Check if the local directory exists
35
+ assert os.path.exists(primekg.local_dir)
36
+ # Check if downloaded and processed files exist
37
+ files = [
38
+ "nodes.tab",
39
+ f"{primekg.name}_nodes.tsv.gz",
40
+ "edges.csv",
41
+ f"{primekg.name}_edges.tsv.gz",
42
+ ]
43
+ for file in files:
44
+ path = f"{primekg.local_dir}/{file}"
45
+ assert os.path.exists(path)
46
+ # Check processed PrimeKG dataframes
47
+ # Nodes
48
+ assert primekg_nodes is not None
49
+ assert len(primekg_nodes) > 0
50
+ assert primekg_nodes.shape[0] == 129375
51
+ # Edges
52
+ assert primekg_edges is not None
53
+ assert len(primekg_edges) > 0
54
+ assert primekg_edges.shape[0] == 8100498
55
+
56
+
57
+ def test_load_existing_primekg(primekg):
58
+ """
59
+ Test the loading method of the PrimeKG class by loading existing PrimeKG in local.
60
+ """
61
+ # Load PrimeKG data
62
+ primekg.load_data()
63
+ primekg_nodes = primekg.get_nodes()
64
+ primekg_edges = primekg.get_edges()
65
+
66
+ # Check if the local directory exists
67
+ assert os.path.exists(primekg.local_dir)
68
+ # Check if downloaded and processed files exist
69
+ files = [
70
+ "nodes.tab",
71
+ f"{primekg.name}_nodes.tsv.gz",
72
+ "edges.csv",
73
+ f"{primekg.name}_edges.tsv.gz",
74
+ ]
75
+ for file in files:
76
+ path = f"{primekg.local_dir}/{file}"
77
+ assert os.path.exists(path)
78
+ # Check processed PrimeKG dataframes
79
+ # Nodes
80
+ assert primekg_nodes is not None
81
+ assert len(primekg_nodes) > 0
82
+ assert primekg_nodes.shape[0] == 129375
83
+ # Edges
84
+ assert primekg_edges is not None
85
+ assert len(primekg_edges) > 0
86
+ assert primekg_edges.shape[0] == 8100498
@@ -0,0 +1,125 @@
1
+ """
2
+ Test cases for datasets/starkqa_primekg_loader.py
3
+ """
4
+
5
+ import os
6
+ import shutil
7
+
8
+ import pytest
9
+
10
+ from ..datasets.starkqa_primekg import StarkQAPrimeKG
11
+
12
+ # Remove the data folder for testing if it exists
13
+ LOCAL_DIR = "../data/starkqa_primekg_test/"
14
+ shutil.rmtree(LOCAL_DIR, ignore_errors=True)
15
+
16
+
17
+ @pytest.fixture(name="starkqa_primekg")
18
+ def starkqa_primekg_fixture():
19
+ """
20
+ Fixture for creating an instance of StarkQAPrimeKGData.
21
+ """
22
+ return StarkQAPrimeKG(local_dir=LOCAL_DIR)
23
+
24
+
25
+ def test_download_starkqa_primekg(starkqa_primekg):
26
+ """
27
+ Test the loading method of the StarkQAPrimeKGLoaderTool class by downloading files
28
+ from HuggingFace Hub.
29
+ """
30
+ # Load StarkQA PrimeKG data
31
+ starkqa_primekg.load_data()
32
+ starkqa_df = starkqa_primekg.get_starkqa()
33
+ primekg_node_info = starkqa_primekg.get_starkqa_node_info()
34
+ split_idx = starkqa_primekg.get_starkqa_split_indicies()
35
+ query_embeddings = starkqa_primekg.get_query_embeddings()
36
+ node_embeddings = starkqa_primekg.get_node_embeddings()
37
+
38
+ # Check if the local directory exists
39
+ assert os.path.exists(starkqa_primekg.local_dir)
40
+ # Check if downloaded files exist in the local directory
41
+ files = [
42
+ "qa/prime/split/test-0.1.index",
43
+ "qa/prime/split/test.index",
44
+ "qa/prime/split/train.index",
45
+ "qa/prime/split/val.index",
46
+ "qa/prime/stark_qa/stark_qa.csv",
47
+ "qa/prime/stark_qa/stark_qa_human_generated_eval.csv",
48
+ "skb/prime/processed.zip",
49
+ ]
50
+ for file in files:
51
+ path = f"{starkqa_primekg.local_dir}/{file}"
52
+ assert os.path.exists(path)
53
+ # Check dataframe
54
+ assert starkqa_df is not None
55
+ assert len(starkqa_df) > 0
56
+ assert starkqa_df.shape[0] == 11204
57
+ # Check node information
58
+ assert primekg_node_info is not None
59
+ assert len(primekg_node_info) == 129375
60
+ # Check split indices
61
+ assert list(split_idx.keys()) == ["train", "val", "test", "test-0.1"]
62
+ assert len(split_idx["train"]) == 6162
63
+ assert len(split_idx["val"]) == 2241
64
+ assert len(split_idx["test"]) == 2801
65
+ assert len(split_idx["test-0.1"]) == 280
66
+ # Check query embeddings
67
+ assert query_embeddings is not None
68
+ assert len(query_embeddings) == 11204
69
+ assert query_embeddings[0].shape[1] == 1536
70
+ # Check node embeddings
71
+ assert node_embeddings is not None
72
+ assert len(node_embeddings) == 129375
73
+ assert node_embeddings[0].shape[1] == 1536
74
+
75
+
76
+ def test_load_existing_starkqa_primekg(starkqa_primekg):
77
+ """
78
+
79
+ Test the loading method of the StarkQAPrimeKGLoaderTool class by loading existing files
80
+ in the local directory.
81
+ """
82
+ # Load StarkQA PrimeKG data
83
+ starkqa_primekg.load_data()
84
+ starkqa_df = starkqa_primekg.get_starkqa()
85
+ primekg_node_info = starkqa_primekg.get_starkqa_node_info()
86
+ split_idx = starkqa_primekg.get_starkqa_split_indicies()
87
+ query_embeddings = starkqa_primekg.get_query_embeddings()
88
+ node_embeddings = starkqa_primekg.get_node_embeddings()
89
+
90
+ # Check if the local directory exists
91
+ assert os.path.exists(starkqa_primekg.local_dir)
92
+ # Check if downloaded and processed files exist
93
+ files = [
94
+ "qa/prime/split/test-0.1.index",
95
+ "qa/prime/split/test.index",
96
+ "qa/prime/split/train.index",
97
+ "qa/prime/split/val.index",
98
+ "qa/prime/stark_qa/stark_qa.csv",
99
+ "qa/prime/stark_qa/stark_qa_human_generated_eval.csv",
100
+ "skb/prime/processed.zip",
101
+ ]
102
+ for file in files:
103
+ path = f"{starkqa_primekg.local_dir}/{file}"
104
+ assert os.path.exists(path)
105
+ # Check dataframe
106
+ assert starkqa_df is not None
107
+ assert len(starkqa_df) > 0
108
+ assert starkqa_df.shape[0] == 11204
109
+ # Check node information
110
+ assert primekg_node_info is not None
111
+ assert len(primekg_node_info) == 129375
112
+ # Check split indices
113
+ assert list(split_idx.keys()) == ["train", "val", "test", "test-0.1"]
114
+ assert len(split_idx["train"]) == 6162
115
+ assert len(split_idx["val"]) == 2241
116
+ assert len(split_idx["test"]) == 2801
117
+ assert len(split_idx["test-0.1"]) == 280
118
+ # Check query embeddings
119
+ assert query_embeddings is not None
120
+ assert len(query_embeddings) == 11204
121
+ assert query_embeddings[0].shape[1] == 1536
122
+ # Check node embeddings
123
+ assert node_embeddings is not None
124
+ assert len(node_embeddings) == 129375
125
+ assert node_embeddings[0].shape[1] == 1536
@@ -0,0 +1,257 @@
1
+ """
2
+ Test cases for tools/graphrag_reasoning.py
3
+ """
4
+
5
+ import pytest
6
+ from langchain_core.messages import HumanMessage
7
+ from langchain_openai import ChatOpenAI, OpenAIEmbeddings
8
+
9
+ from ..agents.t2kg_agent import get_app
10
+
11
+ # Define the data path
12
+ DATA_PATH = "aiagents4pharma/talk2knowledgegraphs/tests/files"
13
+
14
+
15
+ @pytest.fixture(name="input_dict")
16
+ def input_dict_fixture():
17
+ """
18
+ Input dictionary fixture.
19
+ """
20
+ input_dict = {
21
+ "llm_model": None, # TBA for each test case
22
+ "embedding_model": None, # TBA for each test case
23
+ "uploaded_files": [
24
+ {
25
+ "file_name": "adalimumab.pdf",
26
+ "file_path": f"{DATA_PATH}/adalimumab.pdf",
27
+ "file_type": "drug_data",
28
+ "uploaded_by": "VPEUser",
29
+ "uploaded_timestamp": "2024-11-05 00:00:00",
30
+ },
31
+ {
32
+ "file_name": "DGE_human_Colon_UC-vs-Colon_Control.pdf",
33
+ "file_path": f"{DATA_PATH}/DGE_human_Colon_UC-vs-Colon_Control.pdf",
34
+ "file_type": "endotype",
35
+ "uploaded_by": "VPEUser",
36
+ "uploaded_timestamp": "2024-11-05 00:00:00",
37
+ },
38
+ ],
39
+ "topk_nodes": 3,
40
+ "topk_edges": 3,
41
+ "dic_source_graph": [
42
+ {
43
+ "name": "PrimeKG",
44
+ "kg_pyg_path": f"{DATA_PATH}/primekg_ibd_pyg_graph.pkl",
45
+ "kg_text_path": f"{DATA_PATH}/primekg_ibd_text_graph.pkl",
46
+ }
47
+ ],
48
+ "dic_extracted_graph": [
49
+ {
50
+ "name": "subkg_12345",
51
+ "tool_call_id": "tool_12345",
52
+ "graph_source": "PrimeKG",
53
+ "topk_nodes": 3,
54
+ "topk_edges": 3,
55
+ "graph_dict": {
56
+ "nodes": [
57
+ ("IFNG_(3495)", {}),
58
+ ("IKBKG_(3672)", {}),
59
+ ("ATG16L1_(6661)", {}),
60
+ ("inflammatory bowel disease_(28158)", {}),
61
+ ("Crohn ileitis and jejunitis_(35814)", {}),
62
+ ("Crohn's colitis_(83770)", {}),
63
+ ],
64
+ "edges": [
65
+ (
66
+ "IFNG_(3495)",
67
+ "inflammatory bowel disease_(28158)",
68
+ {
69
+ "relation": [
70
+ "gene/protein",
71
+ "associated with",
72
+ "disease",
73
+ ],
74
+ "label": ["gene/protein", "associated with", "disease"],
75
+ },
76
+ ),
77
+ (
78
+ "IFNG_(3495)",
79
+ "Crohn's colitis_(83770)",
80
+ {
81
+ "relation": [
82
+ "gene/protein",
83
+ "associated with",
84
+ "disease",
85
+ ],
86
+ "label": ["gene/protein", "associated with", "disease"],
87
+ },
88
+ ),
89
+ (
90
+ "IFNG_(3495)",
91
+ "Crohn ileitis and jejunitis_(35814)",
92
+ {
93
+ "relation": [
94
+ "gene/protein",
95
+ "associated with",
96
+ "disease",
97
+ ],
98
+ "label": ["gene/protein", "associated with", "disease"],
99
+ },
100
+ ),
101
+ (
102
+ "ATG16L1_(6661)",
103
+ "IKBKG_(3672)",
104
+ {
105
+ "relation": ["gene/protein", "ppi", "gene/protein"],
106
+ "label": ["gene/protein", "ppi", "gene/protein"],
107
+ },
108
+ ),
109
+ (
110
+ "Crohn's colitis_(83770)",
111
+ "ATG16L1_(6661)",
112
+ {
113
+ "relation": [
114
+ "disease",
115
+ "associated with",
116
+ "gene/protein",
117
+ ],
118
+ "label": ["disease", "associated with", "gene/protein"],
119
+ },
120
+ ),
121
+ ],
122
+ },
123
+ "graph_text": """
124
+ node_id,node_attr
125
+ IFNG_(3495),"IFNG belongs to gene/protein category.
126
+ This gene encodes a soluble cytokine that is a member of the type II interferon class.
127
+ The encoded protein is secreted by cells of both the innate and adaptive immune systems.
128
+ The active protein is a homodimer that binds to the interferon gamma receptor
129
+ which triggers a cellular response to viral and microbial infections.
130
+ Mutations in this gene are associated with an increased susceptibility to viral,
131
+ bacterial and parasitic infections and to several autoimmune diseases.
132
+ [provided by RefSeq, Dec 2015]."
133
+ IKBKG_(3672),"IKBKG belongs to gene/protein category. This gene encodes the regulatory
134
+ subunit of the inhibitor of kappaB kinase (IKK) complex, which activates NF-kappaB
135
+ resulting in activation of genes involved in inflammation, immunity, cell survival,
136
+ and other pathways. Mutations in this gene result in incontinentia pigmenti,
137
+ hypohidrotic ectodermal dysplasia, and several other types of immunodeficiencies.
138
+ A pseudogene highly similar to this locus is located in an adjacent region of the
139
+ X chromosome. [provided by RefSeq, Mar 2016]."
140
+ ATG16L1_(6661),"ATG16L1 belongs to gene/protein category. The protein encoded
141
+ by this gene is part of a large protein complex that is necessary for autophagy,
142
+ the major process by which intracellular components are targeted to lysosomes
143
+ for degradation. Defects in this gene are a cause of susceptibility to inflammatory
144
+ bowel disease type 10 (IBD10). Several transcript variants encoding different
145
+ isoforms have been found for this gene.[provided by RefSeq, Jun 2010]."
146
+ inflammatory bowel disease_(28158),inflammatory bowel disease belongs to disease
147
+ category. Any inflammatory bowel disease in which the cause of the disease
148
+ is a mutation in the NOD2 gene.
149
+ Crohn ileitis and jejunitis_(35814),Crohn ileitis and jejunitis belongs to
150
+ disease category. An Crohn disease involving a pathogenic inflammatory
151
+ response in the ileum.
152
+ Crohn's colitis_(83770),Crohn's colitis belongs to disease category.
153
+ Crohn's disease affecting the colon.
154
+
155
+ head_id,edge_type,tail_id
156
+ Crohn's colitis_(83770),"('disease', 'associated with', 'gene/protein')",
157
+ ATG16L1_(6661)
158
+ ATG16L1_(6661),"('gene/protein', 'ppi', 'gene/protein')",IKBKG_(3672)
159
+ IFNG_(3495),"('gene/protein', 'associated with', 'disease')",
160
+ inflammatory bowel disease_(28158)
161
+ IFNG_(3495),"('gene/protein', 'associated with', 'disease')",Crohn's colitis_(83770)
162
+ IFNG_(3495),"('gene/protein', 'associated with', 'disease')",
163
+ Crohn ileitis and jejunitis_(35814)
164
+ """,
165
+ "graph_summary": """
166
+ The subgraph extracted from `subkg_12345` includes several important genes and
167
+ their associations with inflammatory bowel diseases, particularly Crohn's disease.
168
+
169
+ Key Nodes:
170
+ 1. **IFNG (Interferon gamma)**: This gene encodes a cytokine that plays a crucial
171
+ role in immune response. It is associated with several diseases, including
172
+ inflammatory bowel disease and specifically Crohn's colitis and Crohn ileitis and
173
+ jejunitis. Mutations in IFNG can lead to increased susceptibility to infections
174
+ and autoimmune diseases.
175
+
176
+ 2. **IKBKG (Inhibitor of kappaB kinase gamma)**: This gene is involved in the
177
+ regulation of NF-kappaB, which is critical for inflammation and immune responses.
178
+ Mutations can lead to immunodeficiencies and other disorders.
179
+
180
+ 3. **ATG16L1**: This gene is essential for autophagy, a process that helps in
181
+ degrading intracellular components. Defects in ATG16L1 are linked to inflammatory
182
+ bowel disease type 10 (IBD10) and are associated with Crohn's colitis.
183
+
184
+ 4. **Inflammatory Bowel Disease**: A category of diseases characterized by
185
+ chronic inflammation of the gastrointestinal tract, with specific mention of
186
+ mutations in the NOD2 gene as a cause.
187
+
188
+ 5. **Crohn's Colitis**: A specific type of Crohn's disease affecting the colon,
189
+ indicating a pathogenic inflammatory response.
190
+
191
+ 6. **Crohn Ileitis and Jejunitis**: Another form of Crohn's disease that involves
192
+ inflammation in the ileum.
193
+
194
+ Key Edges:
195
+ - **IFNG is associated with inflammatory bowel disease, Crohn's colitis, and
196
+ Crohn ileitis and jejunitis**: This highlights the role of IFNG in these diseases.
197
+ - **ATG16L1 is associated with Crohn's colitis**: This indicates a direct link
198
+ between the gene and the disease.
199
+ - **ATG16L1 interacts with IKBKG**: This protein-protein interaction suggests a
200
+ functional relationship between these two genes in the context of immune response
201
+ and inflammation.
202
+
203
+ In summary, the subgraph illustrates the connections between key genes
204
+ (IFNG, IKBKG, ATG16L1) and their associations with inflammatory bowel diseases,
205
+ particularly Crohn's disease, emphasizing the genetic underpinnings of these conditions.
206
+ """,
207
+ }
208
+ ],
209
+ }
210
+
211
+ return input_dict
212
+
213
+
214
+ def test_graphrag_reasoning_openai(input_dict):
215
+ """
216
+ Test the GraphRAG reasoning tool using OpenAI model.
217
+
218
+ Args:
219
+ input_dict: Input dictionary
220
+ """
221
+ # Prepare LLM and embedding model
222
+ input_dict["llm_model"] = ChatOpenAI(model="gpt-4o-mini", temperature=0.0)
223
+ input_dict["embedding_model"] = OpenAIEmbeddings(model="text-embedding-3-small")
224
+
225
+ # Setup the app
226
+ unique_id = 12345
227
+ app = get_app(unique_id, llm_model=input_dict["llm_model"])
228
+ config = {"configurable": {"thread_id": unique_id}}
229
+ # Update state
230
+ app.update_state(
231
+ config,
232
+ input_dict,
233
+ )
234
+ prompt = """
235
+ Without extracting a new subgraph, based on subgraph extracted from `subkg_12345`
236
+ perform Graph RAG reasoning to get insights related to nodes of genes
237
+ mentioned in the knowledge graph related to Adalimumab.
238
+
239
+ Here is an additional context:
240
+ Adalimumab is a fully human monoclonal antibody (IgG1)
241
+ that specifically binds to tumor necrosis factor-alpha (TNF-α), a pro-inflammatory cytokine.
242
+ """
243
+
244
+ # Test the tool graphrag_reasoning
245
+ response = app.invoke({"messages": [HumanMessage(content=prompt)]}, config=config)
246
+
247
+ # Check assistant message
248
+ assistant_msg = response["messages"][-1].content
249
+ assert isinstance(assistant_msg, str)
250
+
251
+ # Check tool message
252
+ tool_msg = response["messages"][-2]
253
+ assert tool_msg.name == "graphrag_reasoning"
254
+
255
+ # Check reasoning results
256
+ assert "Adalimumab" in assistant_msg
257
+ assert "TNF" in assistant_msg