A comprehensive toolkit for indexing, curating, and integrating multimodal research data using knowledge graph capabilities.
The Science Data Kit (SDK) helps researchers manage and make sense of complex, multimodal scientific data. It follows the FAIR+ data principles to ensure your data is Findable, Accessible, Interoperable, Reusable, and Computable.
- Connect to data sources and spin up necessary infrastructure
- Survey your file systems to extract metadata
- Map entities and relationships to create knowledge graphs
- Explore your data through interactive visualizations
- Chat with your data using natural language
- Learn about knowledge graphs and FAIR data practices
The Science Data Kit follows a logical workflow:
-
Connect 🌐 - Set up your data infrastructure
- Host a local Neo4j database (with APOC plugin pre-installed)
- Run Jupyter Lab for data analysis
- Launch NeoDash for Neo4j visualization
- Connect to existing Neo4j databases
-
Survey 🔭 - Scan and analyze your file systems
- Locate and scan datasets
- View scan results
- Label entities for further processing
- Push data to Neo4j database
-
Map 🗺 - Define entities and relationships
- Load entities from files or database
- Define entity structure and properties
- Create relationships between entities
- Build taxonomies and ontologies
- Summarize ontology terms for node labels
- Load ontology relationships into Neo4j
-
Explore 🏞 - Visualize and analyze your data
- View schema visualizations
- Extract and explore node data
- Export data for further analysis
-
Chat 💬 - Interact with your data using natural language
- Connect to LLM providers (OpenAI, Anthropic, Ollama)
- Ask questions about your data
- Get context-aware responses
-
Learn 📖 - Access resources and documentation
- Documentation and tutorials
- Knowledge graph basics
- Community and support
- app/ - Streamlit application code
- ipynb/ - Jupyter notebooks for tutorials and examples
- docs/ - Documentation files
The Science Data Kit is designed around the FAIR+ data principles:
- Findable - Data is easy to find
- Accessible - Data can be accessed with appropriate permissions
- Interoperable - Data can work with other systems
- Reusable - Data can be reused for different purposes
- + (Computable) - Data can be processed by machines
- Python 3.10+
- Docker (for Neo4j and Jupyter containers)
- Neo4j Graph Database
- ISA Tools: Some features in the ISA browser require the
isatoolspackage. The application includes a compatibility layer that allows it to run withoutisatools, but with limited functionality. If you need full ISA-Tab file processing capabilities, you have two options:
We've modified the isatools package to work with Python 3.12+, but with some limitations. Specifically, the mzML file processing functionality is not available in this version.
python install_isatools_py312.pyThis will create a virtual environment at ~/.venvs/isatools_py312_env with Python 3.12+ and a modified version of isatools that works without the mzml2isa dependency.
For complete functionality including mzML file processing, you can use the provided installation scripts that create a Python 3.9 environment:
-
Using conda (recommended):
bash install_isatools.sh
This will create a conda environment named
isatools_envwith Python 3.9 and all required dependencies. -
Using venv/pip:
python install_isatools.py
This will create a virtual environment at
~/.venvs/isatools_envwith Python 3.9 and all required dependencies.
After installation, you can activate the environment and use isatools:
# For Python 3.12+ version
source ~/.venvs/isatools_py312_env/bin/activate # Linux/macOS
# or
~\.venvs\isatools_py312_env\Scripts\activate # Windows
# For Python 3.9 version with conda
conda activate isatools_env
# For Python 3.9 version with venv
source ~/.venvs/isatools_env/bin/activate # Linux/macOS
# or
~\.venvs\isatools_env\Scripts\activate # WindowsThe main application will continue to work with Python 3.10+ using the compatibility layer, while the isatools-specific features will be available in the environment you choose to activate.
We provide a comprehensive installation script that handles all the necessary setup steps:
-
Clone the repository:
git clone https://github.com/your-username/science_data_kit.git cd science_data_kit -
Run the installation script:
./install.sh
The installation script will:
- Check for system dependencies (Python 3.10+, pip, Docker, Docker Compose)
- Offer to install missing dependencies
- Set up a Python virtual environment
- Install the Science Data Kit package and its dependencies
- Configure Neo4j in a Docker container
- Provide options for installing isatools (basic or full version)
If you prefer to install manually:
-
Create and activate a virtual environment:
python -m venv venv source venv/bin/activate # Linux/macOS # or venv\Scripts\activate # Windows
-
Install the package:
pip install -e . -
(Optional) Install isatools:
# For basic isatools (Python 3.12+, limited functionality) pip install -e .[isatools] # For full isatools (Python 3.9, complete functionality) # See the "Optional Dependencies" section above
After installation, you can start the Science Data Kit application:
# Activate the virtual environment (if not already activated)
source venv/bin/activate # Linux/macOS
# or
venv\Scripts\activate # Windows
# Run the application
science_data_kitAccess the GUI from your browser at:
localhost:8501
We provide a test script that automatically verifies your installation:
./test_installation.pyThis script checks:
- Python version
- Required dependencies
- Docker and Neo4j container status
- Configuration files
- Optional components like isatools
Alternatively, you can manually verify the installation:
-
Check that the application starts without errors:
science_data_kit
-
Verify that Neo4j is running:
docker ps | grep neo4j-instanceYou should see the Neo4j container running.
-
Access the Neo4j browser at
http://localhost:7474and log in with the default credentials (neo4j/password). -
If you installed isatools, verify the installation:
# For basic isatools (Python 3.12+) python -c "import isatools; print('isatools version:', isatools.__version__)" # For full isatools (Python 3.9) # First activate the appropriate environment conda activate isatools_env # or source ~/.venvs/isatools_env/bin/activate python -c "import isatools; print('isatools version:', isatools.__version__)"
The application uses Streamlit's configuration system to handle various settings:
- Message Size Limits: For large datasets, the default message size limit (200 MB) may be exceeded. The configuration has been adjusted to handle larger datasets.
- Theme Settings: Visual appearance settings are configured for better user experience.
Configuration files are located in the app/.streamlit directory:
app/.streamlit/
├── config.toml # Main configuration file
└── README.md # Documentation for configuration options
To adjust configuration settings (e.g., if you encounter "MessageSizeError"):
- Edit
app/.streamlit/config.toml - Restart the Streamlit application
For more details, see the configuration documentation.
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License.