.. _installation: Installation ============= Prerequisites ------------- Blender Installation ~~~~~~~~~~~~~~~~~~~~~ Goo runs in Blender. Currently supported versions: - **Recommended:** Blender 4.0 LTS (`Download `__) - **Supported:** Blender 3.3 through 4.0 .. warning:: Blender 4.5 is currently not supported due to compatibility issues with the `RoadRunner Simulation Engine `__. We are actively working on resolving this limitation. System Requirements ~~~~~~~~~~~~~~~~~~~ - Python 3.10 or newer - Operating System: - Windows 10/11 - macOS 10.15 or newer - Linux (major distributions) Installing Goo --------------- 1. **Clone Repository** Clone the Goo repository from GitHub: .. code-block:: bash git clone https://github.com/megasonlab/Goo.git cd Goo 2. **Run Setup** Execute the setup command: .. code-block:: bash make setup The setup will prompt for your Blender executable location: - **macOS:** ``/Applications/Blender-x.x.app/Contents/MacOS/Blender`` - **Windows:** ``C:\\Program Files\\Blender Foundation\\Blender x.x\\blender.exe`` - **Linux:** Typically ``/usr/bin/blender`` or the installation path Your Blender path is saved in ``.blender_path`` for future use. How Setup Works ~~~~~~~~~~~~~~~~~ The setup process: 1. Creates a dedicated hook directory for Goo and its dependencies 2. Sets up an isolated Python environment 3. Installs all required packages 4. Configures Blender to recognize the Goo installation This approach ensures: - Clean separation from system Python - Version-specific compatibility - Easy updates and maintenance - No conflicts with Blender's internal Python Dependencies ------------ Core Dependencies ~~~~~~~~~~~~~~~~~ - **bpy** (Blender Python API) - Bundled with Blender - Provides 3D manipulation capabilities Scientific Computing ~~~~~~~~~~~~~~~~~~~~~~ - **numpy** - Numerical computations - **scipy** - Scientific algorithms - **xarray** - N-D labeled arrays Simulation Engines ~~~~~~~~~~~~~~~~~~~~ - **antimony** - Biological modeling language - **libroadrunner** - SBML simulation engine Data Handling ~~~~~~~~~~~~~~ - **h5py** - HDF5 file format support - **tifffile** - TIFF file handling All dependencies are automatically managed through our setup process. Manual installation is not recommended as it may lead to version conflicts or compatibility issues. Verification ------------- To verify your installation: .. code-block:: bash make test This will run the test suite to ensure all components are correctly installed and functioning. For detailed information about your setup: .. code-block:: bash make info Next Steps ---------- After installation, we recommend: 1. Reviewing the :doc:`../user_guide/api` for API documentation 2. Exploring the Goo modules: - :doc:`../user_guide/goo.cell` for cell manipulation - :doc:`../user_guide/goo.force` for force calculations - :doc:`../user_guide/goo.growth` for growth models .. _bpy: https://docs.blender.org/api/current/info_advanced_blender_as_bpy.html .. _numpy: http://www.numpy.org/ .. _scipy: https://scipy.org/ .. _antimony: https://tellurium.readthedocs.io/en/latest/antimony.html .. _libroadrunner: https://www.libroadrunner.org/ .. _h5py: https://www.h5py.org/ .. _xarray: https://xarray.dev/ .. note:: It is possible to install the dependencies direclty in the Blender Python interpreter. However, we do not recommend this approach as it might lead to conflicts with the system Python interpreter and is harder to manage across different versions of Blender. Documentation ~~~~~~~~~~~~~~~ Documentation uses Sphinx and follows Google-style docstrings. To build the docs: .. code-block:: bash make docs This will: 1. Use Blender's Python interpreter to ensure compatibility 2. Build HTML documentation in ``docs/build/html`` 3. Include all necessary dependencies from your setup The documentation will be available at ``docs/build/html/index.html``. Publishing documentation: 1. Build the documentation as shown above 2. Copy contents from ``docs/build/html`` to a temporary directory 3. Switch to the ``gh-pages`` branch 4. Copy the contents from the temporary directory to the root 5. Commit and create a pull request