diff --git a/.github/workflows/md.yml b/.github/workflows/md.yml new file mode 100644 index 0000000..2efe03d --- /dev/null +++ b/.github/workflows/md.yml @@ -0,0 +1,11 @@ +--- +name: Lint markdown files +on: [pull_request] # yamllint disable-line rule:truthy +jobs: + run-markdownlint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: DavidAnson/markdownlint-cli2-action@v20 + with: + globs: "**/*.md" diff --git a/.markdownlint.yaml b/.markdownlint.yaml new file mode 100644 index 0000000..bdbb15f --- /dev/null +++ b/.markdownlint.yaml @@ -0,0 +1,17 @@ +default: true +line-length: false +# line_length: 88 +# tables: false +no-trailing-punctuation: true +heading-style: + style: atx +no-missing-space-atx: true +single-title: false +fenced-code-language: true +code-block-style: + style: fenced +no-duplicate-heading: + siblings_only: true +# todo reenable this +no-inline-html: false +first-line-heading: false \ No newline at end of file diff --git a/README.md b/README.md index d458210..4d80002 100644 --- a/README.md +++ b/README.md @@ -7,11 +7,15 @@ The website is based on jekyll. For local compilation, you will first need to install ruby and bundler. Next install the required gems: - bundler install +```sh +bundler install +``` And serve the website: - bundle exec jekyll serve +```sh +bundle exec jekyll serve +``` Access the website at [http://localhost:4000](http://localhost:4000). @@ -19,7 +23,9 @@ Access the website at [http://localhost:4000](http://localhost:4000). You can also run jekyll in a docker container - docker compose up -d +```sh +docker compose up -d +``` This is equivalent running `jekyll serve`. diff --git a/_includes/button_row.html b/_includes/button_row.html new file mode 100644 index 0000000..70690bb --- /dev/null +++ b/_includes/button_row.html @@ -0,0 +1,9 @@ +{% comment %} + Wraps multiple buttons in a horizontal row. + + Arguments: + - contents: +{% endcomment -%} +
+ {{- include.content | markdownify | remove: "

" | remove: "

" -}} +
diff --git a/_includes/fa.html b/_includes/fa.html new file mode 100644 index 0000000..c723e8d --- /dev/null +++ b/_includes/fa.html @@ -0,0 +1,8 @@ +{% comment %} +Font Awesome icons + +Arguments: +- icon: Icon name, e.g. "caret-right" +- family: Icon family, e.g. "fas" +{% endcomment %} + \ No newline at end of file diff --git a/_includes/facility_table.md b/_includes/facility_table.md index f6a132a..29b1166 100644 --- a/_includes/facility_table.md +++ b/_includes/facility_table.md @@ -2,6 +2,7 @@ Infobox for a facility. Arguments: + - facility: JSON with facility info; see facilities.yml for contents {% endcomment %} @@ -25,4 +26,4 @@ Arguments: {%- endfor %}| {% endif -%} | Storage Location | {{ f.storageLocation | default: PSI }} | -| Ingestor URL | [{{ f.facilityBackend }}](https://discovery.development.psi.ch/ingestor?backendUrl={{ f.facilityBackend | url_encode }}) | +| Ingestor URL | [{{ f.facilityBackend }}](https://discovery.development.psi.ch/ingestor?backendUrl={{f.facilityBackend|url_encode}}) | diff --git a/_includes/gallery.html b/_includes/gallery.html new file mode 100644 index 0000000..a97df18 --- /dev/null +++ b/_includes/gallery.html @@ -0,0 +1,29 @@ +{% comment %} +Gallery of images + +Arguments: +- images: List of image URLs +- image: Single image URL (conflicts with 'images') +- caption: Optional caption for the gallery +- width: Optional total width (default: 100%) +{% endcomment -%} +{% if include.images %} + {%- assign images = include.images -%} +{%- else -%} + {%- assign images = "" | split: "," -%} + {%- if include.image -%} + {%- assign images = images | push: include.image -%} + {%- endif -%} +{%- endif -%} +
+
+ {%- for img in images %} + + + + {%- endfor %} +
+{%- if include.caption -%} +
{{ include.caption }}
+{%- endif -%} +
\ No newline at end of file diff --git a/_includes/news_timeline.html b/_includes/news_timeline.html new file mode 100644 index 0000000..db0096b --- /dev/null +++ b/_includes/news_timeline.html @@ -0,0 +1,15 @@ +{% comment %} +Make a timeline of news posts + +Arguments: +- posts: List of posts to show +{% endcomment %} + \ No newline at end of file diff --git a/_includes/toc_table.md b/_includes/toc_table.md index e671864..73abdf5 100644 --- a/_includes/toc_table.md +++ b/_includes/toc_table.md @@ -3,6 +3,7 @@ Table-of-contents styled as a table. Used in overview pages Arguments: + - docs: list of documents {% endcomment %} diff --git a/_includes/wpbar.html b/_includes/wpbar.html new file mode 100644 index 0000000..e4352b8 --- /dev/null +++ b/_includes/wpbar.html @@ -0,0 +1,22 @@ +{% comment %} +Table for workpackage tasks + +Arguments: + +- items: List of workpackage items (from site.data.deliverables-*) + +{% endcomment %} +
+
+
ID
+
Description
+
Status
+
+ {% for item in include.items %} +
+
{{ item.id }}
+
{{ item.description }}
+
{{ item.status }}
+
+ {% endfor %} +
diff --git a/_includes/wptasks.md b/_includes/wptasks.md new file mode 100644 index 0000000..ddf7562 --- /dev/null +++ b/_includes/wptasks.md @@ -0,0 +1,24 @@ +{% comment %} +List all workpackage tasks. Tasks are grouped by category (organizational and technical). + +Arguments: + +- tasks: List of workpackage tasks (from site.data.deliverables-*) + +{% endcomment %} +{%- assign org_items = include.tasks | where: "table", "org" %} +{%- assign tec_items = include.tasks | where: "table", "tec" %} +{% if org_items.size > 0 %} + +#### Organisational tasks + +{% include wpbar.html items=org_items %} + +{% endif %} +{%- if tec_items.size > 0 %} + +#### Technical tasks + +{% include wpbar.html items=tec_items %} + +{% endif %} diff --git a/_posts/2023-01-16-psi-highlight.md b/_posts/2023-01-16-psi-highlight.md index 27b09ff..c8078e0 100644 --- a/_posts/2023-01-16-psi-highlight.md +++ b/_posts/2023-01-16-psi-highlight.md @@ -7,4 +7,4 @@ categories: media OpenEM has been featured in a recent article entitled ["Making the most of our data"](https://www.psi.ch/en/science/scientific-highlights/making-the-most-of-our-data). -The article highlights Open Research Data projects at the Paul Scherrer Institute. \ No newline at end of file +The article highlights Open Research Data projects at the Paul Scherrer Institute. diff --git a/_posts/2023-04-21-ccpem.md b/_posts/2023-04-21-ccpem.md index 2dc19e4..2b5cc00 100644 --- a/_posts/2023-04-21-ccpem.md +++ b/_posts/2023-04-21-ccpem.md @@ -12,16 +12,3 @@ April 25-27. Please give us your thoughts on OpenEM! The conference poster about OpenEM can be viewed on [Zenodo](https://zenodo.org/record/7845286). ---- -layout: post -title: "Visit OpenEM at the CCP-EM 2023 Spring Symposium" -date: 2023-04-21 -categories: news ---- - -Spencer Bliven and Alun Ashton will be at the -[CCP-EM Symposium](https://www.ccpem.ac.uk/training/spring_symposium_2023/spring_symposium_2023.php) -April 25-27. Please give us your thoughts on OpenEM! - -The conference poster about OpenEM can be viewed on -[Zenodo](https://zenodo.org/record/7845286). \ No newline at end of file diff --git a/_posts/2023-06-15-logo.md b/_posts/2023-06-15-logo.md index 98f3d39..1885cdd 100644 --- a/_posts/2023-06-15-logo.md +++ b/_posts/2023-06-15-logo.md @@ -19,8 +19,9 @@ up of two proteins, VipA and VipB, which form a helical structure with six spira strands. The logo shows the electron density from a short segment of the sheath. Data for this image is available from three sources: + - micrographs from EMPAIR: [EMPIAR-10019](https://www.ebi.ac.uk/empiar/entry/10019) -- reconstructed 3D electron density from EMDB: [EMD-2699](https://www.ebi.ac.uk/emdb/EMD-2699); and a +- reconstructed 3D electron density from EMDB: [EMD-2699](https://www.ebi.ac.uk/emdb/EMD-2699); and a - molecular model from PDB: [3j9g](https://www.ebi.ac.uk/pdbe/entry/pdb/3j9g) The logo was created from this data using [ChimeraX](https://www.cgl.ucsf.edu/chimerax/). @@ -45,4 +46,4 @@ Proceedings MC 2013: > K. Kunze, A. Sologubenko, H. Ma, and R. Spolenak. (2013) > Orientation contrast imaging and crystallographic orientation mapping using transmission Kikuchi diffraction in the SEM. > *Proceedings MC 2013*. Regensburg, August 25 – 30, 2013. Part 1, pages 744-​745. -> DOI: [10.5283/epub.28734](http://doi.org/10.5283/epub.28734) \ No newline at end of file +> DOI: [10.5283/epub.28734](http://doi.org/10.5283/epub.28734) diff --git a/_posts/2023-07-17-unige-dci-jobs.md b/_posts/2023-07-17-unige-dci-jobs.md index e5600b9..d5efcdc 100644 --- a/_posts/2023-07-17-unige-dci-jobs.md +++ b/_posts/2023-07-17-unige-dci-jobs.md @@ -13,4 +13,4 @@ Additionally, DCI-Lausanne (UNIL/EPFL) is looking for a software engineer. [Apply for the DCI-Lausanne position](https://recruiting.epfl.ch/Vacancies/2973/Description/2) -Additional jobs may be posted soon at other [participating institutions](/members). \ No newline at end of file +Additional jobs may be posted soon at other [participating institutions](/members). diff --git a/_posts/2024-02-23-oscem.md b/_posts/2024-02-23-oscem.md index 55a2fb2..97afc21 100644 --- a/_posts/2024-02-23-oscem.md +++ b/_posts/2024-02-23-oscem.md @@ -31,4 +31,4 @@ publishing in public repositories. If you are interested in joining the community, please contact [Jose Maria Carazo](http://i2pc.es/carazo/) or [Spencer Bliven](https://www.psi.ch/en/lsm/people/spencer-edward-bliven), or see the [workshop -event page](https://indico.psi.ch/e/em-standards-2024). \ No newline at end of file +event page](https://indico.psi.ch/e/em-standards-2024). diff --git a/_posts/2024-06-10-establish-updates.md b/_posts/2024-06-10-establish-updates.md index b6a977b..f72c7b4 100644 --- a/_posts/2024-06-10-establish-updates.md +++ b/_posts/2024-06-10-establish-updates.md @@ -11,14 +11,15 @@ Join us for updates on OpenEM and our sister project, PREMISE! This follows the --- On 13 June 2024, the two establish projects financed by the ETH Domain ORD programme will be presented: + - 9.00-9.30: Open and Reproducible Materials Science Research led by Giovanni Pizzi - 9.30-10.00: Open EM Data Network led by Henning Stahlberg - 10.00-10.30: Discussion – “open science in these two projects”, best practices, exchanges, etc. The establish projects aim at establishing ORD practices that are already existing, with a research agenda and a common understanding about ORD practices. The goal is that they become the de facto standards in a community and raise the quality level. -Anyone is welcome to attend this event online. You can register for free [here](https://lnkd.in/gAQSeQgd). +Anyone is welcome to attend this event online. You can [register for free](https://lnkd.in/gAQSeQgd). Slides from the presentation are available from [zenodo](https://zenodo.org/doi/10.5281/zenodo.11632469). -*Edit*: A recording of the presentations can be viewed [here](https://epfl.zoom.us/rec/play/rWpJ4kYbs9Y5tCWx7HSKAjtJ88DpSprhpgrChGQ6MXSq4awDtVU7csV6MUYrfnCSiVuIdQfVoBRel01O.Ck4LyAPReXgo7fm4?canPlayFromShare=true&from=my_recording&continueMode=true&componentName=rec-play&originRequestUrl=https%3A%2F%2Fepfl.zoom.us%2Frec%2Fshare%2FxzKmvOza1unpe_fI7fycddZwltVoXbDDB4sZAITIM76xYg5wx1caRPxedjOKhi3P.jzbj-h0fjspgWxrE). The OpenEM portion starts at 41:03 in the recording. \ No newline at end of file +*Edit*: A [recording of the presentations](https://epfl.zoom.us/rec/play/rWpJ4kYbs9Y5tCWx7HSKAjtJ88DpSprhpgrChGQ6MXSq4awDtVU7csV6MUYrfnCSiVuIdQfVoBRel01O.Ck4LyAPReXgo7fm4?canPlayFromShare=true&from=my_recording&continueMode=true&componentName=rec-play&originRequestUrl=https%3A%2F%2Fepfl.zoom.us%2Frec%2Fshare%2FxzKmvOza1unpe_fI7fycddZwltVoXbDDB4sZAITIM76xYg5wx1caRPxedjOKhi3P.jzbj-h0fjspgWxrE) is now available. The OpenEM portion starts at 41:03 in the recording. diff --git a/_posts/2024-07-29-updated-project-page.md b/_posts/2024-07-29-updated-project-page.md index 79c3b63..00f99db 100644 --- a/_posts/2024-07-29-updated-project-page.md +++ b/_posts/2024-07-29-updated-project-page.md @@ -6,4 +6,4 @@ categories: news --- -We have worked on our project page and added the most important project information. You can now find everything about the project and the members on the page. Technical documentation and instructions will be added over time. \ No newline at end of file +We have worked on our project page and added the most important project information. You can now find everything about the project and the members on the page. Technical documentation and instructions will be added over time. diff --git a/_posts/2024-11-14-documentation-started.md b/_posts/2024-11-14-documentation-started.md index c446be8..cc1df82 100644 --- a/_posts/2024-11-14-documentation-started.md +++ b/_posts/2024-11-14-documentation-started.md @@ -6,4 +6,4 @@ categories: news --- -We have completed our website and filled the documentation with initial life. Some components are still under development and their call-up and appearance have not yet been finalised. The documentation for these components will be added at a later date. \ No newline at end of file +We have completed our website and filled the documentation with initial life. Some components are still under development and their call-up and appearance have not yet been finalised. The documentation for these components will be added at a later date. diff --git a/_posts/2024-12-13-christmas-newsletter.md b/_posts/2024-12-13-christmas-newsletter.md index 6f5b03c..a8c33bd 100644 --- a/_posts/2024-12-13-christmas-newsletter.md +++ b/_posts/2024-12-13-christmas-newsletter.md @@ -31,7 +31,6 @@ We are happy to announce that the website can now be reached at [https://www.ope In order to keep you continuously informed about the project status, we will be sending out regular newsletters in future. Please invite any colleagues who you think might be interested to [subscribe](https://psilists.ethz.ch/sympa/subscribe/openem-members?previous_action=info) to the mailing list. - ### Completed Milestones We have now completed four of our seven [milestones](/timeline/), with major deliverables achieved from all [workpackages](/deliverables/). We published the first [dataset](https://doi.psi.ch/detail/10.16907%2Fa2ab7849-5de7-4e7f-8286-72ec73089ca8) in September as part of *MS-III: Proof of Concept*, and with the recently completed *MS-IV: Alpha Release* the service is running at Uni Basel for initial testing. diff --git a/_posts/2025-01-13-oscem-newsletter.md b/_posts/2025-01-13-oscem-newsletter.md index 317a04d..49313fe 100644 --- a/_posts/2025-01-13-oscem-newsletter.md +++ b/_posts/2025-01-13-oscem-newsletter.md @@ -23,7 +23,7 @@ Dear OSC-EM members, Happy 2025! It has now been nearly a year since the EM standards workshop established the _Open Science Community for Electron Microscopy_ (OSC-EM). This mailing list has been fairly quiet in that year, but the technical group has been hard at work. One of my new year’s resolutions is to provide more regular updates to all of you on our progress, as well as invite more people to review and contribute to the burgeoning standard. -As a first step, the technical group will hold regular monthly meetings. These are currently planned for the first Monday of the month online, and are open to everyone. The next meeting will be Monday, 3 Feb 2025, at 16:00 CET/15:00 GMT/10:00 EST. More information is available [here](https://indico.psi.ch/e/oscem-2025). +As a first step, the technical group will hold regular monthly meetings. These are currently planned for the first Monday of the month online, and are open to everyone. The next meeting will be Monday, 3 Feb 2025, at 16:00 CET/15:00 GMT/10:00 EST. More information is available [on indico](https://indico.psi.ch/e/oscem-2025). Work on the project is organized through our [osc-em github organization](https://github.com/osc-em). Yves Tittes, Lola Sánchez de Lara, Sofya Laskina, and others have contributed to [schemas](https://github.com/osc-em/OSCEM_Schemas) for a number of methods, including single particle cryoEM, tomography, and processing. The schemas are authored using the [LinkML](https://linkml.io) schema language, from which we automatically generate JSON Schema, JSON-LD contexts, OWL, and other formats required for validation and semantic reasoning. diff --git a/_posts/2025-03-05-depositor-newsletter.md b/_posts/2025-03-05-depositor-newsletter.md index be5c9c6..ef78f89 100644 --- a/_posts/2025-03-05-depositor-newsletter.md +++ b/_posts/2025-03-05-depositor-newsletter.md @@ -21,7 +21,6 @@ Dear OpenEM members, the coming months, we’ll keep you updated on the project’s status and introduce key components in more detail. This month’s focus: the Depositor Service! - ## The project status We're in the [Milestone V](https://www.openem.ch/timeline/), which means OpenEM is now @@ -35,8 +34,7 @@ Scipionusers, as we expect full integration with OpenEM. Stay tuned! Our recent All-Hands Workshop took place on February 13, 2025, at the University of Bern. The hybrid format allowed us to record the session for those who couldn’t attend. -You can watch the recording -[here](https://psich.zoom.us/rec/share/0ouVFIZnhm547bav5PuN71-MrHDYkTyvs-RVb43YM73YMcKdZzt4571JgEpnn8qN.1gROCU2I5PlhniB8) +You can watch the [recording](https://psich.zoom.us/rec/share/0ouVFIZnhm547bav5PuN71-MrHDYkTyvs-RVb43YM73YMcKdZzt4571JgEpnn8qN.1gROCU2I5PlhniB8) (Password: .cPK005m) or read the slides on [zenodo](https://doi.org/10.5281/zenodo.14937442). During the workshop, we: @@ -96,4 +94,4 @@ Unlike biological research, where OneDep is the standard repository, the best de Best regards, -OpenEM Team \ No newline at end of file +OpenEM Team diff --git a/_posts/2025-04-15-ord-workshop.md b/_posts/2025-04-15-ord-workshop.md index 77575b6..2d84654 100644 --- a/_posts/2025-04-15-ord-workshop.md +++ b/_posts/2025-04-15-ord-workshop.md @@ -11,11 +11,11 @@ Join us for updates on OpenEM and other open research data projects: --- -**"Advancing Open Research Data (ORD) Practices: collaboration and innovation in the ETH Domain"**
-12 June 2025 - 9am to 6pm (including an aperitif at the end)
+**"Advancing Open Research Data (ORD) Practices: collaboration and innovation in the ETH Domain"** \ +12 June 2025 - 9am to 6pm (including an aperitif at the end) \ In Casino Bern, Casinoplatz 1, 3011 Bern -Please register [here](https://bookwhen.com/fr/epflopenscience/e/ev-s3ef-20250612000000).
+Please [register](https://bookwhen.com/fr/epflopenscience/e/ev-s3ef-20250612000000). \ *Travel costs will be covered for PhD or post-docs.* This event aims at showcasing the outcomes of the ETH Domain ORD programme and advocate excellence in ORD practices in Switzerland and beyond. diff --git a/about.md b/about.md index ed21b78..b8af101 100644 --- a/about.md +++ b/about.md @@ -29,7 +29,7 @@ OpenEM will target both researchers producing EM data and consumers of open data ### Our Goal -Our primary goal is to strengthen co-operation and innovation in the field of electron microscopy. +Our primary goal is to strengthen co-operation and innovation in the field of electron microscopy. OpenEM enables collaboration and data exchange in specific groups by providing a platform for data exchange and streamlining data collection processes. OpenEM ensures integration with globally recognised platforms and closes gaps in functionality and application. @@ -52,4 +52,4 @@ For more information, see - [OpenEM Poster](https://zenodo.org/record/7845286) - [Github organization](https://github.com/SwissOpenEM/) -- [SciCat](https://scicatproject.github.io/) \ No newline at end of file +- [SciCat](https://scicatproject.github.io/) diff --git a/assets/css/customOpenEM.scss b/assets/css/customOpenEM.scss index 494b35e..4af666d 100644 --- a/assets/css/customOpenEM.scss +++ b/assets/css/customOpenEM.scss @@ -119,13 +119,7 @@ footer { } /* --- Buttons --- */ -.button-container { - display: flex; - justify-content: center; - gap: 10px; -} - -.button { +@mixin button-style() { background-color: #419ba3; /* Green */ border: none; @@ -145,6 +139,20 @@ footer { } } +.button-container { + display: flex; + justify-content: center; + gap: 10px; + + & > a, & > div { + @include button-style(); + } +} + +.button { + @include button-style(); +} + /* --- Cards --- */ .image-grid { @@ -460,4 +468,36 @@ footer { .post-excerpt p { margin: 0; +} + +/* Image box: scale images to one row */ +.image-box { + margin-left: -1% !important; + //border: solid 1px #ddd; + padding: .5%; + + & .flex-box { + display: flex; + width: 100%; + flex-wrap: nowrap; + + & a { + flex: 1 1 auto; + object-fit: cover; + max-width: 100%; + margin: .5%; + + & img { + width: 100%; + display: block; + } + } + } + + & .caption { + text-align: center; + margin-top: 8px; + clear: both; + color: #6c757d; + } } \ No newline at end of file diff --git a/deliverable-wp1.md b/deliverable-wp1.md index e292700..2db2c32 100644 --- a/deliverable-wp1.md +++ b/deliverable-wp1.md @@ -4,69 +4,29 @@ title: Metadata Standards permalink: /deliverable-wp1/ --- -### Metadata Standards ### +### Metadata Standards The Metadata Standards work package contains the following tasks and components. -{% assign org_items = site.data.deliverables-wp.wp1 | where: "table", "org" %} -{% if org_items.size > 0 %} -#### Organisational tasks #### - -
-
-
ID
-
Description
-
Status
-
- {% for item in org_items %} -
-
{{ item.id }}
-
{{ item.description }}
-
{{ item.status }}
-
- {% endfor %} -
- -{% endif %} +{% include wptasks.md tasks=site.data.deliverables-wp.wp1 %} -{% assign tec_items = site.data.deliverables-wp.wp1 | where: "table", "tec" %} -{% if tec_items.size > 0 %} -#### Technical tasks #### - -
-
-
ID
-
Description
-
Status
-
- {% for item in tec_items %} -
-
{{ item.id }}
-
{{ item.description }}
-
{{ item.status }}
-
- {% endfor %} -
- -{% endif %} +### Tasks -### Tasks ### +#### Metadata-Standards-1: Community consensus and commitment to data collection standards -#### Metadata-Standards-1: Community consensus and commitment to data collection standards #### - -- Established the Open Standards Community for EM +- Established the [Open Standards Community for EM](https://github.com/osc-em) - Workshop 22-23 Feb 2024 with participants from facilities, software developers and repository curators. -- Schema is now available for EM metadata. During the next milestones, metadata required for processing will be included by our collaborators and support for Material Sciences will be extended. +- Schema is now [available](https://osc-em.github.io/OSCEM_Schemas/) for EM metadata. During the next milestones, metadata required for processing will be included by our collaborators and support for Material Sciences will be extended. - Schema terms are defined with respect to existing ontologies where available: CryoEM ontology, PDBx/mmCIF dictionary, Helmholtz EM Glossary, NeXus-FAIRmat NXem format. - Tools available for major instrument manufacturers and formats (Thermo Fisher EPU and SerialEM) -- Ontologies are also coordinated with the PREMISE project +- Ontologies are also coordinated with the PREMISE project -#### Metadata-Standards-2: Ensure streamlined and automatic metadata harvesting at all ETH sites #### +#### Metadata-Standards-2: Ensure streamlined and automatic metadata harvesting at all ETH sites -Metadata extraction tools for life sciences (LS-Metadata Reader) and material science (Metadata-Extractor) +Metadata extraction tools for life sciences ([LS-Metadata Reader](https://github.com/SwissOpenEM/LS_Metadata_reader)] and material science ([Metadata-Extractor](https://github.com/SwissOpenEM/metadata-extractor)). -#### Metadata-Standards-3: SciCat Dataset Ingestor #### +#### Metadata-Standards-3: SciCat Dataset Ingestor -- Fast data transfer using Globus (PSI) and S3 (ETHZ) to the archiver systems is available +- Fast data transfer using Globus (PSI) and S3 (ETHZ) to the archiver systems is available - Web-based UI for data ingestion is supported by SciCat/ GUI application. Instrument metadata is automatically extracted while user enters sample metadata and authorship -- SciCat CLI was updated to a new version of SciCat backend +- [SciCat CLI](https://github.com/paulscherrerinstitute/scicat-cli) was updated to a new version of SciCat backend diff --git a/deliverable-wp2.md b/deliverable-wp2.md index 2b23c45..72f4559 100644 --- a/deliverable-wp2.md +++ b/deliverable-wp2.md @@ -4,63 +4,24 @@ title: Scicat Metadata Catalog permalink: /deliverable-wp2/ --- -### Scicat Metadata Catalog ### +### Scicat Metadata Catalog The Scicat Metadata Catalog work package contains the following tasks and components. -{% assign org_items = site.data.deliverables-wp.wp2 | where: "table", "org" %} -{% if org_items.size > 0 %} -#### Organisational tasks #### - -
-
-
ID
-
Description
-
Status
-
- {% for item in org_items %} -
-
{{ item.id }}
-
{{ item.description }}
-
{{ item.status }}
-
- {% endfor %} -
- -{% endif %} +{% include wptasks.md tasks=site.data.deliverables-wp.wp2 %} -{% assign tec_items = site.data.deliverables-wp.wp2 | where: "table", "tec" %} -{% if tec_items.size > 0 %} -#### Technical tasks #### - -
-
-
ID
-
Description
-
Status
-
- {% for item in tec_items %} -
-
{{ item.id }}
-
{{ item.description }}
-
{{ item.status }}
-
- {% endfor %} -
- -{% endif %} +### Tasks -### Tasks ### - -#### SciCat-Metadata-Catalog-1: Establish Open EM data hub #### +#### SciCat-Metadata-Catalog-1: Establish Open EM data hub SciCat Data Catalog is hosted at PSI and provides storage, archiving, and publishing for large-scale facilities (SLS, SwissFEL, etc). -- Data repository -- Published datasets -- (Coming) Authenticate using federated identities + +- [Data repository](https://discovery.psi.ch) +- [Published datasets](https://doi.psi.ch/) +- Authenticate using federated identities ![SciCat Metadata catalog](/assets/img/scicatwp2.png) -#### SciCat-Metadata-Catalog-2: Integrate institute storage options #### +#### SciCat-Metadata-Catalog-2: Integrate institute storage options -ETHZ ScopeM users will archive data to the ETHZ Long-term Storage (LTS). \ No newline at end of file +ETHZ ScopeM users will archive data to the ETHZ Long-term Storage (LTS). diff --git a/deliverable-wp3.md b/deliverable-wp3.md index c6dc7d9..00ba328 100644 --- a/deliverable-wp3.md +++ b/deliverable-wp3.md @@ -4,59 +4,22 @@ title: Deposition in International Repositories permalink: /deliverable-wp3/ --- -### Deposition in International Repositories ### +### Deposition in International Repositories The Deposition in International Repositories work package contains the following tasks and components. -{% assign org_items = site.data.deliverables-wp.wp3 | where: "table", "org" %} -{% if org_items.size > 0 %} -#### Organisational tasks #### - -
-
-
ID
-
Description
-
Status
-
- {% for item in org_items %} -
-
{{ item.id }}
-
{{ item.description }}
-
{{ item.status }}
-
- {% endfor %} -
- -{% endif %} - -{% assign tec_items = site.data.deliverables-wp.wp3 | where: "table", "tec" %} -{% if tec_items.size > 0 %} -#### Technical tasks #### - -
-
-
ID
-
Description
-
Status
-
- {% for item in tec_items %} -
-
{{ item.id }}
-
{{ item.description }}
-
{{ item.status }}
-
- {% endfor %} -
- -{% endif %} - -### Tasks ### - -#### Deposition-1: Developing automated deposition tools for cryo-EM #### -To deposit biological specimen data, the European Bioinformatics Institute (EMBL-EBI) offers three central repositories relevant to Cryo-EM data. Early access to the testing version of OneDep API provides a method of depositing datasets to EMDB and PDB. OSCEM to mmCIF format converter is developed for metadata interoperability between OSCEM and OneDep PDBx/mmCIF syntax. A Web-based UI on top of SciCat allows for the upload of processed files to create OneDep depositions. Additional functionality will be added to the depositor to create depositions of raw datasets in EMPIAR. - -#### Deposition-2: Expanding automated deposition tools for other EM disciplines #### +{% include wptasks.md tasks=site.data.deliverables-wp.wp3 %} + +### Tasks + +#### Deposition-1: Developing automated deposition tools for cryo-EM + +To deposit biological specimen data, the European Bioinformatics Institute (EMBL-EBI) offers three central repositories relevant to Cryo-EM data. Early access to the testing version of OneDep API provides a method of depositing datasets to EMDB and PDB. [OSCEM to mmCIF format converter](https://github.com/osc-em/converter-OSCEM-to-mmCIF) is developed for metadata interoperability between OSCEM and OneDep PDBx/mmCIF syntax. A Web-based UI on top of SciCat allows for the upload of processed files to create OneDep depositions. Additional functionality will be added to the [depositor](https://github.com/SwissOpenEM/Depositor) to create depositions of raw datasets in EMPIAR. + +#### Deposition-2: Expanding automated deposition tools for other EM disciplines + Compared to task 1 of this deliverable, there are no central repositories as those offered by EBI. We are exploring possible repositories for depositions and considering the following projects: -- The NOMAD project lists data from EELS experiments and offers an API to interact with -- Material Science Cloud offers an archiving solution in any format and enables integration with other services, such as built-in visualizations and workflow managers. -During the next milestones, we will work on integrating deposition from SciCat to these repositories. \ No newline at end of file + +- The [NOMAD project](https://nomad-lab.eu/nomad-lab/) lists data from EELS experiments and offers an API to interact with +- [Material Science Cloud](https://www.materialscloud.org/home) offers an archiving solution in any format and enables integration with other services, such as built-in visualizations and workflow managers. +During the next milestones, we will work on integrating deposition from SciCat to these repositories. diff --git a/deliverable-wp4.md b/deliverable-wp4.md index 8ea5c31..6994ed1 100644 --- a/deliverable-wp4.md +++ b/deliverable-wp4.md @@ -4,68 +4,28 @@ title: User Training, Outreach and Sustainability permalink: /deliverable-wp4/ --- -### Education - User Training, Outreach and Sustainability ### +### Education - User Training, Outreach and Sustainability The User Training, Outreach and Sustainability work package contains the following tasks and components. -{% assign org_items = site.data.deliverables-wp.wp4 | where: "table", "org" %} -{% if org_items.size > 0 %} -#### Organisational tasks #### - -
-
-
ID
-
Description
-
Status
-
- {% for item in org_items %} -
-
{{ item.id }}
-
{{ item.description }}
-
{{ item.status }}
-
- {% endfor %} -
- -{% endif %} +{% include wptasks.md tasks=site.data.deliverables-wp.wp4 %} -{% assign tec_items = site.data.deliverables-wp.wp4 | where: "table", "tec" %} -{% if tec_items.size > 0 %} -#### Technical tasks #### - -
-
-
ID
-
Description
-
Status
-
- {% for item in tec_items %} -
-
{{ item.id }}
-
{{ item.description }}
-
{{ item.status }}
-
- {% endfor %} -
- -{% endif %} +### Tasks -### Tasks ### +#### Education-1: User Training -#### Education-1: User Training #### - -Extend the project website so that operators and end users can set up and operate the project components. +Extend the project website so that operators and end users can set up and operate the project components. Plan and provide user training and content. -#### Education-2: Outreach and Dissemination #### +#### Education-2: Outreach and Dissemination Promote awareness of the project and emphasise the benefits and results delivered. This includes organising and participating in workshops, publishing project documents and supporting our partners. -#### Education-3: Establishing Sustainability #### - -Ensure sustainability in terms of maintenance, care and financing. +#### Education-3: Establishing Sustainability + +Ensure sustainability in terms of maintenance, care and financing. -#### Education-4: Project website #### +#### Education-4: Project website -Provide a project website with the relevant content. \ No newline at end of file +Provide a project website with the relevant content. diff --git a/documentation.md b/documentation.md index 8767a12..e169a76 100644 --- a/documentation.md +++ b/documentation.md @@ -31,4 +31,4 @@ Click directly on a chapter to jump to it. - [**Development Manual**](/documentation/dev/overview) {%- for item in site.data.documentation-dev %} 1. {{ item.description }} -{%- endfor %} \ No newline at end of file +{%- endfor %} diff --git a/documentation/admin/admin-maintenance.md b/documentation/admin/admin-maintenance.md index 3a297d2..6b5398c 100644 --- a/documentation/admin/admin-maintenance.md +++ b/documentation/admin/admin-maintenance.md @@ -9,9 +9,9 @@ permalink: /documentation/admin/admin-maintenance ## Administration & Maintenance -In this chapter you will find an explanation of the relationships between Ingestor, Metadata Extractor and Scicat. The explanation is the basis for the configuration options of the Ingestor. +In this chapter you will find an explanation of the relationships between Ingestor, Metadata Extractor and Scicat. The explanation is the basis for the configuration options of the Ingestor. -It is generally possible to customise Ingestor via an admin UI or config files. +It is generally possible to customise Ingestor via an admin UI or config files. ### Interaction between Ingestor, metadata extractor and SciCat @@ -36,6 +36,5 @@ It is generally possible to customise Ingestor via an admin UI or config files. This section is still under development and will be delivered soon. - -{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} diff --git a/documentation/admin/general.md b/documentation/admin/general.md index 8afd842..ad05c8a 100644 --- a/documentation/admin/general.md +++ b/documentation/admin/general.md @@ -13,9 +13,9 @@ OpenEM provides an infrastructure with which research data can be managed, catal ### Responsibilities -Basically, the OpenEM infrastructure can be divided into three responsibility groups. +Basically, the OpenEM infrastructure can be divided into three responsibility groups. -The storage infrastructure and the Ingestor component are hosted at the university or research institution. The latter must ensure that the transfer server and the storage system on which raw data is stored are functional. The ingestor component, which runs on the transfer server, is the core component for data transfer. +The storage infrastructure and the Ingestor component are hosted at the university or research institution. The latter must ensure that the transfer server and the storage system on which raw data is stored are functional. The ingestor component, which runs on the transfer server, is the core component for data transfer. SciCat and the target server for file transfer are the responsibility of PSI and ETHZ. This also includes the Ingestor frontend, which is integrated into the SciCat environment. @@ -31,4 +31,4 @@ The long-term storage is managed by CSCS or ETHZ. The data is archived there for The maintenance and further development of the components is ensured by PSI and the open source community. Individual further development requests can be realised by the user due to the open source code. -{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} diff --git a/documentation/admin/installation.md b/documentation/admin/installation.md index 4dbe449..e630348 100644 --- a/documentation/admin/installation.md +++ b/documentation/admin/installation.md @@ -26,4 +26,4 @@ permalink: /documentation/admin/installation -{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} diff --git a/documentation/admin/installation/ingestor.md b/documentation/admin/installation/ingestor.md index a951b92..0874f1f 100644 --- a/documentation/admin/installation/ingestor.md +++ b/documentation/admin/installation/ingestor.md @@ -10,7 +10,8 @@ share-description: Instructions for installing the ingestor for OpenEM {: .box-note} **Note:** This is just an example of installing and running the service. You should adapt this method to your facility's needs. -### Running throuhg docker +### Running through docker + 1. Make sure that docker is up and running 2. Check that you have docker compose 3. Modify the config in the `docker-compose.yaml` file under the `configs.openem-ingestor-config.yaml` section according to your needs (see below). @@ -18,6 +19,7 @@ share-description: Instructions for installing the ingestor for OpenEM 5. Run `docker compose up` when you're done. ### Running without docker containerization + 1. Install go 2. Create a VM or setup a bare-metal server for the ingestor. You can also run it on your own computer. 3. `git clone git@github.com:SwissOpenEM/Ingestor.git` @@ -30,7 +32,7 @@ share-description: Instructions for installing the ingestor for OpenEM ## Create a base configuration for the ingestor {: .box-note} -**Note:** Additional information can be found [here](https://github.com/SwissOpenEM/Ingestor/blob/main/configs/ReadMe.md) +**Note:** Additional information can be found in the [Ingestor documentation](https://github.com/SwissOpenEM/Ingestor/blob/main/configs/ReadMe.md) Run the following command: @@ -39,9 +41,11 @@ cp [REPO_DIR]/configs/openem-ingestor-config.yaml [REPO_DIR]/cmd/openem-ingestor ``` ## Configuring the ingestor + ### SciCat The relevant section of the config for Scicat is: + ```yaml ... Scicat: @@ -56,7 +60,7 @@ Transfer: Method: ExtGlobus ExtGlobus: TransferServiceUrl: "https://url.at.psi/globus/service" - SrcFacility: "EXAMPLE-FACILITY-1" # "FAC-1" if you're using the default scicatlive setup + SrcFacility: "EXAMPLE-FACILITY-1" # "FAC-1" if you're using the default scicatlive setup DstFacility: "EXAMPLE-FACILITY-2" # "FAC-2" if you're using the default scicatlive setup CollectionRootPath: "/some/path" # the path at which the Source Globus Collection is mounted (eg. '/home') ``` @@ -67,6 +71,7 @@ Transfer: ### Transfer: Direct Globus Requests - Back-Up Option, not recommended ```yaml +{%- raw -%} ... Transfer: Method: Globus @@ -83,10 +88,11 @@ Transfer: DestinationCollectionID: "uuid-of-destination-collection" DestinationTemplate: "/nacsa/{{ .Username }}/{{ replace .Pid \".\" \"_\" }}/{{ .DatasetFolder }}" ... +{% endraw -%} ``` {: .box-note} -**Transfer.Globus.ClientID**: this should be set to the same client-id as the one you'll use in the next paragraph. You need to create a new client on `app.globus.org`, please check out the [following page]() for more information +**Transfer.Globus.ClientID**: this should be set to the same client-id as the one you'll use in the next paragraph. You need to create a new client on `app.globus.org`, please check out the [globus page]({% link documentation/admin/installation/globus.md %}) for more information {: .box-note} **Scopes**: These will include scopes for accessing the Globus Connect Server endpoints you want to interact with in the name of the user. Usually, you're only required to specify the following scope for each endpoint: `"urn:globus:auth:scope:transfer.api.globus.org:all[*https://auth.globus.org/scopes/[ENDPOINT ID HERE]/data_access]"` where you replace `[ENDPOINT ID HERE]` with the endpoint's UUID. @@ -125,11 +131,14 @@ WebServer: ViewTasksRole: "ingestor-read" ... ``` + Please make sure the following fields are properly set: + - **WebServer.Auth.ClientID**: this is the client id of the ingestor. It should be added to the IdP that you want to use with the ingestor. This id shouldn't be shared with other ingestor instances. Look up your IdP's docs for adding a new client. - **WebServer.Auth.OAuth2.RedirectURL**: The url at which the ingestor would be deployed. This should be known by you. - **WebServer.Auth.OIDC.IssuerURL**: the url to the OIDC provider. It should conform to the Discovery spec. In case of Keycloak, it usually looks like `http://[KEYCLOAK_URL]/realms/[REALM_NAME]`. - **WebServer.Auth.JWT.JwksURL**: It is the JwksURL of the OIDC provider. It is used to provide the client with the current set of public keys. It should have the same base url, but the rest of the path depends on the OIDC provider. In case of Keycloak, it should have the following format: `http://[KEYCLOAK_URL]/realms/[REALM_NAME]/protocol/openid-connect/certs`. If your provider does not support Jwks, then you can set the keys manually as follows: + ```yaml ... JWT: @@ -138,6 +147,7 @@ Please make sure the following fields are properly set: KeySignMethod: "[set the key signature method here]" ... ``` + - **WebServer.Auth.RBAC.[X]Role**: this is where you set your expected role names. It's a way to customize role names, but you can leave them as is. If facilities use shared OAuth2 client-id's (shouldn't be the case) then these roles should contain the name of each facility to make. You should also customize these if your IdP of choice can't separate what roles to map to users based on clientid. These roles specifically give permission to interact with the ingestor endpoints, and nothing else. Accessing datasets is determined by the `AccessGroups` of the user on SciCat. {: .box-note} @@ -152,17 +162,19 @@ If you're using the supplied example scicatlive config for testing, the roles ar ... WebServer: Paths: - CollectionLocations: + CollectionLocations: location1: "/some/path/location1" Projects: "/some/other/path/location2" ExtractorOutputLocation: "(optional)/location/to/output/temp/files" ... ``` - - It's important configure `CollectionLocation` as that is where the ingestor will look for to find datasets. - - The ExtractorOutputLocation sets a custom path for the temporary extractor files. Normally they're outputted to /tmp. - - Due to the way the config library works, all location keys will be lowercased. + +- It's important configure `CollectionLocation` as that is where the ingestor will look for to find datasets. +- The ExtractorOutputLocation sets a custom path for the temporary extractor files. Normally they're outputted to /tmp. +- Due to the way the config library works, all location keys will be lowercased. ### Metadata Extractors + Example config: ```yaml @@ -197,30 +209,33 @@ MetadataExtractors: ... ``` - - **InstallationPath** determines where the extractors should be downloaded/installed. - - **SchemasLocation** determines where the schemas for extractors reside. - - **DownloadMissingExtractors** sets whether to download extractors automatically from github - - **Timeout** sets the maximal time any extractor should run before timing out - - **Extractors** is the list of extractors. - - if using github for downloading, the following link is used: `https://github.com/[GithubOrg]/[GithubProject].git` - - **Version`** is the *release tag* that will be attempted to be used. - - **Executable** is the file that will be executed. - - **Checksum** is used to verify the integrity of the executable - - **ChecksumAlg** is to define the algorithm used for the checksum (only sha256 is used) - - **CommandLineTemplate** is the command template to use with the executable, it appends a formatted list of paramters. - - **Methods** is where you can define a list of methods that can be used with a particular extractor. - - **Name** is the name of the method - - **Schema** is the metadata schema to use for this method (must exist in **SchemasLocation**) - - **Url** is the url for the schema, it will be used when the schema is not found locally to download it. +- **InstallationPath** determines where the extractors should be downloaded/installed. +- **SchemasLocation** determines where the schemas for extractors reside. +- **DownloadMissingExtractors** sets whether to download extractors automatically from github +- **Timeout** sets the maximal time any extractor should run before timing out +- **Extractors** is the list of extractors. + - if using github for downloading, the following link is used: `https://github.com/[GithubOrg]/[GithubProject].git` + - **Version`** is the *release tag* that will be attempted to be used. + - **Executable** is the file that will be executed. + - **Checksum** is used to verify the integrity of the executable + - **ChecksumAlg** is to define the algorithm used for the checksum (only sha256 is used) + - **CommandLineTemplate** is the command template to use with the executable, it appends a formatted list of paramters. + - **Methods** is where you can define a list of methods that can be used with a particular extractor. + - **Name** is the name of the method + - **Schema** is the metadata schema to use for this method (must exist in **SchemasLocation**) + - **Url** is the url for the schema, it will be used when the schema is not found locally to download it. ### Metadata Extractor Jobs + This section is for configuring the metadata extractor job system. It is a system to process extraction requests in parallel and in order of requests. + ```yaml WebServer: MetadataExtJobs: ConcurrencyLimit: 4 QueueSize: 200 ``` + Where the **ConcurrencyLimit** is the max. number of extractions to be executed in parallel, and **QueueSize** is the max queue size which has FIFO order. If there are more pending requests than **QueueSize** then those requests will be processed randomly. @@ -232,28 +247,20 @@ Replace all instances of `http://localhost:8888/` if you've deployed it in some ### Keycloak Setup -You can use the patch file [here](/assets/files/ext_transfer.patch) on the `scicatlive` project's main branch ([this commit](https://github.com/SciCatProject/scicatlive/tree/296eb79e548b0345a6516e6e95f2b144b5a408e6), if the patch became incompatible with the up-to-date main branch), which will do the following steps automatically with default values. +You can use this [patch file](/assets/files/ext_transfer.patch) on the `scicatlive` project's main branch ([commit 296eb79](https://github.com/SciCatProject/scicatlive/tree/296eb79e548b0345a6516e6e95f2b144b5a408e6), if the patch became incompatible with the up-to-date main branch), which will do the following steps automatically with default values. 1. Setup keycloak, preferably with Docker 2. [OPTIONAL] Add another realm where you'll have your ingestor client added. - - ![adding a realm](/assets/img/documentation/admin/installation/ingestor/img0.png){: style="margin-top: 2em; margin-bottom: 2em;"} + + ![adding a realm](/assets/img/documentation/admin/installation/ingestor/img0.png){: style="margin-top: 2em; margin-bottom: 2em;"} 3. Add a new client with the following parameters - - - - - - - - - - - -
-
Client creation steps
-
11
1
+ {% assign images = "/assets/img/documentation/admin/installation/ingestor/img1.png + /assets/img/documentation/admin/installation/ingestor/img2.png + /assets/img/documentation/admin/installation/ingestor/img3.png" | split: " + " %} + {%- include gallery.html images=images caption="Creating the keycloak client" %} 4. Edit your client and add client-specific roles that match the ones from your Ingestor config -![adding client roles](/assets/img/documentation/admin/installation/ingestor/img5.png){: style="margin-top: 2em; margin-bottom: 2em;"} + ![adding client roles](/assets/img/documentation/admin/installation/ingestor/img5.png){: style="margin-top: 2em; margin-bottom: 2em;"} 5. Under the client's "Client Scopes" tab, click on `ingestor-dedicated` 6. `Add mapper` button -> "By configuration" -> Group Membership 7. The `token claim name` should be "accessGroups" and `Full group path` should be *turned off* @@ -266,40 +273,26 @@ The next section is useful for developers only. ### Testing with authentication enabled locally (Developers only) 1. Add a new test user. Don't forget to set a password. - - - - - - - - - - - - -
-
User creation steps
-
11
11
+ {% assign images = "/assets/img/documentation/admin/installation/ingestor/img6.png + /assets/img/documentation/admin/installation/ingestor/img7.png + /assets/img/documentation/admin/installation/ingestor/img8.png + /assets/img/documentation/admin/installation/ingestor/img9.png" | split: " + " %} + {%- include gallery.html images=images caption="Creating a user" %} 2. Assign the read and write roles of the ingestor to this user. - - - - - - - - -
-
assigning roles
-
11
+ {% assign images = "/assets/img/documentation/admin/installation/ingestor/img10.png + /assets/img/documentation/admin/installation/ingestor/img11.png" | split: " + " %} + {%- include gallery.html images=images caption="Assigning roles"%} 3. Go to [http://localhost:8888/login](http://localhost:8888/login) 4. This will open up the keycloak login page. Use your test user for logging in. ![login page](/assets/img/documentation/admin/installation/ingestor/img12.png) 5. If everything went well, you should be redirected to `RedirectURL`, and you should see a "user" cookie associated to the `localhost` domain in your browser's debugger. If you also have a valid `FrontendUrl` your browser will get redirected to your Ingestor frontend, where you should be able to interact with the ingestor backend using the cookie. ![browser debugger with cookie](/assets/img/documentation/admin/installation/ingestor/img13.png) 6. [OPTIONAL] To test the ingestor's auth directly, copy the cookie value from the browser, then you can use the following curl command: + ```bash curl -v --cookie "user=[INSERT COOKIE VALUE HERE]" "localhost:8888/transfer?page=1" ``` -If the auth is successful, you should get an empty list as a reply. \ No newline at end of file + +If the auth is successful, you should get an empty list as a reply. diff --git a/documentation/admin/overview.md b/documentation/admin/overview.md index d5140ca..b706257 100644 --- a/documentation/admin/overview.md +++ b/documentation/admin/overview.md @@ -21,6 +21,5 @@ on the website. {% include toc_table.md docs=site.data.documentation-op %} - -{% include documentationStepper/forwardBackward.html showBack=false showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=false showNext=true %} diff --git a/documentation/admin/req-infrastructure.md b/documentation/admin/req-infrastructure.md index 06cbe25..88d6504 100644 --- a/documentation/admin/req-infrastructure.md +++ b/documentation/admin/req-infrastructure.md @@ -7,7 +7,6 @@ permalink: /documentation/admin/req-infrastructure {% include documentationStepper/stepper.html %} - ## Hardware Requirements Hardware requirements for server components. @@ -103,6 +102,7 @@ All OpenEM traffic is encrypted with HTTPS. Modern browsers will refuse session and cross-origin resource sharing without valid HTTPS certificates. Each facility should register two domains: + 1. Globus (`em-globus.facility.ch` in examples) 2. Ingestor (`em-ingestor.facility.ch` in examples) @@ -114,4 +114,4 @@ details). See [facility overview](facilities.md) for current facility domain names. -{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} diff --git a/documentation/admin/support.md b/documentation/admin/support.md index 4d1e22c..be4264e 100644 --- a/documentation/admin/support.md +++ b/documentation/admin/support.md @@ -9,7 +9,7 @@ permalink: /documentation/admin/support ### Support -This section is still under development and will be delivered soon. +_This section is still under development and will be delivered soon._ -{% include documentationStepper/forwardBackward.html showBack=true showNext=false %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=false %} diff --git a/documentation/dev/generateOpenApiModels.md b/documentation/dev/generateOpenApiModels.md index 5378c48..68c86c1 100644 --- a/documentation/dev/generateOpenApiModels.md +++ b/documentation/dev/generateOpenApiModels.md @@ -10,33 +10,39 @@ permalink: /documentation/dev/openapigen We generate the objects from the openapi specification so that the ingestor UI can address the ingestor interfaces. The following instructions explain how. # OpenAPI Generator - What is that? + The OpenAPI Generator is an open source tool that provides code generators to generate client libraries, server stubs and API documentation from an OpenAPI specification (e.g. *openapi.yaml* or *open-api.json*). For more information, visit the [OpenAPI Generator website](https://openapi-generator.tech/). The tool works as follows: + * Input: It takes an OpenAPI specification file (e.g. *openapi.yaml* or *openapi.json*) that describes how the API works, including endpoints, parameters, response structures and data models. * Generator selection: You choose a generator (e.g. for *TypeScript Angular*). * Output: The generator automatically creates source code that can be used to communicate with the API or as a framework for the API implementation. - # How to install the OpenAPI Generator + ## Installation via Docker -``` + +```sh docker pull openapitools/openapi-generator-cli ``` - # How do I use the OpenAPI Generator for TypeScript Angular? + ## Prerequisites + * OpenAPI Generator has been installed * openapi.yaml is available ## Generation of Typescript Angular objects + ### Using Docker -``` + +```sh docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate \ --i /local/openapi.yaml \ --g typescript-angular \ --o /local/out + -i /local/openapi.yaml \ + -g typescript-angular \ + -o /local/out ``` * -i: Path of the input file (openapi.yaml) @@ -44,28 +50,29 @@ docker run --rm -v ${PWD}:/local openapitools/openapi-generator-cli generate \ * -o: target directory ### Using the OpenAPI Generator CLI -``` -openapi-generator-cli generate \ --i openapi.yaml \ --g typescript-angular \ --o /local/out \ +```sh +openapi-generator-cli generate \ + -i openapi.yaml \ + -g typescript-angular \ + -o /local/out \ ``` -Optional specify angular version: -``` +Optional specify angular version: + +```sh --additional-properties=ngVersion=16 ``` ## Integration into an angular project -* Copy the generated files from the *./local/out/model* folder into your Angular project (model folder). +* Copy the generated files from the *./local/out/model* folder into your Angular project (model folder). # openapi.yaml as input for OpenAPI Generator + OpenAPI.yaml contains the following things: + * Endpoints: Which URL routes are available and what they do. * HTTP methods: GET, POST, PUT, DELETE etc. * Parameters: Query parameters, body data, etc. * Responses: status codes and return data (e.g. JSON objects) - - diff --git a/documentation/dev/overview.md b/documentation/dev/overview.md index 822d662..fd9d38d 100644 --- a/documentation/dev/overview.md +++ b/documentation/dev/overview.md @@ -18,8 +18,7 @@ In this section of the website you will find the documentation for the developme ## Chapters - {% include toc_table.md docs=site.data.documentation-dev %} -{% include documentationStepper/forwardBackward.html showBack=false showNext=false %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=false showNext=false %} diff --git a/documentation/user/consumer.md b/documentation/user/consumer.md index 92eeb03..77403b9 100644 --- a/documentation/user/consumer.md +++ b/documentation/user/consumer.md @@ -13,7 +13,7 @@ This chapter explains how to request and download a dataset from SciCat. ### Login to Scicat -Log in to SciCat with your organisation user. +Log in to SciCat with your organisation user.

@@ -21,6 +21,8 @@ Log in to SciCat with your organisa

Figure 1: SciCat Log In

+{% include } + ### Select the dataset and add it to the cart After logging in, the dataset view can be opened by clicking on the SciCat logo. @@ -61,4 +63,4 @@ As soon as a data set is in the shopping basket, actions can be called up. One a The data record is now transferred from the long-term storage to a cache server. As soon as the transfer is complete, the user is informed by e-mail. A download link is provided in the e-mail. -{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} diff --git a/documentation/user/facilities.md b/documentation/user/facilities.md index 58eda10..34a12e2 100644 --- a/documentation/user/facilities.md +++ b/documentation/user/facilities.md @@ -7,7 +7,9 @@ description: Information about OpenEM participating facilities {% for facility in site.data.facilities %} + ## {{ facility.name }} + {% include facility_table.md facility=facility %} {% endfor %} diff --git a/documentation/user/general.md b/documentation/user/general.md index 2532a4e..8fe7750 100644 --- a/documentation/user/general.md +++ b/documentation/user/general.md @@ -9,20 +9,16 @@ permalink: /documentation/user/general ## SciCat -For the user, SciCat, which is hosted by PSI, is the entry point for searching, transferring and downloading datasets. +For the user, [SciCat](https://discovery.psi.ch/login), which is hosted by PSI, is the entry point for searching, transferring and downloading datasets. All actions can be started and the datasets managed via the web interface. SciCat can be accessed from any network. The individual ingestor can only be accessed within the university network. ### OpenEM from the user's point of view -The user does not have to worry about which components are used by which different institutions. SciCat and the university's own ingestor are particularly relevant for them. +The user does not have to worry about which components are used by which different institutions. SciCat and the university's own ingestor are particularly relevant for them. The ingestor is selected directly via the web frontend. When transferring data, however, it must be ensured that the ingestor is accessible. -
-
- Components Overview -
+![Overview of OpenEM user interactions](/assets/img/documentation/user/user_manual_overview.png){: .center width="60%" } - -{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} diff --git a/documentation/user/overview.md b/documentation/user/overview.md index d3c4f3a..d089ef9 100644 --- a/documentation/user/overview.md +++ b/documentation/user/overview.md @@ -13,9 +13,8 @@ In this section of the website you will find the documentation for use by an end The instructions are aimed at users who wish to transfer or download data within the framework of OpenEM. If you have any questions or problems, please get in touch with the contact person at your university. - ## Chapters {% include toc_table.md docs=site.data.documentation-user %} -{% include documentationStepper/forwardBackward.html showBack=false showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=false showNext=true %} diff --git a/documentation/user/producer.md b/documentation/user/producer.md index c9790b1..e962176 100644 --- a/documentation/user/producer.md +++ b/documentation/user/producer.md @@ -7,6 +7,6 @@ permalink: /documentation/user/producer {% include documentationStepper/stepper.html %} -This section is still under development and will be delivered soon. +_This section is still under development and will be delivered soon._ -{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} diff --git a/documentation/user/scicat.md b/documentation/user/scicat.md index 51bbffc..37c24e9 100644 --- a/documentation/user/scicat.md +++ b/documentation/user/scicat.md @@ -9,13 +9,12 @@ permalink: /documentation/user/scicat ## SciCat -This chapter explains how to use and register at SciCat. +This chapter explains how to use and register at [SciCat](https://discovery.psi.ch/login). ### Login to Scicat In SciCat it will be possible to log in using your eduID. This means that explicit registration is no longer necessary and the organisation's own users can be used. -This section is still under development and will be delivered soon. +_This section is still under development and will be delivered soon._ - -{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=true %} diff --git a/documentation/user/support.md b/documentation/user/support.md index fe3c33e..187ab3b 100644 --- a/documentation/user/support.md +++ b/documentation/user/support.md @@ -7,6 +7,6 @@ permalink: /documentation/user/support {% include documentationStepper/stepper.html %} -This section is still under development and will be delivered soon. +_This section is still under development and will be delivered soon._ -{% include documentationStepper/forwardBackward.html showBack=true showNext=false %} \ No newline at end of file +{% include documentationStepper/forwardBackward.html showBack=true showNext=false %} diff --git a/index.md b/index.md index 2233057..a7647bc 100644 --- a/index.md +++ b/index.md @@ -16,31 +16,17 @@ Welcome to the OpenEM project website. Our goal is to simplify the work with ele If you are interested or have any feedback, please contact us. - -
- - -
- What is OpenEM? - What does OpenEM deliver? - How does OpenEM do it? -
- -
- - - -### Latest News ### - -{% assign posts = site.posts | sort: "date" | reverse -%} - - - More project news +{% capture buttons %} +[What is OpenEM?](/about) +[What does OpenEM deliver?](/deliverables) +[How does OpenEM do it?](/timeline) +{% endcapture -%} +{% include button_row.html content=buttons %} + +## Latest News + +{% assign posts = site.posts | sort: "date" | reverse | slice: 0, 1 -%} + +{% include news_timeline.html posts=posts %} + +{% include fa.html icon="caret-right" %} [More project news](news) diff --git a/legal.md b/legal.md index f0db387..7828e6d 100644 --- a/legal.md +++ b/legal.md @@ -6,6 +6,6 @@ permalink: /legal/ **Project Name**: OpenEM Data Network -**Contact Email**: spencer.bliven@psi.ch +**Contact Email**: [Spencer Bliven](mailto:spencer.bliven@psi.ch) -This project is a collaboration between universities and research institutions in Switzerland. \ No newline at end of file +This project is a collaboration between [universities and research institutions in Switzerland](/team). diff --git a/news.md b/news.md index 8374036..6f45aea 100644 --- a/news.md +++ b/news.md @@ -12,14 +12,4 @@ tags: {% assign posts = site.posts | sort: "date" | reverse %} - - - \ No newline at end of file +{% include news_timeline.html posts=posts %} diff --git a/outreach.md b/outreach.md index feb7b8e..339d776 100644 --- a/outreach.md +++ b/outreach.md @@ -2,7 +2,7 @@ layout: page title: Outreach permalink: /outreach/ -tags: +tags: - Presentations - Conferences - Workshops @@ -10,45 +10,39 @@ tags: - Scientific events --- -### Presentations ### - -| Event | Date | More information | -|---------|------|---------| -| CCPEM Spring Symposium 2023 | 24-26 April 2023 | Poster: [Link](https://zenodo.org/doi/10.5281/zenodo.7845285) | -| Agreeing community standards for cryoET data preservation and reuse: data structure, metadata, ontologies etc. | 17-19 Apr 2024, EMBL-EBI, Hinxton, UK | -| CCPEM Doppio Workshop | 16-18 Jan 2024, Oxford, UK || -| Machine actionable data for chemical sciences (MADICES) workshop | 22-25 Apr 2024, Berlin | -| SciCatCon User Meeting | 2-4 Jul 2024 | -| New Opportunities for Better User Group Software (NOBUGS) | 23-27 Sept 2024 | Poster: [Link](https://zenodo.org/records/13798727) | -| EnhanceR Symposium 2024 | 07 Nov 2024 | [Link](https://symposium.enhancer.ch/) | - -### Conferences & workshops ### - -| Event | Date | More information | -|---------|------|---------| -| OSC-EM Standards Workshop at PSI | 22-23 Feb 2024 | 22 in-person participants - -### Open Source Projects ### - - -
- - -| Project | Link | -|---------|------| -| Ingestor | [https://github.com/SwissOpenEM/Ingestor](https://github.com/SwissOpenEM/Ingestor) | -| Depositor | [https://github.com/SwissOpenEM/Depositor](https://github.com/SwissOpenEM/Depositor) | -| SciCat Backend | [https://github.com/SciCatProject/scicat-backend-next](https://github.com/SciCatProject/scicat-backend-next) | -| SciCat CLI | [https://github.com/paulscherrerinstitute/scicat-cli](https://github.com/paulscherrerinstitute/scicat-cli) | -| ETHZ Archiving Services | [https://github.com/SwissOpenEM/ScopeMArchiver](https://github.com/SwissOpenEM/ScopeMArchiver) | -| Golang Globus transfer library | [https://github.com/SwissOpenEM/globus-transfer-request](https://github.com/SwissOpenEM/globus-transfer-request) | -| Metadata Extraction - Life Sciences | [https://github.com/SwissOpenEM/LS_Metadata_reader](https://github.com/SwissOpenEM/LS_Metadata_reader) | -| Metadata Extraction - Material Sciences | [https://github.com/SwissOpenEM/MS_Metadata_reader](https://github.com/SwissOpenEM/MS_Metadata_reader) | -| OSC-EM format converters | [https://github.com/osc-em/converter-JSON-to-mmCIF](https://github.com/osc-em/converter-JSON-to-mmCIF) | -| OSC-EM Schema | [https://github.com/osc-em/OSCEM_Schemas](https://github.com/osc-em/OSCEM_Schemas) | - -### Further Publications ### - -| About | Description | Date | -|---------|------|---------| -||| \ No newline at end of file +### Presentations + +| Event | Date | More information | +| -------------------------------------------------------------------------------------------------------------- | ------------------------------------- | ------------------------------------------------------- | +| CCPEM Spring Symposium 2023 | 24-26 April 2023 | [Poster](https://zenodo.org/doi/10.5281/zenodo.7845285) | +| Agreeing community standards for cryoET data preservation and reuse: data structure, metadata, ontologies etc. | 17-19 Apr 2024, EMBL-EBI, Hinxton, UK | | +| CCPEM Doppio Workshop | 16-18 Jan 2024, Oxford, UK | | +| Machine actionable data for chemical sciences (MADICES) workshop | 22-25 Apr 2024, Berlin | | +| SciCatCon User Meeting | 2-4 Jul 2024 | | +| New Opportunities for Better User Group Software (NOBUGS) | 23-27 Sept 2024 | [Poster](https://zenodo.org/records/13798727) | +| [EnhanceR Symposium 2024](https://symposium.enhancer.ch/) | 07 Nov 2024 | | + +### Conferences & workshops + +| Event | Date | More information | +| -------------------------------- | -------------- | ------------------------- | +| OSC-EM Standards Workshop at PSI | 22-23 Feb 2024 | 22 in-person participants | + +### Open Source Projects + +| Project | Link | +| --------------------------------------- | ---------------------------------------------------------------------------------------------------------------- | +| Ingestor | [https://github.com/SwissOpenEM/Ingestor](https://github.com/SwissOpenEM/Ingestor) | +| Depositor | [https://github.com/SwissOpenEM/Depositor](https://github.com/SwissOpenEM/Depositor) | +| SciCat Backend | [https://github.com/SciCatProject/scicat-backend-next](https://github.com/SciCatProject/scicat-backend-next) | +| SciCat CLI | [https://github.com/paulscherrerinstitute/scicat-cli](https://github.com/paulscherrerinstitute/scicat-cli) | +| ETHZ Archiving Services | [https://github.com/SwissOpenEM/ScopeMArchiver](https://github.com/SwissOpenEM/ScopeMArchiver) | +| Golang Globus transfer library | [https://github.com/SwissOpenEM/globus-transfer-request](https://github.com/SwissOpenEM/globus-transfer-request) | +| Metadata Extraction - Life Sciences | [https://github.com/SwissOpenEM/LS_Metadata_reader](https://github.com/SwissOpenEM/LS_Metadata_reader) | +| Metadata Extraction - Material Sciences | [https://github.com/SwissOpenEM/MS_Metadata_reader](https://github.com/SwissOpenEM/MS_Metadata_reader) | +| OSC-EM format converters | [https://github.com/osc-em/converter-JSON-to-mmCIF](https://github.com/osc-em/converter-JSON-to-mmCIF) | +| OSC-EM Schema | [https://github.com/osc-em/OSCEM_Schemas](https://github.com/osc-em/OSCEM_Schemas) | + +### Further Publications + +*Publications describing OpenEM and the OSC-EM standard are in preparation.* diff --git a/partners.md b/partners.html similarity index 97% rename from partners.md rename to partners.html index 0c99828..7505653 100644 --- a/partners.md +++ b/partners.html @@ -2,7 +2,7 @@ layout: page title: Partners permalink: /partners/ -tags: +tags: - Project partners - Collaborations - Research institutions @@ -19,4 +19,4 @@

{{ partner.title }}

{% endfor %} - \ No newline at end of file + diff --git a/privacy.md b/privacy.md index 0500114..a866efb 100644 --- a/privacy.md +++ b/privacy.md @@ -11,13 +11,15 @@ This Privacy Policy outlines how OpenEM (referred to as "we", "us", or "our") co **2. Data Collection** We may collect the following types of personal data: + - Contact information (e.g., name, email address) **3. Purpose of Data Use** We use the collected data for the following purposes: + - To provide and maintain our service - To notify you about changes to our service - To analyze usage for improving the project and user experience **4. Data Protection** -We are committed to ensuring that your information is secure. In order to prevent unauthorized access or disclosure, we have put in place suitable physical, electronic, and managerial procedures to safeguard and secure the information we collect. \ No newline at end of file +We are committed to ensuring that your information is secure. In order to prevent unauthorized access or disclosure, we have put in place suitable physical, electronic, and managerial procedures to safeguard and secure the information we collect. diff --git a/software.md b/software.md index 4db0579..f14f4fd 100644 --- a/software.md +++ b/software.md @@ -3,7 +3,7 @@ layout: page title: Software permalink: /software/ subtitle: What we develop -tags: +tags: - Software development - Core software projects - Metadata standards @@ -11,62 +11,20 @@ tags: - Metadata extraction --- -### Core software projects ### +### Core software projects -
- Components Overview -
+![Components Overview](/assets/img/software_components.png) -
+| Component | Description | Part of | +|---|---|---| +| **Ingestor**{: style="color:#2D48B4"} |Software that handles the transfer between faculties and SciCat and the LTS. The end user can select the data set to be transferred via a web interface and the rest is carried out automatically in the background.| Metadata Standards| +| **Metadata Extractor**{: style="color: #2D48B4"}| Performs automatic metadata extraction directly on the instrument. This means that it is no longer necessary for end users to analyse and enter metadata manually.|Metadata Standards| +| **SciCat**{: style="color: #44546A"}|SciCat is the public catalogue for managing, uploading and obtaining EM data. It is open source software hosted by PSI.|Scicat Metadata Catalog| +| **Archival and Retrieval**{: style="color: #44546A"}| The infrastructure that enables the archiving and retrieval of EM data. As things stand at present, this is provided by PSI and ETHZ.|Scicat Metadata Catalog| +| **Repository Integration**{: style="color: #720006"}| Integrates with international repositories for data deposition.|Deposition in International Repositories| +| **Authentication Infrastructure**{: style="color: #7B6B13"}|The authentication infrastructure enables log-in with university users. In addition, a separate role administration is planned to enable cross-faculty collaboration.|Scicat Metadata Catalog| +| **Education**{: style="color: #000000"}|Provides user training, outreach, and sustainability efforts.|Education| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ComponentDescriptionPart of
IngestorSoftware that handles the transfer between faculties and SciCat and the LTS. The end user can select the data set to be transferred via a web interface and the rest is carried out automatically in the background.Metadata Standards
Metadata ExtractorPerforms automatic metadata extraction directly on the instrument. This means that it is no longer necessary for end users to analyse and enter metadata manually.Metadata Standards
SciCatSciCat is the public catalogue for managing, uploading and obtaining EM data. It is open source software hosted by PSI.Scicat Metadata Catalog
Archival and RetrievalThe infrastructure that enables the archiving and retrieval of EM data. As things stand at present, this is provided by PSI and ETHZ.Scicat Metadata Catalog
Repository IntegrationIntegrates with international repositories for data deposition.Deposition in International Repositories
Authentication InfrastructureThe authentication infrastructure enables log-in with university users. In addition, a separate role administration is planned to enable cross-faculty collaboration.Scicat Metadata Catalog
EducationProvides user training, outreach, and sustainability efforts.Education
+### Github projects -### Github projects ### - - List of open source projects - \ No newline at end of file +[List of open source projects](/outreach#open-source-projects) diff --git a/team.md b/team.html similarity index 98% rename from team.md rename to team.html index 6f6e2a0..badea82 100644 --- a/team.md +++ b/team.html @@ -3,7 +3,7 @@ title: Team permalink: /team/ subtitle: Who works on OpenEM? -tags: +tags: - OpenEM team - Participating institutes - Swiss electron microscopy @@ -11,7 +11,7 @@ - Research institutions --- -### Participating Institutes +

Participating Institutes

Map of participating institutions diff --git a/timeline.md b/timeline.md index 941ce45..1208cb7 100644 --- a/timeline.md +++ b/timeline.md @@ -44,6 +44,7 @@ data volumes and local infrastructure. ### Milestone I: Metadata Standards +{: .box-note} **Completed: Feb 2024** Standardizing EM metadata was identified as a critical dependency for many OpenEM @@ -68,6 +69,7 @@ interoperable EM metadata. ### Milestone II: Conceptual Plan +{: .box-note} **Completed: May 2024** OpenEM integrates many existing services from the ETH domain and Swiss universities: @@ -77,7 +79,6 @@ With the completion of this milestone, OpenEM finalized the overall architecture integrating these services as well as prototypes of new microservices needed for interoperability. - | Component | Goal | | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- | | Metadata Extractor | Early draft of OSC-EM schema. Prototype parsers for cryoEM and EELS metadata. | @@ -92,6 +93,7 @@ interoperability. ### Milestone III: Proof of Concept +{: .box-note} **Completed: September 2024** This milestone included basic functionality from all components. This allowed the collection and publication of the first dataset using the complete OpenEM ecosystem. The cryoEM dataset of was collected at UNIBAS with metadata according to the OSC-EM schema. The dataset was transferred to the PSI SciCat instance from the facility and published under a new DOI. @@ -108,6 +110,7 @@ This milestone included basic functionality from all components. This allowed th ### Milestone IV: Alpha Release +{: .box-note} **Completed: December 2024** This milestone began the roll-out process of OpenEM software, starting at one facility. @@ -124,13 +127,13 @@ Additional features were added to improve the usability and make ingestion of da ### Milestone V: Beta Release -**Planned: March 2025** +{: .box-note} +**Completed: July 2025** During this phase software will be rolled out to all facilities. This includes making -the system available to more user, improving our deployment procedures, and finishing +the system available to more users, improving our deployment procedures, and finishing documentation. - | Component | Goal | | ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | Metadata Extractor | Material science use cases are completed (TEM, STEM, EELS, HD) and at least one microscope at each facility is supported. | @@ -141,7 +144,6 @@ documentation. | Archival and Retrieval | ETHZ archiver system hardware is completed. | | SciCat | Integrate both PSI and ETHZ archiver systems. Provide schema validation. | - ## Introduction ### Milestone VI: Official Release @@ -150,7 +152,8 @@ By this point the software is considered fully in production. Datasets will be c from all facilities routinely. Features for easily deploying updates and easy maintenance of the services will also be implemented. -**Planned: May 2025** +{: .box-note} +**Planned: October 2025** | Component | Goal | | ---------------------- | ---------------------------------------------------------------------------------------------- | @@ -158,9 +161,9 @@ maintenance of the services will also be implemented. | Education - Website | User manual is finished. | | Repository Integration | Enable upload to EMPIAR. | - ### Milestone VII: Handover to Facilities +{: .box-note} **Planned: December 2025** The final milestone hands over operation and maintenance roles to facilities, preparing