ethoscopy 2.0.5__tar.gz → 2.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/.github/workflows/ci.yml +13 -12
  2. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/.github/workflows/release.yml +7 -6
  3. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/CLAUDE.md +2 -2
  4. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/Dockerfile +21 -2
  5. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/docker-compose.yml +2 -2
  6. ethoscopy-2.2.0/Docker/install_r_packages.r +96 -0
  7. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/PKG-INFO +6 -9
  8. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/README.md +2 -4
  9. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/pyproject.toml +4 -5
  10. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/scripts/README.md +30 -2
  11. ethoscopy-2.2.0/scripts/publish_tutorials.py +407 -0
  12. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/behavpy_core.py +18 -9
  13. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/behavpy_plotly.py +9 -2
  14. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/behavpy_seaborn.py +2 -3
  15. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/load.py +129 -115
  16. ethoscopy-2.0.5/.claude/settings.local.json +0 -40
  17. ethoscopy-2.0.5/Docker/install_r_packages.r +0 -75
  18. ethoscopy-2.0.5/Docker/jupyterhub_data/jupyterhub.sqlite +0 -0
  19. ethoscopy-2.0.5/Docker/jupyterhub_data/jupyterhub_cookie_secret +0 -1
  20. ethoscopy-2.0.5/tasks/todo.md +0 -90
  21. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/.codecov.yml +0 -0
  22. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/.gitignore +0 -0
  23. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/.pre-commit-config.yaml +0 -0
  24. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/.env.dummy.example +0 -0
  25. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/.env.github.example +0 -0
  26. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/.env.gitlab.example +0 -0
  27. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/.env.google.example +0 -0
  28. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/.env.keycloak +0 -0
  29. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/.env.keycloak.example +0 -0
  30. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/README.md +0 -0
  31. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/README_AUTH.md +0 -0
  32. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/config/jupyterhub_config.py +0 -0
  33. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/config/users.py +0 -0
  34. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/Docker/jupyterhub_data/jupyterhub_config.py +0 -0
  35. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/LICENSE +0 -0
  36. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/TESTING.md +0 -0
  37. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/_config.yml +0 -0
  38. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/pytest.ini +0 -0
  39. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/run_tests.py +0 -0
  40. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/scripts/convert_databases.sh +0 -0
  41. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/scripts/convert_wal_to_delete.py +0 -0
  42. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/setup.py +0 -0
  43. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/__init__.py +0 -0
  44. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/analyse.py +0 -0
  45. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/behavpy.py +0 -0
  46. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/behavpy_HMM_class.py +0 -0
  47. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/behavpy_class.py +0 -0
  48. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/behavpy_draw.py +0 -0
  49. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/behavpy_periodogram_class.py +0 -0
  50. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/metadata_db.py +0 -0
  51. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/misc/__init__.py +0 -0
  52. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/misc/circadian_bars.py +0 -0
  53. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/misc/general_functions.py +0 -0
  54. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/misc/get_HMM.py +0 -0
  55. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/misc/get_tutorials.py +0 -0
  56. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/misc/hmm_functions.py +0 -0
  57. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/misc/periodogram_functions.py +0 -0
  58. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/src/ethoscopy/misc/validate_datetime.py +0 -0
  59. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/__init__.py +0 -0
  60. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/conftest.py +0 -0
  61. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/data/README.md +0 -0
  62. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/data/test_ethoscope.db +0 -0
  63. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_analyse.py +0 -0
  64. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_baseline_enhancements.py +0 -0
  65. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_behavpy.py +0 -0
  66. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_behavpy_core_simple.py +0 -0
  67. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_compatibility_classes.py +0 -0
  68. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_general_functions.py +0 -0
  69. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_get_tutorials.py +0 -0
  70. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_load.py +0 -0
  71. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_load_comprehensive.py +0 -0
  72. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_load_metadata_fixes.py +0 -0
  73. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tests/test_load_optimizations.py +0 -0
  74. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tutorial_notebook/1_Overview_tutorial.ipynb +0 -0
  75. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tutorial_notebook/2_HMM_tutorial.ipynb +0 -0
  76. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tutorial_notebook/3_Circadian_tutorial.ipynb +0 -0
  77. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tutorial_notebook/4_Navigating_db_tutorial.ipynb +0 -0
  78. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tutorial_notebook/5_Ethoscopy_catch22_tutorial.ipynb +0 -0
  79. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tutorial_notebook/6_Ethoscopy_to_hctsa_tutorial.ipynb +0 -0
  80. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tutorial_notebook/ethoscope_db.csv +0 -0
  81. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tutorial_notebook/jones_et_al_metadata.csv +0 -0
  82. {ethoscopy-2.0.5 → ethoscopy-2.2.0}/tutorial_notebook/notebook_paper.ipynb +0 -0
@@ -13,19 +13,20 @@ jobs:
13
13
  test:
14
14
  runs-on: ubuntu-latest
15
15
  strategy:
16
+ fail-fast: false
16
17
  matrix:
17
- python-version: ['3.10', '3.11', '3.12']
18
+ python-version: ['3.12']
18
19
 
19
20
  steps:
20
21
  - uses: actions/checkout@v4
21
22
 
22
23
  - name: Set up Python ${{ matrix.python-version }}
23
- uses: actions/setup-python@v4
24
+ uses: actions/setup-python@v5
24
25
  with:
25
26
  python-version: ${{ matrix.python-version }}
26
27
 
27
28
  - name: Cache pip dependencies
28
- uses: actions/cache@v3
29
+ uses: actions/cache@v4
29
30
  with:
30
31
  path: ~/.cache/pip
31
32
  key: ${{ runner.os }}-pip-${{ hashFiles('pyproject.toml') }}
@@ -69,10 +70,10 @@ jobs:
69
70
  steps:
70
71
  - uses: actions/checkout@v4
71
72
 
72
- - name: Set up Python 3.11
73
- uses: actions/setup-python@v4
73
+ - name: Set up Python 3.12
74
+ uses: actions/setup-python@v5
74
75
  with:
75
- python-version: '3.11'
76
+ python-version: '3.12'
76
77
 
77
78
  - name: Install dependencies
78
79
  run: |
@@ -92,10 +93,10 @@ jobs:
92
93
  steps:
93
94
  - uses: actions/checkout@v4
94
95
 
95
- - name: Set up Python 3.11
96
- uses: actions/setup-python@v4
96
+ - name: Set up Python 3.12
97
+ uses: actions/setup-python@v5
97
98
  with:
98
- python-version: '3.11'
99
+ python-version: '3.12'
99
100
 
100
101
  - name: Install build dependencies
101
102
  run: |
@@ -122,10 +123,10 @@ jobs:
122
123
  steps:
123
124
  - uses: actions/checkout@v4
124
125
 
125
- - name: Set up Python 3.11
126
- uses: actions/setup-python@v4
126
+ - name: Set up Python 3.12
127
+ uses: actions/setup-python@v5
127
128
  with:
128
- python-version: '3.11'
129
+ python-version: '3.12'
129
130
 
130
131
  - name: Install dependencies
131
132
  run: |
@@ -11,14 +11,15 @@ jobs:
11
11
  test:
12
12
  runs-on: ubuntu-latest
13
13
  strategy:
14
+ fail-fast: false
14
15
  matrix:
15
- python-version: ['3.10', '3.11', '3.12']
16
+ python-version: ['3.12']
16
17
 
17
18
  steps:
18
19
  - uses: actions/checkout@v4
19
20
 
20
21
  - name: Set up Python ${{ matrix.python-version }}
21
- uses: actions/setup-python@v4
22
+ uses: actions/setup-python@v5
22
23
  with:
23
24
  python-version: ${{ matrix.python-version }}
24
25
 
@@ -30,7 +31,7 @@ jobs:
30
31
 
31
32
  - name: Run tests
32
33
  run: |
33
- python -m pytest tests/ -v --cov=ethoscopy -m "not slow"
34
+ python -m pytest tests/ -v --cov=ethoscopy -m "unit or integration"
34
35
 
35
36
  build-and-publish:
36
37
  needs: test
@@ -39,10 +40,10 @@ jobs:
39
40
  steps:
40
41
  - uses: actions/checkout@v4
41
42
 
42
- - name: Set up Python 3.11
43
- uses: actions/setup-python@v4
43
+ - name: Set up Python 3.12
44
+ uses: actions/setup-python@v5
44
45
  with:
45
- python-version: '3.11'
46
+ python-version: '3.12'
46
47
 
47
48
  - name: Install build dependencies
48
49
  run: |
@@ -9,7 +9,7 @@ Ethoscopy is a Python data analysis toolbox for behavioral time series data from
9
9
  ## Development Environment
10
10
 
11
11
  ### Python Environment
12
- - **Use Python 3.10+** (project requires >=3.10,<4.0)
12
+ - **Use Python 3.12+** (project requires >=3.12,<4.0)
13
13
  - **Always use virtual environment** (`.venv` as mentioned in user's global instructions)
14
14
  - **Install in development mode**: `pip install -e .`
15
15
 
@@ -21,7 +21,7 @@ Ethoscopy is a Python data analysis toolbox for behavioral time series data from
21
21
  ### Key Dependencies
22
22
  - Core: pandas >=2.2.2, numpy >=2.0.0
23
23
  - Visualization: plotly >=5.22.0, seaborn >=0.13.2
24
- - Analysis: hmmlearn >=0.3.2, astropy >=6.1, pywavelets >=1.6.0
24
+ - Analysis: hmmlearn >=0.3.2, astropy >=7.0, pywavelets >=1.6.0
25
25
  - Dev: ipykernel for Jupyter notebook support
26
26
 
27
27
  ## Build and Development Commands
@@ -1,5 +1,5 @@
1
1
  # Dockerfile for jupyter-rethomics
2
- ARG JUPYTER_HUB_TAG=5.3.0
2
+ ARG JUPYTER_HUB_TAG=5.4.0
3
3
  FROM jupyterhub/jupyterhub:${JUPYTER_HUB_TAG}
4
4
 
5
5
  # ============================================================================
@@ -25,6 +25,16 @@ RUN apt-get update && \
25
25
  libtiff-dev \
26
26
  libxml2-dev \
27
27
  libpam0g-dev \
28
+ libssl-dev \
29
+ libgit2-dev \
30
+ libssh2-1-dev \
31
+ libfreetype6-dev \
32
+ libpng-dev \
33
+ libjpeg-dev \
34
+ libwebp-dev \
35
+ libcap-dev \
36
+ python3-dev \
37
+ pkg-config \
28
38
  wget \
29
39
  lsb-release \
30
40
  software-properties-common \
@@ -77,9 +87,18 @@ RUN pip3 install \
77
87
  seaborn \
78
88
  bokeh \
79
89
  lifelines \
90
+ ipywidgets \
91
+ ipympl \
80
92
  opencv-python \
81
93
  mysql-connector \
82
- ethoscopy
94
+ scikit-learn \
95
+ statsmodels \
96
+ pingouin \
97
+ openpyxl \
98
+ pyarrow \
99
+ tqdm \
100
+ jupyterlab-git \
101
+ ethoscopy==2.1.0
83
102
  # pycatch22
84
103
 
85
104
  # Pre-populate tutorial datasets inside the installed package so non-root
@@ -5,8 +5,8 @@ services:
5
5
  context: .
6
6
  dockerfile: Dockerfile
7
7
  args:
8
- JUPYTER_HUB_TAG: ${JUPYTER_HUB_TAG:-5.3.0}
9
- image: ggilestro/ethoscope-lab:${ETHOSCOPE_LAB_TAG:-1.1}
8
+ JUPYTER_HUB_TAG: ${JUPYTER_HUB_TAG:-5.4.0}
9
+ image: ggilestro/ethoscope-lab:${ETHOSCOPE_LAB_TAG:-1.2}
10
10
  container_name: ethoscope-lab
11
11
  ports:
12
12
  - 8082:8000
@@ -0,0 +1,96 @@
1
+ #!/bin/Rscript
2
+
3
+ # Parallelise source compilation across every core the builder exposes.
4
+ options(Ncpus = max(1L, parallel::detectCores()))
5
+
6
+ # The CRAN cloud mirror is a CDN and is faster + more reliable than regional hosts.
7
+ cran_repo <- "https://cloud.r-project.org"
8
+
9
+ install.packages(
10
+ c(
11
+ 'BiocManager',
12
+ 'caTools',
13
+ 'callr',
14
+ 'caret',
15
+ 'cowplot',
16
+ 'crayon',
17
+ 'curl',
18
+ 'DescTools',
19
+ 'devtools',
20
+ 'digest',
21
+ 'dplyr',
22
+ 'EnvStats',
23
+ 'forecast',
24
+ 'formatR',
25
+ 'ggplot2',
26
+ 'ggpubr',
27
+ 'ggtern',
28
+ 'ggthemes',
29
+ 'ggrepel',
30
+ 'ggseas',
31
+ 'gh',
32
+ 'git2r',
33
+ 'httr',
34
+ 'Hmisc',
35
+ 'IRkernel',
36
+ 'nycflights13',
37
+ 'openssl',
38
+ 'plotly',
39
+ 'plyr',
40
+ 'randomForest',
41
+ 'RCurl',
42
+ 'remotes',
43
+ 'reshape2',
44
+ 'rlang',
45
+ 'rmarkdown',
46
+ 'RSQLite',
47
+ 'Rtsne',
48
+ 'selectr',
49
+ 'shiny',
50
+ 'svglite',
51
+ 'stringi',
52
+ 'stringr',
53
+ 'survminer',
54
+ 'tictoc',
55
+ 'tidyr',
56
+ 'tidyverse',
57
+ 'usethis',
58
+ 'uuid',
59
+ 'wesanderson',
60
+ 'xgboost'
61
+ ),
62
+ repos = cran_repo
63
+ )
64
+
65
+ # install.packages() does not abort on a failed package; check the ones we
66
+ # actually need downstream so the build fails loudly here instead of at the
67
+ # next library() call with a confusing "no package called 'devtools'" error.
68
+ required <- c("devtools", "IRkernel", "BiocManager")
69
+ missing <- required[!vapply(required, requireNamespace, logical(1), quietly = TRUE)]
70
+ if (length(missing) > 0) {
71
+ stop(
72
+ "Required R packages failed to install: ",
73
+ paste(missing, collapse = ", "),
74
+ ". Check the install.packages() output above for the underlying error ",
75
+ "(usually a missing system -dev package)."
76
+ )
77
+ }
78
+
79
+ # Install rethomics
80
+ install.packages(
81
+ c('behavr',
82
+ 'ggetho',
83
+ 'damr',
84
+ # 'scopr',
85
+ 'sleepr',
86
+ 'zeitgebr'
87
+ ),
88
+ repos = cran_repo
89
+ )
90
+
91
+ # As of Jan 2024 scopr does not seem to be on CRAN for whatever reason so we
92
+ # need to install from github.
93
+ library(devtools)
94
+ devtools::install_github("rethomics/scopr")
95
+
96
+ IRkernel::installspec(user = FALSE)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ethoscopy
3
- Version: 2.0.5
3
+ Version: 2.2.0
4
4
  Summary: "A python based toolkit to download and anlyse data from the Ethoscope hardware system."
5
5
  Author-email: Lblackhurst29 <lblackhurst29@gmail.com>
6
6
  License-File: LICENSE
@@ -9,13 +9,11 @@ Classifier: Intended Audience :: Science/Research
9
9
  Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
10
10
  Classifier: Operating System :: OS Independent
11
11
  Classifier: Programming Language :: Python :: 3
12
- Classifier: Programming Language :: Python :: 3.10
13
- Classifier: Programming Language :: Python :: 3.11
14
12
  Classifier: Programming Language :: Python :: 3.12
15
13
  Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
16
14
  Classifier: Topic :: Scientific/Engineering :: Information Analysis
17
- Requires-Python: <4.0,>=3.10
18
- Requires-Dist: astropy<7.0,>=6.1
15
+ Requires-Python: <4.0,>=3.12
16
+ Requires-Dist: astropy<8.0,>=7.0
19
17
  Requires-Dist: colour<0.2.0,>=0.1.5
20
18
  Requires-Dist: hmmlearn<0.4.0,>=0.3.2
21
19
  Requires-Dist: nbformat<6.0.0,>=5.10.4
@@ -25,6 +23,7 @@ Requires-Dist: plotly<6.0.0,>=5.22.0
25
23
  Requires-Dist: pywavelets<2.0.0,>=1.6.0
26
24
  Requires-Dist: seaborn<0.14.0,>=0.13.2
27
25
  Requires-Dist: tabulate<0.10.0,>=0.9.0
26
+ Requires-Dist: tqdm<5.0,>=4.66
28
27
  Provides-Extra: dev
29
28
  Requires-Dist: black<25.0.0,>=24.0.0; extra == 'dev'
30
29
  Requires-Dist: ipykernel<7.0.0,>=6.29.5; extra == 'dev'
@@ -42,14 +41,12 @@ Description-Content-Type: text/markdown
42
41
  [![CI/CD Pipeline](https://github.com/gilestrolab/ethoscopy/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/gilestrolab/ethoscopy/actions/workflows/ci.yml)
43
42
  [![codecov](https://codecov.io/gh/gilestrolab/ethoscopy/branch/main/graph/badge.svg)](https://codecov.io/gh/gilestrolab/ethoscopy)
44
43
  [![PyPI version](https://img.shields.io/pypi/v/ethoscopy.svg)](https://pypi.org/project/ethoscopy/)
45
- [![Python versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue.svg)](https://pypi.org/project/ethoscopy/)
44
+ [![Python versions](https://img.shields.io/badge/python-3.12-blue.svg)](https://pypi.org/project/ethoscopy/)
46
45
  [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
47
46
 
48
47
  A data-analysis toolbox utilising Pandas, Seaborn, and Plotly to curate, clean, analyse, and visualise behavioural time series data. Whilst the toolbix was created around the data produced from an Ethoscope (a Drosophila monitoring system), if the users data follows the same structure for time series data all methods can be utilised.
49
48
 
50
- <del> Head to the [tutorial](https://bookstack.lab.gilest.ro/books/ethoscopy) for an in-depth walk through. </del>
51
- - currently the above tutorial is out of date. Use the jupyter notebooks to learn how to use the package
52
- - I promise to update the tutorial soon so it is aligned with the 2.0 version
49
+ Head to the [tutorial](https://bookstack.lab.gilest.ro/books/ethoscopy) for an in-depth walk through. The Jupyter notebooks in [`tutorial_notebook/`](tutorial_notebook/) are the authoritative, runnable examples.
53
50
 
54
51
  For more information on the Ethoscope system, click [here](https://www.notion.so/The-ethoscope-60952be38787404095aa99be37c42a27)
55
52
  - If using in conjenction with Ethoscope data this software contains functions for loading the Ethoscope data into ethocopy from .db files both locally and in remote ftp servers.
@@ -3,14 +3,12 @@
3
3
  [![CI/CD Pipeline](https://github.com/gilestrolab/ethoscopy/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/gilestrolab/ethoscopy/actions/workflows/ci.yml)
4
4
  [![codecov](https://codecov.io/gh/gilestrolab/ethoscopy/branch/main/graph/badge.svg)](https://codecov.io/gh/gilestrolab/ethoscopy)
5
5
  [![PyPI version](https://img.shields.io/pypi/v/ethoscopy.svg)](https://pypi.org/project/ethoscopy/)
6
- [![Python versions](https://img.shields.io/badge/python-3.10%20%7C%203.11%20%7C%203.12-blue.svg)](https://pypi.org/project/ethoscopy/)
6
+ [![Python versions](https://img.shields.io/badge/python-3.12-blue.svg)](https://pypi.org/project/ethoscopy/)
7
7
  [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
8
8
 
9
9
  A data-analysis toolbox utilising Pandas, Seaborn, and Plotly to curate, clean, analyse, and visualise behavioural time series data. Whilst the toolbix was created around the data produced from an Ethoscope (a Drosophila monitoring system), if the users data follows the same structure for time series data all methods can be utilised.
10
10
 
11
- <del> Head to the [tutorial](https://bookstack.lab.gilest.ro/books/ethoscopy) for an in-depth walk through. </del>
12
- - currently the above tutorial is out of date. Use the jupyter notebooks to learn how to use the package
13
- - I promise to update the tutorial soon so it is aligned with the 2.0 version
11
+ Head to the [tutorial](https://bookstack.lab.gilest.ro/books/ethoscopy) for an in-depth walk through. The Jupyter notebooks in [`tutorial_notebook/`](tutorial_notebook/) are the authoritative, runnable examples.
14
12
 
15
13
  For more information on the Ethoscope system, click [here](https://www.notion.so/The-ethoscope-60952be38787404095aa99be37c42a27)
16
14
  - If using in conjenction with Ethoscope data this software contains functions for loading the Ethoscope data into ethocopy from .db files both locally and in remote ftp servers.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "ethoscopy"
3
- version = "2.0.5"
3
+ version = "2.2.0"
4
4
  description = "\"A python based toolkit to download and anlyse data from the Ethoscope hardware system.\""
5
5
  authors = [{name = "Lblackhurst29",email = "lblackhurst29@gmail.com"}]
6
6
  readme = "README.md"
@@ -13,18 +13,17 @@ dependencies = [
13
13
  "colour>=0.1.5,<0.2.0",
14
14
  "hmmlearn>=0.3.2,<0.4.0",
15
15
  "pywavelets>=1.6.0,<2.0.0",
16
- "astropy>=6.1,<7.0",
16
+ "astropy>=7.0,<8.0",
17
17
  "nbformat>=5.10.4,<6.0.0",
18
+ "tqdm>=4.66,<5.0",
18
19
  ]
19
- requires-python = ">=3.10,<4.0"
20
+ requires-python = ">=3.12,<4.0"
20
21
  classifiers = [
21
22
  "Development Status :: 4 - Beta",
22
23
  "Intended Audience :: Science/Research",
23
24
  "License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
24
25
  "Operating System :: OS Independent",
25
26
  "Programming Language :: Python :: 3",
26
- "Programming Language :: Python :: 3.10",
27
- "Programming Language :: Python :: 3.11",
28
27
  "Programming Language :: Python :: 3.12",
29
28
  "Topic :: Scientific/Engineering :: Bio-Informatics",
30
29
  "Topic :: Scientific/Engineering :: Information Analysis",
@@ -1,6 +1,34 @@
1
- # Ethoscopy Database Utility Scripts
1
+ # Ethoscopy Utility Scripts
2
2
 
3
- This directory contains utility scripts for managing and maintaining ethoscope SQLite databases.
3
+ This directory contains helper scripts used for documentation, deployment and database maintenance around ethoscopy.
4
+
5
+ ## Publishing tutorial notebooks to BookStack
6
+
7
+ ### publish_tutorials.py
8
+
9
+ Executes a Jupyter tutorial notebook against a clean seaborn kernel, strips the Plotly JS blobs that nbconvert would otherwise embed as multi-megabyte text outputs, uploads the resulting PNGs to BookStack's image gallery and rewrites the markdown to reference the uploaded URLs. Creates or updates a BookStack page in-place.
10
+
11
+ **Usage:**
12
+
13
+ ```bash
14
+ # Update an existing BookStack page
15
+ python3 scripts/publish_tutorials.py tutorial_notebook/1_Overview_tutorial.ipynb --page-id 16
16
+
17
+ # Create a new page under a given book
18
+ python3 scripts/publish_tutorials.py tutorial_notebook/3_Circadian_tutorial.ipynb \
19
+ --create --book-id 1 --title "Tutorial 3 — Circadian analysis"
20
+
21
+ # Point at a specific credentials file (otherwise ~/Code/dockers/MCPs/.env is tried,
22
+ # and BOOKSTACK_BASE_URL / BOOKSTACK_API_TOKEN in the environment win if set)
23
+ python3 scripts/publish_tutorials.py … --env-file /path/to/.env
24
+ ```
25
+
26
+ **Requirements:**
27
+ - `jupyter nbconvert` with a kernel that has `ethoscopy` installed (defaults to `python3`)
28
+ - `BOOKSTACK_BASE_URL` and `BOOKSTACK_API_TOKEN` (in env or `.env` file)
29
+ - `requests` (`pip install requests` if not already present)
30
+
31
+ **What it does NOT do:** re-order existing tutorial pages, move pages between books, or touch the source notebook on disk. All work happens in a scratch dir under `/tmp/ethoscopy_publish_tutorials/<stem>/`.
4
32
 
5
33
  ## Database Journal Mode Conversion
6
34