diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 1ffbf2da..43145628 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -4,44 +4,22 @@ -## Dataset license checklist - -**All new datasets must pass this checklist before merge.** See the -[Adding new datasets](../blob/master/README.md#adding-new-datasets-licensing-requirements) -section of the README for full details. - -- [ ] I have identified the **original source** of the dataset (URL, - paper, repository, or upload page) and recorded it in the license - file. -- [ ] I have identified the **exact license** of the dataset by reading - it at the source. I have not guessed. -- [ ] The license **permits commercial use**. Non-commercial licenses - (CC BY-NC, CC BY-NC-SA, CC BY-NC-ND, "research only", etc.) are - not accepted without explicit maintainer approval and prominent - labeling. -- [ ] The license **permits redistribution** from a BSD-licensed - project (pyvista). -- [ ] I have added a **license file** alongside the dataset: - - For a dataset in its own directory: a `LICENSE` file inside that - directory. - - For a loose file in `Data/`: a `.license` companion file. -- [ ] The license file includes: - - [ ] Source URL - - [ ] Verbatim license statement or link - - [ ] Required attribution text (if any) - - [ ] An `SPDX-License-Identifier:` line -- [ ] If the license is **ShareAlike** (CC BY-SA, ODbL, etc.), I have - prominently flagged the ShareAlike obligation so downstream users - are aware that derivatives must be re-shared under the same - license. - -## Declared license - -- **SPDX identifier:** -- **Source URL:** -- **Commercial use:** -- **Attribution required:** - -## Additional notes - - +## Dataset checklist + +Only needed if this PR adds or changes files under `Data/`. See +[CONTRIBUTING.md](https://github.com/pyvista/data/blob/master/CONTRIBUTING.md) +for the field reference. + +- [ ] I added a `[[dataset]]` block to `DATASETS.toml` for every file I added, + in alphabetical order by `name`. +- [ ] I did **not** add a `LICENSE`, `README`, `CITATION` or `.license` file + under `Data/`. +- [ ] I read the licence **at the source** and recorded it in + `SPDX-License-Identifier`. I did not guess. +- [ ] The licence permits redistribution from this repository (Apache-2.0) + and from PyVista (MIT), and permits commercial use. (Non-commercial data needs maintainer approval + and `commercial_use = false` on its `[license.*]` table.) +- [ ] If the licence requires credit, I filled in `attribution`. +- [ ] If I changed the data after downloading it, I set `modified = true` and + described the change in `modification`. +- [ ] `python tools/validate_datasets.py` passes locally. diff --git a/.github/workflows/validate-datasets.yml b/.github/workflows/validate-datasets.yml new file mode 100644 index 00000000..cf25559d --- /dev/null +++ b/.github/workflows/validate-datasets.yml @@ -0,0 +1,78 @@ +name: Validate dataset metadata + +on: + pull_request: + push: + branches: [master] + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +jobs: + validate: + name: DATASETS.toml + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@v7 + with: + filter: blob:none + persist-credentials: false + sparse-checkout-cone-mode: false + sparse-checkout: | + /* + !/Data/ + + - uses: actions/setup-python@v7 + with: + python-version: '3.12' + + - name: Validate DATASETS.toml + id: validate + shell: bash + run: | + set -o pipefail + python tools/validate_datasets.py 2>&1 | tee validation.log + + - name: Test the validator + if: always() && steps.validate.conclusion != 'skipped' + shell: bash + run: | + python -m pip install --quiet pytest + python -m pytest tools -q + + - name: Explain the failure + if: failure() && steps.validate.conclusion == 'failure' + shell: bash + run: | + { + echo '## Dataset metadata check failed' + echo + echo 'Every file under `Data/` must be described by a `[[dataset]]` block in' + echo '`DATASETS.toml`. Per-dataset licence, copying, copyright, notice, readme' + echo 'and citation files (any letter case, singular or plural, bare or with any' + echo 'extension: `LICENSE`, `LICENSE.MIT`, `COPYING`, `NOTICE`, `README.md`,' + echo '`CITATION.cff` and the like) and `.license` sidecars are not accepted' + echo 'under `Data/`: that information belongs in `DATASETS.toml`,' + echo 'which is what PyVista reads to publish provenance in the Dataset Gallery.' + echo + echo 'Run the same check locally with:' + echo + echo '```bash' + echo 'python tools/validate_datasets.py' + echo '```' + echo + echo 'Full output:' + echo + echo '```' + cat validation.log + echo '```' + echo + echo 'See [CONTRIBUTING.md](https://github.com/pyvista/data/blob/master/CONTRIBUTING.md)' + echo 'for the field reference and worked examples.' + } >> "$GITHUB_STEP_SUMMARY" diff --git a/.gitignore b/.gitignore index fb07a436..daa07e65 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ *.unzip .DS_Store +tools/__pycache__/ +.pytest_cache/ diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..6ba27efa --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,471 @@ +# Contributing a dataset + +Every file tracked under `Data/`, other than dotfiles, is described by exactly one `[[dataset]]` block in +[`DATASETS.toml`](DATASETS.toml). That file is the single source of truth for +what each dataset is, where it came from and how it may be used. PyVista will +read it through `examples.get_example(...)`, which returns an `Example` whose +`.metadata` is the dataset's record, and publish it in the +[Dataset Gallery](https://docs.pyvista.org/api/examples/dataset_gallery) once +pyvista/pyvista#9118 merges, so anything you record here is shown to everyone +who downloads the data. + +`tools/validate_datasets.py` checks the file on every pull request. Run it +yourself before pushing: + +```bash +python tools/validate_datasets.py +``` + +It needs Python 3.11 or newer, `git` on `PATH` and a git checkout, because the +list of tracked files comes from the git index; outside a checkout it prints +`Could not list the files git tracks under Data/` and exits 1. + +## Adding a dataset + +1. Put the files under `Data/`. Give a dataset with more than one file its own + directory. +2. Establish where the data came from and what its terms are, from the source + itself. See [Establishing where a dataset came from](#establishing-where-a-dataset-came-from). +3. Add a `[[dataset]]` block to `DATASETS.toml`, sorted by `name` in plain + codepoint order, with `name` as its first key. +4. If the licence is not already declared in the file, add a `[license.*]` + table for it and put the full licence text in `LICENSES/`. +5. Run the validator. + +Do **not** add a `LICENSE`, `COPYING`, `COPYRIGHT`, `NOTICE`, `README` or +`CITATION` file under `Data/`, in any letter case, singular or plural, +`LICENCE` included, bare or with any extension (`LICENSE.MIT`, `CITATION.bib`), +or with a `-` or `_` suffix and a document extension (`README-VTK`, +`readme_notes.md`); nor a `.license` REUSE sidecar. CI rejects them. +Everything they used to hold has a field in +`DATASETS.toml`: the source goes in `origin_url`, the credit line in +`attribution`, the processing you applied in `modification`, the citation in +`references`, and anything else in `notes`. + +## What a block looks like + +```toml +[[dataset]] +name = "grey_nurse_shark" +title = "Grey nurse shark" +description = "Triangulated surface mesh of a grey nurse shark, in STL format." +path = ["grey_nurse_shark/**"] +SPDX-License-Identifier = "CC-BY-SA-3.0" +provenance = "verified" +origin_url = "https://www.thingiverse.com/thing:137954" +origin_title = "Thingiverse thing:137954" +collection = "thingiverse" +authors = ["Autodesk"] +attribution = "Grey Nurse Shark, uploaded by rogerpeng1 (https://www.thingiverse.com/thing:137954), licensed under CC BY-SA." +redistributed_from = ["https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/thingiverse/Grey_Nurse_Shark.stl"] +notes = "The page's `rel=\"license\"` link names creativecommons.org/licenses/by-sa/3.0/. ShareAlike propagates: a downstream work derived from this mesh must be shared under the same licence. The uploader disclaims authorship: \"This is a scan by Autodesk obtained from the Autodesk 123D site\"." +``` + +A simple one is much shorter: + +```toml +[[dataset]] +name = "hdr_textures" +title = "HDR environment textures" +description = "High dynamic range equirectangular environment maps of a night sky over Dikhololo and of a parched canal." +path = ["dikhololo_night_4k.hdr", "parched_canal_4k.hdr"] +SPDX-License-Identifier = "CC0-1.0" +provenance = "verified" +origin_url = "https://polyhaven.com/a/dikhololo_night" +origin_title = "Poly Haven" +attribution = "Poly Haven, https://polyhaven.com/. Attribution is a courtesy, not a requirement under CC0." +``` + +## Field reference + +The file starts with `schema_version = 1`, the integer version of this format +that `tools/validate_datasets.py` understands (`1.0`, `true` and `"1"` are +rejected), followed by the `[license.*]` and `[collection.*]` tables and then +the `[[dataset]]` blocks; those four are the only top-level keys. Adding a +key or a table does not change `schema_version`; renaming, removing or +retyping one does, and because every installed PyVista reads this file from +`master` and refuses a version it does not understand, such a bump is made +together with a PyVista release that reads the new version. `name` is +the first key of every block, and blocks are sorted by `name` in plain +codepoint order. Every field has the type listed below, a key not listed here +is rejected, and no string field or array entry may be blank. `origin_url`, +every `redistributed_from` entry and every `url` must be a full `http://` or +`https://` URL. + +### Required + +| Field | Type | Meaning | +| --- | --- | --- | +| `name` | string | Unique identifier: lowercase letters, digits and underscores, starting with a letter or digit. The first key of the block. Downstream tools look datasets up by this. | +| `title` | string | Short human-readable name, shown as the gallery card heading. | +| `description` | string | One or two sentences about what the data *is*. Describe the data, not the PyVista function that loads it. | +| `path` | array of strings | Paths relative to `Data/`, at least one. Every tracked file except dotfiles must be claimed by exactly one dataset, and two patterns of one block may not match the same file. See [Path patterns](#path-patterns). | +| `SPDX-License-Identifier` | string | A well-formed [SPDX expression](https://spdx.org/licenses/): identifiers joined by `AND` or `OR`, optionally `WITH` an exception, in balanced parentheses (`MIT License` and `CC BY 4.0` are not expressions), or a `LicenseRef-*` identifier for terms SPDX does not list. Every identifier in it must resolve to a `[license.*]` table, spelled exactly as the table is. | +| `provenance` | string | `"verified"`, `"inferred"` or `"unknown"`. See below. | + +### Conditionally required + +| Field | Required when | +| --- | --- | +| `origin_url` | Always, unless `provenance = "unknown"`, which forbids it. | +| `attribution` | The licence's `attribution_required` is `true`. | +| `modification` | `modified = true`. The reverse holds too: `modification` may only be set when `modified = true`. | +| `notes` | `provenance` is not `"verified"`, the licence is `LicenseRef-Unknown`, or any licence in the expression has `share_alike = true`. | + +### Optional + +| Field | Type | Meaning | +| --- | --- | --- | +| `SPDX-FileCopyrightText` | array of strings | Copyright notices, in [REUSE](https://reuse.software) form. | +| `origin_title` | string | Human-readable name of the origin, shown next to the link. | +| `collection` | string | Key into a `[collection.*]` table, for upstreams that several datasets share. | +| `authors` | array of strings | Who made the data. | +| `redistributed_from` | array of strings | The route this copy took when it did not come straight from `origin_url`: one URL per redistributor, ordered from the origin towards this repository, each naming where that redistributor's copy can be found. The last entry is where this repository took the file from. | +| `modified` | boolean | Whether the file differs from what the source published. `true` requires `modification`. | +| `references` | array of tables | Papers to cite: `{ citation = "...", doi = "...", url = "..." }`. `citation` is required, the rest optional, and no other keys are allowed. `doi` is the bare identifier (`10.1145/237170.237270`), not a `doi.org` link; `url` is `http(s)`. | + +### `origin_url` is not a download link + +`origin_url` is the furthest upstream point you could establish: the page +that publishes the work and states its terms. It is not where this repository +serves the file from, and it is usually a page about the work rather than a +link to a file. + +When the copy here came through somewhere else, `redistributed_from` records +that route and `origin_url` still names the origin. The Stanford bunny's +origin is the Stanford scanning repository; `bunny.ply` reached this +repository through VTK Data and the decimated `Bunny.vtp` through the VTK +Examples import, and each entry writes its route down. + +Where the trail runs out at a redistributor, `origin_url` names the +redistributor and `provenance` says `inferred`, because that is genuinely as +far back as anyone got. Many entries are in that position, most of them +pointing at VTK Data or the VTK Examples. Do not dress one of those up as an +originator. + +## Choosing a `provenance` value + +This field says how confident the record is about **where the data came from**. +It says nothing about the licence: the licence's status is carried by +`SPDX-License-Identifier`, and `LicenseRef-Unknown` is how a dataset says its +terms could not be established. The two are independent: most of the Laser +Design scans have `provenance = "verified"` and `SPDX-License-Identifier = +"LicenseRef-Unknown"`, because the source is certain and grants no +redistribution rights. +Anything rendering a badge from this file should take "can I use this?" from +the licence, not from `provenance`. + +- **`"verified"`**: the source states where the data came from, or the bytes + prove it (a hash match against the upstream, an accession number in the + filename, a header the source wrote). Most new contributions should be this. +- **`"inferred"`**: the origin is a reasoned conclusion rather than something + the source states, so say what you inferred and why in `notes`. +- **`"unknown"`**: the origin could not be established. Use + `SPDX-License-Identifier = "LicenseRef-Unknown"` with it, omit `origin_url`, + and say in `notes` what you did establish, what you could not, and what a + downstream user should do. The validator enforces all three. + +A new dataset should not normally be `"unknown"`. The existing `"unknown"` +entries are historical: files inherited before this repository recorded +provenance. If you cannot establish where a dataset came from, do not add it. + +## Establishing where a dataset came from + +Every claim in `DATASETS.toml` is meant to be reproducible by someone who has +only this repository and a network connection. Record what you checked in +`notes`, so the next person can re-run it rather than re-derive it. + +**The source is the source.** A licence stated in a docstring, a README, a +sidecar file or a previous version of this table is hearsay, not evidence. +Several entries here started out wrong because each of those was copied +forward without anyone opening the page: the Nefertiti scan was recorded +non-commercial when its authors publish it under CC BY-SA 4.0, and the cow was +recorded under the collection's BSD-3-Clause when the file itself carries a +clause forbidding resale. + +These are the techniques that have actually resolved entries here, roughly in +order of how often they work. + +### Read the bytes + +More files carry their own provenance than you would expect, and it outranks +anything written about them: + +```bash +head -c 400 Data/cow.obj # OBJ, PLY, STL and PDB carry comment headers +strings Data/sphere_points.vdb | head # creator strings in binary formats +exiftool Data/puppy.jpg # camera, capture date +python -c "from PIL import Image; print(Image.open('Data/Tango/TangoIcons.png').text)" +unzip -l Data/OpenFOAM.zip # archives often ship their own LICENSE or README +``` + +`cow.obj` states a copyright and a no-resale clause. `3GQP.pdb` names its +depositors. `TangoIcons.png` carries its author in a PNG text chunk. The +`nefertiti.ply` header says VTK wrote it, which is how the conversion was +recorded. + +### Identify the file, not just the dataset + +A filename is often an accession or catalogue number that settles the licence +outright: `3GQP.pdb` is a Protein Data Bank accession, and the whole archive +is CC0. Distinctive dimensions and point counts are searchable too (a +MetaImage header carries no array name): `froggy/frog.mhd` reads +`DimSize = 500 470 136`, LBNL's `frog.hd` reads `470(r)x500(c)x136 unsigned +byte`, and the decompressed bytes match, which is how the volume was matched +to its owner. + +### Compare bytes against the upstream + +Git's blob hash is the cheapest way to prove two files are the same, and it +works across repositories without downloading either one in full: + +```bash +git hash-object Data/skybox2-negx.jpg +git -C ../VTKExamples ls-tree -r HEAD src/Testing/Data/skyboxes/skybox2/ | grep negx +``` + +That is how the `skybox2` faces, added in July 2020 with no recorded source, +were matched to `lorensen/VTKExamples`, and how fifteen groups of +byte-identical files were found recorded under two different licences in the +first version of this table. `tools/validate_datasets.py` rejects +byte-identical files whose datasets disagree on licence or provenance on +every pull request. + +### Ask when the file arrived, not when the repository was forked + +This repository is a fork of VTKData, but the tree it forked has 756 files in +it, and there are now 1261 under `Data/` (1263 tracked paths, two of them +dotfiles). A file being here is no evidence at all that it came with the +fork, and eight entries (`embryo`, `frog`, `openfoam_ensight_case`, +`perlin_noise_shader`, `pine_root_volume`, `teapot_vrml`, `vector_animation` +and `vtu_series`) were recorded under the VTK Data collection for exactly +that reason until this table was reviewed. + +```bash +git ls-tree -r --name-only 8f60d72 | grep froggy # the fork point, July 2013 +git log --diff-filter=A --follow --format='%ad %an %s' --date=short -- Data/froggy/frog.mhd +``` + +The second command dates `froggy` to April 2019 and names the commit that +brought it, "merge data files from lorensen/VTKExamples", a different +upstream with a different licence. + +### Hash against VTK's own content links + +VTK does not store its test data in git; it stores a `.sha512` file naming +each object. Those files are the authority on whether something really is VTK +test data, and they are cheap to check in bulk: + +```bash +shasum -a 512 Data/DICOMDirectory/mr.001 +cat /path/to/VTK/Testing/Data/mr.001.sha512 +``` + +A match proves Kitware distributes that exact file. It does **not** prove the +file is Kitware's to license, and no match, for a file no upstream has, is a +reason to suspect the recorded source. + +Before you conclude that a collection's notice covers a file, look for a +`readme` next to it upstream, because that is where the exception is written: + +```bash +ls /path/to/VTK/Testing/Data/skybox/ # readme.txt sits beside the six faces +cat /path/to/VTK/Testing/Data/skybox/readme.txt +``` + +That readme names Emil Persson and CC BY 3.0, and the six faces are +byte-identical to `skybox2-*.jpg` here, which this table briefly recorded as +Apache-2.0 under the collection's licence. VTK carries at least three such +exceptions beside the files themselves: the Viewpoint cow (in the file +headers), the Tango icons (`Tango/README.VTK.txt`) and this skybox +(`skybox/readme.txt`). A collection licence is the redistributor's, and it +cannot reach a third party's work. + +### Check a URL through an API, not a plain request + +Several hosts answer scripts differently from browsers, and the difference +can hide a genuine `404`. One dead source URL survived review on 64 entries +for exactly this reason: + +```bash +curl -sSI https://gitlab.kitware.com/vtk/vtk-data | head -1 +# HTTP/2 302 -- a redirect to a sign-in page, which tells you nothing + +curl -sS https://gitlab.kitware.com/api/v4/projects/vtk%2Fvtk-data +# {"message":"404 Project Not Found"} -- the project does not exist +``` + +Where a host has an API, ask the API. Checked with `curl` on 28 September +2026: gitlab.kitware.com and zenodo.org answer `200` to a plain `curl` and +`403` to a browser user agent; 3d.si.edu answers `403` to both; thingiverse.com +and sketchfab.com answer `200` to both. When a page is gone or empty, the +Wayback Machine usually still has a capture: + +```bash +curl -sSL -o /dev/null -w '%{url_effective}\n' "http://web.archive.org/web/2017/https://www.thingiverse.com/thing:1541337" +# the redirect lands on the capture nearest to 2017; the availability API +# (archive.org/wayback/available?url=...) sometimes answers with no snapshots +# for a page that has hundreds, so do not take an empty answer as final +``` + +### Read the version out of the licence link + +A page that says "Creative Commons - Attribution" has not told you the +version, and the version changes the terms. Thingiverse encodes it in +`rel="license"` on older pages and in schema.org JSON-LD on newer ones, and +the label-to-version mapping changed over time: the same wording meant 3.0 in +2016 and 4.0 by 2021. Inferring from the upload date gets it wrong; reading +the link gets it right. + +```bash +curl -sSL "http://web.archive.org/web/2017/https://www.thingiverse.com/thing:1541337" \ + | grep -o 'rel="license"[^>]*' +``` + +### Read the whole discussion, not just the pull request body + +A file usually arrives through a pull request, and the sentence that says +where it came from is as often in a comment as in the body. `EnSight.zip` was +first recorded here as VTK data; the contributor had said plainly in the issue +that he could find no EnSight sample under an open licence and so converted +one of his own OpenFOAM runs. + +```bash +gh api repos/pyvista/pyvista/issues/722/comments --jq '.[] | "\(.user.login): \(.body)"' +``` + +`wavy.zip` is the same story in the other direction: the pull request that +added it publishes the PyVista script that generated it, which is why it is +recorded as MIT rather than as ParaView's. + +### When you cannot establish it + +Say so. `SPDX-License-Identifier = "LicenseRef-Unknown"` with `notes` +describing what you did establish, what you could not, and what a downstream +user should do is a complete, useful record. A guess dressed as a fact is not, +and it is worse than the gap because nobody re-checks it. + +## Path patterns + +`path` values are matched against paths relative to `Data/`, with `/` as the +only separator. Downstream tools resolve a file to its dataset with these +rules, so they are part of the format rather than an implementation detail: + +| Pattern | Matches | +| --- | --- | +| `bunny.ply` | that one file | +| `skybox/*.jpg` | the `.jpg` files directly in `skybox/`, not in subdirectories | +| `skybox/**` | everything under `skybox/`, at any depth | +| `sim_?.vtu` | `sim_1.vtu` but not `sim_12.vtu`, and never across a `/` | +| `dir/**/x.vtk` | `dir/x.vtk`, `dir/a/x.vtk` and deeper: an interior `**` also matches zero directories | +| `**/x.vtk` | `x.vtk` at any depth, including directly under `Data/` | +| `sim_?/**` | everything under `sim_1/`, `sim_2/` and so on: a wildcard before `/**` is honoured | + +`*` and `?` stop at a separator; only `**` crosses one. Brackets are literal +characters, not character classes. A pattern is a relative path with `/` as +the separator (no leading, trailing or doubled `/`, no backslash); it may not +be empty, listed twice in one block, or wildcards only (`**`, `*`, `?`, +`*/**`), and a pattern that matches no tracked file is rejected. `**` is only +recognised as a whole segment; `sim**` is rejected. Prefer an +explicit file list when a dataset has a handful of files, and `dir/**` when it +owns a whole directory: `dir/*` will not claim files added in a subdirectory +later, and the validator will report them as uncovered. + +## Licence requirements + +A new dataset needs a licence that permits redistribution from this repository +and from PyVista, which is MIT. The root `LICENSE` here is Apache-2.0 and +covers the tooling and the imported VTK Examples material, not `Data/`. It normally also needs to +permit commercial use. Non-commercial licences +(CC BY-NC and its variants, "research use only", "personal use only") are +accepted only with explicit maintainer approval, and their `[license.*]` table +must record `commercial_use = false` so the gallery can flag them. + +ShareAlike licences (CC BY-SA, ODbL) are accepted, but record +`share_alike = true` and say so in `notes`, which the validator requires on +every dataset under such a licence: a downstream user who derives new work +from the dataset inherits the obligation. + +Read the licence out of the page rather than off its label. A Thingiverse page +shows a version-less "Creative Commons - Attribution", but names the version in +its `rel="license"` link (2016-era pages) or its schema.org JSON-LD (2021 and +later), and the mapping changed over time, so the upload date is not a +substitute. When the live page is a JavaScript shell, read an archived capture. + +Prefer CC0 and public-domain sources. [Smithsonian Open Access](https://3d.si.edu/cc0), +[Poly Haven](https://polyhaven.com/) and US government works are all good +places to look. + +## Adding a licence + +Every `[license.*]` table records `text_source`: where the text in `file` +came from. For a licence SPDX lists, that is its entry in the SPDX License +List, and the text in `LICENSES/` is the canonical text unchanged. Anyone can +check that for themselves: + +```bash +python - <<'EOF' +import json, pathlib, re, urllib.request +ident = 'CC-BY-4.0' +mine = pathlib.Path(f'LICENSES/{ident}.txt').read_text() +with urllib.request.urlopen(f'https://spdx.org/licenses/{ident}.json') as r: + canon = json.load(r)['licenseText'] +norm = lambda t: re.sub(r'\s+', ' ', t).strip().lower() +print('identical' if norm(mine) == norm(canon) else 'DIFFERS') +EOF +``` + +All sixteen SPDX-listed texts here pass that check. The twelve `LicenseRef-` +files cover terms SPDX does not list, and each opens with a `Source:` line +naming what it rests on. The ones based on published wording (the NASA +guidelines, the SimScale terms, the Stanford, Training Images and Utah +teapot pages, the LBNL and MINC notices, Paul Bourke's site, the Viewpoint +header) quote it verbatim and say what it means for a downstream user; +`LicenseRef-DbCL-1.0.txt` reproduces the Open Data Commons text in full; +`LicenseRef-PublicDomain.txt` and `LicenseRef-Unknown.txt` were written for +this repository and say so. `text_source` points at where the text came from. + + +If your dataset's licence is not already in `DATASETS.toml`: + +```toml +[license."CC-BY-4.0"] +title = "Creative Commons Attribution 4.0 International" +url = "https://creativecommons.org/licenses/by/4.0/" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/CC-BY-4.0.txt" +text_source = "https://spdx.org/licenses/CC-BY-4.0.json" +``` + +Every `[license.*]` table has exactly these keys, every table must be used by +at least one dataset, and `LICENSES/` holds exactly the files the tables name: + +| Key | Type | Meaning | +| --- | --- | --- | +| `title` | string | Full licence name. | +| `url` | string | Page where the licence is published, an `http(s)` URL. | +| `commercial_use` | boolean | Whether the licence permits commercial use; `false` makes the gallery flag the dataset. | +| `attribution_required` | boolean | Whether every dataset under it must carry `attribution`. | +| `share_alike` | boolean | Whether derived work must carry the same licence; `true` requires `notes` on every dataset under it. | +| `file` | string | Exactly `LICENSES/.txt`, which must exist. | +| `text_source` | string | Where the text in `file` came from; free text. | + +A `[collection.*]` table, for an upstream that several datasets share, has +exactly `title`, `url` (an `http(s)` URL) and `description`, all strings, and +must also be used by at least one dataset. + +Put the full text at the path `file` names. For an SPDX licence, copy it from +the [SPDX license list](https://github.com/spdx/license-list-data/tree/main/text). +For terms that SPDX does not list, use a `LicenseRef-` identifier and write the +text yourself, quoting the source's own words. + +The table keys are quoted because SPDX identifiers contain dots, which are +table separators in bare TOML keys. + +## Reporting a licence concern + +If a dataset here is recorded under incorrect or insufficient terms, or if you +can identify the origin of one of the `LicenseRef-Unknown` entries, please +[open an issue](https://github.com/pyvista/data/issues). diff --git a/DATASETS.toml b/DATASETS.toml new file mode 100644 index 00000000..3bc93bb5 --- /dev/null +++ b/DATASETS.toml @@ -0,0 +1,6801 @@ +# Dataset metadata for the PyVista example data repository. +# +# This file is the single source of truth for the provenance and licensing of +# every file under `Data/`. PyVista will read it through `examples.get_example(...)`, +# which returns an `Example` whose `.metadata` is the dataset's record, and publish +# it in the Dataset Gallery once pyvista/pyvista#9118 merges; this repository +# checks it on every pull request with `tools/validate_datasets.py`. +# +# Read `CONTRIBUTING.md` before editing. It documents how the provenance here +# was established and how to check it. In short: +# +# * every file under `Data/` must be covered by exactly one `[[dataset]]`; +# * `[[dataset]]` blocks are sorted by `name`; +# * `SPDX-License-Identifier` must resolve to a `[license.*]` table below; +# * `LICENSE`, `COPYING`, `COPYRIGHT`, `NOTICE`, `README` and `CITATION` files +# (any letter case, singular or plural, bare or with any extension) and +# `.license` sidecars are not tracked under `Data/`. +# +# The licensing keys borrow their names and meaning from the REUSE +# specification (https://reuse.software): `SPDX-License-Identifier` and +# `SPDX-FileCopyrightText` carry exactly the meaning they carry there, and +# LICENSES/ is named the way REUSE names it. No REUSE tool reads this file. +# +# The root `LICENSE` does not cover the data. See README.md. + +schema_version = 1 + +[license."Apache-2.0"] +title = "Apache License 2.0" +url = "https://www.apache.org/licenses/LICENSE-2.0" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/Apache-2.0.txt" +text_source = "https://spdx.org/licenses/Apache-2.0.json" + +[license."BSD-2-Clause"] +title = "BSD 2-Clause \"Simplified\" License" +url = "https://opensource.org/licenses/BSD-2-Clause" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/BSD-2-Clause.txt" +text_source = "https://spdx.org/licenses/BSD-2-Clause.json" + +[license."BSD-3-Clause"] +title = "BSD 3-Clause \"New\" or \"Revised\" License" +url = "https://opensource.org/licenses/BSD-3-Clause" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/BSD-3-Clause.txt" +text_source = "https://spdx.org/licenses/BSD-3-Clause.json" + +[license."CC-BY-3.0"] +title = "Creative Commons Attribution 3.0 Unported" +url = "https://creativecommons.org/licenses/by/3.0/" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/CC-BY-3.0.txt" +text_source = "https://spdx.org/licenses/CC-BY-3.0.json" + +[license."CC-BY-4.0"] +title = "Creative Commons Attribution 4.0 International" +url = "https://creativecommons.org/licenses/by/4.0/" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/CC-BY-4.0.txt" +text_source = "https://spdx.org/licenses/CC-BY-4.0.json" + +[license."CC-BY-SA-4.0"] +title = "Creative Commons Attribution Share Alike 4.0 International" +url = "https://creativecommons.org/licenses/by-sa/4.0/" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/CC-BY-SA-4.0.txt" +text_source = "https://spdx.org/licenses/CC-BY-SA-4.0.json" + +[license."CC-BY-SA-2.5"] +title = "Creative Commons Attribution Share Alike 2.5 Generic" +url = "https://creativecommons.org/licenses/by-sa/2.5/" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/CC-BY-SA-2.5.txt" +text_source = "https://spdx.org/licenses/CC-BY-SA-2.5.json" + +[license."CC-BY-SA-3.0"] +title = "Creative Commons Attribution Share Alike 3.0 Unported" +url = "https://creativecommons.org/licenses/by-sa/3.0/" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/CC-BY-SA-3.0.txt" +text_source = "https://spdx.org/licenses/CC-BY-SA-3.0.json" + +[license."CC0-1.0"] +title = "Creative Commons Zero v1.0 Universal" +url = "https://creativecommons.org/publicdomain/zero/1.0/" +commercial_use = true +attribution_required = false +share_alike = false +file = "LICENSES/CC0-1.0.txt" +text_source = "https://spdx.org/licenses/CC0-1.0.json" + +[license."GPL-3.0-or-later"] +title = "GNU General Public License v3.0 or later" +url = "https://www.gnu.org/licenses/gpl-3.0.html" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/GPL-3.0-or-later.txt" +text_source = "https://spdx.org/licenses/GPL-3.0-or-later.json" + +[license."LGPL-2.1-only"] +title = "GNU Lesser General Public License v2.1 only" +url = "https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/LGPL-2.1-only.txt" +text_source = "https://spdx.org/licenses/LGPL-2.1-only.json" + +[license."LGPL-3.0-only"] +title = "GNU Lesser General Public License v3.0 only" +url = "https://www.gnu.org/licenses/lgpl-3.0.html" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/LGPL-3.0-only.txt" +text_source = "https://spdx.org/licenses/LGPL-3.0-only.json" + +[license."LGPL-3.0-or-later"] +title = "GNU Lesser General Public License v3.0 or later" +url = "https://www.gnu.org/licenses/lgpl-3.0.html" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/LGPL-3.0-or-later.txt" +text_source = "https://spdx.org/licenses/LGPL-3.0-or-later.json" + +[license."LicenseRef-DbCL-1.0"] +title = "Open Data Commons Database Contents License v1.0" +url = "https://opendatacommons.org/licenses/dbcl/1-0/" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/LicenseRef-DbCL-1.0.txt" +text_source = "https://opendatacommons.org/licenses/dbcl/1-0/" + +[license."LicenseRef-LBNL-WholeFrog"] +title = "Lawrence Berkeley National Laboratory Whole Frog Project data terms" +url = "https://froggy.lbl.gov/images/whole.frog/data/" +commercial_use = false +attribution_required = true +share_alike = false +file = "LICENSES/LicenseRef-LBNL-WholeFrog.txt" +text_source = "https://froggy.lbl.gov/images/whole.frog/data/Copyright.Notice" + +[license."LicenseRef-MINC"] +title = "MINC library notice" +url = "https://github.com/BIC-MNI/minc/blob/master/COPYING" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/LicenseRef-MINC.txt" +text_source = "https://github.com/BIC-MNI/minc/blob/master/COPYING" + +[license."LicenseRef-NASA-Media"] +title = "NASA media usage guidelines" +url = "https://www.nasa.gov/nasa-brand-center/images-and-media/" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/LicenseRef-NASA-Media.txt" +text_source = "https://www.nasa.gov/nasa-brand-center/images-and-media/" + +[license."LicenseRef-PaulBourke-PersonalUse"] +title = "Paul Bourke website terms, personal use only" +url = "https://paulbourke.net/" +commercial_use = false +attribution_required = true +share_alike = false +file = "LICENSES/LicenseRef-PaulBourke-PersonalUse.txt" +text_source = "https://paulbourke.net/" + +[license."LicenseRef-PublicDomain"] +title = "Public domain" +url = "https://github.com/pyvista/data/blob/master/LICENSES/LicenseRef-PublicDomain.txt" +commercial_use = true +attribution_required = false +share_alike = false +file = "LICENSES/LicenseRef-PublicDomain.txt" +text_source = "Written for this repository; the file states what it is based on." + +[license."LicenseRef-SimScale-PublicProject"] +title = "SimScale public project data" +url = "https://www.simscale.com/terms-and-conditions/" +commercial_use = true +attribution_required = false +share_alike = false +file = "LICENSES/LicenseRef-SimScale-PublicProject.txt" +text_source = "https://www.simscale.com/terms-and-conditions/" + +[license."LicenseRef-StanfordScanningRepository"] +title = "Stanford 3D Scanning Repository conditions of use" +url = "http://graphics.stanford.edu/data/3Dscanrep/" +commercial_use = false +attribution_required = true +share_alike = false +file = "LICENSES/LicenseRef-StanfordScanningRepository.txt" +text_source = "http://graphics.stanford.edu/data/3Dscanrep/" + +[license."LicenseRef-TrainingImagesLibrary"] +title = "Training Images Library, research use only" +url = "http://web.archive.org/web/20150509032421id_/http://www.trainingimages.org/training-images-library.html" +commercial_use = false +attribution_required = false +share_alike = false +file = "LICENSES/LicenseRef-TrainingImagesLibrary.txt" +text_source = "http://web.archive.org/web/20150509032421id_/http://www.trainingimages.org/training-images-library.html" + +[license."LicenseRef-Unknown"] +title = "Undetermined license" +url = "https://github.com/pyvista/data/blob/master/LICENSES/LicenseRef-Unknown.txt" +commercial_use = false +attribution_required = false +share_alike = false +file = "LICENSES/LicenseRef-Unknown.txt" +text_source = "Written for this repository; the file states what it is based on." + +[license."LicenseRef-UtahTeapot"] +title = "Utah Teapot terms of use" +url = "https://graphics.cs.utah.edu/teapot/" +commercial_use = true +attribution_required = false +share_alike = false +file = "LICENSES/LicenseRef-UtahTeapot.txt" +text_source = "https://graphics.cs.utah.edu/teapot/" + +[license."LicenseRef-Viewpoint-DataLabs"] +title = "Viewpoint Animation Engineering dataset terms" +url = "https://github.com/pyvista/data/blob/master/LICENSES/LicenseRef-Viewpoint-DataLabs.txt" +commercial_use = false +attribution_required = false +share_alike = false +file = "LICENSES/LicenseRef-Viewpoint-DataLabs.txt" +text_source = "Written for this repository; the file states what it is based on." + +[license."OFL-1.1"] +title = "SIL Open Font License 1.1" +url = "https://openfontlicense.org/open-font-license-official-text/" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/OFL-1.1.txt" +text_source = "https://spdx.org/licenses/OFL-1.1.json" + +[license."MIT"] +title = "MIT License" +url = "https://opensource.org/licenses/MIT" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/MIT.txt" +text_source = "https://spdx.org/licenses/MIT.json" + +[license."ODbL-1.0"] +title = "Open Data Commons Open Database License v1.0" +url = "https://opendatacommons.org/licenses/odbl/1-0/" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/ODbL-1.0.txt" +text_source = "https://spdx.org/licenses/ODbL-1.0.json" + +[collection."ggg-benchmark-sfm"] +title = "GGG-BenchmarkSfM" +url = "https://data.mendeley.com/datasets/bzxk2n78s9/4" +description = "Dataset for benchmarking close-range structure-from-motion software performance under varying capturing conditions, by Ivan Nikolov and Claus Madsen." + +[collection."laser-design"] +title = "Laser Design sample files" +url = "https://www.laserdesign.com/sample-files/" +description = "Sample scans published by Laser Design Inc. to demonstrate its 3D scanning services." + +[collection."simscale"] +title = "SimScale Public Projects" +url = "https://www.simscale.com/projects/" +description = "Simulation results published in the public project library of the SimScale cloud CAE platform." + +[collection."smithsonian-open-access"] +title = "Smithsonian Open Access" +url = "https://3d.si.edu/" +description = "3D scans of museum objects released by the Smithsonian Institution under CC0." + +[collection."solar-system-scope"] +title = "Solar System Scope Textures" +url = "https://www.solarsystemscope.com/textures/" +description = "Planetary surface and sky textures published by Solar System Scope." + +[collection."stanford-3d-scanning"] +title = "Stanford 3D Scanning Repository" +url = "http://graphics.stanford.edu/data/3Dscanrep/" +description = "Range scans published by the Stanford Computer Graphics Laboratory." + +[collection."thingiverse"] +title = "Thingiverse" +url = "https://www.thingiverse.com/" +description = "User-contributed 3D printable models, individually licensed by their uploaders." + +[collection."vtk-data"] +title = "VTK Data" +url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +description = "Kitware's test and example data collection for the Visualization Toolkit. This repository was created on GitHub in March 2019 from a July 2013 snapshot of it (VTKData commit 8f60d72)." + +[collection."vtk-examples"] +title = "VTK Examples" +url = "https://gitlab.kitware.com/vtk/vtk-examples" +description = "Bill Lorensen's VTK example collection, originally hosted at github.com/lorensen/VTKExamples and now maintained by Kitware. The repository is Apache-2.0 licensed but publishes no copyright notice: its LICENSE appendix is left as unfilled boilerplate, so no `SPDX-FileCopyrightText` is recorded for material from it." + +[[dataset]] +name = "action_figure" +title = "Tiger fighter action figure" +description = "Scan of an action figure captured with an Artec Spider scanner, at full resolution (314218 vertices, 628432 triangles) and decimated to 31421 triangles." +path = ["tigerfighter.obj", "tigerfighter_decimated.obj"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.laserdesign.com/sample-files/action-figure/" +origin_title = "Laser Design sample files, Action Figure" +collection = "laser-design" +redistributed_from = ["http://3dgallery.gks.com/2013/tigerfighter"] +modified = true +modification = "`tigerfighter.obj` is the file as served. `tigerfighter_decimated.obj` was made in pyvista/data#55 with `examples.download_action_figure().clean().decimate(0.95)` and written by meshio 5.3.5 on 2025-01-29; it has 15713 vertices and 31421 faces." +notes = """ +Laser Design Inc. publishes this scan on the "Action Figure" page of its +public sample-file archive, which says it was captured with the Artec Spider +3D scanner. The file's own header agrees: "# File exported by Artec Group 3D +Scanning Solutions", "# 314218 vertices", "# 628432 triangular faces". + +The 2019 capture of that page, +http://web.archive.org/web/20191021081456/https://www.laserdesign.com/sample-files/action-figure/, +links its Download button to http://3dgallery.gks.com/2013/tigerfighter, the +URL pyvista's first loader fetched (pyvista commit 24cec36d3, July 2019). GKS +Services Corp. is a subsidiary of Laser Design Inc. +(https://www.laserdesign.com/30-years-of-scanning-excellence-with-gks-services-corp/). +The Wayback Machine's capture of that download, +http://web.archive.org/web/20191121170146id_/http://3dgallery.gks.com/2013/tigerfighter/, +holds the first 1048576 bytes of the file, and they are byte-identical to +`tigerfighter.obj` (`cmp` reports only end of file on the capture). + +The page states no licence of its own, and the site footer links +https://cyberoptics.com/website-terms-conditions-of-use/ as "Terms of Use" +(the host refuses scripted requests; the 2024-05-27 capture at +http://web.archive.org/web/20240527060434/http://www.cyberoptics.com/website-terms-conditions-of-use/ +is readable). Those terms grant permission "to temporarily download one copy +of the materials ... for personal, non-commercial transitory viewing only", +and say that under that licence you may not "use the materials for any +commercial purpose", or "transfer the materials to another person or 'mirror' +the materials on any other server". Whether that boilerplate is meant to +govern the sample downloads is arguable, but no grant of redistribution +rights exists anywhere on the site, so the terms are recorded as +undetermined. Downstream users, especially commercial ones, should contact +Laser Design or substitute another mesh. +""" + +[[dataset]] +name = "aero_bracket" +title = "Aircraft engine bearing bracket" +description = "Static stress analysis of an aircraft engine bearing bracket, carrying displacement, total nonlinear strain and von Mises stress on 187037 points of a quadratic tetrahedral mesh, with a screenshot of the result in the SimScale post-processor." +path = ["fea/aero_bracket/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.simscale.com/projects/simscale/aircraft_engine_bearing_bracket_analysis/" +origin_title = "SimScale public project: Aircraft engine bearing bracket analysis" +collection = "simscale" +modified = true +modification = "One run of the project (`sim_1/sim_1_0_0.vtu`) was read with PyVista, its coordinates and point data cast to float32 and its cell data cleared, to reduce the file size." +notes = """ +The project page's description reads: "This project demonstrates the static +stress analysis of three aircraft engine bearing bracket models considering +both linear and nonlinear material definition. The models used in this +analysis are taken from GrabCAD users who were the winners of GrabCAD +'Airplane Bearing Bracket Challenge'. The models are tested with horizontal +and vertical loading conditions as provided on the challenge page of +GrabCAD." pyvista/data#31 quotes that text and says the data "was downloaded +from the public datasets from SimScale"; the reduction script is in the +README that pull request added, +https://github.com/pyvista/data/blob/c1e0fc17d281f4567be43a03ff45cd7947869aac/Data/fea/aero_bracket/README.md. +The mesh is 117292 quadratic tetrahedra (VTK cell type 24) on 187037 points +with an empty CellData block; `simscale-bracket.png` is a 787 by 840 +screenshot of SimScale's post-processor showing the von Mises stress. + +The project is owned by the `simscale` account (the page's `ownerName` +field). SimScale's Terms and Conditions, +https://www.simscale.com/terms-and-conditions/, clause 5.2, grant SimScale, +its users and visitors of its websites an irrevocable right to reproduce, +distribute and publish "Community Content", defined there as content +uploaded or generated by a Customer under a Free Plan. A project published +by SimScale itself is not customer content, and no other clause grants +visitors rights over it, so the terms are recorded as undetermined; a +downstream user who needs terms should ask SimScale, naming the project. The +bracket geometry originates from the GrabCAD Airplane Bearing Bracket +Challenge, https://grabcad.com/challenges/airplane-bearing-bracket-challenge/entries; +which of the winning models this run used, and under what terms its author +published it, was not recorded. +""" + +[[dataset]] +name = "alpha_channel" +title = "Alpha channel test image" +description = "Flat olive-yellow image (RGB 183, 183, 0) whose alpha channel fades to transparent, 420 by 300 pixels, a PNG used to test opacity handling." +path = ["alphachannel.png"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. + +The file was added to VTKData on 2006-12-11 by Utkarsh Ayachit, committing +from a kitware.com address ("ENH: Added data for opacity test which tests +opacity", commit b85a99f in this repository's history), and its PNG text +chunk reads "Created with The GIMP", so it is a synthetic image made +in-house for VTK's opacity tests (`Rendering/Core/Testing/Python/TestOpacity2.py` +and two C++ tests under `Rendering`). VTK still distributes the same bytes +(`Testing/Data/alphachannel.png.sha512`). Provenance stays inferred because +no source states who drew it; the commit and the text chunk are the basis. +""" + +[[dataset]] +name = "amr" +title = "Adaptive mesh refinement samples" +description = "Two hierarchical box datasets (VTK XML `.vthb` files, versions 1.0 and 1.1 of the format, each with 81 image-data blocks over four refinement levels) carrying `Fractal Volume Fraction`, `BlockId`, `Depth`, `TestX` and `VectorXYZ` arrays, used to exercise the AMR readers and filters." +path = [ + "AMR/HierarchicalBoxDataset.v1.0.vthb", + "AMR/HierarchicalBoxDataset.v1.0/**", + "AMR/HierarchicalBoxDataset.v1.1.vthb", + "AMR/HierarchicalBoxDataset.v1.1/**", +] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection: both datasets are in the 2013 +VTKData tree this repository was created from in March 2019. The +`Data/AMR/Enzo` files are the separate `amr_enzo` entry. + +Both datasets were added to VTKData by Utkarsh Ayachit of Kitware on +2012-10-08 ("Adding datasets for XML AMR IO testing", commit fc83fc6 in this +repository's history). Their arrays (`Fractal Volume Fraction`, `BlockId`, +`Depth`, `TestX`, `VectorXYZ`) are the outputs of ParaView's synthetic +`vtkHierarchicalFractal` AMR source +(https://github.com/Kitware/ParaView/blob/master/VTKExtensions/FiltersGeneral/vtkHierarchicalFractal.cxx), +so the data is generated by Kitware, not measured, and Kitware's blanket +`Copyright.txt` notice for the collection is recorded as its licence. +Inferred because no upstream page states the generator; the array names and +the Kitware author are the evidence. VTK still distributes the same bytes +(https://gitlab.kitware.com/vtk/vtk/-/blob/master/Testing/Data/AMR/HierarchicalBoxDataset.v1.0.vthb.sha512 +and siblings). +""" + +[[dataset]] +name = "amr_enzo" +title = "Enzo AMR sample (moving7)" +description = "Output DD0010 of the Enzo adaptive-mesh test run `moving7` (Enzo problem type 27 in comoving coordinates): the parameter, hierarchy, boundary and processor-map files and the packed-HDF5 grid data for a 16 by 16 by 16 top grid with five baryon fields." +path = ["AMR/Enzo/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["2006-2013 Matthew Turk", "2013- yt Development Team"] +provenance = "verified" +origin_url = "https://github.com/yt-project/yt/tree/main/tests/DD0010" +origin_title = "yt test data, tests/DD0010" +collection = "vtk-data" +authors = ["Matthew Turk"] +attribution = "moving7_0010 Enzo test data from the yt project (https://github.com/yt-project/yt), copyright (c) 2006-2013 Matthew Turk and 2013- yt Development Team, BSD 3-Clause." +redistributed_from = [ + "https://gitlab.kitware.com/vtk/vtk/-/blob/master/Testing/Data/AMR/Enzo/DD0010/moving7_0010.sha512", + "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7", +] +notes = """ +These are the `DD0010/moving7_0010` files that the yt project ships in its +repository and uses in its documentation ("the DD0010/moving7_0010 dataset +distributed in the yt git repository", +https://github.com/yt-project/yt/blob/main/doc/source/reference/command-line.rst). +The bytes prove it: `moving7_0010.cpu0000`, `moving7_0010.boundary.hdf` and +`moving7_0010.procmap` have the same git blob ids as yt's current copies +(416b69d2fe6e, f090446924d7, ea09cc5c9522; compare +`gh api repos/yt-project/yt/contents/tests/DD0010` with +`git ls-tree -r HEAD Data/AMR/Enzo/DD0010`), and `moving7_0010`, +`moving7_0010.hierarchy` and `moving7_0010.boundary` are identical to yt's +files at yt commit 5c5eef8 (Matthew Turk, 2008-05-03, "Supplemented the test +data with Packed-HDF5 data"); yt's later copies differ only by a +`CurrentTimeIdentifier` line added in 2011 and whitespace clean-ups in 2020. +The `.boundary` and `.procmap` files name their original location as +`/rmount/users08/stanford/mturk/data/DD0010/`. `moving7_0010.harrays` has no +counterpart in yt. + +George Zagaris of Kitware added the files to VTKData on 2012-03-12 ("ENH: +Adding Enzo AMR test cases", commit 4280128 in this repository's history) +for VTK's Enzo reader tests; they reached this repository in the 2013 +VTKData tree it was created from, and VTK still distributes the same bytes +through the content links in `Testing/Data/AMR/Enzo/DD0010/`. + +yt's `COPYING` file (https://github.com/yt-project/yt/blob/main/COPYING) +licenses the repository under the Modified BSD licence, "Copyright (c) +2013-, yt Development Team" and "Copyright (c) 2006-2013, Matthew Turk", +and that is the licence recorded here. It does not single out the test +data; a downstream user wanting certainty about the data should ask the yt +project. VTK Data's BSD-3-Clause notice covers Kitware's redistribution, not +the authorship. +""" + +[[dataset]] +name = "angular_sector" +title = "Angular sector" +description = "Three-dimensional angular sector as a legacy VTK unstructured grid of 10141 points and 7776 cells." +path = ["AngularSector.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. + +The file was added to VTKData by Philippe Pebay on 2011-11-24 ("A new input +data set: a 3D angular sector", commit 5e8dfff in this repository's history); +its header says VTK wrote it ("vtk output"), and the VTK tests that read it +say they were written by Philippe Pebay at Kitware SAS +(`Filters/Selection/Testing/Cxx/TestLinearSelector3D.cxx`, 2011, and +`TestCellDistanceSelector3D.cxx`, 2012). The file itself names no author, +so the Kitware authorship is inferred from those records. VTK still +distributes the same bytes (`Testing/Data/AngularSector.vtk.sha512`). +""" + +[[dataset]] +name = "antarctica_velocity" +title = "Antarctica ice velocity" +description = "Simulated ice surface velocity field over Antarctica." +path = ["antarctica_velocity.vtp"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyvista-support/issues/83" +origin_title = "PyVista support issue 83" +authors = ["Benoit Urruty"] +attribution = "Data from an output of Elmer/Ice (http://elmerice.elmerfem.org/), provided by Benoit Urruty." +notes = """ +Contributed by Benoit Urruty in pyvista-support#83 as an output of Elmer/Ice. +He granted its use in the example gallery and asked that the data be described +as coming from an Elmer/Ice output, which the attribution does. A grant for +the gallery is not a general licence, so the terms for other uses are +undetermined. +""" + +[[dataset]] +name = "armadillo" +title = "Armadillo" +description = "Range-scanned surface mesh of an armadillo figurine, 172974 vertices and 345944 triangles, reconstructed with vrip from Cyberware 3030 MS scans." +path = ["Armadillo.ply"] +SPDX-License-Identifier = "LicenseRef-StanfordScanningRepository" +SPDX-FileCopyrightText = ["Stanford University Computer Graphics Laboratory"] +provenance = "verified" +origin_url = "http://graphics.stanford.edu/data/3Dscanrep/" +origin_title = "Stanford 3D Scanning Repository" +collection = "stanford-3d-scanning" +attribution = "Stanford Computer Graphics Laboratory." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/Armadillo.ply", "https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/Armadillo.ply"] +modified = true +modification = "Rewritten by VTK (header comment `VTK generated PLY File`): binary little-endian instead of Stanford's big-endian, without the all-zero per-face `intensity` property and the `author: Paraform` comment of Stanford's `Armadillo.ply.gz`. The 172974 vertices and 345944 faces are identical to Stanford's." +references = [ + { citation = "Krishnamurthy, V. and Levoy, M. \"Fitting Smooth Surfaces to Dense Polygon Meshes.\" SIGGRAPH 1996.", doi = "10.1145/237170.237270" }, +] +notes = """ +The Stanford conditions of use permit free redistribution and research use +but exclude commercial use without permission from the Stanford Computer +Graphics Laboratory. This is not an open licence; downstream users shipping +a product for sale should contact Stanford or substitute another mesh. + +Stanford exempts the armadillo, with the bunny, from its cultural-significance +request: "You can do anything you want to the Stanford bunny or the armadillo." + +The repository page lists the armadillo as "Source: Stanford University +Computer Graphics Laboratory", "Scanner: Cyberware 3030 MS", "Reconstruction: +vrip (conservatively decimated)" and "Size of reconstruction: 345,944 +triangles", first appearing in [Krishnamurthy96]. Parsing its +`Armadillo.ply.gz` and this file gives identical vertex and face arrays; only +the container differs, as recorded under `modification`. The copy here +arrived with the April 2019 lorensen/VTKExamples import (commit 74bf994) as +the same git blob 3f85a6b5 that repository holds at +`src/Testing/Data/Armadillo.ply`; vtk/vtk-examples now holds the same bytes +in LFS (pointer sha256 102ccc71...). VTK's own `Testing/Data/Armadillo.ply` +content link is a different file. +""" + +[[dataset]] +name = "auto_mpg" +title = "Auto MPG" +description = "Fuel consumption, cylinders, displacement, horsepower, weight, acceleration and model year for 398 cars, as two exports: 392 complete cases without names, and all 398 with them." +path = ["cars.csv", "vehicle_data.csv"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://archive.ics.uci.edu/dataset/9/auto+mpg" +origin_title = "UCI Machine Learning Repository, Auto MPG" +authors = ["R. Quinlan"] +attribution = "Auto MPG, UCI Machine Learning Repository, donated by R. Quinlan (1993), licensed under CC BY 4.0." +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7", "https://github.com/lorensen/VTKExamples"] +modified = true +modification = "`vehicle_data.csv` keeps the 392 rows with a horsepower value, in the repository's order, renames the columns, drops `car_name` and `origin`, and rounds one displacement (97.5 to 97, the 1972 Dodge Colt hardtop). `cars.csv` keeps all 398 rows reordered roughly by name, renames the columns (its `displacement (cc)` values are the repository's cubic inches), drops `origin`, capitalises and respells some names and writes `(sw)` as `(Wagon)`." +references = [ + { citation = "Quinlan, R. Auto MPG. UCI Machine Learning Repository, 1993.", doi = "10.24432/C5859H", url = "https://archive.ics.uci.edu/dataset/9/auto+mpg" }, +] +notes = """ +Both files are the Auto MPG data revised from the CMU StatLib library and +used at the 1983 American Statistical Association Exposition. Compared with +the repository's `data.csv` (https://archive.ics.uci.edu/static/public/9/data.csv): +`vehicle_data.csv` matches the 392 rows that have a horsepower value, in +order, except for the one rounded displacement; the 398 rows of `cars.csv` +match the repository's 398 rows as a multiset on every numeric column, and +their names match, compared case-insensitively, after the repository's +commas are read as spaces and `(sw)` as `(wagon)`, apart from 16 respelled +names (for example the repository's `vw rabbit` is `volkswagen rabbit`, +`maxda rx3` is `maxda rx-3` and `plymouth 'cuda 340` is `plymouth barracuda +340`). + +The dataset page states "This dataset is licensed under a Creative Commons +Attribution 4.0 International (CC BY 4.0) license." and credits R. Quinlan +as creator; the API record (https://archive.ics.uci.edu/api/dataset?id=9) +gives the creator, the 1993 date and the DOI but not the licence. + +`vehicle_data.csv` reached this repository through the VTK Data fork (added +by Marcus Hanwell on 2011-10-18, "Added vehicle data, useful for PC/scatter +plot"; VTK's content link `Testing/Data/vehicle_data.csv.sha512` matches the +same bytes) and `cars.csv` through the April 2019 import from +lorensen/VTKExamples (blob 0fb6147e392c at `src/Testing/Data/cars.csv`). +Neither collection's licence applies to third-party data, so the UCI terms +are recorded. +""" + +[[dataset]] +name = "avs_ucd" +title = "AVS UCD sample" +description = "Unstructured cell data sample in the AVS UCD ASCII format: 13 nodes and 12 cells (8 triangles and 4 quadrilaterals) with one node array and two cell arrays." +path = ["cellsnd.ascii.inp"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. + +The file was added to VTKData by Will Schroeder on 2003-12-16 ("ENH:AVS test +files", commit 2069101 in this repository's history), the day after +`vtkAVSucdReader` landed in VTK (commit ab257f768f, "ENH:Thanks to J. Favre +and folks"); that reader's header credits Guenole Harel, Emmanuel Colin +(Supelec) and Jean M. Favre (CSCS) as its co-developers, so the sample may +have come with their contribution. The file's own header comment is "foo" +and nothing in it identifies an author. VTK still distributes the same bytes +(`Testing/Data/cellsnd.ascii.inp.sha512`). +""" + +[[dataset]] +name = "banes_heart" +title = "Heart scan" +description = "512 by 512 by 56 volume of a human heart at 0.78125 by 0.78125 by 2.5 mm spacing, with values from -2000 to 2658." +path = ["banes_heart/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://github.com/pyvista/data/commit/e28738e369cef8d6858dc86ff944c0bfa04581f1" +origin_title = "pyvista/data commit e28738e, \"Add Bane's heart scan\"" +notes = """ +Committed directly to this repository by maintainer Bane Sullivan on +2024-10-20 with the message "Add Bane's heart scan", which is the only record +of its origin (`git show e28738e --stat`). The contributor is the named +subject, so the origin is a reasoned conclusion from that commit rather than +a source that states it. The file is a VTK XML image with extent 0 511 0 511 +0 55 and spacing 0.78125 0.78125 2.5 whose header declares a single Float64 +array `values` with range -2000 to 2658, a Hounsfield-like range, and no +acquisition metadata or identifiers (`head -c 1500 +Data/banes_heart/banes_heart.vti`). This is human medical imaging: neither +the acquiring institution, the consent status nor the terms of use were +recorded, so the licence is undetermined. Downstream users should ask the +contributor before redistributing it. +""" + +[[dataset]] +name = "beach_nrrd" +title = "Beach cartoon NRRD image" +description = "100 by 100 pixel colour cartoon of an animal sunbathing on a beach towel under an umbrella with a cocktail, in the Nearly Raw Raster Data format." +path = ["beach.nrrd"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kenneth Moreland added the file to VTKData on 2013-02-13 +("Add data and baseline image for NRRD reader test", commit 961e18c in this +repository's history), and VTK still distributes the same bytes: +`shasum -a 512 beach.nrrd` matches VTK's `Testing/Data/beach.nrrd.sha512`. + +The image is not a photograph. Rendering the 3 by 100 by 100 unsigned-char +payload shows a clip-art style cartoon, and it is a vertically flipped, 2 by 2 +box-downsampled copy of the 200 by 200 `beach.tif` in the `vtk_data_files` +entry (Ken Martin, 2001-07-23, "sample tiff image", commit 336cca5): the mean +absolute pixel difference against the flipped, box-downsampled TIFF is 2.3 of +255, against the unflipped one 81. No file or commit in VTK or VTK Data names +who drew the cartoon, and Kitware's blanket `Copyright.txt` notice cannot +license artwork it did not make, so the terms are recorded as undetermined. +Downstream users should treat the picture as third-party artwork of unknown +origin; anyone who can identify it is asked to open an issue. +""" + +[[dataset]] +name = "bibliography" +title = "Bibliographic exports" +description = "Reference-manager exports in RIS and ISI formats, used to exercise the bibliographic readers." +path = ["Infovis/eg1.ris", "Infovis/eg2.isi"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7/folder/5afd930a8d777f15ebe1b010" +origin_title = "VTK Data, Infovis folder" +collection = "vtk-data" +notes = """ +`eg2.isi` holds 500 ISI export records whose abstracts are marked "(C) 1996 +American Institute of Physics", "(C) 1997 Elsevier Science B.V." and "(C) +1996 by John Wiley", among others; `eg1.ris` holds 14 RIS records with +abstracts and no copyright line. Abstracts and bibliographic records belong +to their publishers, so the terms are undetermined rather than the +collection's, and the trail ends at VTK Data. Both files entered VTK Data in +commit b49f93c (2008-02-14, Timothy M. Shead, "Adding sample data for RIS +and ISI readers"), which names no source; they are in the tree this +repository was forked from and match the sha512 Girder records in the +collection's `Infovis` folder. A downstream user who needs terms should ask +the publishers named in the records. +""" + +[[dataset]] +name = "biplane" +title = "Biplane RMS pressure" +description = "Exodus II result carrying root-mean-square surface pressure on a biplane." +path = ["biplane_rms_pressure_bs.exo"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://gitlab.kitware.com/paraview/paraview/-/issues/21342" +origin_title = "ParaView issue 21342" +collection = "vtk-data" +redistributed_from = [ + "https://gitlab.kitware.com/vtk/vtk/-/blob/master/Testing/Data/Exodus/biplane_rms_pressure_bs.exo.sha512", + "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7", +] +notes = """ +This is VTK's reader test input `Data/Exodus/biplane_rms_pressure_bs.exo`, +named by `IO/IOSS/Testing/CMakeLists.txt` and read by +`TestIOSSExodusSetArrays.cxx`. VTK added its content link in commit +0757716d10 (2022-04-18, Utkarsh Ayachit, "Addresses paraview/paraview#21342"), +and in that issue W. Alan Scott (GitLab user wascott) attached the file on +2022-04-06 and wrote "Attached dataset is UUR, as per Peter C." The bytes +here match VTK's content link (`shasum -a 512` begins ea036f472f7bb898). +pyvista/data pull request 51 took the file from the VTK Data tarball. + +The file is therefore a third party's, not Kitware's, and neither the issue +nor VTK states terms for it: "UUR" is a release marking, not a licence, so +the terms are undetermined. A downstream user who needs more than test use +should ask through the ParaView issue. +""" + +[[dataset]] +name = "biquadratic_quads" +title = "Biquadratic quadrilateral disc" +description = "Disc meshed with biquadratic quadrilateral cells." +path = ["Disc_BiQuadraticQuads_0_0.vtu"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://gitlab.kitware.com/vtk/vtk/-/blob/master/Testing/Data/Disc_BiQuadraticQuads_0_0.vtu.sha512", "https://github.com/lorensen/VTKExamples"] +notes = """ +VTK ships identical bytes (SHA-512 beginning c3d92eaa33948561) as its own +test input `Testing/Data/Disc_BiQuadraticQuads_0_0.vtu`, whose content link +was added in VTK commit fe3ff3b26a (2014-10-02, Berk Geveci, "Fixed quadratic +quad and biquadratic quad derivatives") as the input of +`Common/DataModel/Testing/Python/quadraticQuadDeriv.py`, three years before +lorensen/VTKExamples existed (its first commit is dated 2017-05-07 and the +file is in its 2017-05-13 "First checkin", 4ddbd02afa). The copy here came +through the April 2019 import from lorensen/VTKExamples (blob ed57c53c2dbb at +`src/Testing/Data/Disc_BiQuadraticQuads_0_0.vtu`). Kitware's blanket +`Copyright.txt` notice for VTK Data is recorded as the licence because VTK +published the file as its own test input; Kitware published no per-file +provenance, so the author of the mesh itself is not recorded upstream. +""" + +[[dataset]] +name = "bird_bath" +title = "Bird bath" +description = "Photogrammetric surface reconstruction of the bird bath from the GGG-BenchmarkSfM close-range structure-from-motion benchmark, distributed as a zipped mesh of over a million points and as a more heavily decimated VTK XML PolyData file." +path = ["ivan-nikolov/birdBath.zip", "ivan-nikolov/birdBath_decimated.vtp"] +SPDX-License-Identifier = "CC-BY-4.0" +SPDX-FileCopyrightText = ["2020 Computer Graphics Group, Aalborg University"] +provenance = "verified" +origin_url = "https://data.mendeley.com/datasets/bzxk2n78s9/4" +origin_title = "GGG-BenchmarkSfM, Mendeley Data" +collection = "ggg-benchmark-sfm" +authors = ["Ivan Nikolov", "Claus Madsen"] +attribution = "Nikolov, I. and Madsen, C., GGG-BenchmarkSfM, Mendeley Data, CC BY 4.0. Copyright 2020 Computer Graphics Group, Aalborg University. All rights reserved." +modified = true +modification = "Converted from the original OFF mesh to VTK XML PolyData. The zipped mesh was decimated to 1831383 points with float32 coordinates to keep the archive under 50 MB; the `_decimated` file was reduced further, to 18796 points." +references = [ + { citation = "Nikolov, I. and Madsen, C. \"Benchmarking Close-range Structure from Motion 3D Reconstruction Software Under Varying Capturing Conditions.\" EuroMed 2016.", doi = "10.1007/978-3-319-48496-9_2" }, +] +notes = """ +The dataset's `CopyrightNotice.pdf`, listed at the root of the Mendeley +dataset by +https://data.mendeley.com/public-api/datasets/bzxk2n78s9/files?folder_id=root&version=4 +and served at +https://data.mendeley.com/public-files/datasets/bzxk2n78s9/files/5dc7bd5b-db57-4893-8658-aaa40996d24b/file_downloaded, +is headed "Computer Graphics Group (graphics.create.aau.dk), Department of +Architecture, Design and Media Technology, Aalborg University", states +"Copyright 2020 Computer Graphics Group. All rights reserved." and releases the +database under CC BY 4.0 "provided that the copyright notice is present in all +copies of the database". Copies of these files must therefore carry that +notice, which the attribution line above reproduces. +""" + +[[dataset]] +name = "black_vase" +title = "Black vase" +description = "High-resolution ground-truth scan of the black vase from the GGG-BenchmarkSfM close-range structure-from-motion benchmark, distributed as a zipped mesh of over a million points and as a more heavily decimated VTK XML PolyData file." +path = ["ivan-nikolov/blackVase.zip", "ivan-nikolov/blackVase_decimated.vtp"] +SPDX-License-Identifier = "CC-BY-4.0" +SPDX-FileCopyrightText = ["2020 Computer Graphics Group, Aalborg University"] +provenance = "verified" +origin_url = "https://data.mendeley.com/datasets/bzxk2n78s9/4" +origin_title = "GGG-BenchmarkSfM, Mendeley Data" +collection = "ggg-benchmark-sfm" +authors = ["Ivan Nikolov", "Claus Madsen"] +attribution = "GGG-BenchmarkSfM, Copyright (c) 2020 Computer Graphics Group, Aalborg University (Nikolov, I. and Madsen, C.), Mendeley Data V4, doi:10.17632/bzxk2n78s9.4, CC BY 4.0. The dataset's CopyrightNotice.pdf asks that this notice accompany every copy." +modified = true +modification = "Converted from the original OFF mesh to VTK XML PolyData. The zipped mesh was decimated to 1611789 points with float32 coordinates to keep the archive under 50 MB; the `_decimated` file was reduced further, to 17337 points." +references = [ + { citation = "Nikolov, I. and Madsen, C. \"Benchmarking Close-range Structure from Motion 3D Reconstruction Software Under Varying Capturing Conditions.\" EuroMed 2016.", doi = "10.1007/978-3-319-48496-9_2" }, +] +notes = """ +The dataset root carries `CopyrightNotice.pdf` (sha256 a482529b5f79..., listed +by https://data.mendeley.com/public-api/datasets/bzxk2n78s9/files?version=4&folder_id=root), +which reads "(c) Copyright 2020 Computer Graphics Group. All rights reserved.", +releases the database under the CC BY 4.0 licence and says all images and +meshes may be freely used "provided that the copyright notice is present in +all copies of the database". The Mendeley description says the dataset +provides images for structure-from-motion benchmarking plus "a ground truth +high resolution scanned of each of the objects"; the `.off` mesh converted +here is that scan, not a photogrammetric result. +""" + +[[dataset]] +name = "blood_vessels" +title = "Blood vessel flow" +description = "Partitioned unstructured grid of flow through a network of blood vessels." +path = ["pvtu_blood_vessels/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://github.com/JiaweiZhuang/vtk_experiments" +origin_title = "JiaweiZhuang/vtk_experiments" +authors = ["Jiawei Zhuang"] +notes = """ +Shared by Jiawei Zhuang for https://github.com/pyvista/pyvista/issues/175. He +was not the author: the data came from a course he took, and he relayed the +instructor's permission for its use in PyVista. That relayed permission is +recorded here rather than a licence, and the upstream repository publishes no +LICENSE file, so the terms for other uses are undetermined. +""" + +[[dataset]] +name = "blow" +title = "Blow moulding" +description = "Unstructured grid of a blow-moulding simulation with displacement and thickness fields." +path = ["blow.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019: the file is in the 2013 fork tree and VTK ships +`blow.vtk.sha512`. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. + +The file's second line reads "Plastic blow molding of car bumper", and it is +the input to the finite element case study in chapter 12 of the VTK textbook +(Figure 12-17; `src/VTKBook/12Chapter12.md` in `vtk/vtk-examples`), which +cites H. G. deLorenzi and C. A. Taylor, International Polymer Processing +3(4):365-374, 1993, for the analysis. No upstream page names the author of +the simulation itself. +""" + +[[dataset]] +name = "bolt_nut" +title = "Bolt and nut volumes" +description = "SLC volumes of a bolt and a nut." +path = ["bolt.slc", "nut.slc"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "brain" +title = "Brain surface" +description = "Volume of a human brain, 181 by 217 by 181 voxels at 1 mm spacing." +path = ["brain.vtk"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "bridge" +title = "Bridge VRML model" +description = "VRML 2.0 model of a bridge from John Burkardt's WRL sample files, whose header says it was written by his IVREAD converter." +path = ["bridge.wrl"] +SPDX-License-Identifier = "LGPL-3.0-only" +provenance = "verified" +origin_url = "https://people.math.sc.edu/Burkardt/data/wrl_2/wrl_2.html" +origin_title = "John Burkardt, WRL Files, Version 2.0" +collection = "vtk-examples" +authors = ["John Burkardt"] +attribution = "bridge.wrl from John Burkardt's WRL data collection, https://people.math.sc.edu/Burkardt/data/wrl_2/wrl_2.html, GNU LGPL." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/bridge.wrl"] +notes = """ +Byte-identical to https://people.math.sc.edu/Burkardt/data/wrl_2/bridge.wrl +(git blob 503ee97a28d8aa04172cac0f87487e9c95f5783c on both sides). The index +page lists `bridge.wrl` among its sample files and states "The computer code +and data files described and made available on this web page are +distributed under the GNU LGPL license" without naming a version; the +`gnu_lgpl.txt` the page links is missing on that host, and the same file on +Burkardt's Florida State mirror +(https://people.sc.fsu.edu/~jburkardt/txt/gnu_lgpl.txt) is LGPL version 3, +which is the version recorded. The file's `WorldInfo` reads "VRML file +generated by IVREAD", Burkardt's converter; the page does not say who +modelled the bridge. Bill Lorensen added it to `lorensen/VTKExamples` in +July 2017 (commit 8c1faeff1d) for his VRML importer example, and the April +2019 import of that repository brought it here. +""" + +[[dataset]] +name = "bunny" +title = "Stanford Bunny" +description = "Range-scanned surface mesh of a ceramic rabbit figurine, the canonical test mesh of computer graphics." +path = ["bunny.ply"] +SPDX-License-Identifier = "LicenseRef-StanfordScanningRepository" +SPDX-FileCopyrightText = ["Stanford University Computer Graphics Laboratory"] +provenance = "verified" +origin_url = "http://graphics.stanford.edu/data/3Dscanrep/" +origin_title = "Stanford 3D Scanning Repository" +collection = "stanford-3d-scanning" +attribution = "Stanford Computer Graphics Laboratory." +redistributed_from = ["https://gitlab.kitware.com/vtk/vtk/-/blob/master/Testing/Data/bunny.ply.sha512", "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +modified = true +modification = "Stanford's `bun_zipper.ply` with the vertex order of every face reversed and the header property types rewritten (`float` to `float32`, `uchar int` to `uint8 int32`); the added header comment `modified by flipply` names the tool. The 35947 vertex lines are unchanged." +references = [ + { citation = "Turk, G. and Levoy, M. \"Zippered Polygon Meshes from Range Images.\" SIGGRAPH 1994, pp. 311-318.", doi = "10.1145/192161.192241" }, +] +notes = """ +The Stanford conditions of use permit free redistribution and research use +but exclude commercial use without permission from the Stanford Computer +Graphics Laboratory. This is not an open licence; downstream users shipping +a product for sale should contact Stanford or substitute another mesh. + +Stanford exempts the bunny from its cultural-sensitivity restrictions: "You can do anything you want to the Stanford bunny or the armadillo." + +The file is Stanford's `bun_zipper.ply` reconstruction (35947 vertices, 69451 +faces, header comment "zipper output"), compared against +http://graphics.stanford.edu/pub/3Dscanrep/bunny.tar.gz: the vertex lines are +byte-identical and all 69451 face lines list the same vertices in reverse +order. It has been in VTK's data since November 2007 (VTKData commit fa3c8a4, +Sean McBride, "added new image files for a new unit test to test the PLY +reader code"), is in the July 2013 tree this repository forked from, and +matches VTK's `Testing/Data/bunny.ply.sha512` content link. +""" + +[[dataset]] +name = "bunny_coarse" +title = "Stanford Bunny (coarse)" +description = "Decimated re-export of the Stanford Bunny in VTK XML PolyData format." +path = ["Bunny.vtp"] +SPDX-License-Identifier = "LicenseRef-StanfordScanningRepository" +SPDX-FileCopyrightText = ["Stanford University Computer Graphics Laboratory"] +provenance = "verified" +origin_url = "http://graphics.stanford.edu/data/3Dscanrep/" +origin_title = "Stanford 3D Scanning Repository" +collection = "stanford-3d-scanning" +attribution = "Stanford Computer Graphics Laboratory." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/Bunny.vtp"] +modified = true +modification = "Decimated from 35947 points to 872, scaled by a factor of two and recentred, and converted from the original `bunny.ply` to VTK XML PolyData." +notes = """ +Copied in April 2019 (commit 74bf994) from `src/Testing/Data/Bunny.vtp` in +Bill Lorensen's `lorensen/VTKExamples` repository on GitHub, where the git +blob is identical. Kitware's later mirror `vtk/vtk-examples` on GitLab holds +only a git-lfs pointer for the file (same SHA-256, aa0b1f7f...) and was not +the route. + + git -C vtk-examples cat-file -p HEAD:src/Testing/Data/Bunny.vtp + +The Stanford conditions of use permit free redistribution and research use +but exclude commercial use without permission from the Stanford Computer +Graphics Laboratory. This is not an open licence; downstream users shipping +a product for sale should contact Stanford or substitute another mesh. +""" + +[[dataset]] +name = "bunny_export" +title = "Stanford Bunny (time series)" +description = "Actor and property export of the Stanford Bunny: a multi-block collection plus 64 VTK XML PolyData files that all carry the same mesh and differ only in their camera, actor and property field data. Used to exercise scene exporters." +path = ["ExportBunny.vtp", "ExportBunny/**"] +SPDX-License-Identifier = "LicenseRef-StanfordScanningRepository" +SPDX-FileCopyrightText = ["Stanford University Computer Graphics Laboratory"] +provenance = "verified" +origin_url = "http://graphics.stanford.edu/data/3Dscanrep/" +origin_title = "Stanford 3D Scanning Repository" +collection = "stanford-3d-scanning" +attribution = "Stanford Computer Graphics Laboratory." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/ExportBunny.vtp"] +modified = true +modification = "Exported from the mesh in `Bunny.vtp`, once per camera and property state." +notes = """ +The Stanford conditions of use permit free redistribution and research use +but exclude commercial use without permission from the Stanford Computer +Graphics Laboratory. This is not an open licence; downstream users shipping +a product for sale should contact Stanford or substitute another mesh. + +All 65 files are byte-identical to `src/Testing/Data/ExportBunny.vtp` and +`src/Testing/Data/ExportBunny/` in `lorensen/VTKExamples` on GitHub, where +Bill Lorensen added them in February 2018 (commit a839f09f15), and they +arrived in the April 2019 import of that repository (commit 74bf994 here). +The same paths in `vtk/vtk-examples` on GitLab hold different blobs, so the +GitLab repository was not on the route. +""" + +[[dataset]] +name = "cad_model_case" +title = "PiBoy DMG vented rear case" +description = "Surface mesh of a custom rear case for the PiBoy DMG handheld, with added ventilation over the stock case." +path = ["cad/4947746/**"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://www.thingiverse.com/thing:4947746" +origin_title = "Thingiverse thing:4947746" +collection = "thingiverse" +authors = ["downerhouse"] +attribution = "PiBoy DMG Custom Rear Case With Ventilation by downerhouse (https://www.thingiverse.com/thing:4947746), licensed under CC BY 4.0." +modified = true +modification = "Converted to VTK XML PolyData." +notes = """ +The page's schema.org JSON-LD names the author (downerhouse), the publication +date (2021-09-02) and the licence URL creativecommons.org/licenses/by/4.0/: + + curl -sSL -A 'Mozilla/5.0' https://www.thingiverse.com/thing:4947746 | grep -o '"license":"[^"]*"' + +The Wayback capture of 18 September 2025 carries the same JSON-LD +(http://web.archive.org/web/20250918092401id_/https://www.thingiverse.com/thing:4947746). +The captures of 11 January and 26 September 2023 are JavaScript shells +without it, so read the version from the live page or the 2025 capture. The +visible "Creative Commons - Attribution" label carries no version; the +version recorded is the one in the structured data. +""" + +[[dataset]] +name = "caffeine" +title = "Caffeine molecule" +description = "Caffeine molecule in Protein Data Bank format, with a Gaussian Cube total-density volume." +path = ["caffeine.pdb", "m4_TotalDensity.cube"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "cake_easy" +title = "Cake photograph" +description = "Colour photograph of a cake, used as a texture and as image filter input." +path = ["cake_easy.jpg"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "calculix_frd" +title = "CalculiX FRD result" +description = "CalculiX result file in the FRD format, used to exercise the FRD reader." +path = ["mesh.frd"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyvista/pull/8255#issuecomment-3993408948" +origin_title = "pyvista pull request 8255, comment by 3rav" +authors = ["3rav"] +attribution = "CalculiX test result by GitHub user 3rav, contributed to pyvista/data, Apache License 2.0." +notes = """ +Made by GitHub user 3rav, the author of pyvista's CalculiX FRD reader +(pyvista pull request 8255), as a test file for that reader. This copy is +byte-identical to `mesh.frd` inside the `mesh.zip` that 3rav posted on that +pull request on 2026-03-03 ("File with results (DISP, STRESS, TEMP, STRAIN, +FORC, ERROR)"); pyvista/data pull request 63 brought it in, replacing the +smaller mesh-only file from pull request 62 by the same contributor. The +header records CalculiX Version 2.23, a run date of 3 March 2026 at 20:36, +two minutes before the comment was posted, empty user and host fields, a +single material named STEEL and 190 nodes. + +No other terms were stated, so the file is recorded under this repository's +Apache-2.0 licence on the basis that the contributor made it for this +repository's reader tests and supplied it through those pull requests. +Check with: + + curl -sSL -o mesh.zip https://github.com/user-attachments/files/25725857/mesh.zip + unzip -p mesh.zip mesh.frd | shasum # 2b79fc0a21d3 +""" + +[[dataset]] +name = "can_crushed_hdf_series" +title = "Crushed can, VTKHDF time series" +description = "Three time steps of the crushed can as VTKHDF unstructured grids." +path = ["hdf/can_0.hdf", "hdf/can_1.hdf", "hdf/can_2.hdf"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["2005-2008 Sandia Corporation, Kitware Inc."] +provenance = "verified" +origin_url = "https://gitlab.kitware.com/paraview/paraview/-/tree/v5.10.0/Testing/Data/FileSeries" +origin_title = "ParaView testing data, v5.10.0" +authors = ["Sandia National Laboratories"] +attribution = "ParaView testing data. Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc. BSD 3-Clause." +redistributed_from = ["https://github.com/pyvista/pyvista/issues/2352"] +notes = """ +Byte-identical to ParaView's `Testing/Data/FileSeries/can_0.hdf`, +`can_1.hdf` and `can_2.hdf` at tag v5.10.0: the SHA-512 content links there +begin 36488971f7ce, 0c9d44734af7 and 238731015b53 and match these files. +ParaView renamed them to `.vtkhdf` in June 2023 (commit fd9ec0e4). VTK has +never carried them. + + curl -sS "https://gitlab.kitware.com/api/v4/projects/paraview%2Fparaview/repository/files/Testing%2FData%2FFileSeries%2Fcan_0.hdf.sha512/raw?ref=v5.10.0" + +They reached this repository through pyvista/pyvista#2352, where the +contributor attached them as `paraview-can.zip` taken from the ParaView +testing data, and a maintainer added them in March 2022 (commit 8376fb8). +The Exodus QA records in the field data name the Sandia SEACAS applications +FASTQ and Gen3D and the solver PRONTO3D, as in `can_crushed_vtu`, and +ParaView's `Copyright.txt` at tag v5.10.0 names Sandia Corporation and +Kitware as the copyright holders under the BSD 3-Clause notice quoted in +`attribution`, so the recorded terms are those of the data's own author +rather than a redistributor's. +""" + +[[dataset]] +name = "can_crushed_vtu" +title = "Crushed can" +description = "Unstructured grid of a can being crushed, in VTK XML and VTKHDF form." +path = ["can.vtu", "hdf/can-vtu.hdf"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +notes = """ +Both files are VTK test data. `can.vtu` matches VTK's content link +`Testing/Data/can.vtu.sha512` (SHA-512 86ce9b2d...) and was added from +VTKDataFiles-9.3.0.tar.gz in pyvista/data#36. `hdf/can-vtu.hdf` matches the +link VTK published as `Testing/Data/can-vtu.hdf.sha512` between June and +December 2022 (SHA-512 624f0313..., VTK commits e5dab6a08b and 5ea071e78f); +VTK has since replaced the file and renamed it `vtkHDF/can-vtu.vtkhdf`. + + git -C VTK show e5dab6a08b:Testing/Data/can-vtu.hdf.sha512 + +Kitware publishes no per-file provenance for VTK Data, but the Exodus QA +records carried in the field data of both files name the toolchain FASTQ, +Gen3D 1.7, GJoin 1.12 and PRONTO3D 7.0.1, a run date of 16 May 1994, the +mesh files `can_half.g2d` and `block_half.g2d` and the title "self contact +test problem". FASTQ, Gen3D and GJoin are applications of Sandia National +Laboratories' SEACAS suite (https://github.com/sandialabs/seacas), so the +data is a Sandia simulation that Kitware redistributes. + + strings -n 6 can.vtu | grep -B2 -A6 PRONTO3D + +Sandia's terms for the simulation are not published, and the VTK Data BSD +notice covers Kitware's redistribution rather than Sandia's work, so the +terms are recorded as undetermined; a downstream user who needs more should +ask Kitware or Sandia. The VTKHDF time series `hdf/can_0.hdf` to +`hdf/can_2.hdf`, which came from ParaView, has its own entry, +`can_crushed_hdf_series`. +""" + +[[dataset]] +name = "carburetor" +title = "Carburetor" +description = "Scan of a carburetor." +path = ["carburetor.ply"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.laserdesign.com/sample-files/" +origin_title = "Laser Design sample files" +collection = "laser-design" +modified = true +modification = "Rewritten as a binary little-endian PLY by VTK's PLY writer (the header reads `VTK generated PLY File` and `vtkPolyData points and polygons: vtk4.0`); 251320 vertices and 500000 faces." +notes = """ +Laser Design Inc. publishes these scans in its public sample-file archive to +demonstrate its scanning services. The archive page states no licence of its +own, and the site footer asserts "(c) 2026 CyberOptics Corporation. All Rights +Reserved." + +The "Terms of Use" its footer links to, at cyberoptics.com, grants permission +"to temporarily download one copy of the materials ... for personal, +non-commercial transitory viewing only", and says that under that licence you +may not "use the materials for any commercial purpose", or "transfer the +materials to another person or 'mirror' the materials on any other server". +Whether that boilerplate is meant to govern the sample downloads is arguable, +but no grant of redistribution rights exists anywhere on the site, so the +terms are recorded as undetermined. Downstream users, especially commercial +ones, should contact Laser Design or substitute another mesh. + +The carburetor page (https://www.laserdesign.com/sample-files/carburetor/) +lists the scan as an Artec Spider capture offered as OBJ, PLY, STL and WRP +files behind a request form, so the bytes were not compared with the +published PLY. The header of this copy carries the fixed strings VTK's PLY +writer emits, so it was rewritten by VTK rather than exported by the scanner +software. +""" + +[[dataset]] +name = "carotid" +title = "Carotid artery flow" +description = "Volume of blood flow velocity and vector magnitude through a carotid artery." +path = ["carotid.vtk"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "cells" +title = "VTK cell type gallery" +description = "One file per VTK linear cell type, in both legacy and XML unstructured grid format, used to illustrate cell connectivity." +path = ["Cells/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "verified" +origin_url = "https://github.com/lorensen/VTKExamples/blob/master/src/Cxx/IO/WriteLegacyLinearCells.cxx" +origin_title = "lorensen/VTKExamples, WriteLegacyLinearCells and WriteXMLLinearCells" +collection = "vtk-examples" +authors = ["Bill Lorensen"] +attribution = "Bill Lorensen, VTK Examples, licensed under the Apache License 2.0." +notes = """ +Generated output of Bill Lorensen's WriteLegacyLinearCells example (commit +25d583186e, 2018-02-19, which added `src/Cxx/IO/WriteLegacyLinearCells.cxx` +together with the 16 `.vtk` files) and WriteXMLLinearCells example (commit +a92e083f1e, 2018-02-20, `src/Cxx/IO/WriteXMLLinearCells.cxx` together with +the 16 `.vtu` files) in `lorensen/VTKExamples`; the legacy files carry the +VTK writer header ("vtk output", DataFile Version 4.2). Imported into this +repository in April 2019, where all 32 files match the upstream blobs. The +data is the repository author's own work, so the repository licence, Apache +License 2.0, applies. +""" + +[[dataset]] +name = "cgns" +title = "CGNS example grids" +description = "A multi-element airfoil grid and a constricting channel grid in CGNS format." +path = ["cgns/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://cgns.org/current/examples.html" +origin_title = "CGNS example files" +authors = ["Chris Rumsey", "Marc Poinot"] +notes = """ +Both files are byte-identical to the gzipped downloads on the CGNS example +gallery, `multi.cgns.gz` and `sqnz_s.adf.cgns.gz` (compare with +`gunzip -c | shasum`). The gallery credits `multi.cgns` (structured, four +blocks, 2D multielement airfoil with cell-centred solution) to Chris Rumsey, +posted 14 April 2000 and revised 3 February 2014, and `sqnz_s.adf.cgns` +(structured, 12 blocks, 3D constricting channel with Family_t boundary +conditions) to Marc Poinot, posted 25 January 2016. The site is built from +https://github.com/CGNS/cgns.github.io, where the files sit under +`example_cgns_files/`; the README beside Rumsey's files is his note asking +the webmasters to post them, and the site's licensing page +(`source/license.rst`) covers "CGNS software", not the example data. The +page footer reads "Dedicated to the public domain with CC0 1.0", but the +dedication is site-wide and the grids are contributed binaries, so whether +it reaches them is unclear; the licence is left undetermined rather than +read as CC0. A downstream user who needs terms should ask the CGNS steering +committee or the named contributors. +""" + +[[dataset]] +name = "chest_ct" +title = "Chest CT volume" +description = "Short-integer chest CT volume in MetaImage format." +path = ["MetaIO/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "chi_field" +title = "Chi field BOV volume" +description = "Scalar field chunk in the Brick of Values format: a 50 by 50 by 50 float32 brick from a Sandia parallel I/O study." +path = ["chi_field/**"] +SPDX-License-Identifier = "BSD-3-Clause" +provenance = "verified" +origin_url = "https://github.com/pyvista/data/commit/3603cc5d7f06f165d1fa106d2646b98401f14bde" +origin_title = "VTK Data commit by Philippe Pébay, Sandia National Laboratories" +collection = "vtk-data" +authors = ["Philippe Pébay", "Ajith Mascarenhas"] +attribution = "Philippe Pébay and Ajith Mascarenhas, Sandia National Laboratories; contributed to VTK Data (BSD 3-Clause)." +references = [ + { citation = "P. Pébay and A. Mascarenhas. Current parallel I/O limitations to scalable data analysis. Sandia Report SAND2011-4648, Sandia National Laboratories, July 2011." }, +] +notes = """ +A 500000-byte file, a 50 by 50 by 50 float32 brick with no header. The VTK +Data commit that added it on 2011-08-22 is by Philippe Pébay +(pppebay@sandia.gov) and describes it as "Test data, corresponding to SANDIA +report SAND2011-4648", citing Pébay and Mascarenhas, "Current parallel I/O +limitations to scalable data analysis", July 2011: + + git show 3603cc5 --stat --format='%an <%ae> %ad%n%B' + +The author contributed it to the VTK Data collection himself, so the +collection's BSD-3-Clause terms are the basis recorded here; Kitware's +1993-2008 copyright notice does not name the Sandia authors, so no copyright +text is recorded. The file reached this repository in the March 2019 fork of +VTK Data and matches VTK's +`Testing/Data/chi_field/chi_chunk_0_700_0_50x50x50.bov.sha512` content link. +The report itself was not retrieved (OSTI did not respond and a web search +found only the related SAND2011-1265C); search https://www.osti.gov for +SAND2011-4648. +""" + +[[dataset]] +name = "chombo3d" +title = "Chombo AMR samples" +description = "Three-dimensional adaptive mesh refinement sample on three levels with refinement ratio 2, written as a VTK XML hierarchical box index (`chombo3d.vtm`) and sixteen zlib-compressed ImageData pieces carrying a Float64 cell array `phi`." +path = ["chombo3d/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7/folder/5afd93698d777f15ebe1b49e" +origin_title = "VTK Data, chombo3d folder" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019; every file matches the sha512 Girder records in the +collection's `chombo3d` folder. Berk Geveci added the sixteen `.vti` pieces +to VTK Data in commit d9df875 (2003-12-11, "Added new data and baseline for +AMR") and the `.vtm` index in commit c6cc6c7 (2005-09-30). Only the name +says Chombo: the files are VTK XML, not Chombo HDF5, and neither commit says +whether the field was computed with Chombo or generated for the test, so the +data's own author is inferred to be Kitware. Kitware's blanket +`Copyright.txt` notice covers the collection as a whole and is recorded here +as the licence for this entry. +""" + +[[dataset]] +name = "clouds" +title = "Global cloud cover" +description = "Stitched global cloud-cover image, 1024 by 512, used as an Earth overlay texture." +path = ["clouds.jpeg"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "http://xplanet.sourceforge.net/clouds.php" +origin_title = "xplanet cloud images" +collection = "vtk-data" +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +modified = true +modification = "Downsampled from the 2048-pixel original the JPEG comment names to 1024 by 512." +notes = """ +The file's own JPEG comment records its origin: +"http://xplanet.sourceforge.net/clouds/clouds_2048.jpg created Tue Jun 9 +21:53:22 UTC 2009", and the VTK Data commit that added it the same day +(928943f, David Thompson) says a larger version was obtained from +http://xplanet.sourceforge.net/clouds.php. That page is no longer served +(HTTP 403). Its Wayback capture at +http://web.archive.org/web/20100722035410/http://xplanet.sourceforge.net/clouds.php +offers the 2048 by 1024 and 4096 by 2048 maps and describes them as mosaics +of geostationary weather satellite images that "are only meant to make the +earth look pretty"; the capture at +http://web.archive.org/web/20140213032152/http://xplanet.sourceforge.net/clouds.php +says the xplanet author generates them from GOES, METEOSAT and GMS imagery +downloaded from Dundee University's Geostationary Satellite Imagery page. +Neither capture states terms of use, so the licence is undetermined and is +not the inherited collection's; a downstream user needing terms would have to +ask the xplanet author. The copy here came through the VTK Data fork, and +VTK's content link `Testing/Data/clouds.jpeg.sha512` matches the same bytes. +""" + +[[dataset]] +name = "clown" +title = "Clown facet mesh" +description = "Surface of a clown in the FACET file format." +path = ["clown.facet"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. The file's first line, `FACET FILE FROM VTK`, is the header +VTK's `vtkFacetWriter` (`IO/Geometry/vtkFacetWriter.cxx`) writes, and it was +added to VTK Data by Kitware's Andy Cedilnik on 2004-12-21 as test input for +`TestFacetReader` (commit b7b8eb7 in this repository's history), so it is +Kitware-generated test geometry covered by the collection's blanket +`Copyright.txt` notice, recorded here as the licence. VTK still distributes +the same bytes (`Testing/Data/clown.facet.sha512`). No further origin is +stated upstream. +""" + +[[dataset]] +name = "cow" +title = "Viewpoint cow" +description = "Surface mesh of a cow from the Viewpoint DataLabs model collection, in OBJ and VTK XML form and as an ASCII triangle mesh, together with a 3D Studio flamingo." +path = ["Viewpoint/**", "cow.g", "cow.obj", "cow.vtp"] +SPDX-License-Identifier = "LicenseRef-Viewpoint-DataLabs" +SPDX-FileCopyrightText = ["1992 Viewpoint Animation Engineering Inc."] +provenance = "verified" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +authors = ["Viewpoint Animation Engineering Inc."] +attribution = "(c) Copyright 1992 Viewpoint Animation Engineering Inc." +redistributed_from = ["https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data"] +notes = """ +The files carry their own terms in their headers: "(c) Copyright 1992 +Viewpoint Animation Engineering Inc. Sun Microsystems has been authorized to +freely distribute these Datasets. They are provided for unlimited use in +existing or modified form. The actual Dataset (ie, geometry) may not, however, +be resold in existing or modified form." + +`cow.obj` is dated 27 October 1992 and its header says it was "Contributed to +the FTP site at avalon.chinalake.navy.mil (129.131.31.11) by Scott R. Nelson +of Sun Microsystems"; no copy of that archive survives (the Wayback Machine +holds front pages of its successor avalon.viewpoint.com from 1997 but no cow +file). Jim Miller added the three `Viewpoint/` files to VTK Data on +2001-08-20 as "Files distributed with permission from Viewpoint", and Bill +Lorensen converted `cow.g` to `cow.vtp` there in December 2009; all four are +in the July 2013 tree this repository forked from. The root `cow.g` and +`cow.obj` are the same blobs again, imported in April 2019 from +`src/Testing/Data` in `lorensen/VTKExamples`. + +That restriction is narrower than VTK Data's BSD-3-Clause and follows the +geometry into the VTK conversions here, so it is recorded rather than the +collection licence. `authors` and the copyright name Viewpoint, not Kitware. +""" + +[[dataset]] +name = "cow_head" +title = "Cow head" +description = "Subdivided surface mesh of the head of the Viewpoint cow, carrying a Gauss curvature array." +path = ["cowHead.vtp"] +SPDX-License-Identifier = "LicenseRef-Viewpoint-DataLabs" +SPDX-FileCopyrightText = ["1992 Viewpoint Animation Engineering Inc."] +provenance = "verified" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +authors = ["Viewpoint Animation Engineering Inc."] +attribution = "(c) Copyright 1992 Viewpoint Animation Engineering Inc. Redistributed by Bill Lorensen in lorensen/VTKExamples." +modified = true +modification = "The head was cut from the Viewpoint cow, subdivided, and a `Gauss_Curvature` point array added." +notes = """ +This is the Viewpoint cow's head, not separate data. Its 4074 points occupy +x from 3.18 to 5.98, the front of the cow's x range, and every one of them +lies within 0.19 of a vertex of `Viewpoint/cow.obj` in that region, on a +model ten units long. See the `cow` entry for the terms the header carries. + +Lorensen published `lorensen/VTKExamples` under the Apache License 2.0, but +the Viewpoint terms cover the geometry "in existing or modified form", so +they follow into this derivative and are recorded here instead. +""" + +[[dataset]] +name = "crater" +title = "Mount Ruapehu crater" +description = "Fifteen-metre digital elevation model of the Mount Ruapehu crater in New Zealand Transverse Mercator." +path = ["Ruapehu_mag_dem_15m_NZTM.vtk"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = """ +Added in October 2019 with the commit message "add crater dataset" and no +recorded source. The grid is 1400 by 1200 at 15 metres, origin 1810000 by +5640000 in NZTM2000, and its header says it was written by Golden +Software's VTK exporter ("Created by Golden Software ioVtk.dll"), which does +not say which Golden Software product wrote it. Its companion GeoTIFF was +identified as a LINZ Topo50 clip and moved to the `ruapehu_topo50` entry; +this elevation model was not identified. Two candidates were not tested +against the grid values: the University of Otago's NZSoSDEM v1.0, a free +nationwide 15 metre DEM interpolated from LINZ topographic vector data +(https://www.otago.ac.nz/surveying/research/geospatial/digital-elevation-model), +and whatever DEM the aeromagnetic study of Mt Ruapehu by Miller et al. +(2020, doi:10.1029/2019JB018247) used, which the `mag` in the filename +suggests. A downstream user should treat the terms as undetermined until +one of these is confirmed. + +The PyVista pull request that introduced the example (pyvista/pyvista#407) +thanks @craigmillernz for it, so the contributor is known even though the +data's origin is not. +""" + +[[dataset]] +name = "cubemap_debug" +title = "Debug cube map" +description = "Six-face cube map with per-face labels and orientation markers, for diagnosing cube map orientation." +path = ["cubemapDebug/**"] +SPDX-License-Identifier = "Apache-2.0" +SPDX-FileCopyrightText = ["2023 The Babylon.js team"] +provenance = "verified" +origin_url = "https://github.com/BabylonJS/Babylon.js/tree/master/packages/tools/playground/public/textures/cubemapDebug" +origin_title = "BabylonJS/Babylon.js" +attribution = "Babylon.js, Copyright 2023 The Babylon.js team, licensed under the Apache License 2.0." +notes = "The copyright line is the one Babylon.js publishes in `NOTICE.md` at the repository root (https://github.com/BabylonJS/Babylon.js/blob/master/NOTICE.md); `license.md` there is the Apache-2.0 text." + +[[dataset]] +name = "cubemap_park" +title = "Park cube map" +description = "Six-face cube map of a park, at 512x512 per face." +path = ["cubemap_park/**"] +SPDX-License-Identifier = "CC-BY-3.0" +provenance = "verified" +origin_url = "http://www.humus.name/index.php?page=Textures" +origin_title = "Humus texture library" +authors = ["Emil Persson"] +attribution = "Emil Persson (Humus), http://www.humus.name, licensed under Creative Commons Attribution 3.0 Unported." +redistributed_from = ["https://math.hws.edu/graphicsbook/source/webgl/cubemap-textures/park/"] +modified = true +modification = "Downsampled to 512x512 per face by David Eck for use with WebGL in his online textbook." +notes = """ +The zip's `readme.txt` states the author, the download from the Humus +texture page, David Eck's resizing for his textbook and the CC BY 3.0 +Unported licence. `posx.jpg` and `negx.jpg` are byte-identical (sha256) to +the files served from the textbook directory recorded above. +""" + +[[dataset]] +name = "cubemap_space" +title = "Deep space cube map" +description = "Star field cube maps at 4k and 16k resolution, built from the NASA Scientific Visualization Studio Gaia DR2 all-sky starmap." +path = ["cubemap_space/**"] +SPDX-License-Identifier = "LicenseRef-NASA-Media" +provenance = "verified" +origin_url = "https://svs.gsfc.nasa.gov/4851" +origin_title = "NASA/Goddard Scientific Visualization Studio" +attribution = "NASA/Goddard Space Flight Center Scientific Visualization Studio. Gaia DR2: ESA/Gaia/DPAC. Constellation figures based on those developed for the IAU by Alan MacRobert of Sky and Telescope magazine (Roger Sinnott and Rick Fienberg)." +modified = true +modification = "Converted from OpenEXR to JPEG with a brightness scale, then projected from equirectangular to a cube map with https://jaxry.github.io/panorama-to-cubemap/." + +[[dataset]] +name = "damavand_volcano" +title = "Damavand volcano magnetotelluric volume" +description = "Three-dimensional resistivity volume beneath Mount Damavand, with the two STL surfaces plotted beside it in the same example." +path = ["damavand-volcano.vtk", "gebco7510_49cl.stl", "gebco7510_55cl.stl"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://github.com/AlexeyPechnikov/ParaView-MoshaFault" +origin_title = "AlexeyPechnikov/ParaView-MoshaFault" +authors = ["Alexey Pechnikov"] +redistributed_from = ["https://github.com/banesullivan/damavand-volcano"] +notes = """ +Bane Sullivan's damavand-volcano repository publishes an MIT LICENSE (2020) +and its data files are byte-identical to files in Alexey Pechnikov's ParaView- +MoshaFault repository, also MIT, which is where the Damavand products were +assembled. Both licences cover the repositories' own work; the geophysical +survey behind the resistivity volume and the elevation data behind the area- +of-interest surface are not identified in either, so the terms for the data +itself are left undetermined. + +The two `gebco7510_*.stl` surfaces are byte-identical to +`data/gebco7510_49cl.stl` and `data/gebco7510_55cl.stl` in damavand-volcano +(blobs 75631add1ba5 and 7be04f33157a) and `gh search code gebco7510` finds +them in no other repository; they are not in ParaView-MoshaFault, whose +README describes its `GEBCO_2019.subset.*` files as density anomaly models +inverted from the GEBCO 2019 grid with 7.5-10 km and 15-20 km bandpass +filters. Bane Sullivan's `damavand.py` example plots the two surfaces in red +beside the volume. Their terms are undetermined for the same reason as the +volume's. +""" + +[[dataset]] +name = "dark_matter_halo" +title = "Dark matter halo point clouds" +description = "Equal-mass particle positions from a cosmological simulation, filtered to a single dark matter halo, at two resolutions." +path = ["point-clouds/findus23/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyvista/discussions/2576" +origin_title = "PyVista discussion 2576" +authors = ["Lukas Winkler (Findus23)"] +modified = true +modification = "Converted from CSV to float32 NumPy arrays." +notes = """ +Contributed by GitHub user Findus23, whose profile (https://github.com/Findus23) +gives the name Lukas Winkler, in PyVista discussion 2576. In the reply of +28 June 2022 the contributor states that the particles are equal-mass +particles from a cosmological simulation filtered to one dark matter halo +and links the CSV files at https://cloud.lw1.at/s/ZHt9GBww8QDHPps. +`halo_low_res.npy` equals that share's `halo_low_res.csv` read with +`skip_header=1` and cast to float32 (32314 by 3); `halo_high_res.npy` is +2062256 by 3, which matches the 2062257 lines the contributor quotes for +`halo_high_res.csv` once the header line is discounted. The simulation is +not named and the contributor stated no terms, so the licence is +undetermined; ask the contributor before redistributing outside PyVista. +""" + +[[dataset]] +name = "dc_inversion" +title = "DC resistivity inversion" +description = "Result of a direct-current resistivity inversion problem." +path = ["dc-inversion.zip"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = "Added in May 2019 with the commit message \"add dc inversion problem data\" and no recorded source or terms." + +[[dataset]] +name = "delaunay_example" +title = "Delaunay example points" +description = "Point set used to demonstrate Delaunay triangulation." +path = ["250.vtk"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = "Added in February 2020 with the commit message \"add delaunay points\". No source, author or terms of use were recorded, and none could be established from the file itself." + +[[dataset]] +name = "dicom_directory" +title = "DICOM directory sample" +description = "Single sagittal spine MR slice from 1994, used to exercise directory-based DICOM reading. Carries an unredacted patient identity in its header: see the notes before using it." +path = ["DICOMDirectory/**", "mr.001"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +redistributed_from = ["https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data/DICOMDirectory"] +notes = """ +This file carries an identifiable patient's data and should not be used or +redistributed until that is resolved. + +It is a 1994 sagittal spine MR from a Siemens MAGNETOM VISION. It has the +128-byte preamble but no `DICM` magic and no file-meta group, starting +straight into an implicit-VR dataset, which is likely why nobody had parsed +it. Reading the tags directly shows `PatientName` populated with a +caret-separated personal name rather than a study code, `PatientBirthDate` +populated with a full date, `PatientID` embedding that same date, +`PatientSex`, `PatientAge` and `PatientWeight` populated, `AccessionNumber` +populated, `StudyDate` and `StudyTime` giving the acquisition to the +millisecond, `DeviceSerialNumber` populated, and `InstitutionName` and +`StationName` both holding the same string naming a radiology department. A +Siemens private tag `(0051,1010)` repeats the name, the identifier, the date +of birth and the institution as burned-in display text, so removing the +standard tags alone would not de-identify it. The values are internally +consistent, which argues they are real rather than placeholders. + +The identifiers are not reproduced here. They can be read from the file with +a short parser; see `Establishing where a dataset came from` in +CONTRIBUTING.md. + +The trail ends at VTK Data: `mr.001` entered VTKData on 2004-03-30 (commit +79f41c7, "added sample dicom file") and came here with the March 2019 fork; +`DICOMDirectory/mr.001` is the same bytes, copied in April 2019 from +`src/Testing/Data/DICOMDirectory` in `lorensen/VTKExamples`. Nothing in VTK +names the hospital or a release, and the Girder collection page states no +origin or terms, so the origin is inferred from the redistribution record +only. + +No licence is recorded because none can be: Kitware's collection notice +cannot license a hospital's patient study, and no consent or release was +found. The same bytes are distributed by VTK as `Testing/Data/mr.001` +(SHA-512 `c0f3a78e...`), so this is not only this repository's to fix. +""" + +[[dataset]] +name = "dicom_knee" +title = "Knee DICOM slice" +description = "Single MR slice of a knee in DICOM format." +path = ["DICOM_KNEE.dcm"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = """ +Added in March 2019 with the commit message "add DICOM knee image" and no +recorded source. The header states the file was de-identified with MATLAB's +dicomanon (PatientIdentityRemoved = YES, DeidentificationMethod = "DICOMANON +(rev R2010a) - PS 3.15-2008 Table E.1-1", ImplementationVersionName "MATLAB +IPT 9.4") and the patient name, birth date, patient ID, accession number, +institution, referring physician, sex and study ID tags are empty, with no +private elements. It is a GE Medical Systems Signa HDxt 1.5 T MR slice, 512 +by 512, instance 64 of series 3, study date 2014-06-19, with +PerformedProcedureStepDescription "RM GINOCCHIO D" (Italian for a right-knee +MR), which corroborates "knee". The header was not traced to a public +collection, so neither the origin nor the terms of use could be established; +downstream users should treat its provenance as unresolved. +""" + +[[dataset]] +name = "dicom_stack" +title = "CPTAC-SAR DICOM stack" +description = "Three-slice axial MR scout of a forearm, in DICOM format, from the CPTAC Sarcomas collection of The Cancer Imaging Archive." +path = ["DICOM_Stack/**"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://www.cancerimagingarchive.net/collection/cptac-sar/" +origin_title = "The Cancer Imaging Archive, CPTAC-SAR collection" +attribution = "National Cancer Institute Clinical Proteomic Tumor Analysis Consortium (CPTAC). Radiology Data from the Clinical Proteomic Tumor Analysis Consortium Sarcomas [CPTAC-SAR] collection, The Cancer Imaging Archive. Publications using this data must also carry the CPTAC statement: \"Data used in this publication were generated by the National Cancer Institute Clinical Proteomic Tumor Analysis Consortium (CPTAC).\"" +notes = "The collection page lists CC BY 4.0 for the DICOM images as of Version 10, updated 2023-05-10; earlier versions of the collection stated CC BY 3.0. Use is additionally subject to the TCIA data usage policy, https://www.cancerimagingarchive.net/data-usage-policies-and-restrictions/, which forbids attempting to re-identify participants and requires that publications acknowledge the dataset and the repository." +references = [ + { citation = "National Cancer Institute Clinical Proteomic Tumor Analysis Consortium (CPTAC). (2019). The Clinical Proteomic Tumor Analysis Consortium Sarcomas Collection (CPTAC-SAR) (Version 10) [Data set]. The Cancer Imaging Archive.", doi = "10.7937/TCIA.2019.9bt23r95" }, + { citation = "Clark, K. et al. \"The Cancer Imaging Archive (TCIA): Maintaining and Operating a Public Information Repository.\" Journal of Digital Imaging 26(6), 2013, pp. 1045-1057.", doi = "10.1007/s10278-013-9622-7" }, +] + +[[dataset]] +name = "dolfin_mesh" +title = "DOLFIN mesh" +description = "Finite element mesh in the legacy DOLFIN XML format: 2868 vertices and 5400 triangles from the Stokes Taylor-Hood demo." +path = ["dolfin_fine.xml"] +SPDX-License-Identifier = "LGPL-3.0-or-later" +provenance = "verified" +origin_url = "https://bitbucket.org/fenics-project/dolfin/src/master/demo/documented/stokes-taylor-hood/" +origin_title = "DOLFIN demo stokes-taylor-hood (legacy FEniCS)" +authors = ["FEniCS Project"] +attribution = "FEniCS Project, DOLFIN demo mesh dolfin_fine.xml (https://bitbucket.org/fenics-project/dolfin/src/master/demo/documented/stokes-taylor-hood/), LGPL-3.0-or-later." +modified = true +modification = "Stored uncompressed; the bytes equal the gunzipped upstream dolfin_fine.xml.gz." +notes = """ +Added in December 2019 with the commit message "add dolfin mesh". The file +(478288 bytes, sha256 68e77b6b5dbc5d01...) is byte-identical to the +gunzipped `demo/documented/stokes-taylor-hood/dolfin_fine.xml.gz` in the +legacy DOLFIN repository (fetch the raw file from bitbucket.org, `gunzip`, +then `cmp`). DOLFIN's README.rst states that it "is free software: you can +redistribute it and/or modify it under the terms of the GNU Lesser General +Public License ... either version 3 of the License, or (at your option) any +later version", and `COPYING.LESSER` is present; the mesh carries no +separate notice, so the repository licence is recorded. +""" + +[[dataset]] +name = "dolfinx_checkpoint" +title = "DOLFINx checkpoint" +description = "XDMF files for the XDMF reader: a meshio-written quadratic-triangle surface mesh, and two HDF5-backed time series written by legacy FEniCS/DOLFIN, with and without checkpoint (FiniteElementFunction) metadata." +path = ["dolfinx/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyvista/pull/2839#issuecomment-1173408204" +origin_title = "pyvista PR 2839, comment by Rémi Delaporte-Mathurin with xdmf_files.zip" +authors = ["Rémi Delaporte-Mathurin", "Tetsuo Koyama"] +redistributed_from = ["https://github.com/pyvista/data/pull/26"] +notes = """ +`checkpoint.xdmf`, `checkpoint.h5`, `no_checkpoint.xdmf` and `no_checkpoint.h5` +are byte-identical (sha256 f91fbeba..., d60dbfa4..., bfe6d83e..., 98958f6f...) +to the four files in `xdmf_files.zip` that Rémi Delaporte-Mathurin posted on +2022-07-04 in pyvista PR 2839 +(https://github.com/pyvista/pyvista/files/9037095/xdmf_files.zip), together +with the script that generated them, which starts `import fenics as f` and +writes a `UnitCubeMesh(8, 8, 8)` time series with `XDMFFile.write` and +`XDMFFile.write_checkpoint`; they are legacy DOLFIN output, not DOLFINx. +Tetsuo Koyama added them to this repository in pull request #26 (2023-02-19). +`mesh.xdmf` (970 points, 484 `Triangle_6` cells, Format="XML") carries +meshio's `]]>` +marker and was made by Tetsuo Koyama for pull request #12 (2022-06-22, "See +pyvista/pyvista#2839"); as a contributor's own file submitted here with no +other terms, its basis is this repository's Apache-2.0. The checkpoint files +were made by Delaporte-Mathurin for the reader's tests and posted with no +terms, so the licence of the set is recorded as undetermined; ask him before +reusing them outside PyVista's tests. +""" + +[[dataset]] +name = "doorman" +title = "Doorman character" +description = "Textured character model with diffuse, normal and specular maps for the body, the teeth and the eyes." +path = ["doorman/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data/doorman" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository (Apache-2.0), where the nine files were added on 2017-07-24 as +OBJImporter test data (commit aaaf21e916, "ENH: Add OBJImporter and test +data") with no source named; all nine match the upstream blobs. The OBJ and +MTL headers read "# Blender v2.66 (sub 0) OBJ File: 'doorman.blend'" and +"# Blender MTL File: 'doorman.blend'", with group `rdmobj02` and materials +`m_doorMan_*`, so the files are an export of a Blender character by an +unnamed author, not something generated for the examples. The same +`doorman.obj` blob (5a1b1d29b377) was already committed on 2017-03-14, four +months before Lorensen's commit, in the Unity project +https://github.com/Plenituz/transformPovray (`Assets/New Folder/doorman.obj`, +alongside `.tga` versions of the same textures), which shows the model +circulated before VTK Examples picked it up. No page publishing the model or +stating its terms was found, so the origin is inferred to lie beyond VTK +Examples and the terms are recorded as undetermined; the repository licence +does not establish the model's terms. Downstream users should not rely on +Apache-2.0 for these files. +""" + +[[dataset]] +name = "dragon" +title = "Stanford Dragon" +description = "Range-scanned surface mesh of a ceramic dragon figurine." +path = ["dragon.ply"] +SPDX-License-Identifier = "LicenseRef-StanfordScanningRepository" +SPDX-FileCopyrightText = ["Stanford University Computer Graphics Laboratory"] +provenance = "verified" +origin_url = "http://graphics.stanford.edu/data/3Dscanrep/" +origin_title = "Stanford 3D Scanning Repository" +collection = "stanford-3d-scanning" +attribution = "Stanford Computer Graphics Laboratory." +redistributed_from = ["https://gitlab.kitware.com/vtk/vtk-examples"] +notes = """ +The Stanford conditions of use permit free redistribution and research use +but exclude commercial use without permission from the Stanford Computer +Graphics Laboratory. This is not an open licence; downstream users shipping +a product for sale should contact Stanford or substitute another mesh. + +Stanford additionally names this model as culturally significant and asks +that it not be animated, morphed, subjected to Boolean operators, or shown +having nasty things happen to it. Only the bunny and the armadillo are +exempted from that request. +""" +references = [ + { citation = "Curless, B. and Levoy, M. \"A Volumetric Method for Building Complex Models from Range Images.\" SIGGRAPH 1996.", doi = "10.1145/237170.237269" }, +] + +[[dataset]] +name = "drill" +title = "Power drill" +description = "Scan of a power drill: 124978 vertices and 250000 triangles exported by Artec scanning software." +path = ["drill.obj"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://web.archive.org/web/20190825115042/https://www.laserdesign.com/drill-scan-data" +origin_title = "Laser Design sample file: Drill (archived 2019-08-25)" +collection = "laser-design" +redistributed_from = ["http://3dgallery.gks.com/2015/ryobi/index1.php"] +notes = """ +Laser Design published this scan as the sample file "Drill" (Type: .STL, +Artec Spider, Reverse Engineering) with the download served from its GKS +gallery at http://3dgallery.gks.com/2015/ryobi/index1.php; the OBJ header +reads "File exported by Artec Group 3D Scanning Solutions". PyVista's +`download_drill` fetched that gallery URL from July 2019 (pyvista commit +24cec36d3) and saved it as `pepper.obj`; the gallery went offline in early +2021 (pyvista PR 1226), and the file was committed here from a maintainer's +cache as `pepper.obj` and renamed `drill.obj` the same day (commits 20264eb +and 00f3322, 9 March 2021). The live +https://www.laserdesign.com/drill-scan-data now returns 404, the +sample-files page no longer lists the drill, and the gallery has no Wayback +capture, so the bytes could not be compared with the source. + +The sample-file pages state no licence of their own, and the site footer +asserts "(c) 2026 CyberOptics Corporation. All Rights Reserved." The "Terms +of Use" the footer links to, at cyberoptics.com, grants permission "to +temporarily download one copy of the materials ... for personal, +non-commercial transitory viewing only", and says that under that licence +you may not "use the materials for any commercial purpose", or "transfer the +materials to another person or 'mirror' the materials on any other server". +Whether that boilerplate is meant to govern the sample downloads is arguable, +but no grant of redistribution rights exists anywhere on the site, so the +terms are recorded as undetermined. Downstream users, especially commercial +ones, should contact Laser Design or substitute another mesh. +""" + +[[dataset]] +name = "earth_models" +title = "Global topography and coastlines" +description = "ETOPO1 global relief downsampled to ten arc-minutes, a land-only variant, and world coastlines, projected to a sphere." +path = ["EarthModels/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "http://web.archive.org/web/20191018222040/http://www.earthmodels.org/data-and-tools/topography/etopo" +origin_title = "earthmodels.org, ETOPO example files for ParaView (Wayback Machine)" +references = [ + { citation = "Amante, C. and B. W. Eakins, ETOPO1 1 Arc-Minute Global Relief Model: Procedures, Data Sources and Analysis. NOAA Technical Memorandum NESDIS NGDC-24, 19 pp, March 2009." }, +] +notes = """ +The three files were published by earthmodels.org, the LMU Munich geophysics +site (its imprint names the Department of Earth and Environmental Sciences, +Geophysics, Ludwig-Maximilians-University Munich), which the Wayback Machine +archived. Its ETOPO page lists `ETOPO_10min_Ice.vtp` ("Global topography in +a resolution of 10 arc minutes") and `ETOPO_10min_Ice_only-land.vtp` ("Same, +but only land; created using the threshold filter (exclude everything below +zero) and then the 'extract surface' filter") under "Example Files for +Paraview", and states "License: public domain?" with Amante and Eakins 2009 +as the author. Its Los Alamos coastlines page +(http://web.archive.org/web/20191218195505/http://www.earthmodels.org/data-and-tools/coastlines/los-alamos) +lists `Coastlines_Los_Alamos.vtp`, states "License: probably public domain" +and says the data "has its origins at the Los Alamos National Laboratory. It +has been handed on to other people several times, so the creator remains +unknown." The archived coastlines file is byte-identical to the copy here: + + curl -sSL -o c.vtp 'http://web.archive.org/web/20180401164951id_/http://www.earthmodels.org/data-and-tools/coastlines/Coastlines_Los_Alamos.vtp' + shasum -a 256 c.vtp Data/EarthModels/Coastlines_Los_Alamos.vtp # both 5bd3bbff... + +The two ETOPO files were not archived, but the page names them exactly and +`ETOPO_10min_Ice.vtp` has 2336041 points, a 2161 by 1081 ten arc-minute +global grid. Added here in March 2019 for PVGeo ("add global topo", "add +coastlines"). Neither page states terms for the derived files, so the +licence is left undetermined; downstream users needing certainty should +rebuild from NOAA ETOPO1, a US federal work, or ask LMU Munich geophysics. +""" + +[[dataset]] +name = "electronics_cooling" +title = "Electronics box conjugate heat transfer" +description = "Conjugate heat transfer analysis of an electronics enclosure, split into the solid structure surface and the surrounding air volume." +path = ["fvm/cooling_electronics/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.simscale.com/docs/tutorials/thermal-management-cht-analysis-electronics-box/" +origin_title = "SimScale thermal management tutorial" +collection = "simscale" +modified = true +modification = "Read from the OpenFOAM case at t=1000, clipped, split into structure and air, and re-saved; roughly 400 MB zipped reduced to about 50 MB." +notes = """ +Read from the SimScale tutorial project. The tutorial page links an import +copy (https://www.simscale.com/workbench/?publiclink=59f9c463-29b2-4589-b1b3-9103baaa6915) +and the finished project +(https://www.simscale.com/workbench/?pid=6153102958706297277), and +pyvista/data pull request 29 says the OpenFOAM case was obtained from +SimScale's public examples and post-processed with the script recorded +there. The project was created by the SimScale account itself: public +copies of it, for example +https://www.simscale.com/projects/CaryTang/advanced_tutorial-_thermal_management_of_an_electronics_box_using_cht_1/, +show "simscale created" it in their project history. SimScale's Terms and +Conditions (Version July 2023, clause 5.2) grant visitors reuse rights only +over content uploaded or generated by a customer under a Free Plan, which +this project is not, and neither the tutorial page nor the project states +terms, so the terms are undetermined. A downstream user who needs terms +should ask SimScale. +""" + +[[dataset]] +name = "embryo" +title = "Embryo volume" +description = "SLC volume of an embryo." +path = ["embryo.slc"] +SPDX-License-Identifier = "MIT" +SPDX-FileCopyrightText = ["2020 M. Musy"] +provenance = "inferred" +origin_url = "https://vedo.embl.es/examples/data/" +origin_title = "vedo example data" +authors = ["Marco Musy"] +attribution = "vedo example data, copyright 2020 M. Musy, MIT licence." +notes = """ +Byte-identical (sha256 512cd121...) to `embryo.slc` served by vedo at +https://vedo.embl.es/examples/data/embryo.slc, and the same git blob +3ee3b762 that Marco Musy committed to vtkplotter, now `marcomusy/vedo`, as +`data/embryo.slc` on 2018-02-23 (commit a722c9d9), two years before it was +added here in February 2020 with the commit message "add embryo" and no +recorded source. The data directory's `LICENSE.txt` +(https://vedo.embl.es/examples/data/LICENSE.txt) assigns MIT, copyright 2020 +M. Musy, to every file it does not list separately, and `embryo.slc` is not +listed separately, which is the basis for the licence recorded here. +Nothing published by vedo says whose embryo was scanned or how, so whether +Musy authored the volume or only redistributes it is inferred from that +blanket clause. + +The file is a 256 by 256 by 256 8-bit SLC volume whose run-length stream is +one byte short on every plane, which is why PyVista reads it through a +custom loader. +""" + +[[dataset]] +name = "emg3d_dipole" +title = "Electromagnetic dipole fields" +description = "Absolute values of the x, y and z components of the electric and magnetic fields of an electric dipole source in a whole-space with anisotropic resistivity, computed with emg3d." +path = ["emg3d/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "verified" +origin_url = "https://github.com/pyvista/data/blob/5b579398bb3eee0faf36abf01b33b9e3552de01d/Data/emg3d/dipole/README.md" +origin_title = "pyvista/data, emg3d dipole README with the generating script" +authors = ["Alex Kaszynski"] +attribution = "Generated by Alex Kaszynski for PyVista with emg3d (https://github.com/emsig/emg3d) and contributed to pyvista/data under its Apache-2.0 licence." +modified = true +modification = "The absolute value of each field component was cast to float32 and written as point scalars (`efield_fx`, `efield_fy`, `efield_fz`; `hfield_fx`, `hfield_fy`, `hfield_fz`) on a unit-spacing uniform grid with the shape of the x component, so the stretched emg3d mesh coordinates are not preserved." +notes = """ +The generating script is in the README that came with the files (commit +5b57939, Alex Kaszynski, 2022-07-23, removed in b91ceb8 when the per-dataset +READMEs were migrated into this table). It adapts the emg3d gallery minimum +example, https://emsig.xyz/emg3d-gallery/gallery/tutorials/minimum_example.html, +with a mesh built for 160 Hz, a solve at 20 Hz and resistivities of 1.5, 1.8 +and 3.3 in x, y and z, so the values here are not those shown on the gallery +page. Both files are legacy `DATASET STRUCTURED_POINTS` with `SPACING 1 1 1` +and `ORIGIN 0 0 0`, 96 by 97 by 97 points for `efield.vtk` and 97 by 96 by 96 +for `hfield.vtk`. + +emg3d itself is Apache-2.0, but simulation output is not a derivative of the +solver source. The files were made for this repository by its maintainer and +committed directly with no other terms, so the repository's Apache-2.0 +licence is the basis recorded here. +""" + +[[dataset]] +name = "emoji" +title = "Emoji image" +description = "Colour image of an emoji, used as a texture." +path = ["emote.jpg"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "ensight_cylinder_crossflow" +title = "Cylinder in crossflow" +description = "Two-dimensional steady-state simulation of a cylinder in crossflow at Reynolds number 35, showing two downstream vortices. Pressure, velocity and vorticity magnitude are stored." +path = ["EnSight/CylinderCrossflow/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "verified" +origin_url = "https://github.com/pyvista/data/pull/2" +origin_title = "pyvista/data pull request 2" +authors = ["Matthew Flamm"] +attribution = "Cylinder in crossflow at Re 35, generated by Matthew Flamm with ANSYS Fluent and contributed to pyvista/data under its Apache-2.0 licence." +modified = true +modification = "Renamed from `.encas` to `.case` and the SCRIPTS section removed from the case file, as stated in the pull request." +notes = """ +Generated by the contributor with ANSYS Fluent 20.1 and exported in EnSight +Gold format, as stated in https://github.com/pyvista/data/pull/2 ("This +dataset is in EnSight Gold format as output from ANSYS Fluent") and +https://github.com/pyvista/pyvista/pull/1441 ("I generated my own dataset"); +the geometry file header reads "Fluent 20.1 Exported Ensight Model Geometry +File". The contributor states the run was not aimed at accuracy and was not +validated. The files were made for this repository and submitted in that +pull request with no other terms, so the repository's Apache-2.0 licence is +the basis recorded here. +""" + +[[dataset]] +name = "ensight_lshape" +title = "L-shape EnSight Gold case" +description = "EnSight Gold case for an L-shaped structure with multiple time sets." +path = ["EnSight/LShape.case", "EnSight/LShape_displacement.var", "EnSight/LShape_geometry.geo"] +SPDX-License-Identifier = "Apache-2.0" +SPDX-FileCopyrightText = ["Paul Hofer"] +provenance = "inferred" +origin_url = "https://github.com/pyvista/data/pull/33" +origin_title = "pyvista/data pull request 33" +authors = ["Paul Hofer"] +attribution = "Paul Hofer, contributed to pyvista/data in pull request 33, Apache License 2.0." +notes = """ +Contributed by Paul Hofer (GitHub advktEntnschdl) in +https://github.com/pyvista/data/pull/33 on 2024-01-19 as a test case with two +time sets for https://github.com/pyvista/pyvista/pull/5492: "displacement +data for three 3D elements in an L shaped configuration". The geometry +file's description lines read `EdelweissFE` and `*export*`, EdelweissFE's +EnSight output manager writes the same `C Binary` and `BEGIN TIME STEP` +binary layout +(https://github.com/EdelweissFE/EdelweissFE/blob/master/edelweissfe/outputmanagers/ensight.py), +and the contributor is a developer of that code (`gh api +'search/commits?q=repo:EdelweissFE/EdelweissFE+author:advktEntnschdl'` +returns 88 commits), so the case is his own export from it; that step is +inference. The files were made for this repository and submitted with no +other terms, so the repository's Apache-2.0 licence is recorded as their +basis. EdelweissFE's own LGPL-2.1 licence covers the code, not data it +exports. +""" + +[[dataset]] +name = "ensight_naca" +title = "NACA airfoil EnSight case" +description = "EnSight Gold binary case for flow around a NACA airfoil." +path = [ + "EnSight/naca.bin.case", + "EnSight/naca.gold.bin.DENS_1", + "EnSight/naca.gold.bin.DENS_3", + "EnSight/naca.gold.bin.geo", +] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "ensight_simple_tetra" +title = "Simple tetrahedral EnSight Gold case" +description = "Single-tetrahedron mesh in EnSight Gold format with no time steps." +path = ["simple_tetra/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/pyvista/data/pull/59" +origin_title = "pyvista/data pull request 59" +authors = ["riku-sakamoto"] +attribution = "riku-sakamoto, pyvista/data pull request 59, licensed under the Apache License 2.0." +notes = """ +Contributed by riku-sakamoto in https://github.com/pyvista/data/pull/59 +("Add a simple tetrahedral shape in EnSight Gold format") for +https://github.com/pyvista/pyvista/pull/7804. `example.geo` is headed +"Simple Tetra example" and holds four points on the unit axes and one +`tetra4` element; `example.case` only names it. The pull request states no +other terms, so the files stay under this repository's Apache-2.0 licence, +which is the basis recorded here. The origin is inferred rather than +verified because the request does not say in words that the mesh was written +for it. +""" + +[[dataset]] +name = "ensight_test_cases" +title = "EnSight reader test cases" +description = "EnSight Gold and EnSight 6 cases in ASCII and binary form, covering rectilinear grids, blow-moulding results, elements and per-element variables. Used to exercise the EnSight reader." +path = [ + "EnSight/RectGrid_ascii.case", + "EnSight/RectGrid_ascii.geo", + "EnSight/RectGrid_ascii_pd_scalars", + "EnSight/RectGrid_ascii_pd_vectors", + "EnSight/RectGrid_bin.case", + "EnSight/RectGrid_bin.geo", + "EnSight/RectGrid_bin_pd_scalars", + "EnSight/RectGrid_bin_pd_vectors", + "EnSight/TEST.case", + "EnSight/TEST_bin.case", + "EnSight/blow1_ascii.case", + "EnSight/blow1_ascii.geo", + "EnSight/blow1_ascii_cd_displacement", + "EnSight/blow1_ascii_cd_thickness", + "EnSight/blow1_ascii_pd_displacement", + "EnSight/blow1_ascii_pd_displacement1", + "EnSight/blow1_ascii_pd_thickness", + "EnSight/blow1_ascii_pd_thickness1", + "EnSight/blow1_bin.case", + "EnSight/blow1_bin.geo", + "EnSight/blow1_bin_cd_displacement", + "EnSight/blow1_bin_cd_thickness", + "EnSight/blow1_bin_pd_displacement", + "EnSight/blow1_bin_pd_displacement1", + "EnSight/blow1_bin_pd_thickness", + "EnSight/blow1_bin_pd_thickness1", + "EnSight/blow2_ascii.case", + "EnSight/blow2_ascii.geo000", + "EnSight/blow2_ascii.geo001", + "EnSight/blow2_ascii_cd_displacement000", + "EnSight/blow2_ascii_cd_displacement001", + "EnSight/blow2_ascii_cd_thickness000", + "EnSight/blow2_ascii_cd_thickness001", + "EnSight/blow2_ascii_pd_displacement000", + "EnSight/blow2_ascii_pd_displacement001", + "EnSight/blow2_ascii_pd_displacement1000", + "EnSight/blow2_ascii_pd_displacement1001", + "EnSight/blow2_ascii_pd_thickness000", + "EnSight/blow2_ascii_pd_thickness001", + "EnSight/blow2_ascii_pd_thickness1000", + "EnSight/blow2_ascii_pd_thickness1001", + "EnSight/blow2_bin.case", + "EnSight/blow2_bin.geo000", + "EnSight/blow2_bin.geo001", + "EnSight/blow2_bin_cd_displacement000", + "EnSight/blow2_bin_cd_displacement001", + "EnSight/blow2_bin_cd_thickness000", + "EnSight/blow2_bin_cd_thickness001", + "EnSight/blow2_bin_pd_displacement000", + "EnSight/blow2_bin_pd_displacement001", + "EnSight/blow2_bin_pd_thickness000", + "EnSight/blow2_bin_pd_thickness001", + "EnSight/blow3_bin.case", + "EnSight/blow3_bin.geo", + "EnSight/blow3_bin_cd_displacement", + "EnSight/blow3_bin_cd_thickness", + "EnSight/blow3_bin_pd_displacement", + "EnSight/blow3_bin_pd_thickness", + "EnSight/blow4_bin.case", + "EnSight/blow4_bin.geo000", + "EnSight/blow4_bin.geo001", + "EnSight/blow4_bin_cd_displacement000", + "EnSight/blow4_bin_cd_displacement001", + "EnSight/blow4_bin_cd_thickness000", + "EnSight/blow4_bin_cd_thickness001", + "EnSight/blow4_bin_pd_displacement000", + "EnSight/blow4_bin_pd_displacement001", + "EnSight/blow4_bin_pd_thickness000", + "EnSight/blow4_bin_pd_thickness001", + "EnSight/blow5_ascii.case", + "EnSight/blow5_ascii.geo", + "EnSight/blow5_ascii_cd_displacement", + "EnSight/blow5_ascii_cd_thickness", + "EnSight/blow5_ascii_pd_displacement", + "EnSight/blow5_ascii_pd_thickness", + "EnSight/elements.ECsca_i", + "EnSight/elements.ECsca_r", + "EnSight/elements.ECvec_i", + "EnSight/elements.ECvec_r", + "EnSight/elements.Esca", + "EnSight/elements.Eten", + "EnSight/elements.Evec", + "EnSight/elements.NCsca_i", + "EnSight/elements.NCsca_r", + "EnSight/elements.NCvec_i", + "EnSight/elements.NCvec_r", + "EnSight/elements.Nsca", + "EnSight/elements.Nten", + "EnSight/elements.Nvec", + "EnSight/elements.case", + "EnSight/elements.geo", + "EnSight/elements.sos", + "EnSight/elements6.ECsca_i", + "EnSight/elements6.ECsca_r", + "EnSight/elements6.ECvec_i", + "EnSight/elements6.ECvec_r", + "EnSight/elements6.Esca", + "EnSight/elements6.Eten", + "EnSight/elements6.Evec", + "EnSight/elements6.NCsca_i", + "EnSight/elements6.NCsca_r", + "EnSight/elements6.NCvec_i", + "EnSight/elements6.NCvec_r", + "EnSight/elements6.Nsca", + "EnSight/elements6.Nten", + "EnSight/elements6.Nvec", + "EnSight/elements6.case", + "EnSight/elements6.geo", + "EnSight/ironProt_ascii.case", + "EnSight/ironProt_ascii.geo", + "EnSight/ironProt_ascii_pd_scalars", + "EnSight/ironProt_bin.case", + "EnSight/ironProt_bin.geo", + "EnSight/ironProt_bin_pd_scalars", + "EnSight/mandelbrot.sos", + "EnSight/mandelbrot1.case", + "EnSight/mandelbrot1.geo", + "EnSight/mandelbrot1_pd_Iterations", + "EnSight/mandelbrot2.case", + "EnSight/mandelbrot2.geo", + "EnSight/mandelbrot2_pd_Iterations", + "EnSight/office6_bin.case", + "EnSight/office6_bin.geo", + "EnSight/office6_bin_pd_scalars", + "EnSight/office6_bin_pd_vectors", + "EnSight/office_ascii.case", + "EnSight/office_ascii.geo", + "EnSight/office_ascii_pd_scalars", + "EnSight/office_ascii_pd_vectors", + "EnSight/office_bin.case", + "EnSight/office_bin.geo", + "EnSight/office_bin_pd_scalars", + "EnSight/office_bin_pd_vectors", + "EnSight/test.extr_pressure.0001", + "EnSight/test.extr_velocity.0001", + "EnSight/test.geo", + "EnSight/test.pressure.0001", + "EnSight/test.velocity.0001", + "EnSight/test_bin.extr_pressure.0001", + "EnSight/test_bin.extr_velocity.0001", + "EnSight/test_bin.geo", + "EnSight/test_bin.pressure.0001", + "EnSight/test_bin.velocity.0001", +] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019: all 143 files are in the 2013 fork tree and each has a VTK +content link. Kitware's blanket `Copyright.txt` notice covers the collection +as a whole, and is recorded here as the licence for this entry. + +The files record that VTK wrote them. The `blow*`, `RectGrid_ascii`, +`ironProt_ascii`, `mandelbrot1`, `office_ascii` and `office6_bin` case files +open with "#EnSight Gold file written by VTK" or "#EnSight 6 file written by +VTK", `blow1_ascii.geo` with "Unstructured data file written by VTK.", and +`elements.case` and `elements6.case` with "#EnSight Gold example to test +vtkEnSightGoldReader" and "#EnSight6 example to test vtkEnSight6Reader" +(`git cat-file -p HEAD:Data/EnSight/ | head -1`). The `blow*` cases +carry displacement and thickness fields of the blow-moulding data whose VTK +form is recorded as `blow`. Kitware published no per-file provenance beyond +these headers, so the authors of the underlying simulations are not +recorded upstream and could not be established here. +""" + +[[dataset]] +name = "ex_blow_5" +title = "Blow moulding multi-block pieces" +description = "Blow-moulding finite element result split into sixteen unstructured-grid pieces under one multiblock index, carrying displacement and thickness with Exodus global and pedigree ids." +path = ["ex-blow_5.vtm", "ex-blow_5/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Burlen Loring added the index and all sixteen pieces to VTK Data on 2013-03-13 +as "baselines and a small multiblockdataset for parallel surface lic tests" +(commit 5f68d4b in this repository's history), and VTK's +`Rendering/LICOpenGL2` tests read `ex-blow_5.vtm`. There is no time series: +the index holds one block, "Element Blocks", whose sixteen pieces each carry +one state with `DISPLACEMENT_` and `THICKNESS` point arrays and Exodus +`GlobalNodeId`, `PedigreeNodeId` and `ObjectId` arrays, the same quantities +as the `blow` entry's blow-moulding result. Kitware never published per-file +provenance for this material, so the original author of the simulation is +not recorded upstream and could not be established here. +""" + +[[dataset]] +name = "exodus_mesh" +title = "Exodus II sample mesh" +description = "Exodus II finite element mesh with element blocks." +path = ["mesh_fs8.exo"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyvista/issues/143#issuecomment-478156153" +origin_title = "pyvista/pyvista issue #143" +authors = ["Daniel Livingston"] +notes = """ +Attached by Daniel Livingston to pyvista/pyvista issue #143 on 2019-03-29 as +`ExodusSampleMeshes.zip` +(https://github.com/vtkiorg/vtki/files/3024612/ExodusSampleMeshes.zip), +described there as "a sample folder with two meshes", one with eight +sidesets and one with three. Its `mesh_fs8.exo` is byte-identical to this +file (SHA-512 64c6f3d2...), and a maintainer added it three days later +(commit 21b3787, "add ExodusII sample data"). The file's netCDF title +attribute reads "LaGriT to Exodus". + + curl -sSL -o z.zip https://github.com/vtkiorg/vtki/files/3024612/ExodusSampleMeshes.zip && unzip -o z.zip && shasum -a 512 ExodusSampleMeshes/mesh_fs8.exo + +The contributor stated no licence terms, so the terms are undetermined; ask +the contributor through the issue before redistributing outside test use. +""" + +[[dataset]] +name = "face" +title = "Fran face scan" +description = "Reduced-resolution laser scan of a human face." +path = ["fran_cut.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "faults" +title = "Geological faults" +description = "Geological fault surfaces, as 78 polygons over 1933 points." +path = ["faults.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "fea_bracket" +title = "FEA bracket von Mises stress" +description = "Equivalent (von Mises) stress on a bracket, from a dash-vtk demonstration by Steve Kiefer." +path = ["fea/kiefer/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://github.com/shkiefer/dash_vtk_unstructured" +origin_title = "shkiefer/dash_vtk_unstructured" +authors = ["Steve Kiefer"] +modified = true +modification = "Exported from the demonstration application and cast to float32." +notes = """ +The upstream repository publishes no LICENSE file, so the terms under which +the mesh may be redistributed are undetermined; ask the author before +redistributing outside test use. The repository's `data/` directory holds +the mesh as `ip_nodes.txt` (102578 nodes), `ip_elems.txt` and +`ip_elems_seqv.txt` (56786 elements, column "Equivalent (von-Mises) Stress +(psi)"); `dataset.vtu` carries the same point and cell counts and the same +array name, which is the basis for the inferred origin. The README links the +author's article "3D mesh models in the browser using python & dash_vtk", +https://towardsdatascience.com/3d-mesh-models-in-the-browser-using-python-dash-vtk-e15cbf36a132, +which returned 404 in September 2026; the Wayback Machine holds a capture at +http://web.archive.org/web/20221216161350/https://towardsdatascience.com/3d-mesh-models-in-the-browser-using-python-dash-vtk-e15cbf36a132 +(published 19 April 2021), which describes exporting the nodes, elements and +results from Ansys Mechanical. +""" + +[[dataset]] +name = "filled_contours" +title = "Filled contours" +description = "Surface with a scalar field, used to demonstrate banded contour filling." +path = ["filledContours.vtp"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "fluent_cff_room" +title = "Fluent CFF room case" +description = "Ansys Fluent case and data files in the CFF (HDF5) format for a room ventilation model." +path = ["FLUENTCFF/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2015 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "verified" +origin_url = "https://gitlab.kitware.com/vtk/vtk/-/merge_requests/7521" +origin_title = "VTK merge request 7521, Fluent CFF Reader" +collection = "vtk-data" +authors = ["Arthur Piquet"] +attribution = "VTK Data. Copyright (c) 1993-2015 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://gitlab.kitware.com/vtk/vtk/-/blob/master/Testing/Data/room.cas.h5.sha512", "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +notes = """ +Both files hash to VTK's `Testing/Data/room.cas.h5.sha512` and +`room.dat.h5.sha512` content links (`shasum -a 512` gives 7c9aef88... and +541eb510...). Those links were added by VTK commit 2a0bf4dca4 ("Adding +Reader for CFF Fluent format", Arthur Piquet, authored 2021-01-07), merged +on 2023-03-29 through merge request 7521, whose description says "I have +attached multiple CFF files for testing" and lists `room.cas.h5` and +`room.dat.h5`; the attachments need a GitLab login, so their bytes were not +compared directly. The request does not say how the room case was produced +and states no separate terms, so VTK's `Copyright.txt` notice (1993-2015) is +recorded, as for the other files that entered VTK after the 2013 fork. Added +here in April 2024 through https://github.com/pyvista/data/pull/39. +""" + +[[dataset]] +name = "font_ridiculous" +title = "Ridiculous font" +description = "TrueType display font used to exercise text rendering." +path = ["Infovis/martyb_-_Ridiculous.ttf"] +SPDX-License-Identifier = "OFL-1.1" +SPDX-FileCopyrightText = ["2008 Martin B. Brilliant"] +provenance = "verified" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +authors = ["Martin B. Brilliant"] +attribution = "Ridiculous, Copyright 2008 Martin B. Brilliant, SIL Open Font License 1.1." +notes = """ +The font states its own terms in its name table (record 13): "Copyright (c) +2008, Martin B. Brilliant, mbrilliant@alum.mit.edu with Reserved Font Name +Ridiculous. This Font Software is licensed under the SIL Open Font License, +Version 1.1." That name may not be used by a modified version, and OFL-1.1 +requires derivatives to stay under it, so the obligation is stronger than +the collection licence of VTK Data, which only redistributes +the font (added there on 2009-09-29 by Jason Shepherd, "Adding some sample +true-type fonts to use in tests"); no page by the author was found, so the +collection stays as the furthest point reached. Read the terms with a +name-table dump (`fontTools`) or `strings`. +""" + +[[dataset]] +name = "fonts" +title = "Test fonts" +description = "Four TrueType fonts used to exercise text rendering, each reserving rights in its own name table." +path = [ + "Canterbury.ttf", + "CopyPaste.ttf", + "Infovis/DaveDS_-_Sketchy.ttf", + "Infovis/PintassilgoPrints_-_Talvez_Assim.ttf", +] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +redistributed_from = ["https://github.com/lorensen/VTKExamples"] +notes = """ +These arrived with the inherited collections but state their own terms, which +are neither the collection's nor the same as each other: + + Infovis/DaveDS_-_Sketchy.ttf (c) 2009 David Brisbane, all rights + reserved, embedding and printing only + Infovis/PintassilgoPrints_-_Talvez_Assim.ttf + PintassilgoPrints, marked "Free" + Canterbury.ttf (c) Typographer Mediengestaltung, 2001, + all rights reserved + CopyPaste.ttf weknow (weknow.deviantart.com), 2012, + all rights reserved + +The two Infovis fonts are in the VTK Data tree this repository was forked +from (added there in September 2009). `Canterbury.ttf` and `CopyPaste.ttf` +came through the April 2019 import from `lorensen/VTKExamples` (blob match +with its `src/Testing/Data/`); Canterbury.ttf also matches VTK's +`Testing/Data/Canterbury.ttf.sha512`, while CopyPaste.ttf has never had a +VTK content link. CopyPaste's name table points at +http://www.dafont.com/wino-s-kadir.d2209, and dafont lists the font at +https://www.dafont.com/copy-paste.font as "Donationware" by weknow, a +category label rather than a grant of redistribution. None of the four +grants redistribution, and three reserve all rights, so the set is recorded +as undetermined; a downstream user should ask each font's named author. The +fifth font that shipped with them, `Infovis/martyb_-_Ridiculous.ttf`, does +grant it and has its own entry. +""" + +[[dataset]] +name = "foot_bones" +title = "Foot bones and guitar" +description = "Surface meshes of the bones of a human foot and of a Stratocaster guitar, from John Burkardt's PLY collection at Florida State University." +path = ["fsu/**"] +SPDX-License-Identifier = "LGPL-3.0-only" +provenance = "verified" +origin_url = "https://people.sc.fsu.edu/~jburkardt/data/ply/ply.html" +origin_title = "John Burkardt, PLY Files" +collection = "vtk-examples" +attribution = "footbones.ply and stratocaster.ply from John Burkardt's PLY collection, https://people.sc.fsu.edu/~jburkardt/data/ply/ply.html, distributed under the GNU LGPL (version 3)." +redistributed_from = ["https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data/fsu"] +modified = false +notes = """ +Imported in April 2019 (commit 74bf994) from `src/Testing/Data/fsu` in Bill +Lorensen's `lorensen/VTKExamples`, whose blob ids (172e936972d7, +2f0b6ac4e8b6) match. Both files are byte-identical to `footbones.ply` and +`stratocaster.ply` on Burkardt's page (SHA-256 +9f5112422a4f73c3d7b4bc94741798c5ef732d9249d05d56282d0eb744c0c1bb and +f6124e5460a08c769903af8474ea8fc154bbd1f379e40d1c81cf58558e9e11c5), whose +Licensing section says "The computer code and data files described and made +available on this web page are distributed under the GNU LGPL license" and +links https://people.sc.fsu.edu/~jburkardt/txt/gnu_lgpl.txt, the version 3 +text. That is the licence recorded here; VTK Examples' Apache-2.0 covers +Lorensen's redistribution, not Burkardt's files. The page does not say who +modelled the objects. +""" + +[[dataset]] +name = "foot_volume" +title = "Foot MetaImage slice" +description = "MetaImage header and raw data of a single 256 by 256 8-bit sagittal slice through a human foot." +path = ["foot/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. + +`foot.mha` declares `NDims = 2`, `DimSize = 256 256`, `ElementType = +MET_UCHAR`, and `foot.raw` is 65536 bytes, so this is one 8-bit image, not a +volume; nothing in the header or in VTK states the imaging modality. Wes +Turner added both files to VTKData on 2008-05-29 (commit 6affcf6) to test +the MetaImage reader on 2D files. Kitware never published per-file +provenance for this material, so the original author of the image is not +recorded upstream and could not be established here. +""" + +[[dataset]] +name = "frog" +title = "Frog anatomy volume" +description = "Segmented volume of a frog from the LBNL Whole Frog Project, as a MetaImage header plus compressed raw data (470 by 500 pixels, 136 slices), with a companion tissue-label volume." +path = ["froggy/**"] +SPDX-License-Identifier = "LicenseRef-LBNL-WholeFrog" +SPDX-FileCopyrightText = ["Lawrence Berkeley Laboratory"] +provenance = "verified" +origin_url = "https://froggy.lbl.gov/images/whole.frog/data/" +origin_title = "LBNL Whole Frog Project, slice image data" +collection = "vtk-examples" +authors = ["Bill Johnston", "Wing Nip"] +attribution = "Whole Frog Project, Lawrence Berkeley National Laboratory (https://froggy.lbl.gov/), images and data by Bill Johnston and Wing Nip; provided for scientific research, commercial use requires prior agreement with the laboratory." +redistributed_from = ["https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data/Frog"] +modified = true +modification = "frog.zraw holds the voxels of LBNL's frog.data.Z re-compressed with zlib inside a MetaImage wrapper; frogtissue combines the per-tissue mask files into one labelled volume, as the VTK textbook describes." +notes = """ +`frog.zraw`, decompressed, is byte-identical to LBNL's `frog.data.Z` +uncompressed (31960000 bytes, sha256 1ba5e6dc1622462b...); `frog.hd` there +reads "470(r)x500(c)x136 unsigned byte" and `frog.mhd` here reads +`DimSize = 500 470 136`. The directory's `Copyright.Notice` states the +terms: "These images and data were produced at Lawrence Berkeley Laboratory +by Bill Johnston and Wing Nip of the Information and Computing Sciences +Division ... This data is provided for the purpose of scientific research +and collaboration with Lawrence Berkeley Laboratory. Any commercial use of +these images and data require prior agreement with Lawrence Berkeley +Laboratory. The images and data are Copyright Lawrence Berkeley +Laboratory." The project page's credits date the work to 1993-1995 under +DOE contract DE-AC03-76SF00098. + +The VTK textbook (`src/VTKBook/12Chapter12.md` in vtk/vtk-examples) says +the data "was prepared at Lawrence Berkeley National Laboratories and is +included with their permission on the CD-ROM accompanying this book", that +the segmentation is 15 tissue masks over 136 slices of 470 by 500 pixels, +and that the masks were combined into one file per slice with integers 1 to +15 for the tissues; `frogtissue` is that combined volume and was not +compared with LBNL's mask files. The four files reached this repository +through the April 2019 import of `src/Testing/Data/Frog` from +lorensen/VTKExamples, where they are git-LFS objects whose `oid sha256` and +size equal the files here; `Data/Frog` was renamed to `Data/froggy` a month +later. They are not in the VTK Data collection or VTK's content links. The +permission the book records covers its CD-ROM, and the examples repository's +Apache-2.0 does not cover LBNL's data; the terms that bind are LBNL's +notice. +""" + +[[dataset]] +name = "full_head" +title = "Full head CT volume" +description = "MetaImage header and gzip-compressed raw volume of a full-resolution human head CT study, 256 by 256 by 94 voxels of 0.9375 by 0.9375 by 1.5 mm, the study the VTK textbook's `headsq/quarter` slices were reduced from." +path = ["FullHead.mhd", "FullHead.raw.gz"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-examples" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/FullHead.mhd"] +notes = """ +The full-resolution head study of the VTK textbook. Slice 15 of +`FullHead.raw.gz` (index 14) is voxel-identical to VTK Data's +`fullhead15.png`, which Ken Martin added on 23 July 2001 as "a sample CT +slice" (commit 2b919af in this repository's history), and averaging that +slice over 4 by 4 blocks reproduces `headsq/quarter.15` (mean absolute +difference 1.9 on a 0 to 2812 range, correlation 0.9998). Chapter 12 of the +textbook (`src/VTKBook/12Chapter12.md` in `vtk/vtk-examples`) describes the +study as CT data, 93 slices of 256 by 256 pixels 1.5 mm apart, reduced to +64 by 64 for `headsq/quarter`. VTK Data never shipped the full volume; it +has been in `lorensen/VTKExamples` since at least May 2017 (commit +9360a8b539 there), and the April 2019 import of that repository brought it +here. Inferred because one slice is byte-matched to a VTK Data file and the +rest rests on the downsampled comparison. Kitware's blanket `Copyright.txt` +notice for VTK Data is recorded as the licence, as for `headsq`; the +acquisition site, subject and consent status of the scan were never +recorded upstream. +""" + +[[dataset]] +name = "gambit_prism" +title = "GAMBIT prism mesh" +description = "Prism mesh in the Fluent GAMBIT neutral file format." +path = ["prism.neu"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "ge_signa" +title = "GE Signa MR slice" +description = "Single sagittal T2 cervical-spine MR slice, 256 by 256, in the GE Signa 5.x format." +path = ["E07733S002I009.MR"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +notes = """ +Human patient imaging. The GE Signa `IMGF` exam header names the acquiring institution, a +hospital, and the series header records a sagittal T2 fast spin-echo of the +cervical spine on a quadrature spine coil, dated 2001-05-23 by a control +header whose year field is Y2K-broken. + +The patient fields are populated but read as placeholders rather than an +identity, and the referring physician, radiologist, operator, age and sex +fields are all empty. That is better than `dicom_directory`, where the +identity is real, but the institution still identifies where the scan was +taken. + +Inherited from the VTK Data collection at the March 2019 fork. Kitware's +blanket `Copyright.txt` notice cannot +license a hospital's patient imaging, and no consent or release was found, +so the terms are undetermined. +""" + +[[dataset]] +name = "gears" +title = "Interlocking gears" +description = "Triangulated surface mesh of a set of interlocking gears." +path = ["gears.stl"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "gettysburg_address" +title = "Gettysburg Address" +description = "Plain text of Lincoln's Gettysburg Address, used to exercise text rendering and word-cloud layout." +path = ["Gettysburg.txt"] +SPDX-License-Identifier = "LicenseRef-PublicDomain" +provenance = "verified" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +authors = ["Abraham Lincoln"] +notes = """ +The speech was delivered on 19 November 1863 and its copyright, if it ever +had one, expired long ago. It reached this repository with the April 2019 +VTK Examples import and was covered by that entry's blanket Apache-2.0, which +no redistributor can impose on a public-domain text. +""" + +[[dataset]] +name = "gis_countries" +title = "Natural Earth country boundaries" +description = "World country boundaries at 1:110 million scale as an ESRI shapefile with its index, projection and attribute table, Natural Earth Admin 0 Countries." +path = ["GIS/**"] +SPDX-License-Identifier = "LicenseRef-PublicDomain" +provenance = "verified" +origin_url = "https://github.com/nvkelso/natural-earth-vector" +origin_title = "Natural Earth vector data, ne_110m_admin_0_countries" +collection = "vtk-data" +authors = ["Natural Earth"] +attribution = "Made with Natural Earth. Free vector and raster map data @ naturalearthdata.com." +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +notes = """ +Byte-identical to `110m_cultural/ne_110m_admin_0_countries.shp`, `.shx`, +`.dbf` and `.prj` at nvkelso/natural-earth-vector commit 10e45c6 +(2012-11-05, "oops, Israel is in Asia 110m admins"): + + for e in shp shx dbf prj; do + curl -sSL -o ne.$e https://raw.githubusercontent.com/nvkelso/natural-earth-vector/10e45c6/110m_cultural/ne_110m_admin_0_countries.$e + shasum -a 256 ne.$e Data/GIS/countries.$e + done # 2aebdd66..., d448696a..., 5432c814..., a02a27b1... on both sides + +Aashish Chaudhary added the files to VTK Data on 2012-12-21 as test input for +the GDAL vector reader (VTK commit 52587d2fd7), and they reached this +repository through the March 2019 fork; VTK still ships +`Testing/Data/GIS/countries.*.sha512` content links. The repository's +`LICENSE.md` (https://github.com/nvkelso/natural-earth-vector/blob/master/LICENSE.md) +states that all versions of the data are in the public domain, that "No +permission is needed to use Natural Earth. Crediting the authors is +unnecessary.", and gives "Made with Natural Earth." as the courtesy credit. +The naturalearthdata.com download page returned HTTP 406 to a scripted +request, so the GitHub repository is the origin recorded. +""" + +[[dataset]] +name = "gourds" +title = "Gourds photograph" +description = "Colour photograph of gourds in PNG, PNM and JPEG form, used as a texture and as image filter input." +path = ["Gourds.png", "Gourds.pnm", "Gourds2.jpg"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "gpr" +title = "Ground-penetrating radar profile" +description = "Ground-penetrating radar amplitude array with the survey path it was collected along." +path = ["gpr-example/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://github.com/pyvista/pyvista-support/issues/135" +origin_title = "pyvista-support issue 135, Creating a 2.5D image/section (example with GPR)" +notes = """ +Both files are byte-identical to the contents of the `data.zip` +(https://github.com/pyvista/pyvista-support/files/4258550/data.zip) that +Bane Sullivan attached to pyvista-support issue 135 on 2020-02-26, and were +added here in October 2020 with the commit message "add GPR example data". +The issue presents them as example data whose coordinates were shifted and +padded with NaN above the surface and remarks that sharable data of decent +quality is hard to obtain; it does not name the survey, the instrument owner +or any terms, so the survey is inferred to lie beyond the issue and the +licence is undetermined. A downstream user should treat the arrays as an +illustration of the data layout only and substitute their own survey, or +ask the issue's author. +""" + +[[dataset]] +name = "grasshopper" +title = "Grasshopper" +description = "VRML model of a grasshopper." +path = ["grasshopper/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/grasshop.wrl" +origin_title = "VTK Examples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. + +`grasshop.wrl` came in with the VTK Examples import; `grasshopper/grasshop.wrl` is a byte-identical second copy added in August 2024 with the commit message \"Add grasshopper (#47)\". Both carry the VTK Examples licence. +""" + +[[dataset]] +name = "great_white_shark" +title = "Great white shark" +description = "Triangulated surface mesh of a great white shark, in STL format." +path = ["great_white_shark/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://www.cgtrader.com/free-3d-models/animals/fish-aquatic/great-white-shark--3" +origin_title = "CGTrader, Great white shark by Cartoomotion" +collection = "vtk-examples" +authors = ["Cartoomotion"] +redistributed_from = [ + "https://www.thingiverse.com/thing:425437", + "https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/greatWhite.stl", +] +notes = """ +Imported from the VTK Examples test data: the blob is identical to +`src/Testing/Data/greatWhite.stl` in lorensen/VTKExamples, added there on +2019-06-07 ("ENH: New inout datasets"), and pyvista/data pull request 46 +took it from VTK Examples. The STL header records only that the mesh was +reprocessed through netfabb and embeds no origin or licence, and the +upstream commits reference neither. + +The chain runs back through Thingiverse thing:425437, "Great White Shark" by +shraska1, published 12 August 2014. Its `rel="license"` link named +creativecommons.org/licenses/by-sa/3.0/ in the capture of 4 March 2015 at +web.archive.org/web/20150304082408/http://www.thingiverse.com/thing:425437; +the live page has since been relabelled CC BY-SA 4.0. That uploader +disclaims authorship and names a CGTrader page as the origin, and that page +is readable in the Wayback Machine: + + curl -sL "https://web.archive.org/web/20150130013539id_/http://www.cgtrader.com:80/free-3d-models/animals/fish-aquatic/great-white-shark--3" + +It credits Cartoomotion, and it states terms under "License: General +License": "Content published with the General label may not be sold, given, +or assigned to another person or entity in the form it is downloaded from +the site." + +So the head of the chain does state terms, and they are a redistribution +restriction rather than a grant. Whether shraska1 could apply CC BY-SA to a +model published under that label is exactly the question, and it is not one +this repository can answer. The licence stays undetermined, and the +restriction is the reason: redistributing the mesh in the form it was +downloaded is what the General License names. Downstream users, especially +commercial ones, should substitute a shark model with documented licensing, +and this repository should consider dropping the file. + +The geometry is consistent with that page, which reports 3,672 polygons and +3,770 vertices: 2,592 quads and 1,080 triangles would triangulate to exactly +the 6,264 triangles here, over 3,155 unique vertex positions after netfabb's +reprocessing. The split is arithmetic, not something the page states. +""" + +[[dataset]] +name = "grey_nurse_shark" +title = "Grey nurse shark" +description = "Triangulated surface mesh of a grey nurse shark, in STL format." +path = ["grey_nurse_shark/**"] +SPDX-License-Identifier = "CC-BY-SA-3.0" +provenance = "verified" +origin_url = "https://www.thingiverse.com/thing:137954" +origin_title = "Thingiverse thing:137954" +collection = "thingiverse" +authors = ["Autodesk"] +attribution = "Grey Nurse Shark, uploaded by rogerpeng1 (https://www.thingiverse.com/thing:137954), licensed under CC BY-SA." +redistributed_from = ["https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/thingiverse/Grey_Nurse_Shark.stl"] +notes = """ +The page labels the licence "Creative Commons - Attribution - Share Alike" +without a version in its text, but its `rel="license"` link names +creativecommons.org/licenses/by-sa/3.0/. Thingiverse has since re-rendered +these pages, so read it from the capture of 27 January 2017 at +web.archive.org/web/20170127115631/http://www.thingiverse.com:80/thing:137954/ +rather than from the live page. It was published on 22 August 2013. +ShareAlike propagates: a downstream work derived from this mesh must be shared +under the same licence. + +The uploader disclaims authorship: "This is a scan by Autodesk obtained from +the Autodesk 123D site", linking a 123dapp.com page that no longer resolves. +The licence recorded here is therefore the one the redistributor applied, not +one Autodesk is known to have granted. +""" + +[[dataset]] +name = "hdr_textures" +title = "HDR environment textures" +description = "High dynamic range equirectangular environment maps of a night sky over Dikhololo and of a parched canal." +path = ["dikhololo_night_4k.hdr", "parched_canal_4k.hdr"] +SPDX-License-Identifier = "CC0-1.0" +provenance = "verified" +origin_url = "https://polyhaven.com/a/dikhololo_night" +origin_title = "Poly Haven" +authors = ["Greg Zaal", "Sergej Majboroda"] +attribution = "Poly Haven, https://polyhaven.com/. Attribution is a courtesy, not a requirement under CC0." +notes = "`dikhololo_night_4k.hdr` is https://polyhaven.com/a/dikhololo_night (Greg Zaal) and `parched_canal_4k.hdr` is https://polyhaven.com/a/parched_canal (Sergej Majboroda). Both files are byte-identical to the 4k HDR downloads Poly Haven publishes (MD5 5ad95d262e8cc7f79d23c4e4ab772e62 and b448fe432da3da57b2c565636b93182f, from https://api.polyhaven.com/files/dikhololo_night and https://api.polyhaven.com/files/parched_canal). Every Poly Haven asset is CC0 per https://polyhaven.com/license, and each asset page carries the CC0 licence URL in its JSON-LD." + +[[dataset]] +name = "head_2" +title = "Head CT volume" +description = "Full-resolution CT volume of a human head, 256 by 256 by 94 voxels, in VTK XML ImageData format." +path = ["head.vti"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-examples" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/FullHead.mhd"] +modified = true +modification = "The `full_head` volume flipped along the y axis, retyped from int16 to uint16, with spacing set to 1 by 1 by 2 in place of 0.9375 by 0.9375 by 1.5, and saved as VTK XML ImageData." +notes = """ +Added on 2023-01-20 with the commit message "add head.vti" and no source +recorded. Its 256 by 256 by 94 voxel values are identical, voxel for voxel, +to `FullHead.raw.gz` in this repository (the `full_head` entry, imported from +lorensen/VTKExamples in April 2019) after a flip along the y axis: + + python3 -c "import numpy as np, pyvista as pv; a=pv.read('head.vti').active_scalars.reshape(94,256,256); b=pv.read('FullHead.mhd').active_scalars.reshape(94,256,256); print(np.array_equal(a, b[:, ::-1, :]))" + +so it carries that entry's origin, licence and provenance; the scan's +acquiring institution is not recorded there either. Averaged 4 by 4 in the slice plane, its first 93 +slices correlate 0.9995 with `headsq/quarter.*` (the `headsq` entry), the +quarter-resolution CT head that chapter 12 of the VTK textbook says was +reduced from the original 256 by 256 slices by averaging neighbouring pixels +twice, so this is the full-resolution volume of that CT study. This is human +medical imaging whose subject and consent status were never recorded +upstream. +""" + +[[dataset]] +name = "head_mr_volume" +title = "Head MR volume" +description = "MetaImage header and raw volume of a human head MR scan." +path = ["HeadMRVolume.mhd", "HeadMRVolume.raw"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "headsq" +title = "Head CT slice stack" +description = "Ninety-three quarter-resolution CT slices of a human head, with an NRRD header describing them as a 64 by 64 by 93 volume. One of the oldest datasets in the VTK test collection." +path = ["headsq/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. + +This is human medical imaging whose subject, acquiring institution and consent status were never recorded upstream. +""" + +[[dataset]] +name = "hertzian_contact_cylinder" +title = "Hertzian contact cylinder" +description = "Finite element solution for a cylinder in Hertzian contact with a flat plane." +path = ["fea/hertzian_contact_cylinder/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = """ +Added by Alex Kaszynski in pyvista/data pull request 27 (March 2023, commit +80770e1) for the PyVista Hertzian contact example, pyvista/pyvista#4124. The +README that came with it in that pull request +(`git show 6a55220:Data/fea/hertzian_contact_cylinder/README.md`) says +"This dataset was generated from OnScale Solve", and the sixteen `.vtu` +partitions and their `.pvtu` header inside the archive are all named for +the job UUID `bfac9fd1-e982-4825-9a95-9e5d8c5b4d3e`. Neither pull request +nor the README says who ran the model or on what terms, the archive itself +does not name the solver, no source page or upload was found, and +onscale.com no longer resolves, so neither the origin nor the terms could be +established. A downstream user should ask the contributor before +redistributing it outside PyVista. +""" + +[[dataset]] +name = "honolulu" +title = "Honolulu terrain" +description = "Surface mesh of the terrain around Honolulu." +path = ["honolulu.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/honolulu.vtk"] +notes = """ +Byte-identical to `honolulu.vtk` in the December 1999 VTKData tree, an +ancestor of this repository: `git ls-tree d5878f4 honolulu.vtk` and +`git ls-tree HEAD Data/honolulu.vtk` both give blob 4b4c682374fa. VTKData +dropped the file in its July 2001 tree reorganisation (commit 39a50dd, "New +data tree layout"), so it is absent from the July 2013 tree this repository +forked from. The copy here arrived through the April 2019 import from +`lorensen/VTKExamples`, where Andrew Maclean added the same blob on +2017-10-17 for the Hawaii example (commit 84026685f1; it was moved to git-lfs +on 2017-12-01, which is why the current upstream blob is a pointer). The +file's own header reads "Terrain data for Honolulu, Hawaii" and it is the +terrain of VTK textbook Figures 6-12 and 9-27. Kitware's blanket +`Copyright.txt` notice for the VTK Data collection is recorded as the +licence; Kitware never published per-file provenance, so the original source +of the terrain data could not be established. +""" + +[[dataset]] +name = "horse" +title = "Horse" +description = "Surface mesh of a horse, with a companion point-only version used to demonstrate surface reconstruction." +path = ["horse.vtp", "horsePoints.vtp"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://www.cc.gatech.edu/projects/large_models/horse.html" +origin_title = "Georgia Tech Large Geometric Models Archive" +redistributed_from = ["https://github.com/lorensen/VTKExamples"] +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository (blob match with its `src/Testing/Data/`), which was published +under the Apache License 2.0 and is now maintained by Kitware as +`vtk/vtk-examples`. Lorensen did not publish per-file provenance for these +two files. + +They are the same horse as the Cyberware scan recorded as `horse_scan`, at +the same scale: their bounding boxes agree with that scan's to within 0.5 +percent on every axis, but none of `horse.vtp`'s 33936 points and none of +`horsePoints.vtp`'s 128449 points coincides with one of the scan's 48485 +vertices, so they are remeshed or resampled from it rather than decimated +(read the three files with pyvista and intersect their point sets rounded +to 1e-6). A repository licence cannot license a third party's geometry, so +the `horse_scan` entry's terms are recorded here: the archive page says only +that the model appears "courtesy of Cyberware, Inc.", and no terms for +redistribution could be established. Who produced these remeshed versions +is not recorded. A downstream user should ask Cyberware or the archive. +""" + +[[dataset]] +name = "horse_scan" +title = "Horse scan" +description = "Range-scanned horse, 48485 vertices and 96966 faces with per-vertex confidence and colour, in binary PLY." +path = ["horse.ply"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.cc.gatech.edu/projects/large_models/horse.html" +origin_title = "Georgia Tech Large Geometric Models Archive" +authors = ["Cyberware, Inc."] +redistributed_from = ["https://github.com/lorensen/VTKExamples"] +notes = """ +Byte-identical to the horse the Georgia Tech Large Geometric Models Archive +serves, which reports the same 96,966 faces and 48,485 vertices: + + curl -sL "http://web.archive.org/web/2020id_/http://www-static.cc.gatech.edu/data_files/large_models/horse.ply.gz" | gunzip | shasum -a 256 + # dfadaea01775943a75f9bf0560e6ad55aab39694af3003d9976a46e58226c4d7 + +The archive page says only "This model appears here courtesy of Cyberware, +Inc." That is permission for Georgia Tech to host it, not a licence granting +anything onward, so no terms could be established for redistribution or for +commercial use. The header's `plyop` and `flipply` comments are the Stanford +range-scan toolchain, consistent with a Cyberware scan. + +It reached this repository through the VTK Examples import and was covered by +that entry's blanket Apache-2.0, which is not Lorensen's to grant here. +""" + +[[dataset]] +name = "human" +title = "Human figure" +description = "Surface mesh of a standing human figure." +path = ["Human.vtp"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "hydrogen_orbital" +title = "Hydrogen atom orbital probability density" +description = "Probability density of a 3d hydrogen atom orbital on a regular grid." +path = ["hydrogen/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://github.com/pyvista/pyvista/discussions/3810" +origin_title = "PyVista discussion 3810" +modified = true +modification = "Axes swapped so the orbital is aligned to z, and re-saved as VTK XML ImageData." +notes = """ +Posted in pyvista/pyvista discussion 3810 in January 2023 by a student who +downloaded it from +https://www.it.uu.se/edu/course/homepage/vetvis/ht10/ComputerExercises/data/a1/hydrogen.vtk +for assignment 1 of the Uppsala University scientific visualisation course, +autumn 2010 (the discussion also links the assignment page, +`ComputerExercises/assignment1.shtml`); pyvista/pyvista#3811 took the data +from that discussion. No terms of use are known for it. The file and the +assignment page now return 404, and the Wayback Machine has no capture of +either, only of the course directory +(http://web.archive.org/web/20210117143218/https://www.it.uu.se/edu/course/homepage/vetvis/ht10/), +which does not mention the exercises. The discussion is the only surviving +record of the source, which is why the origin is recorded as inferred. +""" + +[[dataset]] +name = "idgh_bracket" +title = "IDGH bracket" +description = "Triangulated surface mesh of a machined bracket." +path = ["42400-IDGH.stl"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "infovis" +title = "Information visualisation samples" +description = "Graphs, trees, tables and delimited text files used to exercise the information visualisation readers and layouts." +path = [ + "Infovis-XML-vtkclasses.xml", + "Infovis-XML-vtklibrary.xml", + "Infovis/DimacsGraphs/iso_pattern.gr", + "Infovis/DimacsGraphs/iso_target.gr", + "Infovis/DimacsGraphs/maxflow.max", + "Infovis/SQLite/SmallEmailTest.db", + "Infovis/SQLite/SmallTestGraphs.db", + "Infovis/SQLite/ports_protocols.db", + "Infovis/SQLite/temperatures.db", + "Infovis/XML/smalltest.xml", + "Infovis/XML/vtkclasses.xml", + "Infovis/XML/vtkfiles.xml", + "Infovis/XML/vtklibrary.xml", + "Infovis/authors-tabletographtest.csv", + "Infovis/authors.csv", + "Infovis/classes.csv", + "Infovis/clustered-graph.tlp", + "Infovis/document-term.csv", + "Infovis/fruit.csv", + "Infovis/fsm.gml", + "Infovis/kcore_edges.csv", + "Infovis/kcore_verts.csv", + "Infovis/matrix.csv", + "Infovis/merge1.csv", + "Infovis/merge2.csv", + "Infovis/multi_tree.tre", + "Infovis/person-document.csv", + "Infovis/publications.csv", + "Infovis/small.graph", + "Infovis/small.tlp", + "Infovis/term-concept.csv", + "fsm.gml", +] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data"] +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019, except `Infovis-XML-vtkclasses.xml`, +`Infovis-XML-vtklibrary.xml` and the top-level `fsm.gml`, which are +byte-identical copies of `Infovis/XML/vtkclasses.xml`, +`Infovis/XML/vtklibrary.xml` and `Infovis/fsm.gml` that arrived through the +April 2019 import from `lorensen/VTKExamples` (commit 74bf994). Kitware's +blanket `Copyright.txt` notice covers the collection as a whole, and is +recorded here as the licence for this entry. The commit messages of 2008 to +2012 show most files were written by Sandia and Kitware staff as test +input. Two carry further sources: `Infovis/DimacsGraphs/maxflow.max` states +in its header "c source: http://lpsolve.sourceforge.net/5.5/DIMACS_maxf.htm" +(the lp_solve documentation's DIMACS example; the page states no terms), and +`Infovis/fsm.gml` was added on 2009-05-01 (commit eec6cba) as "the sample +file" accompanying David Duke's `vtkSpanTreeLayoutStrategy` contribution, +which VTK's header thanks "David Duke from the University of Leeds" for. No +terms beyond the collection notice were found for either. The QIIME +tutorial files `Infovis/otu_table.biom` and `Infovis/rep_set.tre` are +recorded separately under `qiime_tutorial_otus`. +""" + +[[dataset]] +name = "interpolating_on_stl" +title = "Interpolation target surface" +description = "Triangulated STL surface from a wind tunnel test, used to demonstrate interpolating point data onto an STL mesh." +path = ["InterpolatingOnSTL_final.stl"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://discourse.vtk.org/t/interpolate-on-stl-plotting-scalar-field-on-50-points-on-an-70000-points-stl-surface/450" +origin_title = "VTK Discourse thread 450" +collection = "vtk-examples" +authors = ["Hosam (VTK Discourse user)"] +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/InterpolatingOnSTL_final.stl"] +notes = """ +Posted on 12 March 2019 by the VTK Discourse user Hosam, who described it as +an STL surface on which a field had been sampled at 50 points in a wind +tunnel test and shared it through a Dropbox link (`InterpolatingOnSTL.zip`) +in post 3 of the thread. Bill Lorensen asked in post 8 "Can I add your data +to the VTKExamples Project?" and Hosam answered in post 11 "Yes of course +you can use my example"; the file entered lorensen/VTKExamples on 14 March +2019 (commit 6ab4ffb6ae, "ENH: Data and minor changes to +PointInterpolator") and this repository through the April 2019 import (same +git blob 9be23213ceb5). `src/Cxx/Meshes/PointInterpolator.md` in that +repository links the thread. The copy now in vtk/vtk-examples on +gitlab.kitware.com is different bytes (blob 4b97af38e734). The thread +states no licence, and the Apache License 2.0 of the examples repository +does not cover a third party's data, so the terms are undetermined. +Downstream users who need more than the informal grant in the thread should +ask the author through it. +""" + +[[dataset]] +name = "iron_protein" +title = "Iron protein volume" +description = "Scalar volume of a high potential iron protein." +path = ["StructuredPoints.vtk", "ironProt.vtk"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +authors = ["Scripps Clinic"] +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/StructuredPoints.vtk"] +notes = """ +The file header reads "Iron protein" and the VTK textbook credits the volume +in the caption of Figure 7-4, "High potential iron protein data courtesy of +Scripps Clinic, La Jolla, CA.", which is the source of `authors`: + + git -C vtk-examples grep -n 'Scripps' HEAD -- src/VTKBook/07Chapter7.md + +`ironProt.vtk` was added to VTK Data on 2001-07-23 (commit 62035d9), reached +this repository in the March 2019 fork and matches VTK's +`Testing/Data/ironProt.vtk.sha512` content link. `StructuredPoints.vtk` is +the same blob (b4dcd4fe8d51) and arrived with the April 2019 import from +`lorensen/VTKExamples`, which has carried both file names since May 2017. +Neither Kitware's blanket `Copyright.txt` notice nor the examples repository +licence covers Scripps Clinic's data, and no terms from Scripps were found, +so the licence is undetermined. Downstream users should credit Scripps Clinic +and ask it for terms. +""" + +[[dataset]] +name = "ivan_angel" +title = "Angel figurine" +description = "Photogrammetric surface reconstruction of the angel figurine from the GGG-BenchmarkSfM close-range structure-from-motion benchmark, distributed as a zipped mesh of over a million points and as a more heavily decimated VTK XML PolyData file." +path = ["ivan-nikolov/Angel.zip", "ivan-nikolov/Angel_decimated.vtp"] +SPDX-License-Identifier = "CC-BY-4.0" +SPDX-FileCopyrightText = ["2020 Computer Graphics Group, Aalborg University"] +provenance = "verified" +origin_url = "https://data.mendeley.com/datasets/bzxk2n78s9/4" +origin_title = "GGG-BenchmarkSfM, Mendeley Data" +collection = "ggg-benchmark-sfm" +authors = ["Ivan Nikolov", "Claus Madsen"] +attribution = "Nikolov, I. and Madsen, C., GGG-BenchmarkSfM, Computer Graphics Group, Aalborg University, Mendeley Data, CC BY 4.0. Copyright 2020 Computer Graphics Group. All rights reserved." +modified = true +modification = "Converted from the original OFF mesh to VTK XML PolyData. The zipped mesh was decimated to 1811531 points with float32 coordinates to keep the archive under 50 MB; the `_decimated` file was reduced further, to 18412 points." +references = [ + { citation = "Nikolov, I. and Madsen, C. \"Benchmarking Close-range Structure from Motion 3D Reconstruction Software Under Varying Capturing Conditions.\" EuroMed 2016.", doi = "10.1007/978-3-319-48496-9_2" }, +] +notes = """ +The Mendeley dataset (version 4, published 12 August 2020, licence CC BY 4.0 +in its metadata) ships `CopyrightNotice.pdf` at its root, which states +"Copyright 2020 Computer Graphics Group. All rights reserved.", places the +database under CC BY 4.0 and asks that the copyright notice be present in +all copies; the notice is reproduced in `attribution`. +""" + +[[dataset]] +name = "kafadar_lidar" +title = "Kafadar lidar interpolation" +description = "Point cloud of lidar elevations resampled onto a regular 0.1 m grid of 1971 by 1721 vertices (3392091 points) with an Elevation scalar, used to demonstrate point cloud rendering and eye dome lighting." +path = ["kafadar-lidar-interp.vtp"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = """ +Added in March 2019 with the commit message "add kafadar lidar data" and no +recorded source. The coordinates place the survey on the Colorado School of +Mines campus around Kafadar Commons, where Bane Sullivan was studying when he +added it, so the name is the place rather than a person; neither the survey +nor its terms could be identified. +""" + +[[dataset]] +name = "kitchen" +title = "Kitchen airflow" +description = "Structured grid of the velocity field in a kitchen, with furniture that can be split into separate blocks." +path = ["kitchen.vtk"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/kitchen.vtk" +origin_title = "lorensen/VTKExamples, kitchen.vtk" +authors = ["Ludwig Besse"] +notes = """ +The file's own header reads "Flow analysis of Swiss Kitchen (Dr. Ludwig +Besse ETH)" (`head -2 Data/kitchen.vtk`), so the data is a flow simulation by +Ludwig Besse of ETH rather than Kitware's or Lorensen's work; it is the +kitchen airflow of Figure 6-18 of the VTK textbook +(`git -C vtk-examples grep -n -i kitchen HEAD -- src/VTKBook/06Chapter6.md`). +The copy here came through Bill Lorensen's `lorensen/VTKExamples` +repository, where he added it on 2017-09-28 ("ENH: Data and baseline for +Kitchen.", commit 3e2cb4831f), and the April 2019 import of that repository +into this one; VTK's own test data does not carry the file, so the +repository is as far back as the trail goes. Its Apache License 2.0 does not +cover a third party's data, and no terms from ETH or Besse were found, so +the licence is undetermined. Downstream users should credit Besse and ETH +and ask ETH for terms. +""" + +[[dataset]] +name = "land_sea_mask" +title = "Land-sea mask on a 4 by 5 degree grid" +description = "Global land-sea mask (0 to 1) on a 45 by 72 latitude-longitude grid, as a netCDF file." +path = ["lsm_4x5.nc"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyvista-support/issues/67" +origin_title = "pyvista-support issue 67, Plotting 2d array on a sphere" +notes = """ +Byte-identical to `lsm_4x5.nc` inside the archive that dennissergeev attached +to https://github.com/pyvista/pyvista-support/issues/67 on 2019-09-30 +("netCDF file is attached as a tar.gz archive"): + + curl -sSL -o lsm.tar.gz https://github.com/pyvista/pyvista-support/files/3673645/lsm_4x5.tar.gz && tar xzf lsm.tar.gz && cmp lsm_4x5.nc Data/lsm_4x5.nc + +The variable `lsm` carries only `long_name: Land-sea mask`, +`standard_name: land_binary_mask` and `units: (0 - 1)`; the file has no +global attributes and the issue does not say where the mask came from, so +its terms are undetermined. Added here on 2021-04-17 for Bane Sullivan's +Transform 2021 `spherical` notebook. Downstream users should ask the issue's +author before reusing it. +""" + +[[dataset]] +name = "lethe_particles" +title = "Lethe particle simulation" +description = "Particle positions from a discrete element simulation run with Lethe." +path = ["lethe/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyvista/discussions/1984" +origin_title = "pyvista/pyvista discussion 1984" +authors = ["Victor Oliveira Ferreira"] +notes = """ +Posted by its author, Victor Oliveira Ferreira (GitHub user voferreira), in +https://github.com/pyvista/pyvista/discussions/1984 on 2022-01-03 as the +attachment +https://github.com/pyvista/pyvista/files/7804554/result_particles.20000.0000.zip; +the file here is byte-identical to the `.vtu` inside that attachment +(SHA-256 b7bf4ff0fee5af4f948e8838c4f9429585e5e894094440b32c9cef780ab59b21). +Its header says it was written by the deal.II library on 2021-12-22. The +author states in the thread that the results "were obtained using Lethe" +(https://github.com/chaos-polymtl/lethe) and, when the maintainer asked on +2022-07-13 to use it as an example, shared it again without stating a +licence. Lethe itself relicensed in 2024 to Apache-2.0 WITH LLVM-exception +OR LGPL-2.1-or-later, but simulation output is not a derivative of the +solver source, so the terms of the result file are undetermined. Downstream +users should credit the author and ask in that discussion for terms. +""" + +[[dataset]] +name = "letter_a" +title = "Letter A grid" +description = "Unstructured grid of the letter A." +path = ["a_grid.vtk"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = "Added in May 2019 with the commit message \"add a letter\" (commit 2aac321). No source, author or terms of use were recorded. The file is binary VTK writer output (header \"vtk output\", DataFile Version 4.2) holding 1317 points and 4802 tetrahedral cells only, spanning x 3.16 to 3.89, y -0.09 to 0.74 and z 0 to 0.3, that is a letter outline extruded 0.3 units in z, so it was generated in VTK rather than scanned or published elsewhere; who generated it could not be established." + +[[dataset]] +name = "letter_k" +title = "Letter K" +description = "Outline of the letter K as a 166-point surface, used to demonstrate extrusion." +path = ["k.vtk"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "libtiff_test" +title = "TIFF reader test image" +description = "256 by 256 RGB TIFF of a hue and saturation gradient, added to VTK Data in 2002 as a simple image for the TIFF reader test." +path = ["libtiff/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. + +The file was added by Andy Cedilnik on 2002-02-01 ("Add simple image for +the tiff reader test", commit 9c8d06a in this repository's history) and VTK +still distributes the same bytes (`Testing/Data/libtiff/test.tif.sha512`). +The image carries a Photoshop resource block (TIFF tag 34377) and no author +or software tag; Debian's reverse content lookup +(sources.debian.org/api/sha256/) finds these bytes only in the `vtkdata` +package, not among libtiff's own test images. Nothing but the directory +name links it to libtiff. +""" + +[[dataset]] +name = "lincoln_life_mask" +title = "Abraham Lincoln life mask" +description = "Photogrammetric scan of a plaster life mask of Abraham Lincoln, with diffuse, normal and ambient-occlusion textures." +path = ["lincoln_life_mask/**"] +SPDX-License-Identifier = "CC0-1.0" +SPDX-FileCopyrightText = ["Smithsonian Institution"] +provenance = "verified" +origin_url = "https://3d.si.edu/object/3d/abraham-lincoln-mills-life-mask:d8c62934-4ebc-11ea-b77f-2e728ce88125" +origin_title = "Smithsonian Open Access" +collection = "smithsonian-open-access" +attribution = "Abraham Lincoln, cast after Clark Mills, National Portrait Gallery, Smithsonian Institution (NPG.71.26). 3D scan released under CC0. Attribution is a courtesy, not a requirement." +notes = """ +Clark Mills took the mask from Lincoln's face on 11 February 1865, but the +object scanned is not that original. It is the National Portrait Gallery's +NPG.71.26, whose Smithsonian Open Access record dates it "1865 (cast c. +1917)" and credits Mills as "Cast after" rather than as maker. The 1865 +plaster is a separate object, held by the National Museum of American +History. + +The Smithsonian release states: "This media file is in the public domain +(free of copyright restrictions). You can copy, modify, and distribute this +work without contacting the Smithsonian." +""" + +[[dataset]] +name = "lobster" +title = "Lobster" +description = "Scan of a lobster." +path = ["lobster.ply"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.laserdesign.com/sample-files/" +origin_title = "Laser Design sample files" +collection = "laser-design" +notes = """ +Laser Design Inc. publishes these scans in its public sample-file archive to +demonstrate its scanning services. The archive page states no licence of its +own, and the site footer asserts "(c) 2026 CyberOptics Corporation. All Rights +Reserved." + +The "Terms of Use" its footer links to, at cyberoptics.com, grants permission +"to temporarily download one copy of the materials ... for personal, +non-commercial transitory viewing only", and says that under that licence you +may not "use the materials for any commercial purpose", or "transfer the +materials to another person or 'mirror' the materials on any other server". +Whether that boilerplate is meant to govern the sample downloads is arguable, +but no grant of redistribution rights exists anywhere on the site, so the +terms are recorded as undetermined. Downstream users, especially commercial +ones, should contact Laser Design or substitute another mesh. +""" + +[[dataset]] +name = "louis_louvre" +title = "Louis XIV de France, Louvre" +description = "Photogrammetric scan of the equestrian statue of Louis XIV in the Napoleon Courtyard of the Louvre Palace, a lead copy of the Bernini and Girardon original at Versailles." +path = ["louis.ply"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://sketchfab.com/3d-models/louis-xiv-de-france-louvre-paris-a0cc0e7eee384c99838dff2857b8158c" +origin_title = "Sketchfab" +authors = ["HoangHiepVu"] +attribution = "Louis XIV de France, Louvre, Paris by HoangHiepVu, licensed under CC BY 4.0." + +[[dataset]] +name = "lucy" +title = "Lucy" +description = "Statue of an angel holding a torch, scanned at Stanford and decimated to roughly one hundred thousand triangles." +path = ["lucy.ply"] +SPDX-License-Identifier = "LicenseRef-StanfordScanningRepository" +SPDX-FileCopyrightText = ["Stanford University Computer Graphics Laboratory"] +provenance = "verified" +origin_url = "http://graphics.stanford.edu/data/3Dscanrep/" +origin_title = "Stanford 3D Scanning Repository" +collection = "stanford-3d-scanning" +attribution = "Stanford Computer Graphics Laboratory." +modified = true +modification = "Decimated from the 28-million-triangle original to roughly 100 thousand triangles." +notes = """ +The Stanford conditions of use permit free redistribution and research use +but exclude commercial use without permission from the Stanford Computer +Graphics Laboratory. This is not an open licence; downstream users shipping +a product for sale should contact Stanford or substitute another mesh. + +Stanford additionally names this model as culturally significant and asks +that it not be animated, morphed, subjected to Boolean operators, or shown +having nasty things happen to it. Only the bunny and the armadillo are +exempted from that request. +""" + +[[dataset]] +name = "magnetic_coil_field" +title = "Magnetic field of a coil" +description = "Magnetic flux density on a regular grid around a sixteen-winding coil, computed with magpylib." +path = ["magpylib/**"] +SPDX-License-Identifier = "BSD-2-Clause" +provenance = "verified" +origin_url = "https://github.com/magpylib/magpylib" +origin_title = "magpylib" +attribution = "Generated with magpylib, https://github.com/magpylib/magpylib, BSD 2-Clause." +notes = "The licence recorded here is magpylib's own. Running a BSD-licensed program over your own inputs does not normally make the output a derivative work, so a downstream user is unlikely to be bound by it; it is recorded because no other terms attach to this file." +modified = true +modification = "Computed on an 81x81x81 grid and saved as VTK XML ImageData." + +[[dataset]] +name = "man_face" +title = "Man's face" +description = "Scan of a man's face." +path = ["man_face.stl"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.laserdesign.com/sample-files/" +origin_title = "Laser Design sample files" +collection = "laser-design" +notes = """ +Laser Design Inc. publishes these scans in its public sample-file archive to +demonstrate its scanning services. The archive page states no licence of its +own, and the site footer asserts "(c) 2026 CyberOptics Corporation. All Rights +Reserved." + +The "Terms of Use" its footer links to, at cyberoptics.com, grants permission +"to temporarily download one copy of the materials ... for personal, +non-commercial transitory viewing only", and says that under that licence you +may not "use the materials for any commercial purpose", or "transfer the +materials to another person or 'mirror' the materials on any other server". +Whether that boilerplate is meant to govern the sample downloads is arguable, +but no grant of redistribution rights exists anywhere on the site, so the +terms are recorded as undetermined. Downstream users, especially commercial +ones, should contact Laser Design or substitute another mesh. +""" + +[[dataset]] +name = "masonry" +title = "Masonry texture" +description = "Bitmap image of a masonry wall, used as a texture." +path = ["masonry.bmp"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "meshio_xdmf" +title = "meshio XDMF output" +description = "XDMF and HDF5 pair written by meshio's XDMF time-series test: a two-triangle mesh with point data `phi` and `u` and cell data `a` at five times, used to exercise the XDMF reader." +path = ["meshio/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "verified" +origin_url = "https://github.com/nschloe/meshio/blob/main/tests/test_xdmf.py" +origin_title = "meshio test suite, test_time_series" +authors = ["Tetsuo Koyama"] +attribution = "Generated with meshio (https://github.com/nschloe/meshio) by Tetsuo Koyama for PyVista; Apache-2.0." +notes = """ +Reading the files back gives exactly what `test_time_series` in meshio's +`tests/test_xdmf.py` writes: the file name `out.xdmf`, the four-point +two-triangle `tri_mesh_2d` helper mesh, times 0 to 1 in five steps, point +data `phi` and `u` equal to the time and cell data `a` of 3.0 and 4.2. +Tetsuo Koyama posted that generating code in pyvista/pyvista#2839, which +added `pyvista.XdmfReader`, and submitted the files through pyvista/data +pull requests 22 and 23 with no other terms, so they stay under this +repository's Apache-2.0; that contributor basis is the licence recorded +here. meshio itself is MIT-licensed and every value in the files is a +constant in that test. +""" + +[[dataset]] +name = "minc_image" +title = "MINC image volume" +description = "Displacement grid volume in the Medical Imaging NetCDF format, referenced as the `Displacement_Volume` of the MINC library's test transform `t3.xfm`." +path = ["t3_grid_0.mnc"] +SPDX-License-Identifier = "LicenseRef-MINC" +SPDX-FileCopyrightText = ["The MINC developers, McConnell Brain Imaging Centre, Montreal Neurological Institute, McGill University"] +provenance = "verified" +origin_url = "https://github.com/BIC-MNI/minc/blob/master/volume_io/Testing/t3_grid_0.mnc" +origin_title = "MINC library volume_io test data" +collection = "vtk-data" +attribution = "MINC volume_io test data. Copyright the MINC developers, McConnell Brain Imaging Centre, Montreal Neurological Institute, McGill University." +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +modified = false +notes = """ +Byte-identical (git blob a4c9e6b36f682587fd96189520dbcfd1d2fe25bf, 346420 +bytes) to `volume_io/Testing/t3_grid_0.mnc` in the MINC library, added there +on 2003-01-10 by Steve Robbins (commit cd56fa4e, "Add documentation and +testing for volume_io."); `volume_io/Testing/t3.xfm` names it as its +`Displacement_Volume`. David Gobbi copied it into VTK Data on 2006-08-17 +(commit 00cee22, "ENH: Data for testing MINCImageReader"), and it reached +this repository through the VTK Data fork; VTK's content link +`Testing/Data/t3_grid_0.mnc.sha512` matches the same bytes. The MINC +`COPYING` notice (https://github.com/BIC-MNI/minc/blob/master/COPYING) +permits use, copying, modification and distribution for any purpose without +fee provided the copyright notice appears in all copies; Kitware's VTK Data +notice does not license it. +""" + +[[dataset]] +name = "misc_pyvista_era" +title = "Assorted PyVista-era files" +description = "Assorted files added during PyVista development that are not loaded by `pyvista.examples`: the original notch stress result, a tree point cloud, and a partitioned reactor archive." +path = ["notch_stress.vtk", "tree.ply", "reactor.zip"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = "These files record no source, author or terms, and none could be established. `notch_stress.vtk` is the earlier of the two notch results: its 2192 cells are stored as linear hexahedra and wedges but carry 20 and 15 point ids each, and all 12717 points are distinct. `notch_stress_fixed.vtk`, which `download_notch_stress` loads, keeps the first eight or six point ids of each cell (the corner nodes) and drops the unused midside points, 3537 points rather than 12717 (https://github.com/pyvista/pyvista/issues/8379#issuecomment-3999644105)." + +[[dataset]] +name = "model_with_variance" +title = "Model with variance" +description = "Unstructured grid carrying a kriged temperature field and its per-point kriging variance over the Utah FORGE site, used to demonstrate uncertainty visualisation." +path = ["model_with_variance.vtu"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "inferred" +origin_url = "https://gdr.openei.org/submissions/1110" +origin_title = "Utah FORGE: Roosevelt Hot Springs Analytical Well-Based Temperature Model Data, GDR submission 1110" +authors = ["Robert Podgorney", "Rick Allis"] +attribution = "Derived from Utah FORGE: Roosevelt Hot Springs Analytical Well-Based Temperature Model Data by Robert Podgorney and Rick Allis, Geothermal Data Repository submission 1110, https://doi.org/10.15121/1495404, licensed under CC BY 4.0." +modified = true +modification = "Kriging interpolation of the submission's 245 well-based temperature points on to a 551724-point unstructured grid, with the kriging variance as a second array (`Temperature` and `Temperature_var`)." +references = [{ citation = "Podgorney, R. and Allis, R. Utah FORGE: Roosevelt Hot Springs Analytical Well-Based Temperature Model Data. Geothermal Data Repository submission 1110.", doi = "10.15121/1495404", url = "https://gdr.openei.org/submissions/1110" }] +notes = """ +Added in July 2019 with the commit message "add model_with_variance.vtu" and +no recorded source. The pyvista pull request that first used it +(https://github.com/pyvista/pyvista/pull/297, Bane Sullivan) describes it as +"a mesh with a modelled scalar array from Kriging and an associated kriging +variance array" and quotes the same 2841790 cells and 551724 points. Its +bounds (x 329925 to 344153, y 4252834 to 4270951, z -2700 to 2300) enclose +the 245 points of `probes.vtp` (the `thermal_probes` entry, x 330055 to +343465, y 4253028 to 4270734), which are the submission's +`well_based_temperature.csv` (columns x, y, z, T), and the submission page +states the licence https://creativecommons.org/licenses/by/4.0/. The +derivation is inferred from those matches, not stated by the source, and +who ran the kriging is not recorded. The licence recorded is the source +data's, which permits derivatives with attribution. +""" + +[[dataset]] +name = "moonlanding_image" +title = "Moon landing photograph" +description = "Noisy grayscale photograph of a large rock from the Scipy Lecture Notes' image denoising exercise, used to demonstrate low-pass filtering." +path = ["moonlanding.png"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://github.com/scipy-lectures/scientific-python-lectures/blob/main/data/moonlanding.png" +origin_title = "Scipy Lecture Notes" +attribution = "Scipy Lecture Notes, licensed under CC BY 4.0." +notes = "The Scipy Lecture Notes' LICENSE.md states that all code and material are licensed under a Creative Commons Attribution 4.0 International License. The file here is byte-identical to the repository's `data/moonlanding.png` (git blob 15e27b1e2494af9080b93d52e311a241e69b8e0f). The commit that added it there (34fd36bf, 2012-08-11, Ralf Gommers) credits the material to Stefan van der Walt; the notes describe the file only as an image heavily contaminated with periodic noise, and the photograph's own source is not stated." + +[[dataset]] +name = "motor" +title = "Motor" +description = "Surface geometry of an electric motor." +path = ["motor.g"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "mount_damavand" +title = "Mount Damavand" +description = "Area-of-interest elevation surface for Mount Damavand, Iran, in UTM zone 39N, built from the GEBCO 2019 grid." +path = ["AOI.Damavand.32639.vtp"] +SPDX-License-Identifier = "MIT" +SPDX-FileCopyrightText = ["2020 Alexey Pechnikov"] +provenance = "verified" +origin_url = "https://github.com/AlexeyPechnikov/ParaView-MoshaFault" +origin_title = "AlexeyPechnikov/ParaView-MoshaFault" +authors = ["Alexey Pechnikov"] +attribution = "Alexey Pechnikov, ParaView-MoshaFault, MIT License. Elevation from GEBCO Compilation Group (2019) GEBCO 2019 Grid (doi:10.5285/836f016a-33be-6ddc-e053-6c86abc0788e)." +redistributed_from = ["https://github.com/banesullivan/damavand-volcano/blob/master/data/AOI.Damavand.32639.vtp"] +references = [ + { citation = "GEBCO Compilation Group (2019) GEBCO 2019 Grid", doi = "10.5285/836f016a-33be-6ddc-e053-6c86abc0788e" }, +] +notes = """ +The file is byte-identical (blob a674ec283289, 5881015 bytes) to +`data/AOI.Damavand.32639.vtp` in Alexey Pechnikov's ParaView-MoshaFault +repository, committed there on 2020-01-26, whose README states that the +`AOI*.vtp` surfaces are built from the GEBCO_2019 bathymetry grid. Bane +Sullivan, who committed the file here in April 2021 (commit f8b7b56), holds +the same blob in his damavand-volcano repository (committed 2020-01-29), +the route recorded in `redistributed_from`. Both repositories publish an +MIT LICENSE dated 2020. GEBCO's page for the 2019 grid +(https://www.gebco.net/data-products/gridded-bathymetry-data/gebco-2019) +states that "The GEBCO Grid is placed in the public domain and may be used +free of charge" and asks that the source be acknowledged in the form +recorded in `attribution`. The surface carries one cell array, `z`, the +elevation in metres. +""" + +[[dataset]] +name = "mug" +title = "Mug Exodus mesh" +description = "Exodus II finite element mesh of a mug with the `convected` and `diffused` fields written by a MOOSE test run." +path = ["mug.e"] +SPDX-License-Identifier = "LGPL-2.1-only" +provenance = "verified" +origin_url = "https://github.com/idaholab/moose/blob/master/python/chigger/tests/input/mug_blocks_out.e" +origin_title = "MOOSE framework, chigger test input mug_blocks_out.e" +authors = ["Idaho National Laboratory"] +attribution = "MOOSE framework, Idaho National Laboratory, https://github.com/idaholab/moose, LGPL-2.1." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/mug.e"] +notes = """ +Byte-identical to `python/chigger/tests/input/mug_blocks_out.e` in the MOOSE +repository (git blob ecc6ec67c6c314dbe26ac1b10810f841edb885ca, 1928660 +bytes, added there in March 2017 by Andrew Slaughter in commit 03bb153). +The file's own trailer records the run that wrote it: input `mug_blocks.i`, +MOOSE git commit b8dd929 of 2015-09-03, run on 2015-09-08. + + gh api repos/idaholab/moose/contents/python/chigger/tests/input/mug_blocks_out.e --jq .sha + +It reached this repository through the April 2019 import of +`lorensen/VTKExamples`, which had added it in January 2019 (commit +927711ca4c). The MOOSE repository's `LICENSE` is the GNU Lesser General +Public License version 2.1 with no "or later" clause, recorded here; the +VTK Examples' Apache-2.0 is Lorensen's and does not cover this file. +""" + +[[dataset]] +name = "multiblock_display" +title = "Multiblock display-properties test data" +description = "Sixty-seven files exercising per-block display properties on a composite dataset." +path = ["many_blocks/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = "Added in May 2013 with the commit message \"Adding baseline and data for new test (TestMultiblockDisplayProperties)\", six years before this repository was forked from VTK Data, so it carries that collection's licence. The commit message \"Add reactor partitioned mesh\" belongs to `reactor.zip`, a different file added in 2024." + +[[dataset]] +name = "nasa_plot3d_cfd" +title = "NASA PLOT3D CFD cases" +description = "Two NASA Ames computational fluid dynamics cases in PLOT3D format, a blunt fin on a plate and a combustor, as grid and solution pairs, with the combustor also split into three structured blocks." +path = [ + "bluntfinq.bin", + "bluntfinxyz.bin", + "combq.bin", + "combxyz.bin", + "StructuredGrid.vts", + "multicomb_0.vts", + "multicomb_1.vts", + "multicomb_2.vts", + "postq.bin", + "postxyz.bin", +] +SPDX-License-Identifier = "LicenseRef-PublicDomain" +provenance = "verified" +origin_url = "https://ntrs.nasa.gov/citations/19900013774" +origin_title = "NASA Ames Research Center, PLOT3D User's Manual" +authors = ["NASA Ames Research Center"] +redistributed_from = [ + "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7", + "https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/postxyz.bin", +] +references = [ + { citation = "C. M. Hung and P. G. Buning, Simulation of blunt-fin-induced shock wave and turbulent boundary-layer interaction, AIAA 22nd Aerospace Sciences Meeting, Reno, 1984, AIAA Paper 84-0457", doi = "10.2514/6.1984-457" }, + { citation = "S. E. Rogers, D. Kwak and U. K. Kaul, A Numerical Study of Three-Dimensional Incompressible Flow Around Multiple Posts, AIAA Aerospace Sciences Conference, Reno, 1986, AIAA Paper 86-0353", url = "https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/VTKBook/12Chapter12.md" }, +] +notes = """ +The grid headers decode to the published dimensions and the file sizes follow +exactly from them, which is what identifies each case: + + python3 -c "import struct; print(struct.unpack('>3i', open('Data/combxyz.bin','rb').read(12)))" + # (57, 33, 25), and 12 + 57*33*25*3*4 = 564312 = the file size + +`bluntfinxyz.bin` is 40 by 32 by 32, the NASA Ames blunt-fin case of Hung and +Buning (the first reference, DOI resolvable through Crossref); `combxyz.bin` +is 57 by 33 by 25, the Ames combustor, and both pairs are named together in +`Data/test.p3d`. `StructuredGrid.vts` is byte-identical to `multicomb_0.vts` +and had its own entry describing it as a "small structured grid". +`postxyz.bin` is 38 by 76 by 38 with an IBLANK array, the LOx post that +chapter 12 of the VTK textbook introduces as "a dataset from NASA" citing +[Rogers86], whose bibliography entry is the second reference. The three +`multicomb_*.vts` blocks read back through the PLOT3D reader with bounds and +a density range identical to `combxyz.bin` and `combq.bin`, so they are that +case re-blocked. + +Route: the blunt fin, combustor and `multicomb_*` files are in the 2013 +VTK Data fork tree and VTK still ships content links for them; `postq.bin`, +`postxyz.bin` and `StructuredGrid.vts` are byte-identical to +`lorensen/VTKExamples` and arrived in the April 2019 import of that +repository. + +Work produced by NASA employees carries no copyright under 17 U.S.C. Sec. 105. +These files were recorded under the VTK collection notices, Kitware's for +most of them and Lorensen's Apache-2.0 for the LOx post, neither of which +could attach a copyright to federal work. + +`bluntfinq.bin` is 484 bytes longer than a single-grid solution file of these +dimensions, so it carries something more than the plain record structure; the +grid it pairs with is unambiguous. +""" + +[[dataset]] +name = "natural_earth_ii" +title = "Natural Earth II" +description = "Tom Patterson's Natural Earth II world map with bathymetry, the 4000 by 2000 page-size raster, plus a transparent variant and a downsample." +path = [ + "Infovis/Images/NE2_ps_bath.jpg", + "Infovis/Images/NE2_ps_bath.png", + "Infovis/Images/NE2_ps_bath_transparent.png", + "NE2_ps_bath_small.jpg", +] +SPDX-License-Identifier = "LicenseRef-PublicDomain" +provenance = "verified" +origin_url = "https://www.shadedrelief.com/natural2/" +origin_title = "Natural Earth II" +authors = ["Tom Patterson"] +notes = """ +The name is the giveaway: `NE2_ps_bath` is Natural Earth II, page size, with +bathymetry, which is exactly how Patterson's download page labels the file it +serves as `NE2_ps_bath.jpg`. Ours is 4000 by 2000, the page-size dimensions +that page states, and it was written by Photoshop CS2 on 2 July 2007. + +The terms page says: "All versions of Natural Earth II found on this website +are in the public domain. You may use the maps in any manner ... The author, +Tom Patterson, renounces all financial claim to the maps and invites you to +use them for personal, educational, and commercial purposes. No permission is +needed ... Crediting the author is unnecessary." + + curl -s "http://web.archive.org/web/20071021063918id_/http://www.shadedrelief.com:80/natural2/pages/use.html" + +The four files were covered by the `infovis` and `vtk_data_files` entries, +which asserted Kitware's copyright over them. `NE2_ps_bath_small.jpg` is a +GIMP downsample of the same map. +""" + +[[dataset]] +name = "nefertiti" +title = "Nefertiti bust" +description = "Scan of the bust of Nefertiti, distributed as a zipped PLY mesh and a zipped OBJ mesh." +path = ["nefertiti.ply.zip", "Nefertiti.obj.zip"] +SPDX-License-Identifier = "CC-BY-SA-4.0" +provenance = "verified" +origin_url = "https://alloversky.com/puzzlepieces/the-other-nefertiti" +origin_title = "The Other Nefertiti" +authors = ["Nora Al-Badri", "Jan Nikolai Nelles"] +attribution = "Nora Al-Badri and Jan Nikolai Nelles, The Other Nefertiti (2015), CC BY-SA 4.0." +redistributed_from = ["https://alloversky.com/nefertitihack/downloads/Nefertiti.obj.zip"] +modified = true +modification = "`nefertiti.ply.zip` is a VTK conversion of the published OBJ; its PLY header reads \"VTK generated PLY File\"." +notes = """ +The artists state "The 3d data is licensed under a Creative Commons +Attribution-ShareAlike 4.0 International License". There is no NonCommercial +clause. The project page dates the work "nefertitihack, 2015". + +ShareAlike propagates: a downstream work derived from this scan must be shared +under the same licence. The original `nefertitihack.alloversky.com` host no +longer resolves; the artists' project page carries the same statement. +""" + +[[dataset]] +name = "neghip" +title = "Negative high-potential iron protein" +description = "66 cubed volume of the electron probability distribution of a high-potential iron protein, the negative-potential counterpart of the `iron_protein` volume." +path = ["neghip.slc"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "http://klacansky.com/open-scivis-datasets/" +origin_title = "Open SciVis Datasets, Neghip (VolVis distribution, SUNY Stony Brook)" +collection = "vtk-data" +redistributed_from = [ + "https://gitlab.kitware.com/vtk/vtk/-/blob/master/Testing/Data/neghip.slc.sha512", + "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7", +] +notes = """ +`neghip.slc` is in the 2013 VTKData tree this repository was created from; +Bill Lorensen added it to VTKData in August 2001 (commit c010a99 in this +repository's history) and VTK still distributes the same bytes through +`Testing/Data/neghip.slc.sha512`. The same volume is published by Open +SciVis Datasets as `Neghip`, 64 by 64 by 64 uint8, whose entry in +http://klacansky.com/open-scivis-datasets/datasets.json acknowledges +"volvis.org and VolVis distribution of SUNY Stony Brook, NY, USA", cites the +VolVis paper (Avila et al., Visualization '94, doi +10.1109/VISUAL.1994.346340) and describes it as a simulation of the spatial +probability distribution of the electrons in a high potential protein +molecule. Our file is that volume zero-padded to 66 cubed: read `neghip.slc` +with `vtkSLCReader` and +http://klacansky.com/open-scivis-datasets/neghip/neghip_64x64x64_uint8.raw +with numpy; the inner 64 cubed is equal and the one-voxel border sums to +zero. volvis.org is now a parked domain, so Open SciVis is the furthest +upstream point that can be opened; the VolVis origin is its statement, hence +inferred. The VTK textbook credits its iron protein figures to Scripps +Clinic, La Jolla (`src/VTKBook/07Chapter7.md`, Figure 7-4); that credit is +attached to `ironProt.vtk`, not to this file, so Scripps is not recorded as +the origin here. Neither VolVis nor Open SciVis states terms for the volume, +so the licence is undetermined; a downstream user should ask the originating +group before redistributing it. lorensen/VTKExamples carries the same blob +at `src/Testing/Data/neghip.slc`. +""" + +[[dataset]] +name = "nek5000_eddy" +title = "Nek5000 eddy simulation" +description = "Eleven time steps of a two-dimensional eddy flow written by the Nek5000 spectral element solver, with its `.nek5000` index file." +path = ["nek5000/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = "Added in December 2024 (pyvista/data PR 49), whose contributor said the files are from the VTKData tarball. All twelve files match VTK's content links `Testing/Data/nek5000/eddy_uv/*.sha512`, which Kitware added in VTK merge request 9873 (https://gitlab.kitware.com/vtk/vtk/-/merge_requests/9873, commit 7cc31568dc) alongside the Nek5000 reader ported from Jean Favre's ParaView plugin; `eddy_uv` is the name of a Nek5000 example case, but who ran it to produce these outputs is not stated upstream. The Kitware collection terms are recorded here." + +[[dataset]] +name = "netcdf" +title = "Network Common Data Form sample" +description = "Sea surface temperature for 2001 to 2002 from the IPSL-CM4_v1 coupled model, run for the IPCC Fourth Assessment SRES A2 experiment, distributed by Unidata as a NetCDF example file." +path = ["tos_O1_2001-2002.nc"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "https://archive.unidata.ucar.edu/software/netcdf/examples/files.html" +origin_title = "Unidata NetCDF example files" +collection = "vtk-data" +authors = ["Institut Pierre Simon Laplace"] +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +notes = """ +The file's own global attributes identify it: `title` "IPSL model output +prepared for IPCC Fourth Assessment SRES A2 experiment", `institution` +"IPSL (Institut Pierre Simon Laplace, Paris, France)", `source` "IPSL-CM4_v1 +(2003)", `contact` Sebastien Denvil (IPSL), `table_id` "Table O1 (13 +November 2004)" and `history` "At 16:37:23 on 01/11/2005, CMOR rewrote data +to comply with CF standards and IPCC Fourth Assessment requirements". Its +`comment` is "Test drive" and the history and references carry placeholder +text, so it reads as a CMOR test output made at IPSL rather than a file +taken from an archive; no IPSL page for it was found. Unidata's +example-files page describes it as "Sea surface temperatures collected by +PCMDI for use by the IPCC" and states no terms of its own (the ECMWF file on +the same page does carry conditions of use). Ken Moreland added it to +VTKData on 2009-03-17 naming that Unidata page (commit 7ed8239 in this +repository's history), and VTK still distributes the same bytes +(`Testing/Data/tos_O1_2001-2002.nc.sha512`). + +PCMDI's terms for the IPCC AR4 (CMIP3) archive, +https://pcmdi.llnl.gov/ipcc/info_for_analysts.html#Terms_of_use, say the +data "are for use in research projects only" and that a research project is +one "for non-commercial research purposes only". Whether this test file was +ever part of that archive is not established, but it is IPCC AR4 output of +a CMIP3 modelling group and no open licence was found, so the identifier +stays LicenseRef-Unknown. A downstream user should treat the file as +restricted to non-commercial research, acknowledge IPSL and the WCRP CMIP3 +dataset as those terms ask, and ask IPSL or PCMDI for anything more. +""" + +[[dataset]] +name = "nifti_brain" +title = "NIfTI average brain" +description = "MNI average T1 brain template in compressed NIfTI format." +path = ["avg152T1_RL_nifti.nii.gz"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://nifti.nimh.nih.gov/nifti-1/data" +origin_title = "NIfTI-1 test data sets" +authors = ["Montreal Neurological Institute"] +notes = """ +Byte-identical to the file the NIfTI-1 project publishes as +`avg152T1_RL_nifti.nii.gz`: + + curl -sL "https://web.archive.org/web/2024id_/https://nifti.nimh.nih.gov/nifti-1/data/avg152T1_RL_nifti.nii.gz" | shasum -a 256 + # 8a731128dac4de46ccb2cc60... matches Data/avg152T1_RL_nifti.nii.gz + +Its header is 91 by 109 by 91 at 2 mm and carries `descrip = FSL3.2beta`, so +this is the MNI152 average T1 template as FSL ships it; the NIfTI-1 page +lists it under "Standard (MNI152) Images in Nifti Format" and states no +terms for the samples it hosts. + +The template is the Montreal Neurological Institute's, not Kitware's. The +MNI's ICBM 152 linear template page, https://nist.mni.mcgill.ca/icbm-152lin/, +carries the notice "Copyright (C) 1993-2009 Louis Collins, McConnell Brain +Imaging Centre, Montreal Neurological Institute, McGill University" and +grants permission "to use, copy, modify, and distribute this software and +its documentation for any purpose and without fee ... provided that the +above copyright notice appear in all copies". Whether this FSL 3.2 +`avg152T1` file is that template was not established, so the terms are +recorded as undetermined rather than the collection's BSD-3-Clause; a +downstream user who confirms it should keep that notice with any copy. +""" + +[[dataset]] +name = "nifti_samples" +title = "NIfTI-1 minimal samples" +description = "Smallest valid NIfTI-1 files, as a single `.nii.gz` and as a separate header and image pair, used to exercise the reader." +path = ["minimal.hdr.gz", "minimal.img.gz", "minimal.nii.gz"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://nifti.nimh.nih.gov/nifti-1/data" +origin_title = "NIfTI-1 test data sets" +collection = "vtk-data" +authors = ["NIfTI Data Format Working Group"] +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7/folder/5afd92b48d777f15ebe1aac1"] +notes = """ +All three files are byte-identical to the files of the same names on the +NIfTI-1 project's test data page: + + for f in minimal.nii.gz minimal.hdr.gz minimal.img.gz; do + curl -sL "https://web.archive.org/web/2024id_/https://nifti.nimh.nih.gov/nifti-1/data/$f" | cmp - Data/$f && echo "$f identical" + done + +They hold no imaging: the page describes the "minimal" dataset as an example +and test dataset with close to the minimum header fields and a ramp image +increasing from 0 to 63 along Y, says "we wanted to provide a minimal +dataset", and names Mark Jenkinson as the page's author; the site is the +NIfTI Data Format Working Group's, which is the basis for `authors`. The +page publishes no licence, copyright or public-domain statement, so the +terms could not be established; a downstream user who needs terms should +ask the working group through that site. David Gobbi added the files to +VTK Data in commit 29f48af (2013-02-17) for reader tests; they are in the +tree this repository was forked from and match the sha512 Girder records in +the collection's root `Data` folder. +""" + +[[dataset]] +name = "notch_stress" +title = "Notched beam stress and displacement" +description = "Finite element stress and displacement results for a notched beam." +path = ["notch_stress_fixed.vtk", "notch_disp.vtu"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +modified = true +modification = "`notch_stress_fixed.vtk` keeps the 8 corner nodes of each 20-node hexahedron and the 6 of each 15-node wedge in `notch_stress.vtk`, whose cells were stored with linear cell types, and drops the unused midside points: 12717 points to 3537, 2192 cells unchanged (https://github.com/pyvista/pyvista/issues/8379#issuecomment-3999644105). `notch_disp.vtu` is as supplied." +notes = """ +`notch_disp.vtu`, and the `notch_stress.vtk` that `notch_stress_fixed.vtk` +derives from, were supplied by Alex Kaszynski on 2021-03-30 (commits e85b1fb +and 92056ee) for the example in pyvista/pyvista#1237 +(https://github.com/pyvista/pyvista/pull/1237#issuecomment-810705675) with +no statement of where the finite element results came from or under what +terms, and the files record none. `notch_stress_fixed.vtk` was derived from +`notch_stress.vtk` in March 2026 by the script in +https://github.com/pyvista/pyvista/issues/8379#issuecomment-3999644105 and +added through pyvista/data#64. A downstream user should treat both files as +unlicensed. +""" + +[[dataset]] +name = "oblique_cone" +title = "Oblique cone" +description = "Surface mesh of an oblique cone." +path = ["ObliqueCone.vtp"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "office" +title = "Office airflow" +description = "Structured grid of the velocity field in an office." +path = ["office.binary.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "omf_wolfpass" +title = "OMF Wolfpass project" +description = "Open Mining Format project file holding the Wolfpass block model, drillholes and topography." +path = ["test_file.omf"] +SPDX-License-Identifier = "MIT" +SPDX-FileCopyrightText = ["2019 Global Mining Guidelines Group"] +provenance = "inferred" +origin_url = "https://web.archive.org/web/20191211035351/https://github.com/gmggroup/omf/tree/master/assets" +origin_title = "Open Mining Format (gmggroup/omf, 2019 repository, Wayback)" +authors = ["Global Mining Guidelines Group"] +attribution = "OMF test file, Copyright (c) 2019 Global Mining Guidelines Group, MIT License." +redistributed_from = ["https://github.com/pyvista/omfvista/blob/master/assets/test_file.omf"] +notes = """ +The same file sits in pyvista/omfvista under `assets/`, with the same git +blob hash `bac26dfb5e72da633390e216cc97565b42a8450e` (20857468 bytes), and +that repository ships `assets/test_file_LICENSE.md` beside it: "The +`test_file.omf` file in this directory is from the OMF project. This file is +under the following MIT license from the Global Mining Guidelines Group ... +Copyright (c) 2019 Global Mining Guidelines Group." + +The OMF repository of that time carried `assets/test_file.omf` (Wayback +capture of its `assets` tree, 2019-12-11) under that MIT licence (Wayback +capture of its LICENSE, +http://web.archive.org/web/20190819153251/https://github.com/gmggroup/omf/blob/master/LICENSE), +but no raw copy of the file was captured, and https://github.com/gmggroup/omf +was recreated on 2023-12-11 with a single `main` branch, no tags and no +`.omf` file, so the origin is inferred from the file name, the omfvista +sidecar and the licence capture rather than from a byte comparison. + +The project inside names itself `Wolfpass`. VTK also ships the same bytes as +`Testing/Data/omf-test-file.omf` (content link added 2020-12-09 for the OMF +reader tests), but omfvista is the route this copy took and the only one +that states terms. +""" + +[[dataset]] +name = "openfoam_cavity" +title = "OpenFOAM lid-driven cavity" +description = "Two zipped OpenFOAM cases: the lid-driven cavity tutorial solved with icoFoam, and a 64-bit-float Xoodles case." +path = ["OpenFOAM.zip"] +SPDX-License-Identifier = "BSD-3-Clause AND GPL-3.0-or-later" +SPDX-FileCopyrightText = ["1993-2015 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "verified" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7/folder/5afd932c8d777f15ebe1b164" +origin_title = "Kitware VTK Data on data.kitware.com, OpenFOAM folder" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2015 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause. The cavity tutorial dictionaries are OpenFOAM's, GPL-3.0-or-later." +notes = """ +Added in November 2021 with the commit message "add OpenFOAM cavity from vtk +Data", and the contributor put VTK's `Copyright.txt` beside it the same day, +which is where the copyright line and the BSD notice recorded here come +from. That loose copy went away when the directory was replaced by the +archive a month later, but the archive still carries it as +`OpenFOAM/Copyright.txt`. Every one of the 40 files that Girder records +under the VTK Data `OpenFOAM` folder, which holds both the `cavity` and the +`64BitFloats` case, matches the sha512 of the archive member of the same +path; the archive's four other members are two empty `case.foam` sentinels, +a `.directory` file and `Copyright.txt`. + +The cavity case is the icoFoam lid-driven cavity tutorial: its +`constant/polyMesh/blockMeshDict` carries the OpenFOAM 1.7.1 banner and has +the same vertices, single 20 by 20 by 1 block and `movingWall`, `fixedWalls` +and `frontAndBack` patches as the tutorial file in +https://github.com/OpenFOAM/OpenFOAM-2.0.x/blob/master/tutorials/incompressible/icoFoam/cavity/constant/polyMesh/blockMeshDict, +differing only in the banner and the 2.0 boundary syntax (release 1.7.1 is +not on GitHub). OpenFOAM distributes its tutorials under the GNU General +Public License, version 3 or any later version +(https://github.com/OpenFOAM/OpenFOAM-2.0.x/blob/master/COPYING), which +Kitware's notice cannot replace, so that licence is recorded alongside +Kitware's for the tutorial dictionaries; the solved fields are the output of +running the solver. The `64BitFloats` case carries an OpenFOAM 1.3 banner +and was not matched to any tutorial. +""" + +[[dataset]] +name = "openfoam_ensight_case" +title = "EnSight case archive" +description = "Zipped EnSight Gold case used to exercise the EnSight reader." +path = ["EnSight.zip"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyvista/issues/722#issuecomment-629681355" +origin_title = "pyvista/pyvista#722" +authors = ["Luca Zampieri"] +notes = """ +Not VTK data. The archive is an OpenFOAM result its author converted with +`foamToEnsight` and posted to pyvista/pyvista issue 722 on 2020-05-16; a +maintainer put it here three days later, and the bytes are identical: + + curl -sSL https://github.com/pyvista/pyvista/files/4638840/EnSight.zip | cmp - Data/EnSight.zip + +In that comment he says he could find no EnSight sample under an open licence +and so converted "some of my openfoam result", which is the whole of what is +known about its terms: no licence was stated then or since. The name +"backward facing step" is the loader he wrote for it in +https://github.com/pyvista/pyvista/pull/725, not a statement in the comment. + +The eleven files inside are named `foam_case_0_0_0_0` and carry the +turbulence fields of a RANS solution, matching that account. +""" + +[[dataset]] +name = "openfoam_tubes" +title = "Turbo-incompressible tube bundle" +description = "Incompressible flow through a bundle of tubes, from a public SimScale turbomachinery project." +path = ["fvm/turbo_incompressible/**"] +SPDX-License-Identifier = "LicenseRef-SimScale-PublicProject" +provenance = "verified" +origin_url = "https://www.simscale.com/projects/ayarnoz/turbo/" +origin_title = "SimScale public project library" +collection = "simscale" +notes = "Exported from the public project https://www.simscale.com/projects/ayarnoz/turbo/ (owner `ayarnoz`, described there as \"Turbo Simulation\"); the pyvista loader docstring names the same project. SimScale's terms (Version July 2023, clause 5.2) grant third-party users and visitors rights over content uploaded or generated under a Free Plan; the project page shows the project is public but does not state the owner's plan, so the grant is inferred from the project being public." + +[[dataset]] +name = "openvdb_sphere_points" +title = "OpenVDB sphere points" +description = "Point cloud on a sphere in OpenVDB format, used to exercise the OpenVDB reader." +path = ["sphere_points.vdb"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://www.openvdb.org/download/" +origin_title = "OpenVDB sample models" +collection = "vtk-data" +authors = ["OpenVDB project"] +attribution = "sphere_points.vdb, OpenVDB sample models (https://www.openvdb.org/download/), Academy Software Foundation, CC BY 4.0." +redistributed_from = ["https://gitlab.kitware.com/vtk/vtk/-/blob/master/Testing/Data/sphere_points.vdb.sha512", "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +notes = """ +Byte-identical to the OpenVDB project's sample model `sphere_points.vdb` as +published in 2017: the Wayback Machine's 2017-06-29 capture of +http://www.openvdb.org/download/models/sphere_points.vdb.zip and the Academy +Software Foundation's copy at +https://artifacts.aswf.io/io/aswf/openvdb/models/sphere_points.vdb/1.0.0/sphere_points.vdb-1.0.0.zip +both unpack to these 141340 bytes (file dated 2017-02-09): + + curl -sSL -o s.zip "http://web.archive.org/web/2017id_/http://www.openvdb.org/download/models/sphere_points.vdb.zip" && unzip -p s.zip sphere_points.vdb | cmp - Data/sphere_points.vdb + +The file's own header records `creator: Houdini/SOP_OpenVDB_Write`. The +download page states no terms for the models. It is built from +https://github.com/AcademySoftwareFoundation/openvdb-website, whose +`LICENSE.txt` (added 2019-02-06, "Add license info for website") is Creative +Commons Attribution 4.0 International, and the page now serves the model +from that repository's `download/models/` directory, where the current copy +is a re-export whose header differs from these bytes. That repository +licence is recorded as the model's terms; a downstream user who needs more +should ask the OpenVDB project. VTK ships the same bytes as +`Testing/Data/sphere_points.vdb` for `TestOpenVDBReader` (content link added +2022-07-25, commit 4f1276ceef), which is the route this copy took; it was +added here in April 2024 through https://github.com/pyvista/data/pull/40. +""" + +[[dataset]] +name = "osmnx_street_graph" +title = "Holzgerlingen street graph" +description = "Pickled OSMnx street network of Holzgerlingen, Germany, within 500 metres of the town centre." +path = ["osmnx_graph.p"] +SPDX-License-Identifier = "ODbL-1.0" +SPDX-FileCopyrightText = ["OpenStreetMap contributors"] +provenance = "verified" +origin_url = "https://www.openstreetmap.org/copyright" +origin_title = "OpenStreetMap" +attribution = "Map data (c) OpenStreetMap contributors, licensed under the Open Database License (ODbL)." +notes = """ +The pickle records how it was made (`created_with: OSMnx 1.1.1`, +`crs: epsg:4326`, `osmid` on every edge), and the PyVista pull request that +added it published the exact call: + + graph = ox.graph_from_address('Holzgerlingen DE', dist=500, network_type='drive') + +OSMnx queries OpenStreetMap, so the contents are OpenStreetMap's and carry +the ODbL. Share-alike applies: a derived database must be offered under the +same licence, and produced works must say where the data came from. + +The `download_osmnx_graph` loader this was made for has since been removed +from PyVista, so nothing loads it today. +""" + +[[dataset]] +name = "owl" +title = "Owl figurine" +description = "High-resolution ground-truth scan of the owl figurine from the GGG-BenchmarkSfM close-range structure-from-motion benchmark, distributed as a zipped mesh of over a million points and as a more heavily decimated VTK XML PolyData file." +path = ["ivan-nikolov/owl.zip", "ivan-nikolov/owl_decimated.vtp"] +SPDX-License-Identifier = "CC-BY-4.0" +SPDX-FileCopyrightText = ["2020 Computer Graphics Group, Aalborg University"] +provenance = "verified" +origin_url = "https://data.mendeley.com/datasets/bzxk2n78s9/4" +origin_title = "GGG-BenchmarkSfM, Mendeley Data" +collection = "ggg-benchmark-sfm" +authors = ["Ivan Nikolov", "Claus Madsen"] +attribution = "GGG-BenchmarkSfM, Copyright (c) 2020 Computer Graphics Group, Aalborg University (Nikolov, I. and Madsen, C.), Mendeley Data V4, doi:10.17632/bzxk2n78s9.4, CC BY 4.0. The dataset's CopyrightNotice.pdf asks that this notice accompany every copy." +modified = true +modification = "Converted from the original OFF mesh to VTK XML PolyData. The zipped mesh was decimated to 1221756 points with float64 coordinates to keep the archive under 50 MB; the `_decimated` file was reduced further, to 12442 points." +references = [ + { citation = "Nikolov, I. and Madsen, C. \"Benchmarking Close-range Structure from Motion 3D Reconstruction Software Under Varying Capturing Conditions.\" EuroMed 2016.", doi = "10.1007/978-3-319-48496-9_2" }, +] +notes = """ +The dataset root carries `CopyrightNotice.pdf` (sha256 a482529b5f79..., listed +by https://data.mendeley.com/public-api/datasets/bzxk2n78s9/files?version=4&folder_id=root), +which reads "(c) Copyright 2020 Computer Graphics Group. All rights reserved.", +releases the database under the CC BY 4.0 licence and says all images and +meshes may be freely used "provided that the copyright notice is present in +all copies of the database". The Mendeley description says the dataset +provides images for structure-from-motion benchmarking plus "a ground truth +high resolution scanned of each of the objects"; the `.off` mesh converted +here is that scan, not a photogrammetric result. +""" + +[[dataset]] +name = "parallel_exodus_can" +title = "Crushed can, parallel Exodus" +description = "Crushed can simulation written as four Exodus II files, one per partition, carrying the Nemesis I parallel-decomposition metadata." +path = ["ParallelExodus/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2015 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2015 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://gitlab.kitware.com/vtk/vtk/-/tree/master/Testing/Data/Exodus/can.e.4"] +notes = """ +The four files are byte-identical to VTK's +`Testing/Data/Exodus/can.e.4/can.e.4.0` to `can.e.4.3` content links +(SHA-512), which VTK added in April 2020 with the IOSS reader (commit +ab713e84c8) without naming a source; pull request 69 here took them from +that tree. Kitware's blanket `Copyright.txt` notice is recorded as the +licence. The Exodus QA records inside the files name the Sandia SEACAS tools +that produced them (FASTQ 2.3, Gen3D 1.7, GJoin 1.12 and PRONTO3D 7.0.1 on +16 May 1994, then nem_spread 5.07 on 8 Sep 2008; `strings -n 3 can.e.4.0`), +so the simulation predates VTK and its author is not recorded upstream. + +The Nemesis variables (`num_processors`, `num_int_elem`, `num_bor_node`, the +communication maps) are written into `can.e.4.0` through `can.e.4.3` +themselves. There are no separate Nemesis files. +""" + +[[dataset]] +name = "paraview_pvd" +title = "ParaView PVD animations" +description = "Single- and dual-sphere animations in ParaView PVD collection format, loose and zipped." +path = [ + "PVD/paraview/dualSphereAnimation.clone.pvd", + "PVD/paraview/dualSphereAnimation.pvd", + "PVD/paraview/dualSphereAnimation.zip", + "PVD/paraview/dualSphereAnimation/**", + "PVD/paraview/dualSphereAnimation4.pvd", + "PVD/paraview/singleSphereAnimation.pvd", + "PVD/paraview/singleSphereAnimation.zip", + "PVD/paraview/singleSphereAnimation/**", +] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["2000 Kitware Inc."] +provenance = "verified" +origin_url = "https://gitlab.kitware.com/paraview/paraview/-/tree/master/Testing/Data" +origin_title = "ParaView test data" +attribution = "ParaView, Copyright (c) 2000 Kitware Inc., BSD 3-Clause." +redistributed_from = ["https://data.kitware.com/#collection/5afda5508d777f15ebe1d385/folder/5aff09358d777f15ebe1d7af"] +notes = """ +`dualSphereAnimation.pvd` and `singleSphereAnimation.pvd` are byte-identical +to ParaView's `Testing/Data` content links (SHA-512 beginning 22712c34373fbe46 +and 17d83c9ffd66e1fc), whose hash files date from Ben Boeckel's 2014-05-20 +commit 6230d3f8 ("Add hash files for test data and baselines") and have not +changed since their 2018 conversion to SHA-512. `dualSphereAnimation4.pvd` +(SHA-512 beginning 9802d291348e3ab0) matches the content link added by +Utkarsh Ayachit on 2015-04-10 (commit e95ed04d, "Added a test demonstrating +BUG #15407") as it stood until ParaView commit 239c9674 of 2026-06-16 +("dualSphereAnimation4.pvd: Add spaces to test the reader") replaced the +hash, so the copy here is the 2015 to 2026 version. The copy was taken from +the ParaView collection on data.kitware.com, folder 5aff09358d777f15ebe1d7af, +as a comment on https://github.com/pyvista/pyvista/pull/1564 says, and +committed on 2021-08-30 ("add pvd files from paraview data"). + +The copyright line is ParaView's current `Copyright.txt` +(https://gitlab.kitware.com/paraview/paraview/-/blob/master/Copyright.txt), +which carries the BSD-3-Clause text. The `License_v1.2.txt` in force when the +files were added (Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc., +with a non-exclusive licence for the U.S. Government under Contract +DE-AC04-94AL85000; still readable at tag v5.9.1) was replaced on 2023-08-03 +by commit 56ae3af7 ("Fix ParaView main license and copyright") and no longer +exists on master. + +`dualSphereAnimation.zip` also carries `dualSphereAnimation4NoPart.pvd` and +`dualSphereNoTime.pvd`, the two hand-written files recorded under +`paraview_pvd_variants`. +""" + +[[dataset]] +name = "paraview_pvd_variants" +title = "PVD reader edge cases" +description = "Two PVD collection files written by hand to exercise reader edge cases: one with no timestep, one with no `part` attribute." +path = ["PVD/paraview/dualSphereAnimation4NoPart.pvd", "PVD/paraview/dualSphereNoTime.pvd"] +SPDX-License-Identifier = "Apache-2.0" +SPDX-FileCopyrightText = ["PyVista Developers"] +provenance = "verified" +origin_url = "https://github.com/pyvista/data" +origin_title = "pyvista/data" +attribution = "PyVista Data, Apache License 2.0." +notes = """ +Both files were written by contributors for this repository and submitted +with no other terms, so the repository's own `LICENSE`, the Apache License +2.0, is the basis for the licence recorded. Neither is ParaView's, though +both sit in the `paraview` directory and point at ParaView's sphere +animation frames. `dualSphereNoTime.pvd` says so on its own second line: +``; it was written by Matthew Flamm +and committed directly on 2021-08-30 (commit c301422) for the PVD reader +tests in pyvista pull request 1564. `dualSphereAnimation4NoPart.pvd` was +added by pull request 24, whose body describes it as "a PVD file with no +`part` that can be read with Paraview but not Pyvista", written for a +PyVista test. Files of both names are also packed inside +`dualSphereAnimation.zip`, recorded under `paraview_pvd`. + +Neither name appears in ParaView's data repository: + + curl -s "https://gitlab.kitware.com/api/v4/projects/14/repository/commits?path=Testing/Data/dualSphereNoTime.pvd.sha512&ref_name=master" + +returns an empty list, where the same call for `dualSphereAnimation.pvd` +returns the commit that added it. The `ref_name` matters: with `all=true` +instead, the endpoint returns nothing for either file and proves nothing. +The `.vtp` frames they reference stay with the `paraview_pvd` entry, which +is where they came from. +""" + +[[dataset]] +name = "particles" +title = "Particle positions" +description = "Raw binary particle positions." +path = ["Particles.raw"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "pepper" +title = "Pepper" +description = "Scan of a red pepper (capsicum)." +path = ["pepper.ply"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.laserdesign.com/sample-files/hot-red-pepper/" +origin_title = "Laser Design sample files: Red Pepper" +collection = "laser-design" +notes = """ +Laser Design Inc. publishes this scan on its Red Pepper sample page, which +names the scanner (Artec Spider) and links the PLY download, and the file's +own header says "File exported by Artec Group 3D Scanning Solutions". The +download is served through laserdesign.sharefile.com, which needs a +browser, so byte identity with the published PLY was not checked. + +The sample archive states no licence of its own, and the site footer asserts +"(c) 2026 CyberOptics Corporation. All Rights Reserved." + +The "Terms of Use" its footer links to, at cyberoptics.com, grants permission +"to temporarily download one copy of the materials ... for personal, +non-commercial transitory viewing only", and says that under that licence you +may not "use the materials for any commercial purpose", or "transfer the +materials to another person or 'mirror' the materials on any other server". +Whether that boilerplate is meant to govern the sample downloads is arguable, +but no grant of redistribution rights exists anywhere on the site, so the +terms are recorded as undetermined. Downstream users, especially commercial +ones, should contact Laser Design or substitute another mesh. +""" + +[[dataset]] +name = "perlin_noise_shader" +title = "Perlin noise shader" +description = "GLSL fragment shader function generating classic Perlin 4D noise, used to exercise custom shader loading." +path = ["Shaders/**"] +SPDX-License-Identifier = "MIT" +SPDX-FileCopyrightText = ["2011-2016 Stefan Gustavson"] +provenance = "verified" +origin_url = "https://github.com/stegu/webgl-noise" +origin_title = "webgl-noise" +collection = "vtk-examples" +authors = ["Stefan Gustavson"] +attribution = "Classic Perlin noise by Stefan Gustavson, https://github.com/stegu/webgl-noise, MIT License." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/Shaders/PerlinNoise.glsl"] +modified = true +modification = "The `cnoise` function of `src/classicnoise4D.glsl` appears as `noise` with the `mod289` helper and the `pnoise` variant absent, prefixed with a `//VTK::System::Dec` line for VTK's shader replacement; the licence header is omitted." +notes = """ +The file's own second and third lines read "Classic Perlin 3D Noise" and +"by Stefan Gustavson", and 75 of its 141 lines are identical to +`src/classicnoise4D.glsl` in Gustavson's `webgl-noise` repository, whose +header says "Copyright (c) 2011 Stefan Gustavson" and "Distributed under the +MIT license" and whose LICENSE file carries "Copyright (C) 2011-2016 by +Stefan Gustavson (Classic noise and others)". Bill Lorensen added the file +to `lorensen/VTKExamples` on 18 March 2018 (commit b612981962) for the +MarbleShader example, and the April 2019 import of that repository brought +it here byte-identical. The repository licence Lorensen published under does +not reach Gustavson's code, so the MIT terms are recorded. +""" + +[[dataset]] +name = "pileated_woodpecker" +title = "Pileated woodpecker photograph" +description = "Colour photograph of a pileated woodpecker, used as a texture." +path = ["Pileated.jpg"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "pine_root_volume" +title = "Pine root volume" +description = "MetaImage volume of a pine root system (`pine_root.mha`), with a `pine_root.mhd` header that points at slice files not shipped here." +path = ["PineRoot/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://civm.duhs.duke.edu/" +origin_title = "Center for In Vivo Microscopy, Duke University" +collection = "vtk-examples" +authors = ["Janet MacFall"] +redistributed_from = [ + "https://examples.vtk.org/site/VTKBook/09Chapter9/", + "https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data/PineRoot", +] +references = [ + { citation = "Schroeder, W., Martin, K. and Lorensen, B. The Visualization Toolkit, chapter 9, Connectivity.", url = "https://examples.vtk.org/site/VTKBook/09Chapter9/" }, +] +notes = """ +The source is recorded in the VTK textbook that ships inside +`vtk/vtk-examples` at `src/VTKBook/09Chapter9.md` (line 1061) and is +published at https://examples.vtk.org/site/VTKBook/09Chapter9/: + + To illustrate the application of connectivity analysis, we will use an + MRI dataset generated by Janet MacFall at the Center for In Vivo + Microscopy at Duke University. The dataset is a volume of dimensions + 2563 and is included on the CD-ROM. + +("2563" is 256 cubed, garbled in the Markdown conversion.) `pine_root.mhd` +reads `DimSize = 256 256 256`, `ElementType = MET_USHORT`, so it is that +data. Retrieve the chapter with: + + curl -sS "https://gitlab.kitware.com/api/v4/projects/vtk%2Fvtk-examples/repository/files/src%2FVTKBook%2F09Chapter9%2Emd/raw?ref=master" + +Bill Lorensen added the two files to `src/Testing/Data/PineRoot` in +`lorensen/VTKExamples` on 2017-12-01 (commit cce8ea2ea9, "ENH: Added +original pine root data", no terms in the body), and this repository copied +them in April 2019 (commit 74bf994). `pine_root.mhd` matches the upstream +Git LFS pointer by SHA-256 (1fb12258...) and size (935058 bytes) and +`pine_root.mha` by size (23200609 bytes). They are absent from the 2013 VTK +Data tree and from VTK's content links. + +That settles the owner and the scope of what was granted: inclusion on the +book's CD-ROM. It is not a licence to redistribute, and Lorensen's Apache-2.0 +repository licence cannot reach Duke's data. No terms from Duke or MacFall +were found, so the terms are recorded as undetermined; downstream users +should contact the Duke Center for In Vivo Microscopy before redistributing. + +`pine_root.mhd` is a seven-line header whose `ElementDataFile = pine_root.%d +1 256 1` names slice files that are not shipped, padded to 935058 bytes with +newlines; read `pine_root.mha`, which is self-contained. +""" + +[[dataset]] +name = "pine_roots" +title = "Pine roots" +description = "Triangle mesh of a pine root system, in the binary marching cubes triangle format." +path = ["pine_root.tri"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://examples.vtk.org/site/VTKBook/09Chapter9/" +origin_title = "The Visualization Toolkit textbook, chapter 9" +authors = ["Janet MacFall"] +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/pine_root.tri"] +references = [ + { citation = "Schroeder, W., Martin, K. and Lorensen, B. The Visualization Toolkit, chapter 9, Connectivity.", url = "https://examples.vtk.org/site/VTKBook/09Chapter9/" }, +] +notes = """ +This is the isosurface of the volume in the `pine_root_volume` entry. The VTK +textbook that ships inside `vtk/vtk-examples` names both the source and this +file, in `src/VTKBook/09Chapter9.md`: the volume is "an MRI dataset generated +by Janet MacFall at the Center for In Vivo Microscopy at Duke University", +and "Using the class vtkSliceCubes, an implementation of marching cubes for +large volumes, we generate an initial isosurface represented by 351,118 +triangles. (We have placed the file pine_root.tri on CD-ROM. ...)". The file +here holds 351,914 triangles (25,337,808 bytes at 72 bytes per triangle), +close to but not the book's figure, so it may be a later regeneration of the +same isosurface. + + git -C vtk-examples grep -n 'pine_root.tri' HEAD -- src/VTKBook + +Bill Lorensen added the file to `lorensen/VTKExamples` in November 2017 +(commit 7306cdd36d) and this repository copied it in April 2019 (commit +74bf994); it matches the upstream git-lfs pointer by SHA-256 (1d0430fb...) +and size. The permission the book records covers its CD-ROM. It is not a +licence to redistribute, and the example repository's Apache-2.0 is +Lorensen's, not Duke's, so the terms are recorded as undetermined. A +downstream user should contact the Duke Center for In Vivo Microscopy +(https://civm.duhs.duke.edu/) before redistributing. +""" + +[[dataset]] +name = "planet3d_matlab_backgrounds" +title = "Milky Way and star field backgrounds" +description = "Equirectangular Milky Way and star field images at 8192 by 4096, used as the sky background behind the `pyvista.examples.planets` solar system scene." +path = ["planet3d-matlab/**", "stars.jpg"] +SPDX-License-Identifier = "CC-BY-4.0" +SPDX-FileCopyrightText = ["Solar System Scope (INOVE)"] +provenance = "verified" +origin_url = "https://www.solarsystemscope.com/textures/" +origin_title = "Solar System Scope Textures" +collection = "solar-system-scope" +attribution = "Textures by Solar System Scope, https://www.solarsystemscope.com/textures/, licensed under CC BY 4.0." +redistributed_from = ["https://github.com/tamaskis/planet3D-MATLAB"] +notes = """ +All four files are byte-identical to Solar System Scope downloads: +`stars.jpg` and `planet3d-matlab/stars.jpg` to `8k_stars.jpg`, and +`planet3d-matlab/milkyway.jpg` and `milkyway.png` to `8k_stars_milky_way.jpg`. +Their EXIF records Photoshop CC and a 2014 date, seven years before the +tamaskis/planet3D-MATLAB repository they reached this project through. + +That repository's MIT licence covers its MATLAB code, not these textures, and +it credits no source for them. The credit recorded here is the one CC BY 4.0 +requires, and it is Solar System Scope's. + +`milkyway.png` is a JPEG despite its extension, and byte-identical to +`milkyway.jpg`. +""" + +[[dataset]] +name = "plastic_vase" +title = "Plastic vase" +description = "Photogrammetric surface reconstruction of the plastic vase from the GGG-BenchmarkSfM close-range structure-from-motion benchmark, distributed as a zipped mesh of over a million points and as a more heavily decimated VTK XML PolyData file." +path = ["ivan-nikolov/plasticVase.zip", "ivan-nikolov/plasticVase_decimated.vtp"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://data.mendeley.com/datasets/bzxk2n78s9/4" +origin_title = "GGG-BenchmarkSfM, Mendeley Data" +collection = "ggg-benchmark-sfm" +authors = ["Ivan Nikolov", "Claus Madsen"] +attribution = "Nikolov, I. and Madsen, C., GGG-BenchmarkSfM, Mendeley Data, CC BY 4.0." +modified = true +modification = "Converted from the original OFF mesh to VTK XML PolyData. The zipped mesh was decimated to 1796805 points with float32 coordinates to keep the archive under 50 MB; the `_decimated` file was reduced further, to 18238 points. Its largest connected body was kept." +references = [ + { citation = "Nikolov, I. and Madsen, C. \"Benchmarking Close-range Structure from Motion 3D Reconstruction Software Under Varying Capturing Conditions.\" EuroMed 2016.", doi = "10.1007/978-3-319-48496-9_2" }, +] + +[[dataset]] +name = "pluto_texture" +title = "Pluto surface texture" +description = "Global colour map of Pluto from New Horizons, equirectangular at 5926 by 2963." +path = ["solar_textures/pluto.jpg"] +SPDX-License-Identifier = "LicenseRef-NASA-Media" +provenance = "verified" +origin_url = "https://www.nasa.gov/image-article/pluto-global-color-map" +origin_title = "NASA, Pluto global color map" +authors = [ + "NASA", + "Johns Hopkins University Applied Physics Laboratory", + "Southwest Research Institute", +] +attribution = "NASA / Johns Hopkins University Applied Physics Laboratory / Southwest Research Institute." +redistributed_from = ["https://github.com/tamaskis/planet3D-MATLAB"] +notes = """ +The New Horizons global colour mosaic, released by NASA as an image article +(credited "NASA/JHUAPL/SwRI") and mirrored on Wikimedia Commons as +`Pluto color mapmosaic.jpg`. That file is 5926 by 2963, the same unusual +size as ours, and the two are the same picture: decoded to greyscale and +reduced to 64 by 32, they differ by 0.03 out of 255 on average and by 1 at +most, which is JPEG re-encoding and nothing else. Commons records the artist +as "NASA / Johns Hopkins University Applied Physics Laboratory / Southwest +Research Institute" and the status as public domain. + + curl -s "https://commons.wikimedia.org/w/api.php?action=query&titles=File:Pluto%20color%20mapmosaic.jpg&prop=imageinfo&iiprop=size|extmetadata&format=json" + +It reached this repository through tamaskis/planet3D-MATLAB, which credits no +source for its textures, and was added separately from the Solar System Scope +batch, correctly, since Solar System Scope publishes no Pluto texture. +""" + +[[dataset]] +name = "polyline" +title = "Polyline" +description = "Simple polyline used to demonstrate line filters." +path = ["polyline.vtk"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "procedural_cow" +title = "Procedural cow" +description = "Cow generated from a signed-distance field, 300000 triangles as one watertight surface 200 mm long with Z up, carrying its colours as an embedded RGB point array rather than a texture." +path = ["cow/**"] +SPDX-License-Identifier = "CC0-1.0" +provenance = "verified" +origin_url = "https://github.com/pyvista/data/pull/71" +origin_title = "PyVista" +notes = """ +Original geometry rather than an import, and the generator that made it sits +beside the data: `cow/generate_cow.py`, reproducible with `uv run --locked +generate_cow.py`. Its defaults match what the mesh claims to be: 300000 +triangles, 200 mm long, 0.0065 voxel field. Opened with `pyvista.read`: +300000 triangles, manifold with no open edges, 200.0 mm along x, 81.9 mm +along y and 138.6 mm tall along z, and a single active `RGB` uint8 point +array. + +The `LICENSE` this directory carried states CC0-1.0 and "Required +attribution: none", and records that it was written with assistance from +OpenAI Codex on 2026-09-06. Its `README.md` adds that no downloaded geometry +or texture is used in generation, and that the hoof outline was visually +compared against a photograph on schaette.de without any photograph data +entering the geometry or the colour array. The contents of both files are +recorded in this entry. + +Not to be confused with `cow`, which is the Viewpoint scan. +""" + +[[dataset]] +name = "prostar" +title = "ProSTAR mesh" +description = "Vertex and cell files in the STAR-CD ProSTAR format." +path = ["prostar.cel", "prostar.vrt"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "prostate" +title = "Prostate image" +description = "Single axial CT slice through a human pelvis, 512 by 512, in DICOM despite the `.img` extension." +path = ["prostate.img"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/lorensen/VTKWikiExamples" +origin_title = "lorensen/VTKWikiExamples" +collection = "vtk-examples" +authors = ["Memorial Sloan Kettering Cancer Center"] +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/prostate.img"] +modified = true +modification = "A 128-byte zero preamble and the `DICM` prefix were prepended in January 2022 (https://github.com/pyvista/data/pull/8) so that readers expecting a DICOM Part 10 file accept it; the 527166 bytes that follow are identical to lorensen/VTKExamples `src/Testing/Data/prostate.img` and hash to VTK's `Testing/Data/dicom/prostate.IMG.sha512` content link." +notes = """ +This is human patient imaging, and the file says so itself. Its header records +`InstitutionName` "MEML. SLOAN-KETTERING", `Manufacturer` "Marconi Medical +Systems, Inc.", model IQXTRA, `Modality` CT, `ProtocolName` PELVIS and a +`StudyDate` in 1998. `PatientName` and `PatientID` hold an eight-character +study code and a five-digit number rather than a name, `PatientSex` is +populated, and the birth date, age and accession number are empty, so it is +pseudonymised rather than fully de-identified: the institution and the exact +acquisition date remain in the file. + +The trail: the identical bytes (git blob a443e583) were already in Bill +Lorensen's lorensen/VTKWikiExamples at its first GitHub commit on 2015-04-16 +(`Testing/Data/prostate.img`, commit 7e43fa5526, itself moved from +gitorious), went with his examples into lorensen/VTKExamples in 2017, and +arrived here with the April 2019 VTK Examples import. VTK has also shipped +the same bytes since November 2016 as `Testing/Data/dicom/prostate.IMG` +(commit 9aa7a81fa0, "Add test to check vtkDICOMImageReader class", which +names no source): + + tail -c +133 prostate.img | shasum -a 512 + +matches that content link. None of these redistributors states terms for the +file, a redistributor cannot license a hospital's patient imaging, and no +consent or release for this scan was found, so the terms are recorded as +undetermined. Downstream users should ask Memorial Sloan Kettering Cancer +Center or substitute another image. + +The file is DICOM; the `.img` extension is misleading. +""" + +[[dataset]] +name = "protein_2j6g" +title = "Protein 2J6G" +description = "Crystal structure of a cell adhesion protein, PDB accession 2J6G, in Protein Data Bank format." +path = ["2j6g.pdb"] +SPDX-License-Identifier = "CC0-1.0" +provenance = "verified" +origin_url = "https://www.rcsb.org/structure/2J6G" +origin_title = "RCSB Protein Data Bank" +redistributed_from = ["https://github.com/lorensen/VTKExamples"] +notes = "The filename is the accession, and the file carries the same 2130 atom records as the entry RCSB serves for 2J6G; they are not byte-identical because RCSB re-versions entries. The wwPDB usage policy releases the PDB archive under CC0, which is less restrictive than the VTK Data collection licence." + +[[dataset]] +name = "protein_2lyz" +title = "Lysozyme 2LYZ" +description = "Crystal structure of hen egg-white lysozyme, PDB accession 2LYZ, in Protein Data Bank format." +path = ["2LYZ.pdb"] +SPDX-License-Identifier = "CC0-1.0" +provenance = "verified" +origin_url = "https://www.rcsb.org/structure/2LYZ" +origin_title = "RCSB Protein Data Bank" +collection = "vtk-data" +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +notes = "The filename is the accession, and all 1102 atom records are byte-identical to the file RCSB serves for 2LYZ. The wwPDB usage policy releases the PDB archive under CC0. The copy came through VTK Data: Kyle Lutz added it to VTKData on 2012-09-12 (commit f31743f, \"Add 2LYZ pdb file and protein ribbon baseline\"), it is in the 2013 fork tree, and its SHA-512 matches VTK's content link `Testing/Data/2LYZ.pdb.sha512`." + +[[dataset]] +name = "protein_3gqp" +title = "Protein 3GQP" +description = "Crystal structure of cat haemoglobin at 2.0 angstrom, PDB accession 3GQP, in Protein Data Bank format." +path = ["3GQP.pdb"] +SPDX-License-Identifier = "CC0-1.0" +provenance = "verified" +origin_url = "https://www.rcsb.org/structure/3GQP" +origin_title = "RCSB Protein Data Bank" +collection = "vtk-data" +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +notes = """ +The filename is the accession: every ATOM record is byte-identical to the +file RCSB serves for 3GQP. The wwPDB usage policy releases the PDB archive +under CC0, which requires no attribution. The copy came through the VTK +Data collection: Joachim Pouderoux added it to VTKData on 2012-10-03 ("Add +a new protein file for testing the new vtkProteinRibbonFilter.", commit +10824e2 in this repository's history), it is in the 2013 fork tree, VTK +still distributes the same bytes (`Testing/Data/3GQP.pdb.sha512`), and +vtk/vtk-examples has no `src/Testing/Data/3GQP.pdb`. +""" + +[[dataset]] +name = "pump_bracket" +title = "Pump bracket modal analysis" +description = "Modal analysis of a pump bracket, ten mode shapes stored as normalised displacement arrays on a single shared mesh." +path = ["fea/pump_bracket/**"] +SPDX-License-Identifier = "LicenseRef-SimScale-PublicProject" +provenance = "verified" +origin_url = "https://www.simscale.com/projects/STR/bracket/" +origin_title = "SimScale public project 'Bracket' by STR" +collection = "simscale" +authors = ["STR"] +modified = true +modification = "Ten per-run result files were merged onto one shared unstructured grid (250487 points, 124806 cells) as three-component float32 point arrays `disp_0` to `disp_9`; the 44.5 MB legacy VTK file is stored as a 32.3 MB zip." +notes = "The project page's title is \"Bracket by STR\" and its author metadata names STR; the page states no per-project terms beyond SimScale's public project conditions." + +[[dataset]] +name = "puppy" +title = "Puppy photograph" +description = "Colour photograph of a puppy, used as a texture and as image filter input." +path = ["puppy.jpg"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = "Added on 2019-04-06 with the commit message \"Add puppy\" (pyvista/data fdd9fbc) and the same-day vtki commit 7779e0ab1 \"Add puppy image example\" (https://github.com/pyvista/pyvista/commit/7779e0ab1), neither of which records a source, photographer or terms. The file's EXIF records a NIKON E2200 and a capture time of 2010-02-07 11:48:39, which is the only surviving lead. Until the photographer is identified, treat the file as all rights reserved and do not reuse it outside PyVista's own examples." + +[[dataset]] +name = "pvgeo_examples" +title = "Geoscience example datasets" +description = "Assorted geoscience example data used in Bane Sullivan's Transform 2021 notebooks and the PyVista tutorial: a GPR line, a drone-survey point cloud of a mine pit, an ESRI grid DEM, elevation and RGB rasters, three small text tables and a cross-section image." +path = [ + "Elevation.tif", + "Sio020320.csv", + "Sio020320.vtp", + "bahamas_rgb.tif", + "geo-cross-section.png", + "gpr-line.vtu", + "gravi.txt", + "points3d.txt", + "surf.txt", + "esri_grid.dem.zip", +] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +notes = """ +`esri_grid.dem.zip` was added on 2019-04-20 as "Add ESRI DEM for PVGeo"; the +rest arrived in 2021 as "add geo sample data" and "add raster data" for Bane +Sullivan's Transform 2021 geoscience notebooks +(https://github.com/banesullivan/transform-2021). Its `mine-pit` notebook +("Triangulate a surface from a point cloud of points and overlay imagery of +a mine pit") says the `Sio020320` point cloud was first posted to +https://github.com/pyvista/pyvista-support/issues/159, where the poster +offered "CSV point cloud + georeferenced drone" imagery through a transfer +link that has since expired. `gh search code` finds `Sio020320` and +`gpr-line.vtu` only in banesullivan/transform-2021 and +banesullivan/banesullivan, not in PVGeo. No source, author or terms are +recorded for any file, and none could be established. None is loaded by +pyvista.examples. Until an origin is found, treat these files as all rights +reserved and do not reuse them outside PyVista's own examples. +""" + +[[dataset]] +name = "qiime_tutorial_otus" +title = "QIIME tutorial OTU table and tree" +description = "BIOM OTU table of 419 OTUs in 9 samples and the matching Newick tree, as produced by the QIIME 1.5.0 overview tutorial." +path = ["Infovis/otu_table.biom", "Infovis/rep_set.tre"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "http://qiime.org/tutorials/tutorial.html" +origin_title = "QIIME 1 overview tutorial" +collection = "vtk-data" +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +notes = """ +Added to VTK Data on 2012-08-23 by Zack Galbreath (commit b470249, "new +testing data for three new Infovis classes") to test the BIOM and Newick +readers, and inherited with the March 2019 fork. The BIOM file records +`"generated_by": "QIIME 1.5.0"`, `"date": "2012-07-09..."`, `"shape": [419, +9]` and the sample ids PC.354, PC.355, PC.356, PC.481, PC.593, PC.607, +PC.634, PC.635 and PC.636; the QIIME 1 overview tutorial +(http://web.archive.org/web/2013id_/http://qiime.org/tutorials/tutorial.html) +uses exactly those samples, names `otu_table.biom` and `rep_set.tre` as its +outputs, and says the data are from "a study of the effects of exercise and +diet on mouse cardiac physiology (Crawford, et al, PNAS, 2009)". Whether +Kitware copied the tutorial output or regenerated it was not established, +which is why the origin is inferred. Neither the tutorial nor VTK Data +states terms for the underlying sequencing data, and VTK Data's BSD notice +cannot license Crawford et al.'s data, so the licence is undetermined. +Downstream users should cite Crawford et al. 2009 and ask the QIIME +developers about terms. +""" + +[[dataset]] +name = "quadratic_cylinder" +title = "Linear and quadratic cylinders" +description = "The same cylinder meshed with linear and with quadratic cells, for comparing cell interpolation." +path = ["Quadratic/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/data/commit/b8dd056f1f8af703613c6703a15fac48f9f277d8" +origin_title = "VTK Data commit b8dd056, courtesy of Robert McGregor, ETHZ" +collection = "vtk-data" +authors = ["Robert McGregor"] +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7/folder/5afd93368d777f15ebe1b1fc"] +notes = """ +The VTK Data commit that added both files (b8dd056, 2007-10-24, Philippe +Pebay) records them as "a couple of new data sets (courtesy of Robert +McGregor, ETHZ) for quadratic tetrahedral element testing", with the +linearly interpolated mesh provided for comparison; that commit is the +furthest upstream point established, and this repository carries it because +it was forked from VTK Data in March 2019. McGregor stated no terms and +Kitware's collection notice cannot license a third party's contribution, so +the terms are undetermined. The files are in the tree this repository was +forked from and match VTK's `Testing/Data/Quadratic` content links and the +sha512 Girder records in the collection's `Quadratic` folder. A downstream +user who needs terms should ask Robert McGregor (ETH Zurich) or Kitware. +""" + +[[dataset]] +name = "quadratic_pyramid" +title = "Quadratic pyramid" +description = "Unstructured grid of 48 quadratic pyramid cells over 153 points, with `DistanceToCenter` and `Polynomial` point arrays." +path = ["QuadraticPyramid.vtu"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. Lorensen added the file on +2017-11-08 (commit 002d2ea19d, "ENH: Added ExtractFaces and data.") together +with the ExtractFaces example that reads it. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "rectilinear_grid" +title = "Rectilinear grid sample" +description = "Small rectilinear grid in VTK XML format." +path = ["RectilinearGrid.vtr"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +redistributed_from = ["https://github.com/lorensen/VTKExamples"] +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = "Byte-identical to `cth.vtr`, which came from the VTK Data collection and predates the VTK Examples import that brought this copy in. Both carry VTK Data's licence." + +[[dataset]] +name = "reservoir" +title = "UNISIM-II-D carbonate reservoir" +description = "Unstructured grid built from the UNISIM-II synthetic carbonate reservoir benchmark model." +path = ["reservoir/**"] +SPDX-License-Identifier = "ODbL-1.0 AND LicenseRef-DbCL-1.0" +SPDX-FileCopyrightText = ["2023 UNISIM-CEPETRO-Unicamp"] +provenance = "verified" +origin_url = "https://www.unisim.cepetro.unicamp.br/benchmarks/br/unisim-ii/overview" +origin_title = "UNISIM-CEPETRO, Unicamp" +attribution = "UNISIM-II benchmark model, UNISIM-CEPETRO-Unicamp. Citing the benchmark by name is mandatory in any publication or report of a study that uses it." +redistributed_from = ["https://github.com/pyvista/pyvista-support/issues/319#issuecomment-821725156"] +modified = true +modification = "Converted from the UNISIM-II-D corner-point grid to a VTK unstructured grid by Rodrigo Mologni, who posted the zip at pyvista/pyvista-support#319; this copy is byte-identical to that attachment." +notes = """ +UNISIM licenses the database itself under the Open Database License and its +contents under the Database Contents License. ShareAlike propagates from the +ODbL half: a derived database must be shared under the same licence. + +The source also makes citation mandatory rather than optional, in all +scientific publications, reports and other documents reporting studies that +use the benchmark. + +The zip is byte-identical (sha256 9f817df86aafbf5f) to `UNISIM-II-D.zip` +attached by Rodrigo Mologni (rodrigomologni) at pyvista/pyvista-support#319 +on 2021-04-16, where he states it is the UNISIM-II-D reservoir model in VTU +format; pyvista/data pull request 37 took it from that comment. The +converter asked there that the UNISIM research group and SOLPE +(https://www.solpe.com.br/, now offline; archived at +https://web.archive.org/web/20160704115130/https://www.solpe.com.br/) be referenced; pull request 37 omitted the +SOLPE reference deliberately. +""" + +[[dataset]] +name = "room_surface_mesh" +title = "Translucent room surface mesh" +description = "Surface mesh of a room interior, used to demonstrate depth peeling for translucent geometry." +path = ["room_surface_mesh.obj"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyvista/issues/547" +origin_title = "pyvista/pyvista issue 547" +notes = """ +Sam Potter (https://github.com/sampotter) attached the file to +pyvista/pyvista#547 on 2020-01-19 as "a mesh of a building" while reporting +a translucency rendering bug; this copy is byte-identical to that attachment +(https://github.com/pyvista/pyvista/files/4083597/room__surface_mesh.obj.zip, +SHA-256 1933cfaa63a9746b0799f869de3b11bb810ba5f1443da8f03e7f647d378226d9). +Its header shows it was written by meshio 3.3.1 on 2020-01-17. Bane Sullivan +copied it into this repository on 2020-02-04 (commit c0db94f) for the depth +peeling work in pyvista/pyvista#584. The issue does not say where the +building model came from, who made it, or on what terms it may be used, so +the terms are undetermined; downstream users who need a licence should ask +the contributor in that issue. +""" + +[[dataset]] +name = "ruapehu_topo50" +title = "Ruapehu Topo50 map clip" +description = "Clip of the LINZ Topo50 map sheet covering the Mount Ruapehu crater, 1535 by 1772 pixels at 4.2333 metres." +path = ["BJ34_GeoTifv1-04_crater_clip.tif"] +SPDX-License-Identifier = "CC-BY-4.0" +SPDX-FileCopyrightText = ["Land Information New Zealand"] +provenance = "inferred" +origin_url = "https://data.linz.govt.nz/layer/50767-nz-topo50-maps/" +origin_title = "LINZ, NZ Topo50 Maps" +authors = ["Land Information New Zealand"] +attribution = "Sourced from the LINZ Data Service and licensed for reuse under CC BY 4.0." +modified = true +modification = "Clipped from the full map sheet to the crater." +notes = """ +The GeoTIFF names its projection as "New Zealand Transverse Mercator 2000; +NZGD 2000", ties to easting 1817997.5 and northing 5652503.0, beside +Ruapehu's crater, and has a pixel scale of 4.2333 metres, which is exactly +1:50,000 at 300 dpi, the resolution LINZ publishes Topo50 rasters at. The +filename follows LINZ's `_GeoTifv` convention, and BJ34 is +the Topo50 sheet covering Ruapehu. + +The LINZ Data Service reports the layer's licence through its API: + + curl -s "https://data.linz.govt.nz/services/api/v1/layers/50767/" + # "license": {"title": "Creative Commons Attribution 4.0 International", ...} + +Inferred rather than verified: the identification rests on the projection, +the tiepoint, the pixel scale and the filename together, not on a statement +by whoever clipped it. +""" + +[[dataset]] +name = "sample_gif" +title = "Sample animated GIF" +description = "Three-frame animated GIF of a sphere, generated with PyVista to exercise the GIF reader." +path = ["gifs/**"] +SPDX-License-Identifier = "MIT" +SPDX-FileCopyrightText = ["PyVista Developers"] +provenance = "verified" +origin_url = "https://github.com/pyvista/data/commit/5bdbce4aac40db8b2912d6e161d6f7a8e44cbdc3" +origin_title = "PyVista" +attribution = "Generated with PyVista, MIT License." +notes = "Rendered with PyVista by the script in the `Data/gifs/README.md` that commit added (`git show 6a55220:Data/gifs/README.md`): a sphere drawn red, blue and green with opacity graded along x, 300 by 200 pixels, one frame per second, sixteen-colour palette." + +[[dataset]] +name = "sample_struct_grid" +title = "Sample structured grid" +description = "Small structured grid used to exercise parallel filters." +path = ["SampleStructGrid.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "sea_vase" +title = "Sea vase" +description = "High-resolution ground-truth scan of the sea vase from the GGG-BenchmarkSfM close-range structure-from-motion benchmark, distributed as a zipped mesh of over a million points and as a more heavily decimated VTK XML PolyData file." +path = ["ivan-nikolov/seaVase.zip", "ivan-nikolov/seaVase_decimated.vtp"] +SPDX-License-Identifier = "CC-BY-4.0" +SPDX-FileCopyrightText = ["2020 Computer Graphics Group, Aalborg University"] +provenance = "verified" +origin_url = "https://data.mendeley.com/datasets/bzxk2n78s9/4" +origin_title = "GGG-BenchmarkSfM, Mendeley Data" +collection = "ggg-benchmark-sfm" +authors = ["Ivan Nikolov", "Claus Madsen"] +attribution = "GGG-BenchmarkSfM, Copyright (c) 2020 Computer Graphics Group, Aalborg University (Nikolov, I. and Madsen, C.), Mendeley Data V4, doi:10.17632/bzxk2n78s9.4, CC BY 4.0. The dataset's CopyrightNotice.pdf asks that this notice accompany every copy." +modified = true +modification = "Converted from the original OFF mesh to VTK XML PolyData. The zipped mesh was decimated to 1810012 points with float32 coordinates to keep the archive under 50 MB; the `_decimated` file was reduced further, to 18063 points." +references = [ + { citation = "Nikolov, I. and Madsen, C. \"Benchmarking Close-range Structure from Motion 3D Reconstruction Software Under Varying Capturing Conditions.\" EuroMed 2016.", doi = "10.1007/978-3-319-48496-9_2" }, +] +notes = """ +The dataset root carries `CopyrightNotice.pdf` (sha256 a482529b5f79..., listed +by https://data.mendeley.com/public-api/datasets/bzxk2n78s9/files?version=4&folder_id=root), +which reads "(c) Copyright 2020 Computer Graphics Group. All rights reserved.", +releases the database under the CC BY 4.0 licence and says all images and +meshes may be freely used "provided that the copyright notice is present in +all copies of the database". The Mendeley description says the dataset +provides images for structure-from-motion benchmarking plus "a ground truth +high resolution scanned of each of the objects"; the `.off` mesh converted +here is that scan, not a photogrammetric result. +""" + +[[dataset]] +name = "semi_disk" +title = "Semi-disk" +description = "Semi-disk geometry in legacy, XML and multi-piece form." +path = ["SemiDisk/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "sextant" +title = "Sextant VRML model" +description = "VRML 2.0 model of a sextant exported from AutoCAD with CAD Studio's VRMLout." +path = ["sextant.wrl", "vrml/sextant.wrl"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.cadstudio.cz/vrmlout" +origin_title = "CAD Studio VRMLout sample files" +collection = "vtk-examples" +authors = ["CAD Studio s.r.o."] +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/sextant.wrl"] +notes = """ +Byte-identical (261509 bytes) to the sample file CAD Studio links from its +VRMLout page as "VRML2: Sextant 3D-model from AutoCAD (260kB)", +https://www.cadstudio.cz/dl/xoom/gc/sextant.wrl; the file's second line +reads "Generated by VRMLout V2.0 (C) CAD Studio". The page states terms for +the VRMLout software but none for the sample models, so the terms are +undetermined; ask CAD Studio (now part of Arkance) before redistributing it +outside test use. Bill Lorensen added it to `lorensen/VTKExamples` in July +2017 (commit 8c1faeff1d) for his VRML importer example, and the April 2019 +import of that repository brought it here. `vrml/sextant.wrl` is a +byte-identical second copy added in August 2022 for the VRML reader examples. +""" + +[[dataset]] +name = "sgems_geostatistics" +title = "SGeMS geostatistical grids" +description = "Geostatistical simulation grids in the Stanford Geostatistical Modeling Software format, including a Maules Creek model, a Sundarbans model and continuous training-image horizons." +path = [ + "A_WLreferenceCAT.sgems", + "Maules_Creek_3D.SGEMS.zip", + "TI_horizons_continuous.SGEMS.zip", + "b_100sampledatawl.sgems", + "sundarbans.SGEMS.zip", + "ti.sgems.zip", +] +SPDX-License-Identifier = "LicenseRef-TrainingImagesLibrary" +provenance = "verified" +origin_url = "http://web.archive.org/web/20150509032421id_/http://www.trainingimages.org/training-images-library.html" +origin_title = "Training Images Library" +authors = ["Gregoire Mariethoz", "Jef Caers"] +references = [ + { citation = "Mariethoz, G. and Caers, J. Multiple-point Geostatistics: Stochastic Modeling with Training Images. Wiley-Blackwell, 2014.", doi = "10.1002/9781118662953" }, +] +notes = """ +PVGeo's example scripts +(https://github.com/OpenGeoVis/PVGeo/tree/main/examples/gslib: +`read-sgems-grid.py`, `read-point-set.py`, `read-table.py`) kept the +original download URL as a comment beside the pyvista/data URL that +replaced it, and all six files are named there: + + # grid_url = 'http://www.trainingimages.org/uploads/3/4/7/0/34703305/a_wlreferencecat.zip' + url = ".../vtk-data/master/Data/A_WLreferenceCAT.sgems" + +with the same pairing for `maules_creek_3d.zip`, `ti_horizons_continuous.zip`, +`ti.zip`, `b_100sampledatawl.sgems` and `sundarbans.zip`. The library page +links those lower-case names; the copies here were renamed to +`.SGEMS.zip`, and `A_WLreferenceCAT.sgems` is the plain-text grid the script +pairs with `a_wlreferencecat.zip`, so it was unpacked from that archive. + +That library accompanies Mariethoz and Caers' book and grants research use +only: "These images be used freely for research purposes." Commercial use is +not granted, so this is a positive restriction rather than an unknown. +""" + +[[dataset]] +name = "shark" +title = "Shark" +description = "Surface mesh of a shark, used to demonstrate surface reconstruction from points." +path = ["shark.ply"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "skybox2" +title = "Skybox cube map" +description = "Six-face sky cube map used by `download_sky_box_cube_map`." +path = [ + "skybox2-negx.jpg", + "skybox2-negy.jpg", + "skybox2-negz.jpg", + "skybox2-posx.jpg", + "skybox2-posy.jpg", + "skybox2-posz.jpg", +] +SPDX-License-Identifier = "CC-BY-3.0" +provenance = "verified" +origin_url = "http://www.humus.name/index.php?page=Textures" +origin_title = "Humus texture library" +collection = "vtk-examples" +authors = ["Emil Persson"] +attribution = "Emil Persson (Humus), http://www.humus.name, licensed under Creative Commons Attribution 3.0 Unported." +redistributed_from = [ + "https://gitlab.kitware.com/vtk/vtk/-/tree/master/Testing/Data/skybox", + "https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data/skyboxes/skybox2", +] +notes = """ +Added on 8 July 2020 with the commit message "add skybox2" and no recorded +source, fifteen months after the VTK Examples import. All six faces are +byte-identical to `src/Testing/Data/skyboxes/skybox2/` in +lorensen/VTKExamples (same git blobs, 254410fc for negx.jpg, added by Andrew +Maclean on 19 October 2019) and to VTK's `Testing/Data/skybox/` (all six +`.sha512` content links match; the cube map was added by Ken Martin on 23 +May 2017), where VTK ships a `readme.txt` alongside them naming the author +and the licence: "This is the work of Emil Persson, aka Humus. +http://www.humus.name ... This work is licensed under a Creative Commons +Attribution 3.0 Unported License." The VTK copy is the older of the two and +the only one with the notice; which of them this repository's copy was +taken from is not recorded. The copies under `Skyboxes/skybox2/` in +vtk/vtk-examples on gitlab.kitware.com are different bytes (blob 27d38455 +for negx.jpg). + +A collection cannot relicense a third party's work, so the CC BY 3.0 and the +credit to Persson are what bind. The `cubemap_park` entry carries the same +author and licence, read out of a `readme.txt` inside its own archive. +""" + +[[dataset]] +name = "skybox_lorensen" +title = "Skybox from the VTK Examples" +description = "Six-face sky cube map distributed with VTK and the VTK Examples, as a zip archive and as two sets of loose faces which are byte-identical to each other." +path = [ + "skybox-nx.jpg", + "skybox-ny.jpg", + "skybox-nz.jpg", + "skybox-px.jpg", + "skybox-py.jpg", + "skybox-pz.jpg", + "skybox/**", +] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data/skyboxes/skybox1"] +notes = """ +This is the `skybox1` set, which has no `readme` beside it anywhere upstream. +The six faces are byte-identical to VTK's +`Testing/Data/skybox-{nx,ny,nz,px,py,pz}.jpg` content links: + + for f in nx ny nz px py pz; do + shasum -a 512 Data/skybox-$f.jpg | cut -d' ' -f1 | diff - <(cut -d' ' -f1 VTK/Testing/Data/skybox-$f.jpg.sha512) + done + +VTK added them on 2016-07-06 (commit 64017f58d9, Joachim Pouderoux, +"Introduce cube map creation from raw images", for `TestCubeMap.cxx`), which +names no source. Bill Lorensen added the same files to `lorensen/VTKExamples` +on 2018-03-12 (commit cace6412d1, "ENH: Add CubeMap and SphereMap shader +examples.") and they were moved into `skyboxes/skybox1` on 2019-10-19; the +loose faces here came with the April 2019 import of that repository, and the +`skybox/` copies and `skybox-lorensen.zip` (six faces renamed negx/posx and +so on, same blobs) with the October 2022 "add skybox" commit, whose source +is not recorded. VTK Data is therefore the furthest point established and +its BSD-3-Clause collection licence is recorded. Neither VTK nor the VTK +Examples says who made the images, so the origin is inferred. The unrelated +`skybox2` set turned out to be Emil Persson's under CC BY 3.0. +""" + +[[dataset]] +name = "solar_textures" +title = "Solar system surface textures" +description = "Equirectangular surface textures for the Sun, the Moon and every planet except Earth, with Venus in surface and atmosphere variants, plus a transparent Saturn ring texture. Used by `pyvista.examples.planets`, whose Earth texture is built in rather than downloaded and whose Pluto texture has a separate entry." +path = [ + "mars.jpg", + "solar_textures/jupiter.jpg", + "solar_textures/mars.jpg", + "solar_textures/mercury.jpg", + "solar_textures/moon.jpg", + "solar_textures/neptune.jpg", + "solar_textures/saturn.jpg", + "solar_textures/saturn_ring_alpha.png", + "solar_textures/sun.jpg", + "solar_textures/uranus.jpg", + "solar_textures/venus_atmosphere.jpg", + "solar_textures/venus_surface.jpg", +] +SPDX-License-Identifier = "CC-BY-4.0" +SPDX-FileCopyrightText = ["Solar System Scope (INOVE)"] +provenance = "verified" +origin_url = "https://www.solarsystemscope.com/textures/" +origin_title = "Solar System Scope Textures" +collection = "solar-system-scope" +attribution = "Textures by Solar System Scope, https://www.solarsystemscope.com/textures/, licensed under CC BY 4.0." +notes = """ +Ten of the eleven files under `solar_textures/` are byte-identical to the +Solar System Scope downloads of the same name. `mars.jpg` is not: it is 2000 +by 1000 where Solar System Scope serves 2048 by 1024, and its EXIF records +GIMP in 2021, so it is a regraded derivative. `neptune.jpg` and `uranus.jpg` +are byte-identical to Solar System Scope's, but also to the copies in +tamaskis/planet3D-MATLAB, so they may have arrived by that route. + +`mars.jpg` at the top level is byte-identical to `solar_textures/mars.jpg`, +kept for an older download path. +""" +modified = true +modification = "`mars.jpg` was resized to 2000 by 1000 and regraded; the other ten files are as published." + +[[dataset]] +name = "sparse_points" +title = "Sparse points" +description = "Sixteen scattered points with a scalar value each, from a wind tunnel test, used to demonstrate interpolation onto a surface or grid." +path = ["sparsePoints.txt"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://discourse.vtk.org/t/interpolate-on-stl-plotting-scalar-field-on-50-points-on-an-70000-points-stl-surface/450" +origin_title = "VTK Discourse: Interpolate on STL" +collection = "vtk-examples" +authors = ["Hosam"] +attribution = "Hosam, via VTK Discourse thread 450." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/sparsePoints.txt"] +notes = """ +VTK Discourse user Hosam posted `InterpolatingOnSTL.zip` (Dropbox, +https://www.dropbox.com/s/xdusaasn86t1q8e/InterpolatingOnSTL.zip?dl=1) in +post 3 of the thread on 2019-03-12, describing the data as points sampled +in a wind tunnel test; its `points.txt` is byte-identical to this file, +which holds a header line and 16 points (the thread speaks of 50). + + curl -sSL 'https://www.dropbox.com/s/xdusaasn86t1q8e/InterpolatingOnSTL.zip?dl=1' -o i.zip && unzip -p i.zip points.txt | cmp - sparsePoints.txt + +In post 8 Bill Lorensen asked "@Hosam Can I add your data to the VTKExamples +Project?" and in post 11, on 2019-03-14, Hosam answered "Yes of course you +can use my example."; `sparsePoints.txt` entered `lorensen/VTKExamples` the +same day (commit 6ab4ffb6ae) and this repository copied it in April 2019. +The VTK Examples' `src/Cxx/Meshes/PointInterpolator.md` links the thread. +The thread states no licence, and the Apache License 2.0 of the examples +repository does not cover a third party's data, so the terms are +undetermined; a downstream user who needs more than the informal grant in +the thread should ask the author through it. The companion +`InterpolatingOnSTL_final.stl` from the same archive has its own entry, +`interpolating_on_stl`. +""" + +[[dataset]] +name = "spcth_time_series" +title = "CTH time series" +description = "Spy plot CTH time series contributed by Dave Karelitz." +path = ["Dave_Karelitz_Small/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +The files are CTH "Spymaster output" files (the format's own header). The +VTKData commit that added them, 7a18fb9 of 2011-11-04 by George Zagaris, is +titled "Adding Dave's small SPCTH dataset to VTK", and the directory is +named after Dave Karelitz; nothing upstream states who ran the simulation +or under what terms it was contributed, so the collection licence is all +that is recorded. +""" + +[[dataset]] +name = "spider" +title = "Spider" +description = "Surface mesh of a spider." +path = ["spider.ply"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "st_helens" +title = "Mount St. Helens elevation" +description = "USGS digital elevation model of Mount St. Helens after the 1980 eruption, on a 30 metre grid." +path = ["SainteHelens.dem"] +SPDX-License-Identifier = "LicenseRef-PublicDomain" +provenance = "verified" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +authors = ["United States Geological Survey"] +notes = """ +The file is a USGS digital elevation model in the standard Type A record +format, and that record names itself. `head -c 160 Data/SainteHelens.dem` +gives: + + MOUNT ST. HELENS, WASH. (POST-ERUPTION) MSH-M80 3-176 09/06/80 B-8 + N=2.00X1.00 S=2.00X1.00MM 9 PANEL FILES 30M X 30M INTERVAL + +So the quadrangle, the vintage and the grid spacing were in the bytes all +along. A digital elevation model prepared by the USGS is a work of the United +States federal government and carries no copyright under 17 U.S.C. Sec. 105. +Kitware's blanket collection notice cannot attach a copyright to a work +that has none. +""" + +[[dataset]] +name = "stars_cloud_hyg" +title = "HYG star catalogue point cloud" +description = "Positions, luminosities and colour indices of catalogued stars, with an RGBA array derived from each star's B-V colour index." +path = ["point-clouds/hyg-database/**"] +SPDX-License-Identifier = "CC-BY-SA-2.5" +provenance = "verified" +origin_url = "https://www.astronexus.com/projects/hyg" +origin_title = "HYG Database" +attribution = "HYG Database, https://www.astronexus.com/projects/hyg, licensed under Creative Commons Attribution-ShareAlike 2.5." +redistributed_from = ["https://github.com/astronexus/HYG-Database"] +modified = true +modification = "Built from `hygdata_v3.csv`, restricted to stars with a valid distance and colour index, and saved as VTK XML PolyData with a derived RGBA array." +notes = """ +Built in October 2022 (commit da64461, whose README carried the generating +script) from `hygdata_v3.csv`, the HYG 3.x release then served at the root +of https://github.com/astronexus/HYG-Database; the exact 3.x minor version +was not recorded. That repository is now archived, its README says the +database moved to https://codeberg.org/astronexus/hyg, and it keeps the 3.x +releases as `hyg/v3/hyg_v30.csv.gz` to `hyg_v38.csv.gz` beside +`hyg/v3/LICENSE.html`, which states "This work is licensed under CC BY-SA +2.5". astronexus licenses HYG by version: the 3.x line is CC BY-SA 2.5 and +the current 4.x is CC BY-SA 4.0 (https://www.astronexus.com/projects/hyg), +so the version matters and 2.5 is the one that applies here. ShareAlike +propagates: a downstream work derived from this point cloud must be shared +under the same licence. +""" + +[[dataset]] +name = "step_model" +title = "STEP solid model" +description = "Red cube and blue cylinder in ISO 10303-21 STEP format, used to exercise the STEP reader." +path = ["cadquery/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/cqparts/cqparts/blob/master/tests/test-files/red_cube_blue_cylinder.step" +origin_title = "cqparts/cqparts test data" +attribution = "cqparts project, licensed under the Apache License 2.0." +redistributed_from = ["https://github.com/CadQuery/cadquery/blob/master/tests/testdata/red_cube_blue_cylinder.step"] +notes = "Added in February 2024 (pyvista/data PR 35) as `tests/testdata/red_cube_blue_cylinder.step` from the CadQuery repository, referenced from its `tests/test_importers.py`. The CadQuery pull request that added it (https://github.com/CadQuery/cadquery/pull/15, Justin Buchanan, 2018-12-01) says \"I added a test case with an example STEP file borrowed from cqparts\", and the same git blob (4ed12421d740) is `tests/test-files/red_cube_blue_cylinder.step` in cqparts/cqparts, committed by Peter Boin on 2018-05-02 (commit 03c8131853). cqparts is published under the Apache License 2.0 (as is CadQuery), and that licence is recorded here. The STEP header names a translation-service export path with the same date, 2018-05-02T02:01:30, so the model was exported from another tool rather than generated with either library; who modelled it is not stated, which is why the origin is inferred." + +[[dataset]] +name = "stock_prices" +title = "Stock price series" +description = "Daily closing prices and volumes for four publicly traded companies, quoted in eighths, as one polyline per company." +path = ["DEC.vtk", "GE.vtk", "GM.vtk", "IBM.vtk"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "unknown" +redistributed_from = ["https://github.com/lorensen/VTKExamples/commit/a152d24da151868490ee81234ac3331e85d792c4", "https://gitlab.kitware.com/vtk/vtk-examples/-/tree/master/src/Testing/Data"] +notes = """ +Not company logos, which is what the filenames suggest. Each file is headed +`Data values for stock` and holds 345 to 348 daily closes with a `volume` +scalar, priced in eighths, which is how United States equities were quoted +before decimalisation in 2001. + +The VTK textbook says where they came from, in `src/VTKBook/12Chapter12.md` +inside `vtk/vtk-examples`: + + We obtained our data from a public site on the World Wide Web (WWW) that + archives stock prices and volumes for many publicly traded stocks. + +So this is third-party market data of unrecorded origin, converted by the +book's authors. A site that archives prices does not thereby license them, +and the VTK Examples Apache-2.0 the files were recorded under is not the +archive's to give. All four files arrived with the April 2019 +lorensen/VTKExamples import (commit 74bf994) as the same git blobs that Bill +Lorensen added to that repository on 2017-12-17 with the Stocks.cxx example +(commit a152d24d); vtk/vtk-examples now holds the same bytes in LFS (its +pointers' sha256 match the four files). +""" + +[[dataset]] +name = "tango_icons" +title = "Tango icon montage" +description = "Montage of icons from the Tango Icon Library, used to exercise the icon glyph filter." +path = ["Tango/**"] +SPDX-License-Identifier = "CC-BY-SA-2.5" +provenance = "verified" +origin_url = "https://web.archive.org/web/20080301221554/http://tango.freedesktop.org/Tango_Desktop_Project" +origin_title = "Tango Desktop Project, Tango Icon Library 0.8.1" +collection = "vtk-data" +authors = ["Ulisse Perusin", "Steven Garrity", "Lapo Calamandrei", "Ryan Collier", "Rodney Dawes", "Andreas Nilsson", "Tuomas Kuosmanen", "Garrett LeSage", "Jakub Steiner"] +attribution = "Icons from the Tango Icon Library 0.8.1, Tango Desktop Project (http://tango.freedesktop.org/), licensed under Creative Commons Attribution-ShareAlike 2.5; montaged by VTK." +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7"] +modified = true +modification = "A subset of the icons was montaged into a single image." +notes = """ +VTK montaged the icons in March 2008 and its +`Testing/Data/Tango/README.VTK.txt` names Tango Icon Library 0.8.1 and +creativecommons.org/licenses/by-sa/2.5/. The 0.8.1 tarball (Wayback: +https://web.archive.org/web/2007id_/http://tango.freedesktop.org/releases/tango-icon-theme-0.8.1.tar.gz) +ships the CC BY-SA 2.5 text as `COPYING`, with no copyright line, and lists +the nine artists recorded in `authors` in `AUTHORS`. The project page +captured on 2008-03-01, nine days before the montage entered VTK Data, +states the same licence and that "Use of icons from the tango-icon-theme +module must be attributed to the Tango Desktop Project". No copyright holder +or year is stated for 0.8.1, so none is recorded. `TangoIcons.png` is in the +VTK Data tree this repository was forked from, and VTK ships +`Tango/TangoIcons.png.sha512`. + +The project later released the base icon theme to the public domain: the +page captured in 2010 +(https://web.archive.org/web/2010/http://tango.freedesktop.org/Tango_Desktop_Project) +reads "The Tango base icon theme is released to the Public Domain ... we ask +that you still please attribute the Tango Desktop Project", and Debian +records the 0.8.90 series as public-domain. A downstream user who needs the +same icons unencumbered should take them from a release after 0.8.1 rather +than from here. + +ShareAlike propagates from the 2.5 terms recorded here. +""" + +[[dataset]] +name = "teapot" +title = "Utah Teapot" +description = "The Newell teapot as an ASCII triangle mesh. Despite the `.g` extension this is not a BRL-CAD database; it carries the same coordinates as `TeapotPoints.txt`." +path = ["teapot.g", "TeapotPoints.txt"] +SPDX-License-Identifier = "LicenseRef-UtahTeapot" +provenance = "verified" +origin_url = "https://graphics.cs.utah.edu/teapot/" +origin_title = "The Utah Teapot, University of Utah Graphics Lab" +collection = "vtk-data" +authors = ["Martin Newell"] +attribution = "Utah Teapot, originally modeled by Martin Newell, University of Utah, 1975." +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7", "https://github.com/lorensen/VTKExamples"] +notes = "No formal licence was ever issued for the Newell dataset and it has been redistributed freely in computer graphics software since the mid-1970s; the University of Utah Graphics Lab's teapot page now states that the model files are freely available for any use, including commercial use, and requests credit. `teapot.g` came through the VTK Data fork (added by Ken Martin on 2001-07-19) and matches VTK's content link `Testing/Data/teapot.g.sha512`; `TeapotPoints.txt` came with the April 2019 import from lorensen/VTKExamples (blob 017dab3abd18 at `src/Testing/Data/TeapotPoints.txt`), is absent from the 2013 fork tree and has no VTK content link." + +[[dataset]] +name = "teapot_vrml" +title = "Utah Teapot (VRML)" +description = "VRML tessellation of the Newell teapot prepared by Martin Isenburg and distributed alongside the Face Fixer paper." +path = ["teapot.wrl", "vrml/teapot.wrl"] +SPDX-License-Identifier = "LicenseRef-UtahTeapot" +provenance = "verified" +origin_url = "https://graphics.cs.utah.edu/teapot/" +origin_title = "The Utah Teapot, University of Utah Graphics Lab" +collection = "vtk-examples" +authors = ["Martin Newell", "Martin Isenburg"] +attribution = "Utah Teapot, originally modeled by Martin Newell, University of Utah, 1975; tessellation by Martin Isenburg." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/teapot.wrl"] +references = [ + { citation = "Isenburg, M. and Snoeyink, J. \"Face Fixer: Compressing Polygon Meshes with Properties.\" SIGGRAPH 2000.", doi = "10.1145/344779.344919" }, +] +notes = """ +No formal licence was ever issued for the Newell dataset and it has been +redistributed freely in computer graphics software since the mid-1970s; the +University of Utah Graphics Lab's teapot page now states that the model +files are freely available for any use, including commercial use, and +requests credit. The file header reads "tesselated & solidified by martin +isenburg@cs.unc.edu for our paper 'Face Fixer' in SIGGRAPH 2000" and +"converted to VRML by martin isenburg@cs.unc.edu". + +`teapot.wrl` came in with the April 2019 VTK Examples import and is +byte-identical to `src/Testing/Data/teapot.wrl` in lorensen/VTKExamples; +`vrml/teapot.wrl` is a byte-identical second copy added in August 2022 with +the commit message "add vrml files". Neither was ever in the VTK Data +collection: both are absent from the 2013 fork tree and from VTK's +`Testing/Data` content links. The VTK Examples repository licence does not +attach to Newell's geometry, which is recorded as public domain by +convention. +""" + +[[dataset]] +name = "tecplot_ascii" +title = "Tecplot ASCII sample" +description = "Single-block ASCII Tecplot dataset: a finite-element brick zone named Rampant with 180 nodes, 120 elements and an X velocity variable." +path = ["tecplot_ascii.dat"] +SPDX-License-Identifier = "LicenseRef-PaulBourke-PersonalUse" +SPDX-FileCopyrightText = ["Paul Bourke"] +provenance = "verified" +origin_url = "https://paulbourke.net/dataformats/tp/" +origin_title = "Paul Bourke's data formats notes: TecPlot ascii format" +attribution = "Tecplot ASCII sample file by Paul Bourke, https://paulbourke.net/dataformats/tp/. Personal use only; other uses need Paul Bourke's permission." +authors = ["Paul Bourke"] +notes = """ +Byte-identical to `sample.tp`, the "Sample file" linked from Paul Bourke's +Tecplot ASCII format page. The site's copyright notice at +https://paulbourke.net/ reads: "The contents of this web site are Copyright +Paul Bourke or a third party contributor where indicated. You may print or +save an electronic copy of parts of this web site for personal use, +permission must be sought for any other use." The page indicates no +third-party contributor for the sample, so Bourke's notice is the stated +licence: personal use only, no other use without permission. The page also +links the Tecplot user manual chapter `ascii_format.pdf.gz` for the format +description; that 34-page chapter does not contain the sample (its text has +no "Rampant" zone and no "X Velocity" variable). A downstream user should +ask Paul Bourke before redistributing the file or using it commercially. +""" + +[[dataset]] +name = "tensors" +title = "Tensor field sample" +description = "Small synthetic dataset carrying a symmetric tensor field on one hexahedron." +path = ["tensors.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "verified" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +authors = ["Prabhu Ramachandran"] +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Synthetic test data: an 8-point hexahedron with two scalar arrays (`scalars`, +`other_scalars`) and one tensor array (`tensors1`), headed "Random data to +test tensors" (`head -4 Data/tensors.vtk`). Prabhu Ramachandran added it to +VTK Data on 2002-12-13 with the message "NEW: Added simple VTK data to test +tensors." (`git show 0abe764 --stat`), so it was made for the collection and +Kitware's blanket `Copyright.txt` notice is the licence recorded. It reached +this repository in the March 2019 fork and matches VTK's +`Testing/Data/tensors.vtk.sha512` content link. +""" + +[[dataset]] +name = "tetrahedron" +title = "Tetrahedron" +description = "Unstructured grid of 96 tetrahedra on 35 points filling a 2 by 2 by 2 cube, with `DistanceToCenter` and `Polynomial` point arrays, added with the VTK Examples ExtractFaces example." +path = ["Tetrahedron.vtu"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples/commit/002d2ea19d5f0b157f7302511a78bd56f16e85fa" +origin_title = "lorensen/VTKExamples, ExtractFaces example data" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Bill Lorensen added the file to `lorensen/VTKExamples` on 2017-11-08 in +commit 002d2ea1 ("ENH: Added ExtractFaces and data") together with seven +other single-cell-type `.vtu` files, and it reached this repository with the +April 2019 import of that repository (commit 74bf994) as the same git blob. +The repository was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`; that licence is recorded here. +The commit does not say how the grid was generated, so the origin is +inferred to be Lorensen's own test data for the example. +""" + +[[dataset]] +name = "thermal_probes" +title = "Thermal probe locations" +description = "245 modelled well-based temperature points near the Utah FORGE site, with temperature in degrees Celsius as point data." +path = ["probes.vtp"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://gdr.openei.org/submissions/1110" +origin_title = "Utah FORGE: Roosevelt Hot Springs Analytical Well-Based Temperature Model Data, GDR submission 1110" +authors = ["Robert Podgorney", "Rick Allis"] +attribution = "Utah FORGE: Roosevelt Hot Springs Analytical Well-Based Temperature Model Data, Podgorney, R. and Allis, R., Geothermal Data Repository submission 1110, https://doi.org/10.15121/1495404, licensed under CC BY 4.0." +references = [ + { citation = "Podgorney, R. and Allis, R. Utah FORGE: Roosevelt Hot Springs Analytical Well-Based Temperature Model Data. Geothermal Data Repository submission 1110, 2018.", doi = "10.15121/1495404", url = "https://gdr.openei.org/submissions/1110" }, +] +notes = """ +Added in October 2020 (commit 773c88f, pyvista/pyvista#940) with the commit +message "add thermal probes" and no recorded source. The 245 points and +their `temperature (C)` values are identical, row for row and in the same +order, to `well_based_temperature.csv` in the submission: + + curl -sSL https://gdr.openei.org/files/1110/well_based_temperature.csv + +The submission page states its licence in its schema.org metadata, +"license": "https://creativecommons.org/licenses/by/4.0/", names the +creators as Robert Podgorney (Idaho National Laboratory) and Rick Allis, +gives 2018-12-07 as the publication date and +https://doi.org/10.15121/1495404 as the identifier. +""" + +[[dataset]] +name = "three_ds_flamingo" +title = "3D Studio flamingo" +description = "Flamingo in the Autodesk 3D Studio format, thirty-three blocks named for its body, wings, legs and eyes, from the Viewpoint model library." +path = ["iflamigm.3ds", "iflamingo.3ds"] +SPDX-License-Identifier = "LicenseRef-Viewpoint-DataLabs" +SPDX-FileCopyrightText = ["1992 Viewpoint Animation Engineering Inc."] +provenance = "verified" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "(c) Copyright 1992 Viewpoint Animation Engineering Inc." +notes = "Byte-identical to `Viewpoint/iflamigm.3ds`, so it carries the Viewpoint terms recorded on the `cow` entry: unlimited use and modification, but the geometry may not be resold." + +[[dataset]] +name = "torso" +title = "Torso" +description = "Surface mesh of a human torso." +path = ["Torso.vtp"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "toy_plane_point_cloud" +title = "Toy plane point cloud" +description = "Coloured point cloud of a toy airplane captured with a Photoneo 3D scanner." +path = ["toy-plane-point-cloud/**"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://github.com/pyvista/pyminiply/issues/13" +origin_title = "pyvista/pyminiply issue 13" +authors = ["WouterB15"] +notes = """ +Posted by GitHub user WouterB15 in pyvista/pyminiply issue 13 on 2025-03-20 +as Photoneo scanner test files (`plane.ply` and `plane_bin.ply`) and added +here by pyvista/data pull request 56, whose description names that issue as +the source. Asked on 2025-03-22 whether the data could be included as a +dataset, the contributor answered "It's a toy plane we used to test the +scanner, so yes, that would be fine!" That is permission to include it here +and names no licence. The CC BY 4.0 in the README that pull request added +(`git show 0599bc6:Data/toy-plane-point-cloud/README.md`) was written by the +maintainer in pull request 56, not by the contributor, so the terms for +other uses are undetermined until the contributor confirms them in that +issue. +""" + +[[dataset]] +name = "triquadratic_hexahedron" +title = "Triquadratic hexahedron" +description = "Single triquadratic hexahedral cell." +path = ["TriQuadraticHexahedron.vtu"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "trumpet" +title = "Trumpet" +description = "Surface mesh of a trumpet, with the same mesh exported as a ten-block multiblock scene." +path = ["trumpet.obj", "Exporttrumpet.vtp", "Exporttrumpet/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. `Exporttrumpet.vtp` is a +`vtkMultiBlockDataSet` XML index listing `Exporttrumpet/Exporttrumpet_0.vtp` +to `Exporttrumpet_9.vtp` as ten PolyData blocks with `MaterialNames` field +data, written by the ExportPolyDataScene example (commit 4686693ac1, +2018-02-28, "ENH: Improving import/export examples"). The repository licence +is recorded here. Lorensen did not publish per-file provenance, so the +original author of the data itself could not be established. +""" + +[[dataset]] +name = "turbine_blade" +title = "Turbine blade" +description = "Scan of a turbine blade, Laser Design's ZS-Series inspection sample." +path = ["turbineblade.ply"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.laserdesign.com/sample-files/blade/" +origin_title = "Laser Design sample files: Turbine Blade" +collection = "laser-design" +redistributed_from = ["http://3dgallery.gks.com/2012/blade/blade.php"] +modified = true +modification = "The file Laser Design serves for this sample is a binary STL written by Geomagic Studio with 1499981 triangles; this copy is a VTK-written PLY of 99519 points and 199034 triangles, so it was converted and decimated. Who did so, and when, was not recorded." +notes = """ +Laser Design Inc. publishes this scan to demonstrate its scanning services on +its own page, "Turbine Blade. Type: .STL, Inspection, ZS-Series", whose +Download link is http://3dgallery.gks.com/2012/blade/blade.php. PyVista's +2019 loader `download_turbine_blade` (pyvista commit 8876d784e) fetched +`turbine_blade.stl` from that link; when the gallery went offline the file +was re-hosted here from contributors' caches as `turbineblade.ply` +(https://github.com/pyvista/pyvista/pull/1226, March 2021). The Wayback +Machine's capture of the link +(http://web.archive.org/web/20190823161820id_/http://3dgallery.gks.com/2012/blade/blade.php) +is truncated at 1 MiB but keeps the STL header, "STL Output from geomagic +Studio", and its triangle count, 1499981. + +The site footer asserts "(c) 2026 CyberOptics Corporation. All Rights +Reserved." and the page states no licence of its own. The "Terms of Use" its +footer links to, at cyberoptics.com, grants permission "to temporarily +download one copy of the materials ... for personal, non-commercial +transitory viewing only", and says that under that licence you may not "use +the materials for any commercial purpose", or "transfer the materials to +another person or 'mirror' the materials on any other server". Whether that +boilerplate is meant to govern the sample downloads is arguable, but no grant +of redistribution rights exists anywhere on the site, so the terms are +recorded as undetermined. Downstream users, especially commercial ones, +should contact Laser Design or substitute another mesh. +""" + +[[dataset]] +name = "ucd2d" +title = "AVS UCD two-dimensional samples" +description = "Two-dimensional unstructured cell data samples in the AVS UCD format." +path = ["UCD2D/**"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "unstructured_grid_example" +title = "Unstructured grid example" +description = "Unstructured grid exercising several cell types at once." +path = ["uGridEx.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "urn" +title = "Burial urn" +description = "Scan of a burial urn captured with an Artec Eva scanner, from Laser Design's sample files." +path = ["urn.stl"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.laserdesign.com/sample-files/burial-urn/" +origin_title = "Laser Design sample files: Burial Urn" +collection = "laser-design" +redistributed_from = ["http://3dgallery.gks.com/2012/urn/urn3.php"] +notes = """ +Laser Design Inc. publishes this scan to demonstrate its scanning services on +its own page, "Burial Urn. Type: .OBJ, .STL, Artec Eva, Visualization. Files +Available: 3D Scan data in .OBJ format. 3D Scan data in .STL format. Captured +with the Artec Eva 3D scanner." The file's 80-byte STL header reads "File +exported by Artec Group 3D Scanning Solutions, www.artec-group.com", matching +that account. PyVista's 2019 loader `download_urn` (pyvista commit 24cec36d3) +cited this page and fetched `urn.stl` from +http://3dgallery.gks.com/2012/urn/urn3.php, Laser Design's former download +gallery; when the gallery went offline the file was +re-hosted here from contributors' caches +(https://github.com/pyvista/pyvista/pull/1226, March 2021). The Wayback +Machine holds no capture of that link, so the bytes could not be compared +with what Laser Design served. + +The site footer asserts "(c) 2026 CyberOptics Corporation. All Rights +Reserved." and the page states no licence of its own. The "Terms of Use" its +footer links to, at cyberoptics.com, grants permission "to temporarily +download one copy of the materials ... for personal, non-commercial +transitory viewing only", and says that under that licence you may not "use +the materials for any commercial purpose", or "transfer the materials to +another person or 'mirror' the materials on any other server". Whether that +boilerplate is meant to govern the sample downloads is arguable, but no grant +of redistribution rights exists anywhere on the site, so the terms are +recorded as undetermined. Downstream users, especially commercial ones, +should contact Laser Design or substitute another mesh. +""" + +[[dataset]] +name = "usa" +title = "United States state boundaries" +description = "State boundary polygons of the United States, including Alaska and Hawaii, with a shaded-relief raster of the contiguous states." +path = ["usa.vtk", "usa_image.jpg"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "utah_forge_earth_model" +title = "Utah FORGE earth model surfaces" +description = "Land surface and Opal Mound fault surfaces of the Utah FORGE earth model, meshed from the published vertex tables, in UTM zone 12N." +path = ["opal_mound_fault.vtk", "topo_clean.vtk"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://gdr.openei.org/submissions/1107" +origin_title = "Utah FORGE: Earth Model Mesh Data for Selected Surfaces, GDR submission 1107" +authors = ["Robert Podgorney"] +attribution = "Utah FORGE: Earth Model Mesh Data for Selected Surfaces, Podgorney, R., Idaho National Laboratory, Geothermal Data Repository submission 1107, https://doi.org/10.15121/1495398, licensed under CC BY 4.0." +modified = true +modification = "The vertex tables `Opal_Mound_Fault_vertices.csv` and `land_surface_vertices.csv` were triangulated: `opal_mound_fault.vtk` is a polydata surface of 3834 cells on the 2029 fault vertices and `topo_clean.vtk` an unstructured grid of 824278 triangles on the 413250 land-surface vertices." +references = [ + { citation = "Podgorney, R. Utah FORGE: Earth Model Mesh Data for Selected Surfaces. Idaho National Laboratory, Geothermal Data Repository submission 1107, 2018.", doi = "10.15121/1495398", url = "https://gdr.openei.org/submissions/1107" }, +] +notes = """ +Added on 2021-04-17 ("add geo sample data") and 2021-11-24 ("add fault") by +Bane Sullivan with no recorded source. Every point of both meshes lies on a +row of the submission's vertex tables to within 1e-9 m, and the point counts +equal the row counts (2029 and 413250): + + curl -sSL https://gdr.openei.org/files/1107/Opal_Mound_Fault_vertices.csv + curl -sSL https://gdr.openei.org/files/1107/land_surface_vertices.csv + +The submission page (published 2018-12-07) names Robert Podgorney, Idaho +National Laboratory, as creator, says all data are georeferenced to UTM zone +12N, NAD 83, NAVD 88, and states its licence in its schema.org metadata, +`"license": "https://creativecommons.org/licenses/by/4.0/"`. +""" + +[[dataset]] +name = "vase" +title = "Vase" +description = "Volume of a vase, 115 by 101 by 75, in one- and four-component variants; the one-component array is still named `SLCImage` from the format it was converted out of." +path = ["vase.vti", "vase_1comp.vti", "vase_4comp.vti"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "verified" +origin_url = "https://www.cs.stonybrook.edu/" +origin_title = "SUNY Stony Brook" +authors = ["SUNY Stony Brook"] +redistributed_from = ["https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7", "https://github.com/lorensen/VTKExamples"] +notes = """ +The VTK textbook, which ships inside `vtk/vtk-examples` at +`src/VTKBook/07Chapter7.md`, credits this data in a figure caption: + + Vase data courtesy of SUNY Stony Brook. + +Retrieve the chapter with: + + curl -sS "https://gitlab.kitware.com/api/v4/projects/vtk%2Fvtk-examples/repository/files/src%2FVTKBook%2F07Chapter7%2Emd/raw?ref=master" + +A courtesy credit in a textbook names the owner; it is not a licence, and it +is not the redistributor's to widen. The terms for use outside that book were +not established. + +`vase_1comp.vti` and `vase_4comp.vti` are in the VTK Data tree this +repository was forked from, and VTK ships a content link for each. +`vase.vti` came with the April 2019 `lorensen/VTKExamples` import and is +byte-identical to `vase_1comp.vti`; its four-component sibling names its +array `Scalars_`. +""" + +[[dataset]] +name = "vector_animation" +title = "Vector field animation" +description = "Nine one-dimensional texture maps used to animate a vector field by cycling textures." +path = ["VectorAnimation/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://gitlab.kitware.com/vtk/vtk/-/blob/da314198bb8fbdab6f59e8a69b2d97f1611a05bd/graphics/examplesTcl/animVectors.tcl" +origin_title = "VTK animVectors example (vtkdata/vecTex)" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +redistributed_from = ["https://github.com/lorensen/VTKExamples/tree/master/src/Testing/Data/VectorAnimation"] +references = [ + { citation = "B. Yamrom and K. M. Martin. Vector Field Animation with Texture Maps. IEEE Computer Graphics and Applications 15(2):22-24, 1995.", doi = "10.1109/38.365001" }, +] +notes = """ +Nine 16 by 1 by 1 structured-points texture maps whose headers read `vtk +DataFile Version 1.0` and `Texture map for animating vectors (map 1/16)`. +VTK's own `animVectors` example has read them as +`$VTK_DATA/vecTex/vecAnimN.vtk` since the examples entered CVS in March 1996 +(VTK commit 1994513af7; the 1998 Python port reads +`../../../vtkdata/vecTex/vecAnim1.vtk`), and Bill Lorensen's AnimateVectors +example, which recreates VTK textbook Figure 7-3, cites Yamrom and Martin +(1995) for the technique, so the data are the VTK project's. They are absent +from the December 1999 and July 2013 VTKData trees in this repository's +history and from VTK's `Testing/Data` content links, so no byte match with +the original `vtkdata` distribution was possible and its terms for these +bytes could not be checked. + +The copies here were imported in April 2019 from +`src/Testing/Data/VectorAnimation` in `lorensen/VTKExamples` (all nine blobs +match), which Lorensen, one of VTK's authors, published under the Apache +License 2.0 and which Kitware now maintains as `vtk/vtk-examples`; that +repository licence is what is recorded. +""" + +[[dataset]] +name = "victorian_goblet_face_illusion" +title = "Victorian goblet face illusion" +description = "Surface mesh of a goblet whose silhouette reads as two facing profiles, a solid model of the Rubin vase illusion." +path = ["Victorian_Goblet_face_illusion/**"] +SPDX-License-Identifier = "CC-BY-3.0" +provenance = "verified" +origin_url = "https://www.thingiverse.com/thing:1541337" +origin_title = "Thingiverse thing:1541337" +collection = "thingiverse" +authors = ["Alzibiff"] +attribution = "Victorian Goblet face illusion by Alzibiff, licensed under CC BY 3.0." +notes = """ +The page labels the licence "Creative Commons - Attribution" without a +version in its text, but its `rel="license"` link names +creativecommons.org/licenses/by/3.0/. Thingiverse mapped that label to 3.0 +for 2016 uploads and to 4.0 by 2021, so the version is read from the link +rather than inferred from the date, and from a capture rather than from the +live page, which has since been re-rendered. The captures of 7 May 2016 and +12 January 2017 both carry the 3.0 link: +web.archive.org/web/20160507130037/http://www.thingiverse.com:80/thing:1541337 +""" + +[[dataset]] +name = "vtk_cell_types" +title = "VTK cell types example grid" +description = "The 'Unstructured Grid Example' from the VTK legacy file format documentation: 27 points and 11 cells covering the linear cell types." +path = ["VTKCellTypes.vtk"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2015 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "verified" +origin_url = "https://gitlab.kitware.com/vtk/vtk/-/blob/master/Documentation/docs/vtk_file_formats/vtk_legacy_file_format.md" +origin_title = "VTK legacy file format documentation" +collection = "vtk-examples" +attribution = "VTK file format documentation, Kitware. Copyright (c) 1993-2015 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/VTKCellTypes.vtk"] +notes = """ +Identical, apart from whitespace, to the "Unstructured Grid Example" +listing in VTK's legacy file format documentation +(`Documentation/docs/vtk_file_formats/vtk_legacy_file_format.md` in the VTK +repository; `diff -w` of the fenced block against the file is empty), which +carries VTK's BSD-3-Clause `Copyright.txt` notice. Bill Lorensen added it to +`lorensen/VTKExamples` on 14 February 2018 (commit 7046446f85) for the +ReadLegacyUnstructuredGrid example, and the April 2019 import of that +repository brought it here. +""" + +[[dataset]] +name = "vtk_data_files" +title = "VTK Data files" +description = "Files inherited from the VTK Data collection that are not loaded by `pyvista.examples`: reader test inputs, small meshes, volumes, images, textures, CFD results and format samples." +path = [ + "2h2o.aux", + "B.pgm", + "BlueCircle.png", + "CityPopulationsUTF8.txt", + "EventRecording.log", + "GreenCircle.png", + "IncOctPntLocData.dat", + "IncOctPntLocResult.dat", + "PentaHexa.vtk", + "RectGrid2.vtk", + "RedCircle.png", + "SurfaceVectors.vtk", + "SyntheticPolyline.vtp", + "WineGlass.wrl", + "authors.csv", + "beach.ascii", + "beach.ascii.nhdr", + "beach.jpg", + "beach.tif", + "billBoard.pgm", + "blowAttr.vtk", + "blowGeom.vtk", + "bolt.fac", + "bore.vtk", + "bot2.wrl", + "box-noglom.ex2", + "bpa.mol", + "brainImageSmooth.vtk", + "cactus.3337.pts", + "camscene.png", + "cellcentered.tec", + "cellsnd.bin.inp", + "cth.vtr", + "delimited.txt", + "delimited2.txt", + "delimited2UTF16.txt", + "delimited2UTF16BE.txt", + "delimited2UTF16LE.txt", + "delimitedUTF16.txt", + "delimitedUTF16BE.txt", + "delimitedUTF16LE.txt", + "disk_out_ref.ex2", + "disk_out_ref_surface.vtp", + "earth.ppm", + "edgeFaceElem.exii", + "fieldfile.vtk", + "financial.txt", + "financial.vtk", + "fixedwidth.txt", + "flow.tec", + "flow.tec.gz", + "fran_cut.png", + "fullhead15.png", + "hello.vtk", + "hexa.vtk", + "itkTransforms.tfm", + "masonry-wide.jpg", + "matrix.vtk", + "mbwavelet_ascii.q", + "mbwavelet_ascii.xyz", + "mni-surface-mesh.obj", + "multi-ascii.q", + "multi-ascii.xyz", + "multi-bin-2D.q", + "multi-bin-2D.xyz", + "multi-bin-C.q", + "multi-bin-C.xyz", + "multi-bin-oflow.q", + "multi-bin.f", + "multi-bin.q", + "multi-bin.xyz", + "multi.p3d", + "noise.png", + "plate.vtk", + "points.txt", + "political.vtp", + "polyEx.vtk", + "polyhedron2pieces.vtu", + "porphyrin.cml", + "post.vtk", + "quadraticTetra01.vtu", + "qualityEx.vtk", + "ruler.png", + "sample.xml", + "sampleCurveGrid4.nc", + "sampleGenGrid3.nc", + "sphere.slc", + "test.p3d", + "tetra.vtu", + "tetraMesh.vtk", + "texThres.vtk", + "texThres2.vtk", + "textureRGBA.png", + "thio3xx.xyz", + "timestep_0_15.vts", + "track1.binary.vtk", + "track2.binary.vtk", + "track3.binary.vtk", + "treetest.xml", + "uniform-001371-5x5x5.vtp", + "vtk.vtk", + "vwgt.coords", + "vwgt.graph", +] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +redistributed_from = ["https://github.com/lorensen/VTKExamples"] +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. + +`tetra.vtu` and `texThres.vtk` are the exceptions to the route: they arrived +with the April 2019 `lorensen/VTKExamples` import, but are byte-identical to +the collection's `quadraticTetra01.vtu` and `texThres2.vtk` (blobs +21ea8f00e758 and 8a5e1eddd0da), so the same licence applies. + +Per-file origins established for files still inside this entry: +`porphyrin.cml` is ChemSpider record 60231; `CityPopulationsUTF8.txt` is the +World Gazetteer, copyright Stefan Helders; `vwgt.graph` and `vwgt.coords` are +from Sandia's Zoltan/Chaco regression suite, committed by Lee Ann Fisk of +Sandia with `vtkChacoReader`; `disk_out_ref.ex2` and `SurfaceVectors.vtk` are +a Sandia CUBIT mesh (1996) with a Salsa reacting-flow solution (1997) of a +GaAs MOCVD reactor; `cactus.3337.pts` is Hugues Hoppe's surface-reconstruction +test data; `bolt.fac` is a Unigraphics facet file; `fran_cut.png` is a +Cyberware scan; `financial.txt` and `financial.vtk` are simulated; +`PentaHexa.vtk` was contributed by Jean Favre (VTKData commit 202fafd, +2004). None of these is covered by the collection licence in its own right, +and each is a candidate for its own entry once its terms are established. +""" + +[[dataset]] +name = "vtk_examples_files" +title = "VTK Examples data files" +description = "Files imported from the VTK Examples collection that are not loaded by `pyvista.examples`: cell type samples, fonts, textures, small meshes, molecular structures, reader test inputs, and a git-lfs probe marker." +path = [ + "AttenuationArtifact.pgm", + "ColorCells.tif", + "DelimitedData.txt", + "GitLfsInstalled", + "Gourds.mha", + "Hexahedron.vtu", + "Ox.jpg", + "QuadraticTetra.vtu", + "QuadraticWedge.vtu", + "Ring.vtp", + "SuperQuadric.vtp", + "TestPattern.png", + "Triangle.vtu", + "Triangles.txt", + "Wedge.vtu", + "Yinyang.jpg", + "a.vtp", + "binary.pgm", + "coarseGrid.e", + "coords.txt", + "fineGrid.e-s002", + "grasshop.wrl", + "labels.mhd", + "labels.raw", + "lys.pdb", + "stormy.jpg", + "t.vtk", + "teeth.lps.vtk", + "teeth.ras.vtk", + "teeth.vtk", + "v.vtk", + "vtks.pgm", +] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. + +`bridge.wrl`, `sextant.wrl`, `wintersun.jpg` and `VTKCellTypes.vtk` were +traced to sources outside the VTK Examples and have their own entries +(`bridge`, `sextant`, `wintersun`, `vtk_cell_types`). +""" + +[[dataset]] +name = "vtk_logo" +title = "VTK logo image" +description = "PNG image of the VTK logo, used as a texture." +path = ["vtk.png"] +SPDX-License-Identifier = "BSD-3-Clause" +SPDX-FileCopyrightText = ["1993-2008 Ken Martin, Will Schroeder, Bill Lorensen"] +provenance = "inferred" +origin_url = "https://data.kitware.com/#collection/55f17f758d777f6ddc7895b7" +origin_title = "VTK Data" +collection = "vtk-data" +attribution = "VTK Data. Copyright (c) 1993-2008 Ken Martin, Will Schroeder, Bill Lorensen. BSD 3-Clause." +notes = """ +Inherited from the VTK Data collection when this repository was forked from +it in March 2019. Kitware's blanket `Copyright.txt` notice covers the +collection as a whole, and is recorded here as the licence for this entry. +Kitware never published per-file provenance for this material, so the +original author of the data itself is not recorded upstream and could not be +established here. +""" + +[[dataset]] +name = "vtk_logo_mesh" +title = "VTK logo mesh" +description = "Extruded surface mesh of the VTK logo." +path = ["vtk.vtp"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://github.com/lorensen/VTKExamples" +origin_title = "lorensen/VTKExamples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +Imported in April 2019 from Bill Lorensen's `lorensen/VTKExamples` +repository, which was published under the Apache License 2.0 and is now +maintained by Kitware as `vtk/vtk-examples`. The repository licence is +recorded here. Lorensen did not publish per-file provenance, so the original +author of the data itself could not be established. +""" + +[[dataset]] +name = "vtu_series" +title = "VTU time series" +description = "Wave simulation adapted to the `.vtu.series` time series format." +path = ["vtu_series/**"] +SPDX-License-Identifier = "Apache-2.0" +SPDX-FileCopyrightText = ["riku-sakamoto"] +provenance = "verified" +origin_url = "https://github.com/pyvista/data/pull/61" +origin_title = "pyvista/data pull request 61" +authors = ["riku-sakamoto"] +attribution = "Converted by riku-sakamoto for pyvista/data#61 from PyVista-generated frames, Apache License 2.0." +modified = true +modification = "Converted from `PVD/wavy.zip` to the `.vtu.series` format, the structured grids becoming unstructured ones." +notes = """ +The pull request that added this states that it comes from `PVD/wavy.zip`, +which is generated PyVista data rather than anything from VTK; see the +`wavy_pvd` entry for how those frames were written. The pull request states +no terms, so the file is recorded under this repository's Apache-2.0 +LICENSE, the terms it was contributed under. +""" + +[[dataset]] +name = "vw_knee" +title = "Visible Woman knee" +description = "SLC volume of a knee from the Visible Human Project female dataset." +path = ["vw_knee.slc"] +SPDX-License-Identifier = "LicenseRef-PublicDomain" +provenance = "inferred" +origin_url = "https://www.nlm.nih.gov/research/visible/visible_human.html" +origin_title = "The Visible Human Project, U.S. National Library of Medicine" +authors = ["U.S. National Library of Medicine"] +redistributed_from = ["https://github.com/lorensen/VTKExamples"] +notes = """ +The entry's own title and description name the source: the Visible Human +Project female dataset, produced by the U.S. National Library of Medicine. It +is a work of the United States federal government, and since 2019 the NLM has +required no licence agreement to use it, having previously issued about four +thousand. It arrived with the April 2019 VTK Examples import and was recorded +under that repository's Apache-2.0, which is not Lorensen's to apply to +federal work. + +Inferred rather than verified: the identification rests on what this +repository recorded when the file was added, not on a match against a file +the NLM publishes, because the project distributes the full cryosection and +CT series rather than this extracted knee volume. + +The subject consented to the use of her body for this purpose before death. + +It is absent from the 2013 VTK data tree and reached lorensen/VTKExamples in +December 2018, contributed by Bharatesh Chakravarthi S B; `vw` follows VTK's +naming for the Visible Woman, the Visible Human Project female dataset, which +is the basis for the public-domain identification. +""" + +[[dataset]] +name = "warping_spheres" +title = "Warping spheres VTKHDF" +description = "Partitioned dataset of two warping spheres with spatial and temporal data, in the VTKHDF format." +path = ["warping_spheres/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "verified" +origin_url = "https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/warping_spheres.vtkhdf" +origin_title = "VTK Examples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." + +[[dataset]] +name = "washington_bust" +title = "George Washington bust" +description = "Photogrammetric scan of the marble bust of George Washington, a circa-1819 copy after the 1792 original by Giuseppe Ceracchi, with diffuse, normal and ambient-occlusion textures." +path = ["washington_bust/**"] +SPDX-License-Identifier = "CC0-1.0" +SPDX-FileCopyrightText = ["Smithsonian Institution"] +provenance = "verified" +origin_url = "https://npg.si.edu/object/npg_NPG.70.4" +origin_title = "Smithsonian National Portrait Gallery, George Washington (NPG.70.4)" +collection = "smithsonian-open-access" +attribution = "Bust of George Washington, Smithsonian National Portrait Gallery (NPG.70.4), 3D scan released under CC0 Public Domain. Attribution is a courtesy, not a requirement." +redistributed_from = ["https://sketchfab.com/3d-models/george-washington-bust-23630d35f855409e9c00c810b1416c71"] +notes = """ +The Smithsonian release states: "This media file is in the public domain +(free of copyright restrictions). You can copy, modify, and distribute this +work without contacting the Smithsonian." The Open Access API record for +NPG.70.4 carries access CC0 and a 3D package (3d_voyager +d8c63fde-4ebc-11ea-b77f-2e728ce88125); the Sketchfab copy is published by +the Smithsonian Institution account (@Smithsonian) under CC0 Public Domain +and names NPG.70.4. + + curl -sS 'https://api.si.edu/openaccess/api/v1.0/search?q=NPG.70.4&api_key=DEMO_KEY' +""" + +[[dataset]] +name = "wavy_pvd" +title = "Wavy surface animation" +description = "Fifteen-frame animation of a radial sine surface on an 80 by 80 structured grid, in ParaView PVD collection format." +path = ["PVD/wavy.zip"] +SPDX-License-Identifier = "Apache-2.0" +SPDX-FileCopyrightText = ["2021 Matthew Flamm"] +provenance = "verified" +origin_url = "https://github.com/pyvista/data/pull/3" +origin_title = "pyvista/data pull request 3" +authors = ["Matthew Flamm"] +attribution = "Wavy surface frames generated with PyVista by Matthew Flamm for pyvista/data pull request 3, Apache License 2.0." +notes = """ +Generated data, not ParaView's. Matthew Flamm made it for this repository +and submitted it in pyvista/data pull request 3 (August 2021, commit +8b97212) for pyvista/pyvista#1564; the pull request publishes the PyVista +script that wrote the frames, a `pv.StructuredGrid` over +`numpy.arange(-10, 10, 0.25)` in x and y with `z = sin(r + phase)` sampled +at fifteen phases, and says the `wavy.pvd` file was written by hand. The +grids here are 80 by 80 with a single `z` point array ranging over -1 to 1, +which is what that script produces. The pull request states no licence of +its own, so the contribution is recorded under the repository's Apache-2.0 +(its `LICENSE`), the basis being that it was made for this repository and +submitted with no other terms. + +It sat under `PVD/` beside the files taken from ParaView and was covered by +their entry until the two were separated. +""" + +[[dataset]] +name = "whole_body_ct" +title = "TotalSegmentator whole body CT" +description = "Two whole-body CT scans with segmentation label maps for 117 anatomical structures, one female and one male subject, at full and reduced resolution. `colors.py` holds the label colour lookup." +path = ["whole_body_ct/**"] +SPDX-License-Identifier = "CC-BY-4.0" +provenance = "verified" +origin_url = "https://zenodo.org/records/10047292" +origin_title = "TotalSegmentator dataset v2.0.1, Zenodo" +authors = ["Jakob Wasserthal"] +attribution = "TotalSegmentator dataset, Wasserthal et al., licensed under CC BY 4.0." +modified = true +modification = "Resampled variants were produced by downsampling with anti-aliasing. Label colours in `colors.py` were generated by the 3D Slicer TotalSegmentator extension." +references = [ + { citation = "Wasserthal, J. et al. \"TotalSegmentator: Robust Segmentation of 104 Anatomic Structures in CT Images.\" Radiology: Artificial Intelligence, 2023.", doi = "10.1148/ryai.230024" }, + { citation = "Wasserthal, J. et al. TotalSegmentator dataset, version 2.0.1. Zenodo, 2023.", doi = "10.5281/zenodo.10047292" }, +] + +[[dataset]] +name = "wintersun" +title = "Winter sun environment image" +description = "Equirectangular JPEG of a winter morning sky, a reduced version of the GiantCowFilms 'Winter Sun - Morning' HDR, used as a sphere-map texture." +path = ["wintersun.jpg"] +SPDX-License-Identifier = "CC0-1.0" +provenance = "inferred" +origin_url = "https://giantcowfilms.com/2015/11/23/hdr-morning-sun-winter/" +origin_title = "GiantCowFilms, HDR: Winter Sun - Morning" +collection = "vtk-examples" +authors = ["GiantCowFilms"] +attribution = "GiantCowFilms, https://giantcowfilms.com/. Attribution is a courtesy, not a requirement under CC0." +redistributed_from = [ + "https://gitlab.kitware.com/vtk/vtk/-/commit/52bcf1eed70f2399780eb2f1cd7395e77ab8beea", + "https://github.com/lorensen/VTKExamples/blob/master/src/Testing/Data/wintersun.jpg", +] +modified = true +modification = "Reduced-resolution 8-bit JPEG of the original HDR, made by David DeMarle for VTK's OSPRay path tracer background test." +notes = """ +Byte-identical to VTK's `Testing/Data/wintersun.jpg` (content link +`wintersun.jpg.sha512`, sha512 beginning 10c1fa80255d). VTK commit +52bcf1eed7 (David E. DeMarle, 7 April 2017) credits GiantCowFilms.com for +the image, says the site's images are CC-0 licensed and that this is a +reduced version; the GiantCowFilms post states "Licence: Creative Commons +0/Public Domain". Inferred because the reduced file cannot be byte-matched +to the HDR and the GiantCowFilms page does not name VTK. Bill Lorensen +copied it into `lorensen/VTKExamples` on 18 March 2018 (commit b612981962) +for the MarbleShader example, and the April 2019 import of that repository +brought it here. +""" + +[[dataset]] +name = "woman" +title = "Woman figure" +description = "Scan of a standing figure of a woman." +path = ["woman.stl"] +SPDX-License-Identifier = "LicenseRef-Unknown" +provenance = "inferred" +origin_url = "http://web.archive.org/web/20190819171909/https://www.laserdesign.com/sample-files/full-body-scan-with-texture/" +origin_title = "Laser Design sample files, Full Body Scan with Texture" +collection = "laser-design" +redistributed_from = ["http://3dgallery.gks.com/2012/bodyscan/bodyscan3.php"] +notes = """ +Laser Design Inc. published this scan on its "Full Body Scan with Texture" +sample page (scanner: Artec Eva), with the files hosted at +3dgallery.gks.com/2012/bodyscan/ (bodyscan.php to bodyscan4.php); GKS +Services Corp. is a subsidiary of Laser Design Inc. +(https://www.laserdesign.com/30-years-of-scanning-excellence-with-gks-services-corp/). +pyvista's loader cited that page and fetched `woman.stl` from bodyscan3.php +there until the gallery went offline; pyvista/pyvista#1226 (merged +2021-03-09, "3dgallery.gks.com is down, probably for good") moved the file +here the same day (commit 792cd84). The page, +https://www.laserdesign.com/sample-files/full-body-scan-with-texture/, now +returns 404, so the origin link is the Wayback Machine capture of it. +The STL header reads "File exported by Artec Group 3D Scanning Solutions". +No byte comparison is possible because the Wayback Machine has no capture of +3dgallery.gks.com/2012/bodyscan/, so the origin is inferred from the loader's +record rather than proven by bytes. + +The archive page states no licence of its own, and the site footer asserts +"(c) 2026 CyberOptics Corporation. All Rights Reserved." + +The "Terms of Use" its footer links to, at cyberoptics.com, grants permission +"to temporarily download one copy of the materials ... for personal, +non-commercial transitory viewing only", and says that under that licence you +may not "use the materials for any commercial purpose", or "transfer the +materials to another person or 'mirror' the materials on any other server". +Whether that boilerplate is meant to govern the sample downloads is arguable, +but no grant of redistribution rights exists anywhere on the site, so the +terms are recorded as undetermined. Downstream users, especially commercial +ones, should contact Laser Design or substitute another mesh. +""" + +[[dataset]] +name = "yinyang" +title = "Yin-yang binary image" +description = "Binary image of the yin-yang symbol, used to demonstrate image filters." +path = ["Yinyang.png", "yinyang/**"] +SPDX-License-Identifier = "Apache-2.0" +provenance = "inferred" +origin_url = "https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/Yinyang.png" +origin_title = "VTK Examples" +collection = "vtk-examples" +attribution = "VTK Examples, licensed under the Apache License 2.0." +notes = """ +`Yinyang.png` came in with the April 2019 VTK Examples import (same git blob +d29c80f3e508 as `src/Testing/Data/Yinyang.png` in lorensen/VTKExamples); +`yinyang/Yinyang.png` is a byte-identical second copy added in July 2025 +with the commit message "Add yinyang binary image (#58)". Bill Lorensen +added the image to lorensen/VTKExamples in his bulk "ENH: Move gh-pages to +master" commit of 15 May 2017 (9360a8b539) without stating who made it, so +the repository licence is recorded and the original author could not be +established. +""" diff --git a/Data/Bunny.vtp.license b/Data/Bunny.vtp.license deleted file mode 100644 index 3d75ebd8..00000000 --- a/Data/Bunny.vtp.license +++ /dev/null @@ -1,18 +0,0 @@ -Stanford Bunny (Bunny.vtp) — decimated / re-exported version of bunny.ply. - -Source: Stanford 3D Scanning Repository -URL: http://graphics.stanford.edu/data/3Dscanrep/ - -Reference: - Turk, G. and Levoy, M. "Zippered Polygon Meshes from Range Images." - Proceedings of SIGGRAPH '94, ACM, pp. 311-318, 1994. - -See bunny.ply.license for the full Stanford conditions of use. In summary: -free redistribution and research use are explicitly permitted; commercial -use in a product-for-sale requires permission from the Stanford Computer -Graphics Laboratory; the bunny is explicitly carved out of Stanford's -cultural-sensitivity restrictions. - -Required acknowledgement: credit the Stanford Computer Graphics Laboratory. - -SPDX-License-Identifier: LicenseRef-StanfordScanningRepository diff --git a/Data/DICOM_Stack/CITATION.txt b/Data/DICOM_Stack/CITATION.txt deleted file mode 100644 index 047cfaaf..00000000 --- a/Data/DICOM_Stack/CITATION.txt +++ /dev/null @@ -1,16 +0,0 @@ -Attribution should include references to the following citations: - -Data Citation -============= - -National Cancer Institute Clinical Proteomic Tumor Analysis Consortium (CPTAC). (2018). Radiology Data from the Clinical Proteomic Tumor Analysis Consortium Sarcomas [CPTAC-SAR] collection [Data set]. The Cancer Imaging Archive. DOI: 10.7937/TCIA.2019.9bt23r95 - -Acknowledgement -=============== - -The CPTAC program requests that publications using data from this program include the following statement: “Data used in this publication were generated by the National Cancer Institute Clinical Proteomic Tumor Analysis Consortium (CPTAC).” - -TCIA Citation -============= - -Clark K, Vendt B, Smith K, Freymann J, Kirby J, Koppel P, Moore S, Phillips S, Maffitt D, Pringle M, Tarbox L, Prior F. The Cancer Imaging Archive (TCIA): Maintaining and Operating a Public Information Repository, Journal of Digital Imaging, Volume 26, Number 6, December, 2013, pp 1045-1057. doi: 10.1007/s10278-013-9622-7 \ No newline at end of file diff --git a/Data/DICOM_Stack/LICENSE.txt b/Data/DICOM_Stack/LICENSE.txt deleted file mode 100644 index 4019b986..00000000 --- a/Data/DICOM_Stack/LICENSE.txt +++ /dev/null @@ -1,20 +0,0 @@ -License - -The CPTAC-SAR collection is distributed under the Creative Commons Attribution 3.0 Unported License (http://creativecommons.org/licenses/by/3.0/). -By downloading the data, you agree to abide by terms of this license. - -_____________________________ - -Data Usage Policy - -Any user accessing TCIA data must agree to: -- Not use the requested datasets, either alone or in concert with any other information, to identify or contact individual participants from whom data and/or samples were collected and follow all other conditions specified in the TCIA Site Disclaimer. Approved Users also agree not to generate and use information (e.g., facial images or comparable representations) in a manner that could allow the identities of research participants to be readily ascertained. These provisions do not apply to research investigators operating with specific IRB approval, pursuant to 45 CFR 46, to contact individuals within datasets or to obtain and use identifying information under an IRB-approved research protocol. All investigators including any Approved User conducting “human subjects research” within the scope of 45 CFR 46 must comply with the requirements contained therein. - -- Acknowledge in all oral or written presentations, disclosures, or publications the specific dataset(s) or applicable accession number(s) and the NIH-designated data repositories through which the investigator accessed any data. Citation guidelines for doing this are outlined below. - -- If you are considering mirroring a copy of our publicly available datasets or providing direct access to any of the TCIA data via another tool or website using the REST API (https://wiki.cancerimagingarchive.net/x/NIIiAQ) please review our Data Analysis Centers (DACs) page (https://wiki.cancerimagingarchive.net/x/x49XAQ) for more information. DACs must provide attribution and links back to this TCIA data use policy and must require downstream users to do the same. - -The summary page for every TCIA dataset includes a Citations & Data Usage Policy tab. Please consult the Citation & Data Usage Policy for each Collection before using them. -- Most data are freely available to browse, download, and use for commercial, scientific and educational purposes as outlined in the Creative Commons Attribution 3.0 Unported License or the Creative Commons Attribution 4.0 International License. In rare circumstances commercial use may be prohibited using Attribution-NonCommercial 3.0 Unported (CC BY-NC 3.0) or Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0). - -- Most data are immediately accessible and do not require account registration. A small subset of collections do require registration and special permission to gain access. Refer to the "Access" column on https://www.cancerimagingarchive.net/collections/ for more details. \ No newline at end of file diff --git a/Data/EnSight/CylinderCrossflow/README.md b/Data/EnSight/CylinderCrossflow/README.md deleted file mode 100644 index 77bda2fa..00000000 --- a/Data/EnSight/CylinderCrossflow/README.md +++ /dev/null @@ -1 +0,0 @@ -This dataset is from a 2D steady-state simulation of a cylinder in crossflow. The Reynolds number is 35, which exhibits two downstream vortices. Pressure, velocity, and vorticity magnitude are available. diff --git a/Data/ExportBunny.vtp.license b/Data/ExportBunny.vtp.license deleted file mode 100644 index 15d68893..00000000 --- a/Data/ExportBunny.vtp.license +++ /dev/null @@ -1,9 +0,0 @@ -Stanford Bunny (ExportBunny.vtp) — derived from bunny.ply. - -See bunny.ply.license for the full Stanford Computer Graphics Laboratory -conditions of use that apply to this file. - -Source: Stanford 3D Scanning Repository -URL: http://graphics.stanford.edu/data/3Dscanrep/ - -SPDX-License-Identifier: LicenseRef-StanfordScanningRepository diff --git a/Data/ExportBunny/LICENSE b/Data/ExportBunny/LICENSE deleted file mode 100644 index 6ebd4b0a..00000000 --- a/Data/ExportBunny/LICENSE +++ /dev/null @@ -1,27 +0,0 @@ -Stanford Bunny — time-series export (ExportBunny_0.vtp through ExportBunny_63.vtp) - -All files in this directory are derived from the Stanford Bunny model from -the Stanford 3D Scanning Repository. - -Source: Stanford 3D Scanning Repository -URL: http://graphics.stanford.edu/data/3Dscanrep/ - -Reference: - Turk, G. and Levoy, M. "Zippered Polygon Meshes from Range Images." - Proceedings of SIGGRAPH '94, ACM, pp. 311-318, 1994. - -Stanford's conditions of use: - You are welcome to use the data and models for research purposes. You - are also welcome to mirror or redistribute them for free. Such models - or images are not to be used for commercial purposes, nor should they - appear in a product for sale (with the exception of scholarly journals - or books), without permission from the Stanford Computer Graphics - Laboratory. - - The bunny is explicitly exempted from Stanford's cultural-sensitivity - restrictions: "You can do anything you want to the Stanford bunny or - the armadillo." - -Required acknowledgement: credit the Stanford Computer Graphics Laboratory. - -SPDX-License-Identifier: LicenseRef-StanfordScanningRepository diff --git a/Data/Nefertiti.obj.zip.license b/Data/Nefertiti.obj.zip.license deleted file mode 100644 index dc579caa..00000000 --- a/Data/Nefertiti.obj.zip.license +++ /dev/null @@ -1,22 +0,0 @@ -Nefertiti bust 3D scan (Nefertiti.obj.zip) - -WARNING: NON-COMMERCIAL LICENSE. -This dataset is not compatible with BSD-licensed or other permissive -redistribution by downstream commercial users. - -This file is "The Other Nefertiti" (2016) by Nora Al-Badri and -Jan Nikolai Nelles, released under Creative Commons -Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). - -See nefertiti.ply.zip.license for full context. The official Neues Museum -scan released in 2019 is also non-commercial (CC BY-NC-SA 3.0 DE); no -CC0 or permissively licensed Nefertiti scan is currently known to exist. - -Original project: https://nefertitihack.alloversky.com/ - -Required attribution: "Nora Al-Badri and Jan Nikolai Nelles, -The Other Nefertiti (2016), CC BY-NC-SA 4.0." - -License URL: https://creativecommons.org/licenses/by-nc-sa/4.0/ - -SPDX-License-Identifier: CC-BY-NC-SA-4.0 diff --git a/Data/PVD/paraview/LICENSE_PARAVIEW b/Data/PVD/paraview/LICENSE_PARAVIEW deleted file mode 100644 index 02dfc06b..00000000 --- a/Data/PVD/paraview/LICENSE_PARAVIEW +++ /dev/null @@ -1,31 +0,0 @@ -Copyright (c) 2005-2008 Sandia Corporation, Kitware Inc. -Sandia National Laboratories, New Mexico PO Box 5800 Albuquerque, NM 87185 -Kitware Inc., 28 Corporate Drive, Clifton Park, NY 12065, USA - -Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive license -for use of this work by or on behalf of the U.S. Government. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -* Redistributions of source code must retain the above copyright notice, this list - of conditions and the following disclaimer. - -* Redistributions in binary form must reproduce the above copyright notice, this - list of conditions and the following disclaimer in the documentation and/or - other materials provided with the distribution. - -* Neither the name of Kitware nor the names of any contributors may be used to - endorse or promote products derived from this software without specific prior - written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND -ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY -DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES -(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON -ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/Data/ParallelExodus/LICENSE b/Data/ParallelExodus/LICENSE deleted file mode 100644 index c8a01791..00000000 --- a/Data/ParallelExodus/LICENSE +++ /dev/null @@ -1,46 +0,0 @@ -Can being crushed - -Files: - can.e.4.0 - can.e.4.1 - can.e.4.2 - can.e.4.3 - -Collection: VTK Data -Source URLs (retrieve with `wget -O FILE URL`): - can.e.4.0: https://www.vtk.org/files/ExternalData/SHA512/e9fad7b012901a7757d2d446a8057598b6b99824cd9d16670ff811e62b8b48c0dc723896b5e66317ea43cc768796060e327afea9204dcc5d6ab22a3bdf90fd20 - can.e.4.1: https://www.vtk.org/files/ExternalData/SHA512/93575fefa07767cb8e56c7f758c72e9d30909292fcaddd8723bdca0c77864382b6087c194aae151a4c5a1157e4cf9bb464a4e2d173e91012c22ffbc84d370ce1 - can.e.4.2: https://www.vtk.org/files/ExternalData/SHA512/4af0031825cda782d4bac8451d416891c14609c4134b6c1d270821bab8827843070fbfd74064b5db4da60128dc11b2209447754908dc3d949ace5034fa061a7e - can.e.4.3: https://www.vtk.org/files/ExternalData/SHA512/9f6827262107bfff45d660ed6a5d914e532318b86909ae4d68cc4355114b263e1114a3d80155bc6bcc86ee5ece6d90e25db62a001cbedc836de190051c21ed9f - -License: - -Copyright (c) 1993-2015 Ken Martin, Will Schroeder, Bill Lorensen -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - - * Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation - and/or other materials provided with the distribution. - - * Neither name of Ken Martin, Will Schroeder, or Bill Lorensen nor the names - of any contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR -ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -SPDX-License-Identifier: BSD-3-Clause diff --git a/Data/Tango/README.VTK.txt b/Data/Tango/README.VTK.txt deleted file mode 100644 index 654eb0e8..00000000 --- a/Data/Tango/README.VTK.txt +++ /dev/null @@ -1,15 +0,0 @@ -This directory contains an image of icons from the Tango Free Desktop Project and -it's subset Tango Icon Library version 0.8.1. The individual icons were montaged into -a single image to be used for testing of the vtkIconGlyphFilter class. - -We would like to thank the Tango Free Desktop team for distributing these icons. -http://tango.freedesktop.org/Tango_Icon_Library - -Tango Free Desktop and Tango Icon Library are distributed under the Creative Commons -Share Alike license. -http://creativecommons.org/licenses/by-sa/2.5/ - -Modifications -------------- -We have taken a subset of the icons distributed in the Tango Icon Library and montaged -them into a single image. diff --git a/Data/TeapotPoints.txt.license b/Data/TeapotPoints.txt.license deleted file mode 100644 index 6d129f7b..00000000 --- a/Data/TeapotPoints.txt.license +++ /dev/null @@ -1,17 +0,0 @@ -Utah Teapot control points (TeapotPoints.txt) - -Raw Bezier control-point coordinates for the Utah Teapot, originally -modeled by Martin Newell at the University of Utah in 1975. - -See teapot.g.license and teapot.wrl.license for the full licensing -context. In summary: no formal license was ever issued for the original -Newell dataset, but the model has been freely distributed in computer -graphics software for 50 years and is conventionally treated as public -domain. - -Recommended attribution: "Utah Teapot, originally modeled by Martin -Newell, University of Utah, 1975." - -Background: https://en.wikipedia.org/wiki/Utah_teapot - -SPDX-License-Identifier: LicenseRef-UtahTeapot-PublicDomainByConvention diff --git a/Data/Victorian_Goblet_face_illusion/License b/Data/Victorian_Goblet_face_illusion/License deleted file mode 100644 index 5687851f..00000000 --- a/Data/Victorian_Goblet_face_illusion/License +++ /dev/null @@ -1,2 +0,0 @@ -Victorian Goblet face illusion -by Alzibiff is licensed under the Creative Commons - Attribution license. diff --git a/Data/Viewpoint/README b/Data/Viewpoint/README deleted file mode 100644 index 81f446e0..00000000 --- a/Data/Viewpoint/README +++ /dev/null @@ -1,9 +0,0 @@ -Datasets provided by Viewpoint DataLabs International, Inc. -625 South State Street -Orem, Utah 84058 -1 801 229 3000 - -http://www.viewpoint.com - -These folks have a massive collection of high quality datasets for sale. -They also host the avalon repository of free datasets. diff --git a/Data/bunny.ply.license b/Data/bunny.ply.license deleted file mode 100644 index 62397334..00000000 --- a/Data/bunny.ply.license +++ /dev/null @@ -1,23 +0,0 @@ -Stanford Bunny (bunny.ply) - -Source: Stanford 3D Scanning Repository -URL: http://graphics.stanford.edu/data/3Dscanrep/ - -Reference: - Turk, G. and Levoy, M. "Zippered Polygon Meshes from Range Images." - Proceedings of SIGGRAPH '94, ACM, pp. 311-318, 1994. - -Stanford's conditions of use: - You are welcome to use the data and models for research purposes. You are - also welcome to mirror or redistribute them for free. Such models or - images are not to be used for commercial purposes, nor should they appear - in a product for sale (with the exception of scholarly journals or books), - without permission from the Stanford Computer Graphics Laboratory. - - The bunny and armadillo are explicitly exempted from the "inappropriate - uses" restrictions: "You can do anything you want to the Stanford bunny - or the armadillo." - -Required acknowledgement: credit the Stanford Computer Graphics Laboratory. - -SPDX-License-Identifier: LicenseRef-StanfordScanningRepository diff --git a/Data/cad/4947746/LICENSE.txt b/Data/cad/4947746/LICENSE.txt deleted file mode 100644 index 0dd99e16..00000000 --- a/Data/cad/4947746/LICENSE.txt +++ /dev/null @@ -1,19 +0,0 @@ -PiBoy DMG Custom Rear Case With Ventilation (Vented_Rear_Case_With_Pi_Supports.vtp) - -Original source: https://www.thingiverse.com/thing:4947746 -Creator: downerhouse (Thingiverse) - -License: Creative Commons Attribution 4.0 International (CC BY 4.0) -License URL: https://creativecommons.org/licenses/by/4.0/ - -Required attribution: - "PiBoy DMG Custom Rear Case With Ventilation by downerhouse - (https://www.thingiverse.com/thing:4947746), licensed under CC BY 4.0." - -Note: The specific Creative Commons variant on the Thingiverse page has -not been re-verified from an independent source at the time this file -was written; the CC BY 4.0 designation was inherited from prior pyvista -documentation. If redistributing in a commercial product, confirm the -license variant directly from the Thingiverse page. - -SPDX-License-Identifier: CC-BY-4.0 diff --git a/Data/cad/4947746/README.md b/Data/cad/4947746/README.md deleted file mode 100644 index 47db1d9c..00000000 --- a/Data/cad/4947746/README.md +++ /dev/null @@ -1,3 +0,0 @@ -Custom rear case for PiBoy DMG with significant additional ventilation to stock case. - -This thing was created by Thingiverse user downerhouse, and is licensed under cc. diff --git a/Data/cow/LICENSE b/Data/cow/LICENSE deleted file mode 100644 index a6ff86ea..00000000 --- a/Data/cow/LICENSE +++ /dev/null @@ -1,14 +0,0 @@ -SPDX-License-Identifier: CC0-1.0 - -The original procedural cow dataset and accompanying generation code in this -directory are made available under Creative Commons CC0 1.0 Universal. - -License statement and legal text: -https://creativecommons.org/publicdomain/zero/1.0/legalcode - -Original source: the accompanying generate_cow.py, created with assistance from -OpenAI Codex on 2026-09-06 for https://github.com/pyvista/data. -This is generated geometry with procedural vertex colors, not an imported mesh -or a redistributed photograph or image texture. - -Required attribution: none. diff --git a/Data/cow/README.md b/Data/cow/README.md deleted file mode 100644 index 24c5567b..00000000 --- a/Data/cow/README.md +++ /dev/null @@ -1,64 +0,0 @@ -# Procedural cow - -`cow.pv` is a colored cow with 300,000 triangles, rounded cloven hooves with flat -soles, and an opaque, tapered approximation of the tail hair. It is one connected, -watertight `pyvista.PolyData` surface, 200 mm long, with Z up. - -Geometry and appearance are contained in this **single pyvista-zstd file**. The -black-and-white coat and other colors are embedded as the active `RGB` uint8 point -array. There is no external texture image. - -```python -import pyvista as pv - -cow = pv.read("cow.pv") -cow.plot(scalars="RGB", rgb=True, smooth_shading=True) -``` - -Reading the file requires `pyvista-zstd`, available through `pyvista[io]`. - -## Reproduce - -From this directory, with `uv` installed: - -```sh -uv run --locked generate_cow.py -``` - -The script writes only `cow.pv` by default. The dependency lock and Python version -file define the tested environment. Generation uses NumPy, SciPy, PyVista, and -pyvista-zstd; it does not require Trimesh. No downloaded geometry or textures are -used during generation. - -Optional review renders show the isolated hoof from three directions, its soles, -its connection to the lower leg, all four feet cropped from the final cow, and the -full colored model reloaded from disk: - -```sh -uv run --locked generate_cow.py --preview-dir /tmp/cow-preview -``` - -The same hoof construction is used for the isolated views and all four feet. -Edit `HoofConfig` in the script to adjust the hoof dimensions. `--triangles`, -`--length-mm`, and `--voxel-size` control mesh budget, export scale, and the source -field resolution. The default field uses 55.25 million float32 samples (221 MB); -temporary arrays and rendering require additional memory. Each primitive updates -only its local bounding box. - -Every run checks the triangle count, closed manifold topology, face winding, one -connected component, nondegenerate faces, positive volume, and four broad coplanar -soles. It then reloads the `.pv` and requires exact equality of point coordinates, -triangle connectivity, and embedded RGB values. The active color array is also -checked. Independent rebuilds produced identical points, triangle connectivity, -and RGB values. The compressed files can differ because the format records -process-specific array identifiers. - -## Source and license - -This is an original procedural model generated with assistance from OpenAI Codex -on 2026-09-06. Its source is the accompanying `generate_cow.py`, prepared for the -[PyVista data repository](https://github.com/pyvista/data). The hoof outline was -visually compared with a [photograph of a cow hoof](https://www.schaette.de/ratgeber/klauengesundheit-auch-ein-stoffwechselthema); -no photograph data is included in the geometry or color array. - -The model and generation code are provided under CC0-1.0. See `LICENSE`. diff --git a/Data/cubemapDebug/README.md b/Data/cubemapDebug/README.md deleted file mode 100644 index cdd6d3d0..00000000 --- a/Data/cubemapDebug/README.md +++ /dev/null @@ -1,6 +0,0 @@ -## Debug Cubemap - -Debug cubemap textures from: -https://github.com/BabylonJS/Babylon.js/tree/master/packages/tools/playground/public/textures/cubemapDebug - -Licensed under Apache2. diff --git a/Data/cubemap_park/README.md b/Data/cubemap_park/README.md deleted file mode 100644 index d3af76b6..00000000 --- a/Data/cubemap_park/README.md +++ /dev/null @@ -1,19 +0,0 @@ -Author -====== - -This the work of Emil Persson, aka Humus. -http://www.humus.name - -Downloaded from http://www.humus.name/index.php?page=Textures -by David Eck, and converted to a smaller 512x512 size for use -with WebGL in his free, on-line textbook at -http://math.hws.edu/graphicsbook - - -License -======= - -This work is licensed under a Creative Commons Attribution 3.0 Unported License. -http://creativecommons.org/licenses/by/3.0/ - -https://math.hws.edu/eck/cs424/f21/lab12/index.html diff --git a/Data/cubemap_space/README.md b/Data/cubemap_space/README.md deleted file mode 100644 index 51914efa..00000000 --- a/Data/cubemap_space/README.md +++ /dev/null @@ -1,30 +0,0 @@ -### Generating this Cubemap - -These cubemaps were generated by downloading the 4k and 16k images from: -https://svs.gsfc.nasa.gov/4851 - -Converting from exr to jpg with: - -```py -import os -os.environ["OPENCV_IO_ENABLE_OPENEXR"]="1" - -import numpy as np -import cv2 -im=cv2.imread("starmap_2020_16k_gal.exr",-1) -im=im*65535//8 # or 64 for the 4k -im[im>65535]=65535 - -cv2.imwrite('starmap_2020_16k_gal.jpg', im, [int(cv2.IMWRITE_JPEG_QUALITY), 50]) -``` - -And converting to a cubemap using: -https://jaxry.github.io/panorama-to-cubemap/ - - -### Acknowledgement -NASA/Goddard Space Flight Center Scientific Visualization Studio. Gaia DR2: -ESA/Gaia/DPAC. Constellation figures based on those developed for the IAU by -Alan MacRobert of Sky and Telescope magazine (Roger Sinnott and Rick Fienberg). - -Thank you NASA and [@jaxry](https://github.com/jaxry) for being awesome! diff --git a/Data/emg3d/dipole/README.md b/Data/emg3d/dipole/README.md deleted file mode 100644 index 004629d4..00000000 --- a/Data/emg3d/dipole/README.md +++ /dev/null @@ -1,39 +0,0 @@ -### Simple Dipole Example - -The datasets here are generated using [emg3d](https://github.com/emsig/emg3d) from the [Minimum Example](https://emsig.xyz/emg3d-gallery/gallery/tutorials/minimum_example.html): - -```py -import emg3d -import pyvista as pv - -src_coo = (0, 0, 0, 0, 0) # (x, y, z, azimuth, elevation) -frequency = 160 -source = emg3d.TxElectricDipole(coordinates=src_coo) -grid = emg3d.construct_mesh( - center=src_coo[:3], # Center of wanted grid - frequency=frequency, # Frequency we will use the grid for - properties=2, # Reference resistivity - domain=[-800, 800], # Domain in which we want precise results -) -model = emg3d.Model(grid, property_x=1.5, property_y=1.8, property_z=3.3) -efield = emg3d.solve_source(model=model, source=source, frequency=20, verb=4) - -# save the electromagnetic field -shape = efield.fx.shape -efield_grid = pv.UniformGrid(dims=shape) -efield_grid['efield_fx'] = np.abs(efield.fx.ravel('F')).astype(np.float32) -efield_grid['efield_fy'] = np.abs(efield.fy.ravel('F')).astype(np.float32) -efield_grid['efield_fz'] = np.abs(efield.fz.ravel('F')).astype(np.float32) -efield_grid.save('efield.vtk') - - -# save the magnetic field -hfield = emg3d.get_magnetic_field(model=model, efield=efield) - -hfield_grid = pv.UniformGrid(dims=hfield.fx.shape) -hfield_grid['hfield_fx'] = np.abs(hfield.fx.ravel('F')).astype(np.float32) -hfield_grid['hfield_fy'] = np.abs(hfield.fy.ravel('F')).astype(np.float32) -hfield_grid['hfield_fz'] = np.abs(hfield.fz.ravel('F')).astype(np.float32) -hfield_grid.save('hfield.vtk') - -``` diff --git a/Data/fea/aero_bracket/README.md b/Data/fea/aero_bracket/README.md deleted file mode 100644 index 38634295..00000000 --- a/Data/fea/aero_bracket/README.md +++ /dev/null @@ -1,29 +0,0 @@ -### Aero Bracket - -This dataset was downloaded from the [public datasets](https://www.simscale.com/projects/) from [SimScale](https://www.simscale.com/). - -![Aero Bracket](simscale-bracket.png) - -This project demonstrates the static stress analysis of three aircraft engine -bearing bracket models considering both linear and nonlinear material -definition. The models are tested with horizontal and vertical loading -conditions as provided on the [GrabCAD - Airplane Bearing Bracket Challenge](https://grabcad.com/challenges/airplane-bearing-bracket-challenge/entries). - - -#### Data Acquisition and Reduction - -The static stress analysis of the bracket was compressed with: - -```py -import pyvista -import numpy as np - -ii = 1 -mesh = pyvista.read(f'./sim_{ii}/sim_{ii}_0_0.vtu') -mesh.points = mesh.points.astype(np.float32) -mesh.cell_data.clear() -for key in mesh.point_data.keys(): - mesh[key] = mesh[key].astype(np.float32) - -mout = pyvista.read('aero_bracket.vtu') -``` diff --git a/Data/fea/hertzian_contact_cylinder/README.md b/Data/fea/hertzian_contact_cylinder/README.md deleted file mode 100644 index bdec77db..00000000 --- a/Data/fea/hertzian_contact_cylinder/README.md +++ /dev/null @@ -1,14 +0,0 @@ -### Cylindrical Hertzian Contact on a Plane - -This dataset was generated from OnScale Solve and depicts the finite element -analysis solution to a cylinder in contact with a plane. - -Dataset originally from several `vtu` files with a `vtup` header in `Hertzian_cylinder_on_plate.zip` and merged to a single dataset with: - -```py -import pyvista -mesh = pv.read(os.path.join('bfac9fd1-e982-4825-9a95-9e5d8c5b4d3e_result_1.pvtu')) - -cleaned = mesh.clean() -cleaned.save('hertzian_contact_cylinder_plane.vtu') -``` diff --git a/Data/fea/kiefer/README.md b/Data/fea/kiefer/README.md deleted file mode 100644 index 0ba5ed25..00000000 --- a/Data/fea/kiefer/README.md +++ /dev/null @@ -1,39 +0,0 @@ -### FEA DataSet - Steve Kiefer - - -This dataset was obtained from Steve Kiefer's -[shkiefer/dash_vtk_unstructured](https://github.com/shkiefer/dash_vtk_unstructured) -repository, which is referenced by his Medium article [3D mesh models in the browser using python & dash_vtk](https://towardsdatascience.com/3d-mesh-models-in-the-browser-using-python-dash-vtk-e15cbf36a132). - - -Data was pulled and post-processed with: - -``` -git clone https://github.com/shkiefer/dash_vtk_unstructured -cd dash_vtk_unstructured -``` - -Run app, insert `grid.write('grid.vtu')` at [dash_vtk_unstructured.py Line 99](https://github.com/shkiefer/dash_vtk_unstructured/blob/24bdd651b7be83291421873efda66c0446f74e60/dash_vtk_unstructured.py#L99) - - -```py -import numpy as np -from pyvista import examples -import pyvista as pv -grid = pv.read('grid.vtu') -arr = grid.cell_data.pop('my_array') -grid.cell_data['Equivalent (von-Mises) Stress (psi)'] = arr.astype(np.float32) -grid.points = grid.points.astype(np.float32) -filename = -grid.save('~/data/Data/fea/kiefer/dataset.vtu') -``` - -#### PyVista - Load and Plot - -With `pyvista>=0.37.0`: - -```py -from pyvista import examples -mesh = examples.download_fea_bracket() -mesh.plot() -``` diff --git a/Data/fea/pump_bracket/README.md b/Data/fea/pump_bracket/README.md deleted file mode 100644 index 40cf111a..00000000 --- a/Data/fea/pump_bracket/README.md +++ /dev/null @@ -1,105 +0,0 @@ -### Pump Bracket - -This dataset was downloaded from the [public datasets](https://www.simscale.com/projects/) from [SimScale](https://www.simscale.com/). - -![Pump Bracket](pump-bracket.png) - - -#### Data Acquition and Reduction - -The [pump bracket project](https://www.simscale.com/projects/STR/bracket/) contains a modal analysis of the bracket. The result dataset was downloaded and the resuting file structure was: - -``` -$ unzip Bracket-Frequency_Analysis-Run_1-SOLUTION_FIELDS.zip -$ ls -R Bracket-Frequency_Analysis-Run_1-SOLUTION_FIELDS -``` - -``` -.: -case.pvd -sim_0 -sim_0.vtm -sim_1 -sim_1.vtm -sim_2 -sim_2.vtm -sim_3 -sim_3.vtm -sim_4 -sim_4.vtm -sim_5 -sim_5.vtm -sim_6 -sim_6.vtm -sim_7 -sim_7.vtm -sim_8 -sim_8.vtm -sim_9 -sim_9.vtm - -./sim_0: -sim_0_0_0.vtu - -./sim_1: -sim_1_0_0.vtu - -./sim_2: -sim_2_0_0.vtu - -./sim_3: -sim_3_0_0.vtu - -./sim_4: -sim_4_0_0.vtu - -./sim_5: -sim_5_0_0.vtu - -./sim_6: -sim_6_0_0.vtu - -./sim_7: -sim_7_0_0.vtu - -./sim_8: -sim_8_0_0.vtu - -./sim_9: -sim_9_0_0.vtu -``` - -Since the geometry is identical between each run, it was possible to reduce the -zipped dataset size from 109 MB to 34 MB while improving the load speed with: - -```py -import numpy as np -import pyvista as pv - -# load the geometry -ugrid_base = pv.read('./sim_1/sim_1_0_0.vtu') -ugrid_base.points = ugrid_base.points.astype(np.float32) -ugrid_base.clear_data() - -# populate the modal solution for each result -for ii in range(10): - ugrid = pv.read(f'./sim_{ii}/sim_{ii}_0_0.vtu') - ugrid_base[f'disp_{ii}'] = ugrid.point_data['displacement normalized'].astype(np.float32) - -# save -ugrid_base.save('pump_bracket.vtk') - -``` - -This file was subsequently zipped with: - -``` -zip pump_bracket.zip pump_bracket.vtk -``` - - -#### License - -Licensing for this dataset is granted to freely and without restriction -reproduce, distribute, publish according to the [SimScale Terms and -Conditions](https://www.simscale.com/terms-and-conditions/) diff --git a/Data/fvm/cooling_electronics/README.md b/Data/fvm/cooling_electronics/README.md deleted file mode 100644 index 0f6a80ff..00000000 --- a/Data/fvm/cooling_electronics/README.md +++ /dev/null @@ -1,38 +0,0 @@ -### Electronics Cooling Example Dataset - -This dataset comes from SimScale's [Thermal Management Tutorial: CHT Analysis of an Electronics Box](https://www.simscale.com/docs/tutorials/thermal-management-cht-analysis-electronics-box/). - -![alt text](screenshot.png) - -#### Data Setup - -Data was obtained from their public examples and post-processed from 400 MB (zipped) to around 50 MB zipped. - -```py -import pyvista as pv - -reader = pv.OpenFOAMReader('./case.foam') -reader.set_active_time_value(1000) -out = reader.read() - -comb = out.combine() - -ds = out[2:].copy() -ds[35] = ds[35][0].clip(normal='z', value=0.01) - -structure = ds.combine().extract_surface(pass_pointid=False, pass_cellid=False) -air = out[1][0] -air.cell_data.clear() -air.point_data.pop('p_rgh') - -# save -structure.save('structure.vtp') -air.save('air.vtu') -``` - - -#### License - -Licensing for this dataset is granted to freely and without restriction -reproduce, distribute, publish according to the [SimScale Terms and -Conditions](https://www.simscale.com/terms-and-conditions/) diff --git a/Data/fvm/turbo_incompressible/README.md b/Data/fvm/turbo_incompressible/README.md deleted file mode 100644 index 98715728..00000000 --- a/Data/fvm/turbo_incompressible/README.md +++ /dev/null @@ -1,9 +0,0 @@ -### Turbo-Incompressible Example -Data generated from public SimScale examples at [SimScale Project Library - -Turbo](https://www.simscale.com/projects/ayarnoz/turbo/) - -Licensing for this dataset is granted to freely and without restriction -reproduce, distribute, publish according to the [SimScale Terms and -Conditions](https://www.simscale.com/terms-and-conditions/) - -![alt text](flow.png) diff --git a/Data/gifs/README.md b/Data/gifs/README.md deleted file mode 100644 index 3c70b0d1..00000000 --- a/Data/gifs/README.md +++ /dev/null @@ -1,29 +0,0 @@ -## Sample GIFs - - -### `sample.gif` - -The `sample.gif` generated with: - -```py - -import pyvista - -filename = 'sample.gif' - -pl = pyvista.Plotter(window_size=(300, 200), off_screen=True) -pl.open_gif(filename, palettesize=16, fps=1) - -mesh = pyvista.Sphere() -opacity = mesh.points[:, 0] -opacity -= opacity.min() -opacity /= opacity.max() -for color in ['red', 'blue', 'green']: - pl.clear() - pl.background_color = 'w' - pl.add_mesh(mesh, color=color, opacity=opacity) - pl.camera_position = 'xy' - pl.write_frame() - -pl.close() -``` diff --git a/Data/grasshopper/README.md b/Data/grasshopper/README.md deleted file mode 100644 index f0413662..00000000 --- a/Data/grasshopper/README.md +++ /dev/null @@ -1,4 +0,0 @@ -### Grasshopper - -Original file from VTK Examples: -https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/grasshop.wrl \ No newline at end of file diff --git a/Data/great_white_shark/LICENSE b/Data/great_white_shark/LICENSE deleted file mode 100644 index b6bc3926..00000000 --- a/Data/great_white_shark/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -Great White Shark 3D model (greatWhite.stl) - -ORIGIN AND LICENSE NOT DEFINITIVELY ESTABLISHED. - -This file was imported from the VTK Examples test data repository: -https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/greatWhite.stl - -The STL file header indicates the mesh was reprocessed through netfabb -(http://www.netfabb.com) but embeds no origin or license metadata. -Upstream VTK Examples commits do not reference a license or source. - -A plausible candidate origin is Thingiverse thing:425437 by user shraska1 -("Great White Shark", uploaded August 2014), but this has not been -independently verified. - -Downstream users redistributing this file — especially in commercial -products — should consider: -- Contacting the VTK Examples maintainers - (https://gitlab.kitware.com/vtk/vtk-examples) to clarify provenance, or -- Substituting a shark model with a clearly documented license. - -SPDX-License-Identifier: LicenseRef-unknown diff --git a/Data/great_white_shark/README.md b/Data/great_white_shark/README.md deleted file mode 100644 index 5eaa8237..00000000 --- a/Data/great_white_shark/README.md +++ /dev/null @@ -1,4 +0,0 @@ -### Great White Shark - -Original file from VTK Examples: -https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/greatWhite.stl \ No newline at end of file diff --git a/Data/grey_nurse_shark/LICENSE b/Data/grey_nurse_shark/LICENSE deleted file mode 100644 index bfa6eb45..00000000 --- a/Data/grey_nurse_shark/LICENSE +++ /dev/null @@ -1,26 +0,0 @@ -Grey Nurse Shark 3D model (Grey_Nurse_Shark.stl) - -Original source: https://www.thingiverse.com/thing:137954 -Creator: rogerpeng1 (Thingiverse) -Uploaded: June 2013 - -License: Creative Commons Attribution-ShareAlike (CC BY-SA) -License URL: https://creativecommons.org/licenses/by-sa/3.0/ - -The specific Creative Commons version is not stated on the source page; -it is most likely CC BY-SA 3.0 given the June 2013 upload date (before -CC 4.0 was finalized in November 2013). - -IMPORTANT: CC BY-SA includes a ShareAlike clause. Derivative works must -be distributed under the same license. Downstream users who incorporate -this model into proprietary work may be encumbered by the ShareAlike -obligation. - -Required attribution: - "Grey Nurse Shark by rogerpeng1 (https://www.thingiverse.com/thing:137954), - licensed under CC BY-SA." - -Originally redistributed via VTK Examples: -https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/thingiverse/Grey_Nurse_Shark.stl - -SPDX-License-Identifier: CC-BY-SA-3.0 diff --git a/Data/grey_nurse_shark/README.md b/Data/grey_nurse_shark/README.md deleted file mode 100644 index 1579557f..00000000 --- a/Data/grey_nurse_shark/README.md +++ /dev/null @@ -1,4 +0,0 @@ -### Grey Nurse Shark - -Original file from VTK Examples: -https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/thingiverse/Grey_Nurse_Shark.stl \ No newline at end of file diff --git a/Data/hydrogen/README.md b/Data/hydrogen/README.md deleted file mode 100644 index 7ddc5a94..00000000 --- a/Data/hydrogen/README.md +++ /dev/null @@ -1,15 +0,0 @@ -### Model of Probability Density Of The Hydrogen Atom Orbital 3d - -Dataset originally obtained from [hydrogen.vtk](https://www.it.uu.se/edu/course/homepage/vetvis/ht11/ComputerExercises/data/a1/hydrogen.vtk) - -Dataset rotate to be aligned to the Z-axis with: - -```py -import pyvista as pv -dataset = pv.read('hydrogen.vtk') -dat = dataset.point_data['probability_density'].reshape(dataset.dimensions, order='F') -dataset['probability_density'] = np.swapaxes(dat, 1, 2).ravel() -dataset.save('hydrogen.vti') -``` - -See https://github.com/pyvista/pyvista/pull/3811 for more details. diff --git a/Data/ivan-nikolov/README.md b/Data/ivan-nikolov/README.md deleted file mode 100644 index 0725bfce..00000000 --- a/Data/ivan-nikolov/README.md +++ /dev/null @@ -1,121 +0,0 @@ -### Dataset from GGG-BenchmarkSfM - -The datasets in this directory were downloaded from [GGG-BenchmarkSfM: Dataset for Benchmarking Close-range SfM Software Performance under Varying Capturing Conditions](https://data.mendeley.com/datasets/bzxk2n78s9/4) - -The datasets were converted to the VTP format with float32 precision. - -#### `blackVase.off` - -```py -import pyvista as pv - -dataset = pv.read('Objects and Environments Data/BlackVase/blackVase.off') -surf = dataset.extract_surface() -surf.clear_data() -surf.points = surf.points.astype(np.float32) -surf.save('blackVase.vtp') -``` - -#### `Angle.off` - -This was a very large dataset and was decimated to reduce the file size to -below 50 MB to avoid GitHub's file size warnings. - -```py -import numpy as np -import pyvista as pv - -# reduce the size of a mesh -mesh = pv.read('Objects and Environments Data/Angel/Angel.off') -surf = mesh.extract_surface() -surf.clear_data() -dec_surf = surf.decimate(0.65) -dec_surf.points = dec_surf.points.astype(np.float32) -dec_surf.save('/home/alex/python/pyvista/data/Data/ivan-nikolov/Angle.vtp') -``` - -#### `birdBath.off` - -Automate the zipping of the vtp. - -```py -import os -import numpy as np -import pyvista as pv - -# reduce the size of a mesh -base_name = 'birdBath' -mesh = pv.read(f'Objects and Environments Data/BirdBath/{base_name}.off') -surf = mesh.extract_surface() -surf.clear_data() - -# 1.8 M points for sub 50M when compressed -dec_surf = surf.decimate((surf.n_points - 1_800_000)/surf.n_points) -dec_surf.points = dec_surf.points.astype(np.float32) -out_path = '/home/alex/python/pyvista/data/Data/ivan-nikolov/' -filename_vtp = os.path.join(out_path, f'{base_name}.vtp') -dec_surf.save(filename_vtp) -filename_zip = os.path.join(out_path, f'{base_name}.zip') -os.system(f'zip {filename_zip} {filename_vtp}') -os.remove(filename_vtp) -if os.path.getsize(filename_zip) > 5E7: - print('Filename exceeds 50 MB!') -``` - -#### `plasticVase.off` - -Deal with the additional wrinkle that the dataset hasn't been cleaned up and -there are a few separated components. - -```py -import os -import numpy as np -import pyvista as pv - -# reduce the size of a mesh -datadir = 'PlasticVase' -base_name = 'plasticVase' -mesh = pv.read(f'/home/alex/Downloads/bzxk2n78s9-4/Objects and Environments Data/{datadir}/{base_name}.off') -surf = mesh.extract_surface() -surf.clear_data() - -# 1.8 M points for sub 50M when compressed -tgt_points = 1_800_000 -if surf.n_points > tgt_points: - dec_surf = surf.decimate((surf.n_points - 1_800_000)/surf.n_points) - dec_surf.points = dec_surf.points.astype(np.float32) -else: - dec_surf = surf - -# use only the largest body -bodies = dec_surf.split_bodies() -idx = np.argmax([body.n_points for body in bodies]) -dec_surf = bodies[idx].extract_surface() - -out_path = '/home/alex/python/pyvista/data/Data/ivan-nikolov/' -filename_vtp = os.path.join(out_path, f'{base_name}.vtp') -dec_surf.save(filename_vtp) -filename_zip = os.path.join(out_path, f'{base_name}.zip') -os.system(f'zip {filename_zip} {filename_vtp} -j') -os.remove(filename_vtp) -if os.path.getsize(filename_zip) > 5E7: - print('Filename exceeds 50 MB!') - -``` - - -### License - -The original datasets are under CC BY 4.0, which states: - -The files associated with this dataset are licensed under a Creative Commons -Attribution 4.0 International license. -What does this mean? - -You can share, copy and modify this dataset so long as you give appropriate -credit, provide a link to the [CC BY -license](https://creativecommons.org/licenses/by/4.0/), and indicate if changes -were made, but you may not do so in a way that suggests the rights holder has -endorsed you or your use of the dataset. Note that further permission may be -required for any content within the dataset that is identified as belonging to -a third party. diff --git a/Data/lethe/README.md b/Data/lethe/README.md deleted file mode 100644 index a07f99f1..00000000 --- a/Data/lethe/README.md +++ /dev/null @@ -1,6 +0,0 @@ -### Dataset from lethe - -Data generated from [lethe](https://github.com/lethe-cfd/lethe] - -See: -https://github.com/pyvista/pyvista/discussions/1984 diff --git a/Data/lincoln_life_mask/LICENSE b/Data/lincoln_life_mask/LICENSE deleted file mode 100644 index 61d9a7c6..00000000 --- a/Data/lincoln_life_mask/LICENSE +++ /dev/null @@ -1,30 +0,0 @@ -Abraham Lincoln Mills Life Mask - -Files: - lincoln_life_mask.obj — mesh (150K triangles, 15 MB, OBJ format) - lincoln_life_mask.mtl — material definition - lincoln_life_mask_diffuse.jpg - lincoln_life_mask_normals.jpg - lincoln_life_mask_occlusion.jpg - -Subject: plaster life mask of Abraham Lincoln cast by Clark Mills in -February 1865, approximately two months before Lincoln's assassination. - -Collection: Smithsonian. - -License: CC0 Public Domain Dedication -URL: https://creativecommons.org/publicdomain/zero/1.0/ - -Verbatim from the Smithsonian release: - "This media file is in the public domain (free of copyright - restrictions). You can copy, modify, and distribute this work without - contacting the Smithsonian." - -Source pages: - https://3d.si.edu/ - https://sketchfab.com/3d-models/abraham-lincoln-mills-life-mask-a888a9926abb4691a0b91d4eee24b61e - -Attribution (courtesy, not required under CC0): "Abraham Lincoln Mills -Life Mask (1865), Smithsonian, 3D scan released under CC0 Public Domain." - -SPDX-License-Identifier: CC0-1.0 diff --git a/Data/magpylib/README.md b/Data/magpylib/README.md deleted file mode 100644 index 69ab827a..00000000 --- a/Data/magpylib/README.md +++ /dev/null @@ -1,35 +0,0 @@ -### magpylib DataSets - -The [magpylib](https://github.com/magpylib/magpylib) is a Python package for calculating 3D static magnetic fields of magnets, line currents and other sources. Here, it's used to model the the magnetic field of a coil. - -``magpylib`` is licened under the [BSD-2-Clause license](https://github.com/magpylib/magpylib/blob/main/LICENSE). - -### coil_field.vti - -This example was based the [magpylib - Coil Field Lines](https://magpylib.readthedocs.io/en/latest/examples/examples_30_coil_field_lines.html) example. - -```py -import numpy as np -import magpylib as magpy -import pyvista as pv - -coil1 = magpy.Collection() -for z in np.linspace(-8, 8, 16): - winding = magpy.current.Loop( - current=100, - diameter=10, - position=(0,0,z), - ) - coil1.add(winding) - -grid = pv.UniformGrid( - dimensions=(81, 81, 81), - spacing=(1, 1, 1), - origin=(-40, -40, -40), -) - -# compute B-field and add as data to grid -grid['B'] = coil1.getB(grid.points) -grid.save('coil_field.vti') -``` - diff --git a/Data/nefertiti.ply.zip.license b/Data/nefertiti.ply.zip.license deleted file mode 100644 index 37053877..00000000 --- a/Data/nefertiti.ply.zip.license +++ /dev/null @@ -1,23 +0,0 @@ -Nefertiti bust 3D scan (nefertiti.ply.zip) - -WARNING: NON-COMMERCIAL LICENSE. -This dataset is not compatible with BSD-licensed or other permissive -redistribution by downstream commercial users. - -This file is "The Other Nefertiti" (2016) by Nora Al-Badri and -Jan Nikolai Nelles, released under Creative Commons -Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0). - -The only other public 3D scan of the Nefertiti bust — the official -Staatliche Museen zu Berlin / Neues Museum scan released in 2019 — is -also non-commercial (CC BY-NC-SA 3.0 DE). No CC0 or permissively licensed -Nefertiti scan is currently known to exist. - -Original project: https://nefertitihack.alloversky.com/ - -Required attribution: "Nora Al-Badri and Jan Nikolai Nelles, -The Other Nefertiti (2016), CC BY-NC-SA 4.0." - -License URL: https://creativecommons.org/licenses/by-nc-sa/4.0/ - -SPDX-License-Identifier: CC-BY-NC-SA-4.0 diff --git a/Data/planet3d-matlab/README.md b/Data/planet3d-matlab/README.md deleted file mode 100644 index c7bb1774..00000000 --- a/Data/planet3d-matlab/README.md +++ /dev/null @@ -1,28 +0,0 @@ -## Textures from planet3D-MATLAB - -These textures were downloaded from -[tamaskis/planet3D-MATLAB](https://github.com/tamaskis/planet3D-MATLAB). - -### License - -MIT License - -Copyright (c) 2021 Tamas Kis - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. diff --git a/Data/point-clouds/findus23/README.md b/Data/point-clouds/findus23/README.md deleted file mode 100644 index d5a98684..00000000 --- a/Data/point-clouds/findus23/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Halo Point Cloud from Findus23 - -These datasets were originally downloaded from [pyvista/pyvista -#2576](https://github.com/pyvista/pyvista/discussions/2576): - -> The particles correspond to (same mass) particles in a cosmological -> simulation and filtered to only show one resulting dark matter halo. - -There are two arrays in this directory were compressed via: - -```py -import numpy as np - -array = np.genfromtxt('halo_high_res.csv', skip_header=1, delimiter=',') -np.save('/tmp/halo_low_res.npy', array.astype(np.float32)) -array = np.genfromtxt('halo_low_res.csv', skip_header=1, delimiter=',') -np.save('/tmp/halo_high_res.npy', array.astype(np.float32)) -``` - -And are acessible within pyvista with: - -```py ->>> from pyvista import examples ->>> low_res = examples.download_cloud_dark_matter() ->>> hig_res = examples.download_cloud_dark_matter_dense() ->>> hig_res - -``` diff --git a/Data/point-clouds/hyg-database/README.md b/Data/point-clouds/hyg-database/README.md deleted file mode 100644 index 45377fe0..00000000 --- a/Data/point-clouds/hyg-database/README.md +++ /dev/null @@ -1,114 +0,0 @@ -### Stars from the HYG-Database - -This dataset was generated from the [HYG-Database](https://github.com/astronexus/HYG-Database) - - -#### License and Versions: - -This data set is licensed by a Creative Commons Attribution-ShareAlike license. For more details, read the Creative Commons page (https://creativecommons.org/licenses/by-sa/2.5/). - -For additional background details, and older versions of the database, visit http://www.astronexus.com/hyg. - -For the most current version of the applications using this database, visit http://www.astronexus.com/endeavour. ** - -#### Code to generate - -The following code was used to create the "point cloud" of stars based on [hygdata_v3.csv](https://github.com/astronexus/HYG-Database/blob/master/hygdata_v3.csv) - - -```py - -from astropy.table import Table -import numpy as np -import pyvista as pv - -# Read stars data into an astropy table -# https://www.astronexus.com/downloads/catalogs/hygdata_v3.csv.gz -stars_table = Table.read("hygdata_v3.csv") - - -###############################################################################$ -# Convert Star B-V color index to apparent RGB color -# See: https://stackoverflow.com/questions/21977786 - -redco = [ 1.62098281e-82, -5.03110845e-77, 6.66758278e-72, -4.71441850e-67, 1.66429493e-62, -1.50701672e-59, -2.42533006e-53, 8.42586475e-49, 7.94816523e-45, -1.68655179e-39, 7.25404556e-35, -1.85559350e-30, 3.23793430e-26, -4.00670131e-22, 3.53445102e-18, -2.19200432e-14, 9.27939743e-11, -2.56131914e-07, 4.29917840e-04, -3.88866019e-01, 3.97307766e+02] -greenco = [ 1.21775217e-82, -3.79265302e-77, 5.04300808e-72, -3.57741292e-67, 1.26763387e-62, -1.28724846e-59, -1.84618419e-53, 6.43113038e-49, 6.05135293e-45, -1.28642374e-39, 5.52273817e-35, -1.40682723e-30, 2.43659251e-26, -2.97762151e-22, 2.57295370e-18, -1.54137817e-14, 6.14141996e-11, -1.50922703e-07, 1.90667190e-04, -1.23973583e-02,-1.33464366e+01] -blueco = [ 2.17374683e-82, -6.82574350e-77, 9.17262316e-72, -6.60390151e-67, 2.40324203e-62, -5.77694976e-59, -3.42234361e-53, 1.26662864e-48, 8.75794575e-45, -2.45089758e-39, 1.10698770e-34, -2.95752654e-30, 5.41656027e-26, -7.10396545e-22, 6.74083578e-18, -4.59335728e-14, 2.20051751e-10, -7.14068799e-07, 1.46622559e-03, -1.60740964e+00, 6.85200095e+02] - -redco = np.poly1d(redco) -greenco = np.poly1d(greenco) -blueco = np.poly1d(blueco) - -def temp2rgb(ci): - temp = 4600 * (1 / (0.92 * ci + 1.7) + 1 / (0.92 * ci + 0.62)) - - red = redco(temp) - green = greenco(temp) - blue = blueco(temp) - - if red > 255: - red = 255 - elif red < 0: - red = 0 - if green > 255: - green = 255 - elif green < 0: - green = 0 - if blue > 255: - blue = 255 - elif blue < 0: - blue = 0 - - color = (int(red)/255, - int(green)/255, - int(blue)/255) - return color - - -############################################################################### -# Create the pyvista.PolyData -# - -# only include stars that have a valid distance and valid color -valid = np.logical_and( - stars_table["dist"] != 100000, - ~stars_table['ci'].mask, -) -coord = np.vstack(( - stars_table['x'], - stars_table['y'], - stars_table['z'], -)).T.astype(np.float32) - -stars = pv.PolyData(coord[valid]) - -############################################################################### -# Generate an RGBA array based on the color and luminosity -# Here, we scale the luminosity to make most stars visible -lum = stars_table['lum'][valid].copy() -lum /= lum.max() -rgba = np.ones((stars.n_points, 4)) -rgba[:, -1] = lum**(0.2) - -for ii, ci in enumerate(stars_table['ci'][valid]): - if isinstance(ci, float): - rgba[ii, :-1] = temp2rgb(ci) - -stars['lum'] = stars_table['lum'][valid].astype(np.float32) -stars['ci'] = stars_table['ci'][valid].astype(np.float32) -stars['_rgba'] = (rgba*255).astype(np.uint8) - -############################################################################### -# plot it - -stars.plot( - style='points_gaussian', - background='k', - point_size=0.5, - scalars='_rgba', - render_points_as_spheres=False, - zoom=3.0, -) - -stars.save('/tmp/stars.vtp') -``` diff --git a/Data/pvtu_blood_vessels/README.txt b/Data/pvtu_blood_vessels/README.txt deleted file mode 100644 index b6b9f4d2..00000000 --- a/Data/pvtu_blood_vessels/README.txt +++ /dev/null @@ -1,5 +0,0 @@ -Many thanks to https://github.com/JiaweiZhuang for sharing this data file -in https://github.com/JiaweiZhuang/vtk_experiments - -This was added for https://github.com/vtkiorg/vtki/issues/175 - diff --git a/Data/reservoir/README.md b/Data/reservoir/README.md deleted file mode 100644 index 76f8e20b..00000000 --- a/Data/reservoir/README.md +++ /dev/null @@ -1,11 +0,0 @@ -# About - -The `UNISIM-II-D.vtu` file used in this example is an unstructured grid created from the UNISIM-II reservoir model. A contribution to the PyVista project. - -## UNISIM-II - -UNISIM-II is a synthetic carbonate reservoir model created by UNISIM-CEPETRO-Unicamp to provide a dataset to be used to compare methodologies and performance of different techniques, simulators, algorithms, among others. See more at . - -## LICENSE - -This dataset is licenced under the Database Contents License: http://opendatacommons.org/licenses/dbcl/1.0/. diff --git a/Data/simple_tetra/README.md b/Data/simple_tetra/README.md deleted file mode 100644 index ba391535..00000000 --- a/Data/simple_tetra/README.md +++ /dev/null @@ -1 +0,0 @@ -This is an example of a simple polygon mesh in Ensight Gold format. This dataset does not contain any time steps, and it is a static mesh. diff --git a/Data/skybox/LICENSE b/Data/skybox/LICENSE deleted file mode 100644 index 9c8f3ea0..00000000 --- a/Data/skybox/LICENSE +++ /dev/null @@ -1,201 +0,0 @@ - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - APPENDIX: How to apply the Apache License to your work. - - To apply the Apache License to your work, attach the following - boilerplate notice, with the fields enclosed by brackets "{}" - replaced with your own identifying information. (Don't include - the brackets!) The text should be enclosed in the appropriate - comment syntax for the file format. We also recommend that a - file or class name and description of purpose be included on the - same "printed page" as the copyright notice for easier - identification within third-party archives. - - Copyright {yyyy} {name of copyright owner} - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. \ No newline at end of file diff --git a/Data/skybox/README.md b/Data/skybox/README.md deleted file mode 100644 index 517b0aa1..00000000 --- a/Data/skybox/README.md +++ /dev/null @@ -1,5 +0,0 @@ -## Sample Skybox from Bill Lorensen - -These skybox images were downloaded from [lorensen/VTKExamples](https://github.com/lorensen/VTKExamples) and are licensed under the Apache License 2.0, which is included in this directory. - -These images are designed to be used with vtkTexture and are leveraged from PyVista from `pyvista.examples.download_sky_skybox`. diff --git a/Data/solar_textures/README.md b/Data/solar_textures/README.md deleted file mode 100644 index 3e4d7e66..00000000 --- a/Data/solar_textures/README.md +++ /dev/null @@ -1,9 +0,0 @@ -### Textures from Solar Textures - -These textures were downloaded from [Solar Textures](https://www.solarsystemscope.com/textures/). - - -### License - -Distributed under Attribution 4.0 International license: You may use, adapt, -and share these textures for any purpose, even commercially. diff --git a/Data/teapot.g.license b/Data/teapot.g.license deleted file mode 100644 index 99ec7cc7..00000000 --- a/Data/teapot.g.license +++ /dev/null @@ -1,21 +0,0 @@ -Utah Teapot (teapot.g) - -Originally modeled by Martin Newell at the University of Utah in 1975. - -Despite the .g extension (normally BRL-CAD format), this file is an -ASCII triangle mesh — the same coordinate data as TeapotPoints.txt in -VTK's legacy format. It is not a BRL-CAD database. - -No formal license has ever been issued for the original Newell dataset. -The model has been freely distributed in essentially every computer -graphics package since the mid-1970s (POV-Ray, Blender, 3ds Max, OpenGL -GLUT, VTK, etc.) and is conventionally treated as public domain. These -specific files have been redistributed as VTK test data since 2001 -under VTK's BSD-3 license. - -Recommended attribution: "Utah Teapot, originally modeled by Martin -Newell, University of Utah, 1975." - -Background: https://en.wikipedia.org/wiki/Utah_teapot - -SPDX-License-Identifier: LicenseRef-UtahTeapot-PublicDomainByConvention diff --git a/Data/teapot.wrl.license b/Data/teapot.wrl.license deleted file mode 100644 index c1a55203..00000000 --- a/Data/teapot.wrl.license +++ /dev/null @@ -1,22 +0,0 @@ -Utah Teapot (teapot.wrl) - -Originally modeled by Martin Newell at the University of Utah in 1975. - -The VRML tessellation in this file was prepared by Martin Isenburg -(UNC Chapel Hill) and distributed alongside: - - Isenburg, M. and Snoeyink, J. "Face Fixer: Compressing Polygon - Meshes with Properties." SIGGRAPH 2000. - -No formal license has ever been issued for the original Newell dataset. -The model has been freely distributed in computer graphics software since -the mid-1970s and is conventionally treated as public domain. This -specific file has been redistributed as VTK test data since 2001 under -VTK's BSD-3 license. - -Recommended attribution: "Utah Teapot, originally modeled by Martin -Newell, University of Utah, 1975; tessellation by Martin Isenburg." - -Background: https://en.wikipedia.org/wiki/Utah_teapot - -SPDX-License-Identifier: LicenseRef-UtahTeapot-PublicDomainByConvention diff --git a/Data/toy-plane-point-cloud/README.md b/Data/toy-plane-point-cloud/README.md deleted file mode 100644 index 32431e49..00000000 --- a/Data/toy-plane-point-cloud/README.md +++ /dev/null @@ -1,41 +0,0 @@ -## Photoneo PLY Point Cloud - -Point cloud of a toy airplane from Photoneo 3D scanner. - -Used to demonstrate usage within pyminiply - -```py -import requests, zipfile, tempfile -import pyminiply - -url = "https://github.com/pyvista/pyvista/data/raw/main/Data/toy-plane-point-cloud/toy-plane.zip" - -# download the file using requests -with tempfile.TemporaryDirectory() as tmpdir: - request = requests.get(url) - zip_path = f"{tmpdir}/toy-plane.zip" - with open(zip_path, "wb") as fid: - fid.write(request.content) - with zipfile.ZipFile(zip_path, "r") as zfid: - zfid.extractall(tmpdir) - - # load using pyminiply - vertices, _, _, _, color = pyminiply.read(f"{tmpdir}/toy-plane.ply") - -# optionally plot using pyvista -import pyvista as pv - -pset = pv.PointSet(vertices) -pset['color'] = color -pset.plot(rgb=True) - -``` - -![Toy Plane - Point Cloud](toy-plane.png "Toy Plane Point Cloud") - -### License - -Licensed under CC BY 4.0 -https://creativecommons.org/licenses/by/4.0/ - -Permission given by @WouterB15. diff --git a/Data/vrml/teapot.wrl.license b/Data/vrml/teapot.wrl.license deleted file mode 100644 index 66fa3f8a..00000000 --- a/Data/vrml/teapot.wrl.license +++ /dev/null @@ -1,14 +0,0 @@ -Utah Teapot (vrml/teapot.wrl) — VRML format. - -Originally modeled by Martin Newell at the University of Utah in 1975. - -No formal license has ever been issued for the original Newell dataset. -The model has been freely distributed in computer-graphics software since -the mid-1970s and is conventionally treated as public domain. - -See /Data/teapot.wrl.license for additional context on the Newell -dataset's licensing history. - -Background: https://en.wikipedia.org/wiki/Utah_teapot - -SPDX-License-Identifier: LicenseRef-UtahTeapot-PublicDomainByConvention diff --git a/Data/vtu_series/README.md b/Data/vtu_series/README.md deleted file mode 100644 index ef89bf84..00000000 --- a/Data/vtu_series/README.md +++ /dev/null @@ -1 +0,0 @@ -This file is used in the `.vtu.series` examples and tests. The underlying data originates from `Data/PVD/wavy.zip`, but has been adapted for `.series` format. \ No newline at end of file diff --git a/Data/warping_spheres/README.md b/Data/warping_spheres/README.md deleted file mode 100644 index 007c646b..00000000 --- a/Data/warping_spheres/README.md +++ /dev/null @@ -1,2 +0,0 @@ -File used in VTK examples and tests. Downloaded from: -https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/warping_spheres.vtkhdf diff --git a/Data/washington_bust/LICENSE b/Data/washington_bust/LICENSE deleted file mode 100644 index f010733d..00000000 --- a/Data/washington_bust/LICENSE +++ /dev/null @@ -1,31 +0,0 @@ -Bust of George Washington (after Giuseppe Ceracchi) - -Files: - washington_bust.obj — mesh (150K triangles, 15 MB, OBJ format) - washington_bust.mtl — material definition - washington_bust_diffuse.jpg - washington_bust_normals.jpg - washington_bust_occlusion.jpg - -Subject: marble bust of George Washington, ca. 1819 copy after Giuseppe -Ceracchi's 1792 original. - -Collection: Smithsonian National Portrait Gallery (NPG.70.4). - -License: CC0 Public Domain Dedication -URL: https://creativecommons.org/publicdomain/zero/1.0/ - -Verbatim from the Smithsonian release: - "This media file is in the public domain (free of copyright - restrictions). You can copy, modify, and distribute this work without - contacting the Smithsonian." - -Source pages: - https://3d.si.edu/ - https://sketchfab.com/3d-models/george-washington-bust-23630d35f855409e9c00c810b1416c71 - -Attribution (courtesy, not required under CC0): "Bust of George Washington, -Smithsonian National Portrait Gallery (NPG.70.4), 3D scan released under -CC0 Public Domain." - -SPDX-License-Identifier: CC0-1.0 diff --git a/Data/whole_body_ct/README.md b/Data/whole_body_ct/README.md deleted file mode 100644 index 9b485371..00000000 --- a/Data/whole_body_ct/README.md +++ /dev/null @@ -1,12 +0,0 @@ -### Data Source -Datasets are sourced from the TotalSegmentor dataset, version 2.0.1, available -from [zenodo](https://zenodo.org/records/10047292). See the original paper: - -Jakob Wasserthal et al., “TotalSegmentator: Robust Segmentation of 104 Anatomic -Structures in CT Images,” Radiology, Jul. 2023, doi: https://doi.org/10.1148/ryai.230024. - -### License -Licensed under Creative Commons Attribution 4.0 International. - -### Color Mapping -The colors in `colors.py` were generated by the 3DSlicer [TotalSegmentator extension](https://github.com/lassoan/SlicerTotalSegmentator). \ No newline at end of file diff --git a/Data/yinyang/README.md b/Data/yinyang/README.md deleted file mode 100644 index acff1b94..00000000 --- a/Data/yinyang/README.md +++ /dev/null @@ -1,2 +0,0 @@ -Image used in VTK examples and tests. Downloaded from: -https://gitlab.kitware.com/vtk/vtk-examples/-/blob/master/src/Testing/Data/Yinyang.png \ No newline at end of file diff --git a/LICENSES/Apache-2.0.txt b/LICENSES/Apache-2.0.txt new file mode 100644 index 00000000..137069b8 --- /dev/null +++ b/LICENSES/Apache-2.0.txt @@ -0,0 +1,73 @@ +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + + (a) You must give any other recipients of the Work or Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. + + You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + +To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/LICENSES/BSD-2-Clause.txt b/LICENSES/BSD-2-Clause.txt new file mode 100644 index 00000000..5f662b35 --- /dev/null +++ b/LICENSES/BSD-2-Clause.txt @@ -0,0 +1,9 @@ +Copyright (c) + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/BSD-3-Clause.txt b/LICENSES/BSD-3-Clause.txt new file mode 100644 index 00000000..ea890afb --- /dev/null +++ b/LICENSES/BSD-3-Clause.txt @@ -0,0 +1,11 @@ +Copyright (c) . + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/LICENSES/CC-BY-3.0.txt b/LICENSES/CC-BY-3.0.txt new file mode 100644 index 00000000..1a16e055 --- /dev/null +++ b/LICENSES/CC-BY-3.0.txt @@ -0,0 +1,319 @@ +Creative Commons Legal Code + +Attribution 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined above) for the purposes of this + License. + c. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + d. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + e. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + f. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + g. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + h. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + i. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(b), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(b), as requested. + b. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Section 3(b), in the case of an Adaptation, + a credit identifying the use of the Work in the Adaptation (e.g., + "French translation of the Work by Original Author," or "Screenplay + based on original Work by Original Author"). The credit required by + this Section 4 (b) may be implemented in any reasonable manner; + provided, however, that in the case of a Adaptation or Collection, at + a minimum such credit will appear, if a credit for all contributing + authors of the Adaptation or Collection appears, then as part of these + credits and in a manner at least as prominent as the credits for the + other contributing authors. For the avoidance of doubt, You may only + use the credit required by this Section for the purpose of attribution + in the manner set out above and, by exercising Your rights under this + License, You may not implicitly or explicitly assert or imply any + connection with, sponsorship or endorsement by the Original Author, + Licensor and/or Attribution Parties, as appropriate, of You or Your + use of the Work, without the separate, express prior written + permission of the Original Author, Licensor and/or Attribution + Parties. + c. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of this License. + + Creative Commons may be contacted at https://creativecommons.org/. diff --git a/LICENSES/CC-BY-4.0.txt b/LICENSES/CC-BY-4.0.txt new file mode 100644 index 00000000..13ca539f --- /dev/null +++ b/LICENSES/CC-BY-4.0.txt @@ -0,0 +1,156 @@ +Creative Commons Attribution 4.0 International + + Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. + +Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors. + +Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public. + +Creative Commons Attribution 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 – Definitions. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + d. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + e. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + + f. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + g. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + + h. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + i. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + j. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + k. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + +b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + 4. If You Share Adapted Material You produce, the Adapter's License You apply must not prevent recipients of the Adapted Material from complying with this Public License. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; + + b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material; and + + c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + + a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. + + b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + + d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +Section 8 – Interpretation. + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/CC-BY-SA-2.5.txt b/LICENSES/CC-BY-SA-2.5.txt new file mode 100644 index 00000000..4a2ed20d --- /dev/null +++ b/LICENSES/CC-BY-SA-2.5.txt @@ -0,0 +1,85 @@ +Creative Commons Attribution-ShareAlike 2.5 + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS. + +1. Definitions + + a. "Collective Work" means a work, such as a periodical issue, anthology or encyclopedia, in which the Work in its entirety in unmodified form, along with a number of other contributions, constituting separate and independent works in themselves, are assembled into a collective whole. A work that constitutes a Collective Work will not be considered a Derivative Work (as defined below) for the purposes of this License. + + b. "Derivative Work" means a work based upon the Work or upon the Work and other pre-existing works, such as a translation, musical arrangement, dramatization, fictionalization, motion picture version, sound recording, art reproduction, abridgment, condensation, or any other form in which the Work may be recast, transformed, or adapted, except that a work that constitutes a Collective Work will not be considered a Derivative Work for the purpose of this License. For the avoidance of doubt, where the Work is a musical composition or sound recording, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered a Derivative Work for the purpose of this License. + + c. "Licensor" means the individual or entity that offers the Work under the terms of this License. + + d. "Original Author" means the individual or entity who created the Work. + + e. "Work" means the copyrightable work of authorship offered under the terms of this License. + + f. "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation. + + g. "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike. + +2. Fair Use Rights. Nothing in this license is intended to reduce, limit, or restrict any rights arising from fair use, first sale or other limitations on the exclusive rights of the copyright owner under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below: + + a. to reproduce the Work, to incorporate the Work into one or more Collective Works, and to reproduce the Work as incorporated in the Collective Works; + + b. to create and reproduce Derivative Works; + + c. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission the Work including as incorporated in Collective Works; + + d. to distribute copies or phonorecords of, display publicly, perform publicly, and perform publicly by means of a digital audio transmission Derivative Works. + + e. For the avoidance of doubt, where the work is a musical composition: + + i. Performance Royalties Under Blanket Licenses. Licensor waives the exclusive right to collect, whether individually or via a performance rights society (e.g. ASCAP, BMI, SESAC), royalties for the public performance or public digital performance (e.g. webcast) of the Work. + + ii. Mechanical Rights and Statutory Royalties. Licensor waives the exclusive right to collect, whether individually or via a music rights society or designated agent (e.g. Harry Fox Agency), royalties for any phonorecord You create from the Work ("cover version") and distribute, subject to the compulsory license created by 17 USC Section 115 of the US Copyright Act (or the equivalent in other jurisdictions). + + f. Webcasting Rights and Statutory Royalties. For the avoidance of doubt, where the Work is a sound recording, Licensor waives the exclusive right to collect, whether individually or via a performance-rights society (e.g. SoundExchange), royalties for the public digital performance (e.g. webcast) of the Work, subject to the compulsory license created by 17 USC Section 114 of the US Copyright Act (or the equivalent in other jurisdictions). + +The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. All rights not expressly granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions: + + a. You may distribute, publicly display, publicly perform, or publicly digitally perform the Work only under the terms of this License, and You must include a copy of, or the Uniform Resource Identifier for, this License with every copy or phonorecord of the Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Work that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Work itself to be made subject to the terms of this License. If You create a Collective Work, upon notice from any Licensor You must, to the extent practicable, remove from the Collective Work any credit as required by clause 4(c), as requested. If You create a Derivative Work, upon notice from any Licensor You must, to the extent practicable, remove from the Derivative Work any credit as required by clause 4(c), as requested. + + b. You may distribute, publicly display, publicly perform, or publicly digitally perform a Derivative Work only under the terms of this License, a later version of this License with the same License Elements as this License, or a Creative Commons iCommons license that contains the same License Elements as this License (e.g. Attribution-ShareAlike 2.5 Japan). You must include a copy of, or the Uniform Resource Identifier for, this License or other license specified in the previous sentence with every copy or phonorecord of each Derivative Work You distribute, publicly display, publicly perform, or publicly digitally perform. You may not offer or impose any terms on the Derivative Works that alter or restrict the terms of this License or the recipients' exercise of the rights granted hereunder, and You must keep intact all notices that refer to this License and to the disclaimer of warranties. You may not distribute, publicly display, publicly perform, or publicly digitally perform the Derivative Work with any technological measures that control access or use of the Work in a manner inconsistent with the terms of this License Agreement. The above applies to the Derivative Work as incorporated in a Collective Work, but this does not require the Collective Work apart from the Derivative Work itself to be made subject to the terms of this License. + + c. If you distribute, publicly display, publicly perform, or publicly digitally perform the Work or any Derivative Works or Collective Works, You must keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or (ii) if the Original Author and/or Licensor designate another party or parties (e.g. a sponsor institute, publishing entity, journal) for attribution in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; the title of the Work if supplied; to the extent reasonably practicable, the Uniform Resource Identifier, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and in the case of a Derivative Work, a credit identifying the use of the Work in the Derivative Work (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). Such credit may be implemented in any reasonable manner; provided, however, that in the case of a Derivative Work or Collective Work, at a minimum such credit will appear where any other comparable authorship credit appears and in a manner at least as prominent as such other comparable authorship credit. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE MATERIALS, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Derivative Works or Collective Works from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License. + + b. Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above. + +8. Miscellaneous + + a. Each time You distribute or publicly digitally perform the Work or a Collective Work, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License. + + b. Each time You distribute or publicly digitally perform a Derivative Work, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License. + + c. If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable. + + d. No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent. + + e. This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You. + +Creative Commons is not a party to this License, and makes no warranty whatsoever in connection with the Work. Creative Commons will not be liable to You or any party on any legal theory for any damages whatsoever, including without limitation any general, special, incidental or consequential damages arising in connection to this license. Notwithstanding the foregoing two (2) sentences, if Creative Commons has expressly identified itself as the Licensor hereunder, it shall have all rights and obligations of Licensor. + +Except for the limited purpose of indicating to the public that the Work is licensed under the CCPL, neither party will use the trademark "Creative Commons" or any related trademark or logo of Creative Commons without the prior written consent of Creative Commons. Any permitted use will be in compliance with Creative Commons' then-current trademark usage guidelines, as may be published on its website or otherwise made available upon request from time to time. + +Creative Commons may be contacted at http://creativecommons.org/. diff --git a/LICENSES/CC-BY-SA-3.0.txt b/LICENSES/CC-BY-SA-3.0.txt new file mode 100644 index 00000000..604209a8 --- /dev/null +++ b/LICENSES/CC-BY-SA-3.0.txt @@ -0,0 +1,359 @@ +Creative Commons Legal Code + +Attribution-ShareAlike 3.0 Unported + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR + DAMAGES RESULTING FROM ITS USE. + +License + +THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE +COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY +COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS +AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED. + +BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE +TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY +BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS +CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND +CONDITIONS. + +1. Definitions + + a. "Adaptation" means a work based upon the Work, or upon the Work and + other pre-existing works, such as a translation, adaptation, + derivative work, arrangement of music or other alterations of a + literary or artistic work, or phonogram or performance and includes + cinematographic adaptations or any other form in which the Work may be + recast, transformed, or adapted including in any form recognizably + derived from the original, except that a work that constitutes a + Collection will not be considered an Adaptation for the purpose of + this License. For the avoidance of doubt, where the Work is a musical + work, performance or phonogram, the synchronization of the Work in + timed-relation with a moving image ("synching") will be considered an + Adaptation for the purpose of this License. + b. "Collection" means a collection of literary or artistic works, such as + encyclopedias and anthologies, or performances, phonograms or + broadcasts, or other works or subject matter other than works listed + in Section 1(f) below, which, by reason of the selection and + arrangement of their contents, constitute intellectual creations, in + which the Work is included in its entirety in unmodified form along + with one or more other contributions, each constituting separate and + independent works in themselves, which together are assembled into a + collective whole. A work that constitutes a Collection will not be + considered an Adaptation (as defined below) for the purposes of this + License. + c. "Creative Commons Compatible License" means a license that is listed + at https://creativecommons.org/compatiblelicenses that has been + approved by Creative Commons as being essentially equivalent to this + License, including, at a minimum, because that license: (i) contains + terms that have the same purpose, meaning and effect as the License + Elements of this License; and, (ii) explicitly permits the relicensing + of adaptations of works made available under that license under this + License or a Creative Commons jurisdiction license with the same + License Elements as this License. + d. "Distribute" means to make available to the public the original and + copies of the Work or Adaptation, as appropriate, through sale or + other transfer of ownership. + e. "License Elements" means the following high-level license attributes + as selected by Licensor and indicated in the title of this License: + Attribution, ShareAlike. + f. "Licensor" means the individual, individuals, entity or entities that + offer(s) the Work under the terms of this License. + g. "Original Author" means, in the case of a literary or artistic work, + the individual, individuals, entity or entities who created the Work + or if no individual or entity can be identified, the publisher; and in + addition (i) in the case of a performance the actors, singers, + musicians, dancers, and other persons who act, sing, deliver, declaim, + play in, interpret or otherwise perform literary or artistic works or + expressions of folklore; (ii) in the case of a phonogram the producer + being the person or legal entity who first fixes the sounds of a + performance or other sounds; and, (iii) in the case of broadcasts, the + organization that transmits the broadcast. + h. "Work" means the literary and/or artistic work offered under the terms + of this License including without limitation any production in the + literary, scientific and artistic domain, whatever may be the mode or + form of its expression including digital form, such as a book, + pamphlet and other writing; a lecture, address, sermon or other work + of the same nature; a dramatic or dramatico-musical work; a + choreographic work or entertainment in dumb show; a musical + composition with or without words; a cinematographic work to which are + assimilated works expressed by a process analogous to cinematography; + a work of drawing, painting, architecture, sculpture, engraving or + lithography; a photographic work to which are assimilated works + expressed by a process analogous to photography; a work of applied + art; an illustration, map, plan, sketch or three-dimensional work + relative to geography, topography, architecture or science; a + performance; a broadcast; a phonogram; a compilation of data to the + extent it is protected as a copyrightable work; or a work performed by + a variety or circus performer to the extent it is not otherwise + considered a literary or artistic work. + i. "You" means an individual or entity exercising rights under this + License who has not previously violated the terms of this License with + respect to the Work, or who has received express permission from the + Licensor to exercise rights under this License despite a previous + violation. + j. "Publicly Perform" means to perform public recitations of the Work and + to communicate to the public those public recitations, by any means or + process, including by wire or wireless means or public digital + performances; to make available to the public Works in such a way that + members of the public may access these Works from a place and at a + place individually chosen by them; to perform the Work to the public + by any means or process and the communication to the public of the + performances of the Work, including by public digital performance; to + broadcast and rebroadcast the Work by any means including signs, + sounds or images. + k. "Reproduce" means to make copies of the Work by any means including + without limitation by sound or visual recordings and the right of + fixation and reproducing fixations of the Work, including storage of a + protected performance or phonogram in digital form or other electronic + medium. + +2. Fair Dealing Rights. Nothing in this License is intended to reduce, +limit, or restrict any uses free from copyright or rights arising from +limitations or exceptions that are provided for in connection with the +copyright protection under copyright law or other applicable laws. + +3. License Grant. Subject to the terms and conditions of this License, +Licensor hereby grants You a worldwide, royalty-free, non-exclusive, +perpetual (for the duration of the applicable copyright) license to +exercise the rights in the Work as stated below: + + a. to Reproduce the Work, to incorporate the Work into one or more + Collections, and to Reproduce the Work as incorporated in the + Collections; + b. to create and Reproduce Adaptations provided that any such Adaptation, + including any translation in any medium, takes reasonable steps to + clearly label, demarcate or otherwise identify that changes were made + to the original Work. For example, a translation could be marked "The + original work was translated from English to Spanish," or a + modification could indicate "The original work has been modified."; + c. to Distribute and Publicly Perform the Work including as incorporated + in Collections; and, + d. to Distribute and Publicly Perform Adaptations. + e. For the avoidance of doubt: + + i. Non-waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor + reserves the exclusive right to collect such royalties for any + exercise by You of the rights granted under this License; + ii. Waivable Compulsory License Schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; and, + iii. Voluntary License Schemes. The Licensor waives the right to + collect royalties, whether individually or, in the event that the + Licensor is a member of a collecting society that administers + voluntary licensing schemes, via that society, from any exercise + by You of the rights granted under this License. + +The above rights may be exercised in all media and formats whether now +known or hereafter devised. The above rights include the right to make +such modifications as are technically necessary to exercise the rights in +other media and formats. Subject to Section 8(f), all rights not expressly +granted by Licensor are hereby reserved. + +4. Restrictions. The license granted in Section 3 above is expressly made +subject to and limited by the following restrictions: + + a. You may Distribute or Publicly Perform the Work only under the terms + of this License. You must include a copy of, or the Uniform Resource + Identifier (URI) for, this License with every copy of the Work You + Distribute or Publicly Perform. You may not offer or impose any terms + on the Work that restrict the terms of this License or the ability of + the recipient of the Work to exercise the rights granted to that + recipient under the terms of the License. You may not sublicense the + Work. You must keep intact all notices that refer to this License and + to the disclaimer of warranties with every copy of the Work You + Distribute or Publicly Perform. When You Distribute or Publicly + Perform the Work, You may not impose any effective technological + measures on the Work that restrict the ability of a recipient of the + Work from You to exercise the rights granted to that recipient under + the terms of the License. This Section 4(a) applies to the Work as + incorporated in a Collection, but this does not require the Collection + apart from the Work itself to be made subject to the terms of this + License. If You create a Collection, upon notice from any Licensor You + must, to the extent practicable, remove from the Collection any credit + as required by Section 4(c), as requested. If You create an + Adaptation, upon notice from any Licensor You must, to the extent + practicable, remove from the Adaptation any credit as required by + Section 4(c), as requested. + b. You may Distribute or Publicly Perform an Adaptation only under the + terms of: (i) this License; (ii) a later version of this License with + the same License Elements as this License; (iii) a Creative Commons + jurisdiction license (either this or a later license version) that + contains the same License Elements as this License (e.g., + Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible + License. If you license the Adaptation under one of the licenses + mentioned in (iv), you must comply with the terms of that license. If + you license the Adaptation under the terms of any of the licenses + mentioned in (i), (ii) or (iii) (the "Applicable License"), you must + comply with the terms of the Applicable License generally and the + following provisions: (I) You must include a copy of, or the URI for, + the Applicable License with every copy of each Adaptation You + Distribute or Publicly Perform; (II) You may not offer or impose any + terms on the Adaptation that restrict the terms of the Applicable + License or the ability of the recipient of the Adaptation to exercise + the rights granted to that recipient under the terms of the Applicable + License; (III) You must keep intact all notices that refer to the + Applicable License and to the disclaimer of warranties with every copy + of the Work as included in the Adaptation You Distribute or Publicly + Perform; (IV) when You Distribute or Publicly Perform the Adaptation, + You may not impose any effective technological measures on the + Adaptation that restrict the ability of a recipient of the Adaptation + from You to exercise the rights granted to that recipient under the + terms of the Applicable License. This Section 4(b) applies to the + Adaptation as incorporated in a Collection, but this does not require + the Collection apart from the Adaptation itself to be made subject to + the terms of the Applicable License. + c. If You Distribute, or Publicly Perform the Work or any Adaptations or + Collections, You must, unless a request has been made pursuant to + Section 4(a), keep intact all copyright notices for the Work and + provide, reasonable to the medium or means You are utilizing: (i) the + name of the Original Author (or pseudonym, if applicable) if supplied, + and/or if the Original Author and/or Licensor designate another party + or parties (e.g., a sponsor institute, publishing entity, journal) for + attribution ("Attribution Parties") in Licensor's copyright notice, + terms of service or by other reasonable means, the name of such party + or parties; (ii) the title of the Work if supplied; (iii) to the + extent reasonably practicable, the URI, if any, that Licensor + specifies to be associated with the Work, unless such URI does not + refer to the copyright notice or licensing information for the Work; + and (iv) , consistent with Ssection 3(b), in the case of an + Adaptation, a credit identifying the use of the Work in the Adaptation + (e.g., "French translation of the Work by Original Author," or + "Screenplay based on original Work by Original Author"). The credit + required by this Section 4(c) may be implemented in any reasonable + manner; provided, however, that in the case of a Adaptation or + Collection, at a minimum such credit will appear, if a credit for all + contributing authors of the Adaptation or Collection appears, then as + part of these credits and in a manner at least as prominent as the + credits for the other contributing authors. For the avoidance of + doubt, You may only use the credit required by this Section for the + purpose of attribution in the manner set out above and, by exercising + Your rights under this License, You may not implicitly or explicitly + assert or imply any connection with, sponsorship or endorsement by the + Original Author, Licensor and/or Attribution Parties, as appropriate, + of You or Your use of the Work, without the separate, express prior + written permission of the Original Author, Licensor and/or Attribution + Parties. + d. Except as otherwise agreed in writing by the Licensor or as may be + otherwise permitted by applicable law, if You Reproduce, Distribute or + Publicly Perform the Work either by itself or as part of any + Adaptations or Collections, You must not distort, mutilate, modify or + take other derogatory action in relation to the Work which would be + prejudicial to the Original Author's honor or reputation. Licensor + agrees that in those jurisdictions (e.g. Japan), in which any exercise + of the right granted in Section 3(b) of this License (the right to + make Adaptations) would be deemed to be a distortion, mutilation, + modification or other derogatory action prejudicial to the Original + Author's honor and reputation, the Licensor will waive or not assert, + as appropriate, this Section, to the fullest extent permitted by the + applicable national law, to enable You to reasonably exercise Your + right under Section 3(b) of this License (right to make Adaptations) + but not otherwise. + +5. Representations, Warranties and Disclaimer + +UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR +OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY +KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, +INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, +FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF +LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, +WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION +OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU. + +6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE +LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR +ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES +ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS +BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +7. Termination + + a. This License and the rights granted hereunder will terminate + automatically upon any breach by You of the terms of this License. + Individuals or entities who have received Adaptations or Collections + from You under this License, however, will not have their licenses + terminated provided such individuals or entities remain in full + compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will + survive any termination of this License. + b. Subject to the above terms and conditions, the license granted here is + perpetual (for the duration of the applicable copyright in the Work). + Notwithstanding the above, Licensor reserves the right to release the + Work under different license terms or to stop distributing the Work at + any time; provided, however that any such election will not serve to + withdraw this License (or any other license that has been, or is + required to be, granted under the terms of this License), and this + License will continue in full force and effect unless terminated as + stated above. + +8. Miscellaneous + + a. Each time You Distribute or Publicly Perform the Work or a Collection, + the Licensor offers to the recipient a license to the Work on the same + terms and conditions as the license granted to You under this License. + b. Each time You Distribute or Publicly Perform an Adaptation, Licensor + offers to the recipient a license to the original Work on the same + terms and conditions as the license granted to You under this License. + c. If any provision of this License is invalid or unenforceable under + applicable law, it shall not affect the validity or enforceability of + the remainder of the terms of this License, and without further action + by the parties to this agreement, such provision shall be reformed to + the minimum extent necessary to make such provision valid and + enforceable. + d. No term or provision of this License shall be deemed waived and no + breach consented to unless such waiver or consent shall be in writing + and signed by the party to be charged with such waiver or consent. + e. This License constitutes the entire agreement between the parties with + respect to the Work licensed here. There are no understandings, + agreements or representations with respect to the Work not specified + here. Licensor shall not be bound by any additional provisions that + may appear in any communication from You. This License may not be + modified without the mutual written agreement of the Licensor and You. + f. The rights granted under, and the subject matter referenced, in this + License were drafted utilizing the terminology of the Berne Convention + for the Protection of Literary and Artistic Works (as amended on + September 28, 1979), the Rome Convention of 1961, the WIPO Copyright + Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 + and the Universal Copyright Convention (as revised on July 24, 1971). + These rights and subject matter take effect in the relevant + jurisdiction in which the License terms are sought to be enforced + according to the corresponding provisions of the implementation of + those treaty provisions in the applicable national law. If the + standard suite of rights granted under applicable copyright law + includes additional rights not granted under this License, such + additional rights are deemed to be included in the License; this + License is not intended to restrict the license of any rights under + applicable law. + + +Creative Commons Notice + + Creative Commons is not a party to this License, and makes no warranty + whatsoever in connection with the Work. Creative Commons will not be + liable to You or any party on any legal theory for any damages + whatsoever, including without limitation any general, special, + incidental or consequential damages arising in connection to this + license. Notwithstanding the foregoing two (2) sentences, if Creative + Commons has expressly identified itself as the Licensor hereunder, it + shall have all rights and obligations of Licensor. + + Except for the limited purpose of indicating to the public that the + Work is licensed under the CCPL, Creative Commons does not authorize + the use by either party of the trademark "Creative Commons" or any + related trademark or logo of Creative Commons without the prior + written consent of Creative Commons. Any permitted use will be in + compliance with Creative Commons' then-current trademark usage + guidelines, as may be published on its website or otherwise made + available upon request from time to time. For the avoidance of doubt, + this trademark restriction does not form part of the License. + + Creative Commons may be contacted at https://creativecommons.org/. diff --git a/LICENSES/CC-BY-SA-4.0.txt b/LICENSES/CC-BY-SA-4.0.txt new file mode 100644 index 00000000..835a6836 --- /dev/null +++ b/LICENSES/CC-BY-SA-4.0.txt @@ -0,0 +1,170 @@ +Creative Commons Attribution-ShareAlike 4.0 International + + Creative Commons Corporation (“Creative Commons”) is not a law firm and does not provide legal services or legal advice. Distribution of Creative Commons public licenses does not create a lawyer-client or other relationship. Creative Commons makes its licenses and related information available on an “as-is” basis. Creative Commons gives no warranties regarding its licenses, any material licensed under their terms and conditions, or any related information. Creative Commons disclaims all liability for damages resulting from their use to the fullest extent possible. + +Using Creative Commons Public Licenses + +Creative Commons public licenses provide a standard set of terms and conditions that creators and other rights holders may use to share original works of authorship and other material subject to copyright and certain other rights specified in the public license below. The following considerations are for informational purposes only, are not exhaustive, and do not form part of our licenses. + +Considerations for licensors: Our public licenses are intended for use by those authorized to give the public permission to use material in ways otherwise restricted by copyright and certain other rights. Our licenses are irrevocable. Licensors should read and understand the terms and conditions of the license they choose before applying it. Licensors should also secure all rights necessary before applying our licenses so that the public can reuse the material as expected. Licensors should clearly mark any material not subject to the license. This includes other CC-licensed material, or material used under an exception or limitation to copyright. More considerations for licensors. + +Considerations for the public: By using one of our public licenses, a licensor grants the public permission to use the licensed material under specified terms and conditions. If the licensor’s permission is not necessary for any reason–for example, because of any applicable exception or limitation to copyright–then that use is not regulated by the license. Our licenses grant only permissions under copyright and certain other rights that a licensor has authority to grant. Use of the licensed material may still be restricted for other reasons, including because others have copyright or other rights in the material. A licensor may make special requests, such as asking that all changes be marked or described. + +Although not required by our licenses, you are encouraged to respect those requests where reasonable. More considerations for the public. + +Creative Commons Attribution-ShareAlike 4.0 International Public License + +By exercising the Licensed Rights (defined below), You accept and agree to be bound by the terms and conditions of this Creative Commons Attribution-ShareAlike 4.0 International Public License ("Public License"). To the extent this Public License may be interpreted as a contract, You are granted the Licensed Rights in consideration of Your acceptance of these terms and conditions, and the Licensor grants You such rights in consideration of benefits the Licensor receives from making the Licensed Material available under these terms and conditions. + +Section 1 – Definitions. + + a. Adapted Material means material subject to Copyright and Similar Rights that is derived from or based upon the Licensed Material and in which the Licensed Material is translated, altered, arranged, transformed, or otherwise modified in a manner requiring permission under the Copyright and Similar Rights held by the Licensor. For purposes of this Public License, where the Licensed Material is a musical work, performance, or sound recording, Adapted Material is always produced where the Licensed Material is synched in timed relation with a moving image. + + b. Adapter's License means the license You apply to Your Copyright and Similar Rights in Your contributions to Adapted Material in accordance with the terms and conditions of this Public License. + + c. BY-SA Compatible License means a license listed at creativecommons.org/compatiblelicenses, approved by Creative Commons as essentially the equivalent of this Public License. + + d. Copyright and Similar Rights means copyright and/or similar rights closely related to copyright including, without limitation, performance, broadcast, sound recording, and Sui Generis Database Rights, without regard to how the rights are labeled or categorized. For purposes of this Public License, the rights specified in Section 2(b)(1)-(2) are not Copyright and Similar Rights. + + e. Effective Technological Measures means those measures that, in the absence of proper authority, may not be circumvented under laws fulfilling obligations under Article 11 of the WIPO Copyright Treaty adopted on December 20, 1996, and/or similar international agreements. + + f. Exceptions and Limitations means fair use, fair dealing, and/or any other exception or limitation to Copyright and Similar Rights that applies to Your use of the Licensed Material. + + g. License Elements means the license attributes listed in the name of a Creative Commons Public License. The License Elements of this Public License are Attribution and ShareAlike. + + h. Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. + + i. Licensed Rights means the rights granted to You subject to the terms and conditions of this Public License, which are limited to all Copyright and Similar Rights that apply to Your use of the Licensed Material and that the Licensor has authority to license. + + j. Licensor means the individual(s) or entity(ies) granting rights under this Public License. + + k. Share means to provide material to the public by any means or process that requires permission under the Licensed Rights, such as reproduction, public display, public performance, distribution, dissemination, communication, or importation, and to make material available to the public including in ways that members of the public may access the material from a place and at a time individually chosen by them. + + l. Sui Generis Database Rights means rights other than copyright resulting from Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, as amended and/or succeeded, as well as other essentially equivalent rights anywhere in the world. + + m. You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +Section 2 – Scope. + + a. License grant. + + 1. Subject to the terms and conditions of this Public License, the Licensor hereby grants You a worldwide, royalty-free, non-sublicensable, non-exclusive, irrevocable license to exercise the Licensed Rights in the Licensed Material to: + + A. reproduce and Share the Licensed Material, in whole or in part; and + + B. produce, reproduce, and Share Adapted Material. + + 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions and Limitations apply to Your use, this Public License does not apply, and You do not need to comply with its terms and conditions. + + 3. Term. The term of this Public License is specified in Section 6(a). + + 4. Media and formats; technical modifications allowed. The Licensor authorizes You to exercise the Licensed Rights in all media and formats whether now known or hereafter created, and to make technical modifications necessary to do so. The Licensor waives and/or agrees not to assert any right or authority to forbid You from making technical modifications necessary to exercise the Licensed Rights, including technical modifications necessary to circumvent Effective Technological Measures. For purposes of this Public License, simply making modifications authorized by this Section 2(a)(4) never produces Adapted Material. + + 5. Downstream recipients. + + A. Offer from the Licensor – Licensed Material. Every recipient of the Licensed Material automatically receives an offer from the Licensor to exercise the Licensed Rights under the terms and conditions of this Public License. + + B. Additional offer from the Licensor – Adapted Material. Every recipient of Adapted Material from You automatically receives an offer from the Licensor to exercise the Licensed Rights in the Adapted Material under the conditions of the Adapter’s License You apply. + + C. No downstream restrictions. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, the Licensed Material if doing so restricts exercise of the Licensed Rights by any recipient of the Licensed Material. + + 6. No endorsement. Nothing in this Public License constitutes or may be construed as permission to assert or imply that You are, or that Your use of the Licensed Material is, connected with, or sponsored, endorsed, or granted official status by, the Licensor or others designated to receive attribution as provided in Section 3(a)(1)(A)(i). + + b. Other rights. + + 1. Moral rights, such as the right of integrity, are not licensed under this Public License, nor are publicity, privacy, and/or other similar personality rights; however, to the extent possible, the Licensor waives and/or agrees not to assert any such rights held by the Licensor to the limited extent necessary to allow You to exercise the Licensed Rights, but not otherwise. + + 2. Patent and trademark rights are not licensed under this Public License. + + 3. To the extent possible, the Licensor waives any right to collect royalties from You for the exercise of the Licensed Rights, whether directly or through a collecting society under any voluntary or waivable statutory or compulsory licensing scheme. In all other cases the Licensor expressly reserves any right to collect such royalties. + +Section 3 – License Conditions. + +Your exercise of the Licensed Rights is expressly made subject to the following conditions. + + a. Attribution. + + 1. If You Share the Licensed Material (including in modified form), You must: + + A. retain the following if it is supplied by the Licensor with the Licensed Material: + + i. identification of the creator(s) of the Licensed Material and any others designated to receive attribution, in any reasonable manner requested by the Licensor (including by pseudonym if designated); + + ii. a copyright notice; + + iii. a notice that refers to this Public License; + + iv. a notice that refers to the disclaimer of warranties; + + v. a URI or hyperlink to the Licensed Material to the extent reasonably practicable; + + B. indicate if You modified the Licensed Material and retain an indication of any previous modifications; and + + C. indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. + + 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable manner based on the medium, means, and context in which You Share the Licensed Material. For example, it may be reasonable to satisfy the conditions by providing a URI or hyperlink to a resource that includes the required information. + + 3. If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. + + b. ShareAlike.In addition to the conditions in Section 3(a), if You Share Adapted Material You produce, the following conditions also apply. + + 1. The Adapter’s License You apply must be a Creative Commons license with the same License Elements, this version or later, or a BY-SA Compatible License. + + 2. You must include the text of, or the URI or hyperlink to, the Adapter's License You apply. You may satisfy this condition in any reasonable manner based on the medium, means, and context in which You Share Adapted Material. + + 3. You may not offer or impose any additional or different terms or conditions on, or apply any Effective Technological Measures to, Adapted Material that restrict exercise of the rights granted under the Adapter's License You apply. + +Section 4 – Sui Generis Database Rights. + +Where the Licensed Rights include Sui Generis Database Rights that apply to Your use of the Licensed Material: + + a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, reuse, reproduce, and Share all or a substantial portion of the contents of the database; + + b. if You include all or a substantial portion of the database contents in a database in which You have Sui Generis Database Rights, then the database in which You have Sui Generis Database Rights (but not its individual contents) is Adapted Material, including for purposes of Section 3(b); and + + c. You must comply with the conditions in Section 3(a) if You Share all or a substantial portion of the contents of the database. +For the avoidance of doubt, this Section 4 supplements and does not replace Your obligations under this Public License where the Licensed Rights include other Copyright and Similar Rights. + +Section 5 – Disclaimer of Warranties and Limitation of Liability. + + a. Unless otherwise separately undertaken by the Licensor, to the extent possible, the Licensor offers the Licensed Material as-is and as-available, and makes no representations or warranties of any kind concerning the Licensed Material, whether express, implied, statutory, or other. This includes, without limitation, warranties of title, merchantability, fitness for a particular purpose, non-infringement, absence of latent or other defects, accuracy, or the presence or absence of errors, whether or not known or discoverable. Where disclaimers of warranties are not allowed in full or in part, this disclaimer may not apply to You. + + b. To the extent possible, in no event will the Licensor be liable to You on any legal theory (including, without limitation, negligence) or otherwise for any direct, special, indirect, incidental, consequential, punitive, exemplary, or other losses, costs, expenses, or damages arising out of this Public License or use of the Licensed Material, even if the Licensor has been advised of the possibility of such losses, costs, expenses, or damages. Where a limitation of liability is not allowed in full or in part, this limitation may not apply to You. + + c. The disclaimer of warranties and limitation of liability provided above shall be interpreted in a manner that, to the extent possible, most closely approximates an absolute disclaimer and waiver of all liability. + +Section 6 – Term and Termination. + + a. This Public License applies for the term of the Copyright and Similar Rights licensed here. However, if You fail to comply with this Public License, then Your rights under this Public License terminate automatically. + + b. Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + + 1. automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or + + 2. upon express reinstatement by the Licensor. + + c. For the avoidance of doubt, this Section 6(b) does not affect any right the Licensor may have to seek remedies for Your violations of this Public License. + + d. For the avoidance of doubt, the Licensor may also offer the Licensed Material under separate terms or conditions or stop distributing the Licensed Material at any time; however, doing so will not terminate this Public License. + + e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +Section 7 – Other Terms and Conditions. + + a. The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. + + b. Any arrangements, understandings, or agreements regarding the Licensed Material not stated herein are separate from and independent of the terms and conditions of this Public License. + +Section 8 – Interpretation. + + a. For the avoidance of doubt, this Public License does not, and shall not be interpreted to, reduce, limit, restrict, or impose conditions on any use of the Licensed Material that could lawfully be made without permission under this Public License. + + b. To the extent possible, if any provision of this Public License is deemed unenforceable, it shall be automatically reformed to the minimum extent necessary to make it enforceable. If the provision cannot be reformed, it shall be severed from this Public License without affecting the enforceability of the remaining terms and conditions. + + c. No term or condition of this Public License will be waived and no failure to comply consented to unless expressly agreed to by the Licensor. + + d. Nothing in this Public License constitutes or may be interpreted as a limitation upon, or waiver of, any privileges and immunities that apply to the Licensor or You, including from the legal processes of any jurisdiction or authority. + +Creative Commons is not a party to its public licenses. Notwithstanding, Creative Commons may elect to apply one of its public licenses to material it publishes and in those instances will be considered the “Licensor.” Except for the limited purpose of indicating that material is shared under a Creative Commons public license or as otherwise permitted by the Creative Commons policies published at creativecommons.org/policies, Creative Commons does not authorize the use of the trademark “Creative Commons” or any other trademark or logo of Creative Commons without its prior written consent including, without limitation, in connection with any unauthorized modifications to any of its public licenses or any other arrangements, understandings, or agreements concerning use of licensed material. For the avoidance of doubt, this paragraph does not form part of the public licenses. + +Creative Commons may be contacted at creativecommons.org. diff --git a/LICENSES/CC0-1.0.txt b/LICENSES/CC0-1.0.txt new file mode 100644 index 00000000..0e259d42 --- /dev/null +++ b/LICENSES/CC0-1.0.txt @@ -0,0 +1,121 @@ +Creative Commons Legal Code + +CC0 1.0 Universal + + CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE + LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN + ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS + INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES + REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS + PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM + THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED + HEREUNDER. + +Statement of Purpose + +The laws of most jurisdictions throughout the world automatically confer +exclusive Copyright and Related Rights (defined below) upon the creator +and subsequent owner(s) (each and all, an "owner") of an original work of +authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for +the purpose of contributing to a commons of creative, cultural and +scientific works ("Commons") that the public can reliably and without fear +of later claims of infringement build upon, modify, incorporate in other +works, reuse and redistribute as freely as possible in any form whatsoever +and for any purposes, including without limitation commercial purposes. +These owners may contribute to the Commons to promote the ideal of a free +culture and the further production of creative, cultural and scientific +works, or to gain reputation or greater distribution for their Work in +part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any +expectation of additional consideration or compensation, the person +associating CC0 with a Work (the "Affirmer"), to the extent that he or she +is an owner of Copyright and Related Rights in the Work, voluntarily +elects to apply CC0 to the Work and publicly distribute the Work under its +terms, with knowledge of his or her Copyright and Related Rights in the +Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. A Work made available under CC0 may be +protected by copyright and related or neighboring rights ("Copyright and +Related Rights"). Copyright and Related Rights include, but are not +limited to, the following: + + i. the right to reproduce, adapt, distribute, perform, display, + communicate, and translate a Work; + ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or + likeness depicted in a Work; + iv. rights protecting against unfair competition in regards to a Work, + subject to the limitations in paragraph 4(a), below; + v. rights protecting the extraction, dissemination, use and reuse of data + in a Work; + vi. database rights (such as those arising under Directive 96/9/EC of the + European Parliament and of the Council of 11 March 1996 on the legal + protection of databases, and under any national implementation + thereof, including any amended or successor version of such + directive); and +vii. other similar, equivalent or corresponding rights throughout the + world based on applicable law or treaty, and any national + implementations thereof. + +2. Waiver. To the greatest extent permitted by, but not in contravention +of, applicable law, Affirmer hereby overtly, fully, permanently, +irrevocably and unconditionally waives, abandons, and surrenders all of +Affirmer's Copyright and Related Rights and associated claims and causes +of action, whether now known or unknown (including existing as well as +future claims and causes of action), in the Work (i) in all territories +worldwide, (ii) for the maximum duration provided by applicable law or +treaty (including future time extensions), (iii) in any current or future +medium and for any number of copies, and (iv) for any purpose whatsoever, +including without limitation commercial, advertising or promotional +purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each +member of the public at large and to the detriment of Affirmer's heirs and +successors, fully intending that such Waiver shall not be subject to +revocation, rescission, cancellation, termination, or any other legal or +equitable action to disrupt the quiet enjoyment of the Work by the public +as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. Should any part of the Waiver for any reason +be judged legally invalid or ineffective under applicable law, then the +Waiver shall be preserved to the maximum extent permitted taking into +account Affirmer's express Statement of Purpose. In addition, to the +extent the Waiver is so judged Affirmer hereby grants to each affected +person a royalty-free, non transferable, non sublicensable, non exclusive, +irrevocable and unconditional license to exercise Affirmer's Copyright and +Related Rights in the Work (i) in all territories worldwide, (ii) for the +maximum duration provided by applicable law or treaty (including future +time extensions), (iii) in any current or future medium and for any number +of copies, and (iv) for any purpose whatsoever, including without +limitation commercial, advertising or promotional purposes (the +"License"). The License shall be deemed effective as of the date CC0 was +applied by Affirmer to the Work. Should any part of the License for any +reason be judged legally invalid or ineffective under applicable law, such +partial invalidity or ineffectiveness shall not invalidate the remainder +of the License, and in such case Affirmer hereby affirms that he or she +will not (i) exercise any of his or her remaining Copyright and Related +Rights in the Work or (ii) assert any associated claims and causes of +action with respect to the Work, in either case contrary to Affirmer's +express Statement of Purpose. + +4. Limitations and Disclaimers. + + a. No trademark or patent rights held by Affirmer are waived, abandoned, + surrendered, licensed or otherwise affected by this document. + b. Affirmer offers the Work as-is and makes no representations or + warranties of any kind concerning the Work, express, implied, + statutory or otherwise, including without limitation warranties of + title, merchantability, fitness for a particular purpose, non + infringement, or the absence of latent or other defects, accuracy, or + the present or absence of errors, whether or not discoverable, all to + the greatest extent permissible under applicable law. + c. Affirmer disclaims responsibility for clearing rights of other persons + that may apply to the Work or any use thereof, including without + limitation any person's Copyright and Related Rights in the Work. + Further, Affirmer disclaims responsibility for obtaining any necessary + consents, permissions or other rights required for any use of the + Work. + d. Affirmer understands and acknowledges that Creative Commons is not a + party to this document and has no duty or obligation with respect to + this CC0 or use of the Work. diff --git a/LICENSES/GPL-3.0-or-later.txt b/LICENSES/GPL-3.0-or-later.txt new file mode 100644 index 00000000..f6cdd22a --- /dev/null +++ b/LICENSES/GPL-3.0-or-later.txt @@ -0,0 +1,232 @@ +GNU GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the Program. + +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + + c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + + d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + + e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + +You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . diff --git a/LICENSES/LGPL-2.1-only.txt b/LICENSES/LGPL-2.1-only.txt new file mode 100644 index 00000000..c6487f4f --- /dev/null +++ b/LICENSES/LGPL-2.1-only.txt @@ -0,0 +1,176 @@ +GNU LESSER GENERAL PUBLIC LICENSE + +Version 2.1, February 1999 + +Copyright (C) 1991, 1999 Free Software Foundation, Inc. +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] + +Preamble + +The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. + +This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. + +When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. + +To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. + +For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. + +We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. + +To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. + +Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. + +Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. + +When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. + +We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. + +For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. + +In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. + +Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. + +The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. + +GNU LESSER GENERAL PUBLIC LICENSE +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". + +A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. + +The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) + +"Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. + +Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. + +1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. + +You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. + +2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. + +(For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. + +3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. + +Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. + +This option is useful when you wish to copy part of the code of the Library into a program that is not a library. + +4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. + +If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. + +5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. + +However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. + +When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. + +If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) + +Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. + +6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. + +You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: + + a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. + + e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. + +For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. + +It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. + +7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. + + b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. + +8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. + +9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. + +10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. + +11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. + +This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. + +12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. + +13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. + +14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. + +NO WARRANTY + +15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Libraries + +If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). + +To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. + + one line to give the library's name and an idea of what it does. + Copyright (C) year name of author + + This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright interest in +the library `Frob' (a library for tweaking knobs) written +by James Random Hacker. + +signature of Ty Coon, 1 April 1990 +Ty Coon, President of Vice +That's all there is to it! diff --git a/LICENSES/LGPL-3.0-only.txt b/LICENSES/LGPL-3.0-only.txt new file mode 100644 index 00000000..513d1c01 --- /dev/null +++ b/LICENSES/LGPL-3.0-only.txt @@ -0,0 +1,304 @@ +GNU LESSER GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. + +0. Additional Definitions. + +As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. + +"The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. + +An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. + +A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". + +The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. + +The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. + +1. Exception to Section 3 of the GNU GPL. +You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. + +2. Conveying Modified Versions. +If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: + + a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. + +3. Object Code Incorporating Material from Library Header Files. +The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license document. + +4. Combined Works. +You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: + + a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license document. + + c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. + + e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) + +5. Combined Libraries. +You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. + +6. Revised Versions of the GNU Lesser General Public License. +The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. + +GNU GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the Program. + +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + + c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + + d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + + e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + +You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . diff --git a/LICENSES/LGPL-3.0-or-later.txt b/LICENSES/LGPL-3.0-or-later.txt new file mode 100644 index 00000000..513d1c01 --- /dev/null +++ b/LICENSES/LGPL-3.0-or-later.txt @@ -0,0 +1,304 @@ +GNU LESSER GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 + +Copyright (C) 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. + +0. Additional Definitions. + +As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. + +"The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. + +An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. + +A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". + +The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. + +The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. + +1. Exception to Section 3 of the GNU GPL. +You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. + +2. Conveying Modified Versions. +If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: + + a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. + +3. Object Code Incorporating Material from Library Header Files. +The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license document. + +4. Combined Works. +You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: + + a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license document. + + c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. + + e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) + +5. Combined Libraries. +You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. + +6. Revised Versions of the GNU Lesser General Public License. +The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. + +If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. + +GNU GENERAL PUBLIC LICENSE +Version 3, 29 June 2007 + +Copyright © 2007 Free Software Foundation, Inc. + +Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. + +Preamble + +The GNU General Public License is a free, copyleft license for software and other kinds of works. + +The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. + +To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. + +For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. + +Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. + +For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. + +Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. + +Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. + +The precise terms and conditions for copying, distribution and modification follow. + +TERMS AND CONDITIONS + +0. Definitions. + +“This License” refers to version 3 of the GNU General Public License. + +“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. + +“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. + +To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. + +A “covered work” means either the unmodified Program or a work based on the Program. + +To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. + +To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. + +An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. + +1. Source Code. +The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. + +A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. + +The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. + +The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. + +The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. + +The Corresponding Source for a work in source code form is that same work. + +2. Basic Permissions. +All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. + +You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. + +Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. + +3. Protecting Users' Legal Rights From Anti-Circumvention Law. +No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. + +When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. + +4. Conveying Verbatim Copies. +You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. + +You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. + +5. Conveying Modified Source Versions. +You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. + + c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. + +A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. + +6. Conveying Non-Source Forms. +You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: + + a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. + + d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. + +A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. + +A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. + +“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. + +If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). + +The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. + +Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. + +7. Additional Terms. +“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. + +When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. + +Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or authors of the material; or + + e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. + +All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. + +If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. + +Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. + +8. Termination. +You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). + +However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. + +Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. + +Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. + +9. Acceptance Not Required for Having Copies. +You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. + +10. Automatic Licensing of Downstream Recipients. +Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. + +An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. + +You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. + +11. Patents. +A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. + +A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. + +Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. + +In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. + +If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. + +If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. + +A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. + +Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. + +12. No Surrender of Others' Freedom. +If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. + +13. Use with the GNU Affero General Public License. +Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. + +14. Revised Versions of this License. +The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. + +If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. + +Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. + +15. Disclaimer of Warranty. +THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + +16. Limitation of Liability. +IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +17. Interpretation of Sections 15 and 16. +If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + +If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. + +To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + +If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. + +You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . + +The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . diff --git a/LICENSES/LicenseRef-DbCL-1.0.txt b/LICENSES/LicenseRef-DbCL-1.0.txt new file mode 100644 index 00000000..38af415a --- /dev/null +++ b/LICENSES/LicenseRef-DbCL-1.0.txt @@ -0,0 +1,54 @@ +Database Contents License (DbCL) v1.0 + +Source: https://opendatacommons.org/licenses/dbcl/1-0/ (reproduced verbatim, +including the page's wording "presence of absence of errors") + +The Licensor and You agree as follows: + +1.0 Definitions of Capitalised Words + +The definitions of the Open Database License (ODbL) 1.0 are incorporated by reference into the Database Contents License. + +2.0 Rights granted and Conditions of Use + +2.1 Rights granted. The Licensor grants to You a worldwide, +royalty-free, non-exclusive, perpetual, irrevocable copyright license to +do any act that is restricted by copyright over anything within the +Contents, whether in the original medium or any other. These rights +explicitly include commercial use, and do not exclude any field of +endeavour. These rights include, without limitation, the right to +sublicense the work. + +2.2 Conditions of Use. You must comply with the ODbL. + +2.3 Relationship to Databases and ODbL. This license does not cover any +Database Rights, Database copyright, or contract over the Contents as +part of the Database. Please see the ODbL covering the Database for more +details about Your rights and obligations. + +2.4 Non-assertion of copyright over facts. The Licensor takes the +position that factual information is not covered by copyright. The DbCL +grants you permission for any information having copyright contained in +the Contents. + +3.0 Warranties, disclaimer, and limitation of liability + +3.1 The Contents are licensed by the Licensor “as is” and without any +warranty of any kind, either express or implied, whether of title, of +accuracy, of the presence of absence of errors, of fitness for purpose, +or otherwise. Some jurisdictions do not allow the exclusion of implied +warranties, so this exclusion may not apply to You. + +3.2 Subject to any liability that may not be excluded or limited by law, +the Licensor is not liable for, and expressly excludes, all liability +for loss or damage however and whenever caused to anyone by any use +under this License, whether by You or by anyone else, and whether caused +by any fault on the part of the Licensor or not. This exclusion of +liability includes, but is not limited to, any special, incidental, +consequential, punitive, or exemplary damages. This exclusion applies +even if the Licensor has been advised of the possibility of such +damages. + +3.3 If liability may not be excluded by law, it is limited to actual and +direct financial loss to the extent it is caused by proved negligence on +the part of the Licensor. diff --git a/LICENSES/LicenseRef-LBNL-WholeFrog.txt b/LICENSES/LicenseRef-LBNL-WholeFrog.txt new file mode 100644 index 00000000..9a416da3 --- /dev/null +++ b/LICENSES/LicenseRef-LBNL-WholeFrog.txt @@ -0,0 +1,23 @@ +Lawrence Berkeley National Laboratory, Whole Frog Project data terms + +Source: the `Copyright.Notice` file published beside the data at +https://froggy.lbl.gov/images/whole.frog/data/ (Whole Frog Project, +Information and Computing Sciences Division, Lawrence Berkeley National +Laboratory, 1993-1995). This is not an SPDX-listed licence; the wording it +is based on is quoted here. + +The notice states: + + "These images and data were produced at Lawrence Berkeley Laboratory + by Bill Johnston and Wing Nip of the Information and Computing + Sciences Division ... This data is provided for the purpose of + scientific research and collaboration with Lawrence Berkeley + Laboratory. Any commercial use of these images and data require prior + agreement with Lawrence Berkeley Laboratory. The images and data are + Copyright Lawrence Berkeley Laboratory." + +What this means for a downstream user: + + - the data may be used for scientific research; + - the copyright and the credit to Lawrence Berkeley Laboratory must be kept; + - any commercial use needs a prior agreement with the laboratory. diff --git a/LICENSES/LicenseRef-MINC.txt b/LICENSES/LicenseRef-MINC.txt new file mode 100644 index 00000000..52742977 --- /dev/null +++ b/LICENSES/LicenseRef-MINC.txt @@ -0,0 +1,19 @@ +MINC library notice + +Source: the `COPYING` file of the MINC library, +https://github.com/BIC-MNI/minc/blob/master/COPYING, quoted in full. The +notice is an MIT-style permission whose exact wording SPDX does not list. + + Copyright the MINC developers, McConnell Brain Imaging Centre, + Montreal Neurological Institute, McGill University. + + Permission to use, copy, modify, and distribute this software and its + documentation for any purpose and without fee is hereby granted, + provided that the above copyright notice appear in all copies. The + author and McGill University make no representations about the + suitability of this software for any purpose. It is provided "as is" + without express or implied warranty. + +What this means for a downstream user: use, copying, modification and +distribution for any purpose are permitted, provided the copyright notice +above appears in all copies. diff --git a/LICENSES/LicenseRef-NASA-Media.txt b/LICENSES/LicenseRef-NASA-Media.txt new file mode 100644 index 00000000..33586fc1 --- /dev/null +++ b/LICENSES/LicenseRef-NASA-Media.txt @@ -0,0 +1,58 @@ +NASA Media Usage Guidelines + +Source: https://www.nasa.gov/nasa-brand-center/images-and-media/ (read on +2026-09-28; the page's dashes and curly apostrophes are rendered as hyphens +and straight apostrophes here). This is not an SPDX-listed licence; the +wording it is based on is quoted here. + +The page opens with: + + "The NASA Insignia, Logotype, identifiers, and imagery are not in the + public domain. The use of the Insignia, Logotype and NASA identifiers + is protected by law, and imagery is made available for use consistent + with Media Usage Guidelines." + +The guidelines then state, verbatim: + + "NASA content - images, audio, video, and media files used in the + rendition of 3-dimensional models, such as texture maps and polygon + data in any format - generally are not subject to copyright in the + United States. You may use this material for educational or + informational purposes, including photo collections, textbooks, public + exhibits, computer graphical simulations and Internet Web pages. This + general permission extends to personal Web pages." + + "NASA content used in a factual manner that does not imply endorsement + may be used without needing explicit permission. NASA should be + acknowledged as the source of the material. NASA occasionally uses + copyright-protected material of third parties with permission on its + website. Those images will be marked identified as copyright protected + with the name of the copyright holder. NASA's use does not convey any + rights to others to use the same material. Those wishing to use + copyright protected material of third parties must contact the + copyright holder directly." + + "If the NASA material is to be used for commercial purposes, including + advertisements, it must not explicitly or implicitly convey NASA's + endorsement of commercial goods or services." + + "If a NASA image, audio, video or media includes an identifiable + person, using the media for commercial purposes may infringe that + person's right of privacy or publicity, and permission should be + obtained from the person." + +What this means for a downstream user: + + - "generally" is the page's word. NASA content is generally, not always, + free of copyright, and the statement is limited to the United States. + Third-party material NASA publishes with permission stays its owner's + and is marked as such on NASA's pages; NASA insignia, logotype and + identifiers are not covered. + - NASA must be acknowledged as the source of the material, which is why + `attribution_required = true`. + - Commercial use is permitted as long as it does not convey NASA's + endorsement. Media showing an identifiable person needs that person's + permission for commercial use. + +Datasets in this repository derived from NASA releases carry the +acknowledgement in the `attribution` field of their entry in DATASETS.toml. diff --git a/LICENSES/LicenseRef-PaulBourke-PersonalUse.txt b/LICENSES/LicenseRef-PaulBourke-PersonalUse.txt new file mode 100644 index 00000000..088556c6 --- /dev/null +++ b/LICENSES/LicenseRef-PaulBourke-PersonalUse.txt @@ -0,0 +1,15 @@ +Paul Bourke website terms + +Source: the copyright notice on https://paulbourke.net/, which covers every +page and file of the site unless a third-party contributor is indicated. +This is not a licence SPDX lists; the wording it is based on is quoted here. + +The notice states: + + "The contents of this web site are Copyright Paul Bourke or a third + party contributor where indicated. You may print or save an electronic + copy of parts of this web site for personal use, permission must be + sought for any other use." + +What this means for a downstream user: personal use only. Redistribution, +commercial use and any other use need Paul Bourke's permission. diff --git a/LICENSES/LicenseRef-PublicDomain.txt b/LICENSES/LicenseRef-PublicDomain.txt new file mode 100644 index 00000000..4b48516d --- /dev/null +++ b/LICENSES/LicenseRef-PublicDomain.txt @@ -0,0 +1,29 @@ +Public Domain + +Source: written for this repository. It rests on no single text; the +reason each dataset is in the public domain is recorded in that dataset's +`notes`, as described below. + +Used for work that is in the public domain, where the reason is recorded in +the `notes` of each dataset that carries this identifier. The reason matters, +because it decides who else the status binds: + + - Copyright has expired. The work is old enough that no term still runs + anywhere the repository is used. + + - It is a work of the United States federal government. 17 U.S.C. Sec. 105 + denies copyright to works prepared by federal employees in the course of + their duties. This does not extend to contractor-produced work, nor to + the same work in other jurisdictions. + + - The author dedicated it to the public domain in their own words, rather + than through CC0 or another instrument. Such a dedication is recorded + verbatim in the dataset's `notes` so a reader can judge it. + +No permission is needed, no credit is required, and there is no restriction +on commercial use. Crediting the author is still good practice, and each +entry records who that is where it is known. + +Do not reach for this identifier because a source is silent about its terms. +Silence is `LicenseRef-Unknown`. This one is for a status that has been +established and can be pointed at. diff --git a/LICENSES/LicenseRef-SimScale-PublicProject.txt b/LICENSES/LicenseRef-SimScale-PublicProject.txt new file mode 100644 index 00000000..f0a68fba --- /dev/null +++ b/LICENSES/LicenseRef-SimScale-PublicProject.txt @@ -0,0 +1,43 @@ +SimScale Public Project Data + +Source: https://www.simscale.com/terms-and-conditions/ (SimScale License +Terms, "Version July 2023", clause 5.2, read on 2026-09-28; the page's curly +quotation marks are rendered straight here). The public project library is +at https://www.simscale.com/projects/. This is not an SPDX-listed licence; +the wording it is based on is quoted here. + +Clause 5.1 keeps ownership of all Content with the customer who uploaded or +generated it. Clause 5.2 states, verbatim: + + "Customer acknowledges that the Content uploaded or generated by + Customer or Permitted Users under a Free Plan ("Community Content") + shall be accessible by third-party users of the Services and visitors + of SimScale's websites. Customer grants (and shall procure that + Permitted Users grant) to SimScale and any third-party users of the + Services and visitors of SimScale's websites the non-exclusive, + unlimited (in terms of time, territory and content), sublicensable, + transferable, royalty-free and irrevocable right to comprehensively use + the Community Content in any known and currently unknown manner, in + particular to reproduce, distribute, publish, put on display, recite, + perform, present, make available to the public, send, forward or + otherwise communicate to the public the Community Content in all media + via any way and technique of transmission, regardless of the devices + used therefor, and to change, translate, create derivative works from + or otherwise rearrange the Community Content. Such right shall also + include the right to use and exploit any such changed, translated or + otherwise rearranged Community Content and derivative works in the + above mentioned manner. SimScale reserves the right to delete any + Community Content that has not been accessed or otherwise used by + Customer or Permitted Users for more than six (6) months." + +What this means for a downstream user: Community Content may be reproduced, +distributed, published, modified and used commercially, and no attribution +is asked for. The grant is the uploading customer's and covers Content +uploaded or generated under a Free Plan. Clause 5.3 makes Paid Plan content +("Professional Content") private unless its owner shares it, and grants +visitors nothing over it; neither clause addresses projects SimScale +publishes under its own account. + +This identifier records the terms as they read when the data was retrieved. +SimScale may revise them, so anyone relying on these datasets commercially +should read the current version at the URL above. diff --git a/LICENSES/LicenseRef-StanfordScanningRepository.txt b/LICENSES/LicenseRef-StanfordScanningRepository.txt new file mode 100644 index 00000000..d5619b68 --- /dev/null +++ b/LICENSES/LicenseRef-StanfordScanningRepository.txt @@ -0,0 +1,38 @@ +Stanford Computer Graphics Laboratory, 3D Scanning Repository: Conditions of Use + +Source: http://graphics.stanford.edu/data/3Dscanrep/ + +The Stanford 3D Scanning Repository publishes the following conditions of +use, quoted verbatim from the repository page: + + "You are welcome to use the data and models for research purposes. You + are also welcome to mirror or redistribute them for free. Finally, you + may publish images made using these models, or the images on this web + site, in a scholarly article or book - as long as credit is given to the + Stanford Computer Graphics Laboratory. However, such models or images + are not to be used for commercial purposes, nor should they appear in a + product for sale (with the exception of scholarly journals or books), + without our permission." + +Under the heading "Inappropriate uses of these models", the same page adds, +again verbatim: + + "As you browse this repository and think about how you might use our 3D + models and range datasets, please remember that several of these + artifacts have religious or cultural significance. Aside from the buddha, + which is a religious symbol revered by hundreds of millions of people, + the dragon is a symbol of Chinese culture, the Thai statue contains + elements of religious significance to Hindus, and Lucy is a Christian + angel; statues like her are commonly seen in Italian churches. Keep your + renderings and other uses of these particular models in good taste. Don't + animate or morph them, don't apply Boolean operators to them, and don't + simulate nasty things happening to them (like breaking, exploding, + melting, etc.). Choose another model for these sorts of experiments. (You + can do anything you want to the Stanford bunny or the armadillo.)" + +Required acknowledgement: credit the Stanford Computer Graphics Laboratory. + +This is not an OSI-approved or Creative Commons license. It permits free +redistribution and research use but restricts commercial use, so datasets +under these terms are not safe to embed in a product for sale without first +contacting the Stanford Computer Graphics Laboratory. diff --git a/LICENSES/LicenseRef-TrainingImagesLibrary.txt b/LICENSES/LicenseRef-TrainingImagesLibrary.txt new file mode 100644 index 00000000..188e56fd --- /dev/null +++ b/LICENSES/LicenseRef-TrainingImagesLibrary.txt @@ -0,0 +1,19 @@ +Training Images Library terms + +Source: http://www.trainingimages.org/training-images-library.html + +The training images library accompanies the book "Multiple-point +Geostatistics: Stochastic Modeling with Training Images" by Gregoire +Mariethoz and Jef Caers. Its download page introduces the images with: + + Below are some of the training images that are employed in the book. + They are presented both graphically and in ASCII format. These images + be used freely for research purposes. Enjoy! + +That grant is limited to research. Nothing on the page permits commercial +use, and no other terms are published, so commercial use is treated as not +granted. Redistribution for research purposes, which is what this repository +does, is within the grant. + +Archived copy of the page: +http://web.archive.org/web/20150509032421id_/http://www.trainingimages.org/training-images-library.html diff --git a/LICENSES/LicenseRef-Unknown.txt b/LICENSES/LicenseRef-Unknown.txt new file mode 100644 index 00000000..f7cf5237 --- /dev/null +++ b/LICENSES/LicenseRef-Unknown.txt @@ -0,0 +1,29 @@ +Undetermined License + +Source: written for this repository. It is a statement that no terms could +be established, not a licence text, and it rests on nothing beyond what +each dataset's `notes` record. + +This identifier marks a dataset whose licensing could not be established. + +It is used when the origin of a file could not be traced to a source that +states terms of use: typically a file inherited from an upstream test-data +collection that carries no per-file provenance, or a mesh whose only +recorded history is a redistribution by a third party. + +A dataset carrying this identifier: + + - has a `notes` field describing what was and was not established, and + - MUST NOT be assumed to be freely licensed. + +It says nothing about `provenance`, which records confidence in the origin +rather than in the licence. A dataset can have a certain source and +undetermined terms: the Laser Design scans are `provenance = "verified"` +because the archive they came from is known, and carry this identifier +because that archive grants no rights. + +Downstream users redistributing these files, especially in a commercial +product, should establish the terms independently or substitute a dataset +with documented licensing. Anyone who can identify the origin of one of +these files is asked to open an issue at +https://github.com/pyvista/data/issues. diff --git a/LICENSES/LicenseRef-UtahTeapot.txt b/LICENSES/LicenseRef-UtahTeapot.txt new file mode 100644 index 00000000..47f6b038 --- /dev/null +++ b/LICENSES/LicenseRef-UtahTeapot.txt @@ -0,0 +1,40 @@ +Utah Teapot terms of use + +Source: https://graphics.cs.utah.edu/teapot/, the University of Utah +Graphics Lab's Utah Teapot page ("the official Utah Teapot page"), read on +2026-09-28; the page's curly quotation marks are rendered straight here. +Background: https://en.wikipedia.org/wiki/Utah_teapot. This is not an +SPDX-listed licence; the wording it is based on is quoted here. + +Martin Newell created the dataset at the University of Utah in 1975. No +formal licence was ever issued for the original data, and for decades the +model circulated on that basis: Wikipedia records that versions of it "are +distributed with or freely available for nearly every current rendering and +modeling program and even many graphic APIs". The University of Utah's +page now states terms, under the heading "Terms of Use and Attribution", +verbatim: + + "The Utah Teapot model files are freely available for any use, + including commercial use. To preserve the historical identity and + provenance of the model, users are requested to identify the model, + and any substantially derived version of it, as a Utah Teapot (or + Modified Utah Teapot) and to acknowledge its origin as the historic + Utah Teapot developed at the University of Utah. This request is + intended solely to preserve the historical identity of the Utah Teapot + and is not intended to restrict use of the model. The model files are + provided "as is," without warranty of any kind. The provider of these + files shall not be liable for any claims, damages, or other liability + arising from their use." + +What this means for a downstream user: any use, including commercial use, +is permitted. Credit is requested, not required, which is why +`attribution_required = false`. The page asks that the model be identified +as a Utah Teapot (or Modified Utah Teapot) and its origin acknowledged as +the University of Utah; the `attribution` field of each entry here is this +repository's wording of that request, not a form the page prescribes. + +The page does not use the words "public domain", and no rights statement +by Martin Newell was found, so this identifier is a stated permission plus +a convention, not a public-domain dedication. The copies here (`teapot.g`, +`TeapotPoints.txt`, `teapot.wrl`) came through VTK and the VTK Examples, +not from that page; their entries record the route. diff --git a/LICENSES/LicenseRef-Viewpoint-DataLabs.txt b/LICENSES/LicenseRef-Viewpoint-DataLabs.txt new file mode 100644 index 00000000..7c451eab --- /dev/null +++ b/LICENSES/LicenseRef-Viewpoint-DataLabs.txt @@ -0,0 +1,61 @@ +Viewpoint Animation Engineering / Viewpoint DataLabs dataset terms + +Source: the header of `Data/cow.obj` (the same bytes as +`Data/Viewpoint/cow.obj`), the only file under this identifier that carries +any text; `cow.g`, `cow.vtp`, `cowHead.vtp`, `iflamigm.3ds` and +`iflamingo.3ds` carry none. VTKData commit +e8098138988b98aac743429577f669454f57f7e8 (Jim Miller, 20 August 2001, +"Files distributed with permission from Viewpoint") brought `cow.g`, +`cow.obj` and `iflamigm.3ds` into VTK's data with a README beside them. +This is not an SPDX-listed licence; the wording it is based on is quoted +here. + +The `cow.obj` header reads, verbatim (tabs rendered as spaces): + + # Tue Oct 27 19:16:44 1992 + # + # Cow (moo) + # + # Courtesy of: + # + # Viewpoint Animation Engineering + # 870 West Center + # Orem, Utah 84057 + # (801)224-2222 + # 1-800-DATASET + # + $ Contributed to the FTP site at avalon.chinalake.navy.mil (129.131.31.11) + # by Scott R. Nelson of Sun Microsystems (srnelson@eng.sun.com) + # + # (c) Copyright 1992 Viewpoint Animation Engineering Inc. + # Sun Microsystems has been authorized to freely distribute + # these Datasets. They are provided for unlimited use in + # existing or modified form. The actual Dataset (ie, geometry) + # may not, however, be resold in existing or modified form. + # + +The README that commit added beside the files, which this repository no +longer carries, read in full: + + Datasets provided by Viewpoint DataLabs International, Inc. + 625 South State Street + Orem, Utah 84058 + 1 801 229 3000 + + http://www.viewpoint.com + + These folks have a massive collection of high quality datasets for sale. + They also host the avalon repository of free datasets. + +What this means for a downstream user: + + - The header authorizes Sun Microsystems to distribute the datasets, and + VTK's commit message records that Kitware distributes them with + Viewpoint's permission. It does not grant redistribution to everyone. + - It grants unlimited use in existing or modified form. + - The geometry may not be resold in existing or modified form, which is + why `commercial_use = false`. A product that merely uses the model is + not addressed either way. + - No credit is asked for. The header names Viewpoint Animation + Engineering, Orem, Utah, as the source, and the Avalon archive as the + route by which Sun contributed the file. diff --git a/LICENSES/MIT.txt b/LICENSES/MIT.txt new file mode 100644 index 00000000..d817195d --- /dev/null +++ b/LICENSES/MIT.txt @@ -0,0 +1,18 @@ +MIT License + +Copyright (c) + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the +following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial +portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO +EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/LICENSES/ODbL-1.0.txt b/LICENSES/ODbL-1.0.txt new file mode 100644 index 00000000..8ca51c35 --- /dev/null +++ b/LICENSES/ODbL-1.0.txt @@ -0,0 +1,540 @@ +## Open Data Commons Open Database License (ODbL) + +### Preamble + +The Open Database License (ODbL) is a license agreement intended to +allow users to freely share, modify, and use this Database while +maintaining this same freedom for others. Many databases are covered by +copyright, and therefore this document licenses these rights. Some +jurisdictions, mainly in the European Union, have specific rights that +cover databases, and so the ODbL addresses these rights, too. Finally, +the ODbL is also an agreement in contract for users of this Database to +act in certain ways in return for accessing this Database. + +Databases can contain a wide variety of types of content (images, +audiovisual material, and sounds all in the same database, for example), +and so the ODbL only governs the rights over the Database, and not the +contents of the Database individually. Licensors should use the ODbL +together with another license for the contents, if the contents have a +single set of rights that uniformly covers all of the contents. If the +contents have multiple sets of different rights, Licensors should +describe what rights govern what contents together in the individual +record or in some other way that clarifies what rights apply. + +Sometimes the contents of a database, or the database itself, can be +covered by other rights not addressed here (such as private contracts, +trade mark over the name, or privacy rights / data protection rights +over information in the contents), and so you are advised that you may +have to consult other documents or clear other rights before doing +activities not covered by this License. + +------ + +The Licensor (as defined below) + +and + +You (as defined below) + +agree as follows: + +### 1.0 Definitions of Capitalised Words + +"Collective Database" – Means this Database in unmodified form as part +of a collection of independent databases in themselves that together are +assembled into a collective whole. A work that constitutes a Collective +Database will not be considered a Derivative Database. + +"Convey" – As a verb, means Using the Database, a Derivative Database, +or the Database as part of a Collective Database in any way that enables +a Person to make or receive copies of the Database or a Derivative +Database. Conveying does not include interaction with a user through a +computer network, or creating and Using a Produced Work, where no +transfer of a copy of the Database or a Derivative Database occurs. +"Contents" – The contents of this Database, which includes the +information, independent works, or other material collected into the +Database. For example, the contents of the Database could be factual +data or works such as images, audiovisual material, text, or sounds. + +"Database" – A collection of material (the Contents) arranged in a +systematic or methodical way and individually accessible by electronic +or other means offered under the terms of this License. + +"Database Directive" – Means Directive 96/9/EC of the European +Parliament and of the Council of 11 March 1996 on the legal protection +of databases, as amended or succeeded. + +"Database Right" – Means rights resulting from the Chapter III ("sui +generis") rights in the Database Directive (as amended and as transposed +by member states), which includes the Extraction and Re-utilisation of +the whole or a Substantial part of the Contents, as well as any similar +rights available in the relevant jurisdiction under Section 10.4. + +"Derivative Database" – Means a database based upon the Database, and +includes any translation, adaptation, arrangement, modification, or any +other alteration of the Database or of a Substantial part of the +Contents. This includes, but is not limited to, Extracting or +Re-utilising the whole or a Substantial part of the Contents in a new +Database. + +"Extraction" – Means the permanent or temporary transfer of all or a +Substantial part of the Contents to another medium by any means or in +any form. + +"License" – Means this license agreement and is both a license of rights +such as copyright and Database Rights and an agreement in contract. + +"Licensor" – Means the Person that offers the Database under the terms +of this License. + +"Person" – Means a natural or legal person or a body of persons +corporate or incorporate. + +"Produced Work" – a work (such as an image, audiovisual material, text, +or sounds) resulting from using the whole or a Substantial part of the +Contents (via a search or other query) from this Database, a Derivative +Database, or this Database as part of a Collective Database. + +"Publicly" – means to Persons other than You or under Your control by +either more than 50% ownership or by the power to direct their +activities (such as contracting with an independent consultant). + +"Re-utilisation" – means any form of making available to the public all +or a Substantial part of the Contents by the distribution of copies, by +renting, by online or other forms of transmission. + +"Substantial" – Means substantial in terms of quantity or quality or a +combination of both. The repeated and systematic Extraction or +Re-utilisation of insubstantial parts of the Contents may amount to the +Extraction or Re-utilisation of a Substantial part of the Contents. + +"Use" – As a verb, means doing any act that is restricted by copyright +or Database Rights whether in the original medium or any other; and +includes without limitation distributing, copying, publicly performing, +publicly displaying, and preparing derivative works of the Database, as +well as modifying the Database as may be technically necessary to use it +in a different mode or format. + +"You" – Means a Person exercising rights under this License who has not +previously violated the terms of this License with respect to the +Database, or who has received express permission from the Licensor to +exercise rights under this License despite a previous violation. + +Words in the singular include the plural and vice versa. + +### 2.0 What this License covers + +2.1. Legal effect of this document. This License is: + + a. A license of applicable copyright and neighbouring rights; + + b. A license of the Database Right; and + + c. An agreement in contract between You and the Licensor. + +2.2 Legal rights covered. This License covers the legal rights in the +Database, including: + + a. Copyright. Any copyright or neighbouring rights in the Database. + The copyright licensed includes any individual elements of the + Database, but does not cover the copyright over the Contents + independent of this Database. See Section 2.4 for details. Copyright + law varies between jurisdictions, but is likely to cover: the Database + model or schema, which is the structure, arrangement, and organisation + of the Database, and can also include the Database tables and table + indexes; the data entry and output sheets; and the Field names of + Contents stored in the Database; + + b. Database Rights. Database Rights only extend to the Extraction and + Re-utilisation of the whole or a Substantial part of the Contents. + Database Rights can apply even when there is no copyright over the + Database. Database Rights can also apply when the Contents are removed + from the Database and are selected and arranged in a way that would + not infringe any applicable copyright; and + + c. Contract. This is an agreement between You and the Licensor for + access to the Database. In return you agree to certain conditions of + use on this access as outlined in this License. + +2.3 Rights not covered. + + a. This License does not apply to computer programs used in the making + or operation of the Database; + + b. This License does not cover any patents over the Contents or the + Database; and + + c. This License does not cover any trademarks associated with the + Database. + +2.4 Relationship to Contents in the Database. The individual items of +the Contents contained in this Database may be covered by other rights, +including copyright, patent, data protection, privacy, or personality +rights, and this License does not cover any rights (other than Database +Rights or in contract) in individual Contents contained in the Database. +For example, if used on a Database of images (the Contents), this +License would not apply to copyright over individual images, which could +have their own separate licenses, or one single license covering all of +the rights over the images. + +### 3.0 Rights granted + +3.1 Subject to the terms and conditions of this License, the Licensor +grants to You a worldwide, royalty-free, non-exclusive, terminable (but +only under Section 9) license to Use the Database for the duration of +any applicable copyright and Database Rights. These rights explicitly +include commercial use, and do not exclude any field of endeavour. To +the extent possible in the relevant jurisdiction, these rights may be +exercised in all media and formats whether now known or created in the +future. + +The rights granted cover, for example: + + a. Extraction and Re-utilisation of the whole or a Substantial part of + the Contents; + + b. Creation of Derivative Databases; + + c. Creation of Collective Databases; + + d. Creation of temporary or permanent reproductions by any means and + in any form, in whole or in part, including of any Derivative + Databases or as a part of Collective Databases; and + + e. Distribution, communication, display, lending, making available, or + performance to the public by any means and in any form, in whole or in + part, including of any Derivative Database or as a part of Collective + Databases. + +3.2 Compulsory license schemes. For the avoidance of doubt: + + a. Non-waivable compulsory license schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme cannot be waived, the Licensor reserves + the exclusive right to collect such royalties for any exercise by You + of the rights granted under this License; + + b. Waivable compulsory license schemes. In those jurisdictions in + which the right to collect royalties through any statutory or + compulsory licensing scheme can be waived, the Licensor waives the + exclusive right to collect such royalties for any exercise by You of + the rights granted under this License; and, + + c. Voluntary license schemes. The Licensor waives the right to collect + royalties, whether individually or, in the event that the Licensor is + a member of a collecting society that administers voluntary licensing + schemes, via that society, from any exercise by You of the rights + granted under this License. + +3.3 The right to release the Database under different terms, or to stop +distributing or making available the Database, is reserved. Note that +this Database may be multiple-licensed, and so You may have the choice +of using alternative licenses for this Database. Subject to Section +10.4, all other rights not expressly granted by Licensor are reserved. + +### 4.0 Conditions of Use + +4.1 The rights granted in Section 3 above are expressly made subject to +Your complying with the following conditions of use. These are important +conditions of this License, and if You fail to follow them, You will be +in material breach of its terms. + +4.2 Notices. If You Publicly Convey this Database, any Derivative +Database, or the Database as part of a Collective Database, then You +must: + + a. Do so only under the terms of this License or another license + permitted under Section 4.4; + + b. Include a copy of this License (or, as applicable, a license + permitted under Section 4.4) or its Uniform Resource Identifier (URI) + with the Database or Derivative Database, including both in the + Database or Derivative Database and in any relevant documentation; and + + c. Keep intact any copyright or Database Right notices and notices + that refer to this License. + + d. If it is not possible to put the required notices in a particular + file due to its structure, then You must include the notices in a + location (such as a relevant directory) where users would be likely to + look for it. + +4.3 Notice for using output (Contents). Creating and Using a Produced +Work does not require the notice in Section 4.2. However, if you +Publicly Use a Produced Work, You must include a notice associated with +the Produced Work reasonably calculated to make any Person that uses, +views, accesses, interacts with, or is otherwise exposed to the Produced +Work aware that Content was obtained from the Database, Derivative +Database, or the Database as part of a Collective Database, and that it +is available under this License. + + a. Example notice. The following text will satisfy notice under + Section 4.3: + + Contains information from DATABASE NAME, which is made available + here under the Open Database License (ODbL). + +DATABASE NAME should be replaced with the name of the Database and a +hyperlink to the URI of the Database. "Open Database License" should +contain a hyperlink to the URI of the text of this License. If +hyperlinks are not possible, You should include the plain text of the +required URI's with the above notice. + +4.4 Share alike. + + a. Any Derivative Database that You Publicly Use must be only under + the terms of: + + i. This License; + + ii. A later version of this License similar in spirit to this + License; or + + iii. A compatible license. + + If You license the Derivative Database under one of the licenses + mentioned in (iii), You must comply with the terms of that license. + + b. For the avoidance of doubt, Extraction or Re-utilisation of the + whole or a Substantial part of the Contents into a new database is a + Derivative Database and must comply with Section 4.4. + + c. Derivative Databases and Produced Works. A Derivative Database is + Publicly Used and so must comply with Section 4.4. if a Produced Work + created from the Derivative Database is Publicly Used. + + d. Share Alike and additional Contents. For the avoidance of doubt, + You must not add Contents to Derivative Databases under Section 4.4 a + that are incompatible with the rights granted under this License. + + e. Compatible licenses. Licensors may authorise a proxy to determine + compatible licenses under Section 4.4 a iii. If they do so, the + authorised proxy's public statement of acceptance of a compatible + license grants You permission to use the compatible license. + + +4.5 Limits of Share Alike. The requirements of Section 4.4 do not apply +in the following: + + a. For the avoidance of doubt, You are not required to license + Collective Databases under this License if You incorporate this + Database or a Derivative Database in the collection, but this License + still applies to this Database or a Derivative Database as a part of + the Collective Database; + + b. Using this Database, a Derivative Database, or this Database as + part of a Collective Database to create a Produced Work does not + create a Derivative Database for purposes of Section 4.4; and + + c. Use of a Derivative Database internally within an organisation is + not to the public and therefore does not fall under the requirements + of Section 4.4. + +4.6 Access to Derivative Databases. If You Publicly Use a Derivative +Database or a Produced Work from a Derivative Database, You must also +offer to recipients of the Derivative Database or Produced Work a copy +in a machine readable form of: + + a. The entire Derivative Database; or + + b. A file containing all of the alterations made to the Database or + the method of making the alterations to the Database (such as an + algorithm), including any additional Contents, that make up all the + differences between the Database and the Derivative Database. + +The Derivative Database (under a.) or alteration file (under b.) must be +available at no more than a reasonable production cost for physical +distributions and free of charge if distributed over the internet. + +4.7 Technological measures and additional terms + + a. This License does not allow You to impose (except subject to + Section 4.7 b.) any terms or any technological measures on the + Database, a Derivative Database, or the whole or a Substantial part of + the Contents that alter or restrict the terms of this License, or any + rights granted under it, or have the effect or intent of restricting + the ability of any person to exercise those rights. + + b. Parallel distribution. You may impose terms or technological + measures on the Database, a Derivative Database, or the whole or a + Substantial part of the Contents (a "Restricted Database") in + contravention of Section 4.74 a. only if You also make a copy of the + Database or a Derivative Database available to the recipient of the + Restricted Database: + + i. That is available without additional fee; + + ii. That is available in a medium that does not alter or restrict + the terms of this License, or any rights granted under it, or have + the effect or intent of restricting the ability of any person to + exercise those rights (an "Unrestricted Database"); and + + iii. The Unrestricted Database is at least as accessible to the + recipient as a practical matter as the Restricted Database. + + c. For the avoidance of doubt, You may place this Database or a + Derivative Database in an authenticated environment, behind a + password, or within a similar access control scheme provided that You + do not alter or restrict the terms of this License or any rights + granted under it or have the effect or intent of restricting the + ability of any person to exercise those rights. + +4.8 Licensing of others. You may not sublicense the Database. Each time +You communicate the Database, the whole or Substantial part of the +Contents, or any Derivative Database to anyone else in any way, the +Licensor offers to the recipient a license to the Database on the same +terms and conditions as this License. You are not responsible for +enforcing compliance by third parties with this License, but You may +enforce any rights that You have over a Derivative Database. You are +solely responsible for any modifications of a Derivative Database made +by You or another Person at Your direction. You may not impose any +further restrictions on the exercise of the rights granted or affirmed +under this License. + +### 5.0 Moral rights + +5.1 Moral rights. This section covers moral rights, including any rights +to be identified as the author of the Database or to object to treatment +that would otherwise prejudice the author's honour and reputation, or +any other derogatory treatment: + + a. For jurisdictions allowing waiver of moral rights, Licensor waives + all moral rights that Licensor may have in the Database to the fullest + extent possible by the law of the relevant jurisdiction under Section + 10.4; + + b. If waiver of moral rights under Section 5.1 a in the relevant + jurisdiction is not possible, Licensor agrees not to assert any moral + rights over the Database and waives all claims in moral rights to the + fullest extent possible by the law of the relevant jurisdiction under + Section 10.4; and + + c. For jurisdictions not allowing waiver or an agreement not to assert + moral rights under Section 5.1 a and b, the author may retain their + moral rights over certain aspects of the Database. + +Please note that some jurisdictions do not allow for the waiver of moral +rights, and so moral rights may still subsist over the Database in some +jurisdictions. + +### 6.0 Fair dealing, Database exceptions, and other rights not affected + +6.1 This License does not affect any rights that You or anyone else may +independently have under any applicable law to make any use of this +Database, including without limitation: + + a. Exceptions to the Database Right including: Extraction of Contents + from non-electronic Databases for private purposes, Extraction for + purposes of illustration for teaching or scientific research, and + Extraction or Re-utilisation for public security or an administrative + or judicial procedure. + + b. Fair dealing, fair use, or any other legally recognised limitation + or exception to infringement of copyright or other applicable laws. + +6.2 This License does not affect any rights of lawful users to Extract +and Re-utilise insubstantial parts of the Contents, evaluated +quantitatively or qualitatively, for any purposes whatsoever, including +creating a Derivative Database (subject to other rights over the +Contents, see Section 2.4). The repeated and systematic Extraction or +Re-utilisation of insubstantial parts of the Contents may however amount +to the Extraction or Re-utilisation of a Substantial part of the +Contents. + +### 7.0 Warranties and Disclaimer + +7.1 The Database is licensed by the Licensor "as is" and without any +warranty of any kind, either express, implied, or arising by statute, +custom, course of dealing, or trade usage. Licensor specifically +disclaims any and all implied warranties or conditions of title, +non-infringement, accuracy or completeness, the presence or absence of +errors, fitness for a particular purpose, merchantability, or otherwise. +Some jurisdictions do not allow the exclusion of implied warranties, so +this exclusion may not apply to You. + +### 8.0 Limitation of liability + +8.1 Subject to any liability that may not be excluded or limited by law, +the Licensor is not liable for, and expressly excludes, all liability +for loss or damage however and whenever caused to anyone by any use +under this License, whether by You or by anyone else, and whether caused +by any fault on the part of the Licensor or not. This exclusion of +liability includes, but is not limited to, any special, incidental, +consequential, punitive, or exemplary damages such as loss of revenue, +data, anticipated profits, and lost business. This exclusion applies +even if the Licensor has been advised of the possibility of such +damages. + +8.2 If liability may not be excluded by law, it is limited to actual and +direct financial loss to the extent it is caused by proved negligence on +the part of the Licensor. + +### 9.0 Termination of Your rights under this License + +9.1 Any breach by You of the terms and conditions of this License +automatically terminates this License with immediate effect and without +notice to You. For the avoidance of doubt, Persons who have received the +Database, the whole or a Substantial part of the Contents, Derivative +Databases, or the Database as part of a Collective Database from You +under this License will not have their licenses terminated provided +their use is in full compliance with this License or a license granted +under Section 4.8 of this License. Sections 1, 2, 7, 8, 9 and 10 will +survive any termination of this License. + +9.2 If You are not in breach of the terms of this License, the Licensor +will not terminate Your rights under it. + +9.3 Unless terminated under Section 9.1, this License is granted to You +for the duration of applicable rights in the Database. + +9.4 Reinstatement of rights. If you cease any breach of the terms and +conditions of this License, then your full rights under this License +will be reinstated: + + a. Provisionally and subject to permanent termination until the 60th + day after cessation of breach; + + b. Permanently on the 60th day after cessation of breach unless + otherwise reasonably notified by the Licensor; or + + c. Permanently if reasonably notified by the Licensor of the + violation, this is the first time You have received notice of + violation of this License from the Licensor, and You cure the + violation prior to 30 days after your receipt of the notice. + +Persons subject to permanent termination of rights are not eligible to +be a recipient and receive a license under Section 4.8. + +9.5 Notwithstanding the above, Licensor reserves the right to release +the Database under different license terms or to stop distributing or +making available the Database. Releasing the Database under different +license terms or stopping the distribution of the Database will not +withdraw this License (or any other license that has been, or is +required to be, granted under the terms of this License), and this +License will continue in full force and effect unless terminated as +stated above. + +### 10.0 General + +10.1 If any provision of this License is held to be invalid or +unenforceable, that must not affect the validity or enforceability of +the remainder of the terms and conditions of this License and each +remaining provision of this License shall be valid and enforced to the +fullest extent permitted by law. + +10.2 This License is the entire agreement between the parties with +respect to the rights granted here over the Database. It replaces any +earlier understandings, agreements or representations with respect to +the Database. + +10.3 If You are in breach of the terms of this License, You will not be +entitled to rely on the terms of this License or to complain of any +breach by the Licensor. + +10.4 Choice of law. This License takes effect in and will be governed by +the laws of the relevant jurisdiction in which the License terms are +sought to be enforced. If the standard suite of rights granted under +applicable copyright law and Database Rights in the relevant +jurisdiction includes additional rights not granted under this License, +these additional rights are granted in this License in order to meet the +terms of this License. diff --git a/LICENSES/OFL-1.1.txt b/LICENSES/OFL-1.1.txt new file mode 100644 index 00000000..6fe84ee2 --- /dev/null +++ b/LICENSES/OFL-1.1.txt @@ -0,0 +1,43 @@ +SIL OPEN FONT LICENSE + +Version 1.1 - 26 February 2007 + +PREAMBLE + +The goals of the Open Font License (OFL) are to stimulate worldwide development of collaborative font projects, to support the font creation efforts of academic and linguistic communities, and to provide a free and open framework in which fonts may be shared and improved in partnership with others. + +The OFL allows the licensed fonts to be used, studied, modified and redistributed freely as long as they are not sold by themselves. The fonts, including any derivative works, can be bundled, embedded, redistributed and/or sold with any software provided that any reserved names are not used by derivative works. The fonts and derivatives, however, cannot be released under any other type of license. The requirement for fonts to remain under this license does not apply to any document created using the fonts or their derivatives. + +DEFINITIONS + +"Font Software" refers to the set of files released by the Copyright Holder(s) under this license and clearly marked as such. This may include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the copyright statement(s). + +"Original Version" refers to the collection of Font Software components as distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, or substituting — in part or in whole — any of the components of the Original Version, by changing formats or by porting the Font Software to a new environment. + +"Author" refers to any designer, engineer, programmer, technical writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS + +Permission is hereby granted, free of charge, to any person obtaining a copy of the Font Software, to use, study, copy, merge, embed, modify, redistribute, and sell modified and unmodified copies of the Font Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, redistributed and/or sold with any software, provided that each copy contains the above copyright notice and this license. These can be included either as stand-alone text files, human-readable headers or in the appropriate machine-readable metadata fields within text or binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font Name(s) unless explicit written permission is granted by the corresponding Copyright Holder. This restriction only applies to the primary font name as presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font Software shall not be used to promote, endorse or advertise any Modified Version, except to acknowledge the contribution(s) of the Copyright Holder(s) and the Author(s) or with their explicit written permission. + +5) The Font Software, modified or unmodified, in part or in whole, must be distributed entirely under this license, and must not be distributed under any other license. The requirement for fonts to remain under this license does not apply to any document created using the Font Software. + +TERMINATION + +This license becomes null and void if any of the above conditions are not met. + +DISCLAIMER + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/README.md b/README.md index 0fdd57de..14b97071 100644 --- a/README.md +++ b/README.md @@ -16,58 +16,101 @@ filename = examples.download_file('my-directory/my-file.vtk') This assumes the file has been uploaded to the `Data` directory as `Data/my-directory/my-file.vtk`. -### Adding the Example to PyVista's Downloads +### Dataset metadata -See the documentation within -[downloads.py](https://github.com/pyvista/pyvista/blob/main/pyvista/examples/downloads.py) -for adding a new method to download the example file within the -``pyvista.examples`` module. +[`DATASETS.toml`](DATASETS.toml) describes every file under `Data/`: what it +is, where it came from, who made it, what licence it carries and what changed +between the source and the copy here. PyVista will read it through +`examples.get_example(...)`, which returns an `Example` whose `.metadata` is +the dataset's record, and publish it in the +[Dataset Gallery](https://docs.pyvista.org/api/examples/dataset_gallery) +alongside each dataset once pyvista/pyvista#9118 merges. -### Adding new datasets (licensing requirements) +Read a single dataset's record with: -Every dataset in this repository must have a clear, permissive license -compatible with redistribution from a BSD-licensed project (pyvista). -Contributors adding new data MUST: +```py +import tomllib +import urllib.request -1. **Confirm the original source.** Record where the dataset came from - (URL, paper, repository, upload page). If you can't identify the - origin, do not submit it. +url = 'https://raw.githubusercontent.com/pyvista/data/master/DATASETS.toml' +with urllib.request.urlopen(url) as response: + metadata = tomllib.loads(response.read().decode()) -2. **Identify the license explicitly.** Read the license at the source - — do not guess from context. Record the SPDX identifier where one - exists (e.g. `CC0-1.0`, `CC-BY-4.0`, `MIT`). +by_name = {entry['name']: entry for entry in metadata['dataset']} +shark = by_name['grey_nurse_shark'] +print(shark['SPDX-License-Identifier'], shark['origin_url']) +``` -3. **Verify the license allows commercial use.** Datasets under - non-commercial licenses (e.g. CC BY-NC, CC BY-NC-SA, CC BY-NC-ND, - "academic / research use only", "personal use only") are not - accepted unless explicitly approved by the maintainers and - prominently flagged. +The licensing keys borrow their names and meaning from the +[REUSE specification](https://reuse.software): `SPDX-License-Identifier` and +`SPDX-FileCopyrightText` mean exactly what they mean there, and full licence +texts live in [`LICENSES/`](LICENSES) named by SPDX identifier, as REUSE +requires. The repository is not itself REUSE-compliant, though: REUSE 3.2 and +later would accept a `REUSE.toml` whose globs cover every file, but no REUSE +tool reads `DATASETS.toml`, and this table records more than REUSE's fields +(origin, provenance, modification, references), so it is kept as the single +source and `LICENSES/` follows REUSE's naming so the texts are where a REUSE +user would look. + +### What the files at the repository root cover + +`DATASETS.toml` is the authority for everything under `Data/`. The root files +predate it and are narrower than they look: + +- `LICENSE`: the Apache License 2.0, added with the 2019 import from + `lorensen/VTKExamples`. It covers that imported material and this + repository's own tooling. It does **not** license the data as a whole: + `Data/` holds files under BSD-3-Clause, CC BY, CC BY-SA, non-commercial + terms, and terms that could not be established at all. Check + `DATASETS.toml` for any file you plan to use. +- `Copyright.txt`: VTK's BSD-3-Clause notice for "Visualization Toolkit + (Data)", inherited from VTKData and cited by the datasets that came from it. +- `VTKData.readme` and `VERSION`: VTK-era files kept for historical + continuity. Neither describes the current contents. + +### Adding new datasets + +See [CONTRIBUTING.md](CONTRIBUTING.md), which also documents how the +provenance of the existing entries was established and how to check it. In +short: add the files under `Data/`, add a `[[dataset]]` block to +`DATASETS.toml`, and run + +```bash +python tools/validate_datasets.py +``` -4. **Provide a license file alongside the dataset.** For a dataset that - has its own directory, add a `LICENSE` file inside it. For a dataset - that sits as a loose file in `Data/`, add a `.license` - companion file. The license file must contain: +Every file tracked under `Data/` must be claimed by exactly one `[[dataset]]` +block. Dotfiles are the one exception: `Data/.gitattributes` configures git +and `Data/cow/.python-version` pins the Python version for the cow generator; +neither describes data, and the validator skips names beginning with a dot +for that reason. - - The source URL. - - The verbatim license statement or a link to it. - - The required attribution text, if any. - - An `SPDX-License-Identifier:` line. +`LICENSE`, `COPYING`, `COPYRIGHT`, `NOTICE`, `README` and `CITATION` files (in any +letter case, singular or plural, `LICENCE` included, bare or with any extension such +as `LICENSE.MIT` or `CITATION.bib`; with a `-` or `_` suffix such as `README-VTK` or +`readme_notes.md` only when the extension is a document type) and `.license` REUSE +sidecars are **not** accepted as tracked files under `Data/`; that information +belongs in `DATASETS.toml` where PyVista can read it. CI enforces both rules on +every pull request. -5. **Prefer CC0 and public-domain sources** when possible — they impose - no attribution or ShareAlike burden on downstream users. Good - sources include Smithsonian Open Access (https://3d.si.edu/cc0) and - US government works. +A licence or readme *inside* an archive is a different matter, and several +archives here carry one. Leave those alone: they are the evidence for their +dataset's entry, and CI does not look inside archives. -6. **Be cautious with ShareAlike licenses** (CC BY-SA, ODbL). These - are accepted but must be clearly labeled, because downstream - users who derive new work from the dataset inherit the ShareAlike - obligation. +### Adding the Example to PyVista's Downloads -When opening a pull request, fill in the checklist in the PR template. -PRs without license documentation will not be merged. +See the documentation within +[downloads.py](https://github.com/pyvista/pyvista/blob/main/pyvista/examples/downloads.py) +for adding a new method to download the example file within the +``pyvista.examples`` module. ### Reporting a license concern -If you believe a dataset in this repository is distributed under -incorrect or insufficient license terms, please open an issue. We take -license compliance seriously. +Every claim in `DATASETS.toml` is meant to be reproducible from the file and +its source; [CONTRIBUTING.md](CONTRIBUTING.md#establishing-where-a-dataset-came-from) +records how, so a claim can be re-checked rather than taken on trust. + +If you believe a dataset in this repository is distributed under incorrect or +insufficient license terms, or you can identify the origin of one of the +`LicenseRef-Unknown` entries, please open an issue. We take license compliance +seriously. diff --git a/tools/test_validate_datasets.py b/tools/test_validate_datasets.py new file mode 100644 index 00000000..39046bdf --- /dev/null +++ b/tools/test_validate_datasets.py @@ -0,0 +1,1131 @@ +"""Tests for the dataset table validator, run with `python -m pytest tools/`.""" + +from __future__ import annotations + +import random +import re +import subprocess +import time +import tomllib +from pathlib import Path + +import pytest + +import validate_datasets as v +from validate_datasets import DATASETS_TOML +from validate_datasets import ROOT +from validate_datasets import Problems +from validate_datasets import check_all +from validate_datasets import check_collection_tables +from validate_datasets import check_coverage +from validate_datasets import check_dataset +from validate_datasets import check_identical_files +from validate_datasets import check_license_tables +from validate_datasets import check_ordering_and_uniqueness +from validate_datasets import check_orphan_license_texts +from validate_datasets import check_pattern +from validate_datasets import check_shape +from validate_datasets import check_top_level +from validate_datasets import check_unused_tables +from validate_datasets import field_missing +from validate_datasets import index_blobs +from validate_datasets import is_forbidden +from validate_datasets import known_terms +from validate_datasets import license_terms +from validate_datasets import matches +from validate_datasets import pattern_tokens +from validate_datasets import slugify +from validate_datasets import suggested_name +from validate_datasets import suggested_path +from validate_datasets import tracked_data_files + +PUBLISHED = tomllib.loads(DATASETS_TOML.read_text(encoding='utf-8')) + + +def whats(problems: Problems) -> list[str]: + """Return the problem sentences a run recorded.""" + return [what for _, what, _ in problems.items] + + +# --------------------------------------------------------------------------- +# Path patterns + + +@pytest.mark.parametrize( + ('pattern', 'path', 'expected'), + [ + ('a.vtk', 'a.vtk', True), + ('a.vtk', 'axvtk', False), # the dot is literal + ('*', 'a.vtk', True), + ('*', 'dir/a.vtk', False), # `*` stops at a separator + ('dir/*', 'dir/a.vtk', True), + ('dir/*', 'dir/sub/a.vtk', False), + ('dir/**', 'dir/a.vtk', True), + ('dir/**', 'dir/sub/a.vtk', True), # `**` crosses one + ('dir/**', 'dir', False), + ('dir/**', 'directory/a.vtk', False), # the separator is required + ('sim_?.vtu', 'sim_1.vtu', True), + ('sim_?.vtu', 'sim_12.vtu', False), + ('sim_?.vtu', 'sim_/.vtu', False), + ('a[bc].vtk', 'a[bc].vtk', True), # brackets are literal, not a class + ('a[bc].vtk', 'ab.vtk', False), + ('dir/**/x.vtk', 'dir/x.vtk', True), # an interior `**` also matches zero directories + ('dir/**/x.vtk', 'dir/a/x.vtk', True), + ('dir/**/x.vtk', 'dir/a/b/x.vtk', True), + ('dir/**/*.vtk', 'dir/x.vtk', True), + ('dir/**/*.vtk', 'dir/a/x.vtk', True), + ('dir/**/*.vtk', 'dir/a/x.txt', False), + ('**/x.vtk', 'x.vtk', True), + ('**/x.vtk', 'a/b/x.vtk', True), + ('dir/*/**', 'dir/a/x.vtk', True), # a wildcard before `/**` is honoured + ('dir/*/**', 'dir/x.vtk', False), + ('sim_?/**', 'sim_1/a.vtu', True), + ('**', 'a/b/c', True), + ('*.vtk', 'a.vtk', True), + ('*.vtk', 'a.vtk.bak', False), + ('', 'a.vtk', False), + ('', '', True), + ], +) +def test_matches(pattern, path, expected): + """The documented pattern rules, plus the gitignore zero-directory rule for `**`.""" + assert matches(pattern, path) is expected + + +@pytest.mark.parametrize( + ('pattern', 'path'), + [ + ('*a' * 14 + '*b', 'a' * 39 + 'c'), + ('*a' * 30 + '*b', 'a' * 300), + ('**/' * 8 + '*.vtk', 'x/' * 60 + 'y.txt'), + ('*' * 30 + '.vtk', 'a' * 25 + '.txt'), + ('*?' * 30, 'Victorian_Goblet_face_illusion/Vase.stl'), + ('a*a*a*a*a*a*a*a*a*a*b', 'a' * 100), + ], +) +def test_matches_never_backtracks(pattern, path): + """Patterns that hang a regex matcher answer in well under a millisecond each.""" + started = time.perf_counter() + assert matches(pattern, path) is False + assert time.perf_counter() - started < 0.05 + + +def _reference_regex(pattern: str) -> re.Pattern[str]: + """Translate a pattern to a regex, the slow way, for cross-checking on short inputs.""" + out, index = [], 0 + while index < len(pattern): + if pattern.startswith('**/', index): + out.append('(?:.*/)?') + index += 3 + elif pattern.startswith('**', index): + out.append('.*') + index += 2 + elif pattern[index] == '*': + out.append('[^/]*') + index += 1 + elif pattern[index] == '?': + out.append('[^/]') + index += 1 + else: + out.append(re.escape(pattern[index])) + index += 1 + return re.compile('^' + ''.join(out) + '$') + + +def test_matches_agrees_with_a_regex_on_short_inputs(): + """The linear matcher and a regex with the same grammar agree on random short cases.""" + generator = random.Random(1234) + alphabet = 'ab/.' + for _ in range(5000): + pattern = ''.join(generator.choice(alphabet + '**??') for _ in range(generator.randint(0, 7))) + path = ''.join(generator.choice(alphabet) for _ in range(generator.randint(0, 9))) + assert matches(pattern, path) is bool(_reference_regex(pattern).match(path)), (pattern, path) + + +def test_pattern_tokens(): + """`**/`, `**`, `*` and `?` are tokens; everything else is one literal character.""" + assert pattern_tokens('a/**/b*.?') == ('a', '/', '**/', 'b', '*', '.', '?') + assert pattern_tokens('dir/**') == ('d', 'i', 'r', '/', '**') + assert pattern_tokens('') == () + + +@pytest.mark.parametrize( + ('pattern', 'fault'), + [ + ('', 'is empty'), + (' ', 'is empty'), + ('a\\b', 'backslash'), + ('/abs', 'relative'), + ('dir/', 'relative'), + ('a//b', 'relative'), + ('**', 'claims every file'), + ('*', 'claims every file'), + ('*/**', 'claims every file'), + ('?', 'claims every file'), + ('foo**', 'whole path segment'), + ('**.vtk', 'whole path segment'), + ('a/**b', 'whole path segment'), + ('a***', 'whole path segment'), + ('dir/**', None), + ('**/x.vtk', None), + ('a/**/b', None), + ('a.vtk', None), + ], +) +def test_check_pattern(pattern, fault): + """Empty, absolute and wildcard-only patterns are named before they are matched.""" + result = check_pattern(pattern) + assert (result is None) if fault is None else (fault in result) + + +# --------------------------------------------------------------------------- +# Licence expressions and forbidden files + + +@pytest.mark.parametrize( + ('expression', 'expected'), + [ + ('MIT', ['MIT']), + ('CC-BY-4.0 AND LicenseRef-Unknown', ['CC-BY-4.0', 'LicenseRef-Unknown']), + ('MIT OR Apache-2.0', ['MIT', 'Apache-2.0']), + ('Apache-2.0 WITH LLVM-exception', ['Apache-2.0']), # the exception is not a licence + ('(MIT AND Apache-2.0)', ['MIT', 'Apache-2.0']), + ('(MIT AND Apache-2.0) OR GPL-2.0+', ['MIT', 'Apache-2.0', 'GPL-2.0+']), + ('mit or apache-2.0', ['mit', 'apache-2.0']), # operators are case-insensitive + ], +) +def test_license_terms(expression, expected): + """A well-formed expression yields its licence identifiers in order.""" + assert license_terms(expression) == expected + + +@pytest.mark.parametrize( + 'expression', + ['MIT AND', 'AND', 'and', 'MIT WITH', 'WITH x', 'OR MIT', '(MIT', 'MIT)', 'MIT AND AND X', + 'CC BY 4.0', 'MIT License', '', 'MIT Apache-2.0', '()', 'MIT AND ()', 'MIT+ +'], +) +def test_license_terms_rejects_malformed(expression): + """Dangling operators, bare operators and illegal characters raise ValueError.""" + with pytest.raises(ValueError): + license_terms(expression) + + +def test_known_terms(): + """`known_terms` never raises: malformed and non-string expressions name nothing.""" + assert known_terms('MIT OR Apache-2.0') == ['MIT', 'Apache-2.0'] + assert known_terms('MIT AND') == [] + assert known_terms(3) == [] + + +@pytest.mark.parametrize( + ('path', 'expected'), + [ + ('dir/LICENSE', True), + ('dir/LICENSE.txt', True), + ('dir/license.md', True), # the match is case-folded + ('dir/README.VTK.txt', True), # a compound name still leads with a forbidden stem + ('dir/COPYING', True), + ('dir/CITATION.cff', True), + ('dir/LICENSE.MIT', True), + ('dir/COPYING.LESSER', True), + ('dir/CITATION.bib', True), + ('dir/licence.htm', True), + ('dir/NOTICE.pdf', True), + ('dir/license.json', True), + ('dir/LICENSE.old', True), + ('dir/README-VTK', True), + ('dir/readme_notes.md', True), + ('dir/mesh.vtk.license', True), # a REUSE sidecar + ('dir/.license', True), # even a bare one + ('.license', True), + ('dir/license_plate.stl', False), # data that merely reads like a licence + ('dir/notice_field.vtk', False), + ('dir/copyright_holder.csv', False), + ('dir/authors.csv', False), + ('dir/mesh.vtk', False), + ('.gitattributes', False), + ], +) +def test_is_forbidden(path, expected): + """A licence, readme or citation file is rejected whatever follows its name.""" + assert is_forbidden(path) is expected + + +def test_check_forbidden_files(): + """Every forbidden path is reported, and the remedy names `references` for citations.""" + problems = Problems() + v.check_forbidden_files(['a/LICENSE.MIT', 'a/data.vtk', 'b/.license', 'CITATION.bib'], problems) + assert [where for where, _, _ in problems.items] == ['Data/a/LICENSE.MIT', 'Data/b/.license', 'Data/CITATION.bib'] + assert all('`references`' in fix for _, _, fix in problems.items) + + +# --------------------------------------------------------------------------- +# Small helpers + + +def test_slugify(): + """A file or directory name becomes a lowercase identifier, never empty.""" + assert slugify('Grey Nurse-Shark.stl') == 'grey_nurse_shark_stl' + assert slugify('***') == 'new_dataset' + + +def test_suggested_name(): + """A directory names its group; a root file is named by its stem.""" + assert suggested_name('froggy', ['froggy/frog.mhd']) == 'froggy' + assert suggested_name('.', ['Bunny.ply']) == 'bunny' + + +def test_suggested_path(): + """`dir/**` is suggested only for a directory no other dataset reaches.""" + assert suggested_path('d', ['d/a', 'd/b'], set()) == '["d/**"]' + assert suggested_path('d', ['d/a', 'd/b'], {'d'}) == '["d/a", "d/b"]' + assert suggested_path('d', ['d/a', 'd/b'], {'d/sub'}) == '["d/a", "d/b"]' + assert suggested_path('d', ['d/a'], set()) == '["d/a"]' + assert suggested_path('.', ['a', 'b'], set()) == '["a", "b"]' + + +def test_type_name_and_dataset_where(): + """Types are named as a contributor writes them; a nameless block is numbered.""" + assert [v._type_name(x) for x in (True, 1, 1.0, 'a', [], {})] == [ + 'boolean', 'integer', 'float', 'string', 'array', 'table'] + assert v._dataset_where({'name': 'x'}, 4) == "DATASETS.toml [[dataset]] name = 'x'" + assert v._dataset_where({'name': 3}, 4) == 'DATASETS.toml [[dataset]] #5' + assert v._dataset_where({}, 0) == 'DATASETS.toml [[dataset]] #1' + + +def test_field_missing(): + """Absent, non-string and whitespace-only values are missing.""" + assert field_missing(None) and field_missing(' ') and field_missing(3) + assert not field_missing('x') + + +def test_problems_report(capsys): + """The report lists every problem with its remedy and returns the exit status.""" + problems = Problems() + assert problems.report() == 0 + assert 'is valid' in capsys.readouterr().out + problems.add('here', 'what', 'line one\nline two') + assert problems.report() == 1 + out = capsys.readouterr().out + assert '1 problem(s)' in out and 'problem: what' in out and 'fix: line one' in out + assert 'line two' in out and v.DOCS in out + + +# --------------------------------------------------------------------------- +# Documents + + +MINIMAL = """ +schema_version = 1 + +[license."MIT"] +title = "MIT License" +url = "https://opensource.org/licenses/MIT" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/MIT.txt" +text_source = "https://spdx.org/licenses/MIT.json" + +[[dataset]] +name = "thing" +title = "Thing" +description = "A thing." +path = ["thing.vtk"] +SPDX-License-Identifier = "MIT" +provenance = "verified" +origin_url = "https://example.org/thing" +attribution = "Someone." +""" + + +def _document(*edits: tuple[str, str]) -> dict: + """Parse `MINIMAL` with literal substitutions applied, each of which must occur once.""" + text = MINIMAL + for old, new in edits: + assert text.count(old) == 1, old + text = text.replace(old, new) + return tomllib.loads(text) + + +def _dataset_problems(document: dict) -> list[str]: + """Run check_shape and check_dataset on the first block and return the sentences.""" + problems = Problems() + check_shape(document, problems) + check_dataset(document['dataset'][0], 0, document, problems) + return whats(problems) + + +def test_minimal_document_passes(): + """The document the rejection tests edit is itself clean.""" + assert _dataset_problems(_document()) == [] + + +@pytest.mark.parametrize( + ('edits', 'expected'), + [ + ((('name = "thing"\n', ''),), 'missing required key `name`'), + ((('title = "Thing"\ndescription', 'title = "Thing"\nextra = 1\ndescription'),), 'unknown key(s): extra'), + ((('name = "thing"\ntitle = "Thing"', 'title = "Thing"\nname = "thing"'),), '`name` is not the first key'), + ((('name = "thing"', 'name = "Bad-Name"'),), 'is not a valid identifier'), + ((('title = "Thing"', 'title = " "'),), '`title` is empty'), + ((('description = "A thing."', 'description = ""'),), '`description` is empty'), + ((('origin_url = "https://example.org/thing"', 'origin_url = " "'),), '`origin_url` is empty'), + ((('attribution = "Someone."', 'attribution = " "'),), '`attribution` is empty'), + ((('path = ["thing.vtk"]', 'path = []'),), '`path` is empty'), + ((('path = ["thing.vtk"]', 'path = ["thing.vtk", " "]'),), '`path` holds an empty string'), + ((('path = ["thing.vtk"]', 'path = "thing.vtk"'),), '`path` is a string, not an array'), + ((('path = ["thing.vtk"]', 'path = ["thing.vtk", 3]'),), '`path` holds a integer, not a string'), + ((('provenance = "verified"', 'provenance = "guessed"'),), '`provenance` is \'guessed\''), + ((('"MIT"\nprovenance', '""\nprovenance'),), '`SPDX-License-Identifier` is empty'), + ((('"MIT"\nprovenance', '"MIT AND"\nprovenance'),), 'not a well-formed expression'), + ((('"MIT"\nprovenance', '"AND"\nprovenance'),), 'not a well-formed expression'), + ((('"MIT"\nprovenance', '"MIT License"\nprovenance'),), 'not a well-formed expression'), + ((('"MIT"\nprovenance', '"(MIT"\nprovenance'),), 'not a well-formed expression'), + ((('"MIT"\nprovenance', '"GPL-3.0"\nprovenance'),), "names 'GPL-3.0', which has no [license.*] table"), + ((('"MIT"\nprovenance', '"mit"\nprovenance'),), "'MIT' does"), + ((('"MIT"\nprovenance', '"FILL-ME-IN"\nprovenance'),), "names 'FILL-ME-IN', which has no"), + ((('origin_url = "https://example.org/thing"', 'origin_url = "example.org/thing"'),), 'not an http(s) URL'), + ((('origin_url = "https://example.org/thing"', 'origin_url = "FILL-ME-IN"'),), 'not an http(s) URL'), + ((('origin_url = "https://example.org/thing"\n', ''),), '`origin_url` is missing'), + ((('provenance = "verified"', 'provenance = "inferred"'),), '`notes` is required here but is missing'), + ((('provenance = "verified"', 'provenance = "unknown"'),), '`provenance = "unknown"` but `origin_url` is set'), + ((('provenance = "verified"', 'provenance = "unknown"'),), '`provenance = "unknown"` but the licence is \'MIT\''), + ((('provenance = "verified"', 'provenance = "inferred"\nnotes = " "'),), '`notes` is empty'), + ((('provenance = "verified"', 'provenance = "verified"\nnotes = 3'),), '`notes` is a integer, not a string'), + ((('attribution = "Someone."\n', ''),), 'requires attribution but `attribution` is missing'), + ((('attribution = "Someone."', 'attribution = "Someone."\nmodified = true'),), '`modified = true` but `modification` is missing'), + ((('attribution = "Someone."', 'attribution = "Someone."\nmodification = "Cropped."'),), '`modification` is set but `modified` is not `true`'), + ((('attribution = "Someone."', 'attribution = "Someone."\nmodified = false\nmodification = "Cropped."'),), '`modification` is set but `modified` is not `true`'), + ((('attribution = "Someone."', 'attribution = "Someone."\nmodified = "no"'),), '`modified` is a string, not a boolean'), + ((('attribution = "Someone."', 'attribution = "Someone."\nmodification = 3\nmodified = true'),), '`modification` is a integer, not a string'), + ((('attribution = "Someone."', 'attribution = "Someone."\norigin_title = 5'),), '`origin_title` is a integer, not a string'), + ((('attribution = "Someone."', 'attribution = "Someone."\nredistributed_from = "https://a.org/x"'),), '`redistributed_from` is a string, not an array'), + ((('attribution = "Someone."', 'attribution = "Someone."\nredistributed_from = [7]'),), '`redistributed_from` holds a integer, not a string'), + ((('attribution = "Someone."', 'attribution = "Someone."\nredistributed_from = ["a.org/x"]'),), '`redistributed_from` holds \'a.org/x\', which is not an http(s) URL'), + ((('attribution = "Someone."', 'attribution = "Someone."\nauthors = "x"'),), '`authors` is a string, not an array'), + ((('attribution = "Someone."', 'attribution = "Someone."\nSPDX-FileCopyrightText = [1]'),), '`SPDX-FileCopyrightText` holds a integer'), + ((('attribution = "Someone."', 'attribution = "Someone."\ncollection = "nowhere"'),), "`collection` is 'nowhere', which has no [collection.*] table"), + ((('attribution = "Someone."', 'attribution = "Someone."\ncollection = 3'),), '`collection` is a integer, not a string'), + ((('attribution = "Someone."', 'attribution = "Someone."\nreferences = "x"'),), '`references` is not an array of tables'), + ((('attribution = "Someone."', 'attribution = "Someone."\nreferences = [{ doi = "10.1/x" }]'),), 'a `references` entry has no `citation`'), + ((('attribution = "Someone."', 'attribution = "Someone."\nreferences = [{ citation = 3 }]'),), 'has `citation` as a integer, not a string'), + ((('attribution = "Someone."', 'attribution = "Someone."\nreferences = [{ citation = " " }]'),), 'has an empty `citation`'), + ((('attribution = "Someone."', 'attribution = "Someone."\nreferences = [{ citation = "x", DOI = "10.1/x" }]'),), 'unknown key(s): DOI'), + ((('attribution = "Someone."', 'attribution = "Someone."\nreferences = [{ citation = "x", doi = "https://doi.org/10.1000/x" }]'),), 'is not a bare DOI'), + ((('attribution = "Someone."', 'attribution = "Someone."\nreferences = [{ citation = "x", url = "example.org" }]'),), 'has `url` \'example.org\', which is not an http(s) URL'), + ], +) +def test_check_dataset_rejects(edits, expected): + """Every rule of the field reference rejects a block that breaks it.""" + assert any(expected in what for what in _dataset_problems(_document(*edits))), \ + _dataset_problems(_document(*edits)) + + +def test_redistributed_from_string_fix_shows_the_array_form(): + """The remedy for a string-valued `redistributed_from` is the one-element array.""" + document = _document(('attribution = "Someone."', + 'attribution = "Someone."\nredistributed_from = "https://a.org/x"')) + problems = Problems() + check_shape(document, problems) + assert 'redistributed_from = ["https://a.org/x"]' in problems.items[0][2] + + +def test_unknown_provenance_needs_unknown_licence_and_no_origin(): + """A record whose origin is unknown carries `LicenseRef-Unknown` and no `origin_url`.""" + text = MINIMAL.replace('provenance = "verified"\norigin_url = "https://example.org/thing"\nattribution = "Someone."', + 'provenance = "unknown"\nnotes = "Nothing is known."') + document = tomllib.loads(text.replace('"MIT"\nprovenance', '"LicenseRef-Unknown"\nprovenance')) + document['license']['LicenseRef-Unknown'] = dict(document['license']['MIT'], attribution_required=False) + problems = Problems() + check_dataset(document['dataset'][0], 0, document, problems) + assert whats(problems) == [] + + +def test_share_alike_licence_needs_notes(): + """A verified dataset under a share-alike licence must still carry `notes`.""" + document = _document(('share_alike = false', 'share_alike = true')) + assert '`notes` is required here but is missing' in _dataset_problems(document) + document['dataset'][0]['notes'] = 'Share-alike: derived work inherits the licence.' + assert _dataset_problems(document) == [] + + +def test_wrongly_typed_fields_do_not_cascade(): + """A wrongly typed value is reported once, not again as a missing value.""" + document = _document(('provenance = "verified"', 'provenance = "inferred"\nnotes = 3')) + problems = _dataset_problems(document) + assert problems == ['`notes` is a integer, not a string'] + + +@pytest.mark.parametrize( + 'malformed', + [ + 'license = ["not-a-table"]', + 'license = 3', + 'collection = ["not-a-table"]', + '[collection]\nfoo = 1', + '[collection]\nfoo = "bar"', + '[license]\nMIT = 1', + 'dataset = "not-an-array"', + 'dataset = [1]', + ], +) +def test_malformed_tables_are_reported_not_raised(malformed): + """Every structural error must reach the report and stop the deeper checks.""" + document = tomllib.loads('schema_version = 1\n' + malformed + '\n') + problems = Problems() + + assert check_shape(document, problems) is False + check_license_tables(document, problems) + check_collection_tables(document, problems) + check_unused_tables(document, problems) + + assert problems.items, f'{malformed!r} produced no problem' + + +def test_field_type_errors_do_not_stop_the_run(): + """A wrongly typed field is reported, and check_shape still lets the other checks run.""" + document = _document(('attribution = "Someone."', 'attribution = "Someone."\nauthors = "x"')) + problems = Problems() + assert check_shape(document, problems) is True + assert whats(problems) == ['`authors` is a string, not an array'] + + +@pytest.mark.parametrize( + ('text', 'expected'), + [ + ('schema_version = 1.0', '`schema_version` is 1.0'), + ('schema_version = true', '`schema_version` is True'), + ('schema_version = "1"', "`schema_version` is '1'"), + ('schema_version = 2', '`schema_version` is 2'), + ('', '`schema_version` is None'), + ('schema_version = 1\n[[datasets]]\nname = "x"', 'unknown top-level key(s): datasets'), + ], +) +def test_check_top_level(text, expected): + """`schema_version` must be the integer 1 and no other top-level key is allowed.""" + problems = Problems() + check_top_level(tomllib.loads(text), problems) + assert whats(problems) == [expected] + + +def test_check_top_level_accepts_the_format(): + """The four defined top-level keys pass.""" + problems = Problems() + check_top_level(_document(), problems) + assert whats(problems) == [] + + +@pytest.mark.parametrize( + ('edits', 'expected'), + [ + ((('[license."MIT"]', '[license."MIT"]\nextra = 1'),), 'unknown key(s): extra'), + ((('title = "MIT License"\n', ''),), 'missing required key `title`'), + ((('title = "MIT License"', 'title = 3'),), '`title` is a integer, not a string'), + ((('title = "MIT License"', 'title = " "'),), '`title` is empty'), + ((('url = "https://opensource.org/licenses/MIT"', 'url = "opensource.org"'),), 'not an http(s) URL'), + ((('commercial_use = true', 'commercial_use = "yes"'),), '`commercial_use` is a string, not a boolean'), + ((('file = "LICENSES/MIT.txt"', 'file = "LICENSES/mit-text.txt"'),), 'not "LICENSES/MIT.txt"'), + ((('file = "LICENSES/MIT.txt"', 'file = "LICENSE"'),), 'not "LICENSES/MIT.txt"'), + ((('file = "LICENSES/MIT.txt"', 'file = "/etc/hosts"'),), 'not "LICENSES/MIT.txt"'), + ((('file = "LICENSES/MIT.txt"', 'file = "LICENSES/../LICENSES/MIT.txt"'),), 'not "LICENSES/MIT.txt"'), + ((('file = "LICENSES/MIT.txt"', 'file = ""'),), '`file` is empty'), + ((('file = "LICENSES/MIT.txt"', 'file = 3'),), '`file` is a integer, not a string'), + ((('text_source = "https://spdx.org/licenses/MIT.json"', 'text_source = " "'),), '`text_source` is empty'), + ((('text_source = "https://spdx.org/licenses/MIT.json"', 'text_source = true'),), '`text_source` is a boolean'), + ((('[license."MIT"]', '[license."bad id!"]'), ('"MIT"\nprovenance', '"bad id!"\nprovenance')), 'is not a valid licence identifier'), + ], +) +def test_check_license_tables_rejects(edits, expected): + """Every licence-table rule rejects a table that breaks it.""" + document = _document(*edits) + problems = Problems() + check_shape(document, problems) + check_license_tables(document, problems) + assert any(expected in what for what in whats(problems)), whats(problems) + + +def test_check_license_tables_needs_the_text_file(tmp_path, monkeypatch): + """A `file` in the right place must exist.""" + monkeypatch.setattr(v, 'ROOT', tmp_path) + problems = Problems() + check_license_tables(_document(), problems) + assert whats(problems) == ['`file` points at LICENSES/MIT.txt, which does not exist'] + (tmp_path / 'LICENSES').mkdir() + (tmp_path / 'LICENSES' / 'MIT.txt').write_text('MIT') + problems = Problems() + check_license_tables(_document(), problems) + assert whats(problems) == [] + + +COLLECTION = """ +[collection."vtk"] +title = "VTK" +url = "https://vtk.org" +description = "Kitware's toolkit." +""" + + +@pytest.mark.parametrize( + ('text', 'expected'), + [ + (COLLECTION + 'extra = 1\n', 'unknown key(s): extra'), + (COLLECTION.replace('title = "VTK"\n', ''), 'missing required key `title`'), + (COLLECTION.replace('title = "VTK"', 'title = 5'), '`title` is a integer, not a string'), + (COLLECTION.replace('title = "VTK"', 'title = ""'), '`title` is empty'), + (COLLECTION.replace('https://vtk.org', 'vtk.org'), 'not an http(s) URL'), + ('[collection]\nvtk = 1\n', 'this is a integer, not a table'), + ], +) +def test_check_collection_tables_rejects(text, expected): + """Every collection-table rule rejects a table that breaks it.""" + document = tomllib.loads(text) + problems = Problems() + check_shape(document, problems) + check_collection_tables(document, problems) + assert any(expected in what for what in whats(problems)), whats(problems) + + +def test_check_collection_tables_accepts(): + """A complete collection table passes.""" + problems = Problems() + check_collection_tables(tomllib.loads(COLLECTION), problems) + assert whats(problems) == [] + + +# --------------------------------------------------------------------------- +# Coverage, duplicates, ordering, unused tables + + +def _coverage(datasets: list[dict], files: list[str]) -> tuple[Problems, dict]: + """Run check_coverage on bare dataset dicts and return the problems and owners.""" + problems = Problems() + owners = check_coverage({'dataset': datasets}, files, problems) + return problems, owners + + +def test_check_coverage_owners_and_orphans(): + """Owners are recorded once per dataset and uncovered files are named, never `Data/./`.""" + problems, owners = _coverage( + [{'name': 'a', 'path': ['a/**']}], + ['a/x.vtk', 'a/sub/y.vtk', 'r1.vtk', 'r2.vtk', 'r3.vtk', 'r4.vtk', 'r5.vtk'], + ) + assert owners['a/x.vtk'] == ['a'] and owners['a/sub/y.vtk'] == ['a'] and owners['r1.vtk'] == [] + [(where, what, fix)] = problems.items + assert where == 'Data/r1.vtk, Data/r2.vtk, Data/r3.vtk, Data/r4.vtk, Data/r5.vtk' + assert 'Data/./' not in where and 'not covered' in what + assert 'path = ["r1.vtk", "r2.vtk", "r3.vtk", "r4.vtk", "r5.vtk"]' in fix + + +def test_check_coverage_names_many_orphans(): + """A large group names ten files and counts the rest, with the directory.""" + files = [f'big/f{n:02d}.vtk' for n in range(15)] + problems, _ = _coverage([], files) + [(where, _, fix)] = problems.items + assert where.startswith('Data/big/f00.vtk, ') and 'and 5 more file(s) in Data/big/' in where + assert 'path = ["big/**"]' in fix + problems, _ = _coverage([], [f'f{n:02d}.vtk' for n in range(15)]) + assert 'and 5 more file(s) in Data/' in problems.items[0][0] + + +def test_check_coverage_suggested_block_is_rejected_by_the_validator(): + """The block suggested for an uncovered file cannot be pasted verbatim.""" + problems, _ = _coverage([], ['lonely.vtk']) + fix = problems.items[0][2] + block = fix[fix.index(' [[dataset]]'):fix.index('\n\nRead')] + document = tomllib.loads('\n'.join(line.strip() for line in block.splitlines())) + document['license'] = _document()['license'] + document['dataset'][0]['path'] = ['lonely.vtk'] + assert document['dataset'][0]['name'] == 'lonely' + rejected = _dataset_problems(document) + assert any("names 'FILL-ME-IN'" in what for what in rejected) + assert any("`provenance` is 'FILL-ME-IN'" in what for what in rejected) + assert any("`origin_url` is 'FILL-ME-IN'" in what for what in rejected) + + +def test_check_coverage_does_not_suggest_a_directory_another_dataset_reaches(): + """A partly covered directory gets an explicit file list, not `dir/**`.""" + problems, _ = _coverage([{'name': 'a', 'path': ['d/a.vtk']}], ['d/a.vtk', 'd/b.vtk', 'd/c.vtk']) + assert 'path = ["d/b.vtk", "d/c.vtk"]' in problems.items[0][2] + + +def test_check_coverage_self_overlap(): + """Two patterns of one block matching the same file are reported as that, not as two owners.""" + problems, owners = _coverage([{'name': 'a', 'path': ['d/**', 'd/a.vtk']}], ['d/a.vtk', 'd/b.vtk']) + assert owners['d/a.vtk'] == ['a'] + assert whats(problems) == [ + "`path` pattern 'd/a.vtk' overlaps an earlier pattern of this block on 1 file(s), for example Data/d/a.vtk"] + + +def test_check_coverage_duplicate_pattern(): + """A pattern listed twice is reported once and does not double the owner.""" + problems, owners = _coverage([{'name': 'a', 'path': ['a.vtk', 'a.vtk']}], ['a.vtk']) + assert owners['a.vtk'] == ['a'] + assert whats(problems) == ["`path` lists 'a.vtk' more than once"] + + +def test_check_coverage_multiple_owners(): + """A file two datasets claim names both.""" + problems, owners = _coverage([{'name': 'a', 'path': ['x.vtk']}, {'name': 'b', 'path': ['*.vtk']}], ['x.vtk']) + assert owners['x.vtk'] == ['a', 'b'] + assert whats(problems) == ['this file is claimed by more than one dataset: a, b'] + + +def test_check_coverage_bad_patterns_do_not_flood(): + """A wildcard-only, empty or absolute pattern is reported once and claims nothing.""" + files = [f'f{n}.vtk' for n in range(50)] + problems, owners = _coverage( + [{'name': 'a', 'path': ['**']}, {'name': 'b', 'path': ['']}, {'name': 'c', 'path': ['/f1.vtk']}, + {'name': 'd', 'path': ['*.vtk']}], + files, + ) + assert all(own == ['d'] for own in owners.values()) + assert whats(problems) == [ + "`path` pattern '**' claims every file under Data/", + "`path` pattern '' is empty", + "`path` pattern '/f1.vtk' is not a relative path: no leading, trailing or doubled `/`", + ] + + +def test_check_coverage_unmatched_pattern(): + """A pattern that matches nothing is reported.""" + problems, _ = _coverage([{'name': 'a', 'path': ['gone.vtk', 'here.vtk']}], ['here.vtk']) + assert whats(problems) == ["`path` pattern 'gone.vtk' matches no tracked file under Data/"] + + +def test_check_coverage_skips_wrongly_typed_paths(): + """A `path` that is not an array of strings was reported by check_shape and is not matched.""" + problems, owners = _coverage([{'name': 'a', 'path': 'x.vtk'}, {'name': 'b', 'path': [3]}], ['x.vtk']) + assert owners['x.vtk'] == [] + assert whats(problems) == ['not covered by any [[dataset]] in DATASETS.toml'] + + +def test_check_identical_files(): + """Byte-identical files are compared across every owner, and agreeing copies pass.""" + doc = {'dataset': [ + {'name': 'a', 'SPDX-License-Identifier': 'MIT', 'provenance': 'verified'}, + {'name': 'b', 'SPDX-License-Identifier': 'CC0-1.0', 'provenance': 'verified'}, + {'name': 'c', 'SPDX-License-Identifier': 'MIT', 'provenance': 'inferred'}, + ]} + blobs = {'x.vtk': 'blob1', 'y.vtk': 'blob1', 'z.vtk': 'blob1', 'w.vtk': 'blob2', 'q.vtk': 'blob2'} + owners = {'x.vtk': ['a'], 'y.vtk': ['a', 'b'], 'z.vtk': ['c'], 'w.vtk': ['a'], 'q.vtk': ['a']} + problems = Problems() + check_identical_files(doc, blobs, owners, problems) + assert [where for where, _, _ in problems.items] == ['Data/x.vtk, Data/y.vtk, Data/z.vtk'] * 2 + assert whats(problems) == [ + 'these files are byte-identical but carry different licences: CC0-1.0, MIT', + 'these files are byte-identical but carry different provenance: inferred, verified', + ] + + +def test_check_identical_files_skips_a_block_whose_name_is_not_a_string(): + """A name of the wrong type is reported by the shape check, not by a crash here.""" + doc = {'dataset': [{'name': ['a'], 'SPDX-License-Identifier': 'MIT', 'provenance': 'verified'}]} + problems = Problems() + check_identical_files(doc, {'x.vtk': 'b', 'y.vtk': 'b'}, {'x.vtk': ['a'], 'y.vtk': ['a']}, problems) + assert whats(problems) == [] + + +def test_check_identical_files_ignores_unowned_and_untracked(): + """A file with no owner or outside the owner map contributes no value.""" + doc = {'dataset': [{'name': 'a', 'SPDX-License-Identifier': 'MIT', 'provenance': 'verified'}]} + problems = Problems() + check_identical_files(doc, {'x.vtk': 'b', 'y.vtk': 'b', '.hidden': 'b'}, {'x.vtk': ['a'], 'y.vtk': []}, problems) + assert whats(problems) == [] + + +def test_check_ordering_and_uniqueness(): + """Duplicate names are reported and the sort message names the two blocks out of order.""" + problems = Problems() + check_ordering_and_uniqueness({'dataset': [{'name': 'a'}, {'name': 'a'}, {'name': 'zz'}, {'name': 'woman'}]}, problems) + assert whats(problems) == ['this name is used by more than one dataset', '[[dataset]] blocks are not sorted by `name`'] + assert "'woman' follows 'zz' but sorts before it" in problems.items[1][2] + problems = Problems() + check_ordering_and_uniqueness({'dataset': [{'name': 'yinyang'}, {'name': 'action'}, {'name': 'bunny'}]}, problems) + assert "'action' follows 'yinyang'" in problems.items[0][2] + problems = Problems() + check_ordering_and_uniqueness({'dataset': [{'name': 'a'}, {'name': 'b'}, {'name': 3}]}, problems) + assert whats(problems) == [] + + +def test_check_unused_tables(): + """Licences and collections nobody references are reported; malformed expressions count as nothing.""" + document = _document(('[license."MIT"]', COLLECTION + '\n[license."Zlib"]\ntitle = "z"\n\n[license."MIT"]')) + document['dataset'][0]['SPDX-License-Identifier'] = 'MIT AND' + problems = Problems() + check_unused_tables(document, problems) + assert [where for where, _, _ in problems.items] == [ + 'DATASETS.toml [license."Zlib"]', 'DATASETS.toml [license."MIT"]', 'DATASETS.toml [collection."vtk"]'] + document['dataset'][0]['SPDX-License-Identifier'] = 'MIT' + document['dataset'][0]['collection'] = 'vtk' + problems = Problems() + check_unused_tables(document, problems) + assert whats(problems) == ['no dataset uses this licence'] + + +def test_check_orphan_license_texts(tmp_path, monkeypatch): + """Any file in LICENSES/ that no table names is reported, whatever its extension.""" + monkeypatch.setattr(v, 'ROOT', tmp_path) + monkeypatch.setattr(v, 'LICENSES_DIR', tmp_path / 'LICENSES') + problems = Problems() + check_orphan_license_texts(_document(), problems) + assert whats(problems) == [] + (tmp_path / 'LICENSES').mkdir() + for name in ('MIT.txt', 'Stray.md', 'MIT.txt.bak', '.DS_Store'): + (tmp_path / 'LICENSES' / name).write_text('x') + problems = Problems() + check_orphan_license_texts(_document(), problems) + assert [where for where, _, _ in problems.items] == ['LICENSES/MIT.txt.bak', 'LICENSES/Stray.md'] + + +# --------------------------------------------------------------------------- +# The git index and main() + + +def test_index_blobs_and_tracked_data_files(): + """The index lists every tracked path under Data/ with a blob id; dotfiles are not data files.""" + blobs = index_blobs() + assert len(blobs) > 1000 + assert all(re.fullmatch(r'[0-9a-f]{40,64}', blob) for blob in blobs.values()) + assert '.gitattributes' in blobs + files = tracked_data_files(blobs) + assert files == sorted(files) + assert '.gitattributes' not in files and 'cow.vtp' in files + assert tracked_data_files({'a/.x': '1', 'b.vtk': '2', 'a.vtk': '3'}) == ['a.vtk', 'b.vtk'] + + +@pytest.fixture +def repo(tmp_path, monkeypatch): + """Point the validator at a fresh git checkout under tmp_path and return a writer for it.""" + monkeypatch.setattr(v, 'ROOT', tmp_path) + monkeypatch.setattr(v, 'DATASETS_TOML', tmp_path / 'DATASETS.toml') + monkeypatch.setattr(v, 'LICENSES_DIR', tmp_path / 'LICENSES') + subprocess.run(['git', 'init', '-q', str(tmp_path)], check=True) + + def write(table: str | bytes, files: dict[str, str] | None = None, licenses: tuple[str, ...] = ('MIT',)) -> None: + """Write the table, the licence texts and the tracked data files.""" + (tmp_path / 'DATASETS.toml').write_bytes(table if isinstance(table, bytes) else table.encode()) + (tmp_path / 'LICENSES').mkdir(exist_ok=True) + for key in licenses: + (tmp_path / 'LICENSES' / f'{key}.txt').write_text(f'{key} text') + for path, content in (files or {}).items(): + target = tmp_path / 'Data' / path + target.parent.mkdir(parents=True, exist_ok=True) + target.write_text(content) + if files: + subprocess.run(['git', '-C', str(tmp_path), 'add', '-f', 'Data'], check=True) + + return write + + +def test_main_passes_on_a_valid_repository(repo, capsys): + """A consistent table, licence text and index give exit 0 and the coverage count.""" + repo(MINIMAL, {'thing.vtk': 'data', '.gitattributes': 'x'}) + assert v.main() == 0 + out = capsys.readouterr().out + assert 'DATASETS.toml is valid.' in out + assert '1 datasets cover 1 files under Data/.' in out + + +def test_main_reports_missing_table(repo, capsys): + """A missing DATASETS.toml is one sentence, not a traceback.""" + assert v.main() == 1 + assert 'is missing' in capsys.readouterr().out + + +def test_main_reports_invalid_toml(repo, capsys): + """A syntax error is reported with the parser's position.""" + repo('schema_version = [\n') + assert v.main() == 1 + assert 'is not valid TOML' in capsys.readouterr().out + + +def test_main_reports_non_utf8(repo, capsys): + """A Latin-1 byte is a report line, not a UnicodeDecodeError.""" + repo(b'# caf\xe9\nschema_version = 1\n') + assert v.main() == 1 + assert 'is not UTF-8: byte 5' in capsys.readouterr().out + + +def test_main_accepts_a_byte_order_mark(repo, capsys): + """A UTF-8 BOM is not reported as a syntax error on line 1.""" + repo(b'\xef\xbb\xbf' + MINIMAL.encode(), {'thing.vtk': 'data'}) + assert v.main() == 0 + + +def test_main_reports_a_non_git_directory(tmp_path, monkeypatch, capsys): + """Outside a checkout the validator says so instead of raising CalledProcessError.""" + monkeypatch.setattr(v, 'ROOT', tmp_path) + monkeypatch.setattr(v, 'DATASETS_TOML', tmp_path / 'DATASETS.toml') + monkeypatch.setattr(v, 'LICENSES_DIR', tmp_path / 'LICENSES') + (tmp_path / 'DATASETS.toml').write_text(MINIMAL) + monkeypatch.setenv('GIT_CEILING_DIRECTORIES', str(tmp_path.parent)) + assert v.main() == 1 + out = capsys.readouterr().out + assert 'Could not list the files git tracks under Data/' in out and 'git checkout' in out + + +def test_main_reports_a_missing_git_binary(repo, monkeypatch, capsys): + """Without git on PATH the validator says so instead of raising FileNotFoundError.""" + repo(MINIMAL, {'thing.vtk': 'data'}) + monkeypatch.setenv('PATH', str(v.ROOT / 'nowhere')) + assert v.main() == 1 + assert 'Could not list the files git tracks under Data/' in capsys.readouterr().out + + +def test_main_reports_forbidden_dotfile_sidecar(repo, capsys): + """A bare `.license` sidecar is caught although dotfiles are not data files.""" + repo(MINIMAL, {'thing.vtk': 'data', '.license': 'MIT', 'thing.vtk.license': 'MIT'}) + assert v.main() == 1 + out = capsys.readouterr().out + assert 'Data/.license' in out and 'Data/thing.vtk.license' in out + + +def test_main_continues_after_a_field_type_error(repo, capsys): + """One wrongly typed field does not hide an uncovered file or a bad ordering.""" + table = MINIMAL.replace('attribution = "Someone."', 'attribution = "Someone."\nauthors = "x"') + repo(table, {'thing.vtk': 'data', 'other.vtk': 'data'}) + assert v.main() == 1 + out = capsys.readouterr().out + assert '`authors` is a string, not an array' in out and 'Data/other.vtk' in out + + +# --------------------------------------------------------------------------- +# Whole-table runs + + +BAD_TABLE = """ +schema_version = 1.0 +stray = "x" + +[license."MIT"] +title = "MIT License" +url = "https://opensource.org/licenses/MIT" +commercial_use = true +attribution_required = true +share_alike = false +file = "LICENSES/MIT.txt" +text_source = "https://spdx.org/licenses/MIT.json" +extra = 1 + +[license."CC-BY-4.0"] +title = 3 +url = "creativecommons.org/licenses/by/4.0/" +commercial_use = "yes" +attribution_required = true +file = "LICENSE" +text_source = " " + +[license."CC-BY-SA-4.0"] +title = "CC BY-SA 4.0" +url = "https://creativecommons.org/licenses/by-sa/4.0/" +commercial_use = true +attribution_required = true +share_alike = true +file = "LICENSES/CC-BY-SA-4.0.txt" +text_source = "https://spdx.org/licenses/CC-BY-SA-4.0.json" + +[license."Unused-1.0"] +title = "Unused" +url = "https://example.org/unused" +commercial_use = true +attribution_required = false +share_alike = false +file = "LICENSES/Unused-1.0.txt" +text_source = "Written for this repository." + +[collection."vtk"] +title = "VTK" +url = "https://vtk.org" +description = "Kitware's toolkit." +extra = 1 + +[collection."nobody"] +title = 5 +url = "nope" +description = "Unused." + +[[dataset]] +name = "alpha" +title = "Alpha" +description = "Root file." +path = ["alpha.vtk", "alpha.vtk", "gone.vtk", "**"] +SPDX-License-Identifier = "MIT AND" +provenance = "guessed" +origin_url = "example.org/alpha" +collection = "vtk" +modified = "no" +notes = 3 + +[[dataset]] +name = "zeta" +title = "Zeta" +description = "Out of order." +path = ["beta/one.vtk"] +SPDX-License-Identifier = "MIT" +provenance = "verified" +origin_url = "https://example.org/zeta" +attribution = "Zeta." + +[[dataset]] +name = "beta" +title = "Beta" +description = "Byte-identical to zeta's file, under another licence." +path = ["beta/two.vtk", "beta/*.vtk"] +SPDX-License-Identifier = "CC-BY-4.0 OR mit" +provenance = "verified" +origin_url = "https://example.org/beta" +attribution = "Beta." +redistributed_from = "https://example.org/mirror" +references = [{ citation = "x", DOI = "https://doi.org/10.1/x" }, { doi = "10.1000/y" }] + +[[dataset]] +name = "dup" +title = "Dup" +description = "First of two." +path = ["thing/data.vtk"] +SPDX-License-Identifier = "GPL-3.0" +provenance = "unknown" +origin_url = "https://example.org/dup" +modification = "Cropped." + +[[dataset]] +title = " " +name = "dup" +description = "Second of two, name not first." +path = [] +SPDX-License-Identifier = "CC-BY-SA-4.0" +provenance = "verified" +origin_url = "https://example.org/dup2" +attribution = "Dup." +extra = 1 + +[[dataset]] +name = "Bad-Name" +description = "No title, invalid name, no attribution." +path = ["sub/*.vtk"] +SPDX-License-Identifier = "MIT" +provenance = "inferred" +origin_url = "https://example.org/bad" +modified = true +""" + +BAD_BLOBS = { + 'alpha.vtk': 'b1', 'beta/one.vtk': 'b2', 'beta/two.vtk': 'b2', 'thing/data.vtk': 'b3', + 'thing/LICENSE.MIT': 'b4', 'sub/a.vtk': 'b5', 'sub/b.vtk': 'b5', 'sub/.hidden': 'b6', + 'orphan1.vtk': 'b7', 'orphan2.vtk': 'b8', 'orphan3.vtk': 'b9', 'orphan4.vtk': 'b10', +} + +BAD_EXPECTED = [ + ('DATASETS.toml', '`schema_version` is 1.0'), + ('DATASETS.toml', 'unknown top-level key(s): stray'), + ('Data/thing/LICENSE.MIT', 'per-dataset metadata files are not allowed'), + ("name = 'alpha'", '`notes` is a integer, not a string'), + ("name = 'alpha'", '`modified` is a string, not a boolean'), + ("name = 'beta'", '`redistributed_from` is a string, not an array'), + ('[license."CC-BY-4.0"]', '`title` is a integer, not a string'), + ('[license."CC-BY-4.0"]', '`commercial_use` is a string, not a boolean'), + ('[collection."nobody"]', '`title` is a integer, not a string'), + ('[license."MIT"]', 'unknown key(s): extra'), + ('[license."CC-BY-4.0"]', 'missing required key `share_alike`'), + ('[license."CC-BY-4.0"]', '`text_source` is empty'), + ('[license."CC-BY-4.0"]', "`url` is 'creativecommons.org/licenses/by/4.0/', which is not an http(s) URL"), + ('[license."CC-BY-4.0"]', '`file` is \'LICENSE\', not "LICENSES/CC-BY-4.0.txt"'), + ('[license."CC-BY-SA-4.0"]', '`file` points at LICENSES/CC-BY-SA-4.0.txt, which does not exist'), + ('[collection."vtk"]', 'unknown key(s): extra'), + ('[collection."nobody"]', "`url` is 'nope', which is not an http(s) URL"), + ("name = 'alpha'", "`provenance` is 'guessed'"), + ("name = 'alpha'", "`SPDX-License-Identifier` 'MIT AND' is not a well-formed expression"), + ("name = 'alpha'", "`origin_url` is 'example.org/alpha', which is not an http(s) URL"), + ("name = 'beta'", "names 'mit', which has no [license.*] table; 'MIT' does"), + ("name = 'beta'", 'a `references` entry has unknown key(s): DOI'), + ("name = 'beta'", 'a `references` entry has no `citation`'), + ("name = 'dup'", "names 'GPL-3.0', which has no [license.*] table"), + ("name = 'dup'", '`notes` is required here but is missing'), + ("name = 'dup'", '`provenance = "unknown"` but `origin_url` is set'), + ("name = 'dup'", '`provenance = "unknown"` but the licence is \'GPL-3.0\''), + ("name = 'dup'", '`modification` is set but `modified` is not `true`'), + ("name = 'dup'", '`name` is not the first key of the block'), + ("name = 'dup'", 'unknown key(s): extra'), + ("name = 'dup'", '`title` is empty'), + ("name = 'dup'", '`path` is empty, so this dataset claims no file'), + ("name = 'dup'", '`notes` is required here but is missing'), + ("name = 'Bad-Name'", 'missing required key `title`'), + ("name = 'Bad-Name'", "`name` 'Bad-Name' is not a valid identifier"), + ("name = 'Bad-Name'", '`notes` is required here but is missing'), + ("name = 'Bad-Name'", '`MIT` requires attribution but `attribution` is missing'), + ("name = 'Bad-Name'", '`modified = true` but `modification` is missing'), + ("name = 'dup'", 'this name is used by more than one dataset'), + ('DATASETS.toml', '[[dataset]] blocks are not sorted by `name`'), + ("name = 'alpha'", "`path` lists 'alpha.vtk' more than once"), + ("name = 'alpha'", "`path` pattern 'gone.vtk' matches no tracked file under Data/"), + ("name = 'alpha'", "`path` pattern '**' claims every file under Data/"), + ("name = 'beta'", "`path` pattern 'beta/*.vtk' overlaps an earlier pattern of this block on 1 file(s), for example Data/beta/two.vtk"), + ('Data/orphan1.vtk, Data/orphan2.vtk, Data/orphan3.vtk, Data/orphan4.vtk', 'not covered by any [[dataset]]'), + ('Data/beta/one.vtk', 'this file is claimed by more than one dataset: beta, zeta'), + ('Data/beta/one.vtk, Data/beta/two.vtk', 'byte-identical but carry different licences: CC-BY-4.0 OR mit, MIT'), + ('[license."Unused-1.0"]', 'no dataset uses this licence'), + ('[collection."nobody"]', 'no dataset uses this collection'), + ('LICENSES/Stray.md', 'not named by any [license.*] table'), +] + + +def test_known_bad_table_fails_every_check(tmp_path, monkeypatch): + """A table breaking every rule produces exactly the expected report, in report order.""" + monkeypatch.setattr(v, 'ROOT', tmp_path) + monkeypatch.setattr(v, 'LICENSES_DIR', tmp_path / 'LICENSES') + (tmp_path / 'LICENSES').mkdir() + for name in ('MIT.txt', 'Unused-1.0.txt', 'Stray.md'): + (tmp_path / 'LICENSES' / name).write_text('x') + (tmp_path / 'LICENSE').write_text('root licence') + problems = Problems() + check_all(tomllib.loads(BAD_TABLE), BAD_BLOBS, problems) + found = [(where, what) for where, what, _ in problems.items] + missing = [pair for pair in BAD_EXPECTED + if not any(pair[0] in where and pair[1] in what for where, what in found)] + assert not missing, missing + assert len(found) == len(BAD_EXPECTED), found + assert 'Data/./' not in str(found) + + +def test_published_table_passes(capsys): + """The whole validator, run on the real repository, reports nothing.""" + started = time.perf_counter() + status = v.main() + elapsed = time.perf_counter() - started + out = capsys.readouterr().out + assert status == 0, out + assert 'is valid' in out + assert elapsed < 2.0, elapsed + + +def test_published_table_holds_the_documented_invariants(): + """Facts CONTRIBUTING states about the table, checked directly.""" + for entry in PUBLISHED['dataset']: + if entry['provenance'] == 'unknown': + assert entry['SPDX-License-Identifier'] == 'LicenseRef-Unknown', entry['name'] + assert 'origin_url' not in entry, entry['name'] + for key, table in PUBLISHED['license'].items(): + assert table['file'] == f'LICENSES/{key}.txt', key + + +def test_contributing_examples_validate(): + """Every TOML block in CONTRIBUTING.md passes check_dataset against the real tables.""" + blocks = re.findall(r'```toml\n(.*?)```', (ROOT / 'CONTRIBUTING.md').read_text(encoding='utf-8'), re.S) + assert blocks, 'no TOML examples found' + checked = 0 + for block in blocks: + document = tomllib.loads(block) + context = { + 'license': {**PUBLISHED['license'], **document.get('license', {})}, + 'collection': {**PUBLISHED['collection'], **document.get('collection', {})}, + } + problems = Problems() + assert check_shape(document, problems) + check_license_tables(document, problems) + check_collection_tables(document, problems) + for index, entry in enumerate(document.get('dataset', [])): + check_dataset(entry, index, context, problems) + checked += 1 + assert not problems.items, f'CONTRIBUTING.md example is invalid: {whats(problems)}' + assert checked == 2 diff --git a/tools/validate_datasets.py b/tools/validate_datasets.py new file mode 100644 index 00000000..717397b5 --- /dev/null +++ b/tools/validate_datasets.py @@ -0,0 +1,885 @@ +#!/usr/bin/env python3 +"""Check that DATASETS.toml describes every file under Data/ and is well formed.""" + +from __future__ import annotations + +import functools +import re +import subprocess +import sys +import tomllib +from pathlib import Path + +ROOT = Path(__file__).resolve().parent.parent +DATASETS_TOML = ROOT / 'DATASETS.toml' +LICENSES_DIR = ROOT / 'LICENSES' +DATA_DIR = 'Data' +SCHEMA_VERSION = 1 + +DOCS = 'https://github.com/pyvista/data/blob/master/CONTRIBUTING.md' + +NAME_RE = re.compile(r'^[a-z0-9][a-z0-9_]*$') +SPDX_RE = re.compile(r'^[A-Za-z0-9.-]+\+?$') +URL_RE = re.compile(r'^https?://\S+$') +DOI_RE = re.compile(r'^10\.\d{4,9}/\S+$') +OPERATORS = ('AND', 'OR', 'WITH') +PROVENANCE = ('verified', 'inferred', 'unknown') +UNKNOWN_LICENSE = 'LicenseRef-Unknown' +PLACEHOLDER = 'FILL-ME-IN' + +TOP_LEVEL_KEYS = ('schema_version', 'license', 'collection', 'dataset') +DATASET_REQUIRED = ('name', 'title', 'description', 'path', 'SPDX-License-Identifier', 'provenance') +DATASET_OPTIONAL = ( + 'SPDX-FileCopyrightText', 'origin_url', 'origin_title', 'collection', 'authors', + 'attribution', 'redistributed_from', 'modified', 'modification', 'notes', 'references', +) +DATASET_STRINGS = ( + 'name', 'title', 'description', 'SPDX-License-Identifier', 'provenance', 'origin_url', + 'origin_title', 'collection', 'attribution', 'modification', 'notes', +) +DATASET_STRING_LISTS = ('path', 'authors', 'SPDX-FileCopyrightText', 'redistributed_from') +DATASET_TABLE_LISTS = ('references',) +DATASET_BOOLEANS = ('modified',) +DATASET_URLS = ('origin_url',) +REFERENCE_KEYS = ('citation', 'doi', 'url') +LICENSE_REQUIRED = ('title', 'url', 'file', 'text_source', 'commercial_use', + 'attribution_required', 'share_alike') +LICENSE_STRINGS = ('title', 'url', 'file', 'text_source') +LICENSE_BOOLEANS = ('commercial_use', 'attribution_required', 'share_alike') +COLLECTION_REQUIRED = ('title', 'url', 'description') + +FORBIDDEN_STEMS = { + 'license', 'licence', 'licenses', 'licences', 'copying', 'copyright', + 'notice', 'notices', 'readme', 'readmes', 'citation', 'citations', +} +FORBIDDEN_SUFFIX = '.license' +DOCUMENT_SUFFIXES = ( + '', '.txt', '.md', '.markdown', '.rst', '.cff', '.bib', '.html', '.htm', '.adoc', + '.pdf', '.rtf', '.tex', '.json', '.yaml', '.yml', '.xml', '.docx', '.odt', +) +STEM_RE = re.compile(r'^([a-z0-9]+)([.\-_]|$)') + +PATTERN_FIX = ( + 'Patterns are relative to Data/ with `/` as the separator: `dir/**` matches\n' + 'everything under `dir/`, `dir/*.vtk` the .vtk files directly in it.' +) + + +class Problems: + """Collected validation failures, printed as an actionable report.""" + + def __init__(self) -> None: + """Start with no failures recorded.""" + self.items: list[tuple[str, str, str]] = [] + + def add(self, where: str, what: str, fix: str) -> None: + """Record one failure with the place, the problem and the remedy.""" + self.items.append((where, what, fix)) + + def report(self) -> int: + """Print every failure and return the process exit status.""" + if not self.items: + print('DATASETS.toml is valid.') + return 0 + print(f'DATASETS.toml validation failed with {len(self.items)} problem(s).\n') + for where, what, fix in self.items: + print(f' {where}') + print(f' problem: {what}') + for number, line in enumerate(fix.splitlines()): + label = ' fix: ' if number == 0 else ' ' + print(f'{label}{line}') + print() + print(f'See {DOCS} for the full format reference and worked examples.') + return 1 + + +def index_blobs() -> dict[str, str]: + """Map every tracked path under Data/, relative to Data/, to its blob id.""" + out = subprocess.run( + ['git', '-C', str(ROOT), 'ls-files', '-s', '-z', DATA_DIR], + capture_output=True, text=True, check=True, + ).stdout.split('\0') + blobs = {} + for record in out: + if not record: + continue + meta, path = record.split('\t', 1) + if path.startswith(DATA_DIR + '/'): + blobs[path[len(DATA_DIR) + 1:]] = meta.split()[1] + return blobs + + +def tracked_data_files(blobs: dict[str, str]) -> list[str]: + """List the tracked files a dataset must claim: every indexed path except dotfiles.""" + return sorted(path for path in blobs if not Path(path).name.startswith('.')) + + +@functools.lru_cache(maxsize=None) +def pattern_tokens(pattern: str) -> tuple[str, ...]: + """Split a path pattern into `**/`, `**`, `*`, `?` and literal-character tokens.""" + tokens: list[str] = [] + index = 0 + while index < len(pattern): + if pattern.startswith('**/', index): + tokens.append('**/') + index += 3 + elif pattern.startswith('**', index): + tokens.append('**') + index += 2 + else: + tokens.append(pattern[index]) + index += 1 + return tuple(tokens) + + +def _closure(states: set[int], tokens: tuple[str, ...]) -> set[int]: + """Extend a set of pattern positions across the tokens that may match nothing.""" + pending = list(states) + while pending: + state = pending.pop() + if state < len(tokens) and tokens[state] in ('*', '**', '**/') and state + 1 not in states: + states.add(state + 1) + pending.append(state + 1) + return states + + +def matches(pattern: str, path: str) -> bool: + """Match a path pattern against a path relative to Data/, in linear time.""" + tokens = pattern_tokens(pattern) + end = len(tokens) + inside = end + 1 + states = _closure({0}, tokens) + for char in path: + advanced: set[int] = set() + for state in states: + if state >= inside: + advanced.add(state) + if char == '/': + advanced.add(state - inside + 1) + continue + if state == end: + continue + token = tokens[state] + if token == '**': + advanced.add(state) + elif token == '**/': + advanced.add(state + inside) + if char == '/': + advanced.add(state + 1) + elif token == '*': + if char != '/': + advanced.add(state) + elif token == '?': + if char != '/': + advanced.add(state + 1) + elif token == char: + advanced.add(state + 1) + if not advanced: + return False + states = _closure(advanced, tokens) + return end in states + + +def check_pattern(pattern: str) -> str | None: + """Return why a path pattern is unusable, or None when it is well formed.""" + if not pattern.strip(): + return 'is empty' + if '\\' in pattern: + return 'contains a backslash; the separator is `/`' + if pattern.startswith('/') or pattern.endswith('/') or '//' in pattern: + return 'is not a relative path: no leading, trailing or doubled `/`' + if not pattern.strip('*?/'): + return 'claims every file under Data/' + if any(segment != '**' and '**' in segment for segment in pattern.split('/')): + return 'uses `**` inside a name; `**` must stand alone as a whole path segment (`dir/**`, `**/x.vtk`)' + return None + + +def license_terms(expression: str) -> list[str]: + """Split an SPDX expression into the licence ids it names, raising ValueError when malformed.""" + tokens = re.findall(r'\(|\)|[^\s()]+', expression) + terms: list[str] = [] + depth = 0 + expect_operand = True + index = 0 + while index < len(tokens): + token = tokens[index] + upper = token.upper() + if token == '(': + if not expect_operand: + raise ValueError('an operator must precede `(`') + depth += 1 + elif token == ')': + if expect_operand or depth == 0: + raise ValueError('unbalanced `)`') + depth -= 1 + elif upper in ('AND', 'OR'): + if expect_operand: + raise ValueError(f'`{token}` has no licence before it') + expect_operand = True + elif upper == 'WITH': + if expect_operand or index + 1 >= len(tokens) or not SPDX_RE.match(tokens[index + 1]): + raise ValueError('`WITH` must join a licence and an exception') + index += 1 + elif expect_operand: + if not SPDX_RE.match(token): + raise ValueError(f'{token!r} is not a licence identifier') + terms.append(token) + expect_operand = False + else: + raise ValueError(f'{token!r} follows a licence without AND or OR') + index += 1 + if expect_operand: + raise ValueError('the expression ends without a licence') + if depth: + raise ValueError('unbalanced `(`') + return terms + + +def known_terms(expression: object) -> list[str]: + """Return the licence ids an expression names, or none when it cannot be parsed.""" + if not isinstance(expression, str): + return [] + try: + return license_terms(expression) + except ValueError: + return [] + + +def is_forbidden(path: str) -> bool: + """Say whether a path is a per-dataset metadata file that DATASETS.toml replaces.""" + name = Path(path).name.casefold() + if name.endswith(FORBIDDEN_SUFFIX): + return True + match = STEM_RE.match(name) + if not match or match.group(1) not in FORBIDDEN_STEMS: + return False + if match.group(2) in ('', '.'): + return True + return Path(name).suffix in DOCUMENT_SUFFIXES + + +def slugify(text: str) -> str: + """Turn a file or directory name into a candidate dataset name.""" + return re.sub(r'[^a-z0-9]+', '_', text.lower()).strip('_') or 'new_dataset' + + +def suggested_name(parent: str, members: list[str]) -> str: + """Suggest a dataset name for a group of uncovered files.""" + return slugify(parent if parent != '.' else Path(members[0]).stem) + + +def suggested_path(parent: str, members: list[str], claimed_dirs: set[str]) -> str: + """Suggest a `path` value for a group of uncovered files.""" + shared = parent in claimed_dirs or any(other.startswith(parent + '/') for other in claimed_dirs) + if parent != '.' and len(members) > 1 and not shared: + return f'["{parent}/**"]' + return '[' + ', '.join(f'"{member}"' for member in members) + ']' + + +def check_forbidden_files(paths: list[str], problems: Problems) -> None: + """Reject per-dataset licence, readme and citation files under Data/.""" + for path in paths: + if is_forbidden(path): + problems.add( + f'Data/{path}', + 'per-dataset metadata files are not allowed under Data/', + 'Delete this file and put its content in the dataset\'s [[dataset]] block\n' + 'in DATASETS.toml instead: the source in `origin_url`, the licence in\n' + '`SPDX-License-Identifier`, the required credit in `attribution`, any\n' + 'processing in `modification`, the citation in `references`, and\n' + 'everything else in `notes`.', + ) + + +def _type_name(value: object) -> str: + """Name a TOML value's type the way a contributor would write it.""" + return {bool: 'boolean', int: 'integer', float: 'float', str: 'string', + list: 'array', dict: 'table'}.get(type(value), type(value).__name__) + + +def _dataset_where(entry: dict, index: int) -> str: + """Name a dataset block in the report, by name when it has one.""" + name = entry.get('name') + if isinstance(name, str) and name: + return f'DATASETS.toml [[dataset]] name = {name!r}' + return f'DATASETS.toml [[dataset]] #{index + 1}' + + +def _check_string_list(where: str, field: str, value: object, problems: Problems) -> bool: + """Report a field that is not an array of strings, returning whether it is one.""" + if not isinstance(value, list): + example = value if isinstance(value, str) else 'one-value' + problems.add(where, f'`{field}` is a {_type_name(value)}, not an array', + f'Write `{field}` as an array, even with one element:\n' + f' {field} = ["{example}"]') + return False + for element in value: + if not isinstance(element, str): + problems.add(where, f'`{field}` holds a {_type_name(element)}, not a string', + f'Every entry of `{field}` must be a string:\n' + f' {field} = ["one-value", "another"]') + return False + return True + + +def _check_entry_shape(entry: dict, index: int, problems: Problems) -> None: + """Type-check every field of one dataset block.""" + where = _dataset_where(entry, index) + for field in DATASET_STRINGS: + value = entry.get(field) + if value is not None and not isinstance(value, str): + problems.add(where, f'`{field}` is a {_type_name(value)}, not a string', + f'Write `{field}` as a quoted string:\n {field} = "one-value"') + for field in DATASET_BOOLEANS: + value = entry.get(field) + if value is not None and not isinstance(value, bool): + problems.add(where, f'`{field}` is a {_type_name(value)}, not a boolean', + f'Write `{field}` as `true` or `false`, unquoted.') + for field in DATASET_STRING_LISTS: + value = entry.get(field) + if value is not None: + _check_string_list(where, field, value, problems) + for field in DATASET_TABLE_LISTS: + value = entry.get(field) + if value is None: + continue + if not isinstance(value, list) or not all(isinstance(item, dict) for item in value): + problems.add(where, f'`{field}` is not an array of tables', + f'Write `{field}` as an array of tables:\n' + ' references = [{ citation = "...", doi = "..." }]') + continue + for reference in value: + for key, item in reference.items(): + if key in REFERENCE_KEYS and not isinstance(item, str): + problems.add(where, f'a `references` entry has `{key}` as a {_type_name(item)}, not a string', + f'Write `{key}` as a quoted string.') + + +def check_shape(doc: dict, problems: Problems) -> bool: + """Check the document's structure and types, and say whether the deeper checks can run.""" + ok = True + for key, kind, shape in ( + ('license', dict, '[license."SPDX-Id"] tables'), + ('collection', dict, '[collection."name"] tables'), + ('dataset', list, '[[dataset]] blocks'), + ): + value = doc.get(key) + if value is not None and not isinstance(value, kind): + problems.add(f'DATASETS.toml `{key}`', f'this is a {_type_name(value)}, not {shape}', + f'`{key}` is written as {shape}, not as a bare key. For example:\n' + ' [license."CC-BY-4.0"]\n' + ' title = "Creative Commons Attribution 4.0 International"') + ok = False + for index, entry in enumerate(doc.get('dataset') if isinstance(doc.get('dataset'), list) else []): + if not isinstance(entry, dict): + problems.add(f'DATASETS.toml [[dataset]] #{index + 1}', + f'this is a {_type_name(entry)}, not a table', + 'Each dataset is a `[[dataset]]` table with `name`, `title` and the rest.') + ok = False + continue + _check_entry_shape(entry, index, problems) + for kind, strings, booleans in ( + ('license', LICENSE_STRINGS, LICENSE_BOOLEANS), + ('collection', COLLECTION_REQUIRED, ()), + ): + tables = doc.get(kind) + for key, table in (tables if isinstance(tables, dict) else {}).items(): + where = f'DATASETS.toml [{kind}."{key}"]' + if not isinstance(table, dict): + problems.add(where, f'this is a {_type_name(table)}, not a table', + f'Write it as a table:\n [{kind}."{key}"]\n title = "..."') + ok = False + continue + for field in strings: + value = table.get(field) + if value is not None and not isinstance(value, str): + problems.add(where, f'`{field}` is a {_type_name(value)}, not a string', + f'Write `{field}` as a quoted string.') + for field in booleans: + value = table.get(field) + if value is not None and not isinstance(value, bool): + problems.add(where, f'`{field}` is a {_type_name(value)}, not a boolean', + f'Write `{field}` as `true` or `false`, unquoted.') + return ok + + +def check_top_level(doc: dict, problems: Problems) -> None: + """Check `schema_version` and reject keys the format does not define.""" + version = doc.get('schema_version') + if type(version) is not int or version != SCHEMA_VERSION: + problems.add('DATASETS.toml', f'`schema_version` is {version!r}', + f'This checker understands `schema_version = {SCHEMA_VERSION}`, an integer.') + unknown = set(doc) - set(TOP_LEVEL_KEYS) + if unknown: + problems.add('DATASETS.toml', f'unknown top-level key(s): {", ".join(sorted(unknown))}', + 'The file holds `schema_version`, `[license.*]` and `[collection.*]`\n' + 'tables and `[[dataset]]` blocks, nothing else.') + + +def _datasets(doc: dict) -> list[dict]: + """Return the well-formed `[[dataset]]` blocks of a document.""" + datasets = doc.get('dataset') + if not isinstance(datasets, list): + return [] + return [entry for entry in datasets if isinstance(entry, dict)] + + +def _tables(doc: dict, kind: str) -> dict[str, dict]: + """Return the well-formed `[kind.*]` tables of a document.""" + tables = doc.get(kind) + if not isinstance(tables, dict): + return {} + return {key: table for key, table in tables.items() if isinstance(table, dict)} + + +def check_license_tables(doc: dict, problems: Problems) -> None: + """Check every [license.*] table and the licence text it points at.""" + for key, table in _tables(doc, 'license').items(): + where = f'DATASETS.toml [license."{key}"]' + if not SPDX_RE.match(key): + problems.add(where, f'{key!r} is not a valid licence identifier', + 'Use an SPDX identifier such as `CC-BY-4.0`, or a custom\n' + '`LicenseRef-Something` identifier for terms SPDX does not list.') + for field in LICENSE_REQUIRED: + if field not in table: + problems.add(where, f'missing required key `{field}`', + f'Add `{field}` to the [license."{key}"] table. See ' + 'an existing licence table for the shape.') + unknown = set(table) - set(LICENSE_REQUIRED) + if unknown: + problems.add(where, f'unknown key(s): {", ".join(sorted(unknown))}', + 'Remove the key or correct the spelling. A licence table has exactly:\n' + + ', '.join(f'`{f}`' for f in LICENSE_REQUIRED) + '.') + for field in LICENSE_STRINGS: + value = table.get(field) + if isinstance(value, str) and not value.strip(): + problems.add(where, f'`{field}` is empty', + 'Say where the text in `file` came from: the URL you copied it\n' + 'from, or a sentence saying it was written for this repository.' + if field == 'text_source' else f'Give `{field}` a value.') + url = table.get('url') + if isinstance(url, str) and url.strip() and not URL_RE.match(url): + problems.add(where, f'`url` is {url!r}, which is not an http(s) URL', + 'Record the licence page as a full URL, starting with https:// or http://.') + path = table.get('file') + if isinstance(path, str) and path.strip(): + if path != f'LICENSES/{key}.txt': + problems.add(where, f'`file` is {path!r}, not "LICENSES/{key}.txt"', + 'Licence texts live in LICENSES/ and are named by their identifier:\n' + f' file = "LICENSES/{key}.txt"') + elif not (ROOT / path).is_file(): + problems.add(where, f'`file` points at {path}, which does not exist', + f'Add the full licence text at {path}. For an SPDX licence,\n' + 'copy it from https://github.com/spdx/license-list-data/tree/main/text.') + + +def check_collection_tables(doc: dict, problems: Problems) -> None: + """Check every [collection.*] table.""" + for key, table in _tables(doc, 'collection').items(): + where = f'DATASETS.toml [collection."{key}"]' + for field in COLLECTION_REQUIRED: + if field not in table: + problems.add(where, f'missing required key `{field}`', + f'Add `{field}` to the [collection."{key}"] table.') + unknown = set(table) - set(COLLECTION_REQUIRED) + if unknown: + problems.add(where, f'unknown key(s): {", ".join(sorted(unknown))}', + 'Remove the key or correct the spelling. A collection table has exactly:\n' + + ', '.join(f'`{f}`' for f in COLLECTION_REQUIRED) + '.') + for field in COLLECTION_REQUIRED: + value = table.get(field) + if isinstance(value, str) and not value.strip(): + problems.add(where, f'`{field}` is empty', f'Give `{field}` a value.') + url = table.get('url') + if isinstance(url, str) and url.strip() and not URL_RE.match(url): + problems.add(where, f'`url` is {url!r}, which is not an http(s) URL', + 'Record the collection page as a full URL, starting with https:// or http://.') + + +def field_missing(value: object) -> bool: + """Whether a required string is absent or only whitespace.""" + return not isinstance(value, str) or not value.strip() + + +def _check_expression(entry: dict, where: str, doc: dict, problems: Problems) -> list[str]: + """Check the licence expression of a block and return the identifiers it resolves.""" + expression = entry.get('SPDX-License-Identifier') + if not isinstance(expression, str) or not expression.strip(): + return [] + try: + terms = license_terms(expression) + except ValueError as error: + problems.add(where, f'`SPDX-License-Identifier` {expression!r} is not a well-formed expression: {error}', + 'Write one identifier, or identifiers joined by AND or OR, for example\n' + '`CC-BY-4.0`, `MIT OR Apache-2.0`, `LicenseRef-Unknown`.') + return [] + known = _tables(doc, 'license') + folded = {key.casefold(): key for key in known} + for term in terms: + if term in known: + continue + if term.casefold() in folded: + problems.add(where, f'`SPDX-License-Identifier` names {term!r}, ' + f'which has no [license.*] table; {folded[term.casefold()]!r} does', + f'Identifiers are case-sensitive. Write `{folded[term.casefold()]}`.') + else: + problems.add(where, f'`SPDX-License-Identifier` names {term!r}, ' + 'which has no [license.*] table', + f'Add a [license."{term}"] table near the top of DATASETS.toml and\n' + f'add the full licence text at LICENSES/{term}.txt, or use one of\n' + 'the licences already declared: ' + ', '.join(sorted(known)) + '.') + return terms + + +def check_dataset(entry: dict, index: int, doc: dict, problems: Problems) -> None: + """Check one [[dataset]] block against the schema.""" + where = _dataset_where(entry, index) + for field in DATASET_REQUIRED: + if field not in entry: + problems.add(where, f'missing required key `{field}`', + f'Add `{field}`. Every dataset needs: ' + + ', '.join(f'`{f}`' for f in DATASET_REQUIRED) + '.') + unknown = set(entry) - set(DATASET_REQUIRED) - set(DATASET_OPTIONAL) + if unknown: + problems.add(where, f'unknown key(s): {", ".join(sorted(unknown))}', + 'Remove the key or correct the spelling. Allowed keys are:\n' + + ', '.join(f'`{f}`' for f in DATASET_REQUIRED + DATASET_OPTIONAL) + '.') + if entry and next(iter(entry)) != 'name': + problems.add(where, '`name` is not the first key of the block', + 'Put `name = "..."` on the line after `[[dataset]]`, before every other key.') + + for field in DATASET_STRINGS: + value = entry.get(field) + if isinstance(value, str) and not value.strip(): + problems.add(where, f'`{field}` is empty', + 'Name the licence, or `LicenseRef-Unknown` when the terms could not\n' + 'be established. An empty value skips every licence check.' + if field == 'SPDX-License-Identifier' + else f'Give `{field}` a value, or remove the key.') + for field in DATASET_STRING_LISTS: + value = entry.get(field) + if isinstance(value, list) and any(isinstance(item, str) and not item.strip() for item in value): + problems.add(where, f'`{field}` holds an empty string', + f'Remove the empty entry from `{field}`.') + + name = entry.get('name') + if isinstance(name, str) and name.strip() and not NAME_RE.match(name): + problems.add(where, f'`name` {name!r} is not a valid identifier', + 'Use lowercase letters, digits and underscores, starting with a\n' + 'letter or digit, for example `grey_nurse_shark`.') + + if entry.get('path') == []: + problems.add(where, '`path` is empty, so this dataset claims no file', + 'List the files or the directory this dataset owns, for example:\n' + ' path = ["my_dataset/**"]') + + provenance = entry.get('provenance') + if isinstance(provenance, str) and provenance.strip() and provenance not in PROVENANCE: + problems.add(where, f'`provenance` is {provenance!r}', + 'Set `provenance` to one of: ' + + ', '.join(f'"{p}"' for p in PROVENANCE) + '.\n' + ' "verified" - the source states the origin, or the bytes prove it\n' + ' "inferred" - the origin is a reasoned conclusion, not a statement\n' + ' "unknown" - the origin could not be established') + + terms = _check_expression(entry, where, doc, problems) + known = _tables(doc, 'license') + flags = [known.get(term, {}) for term in terms] + + for field in DATASET_URLS: + value = entry.get(field) + if isinstance(value, str) and value.strip() and not URL_RE.match(value): + problems.add(where, f'`{field}` is {value!r}, which is not an http(s) URL', + 'Record the page as a full URL, starting with https:// or http://.') + routes = entry.get('redistributed_from') + if isinstance(routes, list): + for value in routes: + if isinstance(value, str) and value.strip() and not URL_RE.match(value): + problems.add(where, f'`redistributed_from` holds {value!r}, which is not an http(s) URL', + 'Record each route as a full URL, starting with https:// or http://.') + + share_alike = any(table.get('share_alike') is True for table in flags) + needs_notes = provenance != 'verified' or UNKNOWN_LICENSE in terms or share_alike + if needs_notes and 'notes' not in entry: + problems.add(where, '`notes` is required here but is missing', + 'A dataset whose provenance is not "verified", whose licence is\n' + f'{UNKNOWN_LICENSE} or whose licence is share-alike must say in `notes`\n' + 'what was established, what was not, and what a downstream user\n' + 'should do about it.') + + if provenance == 'unknown': + if 'origin_url' in entry: + problems.add(where, '`provenance = "unknown"` but `origin_url` is set', + 'An origin that can be named is not unknown. Remove `origin_url`, or\n' + 'set `provenance = "inferred"` and say in `notes` what the page establishes.') + if terms and terms != [UNKNOWN_LICENSE]: + problems.add(where, f'`provenance = "unknown"` but the licence is {entry["SPDX-License-Identifier"]!r}', + 'Terms cannot be established for data whose origin is unknown. Set\n' + f'`SPDX-License-Identifier = "{UNKNOWN_LICENSE}"`, or establish the origin\n' + 'and record it with `provenance = "inferred"` or `"verified"`.') + elif 'origin_url' not in entry: + problems.add(where, '`origin_url` is missing', + 'Record where the data came from. Only a dataset with\n' + '`provenance = "unknown"` may omit `origin_url`.') + + requires_credit = any(table.get('attribution_required') is True for table in flags) + if requires_credit and 'attribution' not in entry: + problems.add(where, f'`{entry["SPDX-License-Identifier"]}` requires attribution but `attribution` is missing', + 'Add the credit line the licence requires, for example:\n' + 'attribution = "Grey Nurse Shark by rogerpeng1, licensed under CC BY-SA."') + + modified = entry.get('modified') + if modified is True and 'modification' not in entry: + problems.add(where, '`modified = true` but `modification` is missing', + 'Describe what was done to the file since it left its source, for\n' + 'example: modification = "Decimated to 100k triangles and cast to float32."') + if 'modification' in entry and modified is not True: + problems.add(where, '`modification` is set but `modified` is not `true`', + 'Set `modified = true` when the file differs from what the source\n' + 'published, or remove `modification`.') + + collection = entry.get('collection') + collections = _tables(doc, 'collection') + if isinstance(collection, str) and collection.strip() and collection not in collections: + problems.add(where, f'`collection` is {collection!r}, which has no [collection.*] table', + f'Add a [collection."{collection}"] table, or use one of: ' + + ', '.join(sorted(collections)) + '.') + + references = entry.get('references') + for reference in references if isinstance(references, list) else []: + if not isinstance(reference, dict): + continue + if 'citation' not in reference: + problems.add(where, 'a `references` entry has no `citation`', + 'Every reference needs a `citation`; `doi` and `url` are optional.') + elif field_missing(reference.get('citation')): + if isinstance(reference.get('citation'), str): + problems.add(where, 'a `references` entry has an empty `citation`', + 'Give `citation` the reference text.') + extra = set(reference) - set(REFERENCE_KEYS) + if extra: + problems.add(where, f'a `references` entry has unknown key(s): {", ".join(sorted(extra))}', + 'A reference holds `citation`, `doi` and `url` only.') + doi = reference.get('doi') + if isinstance(doi, str) and not DOI_RE.match(doi): + problems.add(where, f'a `references` entry has `doi` {doi!r}, which is not a bare DOI', + 'Write the identifier alone, for example `10.1145/237170.237270`,\n' + 'not a doi.org URL.') + url = reference.get('url') + if isinstance(url, str) and not URL_RE.match(url): + problems.add(where, f'a `references` entry has `url` {url!r}, which is not an http(s) URL', + 'Record the page as a full URL, starting with https:// or http://.') + + +def check_coverage(doc: dict, files: list[str], problems: Problems) -> dict[str, list[str]]: + """Check that every file under Data/ belongs to exactly one dataset, returning the owners.""" + owners: dict[str, list[str]] = {path: [] for path in files} + for index, entry in enumerate(_datasets(doc)): + where = _dataset_where(entry, index) + name = entry.get('name') if isinstance(entry.get('name'), str) else f'#{index + 1}' + patterns = entry.get('path') + if not isinstance(patterns, list) or not all(isinstance(p, str) for p in patterns): + continue + for pattern in sorted({p for p in patterns if patterns.count(p) > 1}): + problems.add(where, f'`path` lists {pattern!r} more than once', 'Remove the duplicate.') + claimed: set[str] = set() + for pattern in dict.fromkeys(patterns): + fault = check_pattern(pattern) + if fault: + problems.add(where, f'`path` pattern {pattern!r} {fault}', + 'Name the files or the directory this dataset owns.\n' + PATTERN_FIX) + continue + hits = [path for path in files if matches(pattern, path)] + if not hits: + problems.add(where, f'`path` pattern {pattern!r} matches no tracked file under Data/', + 'Correct the pattern, or remove it if the file was deleted.\n' + PATTERN_FIX) + overlap = claimed.intersection(hits) + if overlap: + problems.add(where, + f'`path` pattern {pattern!r} overlaps an earlier pattern of this block ' + f'on {len(overlap)} file(s), for example Data/{min(overlap)}', + 'Each file should match one pattern of the block. Drop the pattern\n' + 'the other already covers, or narrow one of them.') + claimed.update(hits) + for path in claimed: + owners[path].append(name) + + claimed_dirs = {str(Path(path).parent) for path, own in owners.items() if own} + orphans = [path for path, own in owners.items() if not own and not is_forbidden(path)] + groups: dict[str, list[str]] = {} + for path in orphans: + groups.setdefault(str(Path(path).parent), []).append(path) + for parent, members in sorted(groups.items()): + shown = ', '.join(f'Data/{member}' for member in members[:10]) + if len(members) > 10: + shown += f' and {len(members) - 10} more file(s) in ' + ('Data/' if parent == '.' else f'Data/{parent}/') + problems.add( + shown, + 'not covered by any [[dataset]] in DATASETS.toml', + 'Add a [[dataset]] block describing this data, replacing every placeholder\n' + '(the validator rejects the block as written here):\n' + '\n' + ' [[dataset]]\n' + f' name = "{suggested_name(parent, members)}"\n' + ' title = "Short human-readable name"\n' + ' description = "One or two sentences about what the data is."\n' + f' path = {suggested_path(parent, members, claimed_dirs)}\n' + f' SPDX-License-Identifier = "{PLACEHOLDER}"\n' + f' provenance = "{PLACEHOLDER}"\n' + f' origin_url = "{PLACEHOLDER}"\n' + ' attribution = "Credit line, when the licence requires one."\n' + '\n' + 'Read the licence and the origin off the source page. Keep the blocks\n' + 'sorted by `name`.', + ) + + for path, own in owners.items(): + if len(own) > 1: + problems.add( + f'Data/{path}', + 'this file is claimed by more than one dataset: ' + ', '.join(sorted(own)), + 'Narrow the `path` patterns so exactly one [[dataset]] owns each file.', + ) + return owners + + +def check_identical_files(doc: dict, blobs: dict[str, str], owners: dict[str, list[str]], + problems: Problems) -> None: + """Reject byte-identical files whose datasets disagree on licence or provenance.""" + by_blob: dict[str, list[str]] = {} + for path, blob in blobs.items(): + if path in owners: + by_blob.setdefault(blob, []).append(path) + entries = {entry['name']: entry for entry in _datasets(doc) if isinstance(entry.get('name'), str)} + for paths in by_blob.values(): + if len(paths) < 2: + continue + for field, label, fix in ( + ( + 'SPDX-License-Identifier', + 'different licences', + 'The same bytes have one origin. Decide which licence applies and give every copy that licence,\n' + 'recording the other route in `redistributed_from` and the\n' + 'duplication in `notes`.', + ), + ( + 'provenance', + 'different provenance', + 'The same bytes have one origin, established once. Give every copy the\n' + 'provenance that reasoning supports, and put the reasoning where\n' + 'both can reach it rather than on one side only.', + ), + ): + values = { + entries[name].get(field) + for path in paths + for name in owners.get(path, []) + if name in entries + } + if len(values) > 1: + named = ', '.join(sorted(str(value) for value in values)) + problems.add( + ', '.join(f'Data/{path}' for path in sorted(paths)), + f'these files are byte-identical but carry {label}: {named}', + fix, + ) + + +def check_ordering_and_uniqueness(doc: dict, problems: Problems) -> None: + """Check that dataset names are unique and blocks are sorted by name.""" + names = [entry.get('name') for entry in _datasets(doc) if isinstance(entry.get('name'), str)] + seen: set[str] = set() + for name in names: + if name in seen: + problems.add(f'DATASETS.toml [[dataset]] name = {name!r}', + 'this name is used by more than one dataset', + 'Dataset names are the key downstream tools look up. Rename one.') + seen.add(name) + if names != sorted(names): + before, after = next((a, b) for a, b in zip(names, names[1:]) if b < a) + problems.add('DATASETS.toml', '[[dataset]] blocks are not sorted by `name`', + f'{after!r} follows {before!r} but sorts before it. Move one of the two so\n' + 'the file stays in plain codepoint order (digits, then `_`, then letters).') + + +def check_unused_tables(doc: dict, problems: Problems) -> None: + """Check that every declared licence and collection is actually referenced.""" + used_licenses: set[str] = set() + used_collections: set[str] = set() + for entry in _datasets(doc): + used_licenses.update(known_terms(entry.get('SPDX-License-Identifier'))) + if isinstance(entry.get('collection'), str): + used_collections.add(entry['collection']) + for key in _tables(doc, 'license'): + if key not in used_licenses: + problems.add(f'DATASETS.toml [license."{key}"]', 'no dataset uses this licence', + 'Remove the table and its LICENSES/ text file, or point a dataset at it.') + for key in _tables(doc, 'collection'): + if key not in used_collections: + problems.add(f'DATASETS.toml [collection."{key}"]', 'no dataset uses this collection', + 'Remove the table, or point a dataset at it with `collection`.') + + +def check_orphan_license_texts(doc: dict, problems: Problems) -> None: + """Check that LICENSES/ holds exactly the texts the licence tables name.""" + declared = {table.get('file') for table in _tables(doc, 'license').values()} + for path in sorted(LICENSES_DIR.iterdir()) if LICENSES_DIR.is_dir() else []: + if path.name.startswith('.'): + continue + rel = str(path.relative_to(ROOT)) + if rel not in declared: + problems.add(rel, 'this file in LICENSES/ is not named by any [license.*] table', + 'Add the matching [license.*] table to DATASETS.toml, or delete the file.') + + +def check_all(doc: dict, blobs: dict[str, str], problems: Problems) -> None: + """Run every check on a parsed document, given the tracked paths under Data/.""" + check_top_level(doc, problems) + check_forbidden_files(sorted(blobs), problems) + if not check_shape(doc, problems): + return + files = tracked_data_files(blobs) + check_license_tables(doc, problems) + check_collection_tables(doc, problems) + for index, entry in enumerate(_datasets(doc)): + check_dataset(entry, index, doc, problems) + check_ordering_and_uniqueness(doc, problems) + owners = check_coverage(doc, files, problems) + check_identical_files(doc, blobs, owners, problems) + check_unused_tables(doc, problems) + check_orphan_license_texts(doc, problems) + + +def main() -> int: + """Validate DATASETS.toml and report every problem found.""" + problems = Problems() + if not DATASETS_TOML.is_file(): + print(f'{DATASETS_TOML} is missing.') + return 1 + try: + doc = tomllib.loads(DATASETS_TOML.read_text(encoding='utf-8-sig')) + except UnicodeDecodeError as error: + print(f'DATASETS.toml is not UTF-8: byte {error.start} {error.reason}. Save the file as UTF-8.') + return 1 + except tomllib.TOMLDecodeError as error: + print(f'DATASETS.toml is not valid TOML: {error}') + print(f'\nSee {DOCS} for the format reference.') + return 1 + try: + blobs = index_blobs() + except (OSError, subprocess.CalledProcessError) as error: + detail = (getattr(error, 'stderr', None) or str(error)).strip() + print(f'Could not list the files git tracks under {DATA_DIR}/: {detail}') + print('Run the validator inside a git checkout of pyvista/data, with git on PATH.') + return 1 + + check_all(doc, blobs, problems) + status = problems.report() + if status == 0: + print(f'{len(_datasets(doc))} datasets cover {len(tracked_data_files(blobs))} files under Data/.') + return status + + +if __name__ == '__main__': + sys.exit(main())