An AI-driven tool designed to match patients with the most relevant clinical trials. Leveraging state-of-the-art Large Language Models (LLMs), Natural Language Processing (NLP), and Explainable AI (XAI), TrialMatchAI structures trial documentation and patient data to provide transparent, personalized recommendations.
At this stage, TrialMatchAI is still under active development and largely a prototype provided for research and informational purposes only. It is NOT medical advice and should not replace consultation with qualified healthcare professionals.
- AI-Powered Matching: Utilizes advanced LLMs to parse complex eligibility criteria and patient records (including unstructured notes and genetic reports).
- Personalized Recommendations: Tailors trial suggestions based on each patient’s unique clinical history and genomic profile.
- Explainable Insights: Provides clear, chain-of-thought explanations for every recommended trial, enhancing trust and interpretability.
- Real-Time Updates: Maintains an up-to-date database of recruiting trials.
- Scalable Architecture: Dockerized components enable easy deployment of Elasticsearch indices and indexing pipelines.
- OS: Linux or macOS
- Docker & Docker Compose: For running the Elasticsearch container
- Java: For running the NER and Normalization
- Python: ≥ 3.8
- GPU: NVIDIA (e.g., H100) with ≥ 60 GB VRAM (recommended for large-scale processing)
- Disk Space: ≥ 100 GB free (for data and indices)
-
Clone the Repository
git clone https://github.com/cbib/TrialMatchAI.git cd TrialMatchAI -
Ensure the Repository Is Up to Date
git pull origin main
-
Make the Setup Script Executable
chmod +x setup.sh
-
(Optional) Configure Elasticsearch Password
- Open the
.envfile located in thedocker/folder. - Update the
ELASTIC_PASSWORDvariable to your desired secure password.
# docker/.env ELASTIC_PASSWORD=YourNewPassword
- Open the
4a. (Optional) Sync config.json Password
If you updated ELASTIC_PASSWORD above, open config.json in the repo root and update the Elasticsearch password field to match:
{
"elasticsearch": {
"host": "https://localhost:9200",
"username": "elastic",
"password": "YourNewPassword",
.
.
},
...
}-
Run the Setup Script
./setup.sh
- Installs Python dependencies
- Downloads datasets, resources, and model archives from Zenodo
- Verifies GPU availability
- Builds the Elasticsearch container via Docker Compose
- Launches indexing pipelines in the background
- Estimated Time: ~60–90 minutes (depending on hardware)
-
(Optional) Using Flash-Attention 2 If you want to use Flash-Attention for faster and more memory efficient attention, you can install it through pip, as presented in the package github.
For some systems however, installing it with standard methods is either impossible or too slow. It is recommended in this case to manually download the wheel file compatible with your torch, cuda and python versions, listed in the package releases. Then, you can pip install that file.
Run the matcher on a sample input directory:
python -m src.Matcher.main Results are saved under results/, with detailed criterion-level explanations for each recommended trial.
We welcome community contributions! To contribute:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/YourFeature. - Commit your changes and push to your branch.
- Open a Pull Request against
main.
Please follow our code style and include tests where applicable.
For questions, issues, or feature requests, open an issue on GitHub or reach out to:
- Email: abdallahmajd7@gmail.com
