From 54fa832938783e875b3818fc9785c51c928f2bf9 Mon Sep 17 00:00:00 2001 From: Victor Turpin Date: Thu, 22 Feb 2024 09:51:11 +0100 Subject: [PATCH] Initial commit --- .github/workflows/build_book.yml | 95 +++++++++++ .github/workflows/preview-book.yml | 129 +++++++++++++++ .gitignore | 2 + ... \342\200\234Site\342\200\235 Metadata.md" | 71 ++++++++ CODE_OF_CONDUCT.md | 156 ++++++++++++++++++ CONTRIBUTING.md | 61 +++++++ Guidelines.md | 2 + LICENSE.md | 99 +++++++++++ README.md | 40 +++++ VocabularyCollection/BOON networks.md | 78 +++++++++ _config.yml | 36 ++++ _ext/apastyle.py | 19 +++ _ext/bracket_citation_style.py | 28 ++++ 13 files changed, 816 insertions(+) create mode 100644 .github/workflows/build_book.yml create mode 100644 .github/workflows/preview-book.yml create mode 100644 .gitignore create mode 100644 "BOON Guidelines for \342\200\234Network\342\200\235 and \342\200\234Site\342\200\235 Metadata.md" create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 Guidelines.md create mode 100644 LICENSE.md create mode 100644 README.md create mode 100644 VocabularyCollection/BOON networks.md create mode 100644 _config.yml create mode 100644 _ext/apastyle.py create mode 100644 _ext/bracket_citation_style.py diff --git a/.github/workflows/build_book.yml b/.github/workflows/build_book.yml new file mode 100644 index 0000000..5729b56 --- /dev/null +++ b/.github/workflows/build_book.yml @@ -0,0 +1,95 @@ +name: deploy-site + +# Only run this when the main branch changes +on: + push: + branches: + - main + pull_request: + workflow_dispatch: + release: + +# This job installs dependencies, builds the book, and pushes it to `gh-pages` +jobs: + build: + runs-on: ubuntu-latest + if: github.repository == 'OceanGlidersCommunity/Oxygen_SOP' + defaults: + run: + shell: bash -l {0} + steps: + - name: Cancel previous runs + uses: styfle/cancel-workflow-action@0.9.1 + with: + access_token: ${{ github.token }} + - uses: actions/checkout@v3 + + # Install dependencies + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install dependencies + run: | + pip install -r requirements.txt + + # Build the book + - name: Build the book + run: | + jupyter-book build . + + # Zip the site (so it can be handed to the preview action) + - name: Zip the site + run: | + set -x + set -e + if [ -f site.zip ]; then + rm -rf site.zip + fi + zip -r site.zip ./_build/html + - uses: actions/upload-artifact@v3 + with: + name: site-zip + path: ./site.zip + + # Push the site's HTML to github-pages (only if on main, previews are sent to netlify) + - name: Deploy to GitHub pages + if: github.ref == 'refs/heads/main' + uses: peaceiris/actions-gh-pages@v3.8.0 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: ./_build/html + enable_jekyll: false + build_pdf: + runs-on: ubuntu-latest + if: github.event_name == 'release' + needs: build + defaults: + run: + shell: bash -l {0} + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: 3.9 + + - name: Install dependencies + run: | + pip install -r requirements.txt + + - name: Install Tex + run: | + sudo apt-get install texlive-latex-recommended texlive-latex-extra \ + texlive-fonts-recommended texlive-fonts-extra \ + texlive-xetex latexmk + + - name: Build the book as pdf #This needs to happen after the site is zipped, since this builds different html that we dont want on the website + run: | + jupyter-book build . --builder pdflatex + + - uses: actions/upload-artifact@v3 + with: + name: book-pdf + path: _build/latex/python.pdf diff --git a/.github/workflows/preview-book.yml b/.github/workflows/preview-book.yml new file mode 100644 index 0000000..c0ce5c4 --- /dev/null +++ b/.github/workflows/preview-book.yml @@ -0,0 +1,129 @@ +name: preview-site +on: + workflow_run: + workflows: + - deploy-site + types: + - requested + - completed +jobs: + deploy: + runs-on: ubuntu-latest + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@v2 + - name: Set message value + run: | + echo "comment_message=This pull request is being automatically built with [GitHub Actions](https://github.com/features/actions) and [Netlify](https://www.netlify.com/). To see the status of your deployment, click below." >> $GITHUB_ENV + - name: Find Pull Request + uses: actions/github-script@v4 + id: find-pull-request + with: + script: | + let pullRequestNumber = '' + let pullRequestHeadSHA = '' + core.info('Finding pull request...') + const pullRequests = await github.pulls.list({owner: context.repo.owner, repo: context.repo.repo}) + for (let pullRequest of pullRequests.data) { + if(pullRequest.head.sha === context.payload.workflow_run.head_commit.id) { + pullRequestHeadSHA = pullRequest.head.sha + pullRequestNumber = pullRequest.number + break + } + } + core.setOutput('number', pullRequestNumber) + core.setOutput('sha', pullRequestHeadSHA) + if(pullRequestNumber === '') { + core.info( + `No pull request associated with git commit SHA: ${context.payload.workflow_run.head_commit.id}` + ) + } + else{ + core.info(`Found pull request ${pullRequestNumber}, with head sha: ${pullRequestHeadSHA}`) + } + - name: Find Comment + uses: peter-evans/find-comment@v1 + if: steps.find-pull-request.outputs.number != '' + id: fc + with: + issue-number: '${{ steps.find-pull-request.outputs.number }}' + comment-author: 'github-actions[bot]' + body-includes: '${{ env.comment_message }}' + - name: Create comment + if: | + github.event.workflow_run.conclusion != 'success' + && steps.find-pull-request.outputs.number != '' + && steps.fc.outputs.comment-id == '' + uses: peter-evans/create-or-update-comment@v1 + with: + issue-number: ${{ steps.find-pull-request.outputs.number }} + body: | + ${{ env.comment_message }} + + 🚧 Deployment in progress for git commit SHA: ${{ steps.find-pull-request.outputs.sha }} + - name: Update comment + if: | + github.event.workflow_run.conclusion != 'success' + && steps.find-pull-request.outputs.number != '' + && steps.fc.outputs.comment-id != '' + uses: peter-evans/create-or-update-comment@v1 + with: + comment-id: ${{ steps.fc.outputs.comment-id }} + edit-mode: replace + body: | + ${{ env.comment_message }} + + 🚧 Deployment in progress for git commit SHA: ${{ steps.find-pull-request.outputs.sha }} + - name: Download Artifact site + if: | + github.event.workflow_run.conclusion == 'success' + && steps.find-pull-request.outputs.number != '' + && steps.fc.outputs.comment-id != '' + uses: dawidd6/action-download-artifact@v2.14.1 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + workflow: deploy.yaml + run_id: ${{ github.event.workflow_run.id }} + name: site-zip + - name: Unzip site + if: | + github.event.workflow_run.conclusion == 'success' + && steps.find-pull-request.outputs.number != '' + && steps.fc.outputs.comment-id != '' + run: | + rm -rf _build/html + unzip site.zip + rm -f site.zip + # Push the site's HTML to Netlify and get the preview URL + - name: Deploy to Netlify + if: | + github.event.workflow_run.conclusion == 'success' + && steps.find-pull-request.outputs.number != '' + && steps.fc.outputs.comment-id != '' + id: netlify + uses: nwtgck/actions-netlify@v1.2 + with: + publish-dir: _build/html + production-deploy: false + github-token: ${{ secrets.GITHUB_TOKEN }} + enable-commit-comment: false + env: + NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }} + NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }} + timeout-minutes: 5 + - name: Update site Preview comment + if: | + github.event.workflow_run.conclusion == 'success' + && steps.find-pull-request.outputs.number != '' + && steps.fc.outputs.comment-id != '' + uses: peter-evans/create-or-update-comment@v1 + with: + comment-id: ${{ steps.fc.outputs.comment-id }} + edit-mode: replace + body: | + ${{ env.comment_message }} + + 🔍 Git commit SHA: ${{ steps.find-pull-request.outputs.sha }} + ✅ Deployment Preview URL: ${{ steps.netlify.outputs.deploy-url }} \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b42b1e2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +_build +__pycache__ diff --git "a/BOON Guidelines for \342\200\234Network\342\200\235 and \342\200\234Site\342\200\235 Metadata.md" "b/BOON Guidelines for \342\200\234Network\342\200\235 and \342\200\234Site\342\200\235 Metadata.md" new file mode 100644 index 0000000..cc7ec97 --- /dev/null +++ "b/BOON Guidelines for \342\200\234Network\342\200\235 and \342\200\234Site\342\200\235 Metadata.md" @@ -0,0 +1,71 @@ +# BOON Guidelines for “Network” and “Site” Metadata + +* This document describes the metadata fields that will be used by OceanOPS to populate the “Network” field in their system. +* The goal is to have BOON assets identified and easy to find within OceanOPS. Granularity is needed both in **network** attribution and **site** attribution. +* These metadata fileds will allow a better tracking of the BOON Task Team activity, and assessement of the status of the task team toward its target. +* Values for the metadata fields can be flexible but will be managed in a vocabulary on GitHub to make it easier for data providers to best populate the fields and allow for cohesion. + +--- + +## Network Metadata Field Background +A format for BOON Network metadata values was chosen in 2022 (based on a meeting 12/09/2022 and follow-up correspondence). Network values were selected for the California Underwater Glider Network (CUGN) and Gulf Stream programs and this documentation was drafted. +These values have been tested and integrated into the near-real-time data streams for these gliders through to the OceanGliders data system. +With this format the data provider chooses an NCEI Sea Name to provide an indicator of the region for their glider operations. Multiple network attributions are allowed. To implement this use a comma to separate each network entry. + +**Example BOON network identifiers** +* OceanGliders > BOON > Northeast Pacific Ocean > California Underwater Glider Network +* OceanGliders > BOON > Northwest Atlantic Ocean > Gliders in the Gulf Stream + + + +--- + + +## How this looks in metadata +The use of the metadata scheme below can be used with any NetCDF format currently used to store glider data. This includes the EGO, IOOS glider DAC and IMOS glider formats. + +The [OG-1.0 format](https://github.com/OceanGlidersCommunity/OG-format-user-manual) has also been designed to handle this information. + +The two concepts described below, **network** and **site** should be included in the NetCDF global attributes with a string data type. + + +## Definition +### Network +A **network** is a regroupment of platforms, crossing the boundaries of the program. It is usually virtual and represents a common effort or way to measure data. It can represent a mutualized scientific/geographical goal (array), or logistical/fundings/etc. approach. +BOON networks refers to a regional array (multiple sites, e.g *California Underwater Glider Network*) or an area of repeated glider operation (e.g. *glider in the gulf stream*) + +Find the appropriate network name from the [BOON network list](https://github.com/OceanGlidersCommunity/BOON/blob/main/VocabularyCollection/BOON%20networks.md#boon-networks-collection) and [BOON site list](https://github.com/OceanGlidersCommunity/BOON/blob/main/VocabularyCollection/BOON%20networks.md#boon-site-collection) and use it as the value in the **network** global attribute. If you would like to list more than one network you can use a comma to separate each network entry. This format requires that the network names themselves do not include commas. If your network is not in the list, request that it be added. See instructions in the 'request a new entry' section below. + +The global attribute **network** follows this format: +OceanGliders > BOON > [NCEI Sea Name](https://www.ncei.noaa.gov/data/oceans/ncei/vocabulary/seanames.xml) > *Your BOON Network Name*. (e.g *OceanGliders > BOON > Northwest Atlantic Ocean > Gliders in the Gulf Stream*) +Where ">" is mandatory. + +**Example BOON network metadata:** +| NetCDF global attribute | Data Type | Value | +|:-------|:-------|:-------| +| network | string | OceanGliders > BOON > Northwest Atlantic Ocean > Gliders in the Gulf Stream | + +**Example with multiple networks:** +| NetCDF global attribute | Data Type | Value | +|:-------|:-------|:-------| +| network | string | OceanGliders > BOON > Northeast Pacific Ocean > California Underwater Glider Network, IOOS > SCCOOS, IOOS > CeNCOOS | + + +## Site +A **site** refers to the specific lines regularly monitored by gliders (e.g. *Balearic - Canales C1, CUGN Line 66*) + +**Example site metadata:** + NetCDF global attribute | Data Type | Value | +|:-------|:-------|:-------| +| network | string | CUGN Line 66| + +**Example with multiple networks:** +| NetCDF global attribute | Data Type | Value | +|:-------|:-------|:-------| +| network | string | CUGN Line 66, CUGN Alongshore| + +# Request a new entry +To request a new entry in the BOON Networks vocabulary and BOON Site vocabulary submit an issue in the [BOON repository](https://github.com/OceanGlidersCommunity/BOON) with the entry you would like to add to the vocabulary collection. + +In the case of **network**, you must provide the full value i.e. "OceanGliders > BOON > [NCEI Sea Name](https://www.ncei.noaa.gov/data/oceans/ncei/vocabulary/seanames.xml) > *Your BOON Network Name*." + diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..37019a5 --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,156 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socio-economic status, +nationality, personal appearance, race, religion, sexual identity and +orientation, or other similar characteristics. + +We pledge to act and interact in ways that contribute to an open, friendly, +safe, welcoming, diverse, inclusive, and healthy community. + +## Our Standards + +- Please avoid using overtly sexual aliases or other nicknames that might detract from a friendly, safe and welcoming environment for all. +- Please be kind and courteous. There’s no need to be mean or rude. +- Respect that people have differences of opinion and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a right answer. +- Please keep unstructured critique to a minimum. If you have solid ideas you want to experiment with, make a fork and see how it works. +- We will exclude you from interaction if you insult, demean or harass anyone. That is not welcome behavior. We interpret the term “harassment” as including the definition in the Citizen Code of Conduct; if you have any lack of clarity about what might be included in that concept, please read [below](#harassment). In particular, we don’t tolerate behavior that excludes people in socially marginalized groups. +- Private harassment is also unacceptable. No matter who you are, if you feel you have been or are being harassed or made uncomfortable by a community member, please contact any of the moderation team immediately. Whether you’re a regular contributor or a newcomer, we care about making this community a safe place for you and we’ve got your back. +- Likewise any spamming, trolling, flaming, baiting or other attention-stealing behavior is not welcome. + +Examples of behavior that contributes to a positive environment for our +community includes: + +- Demonstrating empathy and kindness toward other people +- Being respectful of differing opinions, viewpoints, and experiences +- Giving and gracefully accepting constructive feedback +- Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +- Focusing on what is best not just for us as individuals, but for the + overall community + +Examples of unacceptable behavior include: + +- The use of sexualized language or imagery, and sexual attention or + advances of any kind +- Trolling, insulting or derogatory comments, and personal, political, or religious attacks +- Public or private harassment +- Publishing others' private information, such as a physical or email + address, without their explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +### Harassment + +The following behaviors, defined in the [Citizen Code of Conduct](https://web.archive.org/web/20200330154000/http://citizencodeofconduct.org/), are considered harassment and are unacceptable within our community: + +- Violence, threats of violence, or violent language directed against another person. +- Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language. +- Posting or displaying sexually explicit or violent material. +- Posting or threatening to post other people’s personally identifying information ("doxing"). +- Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability. +- Inappropriate photography or recording. +- Inappropriate physical contact. You should have someone’s consent before touching them. +- Unwelcome sexual attention. This includes sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances. +- Deliberate intimidation, stalking or following (online or in-person). +- Advocating for, or encouraging, any of the above behavior. +- Sustained disruption of community events, including talks and presentations. + +## Enforcement Responsibilities + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +## Scope + +This Code of Conduct applies within all OceanGliders community spaces and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official e-mail address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. +To avoid confusion, the organizers of each activity should make it clear that it follows this code of conduct. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported to the community leaders responsible for enforcement at +https://www.oceangliders.org/contact/. +All complaints will be reviewed and investigated promptly and fairly. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +## Enforcement Guidelines + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +### 1. Correction + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +### 2. Warning + +**Community Impact**: A violation through a single incident or series +of actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or +permanent ban. + +### 3. Temporary Ban + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +### 4. Permanent Ban + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within +the community. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], +version 2.0, available at +https://www.contributor-covenant.org/version/2/0/code_of_conduct.html +together with [Rust's Code of Conduct][rust], and [Citizen Code of Conduct][citizencc]. + +Community Impact Guidelines were inspired by [Mozilla's code of conduct +enforcement ladder](https://github.com/mozilla/diversity). + +[homepage]: https://www.contributor-covenant.org +[rust]: https://www.rust-lang.org/policies/code-of-conduct +[citizencc]: https://web.archive.org/web/20200330154000/http://citizencodeofconduct.org/ + +For answers to common questions about this code of conduct, see the FAQ at +https://www.contributor-covenant.org/faq. Translations are available at +https://www.contributor-covenant.org/translations. diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..7d8ca3a --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,61 @@ +## How we make decisions on relevant content changes? + +Every issue will be reviewed by at least one of the lead authors. +They have the authority to decide whether the issues is a minor or major change. +Minor changes can be accepted directly after one review of the lead authors. +Major changes requires at least 3 reviews by co-authors with relevant knowledge on the specific topics. +All major changes will remain open for at least 4 weeks to allow all co-authors to provide feedback. +Every co-author can request a change to be reverted and request further discussion to reach a new consensus. +Co-authors are encouraged to periodically review GitHub activity as co-authorship implies agreement with the content. + +### Minor change +- typos, language and formatting +- adding images + +### Major change +- adding new sensor descriptions +- change of uncertainties ranges +- concrete suggestions i.e. related to correction of methods + +## How to contribute +Please read our [Code of Conduct](https://github.com/OceanGlidersCommunity/OceanGliders/blob/main/CODE_OF_CONDUCT.md) before contributing. + +Important: We aim to have an organized discussion. Thus before adding new comments below sections, please always look at [open issues](https://github.com/OceanGlidersCommunity/Oxygen_SOP/issues) and join the ongoing dicussion there. + +You can contribute in two ways: [Case 1](https://github.com/OceanGlidersCommunity/Oxygen_SOP/blob/main/CONTRIBUTING.md#case-1-comment-directly-on-the-online-document-without-knowing-github) - comment directly on the online document, [Case 2](https://github.com/OceanGlidersCommunity/Oxygen_SOP/blob/main/CONTRIBUTING.md#case-2-make-a-concrete-suggestion-to-the-online-document-via-a-pull-request) - make a concrete suggestion to the online document via a pull request + +### Case 1: Comment directly on the online document without knowing GitHub. + +1. Read the Oxygen SOP [here](https://oceangliderscommunity.github.io/Oxygen_SOP/sections/oxygen_introduction.html) + +2) Scroll down to make your comment at the end of each section. + +![edit_markdown_file](images/general_comment_step_01.png) + +3) Log into your GitHub account + +![edit_markdown_file](images/general_comment_step_02.png) + +4) Make your comment, describe the problem in a concise and organized way and only raise one major point per comment. + +5) An issue is created automatically in the GitHub repository, which will be reviewed by the lead authors. + +![edit_markdown_file](images/general_comment_step_03.png) + + +### Case 2: Make a concrete suggestion to the online document via a pull request + +In general, we suggest to start a discussion (‘issue”) before directly editing the document via a “pull-request”. In particular if you request ‘major changes’. Editing the documents directly will require some basic [markdown](https://guides.github.com/features/mastering-markdown/) knowledge. + +1. Read the Oxygen SOP [here](https://oceangliderscommunity.github.io/Oxygen_SOP/sections/oxygen_introduction.html) +2. Scroll up, move your mouse over the GitHub symbol and click "suggest edit". + +![edit_markdown_file](images/suggest_edit_01.png) + +4. The markdown file of the section is opened. +5. Edit the document using [markdown](https://guides.github.com/features/mastering-markdown/). +6. Make a [pull request](https://docs.github.com/en/github/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-a-pull-request), tell us briefly why you made changes, and submit. +7. The SOP team will review your changes as outline above, and if approved, the process is complete and you're done. +8. All contributers will be listed as co-authors on the next peer-reviewed publication. + +We are happy to provide individual training sessions for people who are new on GitHub. Please indicate your interest [here](https://github.com/OceanGlidersCommunity/Oxygen_SOP/discussions/133) so we can organize sessions. diff --git a/Guidelines.md b/Guidelines.md new file mode 100644 index 0000000..a41df80 --- /dev/null +++ b/Guidelines.md @@ -0,0 +1,2 @@ +# BOON Guidelines for “Network” and “Site” Metadata + diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..8916237 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,99 @@ +This text has been copied from https://creativecommons.org/licenses/by/4.0/legalcode + +# 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. + +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. +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. +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. +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. +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. +Licensed Material means the artistic or literary work, database, or other material to which the Licensor applied this Public License. +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. +Licensor means the individual(s) or entity(ies) granting rights under this Public License. +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. +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. +You means the individual or entity exercising the Licensed Rights under this Public License. Your has a corresponding meaning. + +## Section 2 – Scope. + +License grant. +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: +reproduce and Share the Licensed Material, in whole or in part; and +produce, reproduce, and Share Adapted Material. +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. +Term. The term of this Public License is specified in Section 6(a). +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. +Downstream recipients. +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. +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. +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). +Other rights. + +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. +Patent and trademark rights are not licensed under this Public License. +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. + +Attribution. + +If You Share the Licensed Material (including in modified form), You must: + +retain the following if it is supplied by the Licensor with the Licensed Material: +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); +a copyright notice; +a notice that refers to this Public License; +a notice that refers to the disclaimer of warranties; +a URI or hyperlink to the Licensed Material to the extent reasonably practicable; +indicate if You modified the Licensed Material and retain an indication of any previous modifications; and +indicate the Licensed Material is licensed under this Public License, and include the text of, or the URI or hyperlink to, this Public License. +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. +If requested by the Licensor, You must remove any of the information required by Section 3(a)(1)(A) to the extent reasonably practicable. +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: + +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; +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 +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. + +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. +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. +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. + +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. +Where Your right to use the Licensed Material has terminated under Section 6(a), it reinstates: + +automatically as of the date the violation is cured, provided it is cured within 30 days of Your discovery of the violation; or +upon express reinstatement by the Licensor. +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. +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. +Sections 1, 5, 6, 7, and 8 survive termination of this Public License. + +## Section 7 – Other Terms and Conditions. + +The Licensor shall not be bound by any additional or different terms or conditions communicated by You unless expressly agreed. +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. + +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. +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. +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. +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.” The text of the Creative Commons public licenses is dedicated to the public domain under the CC0 Public Domain Dedication. 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/README.md b/README.md new file mode 100644 index 0000000..7bb3042 --- /dev/null +++ b/README.md @@ -0,0 +1,40 @@ +# OceanGliders BOON + +This [GitHub repository](https://github.com/OceanGlidersCommunity/BOON) is for the [OceanGliders Boundary Ocean Observing Network Task Team.](https://www.oceangliders.org/taskteams/boundary-current/) + +## Why have a BOON repository? +This repository aims at centralising elements of the BOON Networks that needs to be maintained and kept up to date. It serves as a forum to request evolution of the documentation related to BOON. This include governance material, vocabuary management, membership, and technical discussion. + +## Continous community review +Feedback by the global glider community is possible at any time. +Everyone is welcome to contribute to the BOON repository. + +### Who is invited to review? +Constructive feedback by anyone is welcome. +We encourage both experts and new gliders users to participate, contribute, and provide feedback. +For example: Experts like glider operators are welcome to suggest new entries in the vocabularies. +New users can help to improve the documentation by providing a feedback from the user perspective. +Please use the discussions section to [let us know that what you think](https://github.com/OceanGlidersCommunity/BOON/discussions). + +### How to contribute +Do you want to become a BOON member? Contact the BOON Chair and request to be added to the BOON mailing list. +Do you want to comment on the documentation and vocabulary collections. +Just raise a question in the [discussions section](https://github.com/OceanGlidersCommunity/BOON/discussions) or create an issue in the relevant repository. + +## Questions? Issues? Additions? +Do you have any questions related to BOON? Or do you struggle to comment the BOON documentation? +Just raise a question [here](https://github.com/OceanGlidersCommunity/BOON/discussions). +Do you want to raise a particular issue regarding BOON documentation or request the addition to a vocabulary collection? +Just raise an issue [here](https://github.com/OceanGlidersCommunity/BOON/issues). + +## License +This work is licensed under a [Creative Commons Attribution 4.0 Generic License](https://creativecommons.org/licenses/by/4.0/). + +## Code of Conduct +Please read and follow our [Code of Conduct](https://github.com/OceanGlidersCommunity/BOON/blob/main/CODE_OF_CONDUCT.md). + +# [BOON Guidelines for “Network” and “Site” Metadata](https://github.com/OceanGlidersCommunity/BOON/blob/main/BOON%20Guidelines%20for%20%E2%80%9CNetwork%E2%80%9D%20and%20%E2%80%9CSite%E2%80%9D%20Metadata.md) + +# [BOON Vocabulary Collections](https://github.com/OceanGlidersCommunity/BOON/blob/main/VocabularyCollection/BOON%20networks.md) + + diff --git a/VocabularyCollection/BOON networks.md b/VocabularyCollection/BOON networks.md new file mode 100644 index 0000000..a973128 --- /dev/null +++ b/VocabularyCollection/BOON networks.md @@ -0,0 +1,78 @@ +# BOON vocabulary collections + +## BOON networks collection +| Network attributes | Region | Countries| Description | Lead(s) | status | +|:--------|:--------|:--------|:--------|:--------|:--------| +| *OceanGliders > BOON > Northwest Atlantic Ocean > Gliders in the Gulf Stream* | Northwest Atlantic | USA, Canada | East coasts of US and Canada from Florida to Labrador. Gulf Stream and related eddies are a unifying feature in deep water. Shelfbreak frontal circualtion links from Labrador to Cape Hatteras. | Robert Todd, Dave Hebert | **published** | +| *OceanGliders > BOON > Northeast Pacific Ocean > California Underwater Glider Network* | Northeast Pacific | USA, Canada, Mexico | California Current System | Dan Rudnick | **published** | +| *OceanGliders > BOON > Indian Ocean > Gliders in the Agulas current* | Southwest Indian | South Africa | Agulhas | Tammy Morris | **published** | +| *OceanGliders > BOON > Southeast Atlantic Ocean > Gliders in the Benguela current* | Southeast Atlantic | South Africa | Benguela | Tammy Morris | **published** | + + +### Status table of future entries in BOON networks collection + +This table describe the status of discussion of the future element of then BOON network collection. + +| Region | Lead(s) | countries| Description | Network attributes | status | Notes | +|:--------|:--------|:--------|:--------|:--------|:--------|:--------| +| Gulf of Mexico | Kevin Martin, Steve Dimarco| USA, Mexico, Cuba | Gulf of Mexico including Loop Current | *OceanGliders > BOON > Gulf of Mexico > XXXX* | pending | Add BOON ST member from Gulf, possibly Mexico? Kevin Martin?, Is Gulf of Mexico a marginal sea ? | +| Northwest Pacific | Sen Jan, Ming-Huei Chang | Taiwan (ROC) | Kuroshio transect east of Taiwan | *OceanGliders > BOON > Northwest Pacific Ocean > XXXX* | pending | Name needed, Zonal section K1-K2 and triangle tracks N1-N2-N3. Expand to include seas, Mindanao; Japan, Korea, PRC, ONR-folks | +| East-Central North Atlantic | Carlos Barrera, Ines Martins | Spain, Portugal | Canary Current and Portugal Current Systems | *OceanGliders > BOON > Northeast Atlantic Ocean > XXXX* | pending | Network name needed, Section from Nazare Canyon to Gran Canaria island | +| Mediterranean Sea | N. Zarokanellos | Spain, France, Italy | Marginal Seas | *OceanGliders > BOON > Marginal Seas > XXXXXX* | pending | Network name needed, Add BOON members from Eastern Mediterranean Sea (Greece, Cyprus), Eastern, western med and Adriatic should be splited in different BOON networks | +| Red Sea | Burt Jones | Saudi Arabia | Marginal Seas | *OceanGliders > BOON > Southwest Pacific Ocean > XXXX* | pending | Network name needed | +| Southwest Pacific | Moninya Roughan, Jessica Benth. | Australia, New Zealand | East Australian Current, Great Barrier Reef | *OceanGliders > BOON > Southwest Pacific Ocean > XXXX* | pending | Network name needed | +| Southeast Indian | Chari Pattiaratchi | Australia | Leeuwin Current | *OceanGliders > BOON > Indian Ocean > XXXX* | pending | Need to engage Chari, possibility to request NCEI to add Southeast Indian Ocean ? | +| Nordic Seas-British Isles-Baltic-North Sea | Ilker Fer, VOTO, NOC, SAMS (Inall), Tikka Kimmo (FMI) | UK, Norway, Sweden, Finland | **descritpion needed** | *OceanGliders > BOON > ???* | pending | This is a too large region, need to split into many BOON Networks | +| Antarctic | Craig Lee | US, UK, ?? | Antarctic Circumpolar Current, adjacent seas | *OceanGliders > BOON > XXXX > XXXX* | pending | Antarctic is not an NCEI sean name. Shall we refine the NCEI sea name | +| Arctic | Craig Lee ?? | US, ?? | **Description needed** | *OceanGliders > BOON > Arctic Ocean > XXXX* | pending | Network name needed, Is Arctic Ocean precise enough ? | +| Southwest Indian | Tammy Morris | South Africa | Agulhas | *OceanGliders > BOON > Indian Ocean > Gliders in the Agulas current* | **published** | is Indian Ocean too large, can we request a new entry to NCEI ? | +| Southeast Pacific | IMRAPE?? | Peru ?? | **Description needed** | *OceanGliders > BOON > XXX > XXX* | pending | network name needed, NCEI sea name needed: "South Pacific Ocean" / Southeast Pacific Ocean (limit-140 W) / Equatorial Pacific Ocean ; can we request a new entry to NCEI ?| + +## BOON site collection +| BOON Site | Lead(s) | countries| Description (waypoints) | BOON Networks | status | +|:--------|:--------|:--------|:--------|:--------|:--------| +| CUGN Line 56 | SCRIPPS | USA | | *OceanGliders > BOON > Northeast Pacific Ocean > California Underwater Glider Network* | **published**| +| CUGN Line 66 | SCRIPPS | USA | | *OceanGliders > BOON > Northeast Pacific Ocean > California Underwater Glider Network* | **published**| +| CUGN Line 80 | SCRIPPS | USA | | *OceanGliders > BOON > Northeast Pacific Ocean > California Underwater Glider Network* | **published**| +| CUGN Line 90 | SCRIPPS | USA | | *OceanGliders > BOON > Northeast Pacific Ocean > California Underwater Glider Network* | **published**| +| CUGN Alongshore | SCRIPPS | USA | | *OceanGliders > BOON > Northeast Pacific Ocean > California Underwater Glider Network* | **published**| +| Bonavista section | DFO | Canada | | *OceanGliders > BOON > Northwest Atlantic Ocean > Gliders in the Gulf Stream* | **published**| +| Halifax section | DFO | Canada | | *OceanGliders > BOON > Northwest Atlantic Ocean > Gliders in the Gulf Stream* | **published**| +| Calvert Island | DFO | Canada | | ***BOON Network needed*** | **published**| +| Aaland Sea | VOTO | Sweden | |***BOON Network needed*** | **published**| +| Bornholm Basin |VOTO | Sweden | |***BOON Network needed*** | **published**| +| Gotland Basin | VOTO | Sweden | |***BOON Network needed*** | **published**| +| Skagerrak/Kattegat | VOTO | Sweden | |***BOON Network needed*** | **published**| +| GINA | | South Africa | | *OceanGliders > BOON > Indian Ocean > Gliders in the Agulas current* | **published** | +| Balearic - Canales C1 | SOCIB | Spain | | ***BOON Network needed*** |**published** | +| Balearic - NAlgeria C2 | SOCIB | Spain | | ***BOON Network needed*** |**published** | +| Balearic . Sardinia C3 | SOCIB, CNR | Spain, Italy | | ***BOON Network needed*** |**published** | +| CONVEX | OGS | Italy | | ***BOON Network needed*** |**published** | +| Cretan Line | HCMR | Grece | ***BOON Network needed*** |**published** | +| Fimbul | UiB | Norway | | ***BOON Network needed*** |**published** | +| Fram Strait | UiB | Norway | | ***BOON Network needed*** |**published** | +| Gimsoy | UiB | Norway | | ***BOON Network needed*** |**published** | +| GreenlandSea | UiB | Norway | | ***BOON Network needed*** |**published** | +| IcelandSea | UiB | Norway | | ***BOON Network needed*** |**published** | +| Lofoten | UiB | Norway | | ***BOON Network needed*** |**published** | +| Svinoy | UiB | Norway | | ***BOON Network needed*** |**published** | +| MohnRidge | UiB | Norway | | ***BOON Network needed*** |**published** | +| Moose_T00 |CNRS, MIO, CEFREM | France | | ***BOON Network needed*** |**published** | +| Moose_T02 |CNRS, MIO, CEFREM | France | | ***BOON Network needed*** |**published** | +| PLOCAN1 | PLOCAN | Spain | | ***BOON Network needed*** |**published** | +| PLOCAN2 | PLOCAN | Spain | | ***BOON Network needed*** |**published** | + +### Status table of future entries in BOON sites collection + +This table describe the status of discussion of the future element of then BOON network collection. + +| BOON Site | Lead(s) | countries| Description (waypoints) | BOON Networks | status | +|:--------|:--------|:--------|:--------|:--------|:--------| +| 53° North | UVIC | Canada | | | | +| A05 | David Smeed, NOC | | | | | +| Alter Eco | Matthiew Palmer, NOC | | | | | +| AntarcticPeninsula | James Thomson univ fo Washington - APL | | | | | +| BaffinDavis | Craig Lee | | | | | +| Bahamas1 | Gustavo Goni | | | | | +| **to be continued** | | | | | + diff --git a/_config.yml b/_config.yml new file mode 100644 index 0000000..2b4d804 --- /dev/null +++ b/_config.yml @@ -0,0 +1,36 @@ +title: "OceanGliders Oxygen SOP" +copyright: "" +author: "" +logo: images/logo-ocean-gliders.png + +execute: + execute_notebooks: "off" +repository: + url: https://github.com/OceanGlidersCommunity/Oxygen_SOP + branch: main +html: + use_repository_button: true + use_issues_button: true + use_edit_page_button: true + comments: + utterances: + repo: "OceanGlidersCommunity/Oxygen_SOP" + extra_footer: | +

By the OceanGliders community using + Jupyter Book. + This work is licensed under a + Creative Commons Attribution 4.0 Generic License. +

+ +sphinx: + local_extensions: + apastyle: _ext/ + bracket_citation_style: _ext/ + config: + bibtex_default_style: myapastyle + bibtex_reference_style: author_year_round + html_show_copyright: false + +bibtex_reference_style : author_year_round +bibtex_default_style : myapastyle +bibtex_bibfiles : oxygen.bib diff --git a/_ext/apastyle.py b/_ext/apastyle.py new file mode 100644 index 0000000..7cc8847 --- /dev/null +++ b/_ext/apastyle.py @@ -0,0 +1,19 @@ +from pybtex.style.formatting.unsrt import Style +from formatting.apa import APAStyle +from labels.apa import LabelStyle as APALabelStyle +from pybtex.plugin import register_plugin +from pybtex.style.template import names, sentence + + +class MyAPALabelStyle(APALabelStyle): + def format_label(self, entry): + return APALabelStyle.format_label(self, entry) + + +class MyAPAStyle(Style): + default_label_style = "myapa" + + +def setup(app): + register_plugin("pybtex.style.labels", "myapa", MyAPALabelStyle) + register_plugin("pybtex.style.formatting", "myapastyle", MyAPAStyle) diff --git a/_ext/bracket_citation_style.py b/_ext/bracket_citation_style.py new file mode 100644 index 0000000..61bad84 --- /dev/null +++ b/_ext/bracket_citation_style.py @@ -0,0 +1,28 @@ +from dataclasses import dataclass, field +import sphinxcontrib.bibtex.plugin + +from sphinxcontrib.bibtex.style.referencing import BracketStyle +from sphinxcontrib.bibtex.style.referencing.author_year \ + import AuthorYearReferenceStyle + + +def bracket_style() -> BracketStyle: + return BracketStyle( + left='(', + right=')', + ) + + +@dataclass +class MyReferenceStyle(AuthorYearReferenceStyle): + bracket_parenthetical: BracketStyle = field(default_factory=bracket_style) + bracket_textual: BracketStyle = field(default_factory=bracket_style) + bracket_author: BracketStyle = field(default_factory=bracket_style) + bracket_label: BracketStyle = field(default_factory=bracket_style) + bracket_year: BracketStyle = field(default_factory=bracket_style) + + +def setup(app): + sphinxcontrib.bibtex.plugin.register_plugin( + 'sphinxcontrib.bibtex.style.referencing', + 'author_year_round', MyReferenceStyle) \ No newline at end of file