aurelian 0.3.2__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.
- aurelian-0.3.2/LICENSE +22 -0
- aurelian-0.3.2/PKG-INFO +105 -0
- aurelian-0.3.2/README.md +59 -0
- aurelian-0.3.2/pyproject.toml +130 -0
- aurelian-0.3.2/src/aurelian/__init__.py +9 -0
- aurelian-0.3.2/src/aurelian/agents/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/agents/amigo/__init__.py +3 -0
- aurelian-0.3.2/src/aurelian/agents/amigo/amigo_agent.py +77 -0
- aurelian-0.3.2/src/aurelian/agents/amigo/amigo_config.py +85 -0
- aurelian-0.3.2/src/aurelian/agents/amigo/amigo_evals.py +73 -0
- aurelian-0.3.2/src/aurelian/agents/amigo/amigo_gradio.py +52 -0
- aurelian-0.3.2/src/aurelian/agents/amigo/amigo_mcp.py +152 -0
- aurelian-0.3.2/src/aurelian/agents/amigo/amigo_tools.py +152 -0
- aurelian-0.3.2/src/aurelian/agents/biblio/__init__.py +42 -0
- aurelian-0.3.2/src/aurelian/agents/biblio/biblio_agent.py +94 -0
- aurelian-0.3.2/src/aurelian/agents/biblio/biblio_config.py +40 -0
- aurelian-0.3.2/src/aurelian/agents/biblio/biblio_gradio.py +67 -0
- aurelian-0.3.2/src/aurelian/agents/biblio/biblio_mcp.py +115 -0
- aurelian-0.3.2/src/aurelian/agents/biblio/biblio_tools.py +164 -0
- aurelian-0.3.2/src/aurelian/agents/biblio_agent.py +46 -0
- aurelian-0.3.2/src/aurelian/agents/checklist/__init__.py +44 -0
- aurelian-0.3.2/src/aurelian/agents/checklist/checklist_agent.py +85 -0
- aurelian-0.3.2/src/aurelian/agents/checklist/checklist_config.py +28 -0
- aurelian-0.3.2/src/aurelian/agents/checklist/checklist_gradio.py +70 -0
- aurelian-0.3.2/src/aurelian/agents/checklist/checklist_mcp.py +86 -0
- aurelian-0.3.2/src/aurelian/agents/checklist/checklist_tools.py +141 -0
- aurelian-0.3.2/src/aurelian/agents/checklist/content/checklists.yaml +7 -0
- aurelian-0.3.2/src/aurelian/agents/checklist/content/streams.csv +136 -0
- aurelian-0.3.2/src/aurelian/agents/checklist_agent.py +40 -0
- aurelian-0.3.2/src/aurelian/agents/chemistry/__init__.py +3 -0
- aurelian-0.3.2/src/aurelian/agents/chemistry/chemistry_agent.py +46 -0
- aurelian-0.3.2/src/aurelian/agents/chemistry/chemistry_config.py +71 -0
- aurelian-0.3.2/src/aurelian/agents/chemistry/chemistry_evals.py +79 -0
- aurelian-0.3.2/src/aurelian/agents/chemistry/chemistry_gradio.py +50 -0
- aurelian-0.3.2/src/aurelian/agents/chemistry/chemistry_mcp.py +120 -0
- aurelian-0.3.2/src/aurelian/agents/chemistry/chemistry_tools.py +121 -0
- aurelian-0.3.2/src/aurelian/agents/chemistry/image_agent.py +15 -0
- aurelian-0.3.2/src/aurelian/agents/d4d/__init__.py +30 -0
- aurelian-0.3.2/src/aurelian/agents/d4d/d4d_agent.py +72 -0
- aurelian-0.3.2/src/aurelian/agents/d4d/d4d_config.py +46 -0
- aurelian-0.3.2/src/aurelian/agents/d4d/d4d_gradio.py +58 -0
- aurelian-0.3.2/src/aurelian/agents/d4d/d4d_mcp.py +71 -0
- aurelian-0.3.2/src/aurelian/agents/d4d/d4d_tools.py +157 -0
- aurelian-0.3.2/src/aurelian/agents/d4d_agent.py +64 -0
- aurelian-0.3.2/src/aurelian/agents/diagnosis/__init__.py +33 -0
- aurelian-0.3.2/src/aurelian/agents/diagnosis/diagnosis_agent.py +53 -0
- aurelian-0.3.2/src/aurelian/agents/diagnosis/diagnosis_config.py +48 -0
- aurelian-0.3.2/src/aurelian/agents/diagnosis/diagnosis_evals.py +76 -0
- aurelian-0.3.2/src/aurelian/agents/diagnosis/diagnosis_gradio.py +52 -0
- aurelian-0.3.2/src/aurelian/agents/diagnosis/diagnosis_mcp.py +141 -0
- aurelian-0.3.2/src/aurelian/agents/diagnosis/diagnosis_tools.py +204 -0
- aurelian-0.3.2/src/aurelian/agents/diagnosis_agent.py +28 -0
- aurelian-0.3.2/src/aurelian/agents/draw/__init__.py +3 -0
- aurelian-0.3.2/src/aurelian/agents/draw/draw_agent.py +39 -0
- aurelian-0.3.2/src/aurelian/agents/draw/draw_config.py +26 -0
- aurelian-0.3.2/src/aurelian/agents/draw/draw_gradio.py +50 -0
- aurelian-0.3.2/src/aurelian/agents/draw/draw_mcp.py +94 -0
- aurelian-0.3.2/src/aurelian/agents/draw/draw_tools.py +100 -0
- aurelian-0.3.2/src/aurelian/agents/draw/judge_agent.py +18 -0
- aurelian-0.3.2/src/aurelian/agents/filesystem/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/agents/filesystem/filesystem_config.py +27 -0
- aurelian-0.3.2/src/aurelian/agents/filesystem/filesystem_gradio.py +49 -0
- aurelian-0.3.2/src/aurelian/agents/filesystem/filesystem_mcp.py +89 -0
- aurelian-0.3.2/src/aurelian/agents/filesystem/filesystem_tools.py +95 -0
- aurelian-0.3.2/src/aurelian/agents/filesystem/py.typed +0 -0
- aurelian-0.3.2/src/aurelian/agents/github/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/agents/github/github_agent.py +83 -0
- aurelian-0.3.2/src/aurelian/agents/github/github_cli.py +248 -0
- aurelian-0.3.2/src/aurelian/agents/github/github_config.py +22 -0
- aurelian-0.3.2/src/aurelian/agents/github/github_gradio.py +152 -0
- aurelian-0.3.2/src/aurelian/agents/github/github_mcp.py +252 -0
- aurelian-0.3.2/src/aurelian/agents/github/github_tools.py +408 -0
- aurelian-0.3.2/src/aurelian/agents/github/github_tools.py.tmp +413 -0
- aurelian-0.3.2/src/aurelian/agents/goann/__init__.py +13 -0
- aurelian-0.3.2/src/aurelian/agents/goann/documents/Transcription_Factors_Annotation_Guidelines.md +1000 -0
- aurelian-0.3.2/src/aurelian/agents/goann/documents/Transcription_Factors_Annotation_Guidelines.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/goann/documents/Transcription_Factors_Annotation_Guidelines_Paper.md +693 -0
- aurelian-0.3.2/src/aurelian/agents/goann/documents/Transcription_Factors_Annotation_Guidelines_Paper.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/goann/goann_agent.py +90 -0
- aurelian-0.3.2/src/aurelian/agents/goann/goann_config.py +90 -0
- aurelian-0.3.2/src/aurelian/agents/goann/goann_evals.py +104 -0
- aurelian-0.3.2/src/aurelian/agents/goann/goann_gradio.py +62 -0
- aurelian-0.3.2/src/aurelian/agents/goann/goann_mcp.py +0 -0
- aurelian-0.3.2/src/aurelian/agents/goann/goann_tools.py +65 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/__init__.py +43 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/DNA-binding transcription factor activity annotation guidelines.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/DNA-binding transcription factor activity annotation guidelines.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/DNA-binding_transcription_factor_activity_annotation_guidelines.md +100 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/E3 ubiquitin ligases.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/E3 ubiquitin ligases.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/E3_ubiquitin_ligases.md +134 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/GO-CAM annotation guidelines README.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/GO-CAM annotation guidelines README.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/GO-CAM modelling guidelines TO DO.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/GO-CAM modelling guidelines TO DO.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/GO-CAM_annotation_guidelines_README.md +1 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/GO-CAM_modelling_guidelines_TO_DO.md +3 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/How to annotate complexes in GO-CAM.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/How to annotate complexes in GO-CAM.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/How to annotate molecular adaptors.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/How to annotate molecular adaptors.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/How to annotate sequestering proteins.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/How to annotate sequestering proteins.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/How_to_annotate_complexes_in_GO-CAM.md +29 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/How_to_annotate_molecular_adaptors.md +31 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/How_to_annotate_sequestering_proteins.md +42 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Molecular adaptor activity.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Molecular adaptor activity.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Molecular carrier activity.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Molecular carrier activity.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Molecular_adaptor_activity.md +51 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Molecular_carrier_activity.md +41 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Protein sequestering activity.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Protein sequestering activity.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Protein_sequestering_activity.md +50 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Signaling receptor activity annotation guidelines.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Signaling receptor activity annotation guidelines.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Signaling_receptor_activity_annotation_guidelines.md +187 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Transcription coregulator activity.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Transcription coregulator activity.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Transcription_coregulator_activity.md +36 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Transporter activity annotation annotation guidelines.docx +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Transporter activity annotation annotation guidelines.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/Transporter_activity_annotation_annotation_guidelines.md +43 -0
- Regulatory Processes in GO-CAM.docx +0 -0
- Regulatory Processes in GO-CAM.pdf +0 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/WIP_-_Regulation_and_Regulatory_Processes_in_GO-CAM.md +31 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/DNA-binding_transcription_factor_activity_annotation_guidelines.md +131 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/E3_ubiquitin_ligases.md +166 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/GO-CAM_annotation_guidelines_README.md +1 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/GO-CAM_modelling_guidelines_TO_DO.md +5 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/How_to_annotate_complexes_in_GO-CAM.md +28 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/How_to_annotate_molecular_adaptors.md +19 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/How_to_annotate_sequestering_proteins.md +38 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/Molecular_adaptor_activity.md +52 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/Molecular_carrier_activity.md +59 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/Protein_sequestering_activity.md +52 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/Signaling_receptor_activity_annotation_guidelines.md +271 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/Transcription_coregulator_activity.md +54 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/Transporter_activity_annotation_annotation_guidelines.md +38 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/md/WIP_-_Regulation_and_Regulatory_Processes_in_GO-CAM.md +39 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/documents/pandoc_md/Signaling_receptor_activity_annotation_guidelines.md +334 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/gocam_agent.py +240 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/gocam_config.py +85 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/gocam_curator_agent.py +46 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/gocam_evals.py +67 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/gocam_gradio.py +89 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/gocam_mcp.py +224 -0
- aurelian-0.3.2/src/aurelian/agents/gocam/gocam_tools.py +294 -0
- aurelian-0.3.2/src/aurelian/agents/linkml/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/agents/linkml/linkml_agent.py +62 -0
- aurelian-0.3.2/src/aurelian/agents/linkml/linkml_config.py +48 -0
- aurelian-0.3.2/src/aurelian/agents/linkml/linkml_evals.py +66 -0
- aurelian-0.3.2/src/aurelian/agents/linkml/linkml_gradio.py +45 -0
- aurelian-0.3.2/src/aurelian/agents/linkml/linkml_mcp.py +186 -0
- aurelian-0.3.2/src/aurelian/agents/linkml/linkml_tools.py +102 -0
- aurelian-0.3.2/src/aurelian/agents/literature/__init__.py +3 -0
- aurelian-0.3.2/src/aurelian/agents/literature/literature_agent.py +55 -0
- aurelian-0.3.2/src/aurelian/agents/literature/literature_config.py +35 -0
- aurelian-0.3.2/src/aurelian/agents/literature/literature_gradio.py +52 -0
- aurelian-0.3.2/src/aurelian/agents/literature/literature_mcp.py +174 -0
- aurelian-0.3.2/src/aurelian/agents/literature/literature_tools.py +182 -0
- aurelian-0.3.2/src/aurelian/agents/monarch/__init__.py +25 -0
- aurelian-0.3.2/src/aurelian/agents/monarch/monarch_agent.py +44 -0
- aurelian-0.3.2/src/aurelian/agents/monarch/monarch_config.py +45 -0
- aurelian-0.3.2/src/aurelian/agents/monarch/monarch_gradio.py +51 -0
- aurelian-0.3.2/src/aurelian/agents/monarch/monarch_mcp.py +65 -0
- aurelian-0.3.2/src/aurelian/agents/monarch/monarch_tools.py +113 -0
- aurelian-0.3.2/src/aurelian/agents/oak/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/agents/oak/oak_config.py +27 -0
- aurelian-0.3.2/src/aurelian/agents/oak/oak_gradio.py +57 -0
- aurelian-0.3.2/src/aurelian/agents/ontology_mapper/__init__.py +31 -0
- aurelian-0.3.2/src/aurelian/agents/ontology_mapper/ontology_mapper_agent.py +56 -0
- aurelian-0.3.2/src/aurelian/agents/ontology_mapper/ontology_mapper_config.py +50 -0
- aurelian-0.3.2/src/aurelian/agents/ontology_mapper/ontology_mapper_evals.py +108 -0
- aurelian-0.3.2/src/aurelian/agents/ontology_mapper/ontology_mapper_gradio.py +58 -0
- aurelian-0.3.2/src/aurelian/agents/ontology_mapper/ontology_mapper_mcp.py +81 -0
- aurelian-0.3.2/src/aurelian/agents/ontology_mapper/ontology_mapper_tools.py +147 -0
- aurelian-0.3.2/src/aurelian/agents/phenopackets/__init__.py +3 -0
- aurelian-0.3.2/src/aurelian/agents/phenopackets/phenopackets_agent.py +58 -0
- aurelian-0.3.2/src/aurelian/agents/phenopackets/phenopackets_config.py +72 -0
- aurelian-0.3.2/src/aurelian/agents/phenopackets/phenopackets_evals.py +99 -0
- aurelian-0.3.2/src/aurelian/agents/phenopackets/phenopackets_gradio.py +55 -0
- aurelian-0.3.2/src/aurelian/agents/phenopackets/phenopackets_mcp.py +178 -0
- aurelian-0.3.2/src/aurelian/agents/phenopackets/phenopackets_tools.py +127 -0
- aurelian-0.3.2/src/aurelian/agents/rag/__init__.py +40 -0
- aurelian-0.3.2/src/aurelian/agents/rag/rag_agent.py +83 -0
- aurelian-0.3.2/src/aurelian/agents/rag/rag_config.py +80 -0
- aurelian-0.3.2/src/aurelian/agents/rag/rag_gradio.py +67 -0
- aurelian-0.3.2/src/aurelian/agents/rag/rag_mcp.py +107 -0
- aurelian-0.3.2/src/aurelian/agents/rag/rag_tools.py +189 -0
- aurelian-0.3.2/src/aurelian/agents/rag_agent.py +54 -0
- aurelian-0.3.2/src/aurelian/agents/robot/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/agents/robot/assets/__init__.py +3 -0
- aurelian-0.3.2/src/aurelian/agents/robot/assets/template.md +384 -0
- aurelian-0.3.2/src/aurelian/agents/robot/robot_config.py +25 -0
- aurelian-0.3.2/src/aurelian/agents/robot/robot_gradio.py +46 -0
- aurelian-0.3.2/src/aurelian/agents/robot/robot_mcp.py +100 -0
- aurelian-0.3.2/src/aurelian/agents/robot/robot_ontology_agent.py +139 -0
- aurelian-0.3.2/src/aurelian/agents/robot/robot_tools.py +50 -0
- aurelian-0.3.2/src/aurelian/agents/talisman/__init__.py +3 -0
- aurelian-0.3.2/src/aurelian/agents/talisman/talisman_agent.py +126 -0
- aurelian-0.3.2/src/aurelian/agents/talisman/talisman_config.py +66 -0
- aurelian-0.3.2/src/aurelian/agents/talisman/talisman_gradio.py +50 -0
- aurelian-0.3.2/src/aurelian/agents/talisman/talisman_mcp.py +168 -0
- aurelian-0.3.2/src/aurelian/agents/talisman/talisman_tools.py +720 -0
- aurelian-0.3.2/src/aurelian/agents/ubergraph/__init__.py +40 -0
- aurelian-0.3.2/src/aurelian/agents/ubergraph/ubergraph_agent.py +71 -0
- aurelian-0.3.2/src/aurelian/agents/ubergraph/ubergraph_config.py +79 -0
- aurelian-0.3.2/src/aurelian/agents/ubergraph/ubergraph_gradio.py +48 -0
- aurelian-0.3.2/src/aurelian/agents/ubergraph/ubergraph_mcp.py +69 -0
- aurelian-0.3.2/src/aurelian/agents/ubergraph/ubergraph_tools.py +118 -0
- aurelian-0.3.2/src/aurelian/agents/uniprot/__init__.py +37 -0
- aurelian-0.3.2/src/aurelian/agents/uniprot/uniprot_agent.py +43 -0
- aurelian-0.3.2/src/aurelian/agents/uniprot/uniprot_config.py +43 -0
- aurelian-0.3.2/src/aurelian/agents/uniprot/uniprot_evals.py +99 -0
- aurelian-0.3.2/src/aurelian/agents/uniprot/uniprot_gradio.py +48 -0
- aurelian-0.3.2/src/aurelian/agents/uniprot/uniprot_mcp.py +168 -0
- aurelian-0.3.2/src/aurelian/agents/uniprot/uniprot_tools.py +136 -0
- aurelian-0.3.2/src/aurelian/agents/web/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/agents/web/web_config.py +27 -0
- aurelian-0.3.2/src/aurelian/agents/web/web_gradio.py +48 -0
- aurelian-0.3.2/src/aurelian/agents/web/web_mcp.py +50 -0
- aurelian-0.3.2/src/aurelian/agents/web/web_tools.py +108 -0
- aurelian-0.3.2/src/aurelian/chat.py +23 -0
- aurelian-0.3.2/src/aurelian/cli.py +800 -0
- aurelian-0.3.2/src/aurelian/dependencies/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/dependencies/workdir.py +78 -0
- aurelian-0.3.2/src/aurelian/mcp/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/mcp/amigo_mcp_test.py +86 -0
- aurelian-0.3.2/src/aurelian/mcp/config_generator.py +123 -0
- aurelian-0.3.2/src/aurelian/mcp/example_config.json +43 -0
- aurelian-0.3.2/src/aurelian/mcp/generate_sample_config.py +37 -0
- aurelian-0.3.2/src/aurelian/mcp/gocam_mcp_test.py +126 -0
- aurelian-0.3.2/src/aurelian/mcp/linkml_mcp_tools.py +190 -0
- aurelian-0.3.2/src/aurelian/mcp/mcp_discovery.py +87 -0
- aurelian-0.3.2/src/aurelian/mcp/mcp_test.py +31 -0
- aurelian-0.3.2/src/aurelian/mcp/phenopackets_mcp_test.py +103 -0
- aurelian-0.3.2/src/aurelian/tools/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/tools/web/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/tools/web/url_download.py +51 -0
- aurelian-0.3.2/src/aurelian/utils/__init__.py +0 -0
- aurelian-0.3.2/src/aurelian/utils/async_utils.py +15 -0
- aurelian-0.3.2/src/aurelian/utils/data_utils.py +32 -0
- aurelian-0.3.2/src/aurelian/utils/documentation_manager.py +59 -0
- aurelian-0.3.2/src/aurelian/utils/doi_fetcher.py +238 -0
- aurelian-0.3.2/src/aurelian/utils/ontology_utils.py +68 -0
- aurelian-0.3.2/src/aurelian/utils/pdf_fetcher.py +23 -0
- aurelian-0.3.2/src/aurelian/utils/process_logs.py +100 -0
- aurelian-0.3.2/src/aurelian/utils/pubmed_utils.py +238 -0
- aurelian-0.3.2/src/aurelian/utils/pytest_report_to_markdown.py +67 -0
- aurelian-0.3.2/src/aurelian/utils/robot_ontology_utils.py +112 -0
- aurelian-0.3.2/src/aurelian/utils/search_utils.py +95 -0
aurelian-0.3.2/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
The MIT License (MIT)
|
3
|
+
|
4
|
+
Copyright (c) 2025 Monarch Initiative
|
5
|
+
|
6
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
7
|
+
of this software and associated documentation files (the "Software"), to deal
|
8
|
+
in the Software without restriction, including without limitation the rights
|
9
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
10
|
+
copies of the Software, and to permit persons to whom the Software is
|
11
|
+
furnished to do so, subject to the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be included in
|
14
|
+
all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
17
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
18
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
19
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
20
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
21
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
22
|
+
THE SOFTWARE.
|
aurelian-0.3.2/PKG-INFO
ADDED
@@ -0,0 +1,105 @@
|
|
1
|
+
Metadata-Version: 2.3
|
2
|
+
Name: aurelian
|
3
|
+
Version: 0.3.2
|
4
|
+
Summary: aurelian
|
5
|
+
License: MIT
|
6
|
+
Author: Author 1
|
7
|
+
Author-email: author@org.org
|
8
|
+
Requires-Python: >=3.11,<4.0
|
9
|
+
Classifier: License :: OSI Approved :: MIT License
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
11
|
+
Classifier: Programming Language :: Python :: 3.11
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
14
|
+
Provides-Extra: bioservices
|
15
|
+
Provides-Extra: chem
|
16
|
+
Provides-Extra: gocam
|
17
|
+
Provides-Extra: gradio
|
18
|
+
Provides-Extra: linkml
|
19
|
+
Provides-Extra: pdfminer
|
20
|
+
Provides-Extra: rdkit
|
21
|
+
Requires-Dist: bioservices (>=1.12.0) ; extra == "bioservices"
|
22
|
+
Requires-Dist: bs4 (>=0.0.2)
|
23
|
+
Requires-Dist: cairosvg (>=2.7.1,<3.0.0)
|
24
|
+
Requires-Dist: click
|
25
|
+
Requires-Dist: duckduckgo-search (>=7.3.2)
|
26
|
+
Requires-Dist: gocam ; extra == "gocam"
|
27
|
+
Requires-Dist: gradio (>=5.23.3,<6.0.0) ; extra == "gradio"
|
28
|
+
Requires-Dist: importlib-metadata (>=8.2.0)
|
29
|
+
Requires-Dist: linkml ; extra == "linkml"
|
30
|
+
Requires-Dist: linkml-store[llm,mongodb] (>=0.2.4)
|
31
|
+
Requires-Dist: logfire (>=3.5.3)
|
32
|
+
Requires-Dist: markdownify (>=0.14.1)
|
33
|
+
Requires-Dist: markitdown (>=0.0.1a4)
|
34
|
+
Requires-Dist: mcp[cli] (>=1.3.0,<2.0.0)
|
35
|
+
Requires-Dist: oaklib (>=0.6.19)
|
36
|
+
Requires-Dist: pdfminer-six ; extra == "pdfminer"
|
37
|
+
Requires-Dist: pydantic-ai (>=0.0.29)
|
38
|
+
Requires-Dist: pypaperbot (>=1.4.1)
|
39
|
+
Requires-Dist: pytest-asyncio (>=0.25.3,<0.26.0)
|
40
|
+
Requires-Dist: rdkit ; extra == "rdkit" or extra == "chem"
|
41
|
+
Requires-Dist: tabulate (>=0.9.0)
|
42
|
+
Requires-Dist: undetected-chromedriver (>=3.5.5)
|
43
|
+
Requires-Dist: wikipedia (>=1.4.0)
|
44
|
+
Description-Content-Type: text/markdown
|
45
|
+
|
46
|
+
|
47
|
+
# Aurelian: Agentic Universal Research Engine for Literature, Integration, Annotation, and Navigation
|
48
|
+
|
49
|
+
| [Documentation](https://monarch-initiative.github.io/aurelian) |
|
50
|
+
|
51
|
+
```
|
52
|
+
aurelian --help
|
53
|
+
```
|
54
|
+
|
55
|
+
Most commands will start up a different AI agent.
|
56
|
+
|
57
|
+
## Examples of use
|
58
|
+
|
59
|
+
### TALISMAN
|
60
|
+
|
61
|
+
gene set enrichment
|
62
|
+
|
63
|
+
### Aria
|
64
|
+
|
65
|
+
checking papers against checklists
|
66
|
+
|
67
|
+
### GO-CAM agent
|
68
|
+
|
69
|
+
This agent is for exploring, chatting with, and reviewing GO-CAMs
|
70
|
+
|
71
|
+
Docs: [gocam_agent](https://monarch-initiative.github.io/aurelian/agents/gocam_agent/)
|
72
|
+
|
73
|
+
It can be used to generate reviews according to guidelines for GO-CAMs:
|
74
|
+
|
75
|
+
* [GO-CAM Reviews](https://cmungall.github.io/go-cam-reviews/)
|
76
|
+
|
77
|
+
It can also generate SVGs, demonstrating innate knowledge of both the visual grammar of pathway diagrams and the semantics of the underlying biology.
|
78
|
+
|
79
|
+
|
80
|
+
<img alt="img" src="https://cmungall.github.io/go-cam-reviews/figures/FIG-646ff70100005137-IL33_signaling_pathway__Human_.svg" />
|
81
|
+
|
82
|
+
### GO-Ann agent
|
83
|
+
|
84
|
+
This agent is for exploring, chatting with, and reviewing standard annotations
|
85
|
+
|
86
|
+
|
87
|
+
Docs: [go_ann_agent](https://monarch-initiative.github.io/aurelian/agents/go_ann_agent/)
|
88
|
+
|
89
|
+
Example review using TF guidelines:
|
90
|
+
|
91
|
+
https://github.com/geneontology/go-annotation/issues/5743
|
92
|
+
|
93
|
+
## Troubleshooting
|
94
|
+
|
95
|
+
### Installing linkml-store
|
96
|
+
|
97
|
+
Some agents require linkml-store pre-indexed. E.g. a mongodb with gocams for cam agent.
|
98
|
+
Consult the [linkml-store documentation](https://linkml.io/linkml-store/) for more information.
|
99
|
+
|
100
|
+
### Semantic search over ontologies
|
101
|
+
|
102
|
+
If an agent requires ontology search it will use the semsql/OAK sqlite database.
|
103
|
+
The first time querying it will use linkml-store to create an LLM index. Requires OAI key.
|
104
|
+
This may be slow first iteration. Will be cached until your pystow cache regenerates.
|
105
|
+
|
aurelian-0.3.2/README.md
ADDED
@@ -0,0 +1,59 @@
|
|
1
|
+
|
2
|
+
# Aurelian: Agentic Universal Research Engine for Literature, Integration, Annotation, and Navigation
|
3
|
+
|
4
|
+
| [Documentation](https://monarch-initiative.github.io/aurelian) |
|
5
|
+
|
6
|
+
```
|
7
|
+
aurelian --help
|
8
|
+
```
|
9
|
+
|
10
|
+
Most commands will start up a different AI agent.
|
11
|
+
|
12
|
+
## Examples of use
|
13
|
+
|
14
|
+
### TALISMAN
|
15
|
+
|
16
|
+
gene set enrichment
|
17
|
+
|
18
|
+
### Aria
|
19
|
+
|
20
|
+
checking papers against checklists
|
21
|
+
|
22
|
+
### GO-CAM agent
|
23
|
+
|
24
|
+
This agent is for exploring, chatting with, and reviewing GO-CAMs
|
25
|
+
|
26
|
+
Docs: [gocam_agent](https://monarch-initiative.github.io/aurelian/agents/gocam_agent/)
|
27
|
+
|
28
|
+
It can be used to generate reviews according to guidelines for GO-CAMs:
|
29
|
+
|
30
|
+
* [GO-CAM Reviews](https://cmungall.github.io/go-cam-reviews/)
|
31
|
+
|
32
|
+
It can also generate SVGs, demonstrating innate knowledge of both the visual grammar of pathway diagrams and the semantics of the underlying biology.
|
33
|
+
|
34
|
+
|
35
|
+
<img alt="img" src="https://cmungall.github.io/go-cam-reviews/figures/FIG-646ff70100005137-IL33_signaling_pathway__Human_.svg" />
|
36
|
+
|
37
|
+
### GO-Ann agent
|
38
|
+
|
39
|
+
This agent is for exploring, chatting with, and reviewing standard annotations
|
40
|
+
|
41
|
+
|
42
|
+
Docs: [go_ann_agent](https://monarch-initiative.github.io/aurelian/agents/go_ann_agent/)
|
43
|
+
|
44
|
+
Example review using TF guidelines:
|
45
|
+
|
46
|
+
https://github.com/geneontology/go-annotation/issues/5743
|
47
|
+
|
48
|
+
## Troubleshooting
|
49
|
+
|
50
|
+
### Installing linkml-store
|
51
|
+
|
52
|
+
Some agents require linkml-store pre-indexed. E.g. a mongodb with gocams for cam agent.
|
53
|
+
Consult the [linkml-store documentation](https://linkml.io/linkml-store/) for more information.
|
54
|
+
|
55
|
+
### Semantic search over ontologies
|
56
|
+
|
57
|
+
If an agent requires ontology search it will use the semsql/OAK sqlite database.
|
58
|
+
The first time querying it will use linkml-store to create an LLM index. Requires OAI key.
|
59
|
+
This may be slow first iteration. Will be cached until your pystow cache regenerates.
|
@@ -0,0 +1,130 @@
|
|
1
|
+
[tool.poetry]
|
2
|
+
name = "aurelian"
|
3
|
+
version = "0.3.2"
|
4
|
+
description = "aurelian"
|
5
|
+
authors = ["Author 1 <author@org.org>"]
|
6
|
+
license = "MIT"
|
7
|
+
readme = "README.md"
|
8
|
+
|
9
|
+
[tool.poetry.dependencies]
|
10
|
+
python = "^3.11"
|
11
|
+
click = "*"
|
12
|
+
importlib-metadata = ">=8.2.0"
|
13
|
+
oaklib = ">=0.6.19"
|
14
|
+
tabulate = ">=0.9.0"
|
15
|
+
linkml-store = {extras = ["llm", "mongodb"], version = ">=0.2.4"}
|
16
|
+
rdkit = {optional=true, version="*"}
|
17
|
+
gocam = {optional=true, version="*"}
|
18
|
+
linkml = {optional=true, version="*"}
|
19
|
+
gradio = "^5.23.3"
|
20
|
+
pydantic-ai = ">=0.0.29"
|
21
|
+
logfire = ">=3.5.3"
|
22
|
+
bs4 = ">=0.0.2"
|
23
|
+
duckduckgo-search = ">=7.3.2"
|
24
|
+
markdownify = ">=0.14.1"
|
25
|
+
wikipedia = ">=1.4.0"
|
26
|
+
markitdown = ">=0.0.1a4"
|
27
|
+
pypaperbot = ">=1.4.1"
|
28
|
+
undetected-chromedriver = ">=3.5.5"
|
29
|
+
bioservices = ">=1.12.0"
|
30
|
+
pdfminer-six = {optional=true, version="*"}
|
31
|
+
mcp = {extras = ["cli"], version = "^1.3.0"}
|
32
|
+
pytest-asyncio = "^0.25.3"
|
33
|
+
cairosvg = "^2.7.1"
|
34
|
+
|
35
|
+
[tool.poetry.group.dev.dependencies]
|
36
|
+
pytest = {version = ">=8.3.2"}
|
37
|
+
pytest-reportlog = {version = "*"}
|
38
|
+
pytest-metadata = {version = "*"}
|
39
|
+
tox = {version = ">=4.16.0"}
|
40
|
+
mypy = {version = "*"}
|
41
|
+
types-PyYAML = {version = "*"}
|
42
|
+
jupyter = {version = "*"}
|
43
|
+
papermill = {version = "*"}
|
44
|
+
nbdime = {version = "*"}
|
45
|
+
nbformat = {version = "*"}
|
46
|
+
pre-commit = {version = ">=3.3.3"}
|
47
|
+
|
48
|
+
[tool.poetry.extras]
|
49
|
+
rdkit = ["rdkit"]
|
50
|
+
gocam = ["gocam"]
|
51
|
+
gradio = ["gradio"]
|
52
|
+
bioservices = ["bioservices"]
|
53
|
+
linkml = ["linkml"]
|
54
|
+
chem = ["rdkit"]
|
55
|
+
pdfminer = ["pdfminer-six"]
|
56
|
+
|
57
|
+
[tool.pytest.ini_options]
|
58
|
+
markers = [
|
59
|
+
"integration: marks tests as integration tests that might have external dependencies",
|
60
|
+
"flaky: marks tests that might occasionally fail due to external conditions",
|
61
|
+
]
|
62
|
+
|
63
|
+
[tool.poetry.group.docs]
|
64
|
+
optional = true
|
65
|
+
|
66
|
+
[tool.poetry.group.docs.dependencies]
|
67
|
+
mkdocs = "*"
|
68
|
+
mkdocs-material = "*"
|
69
|
+
mkdocs-mermaid2-plugin = "*"
|
70
|
+
mkdocs-gen-files = "*"
|
71
|
+
mkdocs-literate-nav = "*"
|
72
|
+
mknotebooks = ">=0.8.0"
|
73
|
+
mkdocs-windmill = "*"
|
74
|
+
mkdocs-click = "*"
|
75
|
+
mkdocstrings = {extras = ["crystal", "python"], version = "*"}
|
76
|
+
typer = ">=0.9.0" # Required for mkdocs-click
|
77
|
+
|
78
|
+
[tool.poetry.scripts]
|
79
|
+
aurelian = "aurelian.cli:main"
|
80
|
+
|
81
|
+
[tool.poetry-dynamic-versioning]
|
82
|
+
enable = false
|
83
|
+
vcs = "git"
|
84
|
+
style = "pep440"
|
85
|
+
|
86
|
+
[tool.black]
|
87
|
+
line-length = 120
|
88
|
+
target-version = ["py38", "py39", "py310"]
|
89
|
+
|
90
|
+
[tool.ruff]
|
91
|
+
line-length = 120
|
92
|
+
target-version = "py310"
|
93
|
+
|
94
|
+
[tool.ruff.lint]
|
95
|
+
extend-ignore = [
|
96
|
+
"S101", # Allow assert statements in tests
|
97
|
+
"D104", # Ignore missing docstrings in __init__.py
|
98
|
+
"D417", # Ignore missing argument descriptions in docstrings
|
99
|
+
"D401", # Ignore enforcing imperative mood in docstrings
|
100
|
+
"D400", "D415", # Ignore docstring punctuation enforcement
|
101
|
+
"D200", # Ignore "one-line docstring should fit on one line"
|
102
|
+
"F821", # Ignore undefined name errors (useful if missing imports)
|
103
|
+
"S113", # Ignore "requests call without timeout" warnings
|
104
|
+
]
|
105
|
+
|
106
|
+
[tool.ruff.lint.per-file-ignores]
|
107
|
+
"tests/**/*.py" = ["S101"] # Ignore asserts only in test files
|
108
|
+
|
109
|
+
fixable = ["ALL"]
|
110
|
+
select = [
|
111
|
+
"B", # bugbear
|
112
|
+
"D", # pydocstyle
|
113
|
+
"E", # pycodestyle errors
|
114
|
+
"F", # Pyflakes
|
115
|
+
"I", # isort
|
116
|
+
"S", # flake8-bandit
|
117
|
+
"W", # Warning
|
118
|
+
]
|
119
|
+
|
120
|
+
[tool.ruff.lint.mccabe]
|
121
|
+
max-complexity = 10
|
122
|
+
|
123
|
+
[tool.codespell]
|
124
|
+
skip = "*.po,*.ts,.git,pyproject.toml"
|
125
|
+
count = ""
|
126
|
+
quiet-level = 3
|
127
|
+
|
128
|
+
[build-system]
|
129
|
+
requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"]
|
130
|
+
build-backend = "poetry_dynamic_versioning.backend"
|
File without changes
|
@@ -0,0 +1,77 @@
|
|
1
|
+
"""
|
2
|
+
Agent for interacting with GO KnowledgeBase via AmiGO solr endpoint.
|
3
|
+
"""
|
4
|
+
from aurelian.agents.amigo.amigo_config import AmiGODependencies
|
5
|
+
from aurelian.agents.amigo.amigo_tools import (
|
6
|
+
find_gene_associations,
|
7
|
+
find_gene_associations_for_pmid,
|
8
|
+
lookup_uniprot_entry,
|
9
|
+
uniprot_mapping
|
10
|
+
)
|
11
|
+
from aurelian.agents.literature.literature_tools import (
|
12
|
+
lookup_pmid as literature_lookup_pmid,
|
13
|
+
search_literature_web,
|
14
|
+
retrieve_literature_page
|
15
|
+
)
|
16
|
+
from pydantic_ai import Agent, Tool
|
17
|
+
|
18
|
+
SYSTEM = """
|
19
|
+
You are a biocurator that can answer questions using the Gene Ontology knowledge base via the AmiGO API.
|
20
|
+
|
21
|
+
Do not assume the knowledge base is complete or always correct. Your job is to help curators find mistakes
|
22
|
+
or missing information. A particular pervasive issue in GO is over-annotation based on phenotypes - a gene
|
23
|
+
should only be annotated to a process if it is involved in that process, i.e., if the activity of the
|
24
|
+
gene process is an identifiable step in the pathway.
|
25
|
+
|
26
|
+
You can help with:
|
27
|
+
- Finding gene associations for specific genes or gene products
|
28
|
+
- Finding gene associations cited in specific publications by PMID
|
29
|
+
- Looking up protein information via UniProt
|
30
|
+
- Mapping UniProt accessions to other databases
|
31
|
+
- Analyzing gene function and involvement in biological processes
|
32
|
+
- Identifying potential over-annotations or missing annotations
|
33
|
+
|
34
|
+
You can also use your general knowledge of genes and biological processes, and do additional searches
|
35
|
+
when needed to provide context or verification.
|
36
|
+
"""
|
37
|
+
|
38
|
+
amigo_agent = Agent(
|
39
|
+
model="openai:gpt-4o",
|
40
|
+
deps_type=AmiGODependencies,
|
41
|
+
system_prompt=SYSTEM,
|
42
|
+
tools=[
|
43
|
+
Tool(find_gene_associations),
|
44
|
+
Tool(find_gene_associations_for_pmid),
|
45
|
+
Tool(lookup_uniprot_entry),
|
46
|
+
Tool(uniprot_mapping),
|
47
|
+
Tool(literature_lookup_pmid, name="lookup_pmid",
|
48
|
+
description="""Lookup the text of a PubMed article by its PMID.
|
49
|
+
|
50
|
+
A PMID should be of the form "PMID:nnnnnnn" (no underscores).
|
51
|
+
|
52
|
+
This is useful for retrieving the full text of papers referenced in GO annotations
|
53
|
+
to verify the evidence for gene annotations or identify potential over-annotations.
|
54
|
+
|
55
|
+
Args:
|
56
|
+
pmid: The PubMed ID to look up
|
57
|
+
|
58
|
+
Returns:
|
59
|
+
str: Full text if available, otherwise abstract"""),
|
60
|
+
Tool(search_literature_web, name="search_web",
|
61
|
+
description="""Search the web using a text query.
|
62
|
+
|
63
|
+
Args:
|
64
|
+
query: The search query
|
65
|
+
|
66
|
+
Returns:
|
67
|
+
str: Search results with summaries"""),
|
68
|
+
Tool(retrieve_literature_page, name="retrieve_web_page",
|
69
|
+
description="""Fetch the contents of a web page.
|
70
|
+
|
71
|
+
Args:
|
72
|
+
url: The URL to fetch
|
73
|
+
|
74
|
+
Returns:
|
75
|
+
str: The contents of the web page""")
|
76
|
+
]
|
77
|
+
)
|
@@ -0,0 +1,85 @@
|
|
1
|
+
"""
|
2
|
+
Configuration classes for the AmiGO agent.
|
3
|
+
"""
|
4
|
+
from dataclasses import dataclass, field
|
5
|
+
|
6
|
+
from bioservices import UniProt
|
7
|
+
from oaklib import get_adapter
|
8
|
+
from oaklib.implementations import AmiGOImplementation
|
9
|
+
|
10
|
+
from aurelian.dependencies.workdir import HasWorkdir
|
11
|
+
from aurelian.agents.uniprot.uniprot_tools import normalize_uniprot_id
|
12
|
+
|
13
|
+
# Initialize UniProt service
|
14
|
+
uniprot_service = UniProt(verbose=False)
|
15
|
+
|
16
|
+
|
17
|
+
@dataclass
|
18
|
+
class AmiGODependencies(HasWorkdir):
|
19
|
+
"""
|
20
|
+
Configuration for the AmiGO agent.
|
21
|
+
|
22
|
+
Args:
|
23
|
+
taxon: NCBI Taxonomy ID, defaults to human (9606)
|
24
|
+
"""
|
25
|
+
taxon: str = field(default="9606")
|
26
|
+
|
27
|
+
def get_uniprot_service(self) -> UniProt:
|
28
|
+
"""
|
29
|
+
Get the UniProt service for protein lookups.
|
30
|
+
|
31
|
+
Returns:
|
32
|
+
UniProt: The UniProt service
|
33
|
+
"""
|
34
|
+
return uniprot_service
|
35
|
+
|
36
|
+
def get_amigo_adapter(self) -> AmiGOImplementation:
|
37
|
+
"""
|
38
|
+
Get the AmiGO adapter for the specified taxon.
|
39
|
+
|
40
|
+
Returns:
|
41
|
+
AmiGOImplementation: The OAK AmiGO adapter
|
42
|
+
"""
|
43
|
+
return get_adapter(f"amigo:NCBITaxon:{self.taxon}")
|
44
|
+
|
45
|
+
def get_gene_id(self, gene_term: str) -> str:
|
46
|
+
"""
|
47
|
+
Normalize a gene identifier.
|
48
|
+
|
49
|
+
Args:
|
50
|
+
gene_term: The gene identifier
|
51
|
+
|
52
|
+
Returns:
|
53
|
+
str: The normalized gene identifier
|
54
|
+
"""
|
55
|
+
return gene_term
|
56
|
+
|
57
|
+
|
58
|
+
def normalize_pmid(pmid: str) -> str:
|
59
|
+
"""
|
60
|
+
Normalize a PubMed ID to the format PMID:nnnnnnn.
|
61
|
+
|
62
|
+
Args:
|
63
|
+
pmid: The PubMed ID
|
64
|
+
|
65
|
+
Returns:
|
66
|
+
str: The normalized PubMed ID
|
67
|
+
"""
|
68
|
+
if ":" in pmid:
|
69
|
+
pmid = pmid.split(":", 1)[1]
|
70
|
+
if not pmid.startswith("PMID:"):
|
71
|
+
pmid = f"PMID:{pmid}"
|
72
|
+
return pmid
|
73
|
+
|
74
|
+
|
75
|
+
def get_config(taxon: str = "9606") -> AmiGODependencies:
|
76
|
+
"""
|
77
|
+
Get the AmiGO configuration.
|
78
|
+
|
79
|
+
Args:
|
80
|
+
taxon: NCBI Taxonomy ID, defaults to human (9606)
|
81
|
+
|
82
|
+
Returns:
|
83
|
+
AmiGODependencies: The AmiGO dependencies
|
84
|
+
"""
|
85
|
+
return AmiGODependencies(taxon=taxon)
|
@@ -0,0 +1,73 @@
|
|
1
|
+
"""
|
2
|
+
Evaluation module for the AmiGO agent.
|
3
|
+
|
4
|
+
This module implements evaluations for the AmiGO agent using the pydantic-ai-evals framework.
|
5
|
+
"""
|
6
|
+
import asyncio
|
7
|
+
import sys
|
8
|
+
from typing import Optional, Any, Dict, Callable, Awaitable
|
9
|
+
|
10
|
+
from aurelian.evaluators.model import MetadataDict, metadata
|
11
|
+
from aurelian.evaluators.substring_evaluator import SubstringEvaluator
|
12
|
+
from pydantic_evals import Case, Dataset
|
13
|
+
|
14
|
+
from aurelian.agents.amigo.amigo_agent import amigo_agent
|
15
|
+
from aurelian.agents.amigo.amigo_config import AmiGODependencies
|
16
|
+
|
17
|
+
class AmiGOMetadata(Dict[str, Any]):
|
18
|
+
"""Simple metadata dictionary for AmiGO evaluations."""
|
19
|
+
pass
|
20
|
+
|
21
|
+
# Define individual evaluation cases
|
22
|
+
case1 = Case(
|
23
|
+
name="uniprot_annotations",
|
24
|
+
inputs="What are some annotations for the protein UniProtKB:Q9UMS5",
|
25
|
+
expected_output="GO:", # Should contain GO terms
|
26
|
+
metadata=metadata("medium", "annotation_retrieval")
|
27
|
+
)
|
28
|
+
|
29
|
+
case2 = Case(
|
30
|
+
name="paper_overannotation",
|
31
|
+
inputs="Check PMID:19661248 for over-annotation",
|
32
|
+
expected_output="annotation", # Should evaluate the paper's annotations
|
33
|
+
metadata=metadata("hard", "literature_assessment")
|
34
|
+
)
|
35
|
+
|
36
|
+
case3 = Case(
|
37
|
+
name="pathway_genes",
|
38
|
+
inputs="What genes are involved in the ribosome biogenesis pathway?",
|
39
|
+
expected_output="ribosom", # Should mention ribosome-related genes
|
40
|
+
metadata=metadata("medium", "pathway_analysis")
|
41
|
+
)
|
42
|
+
|
43
|
+
case4 = Case(
|
44
|
+
name="database_mapping",
|
45
|
+
inputs="Map UniProtKB:P04637 to KEGG database",
|
46
|
+
expected_output="KEGG", # Should contain KEGG IDs
|
47
|
+
metadata=metadata("easy", "database_mapping")
|
48
|
+
)
|
49
|
+
|
50
|
+
case5 = Case(
|
51
|
+
name="dna_repair_genes",
|
52
|
+
inputs="Search for genes involved in DNA repair and show me their annotations",
|
53
|
+
expected_output="repair", # Should mention DNA repair annotations
|
54
|
+
metadata=metadata("medium", "gene_function_search")
|
55
|
+
)
|
56
|
+
|
57
|
+
def create_eval_dataset() -> Dataset[str, str, MetadataDict]:
|
58
|
+
"""
|
59
|
+
Create a dataset for evaluating the AmiGO agent.
|
60
|
+
|
61
|
+
Returns:
|
62
|
+
Dataset of AmiGO evaluation cases with appropriate evaluators
|
63
|
+
"""
|
64
|
+
# Collect all cases
|
65
|
+
cases = [case1, case2, case3, case4, case5]
|
66
|
+
|
67
|
+
# Dataset-level evaluators
|
68
|
+
evaluators = [SubstringEvaluator()]
|
69
|
+
|
70
|
+
return Dataset(
|
71
|
+
cases=cases,
|
72
|
+
evaluators=evaluators
|
73
|
+
)
|
@@ -0,0 +1,52 @@
|
|
1
|
+
"""
|
2
|
+
Gradio UI for the AmiGO agent.
|
3
|
+
"""
|
4
|
+
from typing import List, Optional
|
5
|
+
|
6
|
+
import gradio as gr
|
7
|
+
|
8
|
+
from aurelian.agents.amigo.amigo_agent import amigo_agent
|
9
|
+
from aurelian.agents.amigo.amigo_config import AmiGODependencies
|
10
|
+
from aurelian.utils.async_utils import run_sync
|
11
|
+
|
12
|
+
|
13
|
+
def chat(deps: Optional[AmiGODependencies] = None, taxon: Optional[str] = None, **kwargs):
|
14
|
+
"""
|
15
|
+
Initialize a chat interface for the AmiGO agent.
|
16
|
+
|
17
|
+
Args:
|
18
|
+
deps: Optional dependencies configuration
|
19
|
+
taxon: Optional NCBI Taxonomy ID, defaults to human (9606)
|
20
|
+
**kwargs: Additional arguments to pass to the agent
|
21
|
+
|
22
|
+
Returns:
|
23
|
+
A Gradio chat interface
|
24
|
+
"""
|
25
|
+
if deps is None:
|
26
|
+
deps = AmiGODependencies()
|
27
|
+
|
28
|
+
if taxon:
|
29
|
+
deps.taxon = taxon
|
30
|
+
|
31
|
+
def get_info(query: str, history: List[str]) -> str:
|
32
|
+
print(f"QUERY: {query}")
|
33
|
+
print(f"HISTORY: {history}")
|
34
|
+
if history:
|
35
|
+
query += "## History"
|
36
|
+
for h in history:
|
37
|
+
query += f"\n{h}"
|
38
|
+
result = run_sync(lambda: amigo_agent.run_sync(query, deps=deps, **kwargs))
|
39
|
+
return result.data
|
40
|
+
|
41
|
+
return gr.ChatInterface(
|
42
|
+
fn=get_info,
|
43
|
+
type="messages",
|
44
|
+
title="AmiGO AI Assistant",
|
45
|
+
examples=[
|
46
|
+
["What are some annotations for the protein UniProtKB:Q9UMS5"],
|
47
|
+
["Check PMID:19661248 for over-annotation"],
|
48
|
+
["What genes are involved in the ribosome biogenesis pathway?"],
|
49
|
+
["Map UniProtKB:P04637 to KEGG database"],
|
50
|
+
["Search for genes involved in DNA repair and show me their annotations"]
|
51
|
+
]
|
52
|
+
)
|