This challenge was part of the TUM.ai Makeathon 2024 provided by CareForeRare Foundation in Cooperation with LMU, Capegini, MI4People, FeatureCloud, Neo4j and Dr. von Hauner Childrenās Hospital.
We chose this federated learning-based graph neural network project because of the value and impact it could have in rare disease prediction among children across the world.
It accurately predicts if a child is healthy or diagnosed with a rare disease. Moreover, we can predict the patientsā disease categories based on the first letter of the ICD-10 code system.
If a patient has one or more phenotypes and genes, we used a random forest to perform classification. We also implemented the first notions of graph neural networks. The application is made with Python and pushed to FeatureCloud inside a docker container.
The first challenge was to get the docker container running on the FeatureCloud infrastructure. We faced many timeout issues related to our neo4j queries. Furthermore, we did not have direct access to the production data. This means we could initially only explore and train on the synthetic dataset, which was unfortunately not relatable. Another challenge was retrieving the logs from the feature cloud, which needed to be sent always manually through Discord.
We were the first team with a submission and working solution, having good initial scores and utilizing innovative ML algorithms to perform binary and multi-label classification. We also implemented a Graph Machine Learning approach on a separate branch, which unfortunately could not yet be tested due to infrastructure limitations.
How to work with Cypher to query the graph-based database neo4j. How to work with the FeatureCloud infrastructure and Federated Machine Learning, classification algorithms, graph neural networks, and ultimately the medical context that is the prerequisite of understanding the correlations between genes, proteins, phenotypes, and the respective diseases. to start development you require python and a Docker Setup.
The Following example solution is build on https://github.com/FeatureCloud/app-round/
pip install virtualenv
python -m venv careforrare
# For Mac Users
source ./careforrare/bin/activate
# For Windows Users (use Powershell)
./careforrare/Scripts/Activate.ps1
# Install Requirements
pip install -r requirements.txt
# Develop your application with local environment you have to set local variables
# Please get in touch with the Care-For-Rare Team
# Build and push your container by facilitating makefile. Please change the name of DOCKER_IMAGE_NAME in your file
# if make does not work in your env please utilize statements in Makefile to create same results
make build
# to do a test run of your container with the following statement. In the logs you should see a server starting. When using Windows bases Systems we recognized mounting works better when triggering command directly in WSL System.
docker run -d -v ./config.yml:/mnt/input/config.yml -v ./data/output:/mnt/output -p 9000:9000 featurecloud.ai/dreamteam:latest
# or on Windows:
docker run -d -v ${pwd}/config.yml:/mnt/input/config.yml -v ${pwd}/data/output:/mnt/output -p 9000:9000 featurecloud.ai/dreamteam:latest
# Trigger the start of the application states
curl --location 'http://localhost:9000/setup' --header 'Content-Type: application/json' --data '{"id": "0000000000000000","coordinator": false,"coordinatorID": "0000000000000000","clients": []}'
# Look at logs using. Make sure to close container after testing
docker logs <containerID>
# Push the new image to the registry
make push
Alternatively you are free to utilize the full functionalities of the feature-cloud api and Testbed
https://featurecloud.ai/developers
docker-compose up -d
This command performs similar actions to the previous lengthy Docker command. It builds the Docker image and tags it as featurecloud.ai/dreamteam:latest, sets up local volume mappings, and opens the corresponding ports.
Organized by TUM.ai e.V.