diff --git a/README.md b/README.md index 57a28bb..416b7d8 100644 --- a/README.md +++ b/README.md @@ -5,13 +5,13 @@

BioMANIA

-[![Paper](https://img.shields.io/badge/Paper-burgundy?style=flat&logo=arxiv)](https://www.biorxiv.org/content/10.1101/2023.10.29.564479v1) +[![Paper](https://img.shields.io/badge/Paper-burgundy?style=flat&logo=arxiv)](https://www.biorxiv.org/content/10.1101/2023.10.29.564479) [![GitHub stars](https://img.shields.io/github/stars/batmen-lab/BioMANIA?style=social)](https://github.com/batmen-lab/BioMANIA) [![Documentation Status](https://img.shields.io/readthedocs/biomania/latest?style=flat&logo=readthedocs&label=Doc)](https://biomania.readthedocs.io/en/latest/?badge=latest) [![License](https://img.shields.io/badge/license-Apache%203.0-blue?style=flat&logo=open-source-initiative)](https://github.com/batmen-lab/BioMANIA/blob/main/LICENSE) [![Docker Version](https://img.shields.io/badge/Docker-v1.1.9-blue?style=flat&logo=docker)](https://hub.docker.com/repositories/chatbotuibiomania) -[![Railway](https://img.shields.io/badge/Railway-purple?style=flat&logo=railway)](https://railway.app/template/qaQEvv) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/14K4562oeesEz5qMoXmjv9gW_4VeLh6_U?usp=sharing) + @@ -21,8 +21,9 @@ Welcome to the BioMANIA! This guide provides detailed instructions on how to set Project Overview: -![](./images/Motivation.jpg) -![](./images/Methods.jpg) + + +![](./images/overview.jpg) 🌟 We warmly invite you to share your trained models and datasets in our [issues section](https://github.com/batmen-lab/BioMANIA/issues/2), making it easier for others to utilize and extend your work, thus amplifying its impact. Feel free to explore and provide feedback on tools shared by other contributors as well! 🚀🔍 @@ -39,9 +40,9 @@ We also offer a command-line interface (CLI) demo through the terminal. -We also offer a GPTs demo (under developing). + # Web access online demo @@ -109,11 +110,11 @@ ngrok http 3000 then get the url like `https://[ngrok_id].ngrok-free.app` and copy it to chrome to start! -## Run with Railway + ## Run with script @@ -231,8 +232,8 @@ model.run_pipeline(user_input, library, top_k=1, files=[], conversation_started= Please refer to the separate README for tutorials that supporting converting different coding tools to our APP. - [For PyPI Tools](./docs/PyPI2APP.md) -- [For Python Source Code from Git Repo](./docs/Git2APP.md) -- [For R Package](./docs/R2APP.md) (231123-Still under developing) +- [For Python Source Code from Git Repo](./docs/Git2APP.md) (240925-Under developing) +- [For R Package](./docs/R2APP.md) (231123-Under developing) ## Share your APP! @@ -269,10 +270,9 @@ Thank you for choosing BioMANIA. We hope this guide assists you in navigating th ## **Version History** -- v1.1.11 (2024-06) - - Include task planning, execution correction into the logic. - - Polish prompt. - - Wrap backend service to be compatible for newer UI +- v1.1.12 (2024-09-25) + - Update code scripts which are aligned with paper. + - Will renew the data, docker, scripts for generating report, documents for Git2APP, R2APP soon. view [version_history](./docs/version_history.md) for more details! diff --git a/docs/Report_Generation.md b/docs/Report_Generation.md index 325831e..c61ba52 100644 --- a/docs/Report_Generation.md +++ b/docs/Report_Generation.md @@ -11,7 +11,7 @@ Firstly, press `export chat` button on UI to get the chat json data. Convert the # cd src python report/Chat2Py.py report/demo_Preprocessing_and_clustering_3k_PBMCs.json ``` -![](./images/pyfile.jpg) +![](https://github.com/batmen-lab/BioMANIA/tree/main/images/pyfile.jpg) ### For chat report @@ -22,7 +22,7 @@ Convert the chat JSON into an [ipynb report](https://github.com/batmen-lab/BioMA # cd src python report/Chat2jupyter.py report/demo_Preprocessing_and_clustering_3k_PBMCs.json ``` -![](./images/jupyter.jpg) +![](https://github.com/batmen-lab/BioMANIA/tree/main/images/jupyter.jpg) ### For performance report @@ -36,7 +36,7 @@ python report/PNG2report.py scanpy Please note that the generation of this report must be based on the premise that the retriever models have already been trained, and the gpt baseline has already been tested. You need to first obtain the results of each model before running this script. Here is a reference for a [demo report](https://github.com/batmen-lab/BioMANIA/tree/main/src/report/performance_report.pdf). -![](./images/performance_report.jpg) +![](https://github.com/batmen-lab/BioMANIA/tree/main/images/performance_report.jpg) ### For common issue report @@ -51,6 +51,9 @@ python report/Py2report.py scanpy The output files are located in the ./report folder. +![](https://github.com/batmen-lab/BioMANIA/tree/main/images/error_category.jpg) + + TODO: We will provide the below files and the data of more tools later diff --git a/docs/version_history.md b/docs/version_history.md index 159b47c..cdc3419 100644 --- a/docs/version_history.md +++ b/docs/version_history.md @@ -1,5 +1,10 @@ ## Version History + +- v1.1.11 (2024-06) + - Include task planning, execution correction into the logic. + - Polish prompt. + - Wrap backend service to be compatible for newer UI - v1.1.9 (2023-12-24) - Add Drive URL installation feature for convenient uploading of large files by users. - Real-time informative displays for API execution, and enable image zoom and download features. diff --git a/examples/result_demo_ehrapy.png b/examples/result_demo_ehrapy.png new file mode 100644 index 0000000..b6fea24 Binary files /dev/null and b/examples/result_demo_ehrapy.png differ diff --git a/examples/result_demo_ehrapy_all.png b/examples/result_demo_ehrapy_all.png new file mode 100644 index 0000000..1a9a29a Binary files /dev/null and b/examples/result_demo_ehrapy_all.png differ diff --git a/examples/result_demo_scanpy_indiv.png b/examples/result_demo_scanpy_indiv.png new file mode 100644 index 0000000..f7ba1c9 Binary files /dev/null and b/examples/result_demo_scanpy_indiv.png differ diff --git a/examples/result_demo_scanpy_plan.png b/examples/result_demo_scanpy_plan.png new file mode 100644 index 0000000..81f93c3 Binary files /dev/null and b/examples/result_demo_scanpy_plan.png differ diff --git a/examples/result_demo_snapatac2.png b/examples/result_demo_snapatac2.png new file mode 100644 index 0000000..32b13b4 Binary files /dev/null and b/examples/result_demo_snapatac2.png differ diff --git a/examples/result_demo_squidpy.png b/examples/result_demo_squidpy.png new file mode 100644 index 0000000..a341d9b Binary files /dev/null and b/examples/result_demo_squidpy.png differ diff --git a/images/Methods.jpg b/images/Methods.jpg deleted file mode 100644 index da4c6dd..0000000 Binary files a/images/Methods.jpg and /dev/null differ diff --git a/images/Motivation.jpg b/images/Motivation.jpg deleted file mode 100644 index b384991..0000000 Binary files a/images/Motivation.jpg and /dev/null differ diff --git a/images/demo_full.jpg b/images/demo_full.jpg index c0b3658..1c7f8bd 100644 Binary files a/images/demo_full.jpg and b/images/demo_full.jpg differ diff --git a/images/error_category.jpg b/images/error_category.jpg new file mode 100644 index 0000000..0e718d2 Binary files /dev/null and b/images/error_category.jpg differ diff --git a/images/overview.jpg b/images/overview.jpg new file mode 100644 index 0000000..29336cd Binary files /dev/null and b/images/overview.jpg differ diff --git a/images/overview_v2.jpg b/images/overview_v2.jpg deleted file mode 100644 index 6ad4807..0000000 Binary files a/images/overview_v2.jpg and /dev/null differ diff --git a/src/configs/Base_cheatsheet.py b/src/configs/Base_cheatsheet.py index 9a9a3cb..719bd42 100644 --- a/src/configs/Base_cheatsheet.py +++ b/src/configs/Base_cheatsheet.py @@ -1,74 +1,90 @@ CHEATSHEET = { - "numpy": [ - "numpy.array" - ], - "pandas": [ - "pandas.read_csv", - "pandas.read_excel", - "pandas.DataFrame.to_csv", - "pandas.DataFrame", - "pandas.concat", - "pandas.DataFrame.groupby" - ], - "matplotlib": [ - "matplotlib.pyplot.plot", - "matplotlib.pyplot.subplots", - "matplotlib.pyplot.imshow", - "matplotlib.pyplot.hist", - "matplotlib.pyplot.scatter", - "matplotlib.pyplot.bar", - "matplotlib.pyplot.pie", - "matplotlib.pyplot.boxplot", - "matplotlib.pyplot.violinplot" - ], - "sklearn": [ - "sklearn.preprocessing.StandardScaler", - "sklearn.preprocessing.StandardScaler.fit", - "sklearn.preprocessing.OneHotEncoder", - "sklearn.preprocessing.OneHotEncoder.fit", - "sklearn.preprocessing.normalize", - "sklearn.model_selection.train_test_split", - "sklearn.metrics.accuracy_score", - "sklearn.metrics.precision_score", - "sklearn.metrics.recall_score", - "sklearn.metrics.mean_squared_error", - "sklearn.decomposition.PCA", - "sklearn.decomposition.PCA.fit", - "sklearn.manifold.TSNE", - "sklearn.manifold.TSNE.fit", - "sklearn.decomposition.NMF", - "sklearn.decomposition.NMF.fit" - ], - "scipy": [ - "scipy.sparse.csr_matrix" - ], - "torch": [ - "torch.tensor" - ], - "json":["json.dump", - "json.load", - "json.loads" - ], - "statsmodels": [ - "statsmodels.formula.api.ols" - ], - "pynndescent": [ - "pynndescent.NNDescent.query" - ], - "anndata": [ - "anndata.read_csv", - "anndata.AnnData.write_csvs" - ], - "pooch":[ - "pooch.retrieve" - ], - "math":[ - "math.ceil" - ], - "urllib":[ - "urllib.request.urlretrieve" - ], - "tabulate":[ - "tabulate.tabulate" + #"numpy": [ + # "numpy.array" + #], + #"pandas": [ + # "pandas.read_csv", + # "pandas.read_excel", + # "pandas.DataFrame.to_csv", + # "pandas.DataFrame", + # "pandas.concat", + # "pandas.DataFrame.groupby" + #], + #"matplotlib": [ + # "matplotlib.pyplot.plot", + # "matplotlib.pyplot.subplots", + # "matplotlib.pyplot.imshow", + # "matplotlib.pyplot.hist", + # "matplotlib.pyplot.scatter", + # "matplotlib.pyplot.bar", + # "matplotlib.pyplot.pie", + # "matplotlib.pyplot.boxplot", + # "matplotlib.pyplot.violinplot" + #], + #"sklearn": [ + # "sklearn.preprocessing.StandardScaler", + # "sklearn.preprocessing.StandardScaler.fit", + # "sklearn.preprocessing.OneHotEncoder", + # "sklearn.preprocessing.OneHotEncoder.fit", + # "sklearn.preprocessing.normalize", + # "sklearn.model_selection.train_test_split", + # "sklearn.metrics.accuracy_score", + # "sklearn.metrics.precision_score", + # "sklearn.metrics.recall_score", + # "sklearn.metrics.mean_squared_error", + # "sklearn.decomposition.PCA", + # "sklearn.decomposition.PCA.fit", + # "sklearn.manifold.TSNE", + # "sklearn.manifold.TSNE.fit", + # "sklearn.decomposition.NMF", + # "sklearn.decomposition.NMF.fit" + #], + #"scipy": [ + # "scipy.sparse.csr_matrix" + #], + #"torch": [ + # "torch.tensor" + #], + #"json":["json.dump", + # "json.load", + # "json.loads" + #], + #"statsmodels": [ + # "statsmodels.formula.api.ols" + #], + #"pynndescent": [ + # "pynndescent.NNDescent.query" + #], + #"anndata": [ + # "anndata.read_csv", + # "anndata.AnnData.write_csvs" + #], + #"pooch":[ + # "pooch.retrieve" + #], + #"math":[ + # "math.ceil" + #], + #"urllib":[ + # "urllib.request.urlretrieve" + #], + #"tabulate":[ + # "tabulate.tabulate" + #], + "cellrank":[ + "cellrank.kernels.PseudotimeKernel", + "cellrank.kernels.PseudotimeKernel.compute_transition_matrix", + "cellrank.kernels.PseudotimeKernel.plot_random_walks", + "cellrank.kernels.PseudotimeKernel.plot_projection", + "cellrank.estimators.GPCCA", + "cellrank.estimators.GPCCA.fit", + "cellrank.estimators.GPCCA.macrostates_memberships", + "cellrank.estimators.GPCCA.plot_macrostates", + "cellrank.estimators.GPCCA.predict_terminal_states", + "cellrank.estimators.GPCCA.compute_fate_probabilities", + "cellrank.estimators.GPCCA.plot_fate_probabilities", + "cellrank.pl.circular_projection", + "cellrank.models.GAM", + "cellrank.pl.gene_trends" ] } diff --git a/src/configs/Lib_cheatsheet.py b/src/configs/Lib_cheatsheet.py index 4456f34..070f892 100644 --- a/src/configs/Lib_cheatsheet.py +++ b/src/configs/Lib_cheatsheet.py @@ -1,4 +1,13 @@ CHEATSHEET = { + "scanpy":{ + "LIB":"scanpy", + "LIB_ALIAS":"scanpy", + "API_HTML_PATH": "scanpy.readthedocs.io/en/latest/api/index.html", + "GITHUB_LINK": "https://github.com/scverse/scanpy", + "READTHEDOC_LINK": "https://scanpy.readthedocs.io/", + "TUTORIAL_HTML_PATH":"scanpy.readthedocs.io/en/latest/tutorials", + "TUTORIAL_GITHUB":["https://github.com/scverse/scanpy_usage", "https://github.com/scverse/scanpy-tutorials"] + }, "squidpy":{ "LIB":"squidpy", "LIB_ALIAS":"squidpy", @@ -8,14 +17,23 @@ "TUTORIAL_HTML_PATH":"squidpy.readthedocs.io/en/latest/notebooks/tutorials", "TUTORIAL_GITHUB":"https://github.com/scverse/squidpy_notebooks" }, - "scanpy":{ - "LIB":"scanpy", - "LIB_ALIAS":"scanpy", - "API_HTML_PATH": "scanpy.readthedocs.io/en/latest/api/index.html", - "GITHUB_LINK": "https://github.com/scverse/scanpy", - "READTHEDOC_LINK": "https://scanpy.readthedocs.io/", - "TUTORIAL_HTML_PATH":"scanpy.readthedocs.io/en/latest/tutorials", - "TUTORIAL_GITHUB":["https://github.com/scverse/scanpy_usage", "https://github.com/scverse/scanpy-tutorials"] + "ehrapy": { + "LIB": "ehrapy", + "LIB_ALIAS": "ehrapy", + "API_HTML_PATH": "ehrapy.readthedocs.io/en/latest/usage/usage.html", + "GITHUB_LINK": "https://github.com/theislab/ehrapy", + "READTHEDOC_LINK": "https://ehrapy.readthedocs.io/", + "TUTORIAL_HTML_PATH": "https://ehrapy.readthedocs.io/en/latest/tutorials/index.html", + "TUTORIAL_GITHUB": "https://github.com/theislab/ehrapy-tutorials" + }, + "snapatac2": { + "LIB": "snapatac2", + "LIB_ALIAS": "snapatac2", + "API_HTML_PATH": "kzhang.org/SnapATAC2/api/index.html", #kzhang.org/SnapATAC2/version/2.6/api/index.html + "GITHUB_LINK": "https://github.com/kaizhang/SnapATAC2", + "READTHEDOC_LINK": "https://kzhang.org/SnapATAC2", + "TUTORIAL_HTML_PATH": "https://kzhang.org/SnapATAC2/tutorials/index.html", + "TUTORIAL_GITHUB": "https://github.com/kaizhang/SnapATAC2" }, "scanpy_subset":{ "LIB":"scanpy_subset", @@ -188,24 +206,6 @@ "TUTORIAL_HTML_PATH": None, "TUTORIAL_GITHUB": None }, - "ehrapy": { - "LIB": "ehrapy", - "LIB_ALIAS": "ehrapy", - "API_HTML_PATH": "ehrapy.readthedocs.io/en/latest/usage/usage.html", - "GITHUB_LINK": "https://github.com/theislab/ehrapy", - "READTHEDOC_LINK": "https://ehrapy.readthedocs.io/", - "TUTORIAL_HTML_PATH": "https://ehrapy.readthedocs.io/en/latest/tutorials/index.html", - "TUTORIAL_GITHUB": "https://github.com/theislab/ehrapy-tutorials" - }, - "snapatac2": { - "LIB": "snapatac2", - "LIB_ALIAS": "snapatac2", - "API_HTML_PATH": "kzhang.org/SnapATAC2/api/index.html", - "GITHUB_LINK": "https://github.com/kaizhang/SnapATAC2", - "READTHEDOC_LINK": "https://kzhang.org/SnapATAC2", - "TUTORIAL_HTML_PATH": "https://kzhang.org/SnapATAC2/tutorials/index.html", - "TUTORIAL_GITHUB": "https://github.com/kaizhang/SnapATAC2" - }, "cellrank": { "LIB": "cellrank", "LIB_ALIAS": "cellrank", @@ -358,5 +358,14 @@ "READTHEDOC_LINK": "https://scanpy-tutorials.readthedocs.io/en/latest/spatial/integration-scanorama.html", "TUTORIAL_HTML_PATH": "https://scanpy-tutorials.readthedocs.io/en/latest/spatial/integration-scanorama.html", "TUTORIAL_GITHUB": "https://github.com/brianhie/scanorama" + }, + "base":{ + "LIB": "base", + "LIB_ALIAS": "base", + "API_HTML_PATH": None, + "GITHUB_LINK": None, + "READTHEDOC_LINK": None, + "TUTORIAL_HTML_PATH": None, + "TUTORIAL_GITHUB": None } } \ No newline at end of file