Repository: datajoint/element-calcium-imaging (language: python)

Issue:
Add installation of external packages
- See https://github.com/datajoint/element-interface/issues/49
- External packages
    - [x] sbxreader
    - [x] nd2
    - [x] https://github.com/atlab/scanreader.git
    - [x] suite2p
    - [x] https://github.com/datajoint-company/CaImAn


Discussion / hints:

Fix patch:
diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile
index 7da05001..b6690fa0 100644
--- a/.devcontainer/Dockerfile
+++ b/.devcontainer/Dockerfile
@@ -30,17 +30,11 @@ RUN \
 COPY ./ /tmp/element-calcium-imaging/
 
 RUN \
-    # workflow dependencies
-    # apt-get install gcc ffmpeg libsm6 libxext6 -y && \
-    # pip install --no-cache-dir Pygments==2.14.0  && \
-    # git clone https://github.com/datajoint/CaImAn.git  && \
-    # pip install --no-cache-dir -r ./CaImAn/requirements.txt  && \
-    # pip install --no-cache-dir ./CaImAn && \
-    pip install git+https://github.com/datajoint/sbxreader && \
-    pip install git+https://github.com/atlab/scanreader && \
-    pip install --no-cache-dir -e /tmp/element-calcium-imaging[elements,nd2,suite2p,tests] && \
+    # pipeline dependencies
+    apt-get install gcc g++ ffmpeg libsm6 libxext6 -y && \
+    pip install --no-cache-dir -e /tmp/element-calcium-imaging[caiman_requirements] && \
+    pip install --no-cache-dir -e /tmp/element-calcium-imaging[caiman,elements,nd2,sbxreader,scanreader,suite2p,tests] && \
     # clean up
-    # rm -rf /tmp/CaImAn && \
     rm -rf /tmp/element-calcium-imaging && \
     apt-get clean
 
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
index 4077ba38..89bbe16b 100644
--- a/.devcontainer/devcontainer.json
+++ b/.devcontainer/devcontainer.json
@@ -23,7 +23,7 @@
 		"vscode": {
 			"extensions": [
 				"ms-python.python@2023.8.0",
-				"ms-toolsai.jupyter@2023.3.1201040234",
+				"ms-toolsai.jupyter@2023.3.1201040234"
 			]
 		}
 	}
diff --git a/.devcontainer/docker-compose.yaml b/.devcontainer/docker-compose.yaml
index e6d47ce8..0794c02e 100644
--- a/.devcontainer/docker-compose.yaml
+++ b/.devcontainer/docker-compose.yaml
@@ -4,9 +4,9 @@ services:
     cpus: 4
     mem_limit: 8g
     # build:
-    #   context: ../..
+    #   context: ..
     #   dockerfile: ./.devcontainer/Dockerfile
-    image: datajoint/element_calcium_imaging_devcontainer:latest
+    image: datajoint/element_calcium_imaging:latest
     extra_hosts:
       - fakeservices.datajoint.io:127.0.0.1
     environment:
diff --git a/CHANGELOG.md b/CHANGELOG.md
index f5c3ab5a..9e2daad7 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -3,7 +3,14 @@
 Observes [Semantic Versioning](https://semver.org/spec/v2.0.0.html) standard and
 [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) convention.
 
-## [0.7.8] - 2023-07-23
+## [0.7.9] - 2023-07-27
+
++ Update - GitHub Actions to run every Monday at 8am
++ Update - Dev Container to install CaImAn and rename Docker image
++ Update - `extras_require` to increment `element-interface` version
++ Update - `extras_require` to include `caiman`, `sbxreader`, and `scanreader`
+
+## [0.7.8] - 2023-07-27
 
 + Update - import statement for `prairie_view_loader` in `scan.py`
 
@@ -160,6 +167,7 @@ Observes [Semantic Versioning](https://semver.org/spec/v2.0.0.html) standard and
 + Add - `scan` and `imaging` modules
 + Add - Readers for `ScanImage`, `ScanBox`, `Suite2p`, `CaImAn`
 
+[0.7.9]: https://github.com/datajoint/element-calcium-imaging/releases/tag/0.7.9
 [0.7.8]: https://github.com/datajoint/element-calcium-imaging/releases/tag/0.7.8
 [0.7.7]: https://github.com/datajoint/element-calcium-imaging/releases/tag/0.7.7
 [0.7.6]: https://github.com/datajoint/element-calcium-imaging/releases/tag/0.7.6
diff --git a/Dockerfile b/Dockerfile
deleted file mode 100644
index c144a405..00000000
--- a/Dockerfile
+++ /dev/null
@@ -1,15 +0,0 @@
-ARG PY_VER
-ARG DISTRO
-ARG IMAGE
-ARG PKG_NAME
-ARG PKG_VERSION
-
-FROM datajoint/${IMAGE}:py${PY_VER}-${DISTRO}
-COPY --chown=anaconda:anaconda ./requirements.txt ./setup.py \
-    /main/
-COPY --chown=anaconda:anaconda ./${PKG_NAME} /main/${PKG_NAME}
-RUN \
-    cd /main && \
-    pip install . && \
-    rm -R /main/*
-WORKDIR /main
diff --git a/docker-compose-build.yaml b/docker-compose-build.yaml
deleted file mode 100644
index 81984c7c..00000000
--- a/docker-compose-build.yaml
+++ /dev/null
@@ -1,26 +0,0 @@
-# PY_VER=3.8 IMAGE=djbase DISTRO=alpine PKG_NAME=$(python -c "print([p for p in __import__('setuptools').find_packages() if '.' not in p][0])") PKG_VERSION=$(cat ${PKG_NAME}/version.py | awk -F\' '/__version__/ {print $2}') HOST_UID=$(id -u) docker-compose -f docker-compose-build.yaml up --exit-code-from element --build
-#
-# Intended for updating dependencies and docker image.
-# Used to build release artifacts.
-version: "2.4"
-services:
-  element:
-    build:
-      context: .
-      args:
-        - PY_VER
-        - DISTRO
-        - IMAGE
-        - PKG_NAME
-        - PKG_VERSION
-    image: datajoint/${PKG_NAME}:${PKG_VERSION}
-    user: ${HOST_UID}:anaconda
-    volumes:
-      - .:/main
-    command:
-      - sh
-      - -lc
-      - |
-        set -e
-        rm -R build dist *.egg-info || echo "No prev build"
-        python setup.py bdist_wheel sdist
diff --git a/docs/src/index.md b/docs/src/index.md
index 34ad6bc1..dc2e74d1 100644
--- a/docs/src/index.md
+++ b/docs/src/index.md
@@ -21,7 +21,9 @@ combined with other Elements to assemble a fully functional pipeline.
 
 ![pipeline](https://raw.githubusercontent.com/datajoint/element-calcium-imaging/main/images/pipeline_imaging.svg)
 
-+ We have designed three variations of the pipeline to handle different use cases. Displayed above is the default `imaging` schema.  Details on all of the `imaging` schemas can be found in the [Data Pipeline](./pipeline.md) documentation page.
++ We have designed three variations of the pipeline to handle different use cases. 
+Displayed above is the default `imaging` schema.  Details on all of the `imaging` 
+schemas can be found in the [Data Pipeline](./pipeline.md) documentation page.
 
 ## Getting Started
 
@@ -39,4 +41,5 @@ combined with other Elements to assemble a fully functional pipeline.
 
 ## Support
 
-+ If you need help getting started or run into any errors, please contact our team by email at support@datajoint.com.
\ No newline at end of file
++ If you need help getting started or run into any errors, please contact our team by 
+email at support@datajoint.com.
diff --git a/setup.py b/setup.py
index 5e2e9980..1b514a7b 100644
--- a/setup.py
+++ b/setup.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 from os import path
-
 from setuptools import find_packages, setup
+import urllib.request
 
 pkg_name = "element_calcium_imaging"
 here = path.abspath(path.dirname(__file__))
@@ -12,6 +12,14 @@
 with open(path.join(here, pkg_name, "version.py")) as f:
     exec(f.read())
 
+with urllib.request.urlopen(
+    "https://raw.githubusercontent.com/flatironinstitute/CaImAn/master/requirements.txt"
+) as f:
+    caiman_requirements = f.read().decode("UTF-8").split("\n")
+
+caiman_requirements.remove("")
+caiman_requirements.append("future")
+
 setup(
     name=pkg_name.replace("_", "-"),
     version=__version__,  # noqa: F821
@@ -32,15 +40,19 @@
         "plotly",
     ],
     extras_require={
+        "caiman_requirements": [caiman_requirements],
+        "caiman": ["caiman @ git+https://github.com/datajoint/CaImAn"],
         "elements": [
             "element-animal>=0.1.8",
             "element-event>=0.2.3",
-            "element-interface>=0.5.4",
+            "element-interface>=0.6.0",
             "element-lab>=0.3.0",
             "element-session>=0.1.5",
         ],
         "extract": ["matlabengine", "scipy"],
         "nd2": ["nd2"],
+        "sbxreader": ["sbxreader @ git+https://github.com/jcouto/sbxreader"],
+        "scanreader": ["scanreader @ git+https://github.com/atlab/scanreader"],
         "suite2p": ["suite2p[io]>=0.12.1"],
         "tests": ["pytest", "pytest-cov", "shutils"],
     },


Test patch:
diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml
index f75c71c0..8a4ec130 100644
--- a/.github/workflows/test.yaml
+++ b/.github/workflows/test.yaml
@@ -3,6 +3,8 @@ on:
   push:
   pull_request:
   workflow_dispatch:
+  schedule:
+    - cron: "0 8 * * 1"
 jobs:
   devcontainer-build:
     uses: datajoint/.github/.github/workflows/devcontainer-build.yaml@main