aiagents4pharma 1.35.0__tar.gz → 1.37.0__tar.gz

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 (243) hide show
  1. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/PKG-INFO +24 -8
  2. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/README.md +22 -7
  3. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/tests/test_main_agent.py +12 -4
  4. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/agents/t2kg_agent.py +2 -2
  5. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/default.yaml +7 -6
  6. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/config.yaml +1 -0
  7. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/states/state_talk2knowledgegraphs.py +1 -0
  8. aiagents4pharma-1.37.0/aiagents4pharma/talk2knowledgegraphs/tests/__init__.py +0 -0
  9. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_agents_t2kg_agent.py +12 -11
  10. aiagents4pharma-1.37.0/aiagents4pharma/talk2knowledgegraphs/tests/test_tools_multimodal_subgraph_extraction.py +152 -0
  11. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_extraction.py +36 -65
  12. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_sentencetransformer.py +9 -2
  13. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ols.py +20 -13
  14. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tools/__init__.py +1 -0
  15. aiagents4pharma-1.37.0/aiagents4pharma/talk2knowledgegraphs/tools/multimodal_subgraph_extraction.py +374 -0
  16. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/extractions/__init__.py +1 -0
  17. aiagents4pharma-1.37.0/aiagents4pharma/talk2knowledgegraphs/utils/extractions/multimodal_pcst.py +292 -0
  18. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma.egg-info/PKG-INFO +24 -8
  19. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma.egg-info/SOURCES.txt +4 -0
  20. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma.egg-info/requires.txt +1 -0
  21. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/pyproject.toml +4 -0
  22. aiagents4pharma-1.37.0/release_version.txt +1 -0
  23. aiagents4pharma-1.35.0/release_version.txt +0 -1
  24. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/LICENSE +0 -0
  25. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/__init__.py +0 -0
  26. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/__init__.py +0 -0
  27. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/agents/__init__.py +0 -0
  28. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/agents/main_agent.py +0 -0
  29. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/configs/__init__.py +0 -0
  30. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/configs/agents/__init__.py +0 -0
  31. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/configs/agents/main_agent/default.yaml +0 -0
  32. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/configs/config.yaml +0 -0
  33. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/states/__init__.py +0 -0
  34. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/states/state_talk2aiagents4pharma.py +0 -0
  35. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2aiagents4pharma/tests/__init__.py +0 -0
  36. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/__init__.py +0 -0
  37. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/agents/__init__.py +0 -0
  38. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/agents/t2b_agent.py +0 -0
  39. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/api/__init__.py +0 -0
  40. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/api/kegg.py +0 -0
  41. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/api/ols.py +0 -0
  42. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/api/uniprot.py +0 -0
  43. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/__init__.py +0 -0
  44. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/agents/__init__.py +0 -0
  45. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/__init__.py +0 -0
  46. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/agents/t2b_agent/default.yaml +0 -0
  47. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/config.yaml +0 -0
  48. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/tools/__init__.py +0 -0
  49. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/tools/ask_question/__init__.py +0 -0
  50. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/tools/ask_question/default.yaml +0 -0
  51. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/__init__.py +0 -0
  52. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/tools/custom_plotter/default.yaml +0 -0
  53. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/tools/get_annotation/__init__.py +0 -0
  54. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/configs/tools/get_annotation/default.yaml +0 -0
  55. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/models/__init__.py +0 -0
  56. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/models/basico_model.py +0 -0
  57. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/models/sys_bio_model.py +0 -0
  58. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/states/__init__.py +0 -0
  59. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/states/state_talk2biomodels.py +0 -0
  60. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/__init__.py +0 -0
  61. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_api.py +0 -0
  62. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_ask_question.py +0 -0
  63. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_basico_model.py +0 -0
  64. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_get_annotation.py +0 -0
  65. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_getmodelinfo.py +0 -0
  66. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_integration.py +0 -0
  67. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_load_biomodel.py +0 -0
  68. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_param_scan.py +0 -0
  69. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_query_article.py +0 -0
  70. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_search_models.py +0 -0
  71. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_simulate_model.py +0 -0
  72. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_steady_state.py +0 -0
  73. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tests/test_sys_bio_model.py +0 -0
  74. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/__init__.py +0 -0
  75. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/ask_question.py +0 -0
  76. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/custom_plotter.py +0 -0
  77. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/get_annotation.py +0 -0
  78. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/get_modelinfo.py +0 -0
  79. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/load_arguments.py +0 -0
  80. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/load_biomodel.py +0 -0
  81. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/parameter_scan.py +0 -0
  82. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/query_article.py +0 -0
  83. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/search_models.py +0 -0
  84. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/simulate_model.py +0 -0
  85. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/steady_state.py +0 -0
  86. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2biomodels/tools/utils.py +0 -0
  87. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/__init__.py +0 -0
  88. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/agents/__init__.py +0 -0
  89. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/agents/scp_agent.py +0 -0
  90. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/states/__init__.py +0 -0
  91. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/states/state_talk2cells.py +0 -0
  92. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/tests/scp_agent/test_scp_agent.py +0 -0
  93. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/tools/__init__.py +0 -0
  94. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/tools/scp_agent/__init__.py +0 -0
  95. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/tools/scp_agent/display_studies.py +0 -0
  96. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2cells/tools/scp_agent/search_studies.py +0 -0
  97. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/__init__.py +0 -0
  98. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/agents/__init__.py +0 -0
  99. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/__init__.py +0 -0
  100. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/__init__.py +0 -0
  101. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/agents/t2kg_agent/default.yaml +0 -0
  102. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/app/__init__.py +0 -0
  103. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/app/frontend/__init__.py +0 -0
  104. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/__init__.py +0 -0
  105. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/__init__.py +0 -0
  106. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/graphrag_reasoning/default.yaml +0 -0
  107. {aiagents4pharma-1.35.0/aiagents4pharma/talk2knowledgegraphs/tests → aiagents4pharma-1.37.0/aiagents4pharma/talk2knowledgegraphs/configs/tools/multimodal_subgraph_extraction}/__init__.py +0 -0
  108. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/__init__.py +0 -0
  109. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_extraction/default.yaml +0 -0
  110. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/__init__.py +0 -0
  111. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/configs/tools/subgraph_summarization/default.yaml +0 -0
  112. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/datasets/__init__.py +0 -0
  113. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/datasets/biobridge_primekg.py +0 -0
  114. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/datasets/dataset.py +0 -0
  115. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/datasets/primekg.py +0 -0
  116. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/datasets/starkqa_primekg.py +0 -0
  117. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/states/__init__.py +0 -0
  118. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_biobridge_primekg.py +0 -0
  119. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_dataset.py +0 -0
  120. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_primekg.py +0 -0
  121. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_datasets_starkqa_primekg.py +0 -0
  122. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_tools_graphrag_reasoning.py +0 -0
  123. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_tools_subgraph_summarization.py +0 -0
  124. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_embeddings.py +0 -0
  125. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_huggingface.py +0 -0
  126. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_nim_molmim.py +0 -0
  127. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_embeddings_ollama.py +0 -0
  128. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_enrichments.py +0 -0
  129. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_ollama.py +0 -0
  130. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_pubchem.py +0 -0
  131. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_reactome.py +0 -0
  132. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_enrichments_uniprot.py +0 -0
  133. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_kg_utils.py +0 -0
  134. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tests/test_utils_pubchem_utils.py +0 -0
  135. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tools/graphrag_reasoning.py +0 -0
  136. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tools/load_arguments.py +0 -0
  137. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tools/subgraph_extraction.py +0 -0
  138. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/tools/subgraph_summarization.py +0 -0
  139. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/__init__.py +0 -0
  140. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/__init__.py +0 -0
  141. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/embeddings.py +0 -0
  142. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/huggingface.py +0 -0
  143. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/nim_molmim.py +0 -0
  144. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/ollama.py +0 -0
  145. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/embeddings/sentence_transformer.py +0 -0
  146. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/__init__.py +0 -0
  147. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/enrichments.py +0 -0
  148. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ollama.py +0 -0
  149. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/ols_terms.py +0 -0
  150. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/pubchem_strings.py +0 -0
  151. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/reactome_pathways.py +0 -0
  152. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/enrichments/uniprot_proteins.py +0 -0
  153. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/extractions/pcst.py +0 -0
  154. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/kg_utils.py +0 -0
  155. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2knowledgegraphs/utils/pubchem_utils.py +0 -0
  156. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/__init__.py +0 -0
  157. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/agents/__init__.py +0 -0
  158. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/agents/main_agent.py +0 -0
  159. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/agents/paper_download_agent.py +0 -0
  160. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/agents/pdf_agent.py +0 -0
  161. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/agents/s2_agent.py +0 -0
  162. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/agents/zotero_agent.py +0 -0
  163. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/__init__.py +0 -0
  164. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/__init__.py +0 -0
  165. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/__init__.py +0 -0
  166. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/__init__.py +0 -0
  167. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/main_agent/default.yaml +0 -0
  168. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/paper_download_agent/__init__.py +0 -0
  169. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/pdf_agent/__init__.py +0 -0
  170. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/__init__.py +0 -0
  171. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/s2_agent/default.yaml +0 -0
  172. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/__init__.py +0 -0
  173. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/agents/talk2scholars/zotero_agent/default.yaml +0 -0
  174. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/app/__init__.py +0 -0
  175. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/app/frontend/__init__.py +0 -0
  176. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/app/frontend/default.yaml +0 -0
  177. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/config.yaml +0 -0
  178. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/__init__.py +0 -0
  179. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/download_arxiv_paper/__init__.py +0 -0
  180. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/__init__.py +0 -0
  181. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/multi_paper_recommendation/default.yaml +0 -0
  182. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/question_and_answer/__init__.py +0 -0
  183. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id/__init__.py +0 -0
  184. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/retrieve_semantic_scholar_paper_id/default.yaml +0 -0
  185. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/search/__init__.py +0 -0
  186. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/search/default.yaml +0 -0
  187. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/__init__.py +0 -0
  188. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/single_paper_recommendation/default.yaml +0 -0
  189. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/zotero_read/__init__.py +0 -0
  190. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/zotero_read/default.yaml +0 -0
  191. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/zotero_write/__inti__.py +0 -0
  192. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/configs/tools/zotero_write/default.yaml +0 -0
  193. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/state/__init__.py +0 -0
  194. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/state/state_talk2scholars.py +0 -0
  195. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/__init__.py +0 -0
  196. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_llm_main_integration.py +0 -0
  197. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_main_agent.py +0 -0
  198. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_paper_download_agent.py +0 -0
  199. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_paper_download_tools.py +0 -0
  200. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_pdf_agent.py +0 -0
  201. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_question_and_answer_tool.py +0 -0
  202. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_routing_logic.py +0 -0
  203. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_s2_agent.py +0 -0
  204. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_s2_display.py +0 -0
  205. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_s2_multi.py +0 -0
  206. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_s2_query.py +0 -0
  207. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_s2_retrieve.py +0 -0
  208. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_s2_search.py +0 -0
  209. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_s2_single.py +0 -0
  210. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_state.py +0 -0
  211. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_zotero_agent.py +0 -0
  212. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_zotero_human_in_the_loop.py +0 -0
  213. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_zotero_path.py +0 -0
  214. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_zotero_read.py +0 -0
  215. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tests/test_zotero_write.py +0 -0
  216. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/__init__.py +0 -0
  217. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/paper_download/__init__.py +0 -0
  218. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/paper_download/download_arxiv_input.py +0 -0
  219. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/pdf/__init__.py +0 -0
  220. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/pdf/question_and_answer.py +0 -0
  221. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/__init__.py +0 -0
  222. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/display_dataframe.py +0 -0
  223. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/multi_paper_rec.py +0 -0
  224. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/query_dataframe.py +0 -0
  225. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/retrieve_semantic_scholar_paper_id.py +0 -0
  226. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/search.py +0 -0
  227. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/single_paper_rec.py +0 -0
  228. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/utils/__init__.py +0 -0
  229. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/utils/multi_helper.py +0 -0
  230. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/utils/search_helper.py +0 -0
  231. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/s2/utils/single_helper.py +0 -0
  232. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/zotero/__init__.py +0 -0
  233. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/zotero/utils/__init__.py +0 -0
  234. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/zotero/utils/read_helper.py +0 -0
  235. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/zotero/utils/review_helper.py +0 -0
  236. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/zotero/utils/write_helper.py +0 -0
  237. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/zotero/utils/zotero_path.py +0 -0
  238. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/zotero/zotero_read.py +0 -0
  239. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/zotero/zotero_review.py +0 -0
  240. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma/talk2scholars/tools/zotero/zotero_write.py +0 -0
  241. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma.egg-info/dependency_links.txt +0 -0
  242. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/aiagents4pharma.egg-info/top_level.txt +0 -0
  243. {aiagents4pharma-1.35.0 → aiagents4pharma-1.37.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aiagents4pharma
3
- Version: 1.35.0
3
+ Version: 1.37.0
4
4
  Summary: AI Agents for drug discovery, drug development, and other pharmaceutical R&D.
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: License :: OSI Approved :: MIT License
@@ -62,6 +62,7 @@ Requires-Dist: umap-learn==0.5.7
62
62
  Requires-Dist: plotly-express==0.4.1
63
63
  Requires-Dist: seaborn==0.13.2
64
64
  Requires-Dist: scanpy==1.11.0
65
+ Requires-Dist: openpyxl==3.1.5
65
66
  Dynamic: license-file
66
67
 
67
68
  [![Talk2BioModels](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2biomodels.yml/badge.svg)](https://github.com/VirtualPatientEngine/AIAgents4Pharma/actions/workflows/tests_talk2biomodels.yml)
@@ -90,6 +91,17 @@ Our toolkit currently consists of the following agents:
90
91
 
91
92
  ![AIAgents4Pharma](docs/assets/AIAgents4Pharma.png)
92
93
 
94
+ ## News
95
+
96
+ - T2B and T2KG accepted at the MLGenX workshop during ICLR #2025 in Singapore. [Read More](https://openreview.net/forum?id=av4QhBNeZo)
97
+
98
+ <div align="center">
99
+ <strong>Watch the presentation:</strong><br><br>
100
+ <a href="https://www.youtube.com/watch?v=3cU_OxY4HiE">
101
+ <img src="https://img.youtube.com/vi/3cU_OxY4HiE/0.jpg" alt="Watch the presentation" width="480">
102
+ </a>
103
+ </div>
104
+
93
105
  ## Getting Started
94
106
 
95
107
  ### Installation
@@ -250,15 +262,19 @@ If you are using docker on Windows, please follow these [Windows Setup Notes](#n
250
262
  ![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2FVirtualPatientEngine%2FAIAgents4Pharma%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)
251
263
 
252
264
  1. **Clone the repository:**
253
- ```sh
254
- git clone https://github.com/VirtualPatientEngine/AIAgents4Pharma
255
- cd AIAgents4Pharma
256
- ```
265
+
266
+ ```sh
267
+ git clone https://github.com/VirtualPatientEngine/AIAgents4Pharma
268
+ cd AIAgents4Pharma
269
+ ```
270
+
257
271
  2. **Install dependencies:**
258
272
 
259
- ```python
260
- pip install -r requirements.txt
261
- ```
273
+ We use Conda as our environment manager, Follow the official [Quickstart](https://www.anaconda.com/docs/getting-started/miniconda/install#quickstart-install-instructions) install instructions provided by anaconda/miniconda.
274
+
275
+ ```python
276
+ conda create --name AIAgents4Pharma python=3.12 -y && conda activate AIAgents4Pharma && pip install --upgrade pip && pip install -r requirements.txt
277
+ ```
262
278
 
263
279
  3. **Initialize API Keys**
264
280
 
@@ -24,6 +24,17 @@ Our toolkit currently consists of the following agents:
24
24
 
25
25
  ![AIAgents4Pharma](docs/assets/AIAgents4Pharma.png)
26
26
 
27
+ ## News
28
+
29
+ - T2B and T2KG accepted at the MLGenX workshop during ICLR #2025 in Singapore. [Read More](https://openreview.net/forum?id=av4QhBNeZo)
30
+
31
+ <div align="center">
32
+ <strong>Watch the presentation:</strong><br><br>
33
+ <a href="https://www.youtube.com/watch?v=3cU_OxY4HiE">
34
+ <img src="https://img.youtube.com/vi/3cU_OxY4HiE/0.jpg" alt="Watch the presentation" width="480">
35
+ </a>
36
+ </div>
37
+
27
38
  ## Getting Started
28
39
 
29
40
  ### Installation
@@ -184,15 +195,19 @@ If you are using docker on Windows, please follow these [Windows Setup Notes](#n
184
195
  ![Python Version from PEP 621 TOML](https://img.shields.io/python/required-version-toml?tomlFilePath=https%3A%2F%2Fraw.githubusercontent.com%2FVirtualPatientEngine%2FAIAgents4Pharma%2Frefs%2Fheads%2Fmain%2Fpyproject.toml)
185
196
 
186
197
  1. **Clone the repository:**
187
- ```sh
188
- git clone https://github.com/VirtualPatientEngine/AIAgents4Pharma
189
- cd AIAgents4Pharma
190
- ```
198
+
199
+ ```sh
200
+ git clone https://github.com/VirtualPatientEngine/AIAgents4Pharma
201
+ cd AIAgents4Pharma
202
+ ```
203
+
191
204
  2. **Install dependencies:**
192
205
 
193
- ```python
194
- pip install -r requirements.txt
195
- ```
206
+ We use Conda as our environment manager, Follow the official [Quickstart](https://www.anaconda.com/docs/getting-started/miniconda/install#quickstart-install-instructions) install instructions provided by anaconda/miniconda.
207
+
208
+ ```python
209
+ conda create --name AIAgents4Pharma python=3.12 -y && conda activate AIAgents4Pharma && pip install --upgrade pip && pip install -r requirements.txt
210
+ ```
196
211
 
197
212
  3. **Initialize API Keys**
198
213
 
@@ -20,12 +20,20 @@ def input_dict_fixture():
20
20
  input_dict = {
21
21
  "topk_nodes": 3,
22
22
  "topk_edges": 3,
23
+ "selections": {
24
+ "gene/protein": [],
25
+ "molecular_function": [],
26
+ "cellular_component": [],
27
+ "biological_process": [],
28
+ "drug": [],
29
+ "disease": []
30
+ },
23
31
  "uploaded_files": [],
24
32
  "dic_source_graph": [
25
33
  {
26
- "name": "PrimeKG",
27
- "kg_pyg_path": f"{DATA_PATH}/primekg_ibd_pyg_graph.pkl",
28
- "kg_text_path": f"{DATA_PATH}/primekg_ibd_text_graph.pkl",
34
+ "name": "BioBridge",
35
+ "kg_pyg_path": f"{DATA_PATH}/biobridge_multimodal_pyg_graph.pkl",
36
+ "kg_text_path": f"{DATA_PATH}/biobridge_multimodal_text_graph.pkl",
29
37
  }
30
38
  ],
31
39
  "dic_extracted_graph": []
@@ -70,7 +78,7 @@ def test_main_agent_invokes_t2kg(input_dict):
70
78
  current_state = app.get_state(config)
71
79
  dic_extracted_graph = current_state.values["dic_extracted_graph"][0]
72
80
  assert isinstance(dic_extracted_graph, dict)
73
- assert dic_extracted_graph["graph_source"] == "PrimeKG"
81
+ assert dic_extracted_graph["graph_source"] == "BioBridge"
74
82
  assert dic_extracted_graph["topk_nodes"] == 3
75
83
  assert dic_extracted_graph["topk_edges"] == 3
76
84
  assert isinstance(dic_extracted_graph["graph_dict"], dict)
@@ -9,7 +9,7 @@ from langchain_core.language_models.chat_models import BaseChatModel
9
9
  from langgraph.checkpoint.memory import MemorySaver
10
10
  from langgraph.graph import START, StateGraph
11
11
  from langgraph.prebuilt import create_react_agent, ToolNode, InjectedState
12
- from ..tools.subgraph_extraction import SubgraphExtractionTool
12
+ from ..tools.multimodal_subgraph_extraction import MultimodalSubgraphExtractionTool
13
13
  from ..tools.subgraph_summarization import SubgraphSummarizationTool
14
14
  from ..tools.graphrag_reasoning import GraphRAGReasoningTool
15
15
  from ..states.state_talk2knowledgegraphs import Talk2KnowledgeGraphs
@@ -39,7 +39,7 @@ def get_app(uniq_id, llm_model: BaseChatModel):
39
39
  cfg = cfg.agents.t2kg_agent
40
40
 
41
41
  # Define the tools
42
- subgraph_extraction = SubgraphExtractionTool()
42
+ subgraph_extraction = MultimodalSubgraphExtractionTool()
43
43
  subgraph_summarization = SubgraphSummarizationTool()
44
44
  graphrag_reasoning = GraphRAGReasoningTool()
45
45
  tools = ToolNode([
@@ -2,12 +2,13 @@ _target_: app.frontend.streamlit_app_talk2knowledgegraphs
2
2
  default_user: "talk2kg_user"
3
3
  data_package_allowed_file_types:
4
4
  - "pdf"
5
- endotype_allowed_file_types:
6
- - "pdf"
5
+ multimodal_allowed_file_types:
6
+ - "xls"
7
+ - "xlsx"
7
8
  upload_data_dir: "../files"
8
9
  kg_name: "PrimeKG"
9
- kg_pyg_path: "aiagents4pharma/talk2knowledgegraphs/tests/files/primekg_ibd_pyg_graph.pkl"
10
- kg_text_path: "aiagents4pharma/talk2knowledgegraphs/tests/files/primekg_ibd_text_graph.pkl"
10
+ kg_pyg_path: "aiagents4pharma/talk2knowledgegraphs/tests/files/biobridge_multimodal_pyg_graph.pkl"
11
+ kg_text_path: "aiagents4pharma/talk2knowledgegraphs/tests/files/biobridge_multimodal_text_graph.pkl"
11
12
  openai_api_key: ${oc.env:OPENAI_API_KEY}
12
13
  openai_llms:
13
14
  - "gpt-4o-mini"
@@ -23,9 +24,9 @@ ollama_embeddings:
23
24
  - "nomic-embed-text"
24
25
  temperature: 0.1
25
26
  streaming: False
26
- reasoning_subgraph_topk_nodes: 10
27
+ reasoning_subgraph_topk_nodes: 5
27
28
  reasoning_subgraph_topk_nodes_min: 1
28
29
  reasoning_subgraph_topk_nodes_max: 100
29
- reasoning_subgraph_topk_edges: 10
30
+ reasoning_subgraph_topk_edges: 5
30
31
  reasoning_subgraph_topk_edges_min: 1
31
32
  reasoning_subgraph_topk_edges_max: 100
@@ -2,6 +2,7 @@ defaults:
2
2
  - _self_
3
3
  - agents/t2kg_agent: default
4
4
  - tools/subgraph_extraction: default
5
+ - tools/multimodal_subgraph_extraction: default
5
6
  - tools/subgraph_summarization: default
6
7
  - tools/graphrag_reasoning: default
7
8
  - utils/pubchem_utils: default
@@ -31,6 +31,7 @@ class Talk2KnowledgeGraphs(AgentState):
31
31
 
32
32
  llm_model: BaseChatModel
33
33
  embedding_model: Embeddings
34
+ selections: dict
34
35
  uploaded_files: list
35
36
  topk_nodes: int
36
37
  topk_edges: int
@@ -19,6 +19,14 @@ def input_dict_fixture():
19
19
  input_dict = {
20
20
  "llm_model": None, # TBA for each test case
21
21
  "embedding_model": None, # TBA for each test case
22
+ "selections": {
23
+ "gene/protein": [],
24
+ "molecular_function": [],
25
+ "cellular_component": [],
26
+ "biological_process": [],
27
+ "drug": [],
28
+ "disease": []
29
+ },
22
30
  "uploaded_files": [
23
31
  {
24
32
  "file_name": "adalimumab.pdf",
@@ -27,21 +35,14 @@ def input_dict_fixture():
27
35
  "uploaded_by": "VPEUser",
28
36
  "uploaded_timestamp": "2024-11-05 00:00:00",
29
37
  },
30
- {
31
- "file_name": "DGE_human_Colon_UC-vs-Colon_Control.pdf",
32
- "file_path": f"{DATA_PATH}/DGE_human_Colon_UC-vs-Colon_Control.pdf",
33
- "file_type": "endotype",
34
- "uploaded_by": "VPEUser",
35
- "uploaded_timestamp": "2024-11-05 00:00:00",
36
- },
37
38
  ],
38
39
  "topk_nodes": 3,
39
40
  "topk_edges": 3,
40
41
  "dic_source_graph": [
41
42
  {
42
- "name": "PrimeKG",
43
- "kg_pyg_path": f"{DATA_PATH}/primekg_ibd_pyg_graph.pkl",
44
- "kg_text_path": f"{DATA_PATH}/primekg_ibd_text_graph.pkl",
43
+ "name": "BioBridge",
44
+ "kg_pyg_path": f"{DATA_PATH}/biobridge_multimodal_pyg_graph.pkl",
45
+ "kg_text_path": f"{DATA_PATH}/biobridge_multimodal_text_graph.pkl",
45
46
  }
46
47
  ],
47
48
  "dic_extracted_graph": []
@@ -96,7 +97,7 @@ def test_t2kg_agent_openai(input_dict):
96
97
  dic_extracted_graph = current_state.values["dic_extracted_graph"][0]
97
98
  assert isinstance(dic_extracted_graph, dict)
98
99
  assert dic_extracted_graph["name"] == "subkg_12345"
99
- assert dic_extracted_graph["graph_source"] == "PrimeKG"
100
+ assert dic_extracted_graph["graph_source"] == "BioBridge"
100
101
  assert dic_extracted_graph["topk_nodes"] == 3
101
102
  assert dic_extracted_graph["topk_edges"] == 3
102
103
  assert isinstance(dic_extracted_graph["graph_dict"], dict)
@@ -0,0 +1,152 @@
1
+ """
2
+ Test cases for tools/subgraph_extraction.py
3
+ """
4
+
5
+ import pytest
6
+ # from langchain_openai import ChatOpenAI, OpenAIEmbeddings
7
+ from ..tools.multimodal_subgraph_extraction import MultimodalSubgraphExtractionTool
8
+
9
+ # Define the data path
10
+ DATA_PATH = "aiagents4pharma/talk2knowledgegraphs/tests/files"
11
+
12
+
13
+ @pytest.fixture(name="agent_state")
14
+ def agent_state_fixture():
15
+ """
16
+ Agent state fixture.
17
+ """
18
+ agent_state = {
19
+ # "llm_model": ChatOpenAI(model="gpt-4o-mini", temperature=0.0),
20
+ # "embedding_model": OpenAIEmbeddings(model="text-embedding-3-small"),
21
+ "selections": {
22
+ "gene/protein": [],
23
+ "molecular_function": [],
24
+ "cellular_component": [],
25
+ "biological_process": [],
26
+ "drug": [],
27
+ "disease": []
28
+ },
29
+ "uploaded_files": [],
30
+ "topk_nodes": 3,
31
+ "topk_edges": 3,
32
+ "dic_source_graph": [
33
+ {
34
+ "name": "BioBridge",
35
+ "kg_pyg_path": f"{DATA_PATH}/biobridge_multimodal_pyg_graph.pkl",
36
+ "kg_text_path": f"{DATA_PATH}/biobridge_multimodal_text_graph.pkl",
37
+ }
38
+ ],
39
+ }
40
+
41
+ return agent_state
42
+
43
+
44
+ def test_extract_multimodal_subgraph_wo_doc(agent_state):
45
+ """
46
+ Test the multimodal subgraph extraction tool for only text as modality.
47
+
48
+ Args:
49
+ agent_state: Agent state in the form of a dictionary.
50
+ """
51
+ prompt = """
52
+ Extract all relevant information related to nodes of genes related to inflammatory bowel disease
53
+ (IBD) that existed in the knowledge graph.
54
+ Please set the extraction name for this process as `subkg_12345`.
55
+ """
56
+
57
+ # Instantiate the MultimodalSubgraphExtractionTool
58
+ subgraph_extraction_tool = MultimodalSubgraphExtractionTool()
59
+
60
+ # Invoking the subgraph_extraction_tool
61
+ response = subgraph_extraction_tool.invoke(
62
+ input={"prompt": prompt,
63
+ "tool_call_id": "subgraph_extraction_tool",
64
+ "state": agent_state,
65
+ "arg_data": {"extraction_name": "subkg_12345"}})
66
+
67
+ # Check tool message
68
+ assert response.update["messages"][-1].tool_call_id == "subgraph_extraction_tool"
69
+
70
+ # Check extracted subgraph dictionary
71
+ dic_extracted_graph = response.update["dic_extracted_graph"][0]
72
+ assert isinstance(dic_extracted_graph, dict)
73
+ assert dic_extracted_graph["name"] == "subkg_12345"
74
+ assert dic_extracted_graph["graph_source"] == "BioBridge"
75
+ assert dic_extracted_graph["topk_nodes"] == 3
76
+ assert dic_extracted_graph["topk_edges"] == 3
77
+ assert isinstance(dic_extracted_graph["graph_dict"], dict)
78
+ assert len(dic_extracted_graph["graph_dict"]["nodes"]) > 0
79
+ assert len(dic_extracted_graph["graph_dict"]["edges"]) > 0
80
+ assert isinstance(dic_extracted_graph["graph_text"], str)
81
+ # Check if the nodes are in the graph_text
82
+ assert all(
83
+ n[0] in dic_extracted_graph["graph_text"].replace('"', '')
84
+ for n in dic_extracted_graph["graph_dict"]["nodes"]
85
+ )
86
+ # Check if the edges are in the graph_text
87
+ assert all(
88
+ ",".join([e[0], str(tuple(e[2]["relation"])), e[1]])
89
+ in dic_extracted_graph["graph_text"].replace('"', '')
90
+ for e in dic_extracted_graph["graph_dict"]["edges"]
91
+ )
92
+
93
+
94
+ def test_extract_multimodal_subgraph_w_doc(agent_state):
95
+ """
96
+ Test the multimodal subgraph extraction tool for text as modality, plus genes.
97
+
98
+ Args:
99
+ agent_state: Agent state in the form of a dictionary.
100
+ """
101
+ # Update state
102
+ agent_state["uploaded_files"] = [
103
+ {
104
+ "file_name": "multimodal-analysis.xlsx",
105
+ "file_path": f"{DATA_PATH}/multimodal-analysis.xlsx",
106
+ "file_type": "multimodal",
107
+ "uploaded_by": "VPEUser",
108
+ "uploaded_timestamp": "2025-05-12 00:00:00",
109
+ }
110
+ ]
111
+
112
+ prompt = """
113
+ Extract all relevant information related to nodes of genes related to inflammatory bowel disease
114
+ (IBD) that existed in the knowledge graph.
115
+ Please set the extraction name for this process as `subkg_12345`.
116
+ """
117
+
118
+ # Instantiate the SubgraphExtractionTool
119
+ subgraph_extraction_tool = MultimodalSubgraphExtractionTool()
120
+
121
+ # Invoking the subgraph_extraction_tool
122
+ response = subgraph_extraction_tool.invoke(
123
+ input={"prompt": prompt,
124
+ "tool_call_id": "subgraph_extraction_tool",
125
+ "state": agent_state,
126
+ "arg_data": {"extraction_name": "subkg_12345"}})
127
+
128
+ # Check tool message
129
+ assert response.update["messages"][-1].tool_call_id == "subgraph_extraction_tool"
130
+
131
+ # Check extracted subgraph dictionary
132
+ dic_extracted_graph = response.update["dic_extracted_graph"][0]
133
+ assert isinstance(dic_extracted_graph, dict)
134
+ assert dic_extracted_graph["name"] == "subkg_12345"
135
+ assert dic_extracted_graph["graph_source"] == "BioBridge"
136
+ assert dic_extracted_graph["topk_nodes"] == 3
137
+ assert dic_extracted_graph["topk_edges"] == 3
138
+ assert isinstance(dic_extracted_graph["graph_dict"], dict)
139
+ assert len(dic_extracted_graph["graph_dict"]["nodes"]) > 0
140
+ assert len(dic_extracted_graph["graph_dict"]["edges"]) > 0
141
+ assert isinstance(dic_extracted_graph["graph_text"], str)
142
+ # Check if the nodes are in the graph_text
143
+ assert all(
144
+ n[0] in dic_extracted_graph["graph_text"].replace('"', '')
145
+ for n in dic_extracted_graph["graph_dict"]["nodes"]
146
+ )
147
+ # Check if the edges are in the graph_text
148
+ assert all(
149
+ ",".join([e[0], str(tuple(e[2]["relation"])), e[1]])
150
+ in dic_extracted_graph["graph_text"].replace('"', '')
151
+ for e in dic_extracted_graph["graph_dict"]["edges"]
152
+ )
@@ -3,22 +3,21 @@ Test cases for tools/subgraph_extraction.py
3
3
  """
4
4
 
5
5
  import pytest
6
- from langchain_core.messages import HumanMessage
7
6
  from langchain_openai import ChatOpenAI, OpenAIEmbeddings
8
- from ..agents.t2kg_agent import get_app
7
+ from ..tools.subgraph_extraction import SubgraphExtractionTool
9
8
 
10
9
  # Define the data path
11
10
  DATA_PATH = "aiagents4pharma/talk2knowledgegraphs/tests/files"
12
11
 
13
12
 
14
- @pytest.fixture(name="input_dict")
15
- def input_dict_fixture():
13
+ @pytest.fixture(name="agent_state")
14
+ def agent_state_fixture():
16
15
  """
17
- Input dictionary fixture.
16
+ Agent state fixture.
18
17
  """
19
- input_dict = {
20
- "llm_model": None, # TBA for each test case
21
- "embedding_model": None, # TBA for each test case
18
+ agent_state = {
19
+ "llm_model": ChatOpenAI(model="gpt-4o-mini", temperature=0.0),
20
+ "embedding_model": OpenAIEmbeddings(model="text-embedding-3-small"),
22
21
  "uploaded_files": [],
23
22
  "topk_nodes": 3,
24
23
  "topk_edges": 3,
@@ -31,52 +30,37 @@ def input_dict_fixture():
31
30
  ],
32
31
  }
33
32
 
34
- return input_dict
33
+ return agent_state
35
34
 
36
35
 
37
- def test_extract_subgraph_wo_docs(input_dict):
36
+ def test_extract_subgraph_wo_docs(agent_state):
38
37
  """
39
38
  Test the subgraph extraction tool without any documents using OpenAI model.
40
39
 
41
40
  Args:
42
- input_dict: Input dictionary.
41
+ agent_state: Agent state in the form of a dictionary.
43
42
  """
44
- # Prepare LLM and embedding model
45
- input_dict["llm_model"] = ChatOpenAI(model="gpt-4o-mini", temperature=0.0)
46
- input_dict["embedding_model"] = OpenAIEmbeddings(model="text-embedding-3-small")
47
-
48
- # Setup the app
49
- unique_id = 12345
50
- app = get_app(unique_id, llm_model=input_dict["llm_model"])
51
- config = {"configurable": {"thread_id": unique_id}}
52
- # Update state
53
- app.update_state(
54
- config,
55
- input_dict,
56
- )
57
43
  prompt = """
58
- Please directly invoke `subgraph_extraction` tool without calling any other tools
59
- to respond to the following prompt:
60
-
61
44
  Extract all relevant information related to nodes of genes related to inflammatory bowel disease
62
45
  (IBD) that existed in the knowledge graph.
63
46
  Please set the extraction name for this process as `subkg_12345`.
64
47
  """
65
48
 
66
- # Test the tool subgraph_extraction
67
- response = app.invoke({"messages": [HumanMessage(content=prompt)]}, config=config)
49
+ # Instantiate the SubgraphExtractionTool
50
+ subgraph_extraction_tool = SubgraphExtractionTool()
68
51
 
69
- # Check assistant message
70
- assistant_msg = response["messages"][-1].content
71
- assert isinstance(assistant_msg, str)
52
+ # Invoking the subgraph_extraction_tool
53
+ response = subgraph_extraction_tool.invoke(
54
+ input={"prompt": prompt,
55
+ "tool_call_id": "subgraph_extraction_tool",
56
+ "state": agent_state,
57
+ "arg_data": {"extraction_name": "subkg_12345"}})
72
58
 
73
59
  # Check tool message
74
- tool_msg = response["messages"][-2]
75
- assert tool_msg.name == "subgraph_extraction"
60
+ assert response.update["messages"][-1].tool_call_id == "subgraph_extraction_tool"
76
61
 
77
62
  # Check extracted subgraph dictionary
78
- current_state = app.get_state(config)
79
- dic_extracted_graph = current_state.values["dic_extracted_graph"][0]
63
+ dic_extracted_graph = response.update["dic_extracted_graph"][0]
80
64
  assert isinstance(dic_extracted_graph, dict)
81
65
  assert dic_extracted_graph["name"] == "subkg_12345"
82
66
  assert dic_extracted_graph["graph_source"] == "PrimeKG"
@@ -99,24 +83,16 @@ def test_extract_subgraph_wo_docs(input_dict):
99
83
  )
100
84
 
101
85
 
102
- def test_extract_subgraph_w_docs(input_dict):
86
+ def test_extract_subgraph_w_docs(agent_state):
103
87
  """
104
- Test the subgraph extraction tool with a document as reference (i.e., endotype document)
105
- using OpenAI model.
88
+ As a knowledge graph agent, I would like you to call a tool called `subgraph_extraction`.
89
+ After calling the tool, restrain yourself to call any other tool.
106
90
 
107
91
  Args:
108
- input_dict: Input dictionary.
92
+ agent_state: Agent state in the form of a dictionary.
109
93
  """
110
- # Prepare LLM and embedding model
111
- input_dict["llm_model"] = ChatOpenAI(model="gpt-4o-mini", temperature=0.0)
112
- input_dict["embedding_model"] = OpenAIEmbeddings(model="text-embedding-3-small")
113
-
114
- # Setup the app
115
- unique_id = 12345
116
- app = get_app(unique_id, llm_model=input_dict["llm_model"])
117
- config = {"configurable": {"thread_id": unique_id}}
118
94
  # Update state
119
- input_dict["uploaded_files"] = [
95
+ agent_state["uploaded_files"] = [
120
96
  {
121
97
  "file_name": "DGE_human_Colon_UC-vs-Colon_Control.pdf",
122
98
  "file_path": f"{DATA_PATH}/DGE_human_Colon_UC-vs-Colon_Control.pdf",
@@ -125,33 +101,28 @@ def test_extract_subgraph_w_docs(input_dict):
125
101
  "uploaded_timestamp": "2024-11-05 00:00:00",
126
102
  }
127
103
  ]
128
- app.update_state(
129
- config,
130
- input_dict,
131
- )
132
- prompt = """
133
- Please ONLY invoke `subgraph_extraction` tool without calling any other tools
134
- to respond to the following prompt:
135
104
 
105
+ prompt = """
136
106
  Extract all relevant information related to nodes of genes related to inflammatory bowel disease
137
107
  (IBD) that existed in the knowledge graph.
138
108
  Please set the extraction name for this process as `subkg_12345`.
139
109
  """
140
110
 
141
- # Test the tool subgraph_extraction
142
- response = app.invoke({"messages": [HumanMessage(content=prompt)]}, config=config)
111
+ # Instantiate the SubgraphExtractionTool
112
+ subgraph_extraction_tool = SubgraphExtractionTool()
143
113
 
144
- # Check assistant message
145
- assistant_msg = response["messages"][-1].content
146
- assert isinstance(assistant_msg, str)
114
+ # Invoking the subgraph_extraction_tool
115
+ response = subgraph_extraction_tool.invoke(
116
+ input={"prompt": prompt,
117
+ "tool_call_id": "subgraph_extraction_tool",
118
+ "state": agent_state,
119
+ "arg_data": {"extraction_name": "subkg_12345"}})
147
120
 
148
121
  # Check tool message
149
- tool_msg = response["messages"][-2]
150
- assert tool_msg.name == "subgraph_extraction"
122
+ assert response.update["messages"][-1].tool_call_id == "subgraph_extraction_tool"
151
123
 
152
124
  # Check extracted subgraph dictionary
153
- current_state = app.get_state(config)
154
- dic_extracted_graph = current_state.values["dic_extracted_graph"][0]
125
+ dic_extracted_graph = response.update["dic_extracted_graph"][0]
155
126
  assert isinstance(dic_extracted_graph, dict)
156
127
  assert dic_extracted_graph["name"] == "subkg_12345"
157
128
  assert dic_extracted_graph["graph_source"] == "PrimeKG"
@@ -2,17 +2,23 @@
2
2
  Test cases for utils/embeddings/sentence_transformer.py
3
3
  """
4
4
 
5
- import pytest
6
5
  import numpy as np
6
+ import pytest
7
+
7
8
  from ..utils.embeddings.sentence_transformer import EmbeddingWithSentenceTransformer
8
9
 
10
+
9
11
  @pytest.fixture(name="embedding_model")
10
12
  def embedding_model_fixture():
11
13
  """
12
14
  Fixture for creating an instance of EmbeddingWithSentenceTransformer.
13
15
  """
14
16
  model_name = "sentence-transformers/all-MiniLM-L6-v1" # Small model for testing
15
- return EmbeddingWithSentenceTransformer(model_name=model_name)
17
+ embedding_model = EmbeddingWithSentenceTransformer(model_name=model_name)
18
+ # Move underlying model to CPU for testing
19
+ embedding_model.model.to("cpu")
20
+ return embedding_model
21
+
16
22
 
17
23
  def test_embed_documents(embedding_model):
18
24
  """
@@ -27,6 +33,7 @@ def test_embed_documents(embedding_model):
27
33
  assert len(embeddings[0]) == 384
28
34
  assert embeddings.dtype == np.float32
29
35
 
36
+
30
37
  def test_embed_query(embedding_model):
31
38
  """
32
39
  Test the embed_query method of EmbeddingWithSentenceTransformer class.