diff --git a/.github/workflows/test_and_deploy.yml b/.github/workflows/test_and_deploy.yml index a3e0948..89e5e0c 100644 --- a/.github/workflows/test_and_deploy.yml +++ b/.github/workflows/test_and_deploy.yml @@ -36,6 +36,14 @@ jobs: - os: windows-latest python-version: "3.10" steps: + # Cache the test data to avoid re-downloading + - name: Cache Test Data + uses: actions/cache@v3 + with: + path: ${{ github.workspace }}/.WAZP/* + key: cached-test-data + enableCrossOsArchive: true + # A hack because chrome isn't in the PATH on Windows - name: Fix Chrome application path on Windows if: matrix.os == 'windows-latest' diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 2c61a9c..d9e5035 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -124,6 +124,12 @@ For Windows, be sure to download the ``chromedriver_win32.zip`` file, extract th It's a good idea to test locally before pushing. Pytest will run all tests and also report test coverage. +#### Test data +For some tests, you will need to use real experimental data. +We store some sample projects in an external data repository. +See [sample projects](#sample-projects) for more information. + + ### Continuous integration All pushes and pull requests will be built by [GitHub actions](https://docs.github.com/en/actions). This will usually include linting, testing and deployment. @@ -139,7 +145,7 @@ We use [semantic versioning](https://semver.org/), which includes `MAJOR`.`MINOR * MINOR = new feature * MAJOR = breaking change -We use [`setuptools_scm`](https://github.com/pypa/setuptools_scm) to automatically version WAZP. It has been pre-configured in the `pyproject.toml` file. [`setuptools_scm` will automatically infer the version using git](https://github.com/pypa/setuptools_scm#default-versioning-scheme). To manually set a new semantic version, create a tag and make sure the tag is pushed to GitHub. Make sure you commit any changes you wish to be included in this version. E.g. to bump the version to `1.0.0`: +We use [`setuptools_scm`](https://github.com/pypa/setuptools_scm) to automatically version WAZP. It has been pre-configured in the `pyproject.toml` file. `setuptools_scm` will automatically infer the version using git. To manually set a new semantic version, create a tag and make sure the tag is pushed to GitHub. Make sure you commit any changes you wish to be included in this version. E.g. to bump the version to `1.0.0`: ```sh git add . @@ -175,8 +181,6 @@ If you create a new documentation source file (e.g. `my_new_file.md` or `my_new_ my_new_file ``` - - ### Building the documentation locally We recommend that you build and view the documentation website locally, before you push it. To do so, first install the requirements for building the documentation: @@ -197,5 +201,78 @@ rm -rf docs/build sphinx-build docs/source docs/build ``` +## Sample projects + +We maintain some sample WAZP projects to be used for testing, examples and tutorials on an [external data repository](https://gin.g-node.org/SainsburyWellcomeCentre/WAZP). +Our hosting platform of choice is called [GIN](https://gin.g-node.org/) and is maintained by the [German Neuroinformatics Node](https://www.g-node.org/). +GIN has a GitHub-like interface and git-like [CLI](https://gin.g-node.org/G-Node/Info/wiki/GIN+CLI+Setup#quickstart) functionalities. + +### Project organisation + +The projects are stored in folders named after the species - e.g. `jewel-wasp` (*Ampulex compressa*). +Each species folder may contain various WAZP sample projects as zipped archives. For example, the `jewel-wasp` folder contains the following projects: +- `short-clips_raw.zip` - a project containing short ~10 second clips extracted from raw .avi files. +- `short-clips_compressed.zip` - same as above, but compressed using the H.264 codec and saved as .mp4 files. +- `entire-video_raw.zip` - a project containing the raw .avi file of an entire video, ~32 minutes long. +- `entire-video_compressed.zip` - same as above, but compressed using the H.264 codec and saved as .mp4 file. + +Each WAZP sample project has the following structure: +``` +{project-name}.zip + └── videos + ├── {video1-name}.{ext} + ├── {video1-name}.metadata.yaml + ├── {video2-name}.{ext} + ├── {video2-name}.metadata.yaml + └── ... + └── pose_estimation_results + ├── {video1-name}{model-name}.h5 + ├── {video2-name}{model-name}.h5 + └── ... + └── WAZP_config.yaml + └── metadata_fields.yaml +``` +To learn more about how the sample projects were generated, see `scripts/generate_sample_projects` in the [WAZP GitHub repository](https://github.com/SainsburyWellcomeCentre/WAZP). + +### Fetching projects +To fetch the data from GIN, we use the [pooch](https://www.fatiando.org/pooch/latest/index.html) Python package, which can download data from pre-specified URLs and store them locally for all subsequent uses. It also provides some nice utilities, like verification of sha256 hashes and decompression of archives. + +The relevant funcitonality is implemented in the `wazp.datasets.py` module. The most important parts of this module are: + +1. The `sample_projects` registry, which contains a list of the zipped projects and their known hashes. +2. The `find_sample_projects()` function, which returns the names of available projects per species, in the form of a dictionary. +3. The `get_sample_project()` function, which downloads a project (if not already cached locally), unzips it, and returns the path to the unzipped folder. + +Example usage: +```python +>>> from wazp.datasets import find_sample_projects, get_sample_project + +>>> projects_per_species = find_sample_projects() +>>> print(projects_per_species) +{'jewel-wasp': ['short-clips_raw', 'short-clips_compressed', 'entire-video_raw', 'entire-video_compressed']} + +>>> project_path = get_sample_project('jewel-wasp', 'short-clips_raw') +>>> print(project_path) +/home/user/.WAZP/sample_data/jewel-wasp/short-clips_raw +``` + +### Local storage +By default, the projects are stored in the `~/.WAZP/sample_data` folder. This can be changed by setting the `LOCAL_DATA_DIR` variable in the `wazp.datasets.py` module. + +### Adding new projects +Only core WAZP developers may add new projects to the external data repository. +To add a new poject, you will need to: + +1. Create a [GIN](https://gin.g-node.org/) account +2. Ask to be added as a collaborator on the [WAZP data repository](https://gin.g-node.org/SainsburyWellcomeCentre/WAZP) (if not already) +3. Download the [GIN CLI](https://gin.g-node.org/G-Node/Info/wiki/GIN+CLI+Setup#quickstart) and set it up with your GIN credentials, by running `gin login` in a terminal. +4. Clone the WAZP data repository to your local machine, by running `gin get SainsburyWellcomeCentre/WAZP` in a terminal. +5. Add your new projects, followed by `gin commit -m `. Make sure to follow the [project organisation](#project-organisation) as described above. Don't forget to modify the README file accordingly. +6. Upload the committed changes to the GIN repository, by running `gin upload`. Latest changes to the repository can be pulled via `gin download`. `gin sync` will synchronise the latest changes bidirectionally. +7. Determine the sha256 checksum hash of each new project archive, by running `sha256sum {project-name.zip}` in a terminal. Alternatively, you can use `pooch` to do this for you: `python -c "import pooch; pooch.file_hash('/path/to/file.zip')"`. If you wish to generate a text file containing the hashes of all the files in a given folder, you can use `python -c "import pooch; pooch.make_registry('/path/to/folder', 'hash_registry.txt')`. +8. Update the `wazp.datasets.py` module on the [WAZP GitHub repository](https://github.com/SainsburyWellcomeCentre/WAZP) by adding the new projects to the `sample_projects` registry. Make sure to include the correct sha256 hash, as determined in the previous step. Follow all the usual [guidelines for contributing code](#contributing-code). Additionally, you may want to update the scripts in `scripts/generate_sample_projects`, depending on how you generated the new projects. Make sure to test whether the new projects can be fetched successfully (see [fetching projects](#fetching-projects) above) before submitting your pull request. + +You can also perform steps 3-6 via the GIN web interface, if you prefer to avoid using the CLI. + ## Template This package layout and configuration (including pre-commit hooks and GitHub actions) have been copied from the [python-cookiecutter](https://github.com/SainsburyWellcomeCentre/python-cookiecutter) template. diff --git a/MANIFEST.in b/MANIFEST.in index cbc2ff5..2933dc0 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -4,9 +4,8 @@ include *.md recursive-include wazp/*.py recursive-include wazp/pages *.py -recursive-exclude sample_project *.avi -recursive-exclude sample_project *.h5 recursive-exclude docs * +recursive-exclude scripts * recursive-exclude * __pycache__ recursive-exclude * *.py[co] diff --git a/docs/requirements.txt b/docs/requirements.txt index b5a754c..7280978 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -3,5 +3,5 @@ myst-parser nbsphinx pydata-sphinx-theme setuptools-scm -sphinx +sphinx>=7.1 sphinx-autodoc-typehints diff --git a/docs/source/conf.py b/docs/source/conf.py index 1b92288..4a29641 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -83,12 +83,17 @@ "**/includes/**", ] +# Don't check the anchors for the following URLs during linkcheck +linkcheck_anchors_ignore_for_url = [ + "https://gin.g-node.org/G-Node/Info/wiki/", +] + # -- Options for HTML output ------------------------------------------------- # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_theme = "pydata_sphinx_theme" html_title = "wazp" -# Cutomize the theme +# Customize the theme html_theme_options = { "icon_links": [ { diff --git a/pyproject.toml b/pyproject.toml index 8fff26a..587e812 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -25,7 +25,9 @@ dependencies = [ "PyYAML", "shapely", "openpyxl", - "defusedxml" + "defusedxml", + "pooch", + "tqdm", ] classifiers = [ diff --git a/sample_project/pose_estimation_results/jwaspE_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspE_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 98e6997..0000000 Binary files a/sample_project/pose_estimation_results/jwaspE_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspE_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspE_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 0563ee6..0000000 Binary files a/sample_project/pose_estimation_results/jwaspE_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspE_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspE_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 28c898d..0000000 Binary files a/sample_project/pose_estimation_results/jwaspE_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspE_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspE_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index e6d54c9..0000000 Binary files a/sample_project/pose_estimation_results/jwaspE_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspG_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspG_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 2bf45f3..0000000 Binary files a/sample_project/pose_estimation_results/jwaspG_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspG_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspG_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 81e9ff6..0000000 Binary files a/sample_project/pose_estimation_results/jwaspG_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspG_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspG_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 00c90ba..0000000 Binary files a/sample_project/pose_estimation_results/jwaspG_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspG_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspG_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index e0888db..0000000 Binary files a/sample_project/pose_estimation_results/jwaspG_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspH_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspH_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 44fe21a..0000000 Binary files a/sample_project/pose_estimation_results/jwaspH_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspH_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspH_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 16569e1..0000000 Binary files a/sample_project/pose_estimation_results/jwaspH_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspH_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspH_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 6d3672a..0000000 Binary files a/sample_project/pose_estimation_results/jwaspH_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspH_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspH_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index b6c908c..0000000 Binary files a/sample_project/pose_estimation_results/jwaspH_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspI_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspI_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 7c01b9e..0000000 Binary files a/sample_project/pose_estimation_results/jwaspI_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspI_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspI_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index bf161a8..0000000 Binary files a/sample_project/pose_estimation_results/jwaspI_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspI_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspI_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 05edd33..0000000 Binary files a/sample_project/pose_estimation_results/jwaspI_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspI_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspI_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 963f1ba..0000000 Binary files a/sample_project/pose_estimation_results/jwaspI_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 367a0b9..0000000 Binary files a/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 14723d2..0000000 Binary files a/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index f993fca..0000000 Binary files a/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 5a1f2ed..0000000 Binary files a/sample_project/pose_estimation_results/jwaspJ_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspK_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspK_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index ecd80ef..0000000 Binary files a/sample_project/pose_estimation_results/jwaspK_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspK_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspK_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 66a4369..0000000 Binary files a/sample_project/pose_estimation_results/jwaspK_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspK_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspK_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 8f16471..0000000 Binary files a/sample_project/pose_estimation_results/jwaspK_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspK_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspK_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 385d93c..0000000 Binary files a/sample_project/pose_estimation_results/jwaspK_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspL_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspL_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index fe8fd20..0000000 Binary files a/sample_project/pose_estimation_results/jwaspL_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspL_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspL_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 7808f17..0000000 Binary files a/sample_project/pose_estimation_results/jwaspL_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspL_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspL_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 1780bf5..0000000 Binary files a/sample_project/pose_estimation_results/jwaspL_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspL_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspL_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 177a6a6..0000000 Binary files a/sample_project/pose_estimation_results/jwaspL_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspM_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspM_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 65f94b9..0000000 Binary files a/sample_project/pose_estimation_results/jwaspM_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspM_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspM_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index e858c48..0000000 Binary files a/sample_project/pose_estimation_results/jwaspM_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspM_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspM_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 6bea7f7..0000000 Binary files a/sample_project/pose_estimation_results/jwaspM_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspM_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspM_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 5f838bf..0000000 Binary files a/sample_project/pose_estimation_results/jwaspM_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspN_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspN_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 6373c89..0000000 Binary files a/sample_project/pose_estimation_results/jwaspN_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspN_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspN_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 488e03e..0000000 Binary files a/sample_project/pose_estimation_results/jwaspN_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspN_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspN_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 2eb1219..0000000 Binary files a/sample_project/pose_estimation_results/jwaspN_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspN_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspN_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index ffc10a2..0000000 Binary files a/sample_project/pose_estimation_results/jwaspN_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspO_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspO_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 04c9f9f..0000000 Binary files a/sample_project/pose_estimation_results/jwaspO_nectar-open-close_controlDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspO_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspO_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 2fa552f..0000000 Binary files a/sample_project/pose_estimation_results/jwaspO_nectar-open-close_nectar1DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspO_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspO_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index e3683ff..0000000 Binary files a/sample_project/pose_estimation_results/jwaspO_nectar-open-close_nectar2DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/pose_estimation_results/jwaspO_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 b/sample_project/pose_estimation_results/jwaspO_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 deleted file mode 100755 index 9aeb698..0000000 Binary files a/sample_project/pose_estimation_results/jwaspO_nectar-open-close_wateronly_sDLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000.h5 and /dev/null differ diff --git a/sample_project/videos/jwaspE_nectar-open-close_control.avi b/sample_project/videos/jwaspE_nectar-open-close_control.avi deleted file mode 120000 index 0c97949..0000000 --- a/sample_project/videos/jwaspE_nectar-open-close_control.avi +++ /dev/null @@ -1 +0,0 @@ -/Volumes/zoo/processed/LondonZoo/jewel-wasp_Ampulex-compressa/DLC_femaleandmale/jwasp_femaleandmale-Sanna-2022-09-12/videos/jwaspE_nectar-open-close_control.avi \ No newline at end of file diff --git a/sample_project/videos/jwaspE_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspE_nectar-open-close_control.metadata.yaml deleted file mode 100644 index 78f0ec6..0000000 --- a/sample_project/videos/jwaspE_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,48 +0,0 @@ -File: jwaspE_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: E_male -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 5/8/22 -Time_start: '11:47:53' -Date_end: 5/8/22 -Time_end: '12:19:29' -Time_recorded: 00:31:36 -Video_length: 00:31:36 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -ROIs: -- drawn_on_frame: 57000 - line_color: '#2E91E5' - name: enclosure - path: M348.0491395793499,93.62497131931165L356.4009560229445,232.82191204588906L361.9688336520076,480.5924665391969L361.9688336520076,625.3572848948373L361.9688336520076,850.8563288718926L373.1045889101338,959.4299426386231L378.67246653919693,1042.9481070745694L400.9439770554493,1073.5714340344166L690.4736137667304,1073.5714340344166L843.5902485659656,1048.5159847036325L1163.7432122370938,1037.3802294455063L1302.9401529636712,1012.3247801147224L1344.6992351816443,995.6211472275331L1366.9707456978967,917.6708604206498L1378.106500956023,811.881185468451L1389.2422562141492,736.7148374760992L1389.2422562141492,625.3572848948373L1350.2671128107074,491.72822179732304L1336.3474187380498,374.802791586998L1325.2116634799236,288.50068833652006L1322.427724665392,196.63070745697894L1289.0204588910133,65.78558317399617Z -- drawn_on_frame: 38000 - line_color: '#E15F99' - name: nectar1_box - path: M484.23300516875133,565.133184774723L483.3063124386091,605.9076649009826L487.01308335917815,624.4415195038279L489.7931615496049,634.6351395353927L495.3533179304585,639.268603186104L532.4210271361491,639.268603186104L558.3684235801323,635.5618322655349L562.0751945007014,628.1482904243968L560.2218090404169,604.054279440698L557.4417308499901,570.6933411555766L557.4417308499901,563.2797993144385Z -- drawn_on_frame: 38000 - line_color: '#1CA71C' - name: control_box - path: M756.6806678305767,278.34419881335197L761.314131481288,311.7051370984735L767.8009805922838,337.6525335424568L770.5810587827106,343.2126899233104L800.235226147263,337.6525335424568L832.6694717022423,336.7258408123146L834.5228571625267,322.8254498601806L826.1826225912464,286.68443338463237L825.2559298611042,267.22388605164485L826.1826225912464,275.5641206229252Z -- drawn_on_frame: 38000 - line_color: '#FB0D0D' - name: water_only_box - path: M1061.562576047381,566.5456378875958L1071.756196078946,619.3671235057049L1078.2430451899418,633.2675144578387L1104.190441633925,630.487436267412L1143.1115362999,628.6340508071274L1145.891614490327,623.0738944262739L1143.1115362999,602.6866543631442L1136.6246871889043,573.0324869985917L1131.991223538193,554.4986323957464Z -- drawn_on_frame: 38000 - line_color: '#DA16FF' - name: nectar2_box - path: M812.2822316391125,845.4801496604169L809.5021534486857,922.3956462622248L859.5435608763679,920.5422608019403L881.7841863997821,911.2753335005176L884.564264590209,894.5948643579569L885.4909573203512,861.2339260728354L882.7108791299245,835.2865296288521Z -- drawn_on_frame: 38000 - line_color: '#222A2A' - name: tube - path: M722.1672180890754,559.5676484911008L718.4197091286674,572.4757349102841L718.4197091286674,584.5510415604879L720.0852686666265,586.216601098447L731.7441854323404,588.2985505208959L741.3211527756054,592.0460594813039L755.0620189637682,594.1280089037529L768.3864952674413,597.4591279796712L778.7962423796859,600.3738571710996L785.4584805315224,602.8721964780383L799.1993467196852,605.7869256694668L814.1893825613174,610.7836042833442L816.6877218682562,609.1180447453851L820.0188409441744,602.0394167090587L823.7663499045824,596.2099583262018L825.0155195580518,589.1313302898755L825.4319094425416,586.216601098447Z -Events: - experiment_start: 0 - box_1_open: 25123 - box_1_closed: 50246 - experiment_end: 75369 diff --git a/sample_project/videos/jwaspE_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspE_nectar-open-close_nectar1.avi deleted file mode 100644 index 5a3183a..0000000 Binary files a/sample_project/videos/jwaspE_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspE_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspE_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index fec2787..0000000 --- a/sample_project/videos/jwaspE_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspE_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: E_male -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 5/8/22 -Time_start: '11:48:22' -Date_end: 5/8/22 -Time_end: '13:51:40' -Time_recorded: 02:03:18 -Video_length: 02:03:18 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 98026 - box_1_closed: 196052 - experiment_end: 294077 diff --git a/sample_project/videos/jwaspE_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspE_nectar-open-close_nectar2.avi deleted file mode 100644 index 7c8937a..0000000 Binary files a/sample_project/videos/jwaspE_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspE_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspE_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index d2865d2..0000000 --- a/sample_project/videos/jwaspE_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspE_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: E_male -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 5/8/22 -Time_start: '14:07:40' -Date_end: 5/8/22 -Time_end: '16:08:55' -Time_recorded: 02:01:15 -Video_length: 02:01:15 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 96402 - box_1_closed: 192805 - experiment_end: 289207 diff --git a/sample_project/videos/jwaspE_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspE_nectar-open-close_wateronly_s.avi deleted file mode 100644 index 584a62c..0000000 Binary files a/sample_project/videos/jwaspE_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspE_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspE_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index 5ae5e13..0000000 --- a/sample_project/videos/jwaspE_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,28 +0,0 @@ -File: jwaspE_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: E_male -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 5/8/22 -Time_start: '11:15:09' -Date_end: 5/8/22 -Time_end: '11:47:53' -Time_recorded: 00:32:44 -Video_length: 00:32:44 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: 'Wasps spending time on the data logger (possibly lose track - on video) - colouartion provides a preferred point for the wasp - a resource in - itself? Could try sticking the unit (or new BlueMaestro one) on wall of arena even - if halfway (same height as light readings but away from usual route of wasp?). This - was rectified by moving the iButton outside the enclosure for trials after jwasp - H. ' -Events: - experiment_start: 0 - box_1_open: 23174 - box_1_closed: 46348 - experiment_end: 69522 diff --git a/sample_project/videos/jwaspG_nectar-open-close_control.avi b/sample_project/videos/jwaspG_nectar-open-close_control.avi deleted file mode 120000 index 328d8d6..0000000 --- a/sample_project/videos/jwaspG_nectar-open-close_control.avi +++ /dev/null @@ -1 +0,0 @@ -/Volumes/zoo/processed/LondonZoo/jewel-wasp_Ampulex-compressa/DLC_femaleandmale/jwasp_femaleandmale-Sanna-2022-09-12/videos/jwaspG_nectar-open-close_control.avi \ No newline at end of file diff --git a/sample_project/videos/jwaspG_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspG_nectar-open-close_control.metadata.yaml deleted file mode 100644 index ab822ff..0000000 --- a/sample_project/videos/jwaspG_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspG_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: G_male -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 7/8/22 -Time_start: 09:55:25 -Date_end: 7/8/22 -Time_end: '10:27:01' -Time_recorded: 00:31:36 -Video_length: 00:31:36 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 25166 - box_1_closed: 50333 - experiment_end: 75499 diff --git a/sample_project/videos/jwaspG_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspG_nectar-open-close_nectar1.avi deleted file mode 100644 index 9efb166..0000000 Binary files a/sample_project/videos/jwaspG_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspG_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspG_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index 9df364c..0000000 --- a/sample_project/videos/jwaspG_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspG_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: G_male -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 7/8/22 -Time_start: '10:59:36' -Date_end: 7/8/22 -Time_end: '13:01:24' -Time_recorded: 02:01:48 -Video_length: 02:01:48 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 96840 - box_1_closed: 193680 - experiment_end: 290520 diff --git a/sample_project/videos/jwaspG_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspG_nectar-open-close_nectar2.avi deleted file mode 100644 index 58fddb2..0000000 Binary files a/sample_project/videos/jwaspG_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspG_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspG_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index 850aa21..0000000 --- a/sample_project/videos/jwaspG_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspG_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: G_male -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 7/8/22 -Time_start: '13:01:40' -Date_end: 7/8/22 -Time_end: '15:03:02' -Time_recorded: 02:01:22 -Video_length: 02:01:22 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 96493 - box_1_closed: 192987 - experiment_end: 289480 diff --git a/sample_project/videos/jwaspG_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspG_nectar-open-close_wateronly_s.avi deleted file mode 100644 index ad9c046..0000000 Binary files a/sample_project/videos/jwaspG_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspG_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspG_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index b99a57b..0000000 --- a/sample_project/videos/jwaspG_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspG_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: G_male -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 7/8/22 -Time_start: '10:27:23' -Date_end: 7/8/22 -Time_end: '10:59:02' -Time_recorded: 00:31:39 -Video_length: 00:31:39 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 24645 - box_1_closed: 49290 - experiment_end: 73934 diff --git a/sample_project/videos/jwaspH_nectar-open-close_control.avi b/sample_project/videos/jwaspH_nectar-open-close_control.avi deleted file mode 100644 index c78810f..0000000 Binary files a/sample_project/videos/jwaspH_nectar-open-close_control.avi and /dev/null differ diff --git a/sample_project/videos/jwaspH_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspH_nectar-open-close_control.metadata.yaml deleted file mode 100644 index 2b0f930..0000000 --- a/sample_project/videos/jwaspH_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,29 +0,0 @@ -File: jwaspH_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: H_male -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 9/8/22 -Time_start: '12:23:26' -Date_end: 9/8/22 -Time_end: '12:55:22' -Time_recorded: 00:31:56 -Video_length: 00:31:56 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp H was transferred to the arena by manual restraint in Jaimie's - hand (rather than using tube) - potential for effect on behaviour? Sanna checked - the iButton thermohygrologger on 15:15 9/8/22. Data appeared to remain normal once - the ibutton was moved out of the enclosure. Temperatures jumped half a degree of - Celsius for one reading (26.547C) and then returned to inside enclosure temperatures - (26.047C) while humidity stayed in its natural range of 50-67.5% (with regular fluctuations). - For subsequent trials the iButton is set up outside the enclosure. -Events: - experiment_start: 0 - box_1_open: 25400 - box_1_closed: 50800 - experiment_end: 76199 diff --git a/sample_project/videos/jwaspH_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspH_nectar-open-close_nectar1.avi deleted file mode 100644 index 9f3f615..0000000 Binary files a/sample_project/videos/jwaspH_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspH_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspH_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index 6defb47..0000000 --- a/sample_project/videos/jwaspH_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,29 +0,0 @@ -File: jwaspH_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: H_male -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 9/8/22 -Time_start: '13:00:34' -Date_end: 9/8/22 -Time_end: '14:58:34' -Time_recorded: 01:58:00 -Video_length: 01:58:00 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp H was transferred to the arena by manual restraint in Jaimie's - hand (rather than using tube) - potential for effect on behaviour? Sanna checked - the iButton thermohygrologger on 15:15 9/8/22. Data appeared to remain normal once - the ibutton was moved out of the enclosure. Temperatures jumped half a degree of - Celsius for one reading (26.547C) and then returned to inside enclosure temperatures - (26.047C) while humidity stayed in its natural range of 50-67.5% (with regular fluctuations). - For subsequent trials the iButton is set up outside the enclosure. -Events: - experiment_start: 0 - box_1_open: 93824 - box_1_closed: 187649 - experiment_end: 281473 diff --git a/sample_project/videos/jwaspH_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspH_nectar-open-close_nectar2.avi deleted file mode 100644 index bc85704..0000000 Binary files a/sample_project/videos/jwaspH_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspH_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspH_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index 54f4e3b..0000000 --- a/sample_project/videos/jwaspH_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,29 +0,0 @@ -File: jwaspH_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: H_male -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 9/8/22 -Time_start: '15:00:49' -Date_end: 9/8/22 -Time_end: '17:01:26' -Time_recorded: 02:00:37 -Video_length: 02:00:37 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp H was transferred to the arena by manual restraint in Jaimie's - hand (rather than using tube) - potential for effect on behaviour? Sanna checked - the iButton thermohygrologger on 15:15 9/8/22. Data appeared to remain normal once - the ibutton was moved out of the enclosure. Temperatures jumped half a degree of - Celsius for one reading (26.547C) and then returned to inside enclosure temperatures - (26.047C) while humidity stayed in its natural range of 50-67.5% (with regular fluctuations). - For subsequent trials the iButton is set up outside the enclosure. -Events: - experiment_start: 0 - box_1_open: 95902 - box_1_closed: 191804 - experiment_end: 287706 diff --git a/sample_project/videos/jwaspH_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspH_nectar-open-close_wateronly_s.avi deleted file mode 100644 index 1067649..0000000 Binary files a/sample_project/videos/jwaspH_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspH_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspH_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index 520db28..0000000 --- a/sample_project/videos/jwaspH_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,29 +0,0 @@ -File: jwaspH_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: H_male -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 9/8/22 -Time_start: '11:49:10' -Date_end: 9/8/22 -Time_end: '12:22:33' -Time_recorded: 00:33:23 -Video_length: 00:33:23 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp H was transferred to the arena by manual restraint in Jaimie's - hand (rather than using tube) - potential for effect on behaviour? Sanna checked - the iButton thermohygrologger on 15:15 9/8/22. Data appeared to remain normal once - the ibutton was moved out of the enclosure. Temperatures jumped half a degree of - Celsius for one reading (26.547C) and then returned to inside enclosure temperatures - (26.047C) while humidity stayed in its natural range of 50-67.5% (with regular fluctuations). - For subsequent trials the iButton is set up outside the enclosure. -Events: - experiment_start: 0 - box_1_open: 25784 - box_1_closed: 51569 - experiment_end: 77353 diff --git a/sample_project/videos/jwaspI_nectar-open-close_control.avi b/sample_project/videos/jwaspI_nectar-open-close_control.avi deleted file mode 100644 index 0fdfc0b..0000000 Binary files a/sample_project/videos/jwaspI_nectar-open-close_control.avi and /dev/null differ diff --git a/sample_project/videos/jwaspI_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspI_nectar-open-close_control.metadata.yaml deleted file mode 100644 index d5266b1..0000000 --- a/sample_project/videos/jwaspI_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspI_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: I_male -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 10/8/22 -Time_start: '11:28:12' -Date_end: 10/8/22 -Time_end: '12:00:04' -Time_recorded: 00:31:52 -Video_length: 00:31:52 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 25333 - box_1_closed: 50666 - experiment_end: 75999 diff --git a/sample_project/videos/jwaspI_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspI_nectar-open-close_nectar1.avi deleted file mode 100644 index 8efd0da..0000000 Binary files a/sample_project/videos/jwaspI_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspI_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspI_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index 5333310..0000000 --- a/sample_project/videos/jwaspI_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspI_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: I_male -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 10/8/22 -Time_start: '12:01:03' -Date_end: 10/8/22 -Time_end: '14:03:07' -Time_recorded: 02:02:04 -Video_length: 02:02:04 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 97052 - box_1_closed: 194104 - experiment_end: 291156 diff --git a/sample_project/videos/jwaspI_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspI_nectar-open-close_nectar2.avi deleted file mode 100644 index 73c4099..0000000 Binary files a/sample_project/videos/jwaspI_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspI_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspI_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index f0a8df8..0000000 --- a/sample_project/videos/jwaspI_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspI_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: I_male -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 10/8/22 -Time_start: '14:03:23' -Date_end: 10/8/22 -Time_end: '16:05:02' -Time_recorded: 02:01:39 -Video_length: 02:01:39 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 96726 - box_1_closed: 193452 - experiment_end: 290178 diff --git a/sample_project/videos/jwaspI_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspI_nectar-open-close_wateronly_s.avi deleted file mode 100644 index fe1cb34..0000000 Binary files a/sample_project/videos/jwaspI_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspI_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspI_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index da46943..0000000 --- a/sample_project/videos/jwaspI_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspI_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: I_male -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 10/8/22 -Time_start: '10:57:07' -Date_end: 10/8/22 -Time_end: '11:28:12' -Time_recorded: 00:31:05 -Video_length: 00:31:05 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 24168 - box_1_closed: 48336 - experiment_end: 72503 diff --git a/sample_project/videos/jwaspJ_nectar-open-close_control.avi b/sample_project/videos/jwaspJ_nectar-open-close_control.avi deleted file mode 100644 index e7b75a4..0000000 Binary files a/sample_project/videos/jwaspJ_nectar-open-close_control.avi and /dev/null differ diff --git a/sample_project/videos/jwaspJ_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspJ_nectar-open-close_control.metadata.yaml deleted file mode 100644 index 24067a6..0000000 --- a/sample_project/videos/jwaspJ_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspJ_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: J_female -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 11/8/22 -Time_start: '11:49:07' -Date_end: 11/8/22 -Time_end: '12:19:59' -Time_recorded: 00:30:52 -Video_length: 00:30:52 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp J did not exit her transport tube upon introduction to - the enclosure so she started her trial in her transport tube in the centre. -Events: - experiment_start: 0 - box_1_open: 24541 - box_1_closed: 49083 - experiment_end: 73624 diff --git a/sample_project/videos/jwaspJ_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspJ_nectar-open-close_nectar1.avi deleted file mode 100644 index 92b20e3..0000000 Binary files a/sample_project/videos/jwaspJ_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspJ_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspJ_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index f858d79..0000000 --- a/sample_project/videos/jwaspJ_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspJ_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: J_female -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 11/8/22 -Time_start: '12:22:29' -Date_end: 11/8/22 -Time_end: '14:23:06' -Time_recorded: 02:00:37 -Video_length: 02:00:37 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp J did not exit her transport tube upon introduction to - the enclosure so she started her trial in her transport tube in the centre. -Events: - experiment_start: 0 - box_1_open: 95896 - box_1_closed: 191793 - experiment_end: 287689 diff --git a/sample_project/videos/jwaspJ_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspJ_nectar-open-close_nectar2.avi deleted file mode 100644 index 0338b3b..0000000 Binary files a/sample_project/videos/jwaspJ_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspJ_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspJ_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index 5eeebbc..0000000 --- a/sample_project/videos/jwaspJ_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspJ_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: J_female -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 11/8/22 -Time_start: '14:23:19' -Date_end: 11/8/22 -Time_end: '16:27:14' -Time_recorded: 02:03:55 -Video_length: 02:03:55 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp J did not exit her transport tube upon introduction to - the enclosure so she started her trial in her transport tube in the centre. -Events: - experiment_start: 0 - box_1_open: 98530 - box_1_closed: 197060 - experiment_end: 295590 diff --git a/sample_project/videos/jwaspJ_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspJ_nectar-open-close_wateronly_s.avi deleted file mode 100644 index 1ca3920..0000000 Binary files a/sample_project/videos/jwaspJ_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspJ_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspJ_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index 991ea15..0000000 --- a/sample_project/videos/jwaspJ_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspJ_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: J_female -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 11/8/22 -Time_start: '11:16:01' -Date_end: 11/8/22 -Time_end: '11:48:52' -Time_recorded: 00:32:51 -Video_length: 00:32:51 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp J did not exit her transport tube upon introduction to - the enclosure so she started her trial in her transport tube in the centre. -Events: - experiment_start: 0 - box_1_open: 24088 - box_1_closed: 48177 - experiment_end: 72265 diff --git a/sample_project/videos/jwaspK_nectar-open-close_control.avi b/sample_project/videos/jwaspK_nectar-open-close_control.avi deleted file mode 100644 index d2f54cc..0000000 Binary files a/sample_project/videos/jwaspK_nectar-open-close_control.avi and /dev/null differ diff --git a/sample_project/videos/jwaspK_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspK_nectar-open-close_control.metadata.yaml deleted file mode 100644 index 5b4e7a7..0000000 --- a/sample_project/videos/jwaspK_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspK_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: K_female -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 12/8/22 -Time_start: '10:55:58' -Date_end: 12/8/22 -Time_end: '11:26:55' -Time_recorded: 00:30:57 -Video_length: 00:30:57 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 24610 - box_1_closed: 49221 - experiment_end: 73831 diff --git a/sample_project/videos/jwaspK_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspK_nectar-open-close_nectar1.avi deleted file mode 100644 index 23503b4..0000000 Binary files a/sample_project/videos/jwaspK_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspK_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspK_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index 9ca4a0a..0000000 --- a/sample_project/videos/jwaspK_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspK_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: K_female -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 12/8/22 -Time_start: '11:27:38' -Date_end: 12/8/22 -Time_end: '13:32:38' -Time_recorded: 02:05:00 -Video_length: 02:05:00 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 99379 - box_1_closed: 198758 - experiment_end: 298137 diff --git a/sample_project/videos/jwaspK_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspK_nectar-open-close_nectar2.avi deleted file mode 100644 index 38dbcdd..0000000 Binary files a/sample_project/videos/jwaspK_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspK_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspK_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index c881109..0000000 --- a/sample_project/videos/jwaspK_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspK_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: K_female -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 12/8/22 -Time_start: '13:36:18' -Date_end: 12/8/22 -Time_end: '15:37:46' -Time_recorded: 02:01:28 -Video_length: 02:01:28 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 96573 - box_1_closed: 193146 - experiment_end: 289719 diff --git a/sample_project/videos/jwaspK_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspK_nectar-open-close_wateronly_s.avi deleted file mode 100644 index 51a01ef..0000000 Binary files a/sample_project/videos/jwaspK_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspK_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspK_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index c82992b..0000000 --- a/sample_project/videos/jwaspK_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspK_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: K_female -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 12/8/22 -Time_start: '10:24:44' -Date_end: 12/8/22 -Time_end: '10:55:42' -Time_recorded: 00:30:58 -Video_length: 00:30:58 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: '-' -Events: - experiment_start: 0 - box_1_open: 23876 - box_1_closed: 47753 - experiment_end: 71629 diff --git a/sample_project/videos/jwaspL_nectar-open-close_control.avi b/sample_project/videos/jwaspL_nectar-open-close_control.avi deleted file mode 100644 index 2d6a1a5..0000000 Binary files a/sample_project/videos/jwaspL_nectar-open-close_control.avi and /dev/null differ diff --git a/sample_project/videos/jwaspL_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspL_nectar-open-close_control.metadata.yaml deleted file mode 100644 index eb17211..0000000 --- a/sample_project/videos/jwaspL_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspL_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: L_female -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 15/8/22 -Time_start: '11:40:52' -Date_end: 15/8/22 -Time_end: '12:22:23' -Time_recorded: 00:41:31 -Video_length: 00:41:31 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: FPS = 108.5311 -Events: - experiment_start: 0 - box_1_open: 90128 - box_1_closed: 180257 - experiment_end: 270385 diff --git a/sample_project/videos/jwaspL_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspL_nectar-open-close_nectar1.avi deleted file mode 100644 index 4f2aac9..0000000 Binary files a/sample_project/videos/jwaspL_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspL_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspL_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index aefc19d..0000000 --- a/sample_project/videos/jwaspL_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspL_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: L_female -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 15/8/22 -Time_start: '12:23:41' -Date_end: 15/8/22 -Time_end: '14:25:25' -Time_recorded: 02:01:44 -Video_length: 02:01:44 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: FPS = 108.5311 -Events: - experiment_start: 0 - box_1_open: 264257 - box_1_closed: 528515 - experiment_end: 792772 diff --git a/sample_project/videos/jwaspL_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspL_nectar-open-close_nectar2.avi deleted file mode 100644 index f129fca..0000000 Binary files a/sample_project/videos/jwaspL_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspL_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspL_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index bba2845..0000000 --- a/sample_project/videos/jwaspL_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspL_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: L_female -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 15/8/22 -Time_start: '14:25:41' -Date_end: 15/8/22 -Time_end: '16:30:41' -Time_recorded: 02:05:00 -Video_length: 02:05:00 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: FPS = 108.5311 -Events: - experiment_start: 0 - box_1_open: 271328 - box_1_closed: 542657 - experiment_end: 813985 diff --git a/sample_project/videos/jwaspL_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspL_nectar-open-close_wateronly_s.avi deleted file mode 100644 index 23997c4..0000000 Binary files a/sample_project/videos/jwaspL_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspL_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspL_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index 4ee1a04..0000000 --- a/sample_project/videos/jwaspL_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,23 +0,0 @@ -File: jwaspL_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: L_female -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 15/8/22 -Time_start: '11:08:26' -Date_end: 15/8/22 -Time_end: '11:40:39' -Time_recorded: 00:32:13 -Video_length: 00:32:13 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: FPS = 108.5311 -Events: - experiment_start: 0 - box_1_open: 67559 - box_1_closed: 135118 - experiment_end: 202677 diff --git a/sample_project/videos/jwaspM_nectar-open-close_control.avi b/sample_project/videos/jwaspM_nectar-open-close_control.avi deleted file mode 100644 index e67375f..0000000 Binary files a/sample_project/videos/jwaspM_nectar-open-close_control.avi and /dev/null differ diff --git a/sample_project/videos/jwaspM_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspM_nectar-open-close_control.metadata.yaml deleted file mode 100644 index 2d91fb2..0000000 --- a/sample_project/videos/jwaspM_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspM_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: M_female -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 16/8/22 -Time_start: '11:20:53' -Date_end: 16/8/22 -Time_end: '11:51:53' -Time_recorded: 00:31:00 -Video_length: 00:31:00 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: 'Jwasp M was sourced from the on-show display (all others sourced - from upstairs BUGS holding room besides jwaspO). ' -Events: - experiment_start: 0 - box_1_open: 24648 - box_1_closed: 49296 - experiment_end: 73944 diff --git a/sample_project/videos/jwaspM_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspM_nectar-open-close_nectar1.avi deleted file mode 100644 index 9b4f435..0000000 Binary files a/sample_project/videos/jwaspM_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspM_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspM_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index bcdc536..0000000 --- a/sample_project/videos/jwaspM_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspM_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: M_female -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 16/8/22 -Time_start: '11:52:14' -Date_end: 16/8/22 -Time_end: '13:55:03' -Time_recorded: 02:02:49 -Video_length: 02:02:49 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: 'Jwasp M was sourced from the on-show display (all others sourced - from upstairs BUGS holding room besides jwaspO). ' -Events: - experiment_start: 0 - box_1_open: 97637 - box_1_closed: 195275 - experiment_end: 292912 diff --git a/sample_project/videos/jwaspM_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspM_nectar-open-close_nectar2.avi deleted file mode 100644 index c28fc75..0000000 Binary files a/sample_project/videos/jwaspM_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspM_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspM_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index edfcd0c..0000000 --- a/sample_project/videos/jwaspM_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspM_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: M_female -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 16/8/22 -Time_start: '13:55:17' -Date_end: 16/8/22 -Time_end: '15:56:11' -Time_recorded: 02:00:54 -Video_length: 02:00:54 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: 'Jwasp M was sourced from the on-show display (all others sourced - from upstairs BUGS holding room besides jwaspO). ' -Events: - experiment_start: 0 - box_1_open: 96117 - box_1_closed: 192234 - experiment_end: 288350 diff --git a/sample_project/videos/jwaspM_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspM_nectar-open-close_wateronly_s.avi deleted file mode 100644 index 39ced27..0000000 Binary files a/sample_project/videos/jwaspM_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspM_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspM_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index db0e7b2..0000000 --- a/sample_project/videos/jwaspM_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspM_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: M_female -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 16/8/22 -Time_start: '10:47:42' -Date_end: 16/8/22 -Time_end: '11:20:43' -Time_recorded: 00:33:01 -Video_length: 00:33:01 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: 'Jwasp M was sourced from the on-show display (all others sourced - from upstairs BUGS holding room besides jwaspO). ' -Events: - experiment_start: 0 - box_1_open: 25254 - box_1_closed: 50508 - experiment_end: 75762 diff --git a/sample_project/videos/jwaspN_nectar-open-close_control.avi b/sample_project/videos/jwaspN_nectar-open-close_control.avi deleted file mode 100644 index cd4632e..0000000 Binary files a/sample_project/videos/jwaspN_nectar-open-close_control.avi and /dev/null differ diff --git a/sample_project/videos/jwaspN_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspN_nectar-open-close_control.metadata.yaml deleted file mode 100644 index b98b67b..0000000 --- a/sample_project/videos/jwaspN_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspN_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: N_male -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 17/8/22 -Time_start: '11:20:03' -Date_end: 17/8/22 -Time_end: '11:52:21' -Time_recorded: 00:32:18 -Video_length: 00:32:18 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp N sourced from 2.0 group - larger individual with fully - curled antennae. -Events: - experiment_start: 0 - box_1_open: 25670 - box_1_closed: 51340 - experiment_end: 77010 diff --git a/sample_project/videos/jwaspN_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspN_nectar-open-close_nectar1.avi deleted file mode 100644 index f748129..0000000 Binary files a/sample_project/videos/jwaspN_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspN_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspN_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index 5973365..0000000 --- a/sample_project/videos/jwaspN_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspN_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: N_male -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 17/8/22 -Time_start: '11:52:34' -Date_end: 17/8/22 -Time_end: '13:57:33' -Time_recorded: 02:04:59 -Video_length: 02:04:59 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp N sourced from 2.0 group - larger individual with fully - curled antennae. -Events: - experiment_start: 0 - box_1_open: 99379 - box_1_closed: 198758 - experiment_end: 298137 diff --git a/sample_project/videos/jwaspN_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspN_nectar-open-close_nectar2.avi deleted file mode 100644 index 151ea62..0000000 Binary files a/sample_project/videos/jwaspN_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspN_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspN_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index eec2cc5..0000000 --- a/sample_project/videos/jwaspN_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspN_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: N_male -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 17/8/22 -Time_start: '14:06:14' -Date_end: 17/8/22 -Time_end: '16:11:14' -Time_recorded: 02:05:00 -Video_length: 02:05:00 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp N sourced from 2.0 group - larger individual with fully - curled antennae. -Events: - experiment_start: 0 - box_1_open: 99379 - box_1_closed: 198758 - experiment_end: 298136 diff --git a/sample_project/videos/jwaspN_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspN_nectar-open-close_wateronly_s.avi deleted file mode 100644 index 79d6391..0000000 Binary files a/sample_project/videos/jwaspN_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspN_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspN_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index 5f80288..0000000 --- a/sample_project/videos/jwaspN_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,24 +0,0 @@ -File: jwaspN_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: N_male -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 17/8/22 -Time_start: '10:48:09' -Date_end: 17/8/22 -Time_end: '11:19:47' -Time_recorded: 00:31:38 -Video_length: 00:31:38 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: Jwasp N sourced from 2.0 group - larger individual with fully - curled antennae. -Events: - experiment_start: 0 - box_1_open: 24645 - box_1_closed: 49290 - experiment_end: 73934 diff --git a/sample_project/videos/jwaspO_nectar-open-close_control.avi b/sample_project/videos/jwaspO_nectar-open-close_control.avi deleted file mode 100644 index 2ac14bb..0000000 Binary files a/sample_project/videos/jwaspO_nectar-open-close_control.avi and /dev/null differ diff --git a/sample_project/videos/jwaspO_nectar-open-close_control.metadata.yaml b/sample_project/videos/jwaspO_nectar-open-close_control.metadata.yaml deleted file mode 100644 index b8756ab..0000000 --- a/sample_project/videos/jwaspO_nectar-open-close_control.metadata.yaml +++ /dev/null @@ -1,25 +0,0 @@ -File: jwaspO_nectar-open-close_control.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: O_female -Treatment: nectar-open-close_control -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 10/11/22 -Time_start: '11:15:41' -Date_end: 10/11/22 -Time_end: '11:46:41' -Time_recorded: 00:31:00 -Video_length: 00:31:00 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: 'Jwasp O sourced from on-show display (all others sourced from - upstairs BUGS holding room bestides jwaspM). Poster boards moved slightly during - the control box closing with the servo motor. ' -Events: - experiment_start: 0 - box_1_open: 18546 - box_1_closed: 37092 - experiment_end: 55637 diff --git a/sample_project/videos/jwaspO_nectar-open-close_nectar1.avi b/sample_project/videos/jwaspO_nectar-open-close_nectar1.avi deleted file mode 100644 index 12341eb..0000000 Binary files a/sample_project/videos/jwaspO_nectar-open-close_nectar1.avi and /dev/null differ diff --git a/sample_project/videos/jwaspO_nectar-open-close_nectar1.metadata.yaml b/sample_project/videos/jwaspO_nectar-open-close_nectar1.metadata.yaml deleted file mode 100644 index d85a5a5..0000000 --- a/sample_project/videos/jwaspO_nectar-open-close_nectar1.metadata.yaml +++ /dev/null @@ -1,30 +0,0 @@ -File: jwaspO_nectar-open-close_nectar1.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: O_female -Treatment: nectar-open-close_nectar1 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 10/11/22 -Time_start: '11:46:42' -Date_end: 10/11/22 -Time_end: '13:48:05' -Time_recorded: 02:01:23 -Video_length: 02:01:03 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: 'Jwasp O sourced from on-show display (all others sourced from - upstairs BUGS holding room bestides jwaspM). Poster boards moved slightly during - the control box closing with the servo motor. Timer was not fixed for this session - and therefore stopped recording 31 minutes into this condition. I (Sanna) noticed - this and restarted it 20 seconds later. I concatenated the two videos to create - the full condition. I was watching the jwasp during this time and she did not visit - any ROIs. We''re not really missing anything from that 20-second gap - however this - explains the wasps movement 31 minutes in. ' -Events: - experiment_start: 0 - box_1_open: 72396 - box_1_closed: 144792 - experiment_end: 217187 diff --git a/sample_project/videos/jwaspO_nectar-open-close_nectar2.avi b/sample_project/videos/jwaspO_nectar-open-close_nectar2.avi deleted file mode 100644 index d3de83b..0000000 Binary files a/sample_project/videos/jwaspO_nectar-open-close_nectar2.avi and /dev/null differ diff --git a/sample_project/videos/jwaspO_nectar-open-close_nectar2.metadata.yaml b/sample_project/videos/jwaspO_nectar-open-close_nectar2.metadata.yaml deleted file mode 100644 index 249f0ce..0000000 --- a/sample_project/videos/jwaspO_nectar-open-close_nectar2.metadata.yaml +++ /dev/null @@ -1,25 +0,0 @@ -File: jwaspO_nectar-open-close_nectar2.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: O_female -Treatment: nectar-open-close_nectar2 -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 10/11/22 -Time_start: '13:47:44' -Date_end: 10/11/22 -Time_end: '15:48:48' -Time_recorded: 02:01:04 -Video_length: 02:01:04 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: 'Jwasp O sourced from on-show display (all others sourced from - upstairs BUGS holding room bestides jwaspM). Poster boards moved slightly during - the control box closing with the servo motor. ' -Events: - experiment_start: 0 - box_1_open: 72400 - box_1_closed: 144800 - experiment_end: 217199 diff --git a/sample_project/videos/jwaspO_nectar-open-close_wateronly_s.avi b/sample_project/videos/jwaspO_nectar-open-close_wateronly_s.avi deleted file mode 100644 index 6dd129e..0000000 Binary files a/sample_project/videos/jwaspO_nectar-open-close_wateronly_s.avi and /dev/null differ diff --git a/sample_project/videos/jwaspO_nectar-open-close_wateronly_s.metadata.yaml b/sample_project/videos/jwaspO_nectar-open-close_wateronly_s.metadata.yaml deleted file mode 100644 index c72efed..0000000 --- a/sample_project/videos/jwaspO_nectar-open-close_wateronly_s.metadata.yaml +++ /dev/null @@ -1,25 +0,0 @@ -File: jwaspO_nectar-open-close_wateronly_s.avi -Species_name: Ampulex_compressa -Common_name: jewel_wasp -Subject: O_female -Treatment: nectar-open-close_wateronly -Treatment_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Date_start: 10/11/22 -Time_start: '10:43:35' -Date_end: 10/11/22 -Time_end: '11:14:35' -Time_recorded: 00:31:00 -Video_length: 00:31:00 -Hardware_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Software_description: Reference 'nectar-open-close.pdf' on ceph (in \zoo\raw\LondonZoo\Experiment-protocols\Jewel-wasp_Ampulex-compressa\) - or Google Drive (most up-to-date version if they are different - in Experiment Protocols\jewel-wasp_Ampulex-compressa\) -Further_description: 'Jwasp O sourced from on-show display (all others sourced from - upstairs BUGS holding room bestides jwaspM). Poster boards moved slightly during - the control box closing with the servo motor. ' -Events: - experiment_start: 0 - box_1_open: 18009 - box_1_closed: 36019 - experiment_end: 54028 diff --git a/sample_project/input_config.yaml b/scripts/generate_sample_projects/WAZP_config_template.yaml similarity index 60% rename from sample_project/input_config.yaml rename to scripts/generate_sample_projects/WAZP_config_template.yaml index 2c8dcef..41ac64b 100644 --- a/sample_project/input_config.yaml +++ b/scripts/generate_sample_projects/WAZP_config_template.yaml @@ -1,9 +1,9 @@ -videos_dir_path: ./sample_project/videos -metadata_fields_file_path: ./sample_project/metadata_fields.yaml +videos_dir_path: /path/to/videos +metadata_fields_file_path: /path/to/metadata_fields.yaml metadata_key_field_str: File -pose_estimation_results_path: ./sample_project/pose_estimation_results +pose_estimation_results_path: /path/to/pose_estimation_results model_str: DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000 -dashboard_export_data_path: ./sample_project/output +dashboard_export_data_path: /path/to/wazp_output ROI_tags: - enclosure - nectar1_box diff --git a/scripts/generate_sample_projects/file_utils.py b/scripts/generate_sample_projects/file_utils.py new file mode 100644 index 0000000..910aaba --- /dev/null +++ b/scripts/generate_sample_projects/file_utils.py @@ -0,0 +1,87 @@ +from pathlib import Path + +import yaml + + +def update_wazp_config_file( + config_file: Path, + model_str: str, + videos_dir_path: Path, + pose_estimation_results_path: Path, +): + """Update the WAZP project config file. + + Parameters + ---------- + config_file : pathlib Path + Path to WAZP project config file. + model_str : str + Name of model DLC model used for pose estimation. + videos_dir_path : pathlib Path + Path to directory containing videos. + pose_estimation_results_path : pathlib Path + Path to directory containing pose estimation results. + """ + + if not config_file.is_file(): + raise FileNotFoundError(f"File not found: {config_file}") + + with open(config_file.as_posix(), "r") as f: + yaml_dict = yaml.safe_load(f) + + yaml_dict["model_str"] = model_str + yaml_dict["videos_dir_path"] = videos_dir_path.as_posix() + yaml_dict["pose_estimation_results_path"] = pose_estimation_results_path.as_posix() + + # We assume that the metadata fields file and dashboard export data path + # are in the same directory as the config file + metadata_fields_file_path = (config_file.parent / "metadata_fields.yaml").as_posix() + yaml_dict["metadata_fields_file_path"] = metadata_fields_file_path + dashboard_export_data_path = (config_file.parent / "wazp_output").as_posix() + yaml_dict["dashboard_export_data_path"] = dashboard_export_data_path + + with open(config_file.as_posix(), "w") as f: + yaml.dump(yaml_dict, f, sort_keys=False) + + +def check_file_io_safety(input_file: Path, output_file: Path, overwrite: bool = False): + """Check if input and output files are safe to use. + + This function raises an error if: + - The input file does not exist. + - The input and output files are the same. + - The output file exists and overwrite is False. + + If the output file exists and overwrite is True, the output file is deleted to + prep for writing. + + Parameters + ---------- + input_file : pathlib Path + Path to input file. + output_file : pathlib Path + Path to output file. + overwrite : bool, optional + Whether overwriting output file is allowed, by default False + + Returns + ------- + bool + Whether it is safe to proceed with file IO. + """ + + proceed = False + if not input_file.is_file(): + raise FileNotFoundError(f"File not found: {input_file}") + elif output_file == input_file: + raise ValueError("Input and output files are the same.") + elif output_file.is_file() and not overwrite: + print(f"Output file already exists: {output_file}") + elif output_file.is_file() and overwrite: + output_file.unlink() + print(f"Deleted existing output file: {output_file}") + proceed = True + else: + proceed = True + + return proceed diff --git a/scripts/generate_sample_projects/main.py b/scripts/generate_sample_projects/main.py new file mode 100644 index 0000000..a43e4c5 --- /dev/null +++ b/scripts/generate_sample_projects/main.py @@ -0,0 +1,217 @@ +"""Generate sample projects based on the Zoo data on /ceph/zoo. + +This script can generate 4 sample projects for a given species/experiment. +The generated projects will be saved in a local data repository - DATA_REPO_LOCAL, +which should be a clone of https://gin.g-node.org/SainsburyWellcomeCentre/WAZP. + +DATA_REPO_LOCAL +└── SPECIES + ├── short-clips_raw + ├── short-clips_compressed + ├── entire-video_raw + └── entire-video_compressed + +"short-clips_raw" contains ~10s clips extracted from the input videos. +"short-clips_compressed" contains compressed versions of the clips in short-clips_raw. +"entire-video_raw" holds an entire input video (use for critical tests only). +"entire-video_compressed" contains a compressed version of the entire input video. + +Each of the above 4 sample projects has the following structure: +PROJECT + └── videos + ├── list of video files *.avi or *.mp4 + └── list of video metadata files *.metadata.yaml + └── pose_estimation_results + └── list of *.h5 files + ├── WAZP_config.yaml + └── metadata_fields.yaml + +The latter two files are created based on template files present in this directory. +""" + +import shutil +from pathlib import Path + +from file_utils import check_file_io_safety, update_wazp_config_file +from pose_utils import extract_clip_from_poses +from video_utils import compress_video, copy_entire_video, extract_clip_from_video + +############################################################################### +# Modify these variables according to your system and needs +############################################################################### + +# Path to the local data repository +# This should be a clone of https://gin.g-node.org/SainsburyWellcomeCentre/WAZP +DATA_REPO_LOCAL = Path.home() / "WAZP_sample_data" +# Shorthand for the species/experiment +SPECIES = "jewel-wasp" + +# Local path to the source experiment on /ceph/zoo +ZOO_DIR = Path( + "/media/ceph-zoo/processed/LondonZoo/" + "jewel-wasp_Ampulex-compressa/DLC_femaleandmale/" + "jwasp_femaleandmale-Sanna-2022-09-12/videos" +) + +# Whether to overwrite existing files +# When false, file copying/extraction steps are skipped if the output file exists +OVERWRITE = False + +# List of input video filenames for short clips +input_videos_for_short_clips = [ + "jwaspI_nectar-open-close_control.avi", + "jwaspI_nectar-open-close_nectar1.avi", + "jwaspK_nectar-open-close_nectar2.avi", + "jwaspK_nectar-open-close_wateronly_s.avi", +] +# Entire video to be copied +input_video_entire = ["jwaspE_nectar-open-close_control.avi"] + +# Model name used for pose estimation +model_name = "DLC_resnet50_jwasp_femaleandmaleSep12shuffle1_1000000" + +# Parameters for short clips +# unit: frames +clip_duration = 400 +start_frame = 6000 # to skip the first minutes of each video +end_frame = start_frame + clip_duration + + +############################################################################### +# The code below should work (mostly) without modification +############################################################################### + +# Get the parent directory of the current script +current_dir = Path(__file__).parent +# Path to the WAZP config file to use as a template +wazp_config_template = Path(current_dir / "WAZP_config_template.yaml") +# Path to the metadata fields file to use as a template +metadata_fields_template = Path(current_dir / "metadata_fields_template.yaml") + +# Create the output directory structure +out_dir = DATA_REPO_LOCAL / SPECIES +out_dir.mkdir(exist_ok=True, parents=True) + +project_dirs = [ + out_dir / "short-clips_raw", + out_dir / "short-clips_compressed", + out_dir / "entire-video_raw", + out_dir / "entire-video_compressed", +] + +for project_dir in project_dirs: + project_dir.mkdir(exist_ok=True) + videos_dir = (project_dir / "videos").absolute() + videos_dir.mkdir(exist_ok=True) + poses_dir = (project_dir / "pose_estimation_results").absolute() + poses_dir.mkdir(exist_ok=True) + for template in [wazp_config_template, metadata_fields_template]: + target = project_dir / f"{template.name.split('_template')[0]}.yaml" + if check_file_io_safety(template, target, overwrite=OVERWRITE): + shutil.copy(template, target) + if target == project_dir / "WAZP_config.yaml": + update_wazp_config_file( + target, + model_str=model_name, + videos_dir_path=videos_dir, + pose_estimation_results_path=poses_dir, + ) + +# Extract short clips from the supplied input videos +for input_video_name in input_videos_for_short_clips: + input_video_path = ZOO_DIR / input_video_name + input_poses_path = ZOO_DIR / f"{input_video_path.stem}{model_name}.h5" + clip_suffix = f"_clip-{start_frame}-{end_frame}" + + raw_clip_name = f"{input_video_path.stem}{clip_suffix}{input_video_path.suffix}" + raw_clip_path = out_dir / "short-clips_raw" / "videos" / raw_clip_name + compr_clip_name = raw_clip_name.replace(input_video_path.suffix, ".mp4") + compr_clip_path = out_dir / "short-clips_compressed" / "videos" / compr_clip_name + + poses_clip_filename = f"{input_video_path.stem}{clip_suffix}{model_name}.h5" + raw_poses_path = ( + out_dir / "short-clips_raw" / "pose_estimation_results" / poses_clip_filename + ) + compr_poses_path = ( + out_dir + / "short-clips_compressed" + / "pose_estimation_results" + / poses_clip_filename + ) + + # Extract raw video clip + extract_clip_from_video( + input_video=input_video_path, + output_clip=raw_clip_path, + start_frame=start_frame, + clip_duration=clip_duration, + overwrite=OVERWRITE, + copy_metadata=True, + ) + # Extract the corresponding pose estimation results + extract_clip_from_poses( + input_poses=input_poses_path, + output_poses=raw_poses_path, + start_frame=start_frame, + clip_duration=clip_duration, + overwrite=OVERWRITE, + ) + + # Compress extracted clip + compress_video( + input_video=raw_clip_path, + output_video=compr_clip_path, + codec="libx264", + crf=23, + overwrite=OVERWRITE, + copy_metadata=True, + ) + # Copy the pose estimation results clip + if check_file_io_safety(raw_poses_path, compr_poses_path, overwrite=OVERWRITE): + shutil.copy(raw_poses_path, compr_poses_path) + +# Copy entire video +for input_video_name in input_video_entire: + input_video_path = ZOO_DIR / input_video_name + input_poses_name = f"{input_video_path.stem}{model_name}.h5" + input_poses_path = ZOO_DIR / input_poses_name + + raw_video_path = out_dir / "entire-video_raw" / "videos" / input_video_name + compr_video_name = input_video_name.replace(input_video_path.suffix, ".mp4") + compr_video_path = out_dir / "entire-video_compressed" / "videos" / compr_video_name + + raw_poses_path = ( + out_dir / "entire-video_raw" / "pose_estimation_results" / input_poses_name + ) + compr_poses_path = ( + out_dir + / "entire-video_compressed" + / "pose_estimation_results" + / input_poses_name + ) + + # Copy the raw entire video + copy_entire_video( + input_video=input_video_path, + output_video=raw_video_path, + overwrite=OVERWRITE, + copy_metadata=True, + ) + # Copy the corresponding pose estimation results + if check_file_io_safety(input_poses_path, raw_poses_path, overwrite=OVERWRITE): + shutil.copy(input_poses_path, raw_poses_path) + print(f"Copied {input_poses_path} to {raw_poses_path}") + + # Compress the entire video + compress_video( + input_video=raw_video_path, + output_video=compr_video_path, + codec="libx264", + crf=23, + overwrite=OVERWRITE, + copy_metadata=True, + ) + # Copy the pose estimation results + if check_file_io_safety(raw_poses_path, compr_poses_path, overwrite=OVERWRITE): + shutil.copy(raw_poses_path, compr_poses_path) + print(f"Copied {raw_poses_path} to {compr_poses_path}") diff --git a/sample_project/metadata_fields.yaml b/scripts/generate_sample_projects/metadata_fields_template.yaml similarity index 100% rename from sample_project/metadata_fields.yaml rename to scripts/generate_sample_projects/metadata_fields_template.yaml diff --git a/scripts/generate_sample_projects/pose_utils.py b/scripts/generate_sample_projects/pose_utils.py new file mode 100644 index 0000000..239caf6 --- /dev/null +++ b/scripts/generate_sample_projects/pose_utils.py @@ -0,0 +1,105 @@ +from pathlib import Path +from typing import Optional + +import pandas as pd +from file_utils import check_file_io_safety + + +def load_poses_from_dlc(file_path: Path) -> Optional[pd.DataFrame]: + """Load pose estimation results from a DeepLabCut (DLC) files. + Files must be in .h5 format + + Parameters + ---------- + file_path : pathlib Path + Path to the file containing the DLC poses. + + Returns + ------- + pandas DataFrame + DataFrame containing the DLC poses + """ + + try: + df = pd.read_hdf(file_path, "df_with_missing") + # above line does not necessarily return a DataFrame + df = pd.DataFrame(df) + except (OSError, TypeError, ValueError) as e: + error_msg = ( + f"Could not load poses from {file_path}. " + "Please check that the file is valid and readable." + ) + raise OSError(error_msg) from e + return df + + +def save_poses_to_dlc(df: pd.DataFrame, file_path: Path): + """Save pose estimation results to a DeepLabCut (DLC) .h5 file. + Also saves the poses to a .csv file with the same name. + + Parameters + ---------- + df : pandas DataFrame + DataFrame containing the DLC poses + file_path : pathlib Path + Path to the .h5 file to save the DLC poses to. + """ + + if file_path.suffix != ".h5": + raise ValueError( + f"`file_path` must be a .h5 file, but got {file_path.suffix} instead." + ) + + try: + df.to_hdf(file_path, key="df_with_missing", mode="w") + df.to_csv(file_path.with_suffix(".csv")) + except (OSError, TypeError, ValueError) as e: + error_msg = ( + f"Could not save poses to {file_path}. " + "Please check that the file is valid and writable." + ) + raise OSError(error_msg) from e + + +def extract_clip_from_poses( + input_poses: Path, + output_poses: Path, + start_frame: int = 0, + clip_duration: int = 30, + overwrite: bool = True, +): + """Extract a clip from a pose tracks DLC .h5 file and save it to a new .h5 file. + Also saves the extracted poses to a .csv file with the same name. + + Clips are zero-indexed, i.e. the first frame is frame 0. + So if you want to extract frames 0-29, aka the first 30 frames, + you would set start_frame=0 and clip_duration=30. + + Parameters + ---------- + input_poses : pathlib Path + Path to DLC .h5 file containing the pose tracks (pose estimation results). + output_poses : pathlib Path + Path to the .h5 file to save the extracted pose tracks to. + start_frame : int, optional + Starting frame, by default 0 + clip_duration : int, optional + Clip duration in frames, by default 30 + overwrite : bool, optional + Whether overwriting output file is allowed, by default True + """ + + if check_file_io_safety(input_poses, output_poses, overwrite=overwrite): + print(f"Extracting clip from pose tracks {input_poses}...") + df = load_poses_from_dlc(input_poses) + if type(df) is pd.DataFrame: + end_frame = start_frame + clip_duration + clip = df.iloc[start_frame:end_frame] + save_poses_to_dlc(clip, output_poses) + print(f"Extracted poses for frames {start_frame}-{end_frame}.") + print(f"Saved to {output_poses}.") + else: + raise TypeError( + f"Expected DataFrame, but got {type(df)} instead. " + "Please check that the file is valid and readable." + ) diff --git a/scripts/generate_sample_projects/video_utils.py b/scripts/generate_sample_projects/video_utils.py new file mode 100644 index 0000000..3359cc8 --- /dev/null +++ b/scripts/generate_sample_projects/video_utils.py @@ -0,0 +1,255 @@ +import shutil +import sys +from pathlib import Path +from typing import Optional + +import cv2 +import ffmpeg +import yaml +from file_utils import check_file_io_safety + + +def ensure_clip_fits_in_video( + start_frame: int, + end_frame: int, + n_frames: int, +): + """Raise appropriate error if clip does not fit in video. + + Parameters + ---------- + start_frame : int + Starting frame of clip. + end_frame : int + Ending frame of clip. + n_frames : int + Number of frames in video. + """ + + if start_frame < 0: + raise ValueError("Start frame must be >= 0.") + elif start_frame >= n_frames: + raise ValueError(f"Start frame must be < number of frames ({n_frames}).") + elif end_frame > n_frames: + raise ValueError(f"End frame exceeds number of frames ({n_frames}).") + + +def copy_video_metadata_file( + input_video: Path, + output_video: Path, + overwrite: bool = True, + clear_rois: bool = True, + clear_events: bool = True, +): + """Copy YAML metadata file from one video to another. + + The metadata file is assumed to be named as {video_name}.metadata.yaml + and to be in the same directory as the video file. + This function additionally updates the copied metadata file, if necessary: + - The "File" field is updated to the match the output video file name. + - The "ROIs" and "Events" fields are cleared if requested. + + Parameters + ---------- + input_video : pathlib Path + Path to input video file. + output_video : pathlib Path + Path to output video file. + overwrite : bool, optional + Whether to overwrite the output metadata file if it already exists, + by default True + clear_rois : bool, optional + Whether to clear the "ROIs" field in the metadata file, by default True + clear_events : bool, optional + Whether to clear the "Events" field in the metadata file, by default True + """ + + input_metadata = input_video.parent / f"{input_video.stem}.metadata.yaml" + output_metadata = output_video.parent / f"{output_video.stem}.metadata.yaml" + if check_file_io_safety(input_metadata, output_metadata, overwrite=overwrite): + shutil.copy(input_metadata, output_metadata) + print(f"Copied metadata file from {input_metadata} to {output_metadata}") + + # Update the "File" field in the metadata file if necessary + # Also start with clean "ROIs" and "Events" fields + if output_video.name != input_video.name: + with open(output_metadata, "r") as f: + metadata = yaml.safe_load(f) + metadata["File"] = output_video.name + if clear_rois: + metadata["ROIs"] = "" + if clear_events: + metadata["Events"] = "" + with open(output_metadata, "w") as f: + yaml.dump(metadata, f, sort_keys=False) + print(f"Updated output metadata file: {output_metadata}") + + +def compress_video( + input_video: Path, + output_video: Optional[Path] = None, + overwrite: bool = False, + codec: str = "libx264", + crf: int = 23, + copy_metadata: bool = True, +): + """Compress a video file using ffmpeg. + + Parameters + ---------- + input_video : pathlib Path + Path to input video file. + output_video : pathlib Path, optional + Path to output video file. + If not specified, it will be the same as the input file, + but the suffix will be changed to '.mp4'. + overwrite : bool, optional + Whether to overwrite the output video file if it already exists, + by default False + codec : str, optional + ffmpeg video codec to use, by default 'libx264' + Should be one of the codecs supported by ffmpeg. + crf : int, optional + Constant Rate Factor for compression, by default 23. + Higher values mean more compression, lower values mean better quality. + copy_metadata + Whether to copy the metadata from the input video file to the output + video file, by default True. + """ + + if output_video is None: + output_video = input_video.with_suffix(".mp4") + + if check_file_io_safety(input_video, output_video, overwrite=overwrite): + print(f"Compressing video: {input_video}") + + # Get ffmpeg command + process = ffmpeg.input(input_video.as_posix(), y=None).output( + output_video.as_posix(), vcodec=codec, crf=crf, y=None + ) + try: + process.run() + except ffmpeg.Error as e: + print(e.stderr.decode(), file=sys.stderr) + raise RuntimeError("Error running ffmpeg.") from e + + print(f"Compressed video saved to: {output_video}") + + if copy_metadata: + copy_video_metadata_file(input_video, output_video, overwrite=overwrite) + + +def extract_clip_from_video( + input_video: Path, + output_clip: Path, + start_frame: int = 0, + clip_duration: int = 30, + overwrite: bool = False, + copy_metadata: bool = True, +): + """Extract a clip from a video file. + + Clips are zero-indexed, i.e. the first frame is frame 0. + So if you want to extract frames 0-29, aka the first 30 frames, + you would set start_frame=0 and clip_duration=30. + + Parameters + ---------- + input_video : pathlib Path + Path to the input video file. + output_clip : pathlib Path + Path to the output clip file. + start_frame : int, optional + Starting frame, by default 0 + clip_duration : int, optional + Clip duration in frames, by default 30 + overwrite : bool, optional + Whether to overwrite the output clip file if it already exists, + copy_metadata : bool, optional + Whether to copy the metadata from the input video file to the output + video file, by default True. + """ + + if check_file_io_safety(input_video, output_clip, overwrite=overwrite): + print(f"Extracting clip from {input_video}...") + end_frame = start_frame + clip_duration + + # initialise capture and videowriter + cap = cv2.VideoCapture(str(input_video)) + fourcc = cv2.VideoWriter_fourcc("m", "p", "4", "v") + frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) + frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) + fps = cap.get(cv2.CAP_PROP_FPS) + print(f"Frame width: {frame_width} pixels") + print(f"Frame height: {frame_height} pixels") + print(f"Frame rate: {fps} fps") + videowriter = cv2.VideoWriter( + output_clip.as_posix(), + fourcc, + fps, + (frame_width, frame_height), + ) + + # Ensure that clip fits in video + n_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) + ensure_clip_fits_in_video(start_frame, end_frame, n_frames) + + # Set capture to start frame + cap.set(cv2.CAP_PROP_POS_FRAMES, start_frame) + + # Extract clip + count = 0 + while count < end_frame: + # read frame + success_frame, frame = cap.read() + # if not successfully read, exit + if not success_frame: + print("Can't receive frame. Exiting ...") + break + # write frame to video + # if frame within clip bounds: write to video + if (count >= start_frame) and (count < end_frame): + videowriter.write(frame) + count += 1 + + # Release everything if job is finished + cap.release() + videowriter.release() + cv2.destroyAllWindows() + + print(f"Saved clip to: {output_clip}") + print(f"Clip duration: {clip_duration} frames = {clip_duration / fps:.3f} sec") + + if copy_metadata: + copy_video_metadata_file(input_video, output_clip, overwrite=overwrite) + + +def copy_entire_video( + input_video: Path, + output_video: Path, + overwrite: bool = False, + copy_metadata: bool = True, +): + """Copy an entire video file. + + Parameters + ---------- + input_video : pathlib Path + Path to input video file. + output_video : pathlib Path + Path to output video file. + overwrite : bool, optional + Whether to overwrite the output video file if it already exists, + by default False. + copy_metadata : bool, optional + Whether to copy the metadata from the input video file to the output + video file, by default True. + """ + + if check_file_io_safety(input_video, output_video, overwrite=overwrite): + shutil.copy(input_video, output_video) + msg = f"Copied {input_video} to: {output_video}" + if copy_metadata: + copy_video_metadata_file(input_video, output_video, overwrite=overwrite) + msg += ", including the metadata file." + print(msg) diff --git a/tests/test_unit/conftest.py b/tests/test_unit/conftest.py new file mode 100644 index 0000000..a5fb66e --- /dev/null +++ b/tests/test_unit/conftest.py @@ -0,0 +1,11 @@ +from pathlib import Path + +import pytest + +from wazp.datasets import get_sample_project + + +@pytest.fixture() +def sample_project() -> Path: + """Get the sample project for testing.""" + return get_sample_project("jewel-wasp", "short-clips_compressed", progressbar=True) diff --git a/tests/test_unit/test_placeholder.py b/tests/test_unit/test_placeholder.py deleted file mode 100644 index 3ada1ee..0000000 --- a/tests/test_unit/test_placeholder.py +++ /dev/null @@ -1,2 +0,0 @@ -def test_placeholder(): - assert True diff --git a/tests/test_unit/test_utils.py b/tests/test_unit/test_utils.py index 1db9f1f..e57c159 100644 --- a/tests/test_unit/test_utils.py +++ b/tests/test_unit/test_utils.py @@ -7,36 +7,42 @@ from wazp.utils import df_from_metadata_yaml_files -def get_sample_project_metadata_fields() -> dict: +@pytest.fixture +def metadata_fields(sample_project) -> dict: """Get the metadata dictionary from the sample project for testing.""" - with open("sample_project/metadata_fields.yaml") as fi: + fields_file = sample_project / "metadata_fields.yaml" + with open(fields_file) as fi: metadata_fields = yaml.safe_load(fi) return metadata_fields -def test_columns_names_and_nrows_in_df_from_metadata() -> None: +def test_columns_names_and_nrows_in_df_from_metadata( + sample_project, metadata_fields +) -> None: """Normal operation: test we can read the sample project metadata.""" - metadata_fields = get_sample_project_metadata_fields() - df_output = df_from_metadata_yaml_files("sample_project/videos", metadata_fields) + df_output = df_from_metadata_yaml_files(sample_project / "videos", metadata_fields) fields_from_yaml = set(metadata_fields) df_columns = set(df_output.columns) diff = fields_from_yaml.symmetric_difference(df_columns) + # Ignore the "ROIs" column, which is absent from the metadata_fields.yaml + if diff == {"ROIs"}: + diff = set() assert ( - fields_from_yaml == df_columns + not diff ), f"Metadata fields and df columns differ in the following fields: {diff}" - nfiles = len(glob.glob("sample_project/videos/*.yaml")) + glob_pattern = (sample_project / "videos" / "*.yaml").as_posix() + nfiles = len(glob.glob(glob_pattern)) nrows, _ = df_output.shape assert nrows == nfiles, "Number of rows in df != number of yaml files." -def test_df_from_metadata_yaml_no_metadata() -> None: +def test_df_from_metadata_yaml_no_metadata(metadata_fields) -> None: """ Test with no metadata files (expect just to create an empty dataframe with metadata_fields column headers). """ - metadata_fields = get_sample_project_metadata_fields() with tempfile.TemporaryDirectory() as empty_existing_directory: df_output = df_from_metadata_yaml_files( empty_existing_directory, metadata_fields diff --git a/wazp/datasets.py b/wazp/datasets.py new file mode 100644 index 0000000..acbe2b4 --- /dev/null +++ b/wazp/datasets.py @@ -0,0 +1,167 @@ +"""Module for fetching and loading sample datasets. + +This module provides functions for fetching and loading data used in tests, +examples, and tutorials. The data are stored in a remote repository on GIN +and are downloaded to the user's local machine the first time they are used. +""" + +from pathlib import Path + +import pooch +import yaml + +# URL to GIN data repository where the experimental data are hosted +DATA_URL = "https://gin.g-node.org/SainsburyWellcomeCentre/WAZP/raw/master" + +# Data to be downloaded and cached in ~/.WAZP/sample_data +LOCAL_DATA_DIR = Path("~", ".WAZP", "sample_data").expanduser() +LOCAL_DATA_DIR.mkdir(parents=True, exist_ok=True) + +# A pooch download manager that keeps track of available sample projects. +# The path to each file is "base_url + registry_key" +sample_projects = pooch.create( + path=LOCAL_DATA_DIR, + base_url=f"{DATA_URL}/", + registry={ + "jewel-wasp/short-clips_raw.zip": "7fab80e68af5b90a4633e886b06bebefd7d400c5d8acc23e1693ecfd8d344f0d", # noqa: E501 + "jewel-wasp/short-clips_compressed.zip": "2b4a6a4b00c6a41eae71d10e74dff61d5a2bb7d2b627db6edb59abae0e18aaee", # noqa: E501 + "jewel-wasp/entire-video_raw.zip": "f587c8e60b9df3b4664a6587a624abdcf401263b86ba0268c0b5a0f8e89f5167", # noqa: E501 + "jewel-wasp/entire-video_compressed.zip": "d2c5d4e4febc9eca1d523cb113b004fe6368a3d63bde5206cef04ef576c6a042", # noqa: E501 + }, +) + + +def find_sample_projects(registry: pooch.Pooch = sample_projects) -> dict: + """Find all available projects in the remote data repository. + + Parameters + ---------- + registry : pooch.Pooch + A pooch download manager object that keeps track of available projects. + Default: wazp.datasets.sample_projects + + Returns + ------- + dict + A dictionary with species names as keys and a list of available projects + as values. + """ + projects_per_species = {} + for key in registry.registry.keys(): + species, kind = key.split("/") + kind = kind.split(".")[0] + if species not in projects_per_species: + projects_per_species[species] = [kind] + else: + if kind not in projects_per_species[species]: + projects_per_species[species].append(kind) + + return projects_per_species + + +def get_sample_project( + species_name: str = "jewel-wasp", + project_name: str = "short-clips_compressed", + progressbar: bool = True, +) -> Path: + """Return the local path to a sample project. + + The project is downloaded from the remote data repository on GIN, unzipped + and cached under ~/.WAZP/sample_data. If the project has already been + downloaded, the cached version is used. The paths in the WAZP project config + file are updated to point to the downloaded project. + + Parameters + ---------- + species_name : str + Name of the species to download. Currently only "jewel-wasp" is available. + Default: "jewel-wasp". + project_name : str + Name of the project to download. You can find the available projects + per species by calling `wazp.datasets.find_sample_projects()`. + Default: "short-clips_compressed". + progressbar : bool + Whether to show a progress bar while downloading the data. Default: True. + + Returns + ------- + pathlib.Path + Path to the downloaded project (unzipped folder) + """ + + projects_per_species = find_sample_projects(sample_projects) + if species_name not in projects_per_species.keys(): + raise ValueError( + f"Species {species_name} not found. " + f"Available species: {projects_per_species.keys()}" + ) + if project_name not in projects_per_species[species_name]: + raise ValueError( + f"Project name {project_name} not found for species {species_name}. " + f"Available project names: {projects_per_species[species_name]}" + ) + + species_project_name = f"{species_name}/{project_name}.zip" + sample_projects.fetch( + species_project_name, + progressbar=progressbar, + processor=pooch.Unzip(extract_dir=LOCAL_DATA_DIR / species_name), + ) + + project_path = LOCAL_DATA_DIR / species_name / project_name + _update_paths_in_project_config(project_path) + return project_path + + +def _update_paths_in_project_config( + sample_project_path: Path, +): + """Update the paths in the WAZP project config file to point to the downloaded + project on the local machine. + + Parameters + ---------- + sample_project_path : pathlib Path + Path to the downloaded project (unzipped folder) on the local machine. + """ + config_file = sample_project_path / "WAZP_config.yaml" + + with open(config_file, "r") as f: + yaml_dict = yaml.safe_load(f) + + yaml_dict["videos_dir_path"] = ( + (sample_project_path / "videos").absolute().as_posix() + ) + yaml_dict["pose_estimation_results_path"] = ( + (sample_project_path / "pose_estimation_results").absolute().as_posix() + ) + yaml_dict["metadata_fields_file_path"] = ( + (sample_project_path / "metadata_fields.yaml").absolute().as_posix() + ) + yaml_dict["dashboard_export_data_path"] = ( + (sample_project_path / "wazp_output").absolute().as_posix() + ) + + with open(config_file, "w") as f: + yaml.dump(yaml_dict, f, sort_keys=False) + + +def download_all_sample_projects( + progressbar: bool = True, +): + """Download all available sample projects. This is mostly meant as a convenience + function for developers. + + Parameters + ---------- + progressbar : bool + Whether to show a progress bar while downloading the data. Default: True. + """ + projects_per_species = find_sample_projects(sample_projects) + for species_name, project_names in projects_per_species.items(): + for project_name in project_names: + get_sample_project( + species_name=species_name, + project_name=project_name, + progressbar=progressbar, + )