diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index e598eacb2..d34516a60 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -1 +1,2 @@ 947b46503e3eb5e5ca55b09f996875c775cda483 +7ab9b850bf9bda488273056fba04d6c656eed117 diff --git a/.github/workflows/tests-feature.yml b/.github/workflows/tests-feature.yml index e9734a338..6ad1823fe 100644 --- a/.github/workflows/tests-feature.yml +++ b/.github/workflows/tests-feature.yml @@ -30,10 +30,10 @@ jobs: python-version: [3.8] # for efficiency test only one specific python version requirements-level: [pypi] cache-service: [redis] - db-service: [postgresql13] + db-service: [postgresql14] search-service: [opensearch2,elasticsearch7] include: - - db-service: postgresql13 + - db-service: postgresql14 DB_EXTRAS: "postgresql" - search-service: opensearch2 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ed2733a02..a6fdbe823 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -26,80 +26,11 @@ on: default: "Manual trigger" jobs: - Tests: - runs-on: ubuntu-20.04 - strategy: - matrix: - python-version: [3.8, 3.9] - requirements-level: [pypi] - db-service: [postgresql13] - search-service: [opensearch2,elasticsearch7] - node-version: [16.x] - include: - - db-service: postgresql13 - DB_EXTRAS: "postgresql" - - - search-service: opensearch2 - SEARCH_EXTRAS: "opensearch2" - - - search-service: elasticsearch7 - SEARCH_EXTRAS: "elasticsearch7" - - env: - DB: ${{ matrix.db-service }} - SEARCH: ${{ matrix.search-service }} - EXTRAS: tests,${{ matrix.SEARCH_EXTRAS }} - steps: - - name: Checkout - uses: actions/checkout@v2 - - - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 - with: - node-version: ${{ matrix.node-version }} - - name: Run eslint test - run: ./run-js-linter.sh -i - - - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 - with: - python-version: ${{ matrix.python-version }} - - - name: Generate dependencies - run: | - pip install wheel requirements-builder - requirements-builder -e "$EXTRAS" --level=${{ matrix.requirements-level }} setup.py > .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt - cat .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt - - - name: Cache pip - uses: actions/cache@v2 - with: - path: ~/.cache/pip - key: ${{ runner.os }}-pip-${{ hashFiles('.${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt') }} - - - name: Install dependencies - run: | - pip install -r .${{ matrix.requirements-level }}-${{ matrix.python-version }}-requirements.txt -c constraints-${{ matrix.requirements-level }}.txt - pip install ".[$EXTRAS]" - pip freeze - docker --version - docker-compose --version - - - name: Run translations test - run: ./run-i18n-tests.sh - - - name: Run tests - run: | - ./run-tests.sh - - - name: Install deps for frontend tests - working-directory: ./invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records - run: npm install - - - name: Install deps for frontend tests - translations - working-directory: ./invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records - run: npm install - - - name: Run frontend tests - working-directory: ./invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records - run: npm test + Python: + uses: inveniosoftware/workflows/.github/workflows/tests-python.yml@master + + JS: + uses: inveniosoftware/workflows/.github/workflows/tests-js.yml@master + with: + js-working-directory: ./invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records + translations-working-directory: ./invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records diff --git a/.gitignore b/.gitignore index 1b7433f87..43261e10f 100644 --- a/.gitignore +++ b/.gitignore @@ -74,3 +74,6 @@ Pipfile.lock # pip wheel pip-wheel-metadata/ + +# node_modules +node_modules diff --git a/.tx/config b/.tx/config index d61f394b5..ae956c7f0 100644 --- a/.tx/config +++ b/.tx/config @@ -61,7 +61,7 @@ type = PO # $ npm run compile_catalog lang [o:inveniosoftware:p:invenio:r:invenio-rdm-records-messages-ui] -file_filter = invenio-rdm-records/assets/semantic-ui/translations/invenio-rdm-records/messages//messages.po -source_file = invenio-rdm-records/assets/semantic-ui/translations/invenio-rdm-records/translations.pot +file_filter = invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages//messages.po +source_file = invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/translations.pot source_lang = en type = PO diff --git a/CHANGES.rst b/CHANGES.rst index a89b954fc..8a01262ba 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,6 +1,8 @@ + .. - Copyright (C) 2019-2023 CERN. - Copyright (C) 2019 Northwestern University. + Copyright (C) 2019-2024 CERN. + Copyright (C) 2019-2024 Northwestern University. + Copyright (C) 2024 KTH Royal Institute of Technology. Invenio-RDM-Records is free software; you can redistribute it and/or @@ -10,6 +12,786 @@ Changes ======= +Version v16.1.0 (released 2024-11-18) + +- tokens: disable "sub" verification + * According to the JWT Specification (https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.2) + `sub` has to be a string. PyJWT v2.10.0 started enforcing this validation, + which breaks our usage of storing an object in the `sub` field. + * Fixes jwt.decode options for specifying required fields. +- jsonschemas: backport "internal_notes" to v6.0.0 + * Backports the "internal_notes" field to the v6.0.0 JSONSchema, since + it is backwards compatible, and thus doesn't require any record + migration overhead. +- UI: display all affiliations + +Version v16.0.1 (released 2024-11-11) + +- deposit-ui: fix creator affiliations selection display + * Fixes a bug where the selected affiliations from the dropdown do not + appear inside the input box. + +Version v16.0.0 (released 2024-11-11) + +- identifiers: allow alternative identifiers with the same scheme but different values +- records: add intenal_notes schema field and bump of jsonschema version + +Version v15.7.1 (released 2024-11-06) + +- installation: bump babel-edtf to >=1.2.0 +- tests: fix EDTF interval with unknown start/end +- ui: use config instead of hardcoded url +- setup: forward compatibility to itsdangerous>=2.1 +- fix: DeprecationWarning of SQLAlchemy + +Version v15.7.0 (released 2024-11-04) + +- resources: make record error handlers configurable + * Possible via the new `RDM_RECORDS_ERROR_HANDLERS` config variable. +- components: make content moderation configurable + * Closes #1861. + * Adds a new `RRM_CONTENT_MODERATION_HANDLERS` config variable to allow + for configuring multiple handlers for the different write actions. +- user_moderation: use search for faster actions + * Use search results to determine the user's list of records. + * Use a TaskOp and Unit of Work to avoid sending Celery tasks immediately. + * Add a cleanup task that will perform a more thorough check using the + DB to lookup the user's records. +- deposit: add missing fields to record deserializer +- UI/UX: add consistent suggestions display to affiliations +- UI/UX: improve display of ROR information +- collections: move records search into service +- collections: added task to compute number of records for each collection +- services: make file-service components configurable +- access notification: provide correct draft preview link + * Closes inveniosoftware/invenio-app-rdm#2827 + +Version v15.6.0 (released 2024-10-18) + +- community: added myCommunitiesEnabled prop to CommunitySelectionSearch + +Version v15.5.0 (released 2024-10-18) + +- community: added autofocus prop to CommunitySelectionSearch + +Version v15.4.0 (released 2024-10-17) + +- DOI: fix wrong parent DOI link +- community: added props to make CommunitySelectionSearch reusable + +Version v15.3.0 (released 2024-10-16) + +- collections: display pages and REST API +- deposit: add feature flag for required community submission flow +- mappings: disable doc_values for geo_shape fields (#1807) + * Fixes multiple values for ``metadata.locaations.features``. + +Version v15.2.0 (released 2024-10-10) + +- webpack: update axios and react-searchkit(due to axios) major versions + +Version v15.1.0 (released 2024-10-10) + +- jobs: register embargo update job type +- installation: upgrade invenio-jbs + +Version v15.0.0 (released 2024-10-08) + +- installation: bump invenio-communities +- dumper: refactor and updated docstring +- awards: added subjects and orgs, updated mappings +- relations: added subject relation in awards + +Version v14.0.0 (released 2024-10-04) + +- installation: bump invenio-vocabularies & invenio-communities + +Version v13.0.0 (released 2024-10-03) + +- collections: added feature, containing core functionalities and DB models +- ui: fixed propTypes warnings +- dependencies: bump flask-iiif to >1.0.0 + +Version v12.2.2 (released 2024-09-30) + +- Improve handling of draft PID in RecordCommunitiesService +- Revert "deposit: check permission and set disable tooltip for publish button" +- Remove DeprecationWarning for sqlalchemy +- Add compatibility layer to move to flask>=3 + +Version v12.2.1 (released 2024-09-19) + +- file upload: better handling of errors when uploading empty files +- serializers: ensure that the vocab id is set before performing a look up +- deposit: take into account the can_publish permission to control when the + Publish button should be enabled or disabled + +Version v12.1.1 (released 2024-09-11) + +- resource: fix add record to community +- controls: refactored isDisabled function + +Version v12.1.0 (released 2024-08-30) + +- config: added links for thumbnails (#1799) + +Version v12.0.4 (released 2024-08-28) + +- stats: add missing "is_machine" field + +Version v12.0.3 (released 2024-08-27) + +- add permissions checks for community submission policy + +Version v12.0.2 (released 2024-08-26) + +- update file quota and size vars +- add quota config for media_files bucket + +Version v12.0.1 (released 2024-08-22) + +- bump invenio-vocabularies + +Version v12.0.0 (released 2024-08-22) + +- mappings: add analyzers and filters to improve results when searching records + +Version v11.8.0 (released 2024-08-21) + +- pids: fix parent DOI link generation +- schemaorg: add ``dateCreated`` field (closes #1777) +- i18n: push translations +- package: bump react-invenio-forms +- subjects: remove suggest from dropdown if not required + * closes https://github.com/inveniosoftware/invenio-app-rdm/issues/2767 + +Version v11.7.0 (released 2024-08-12) + +- resources: add vnd.inveniordm.v1+json http header +- translation: update file paths for strings (UI) + +Version v11.6.0 (released 2024-08-07) + +- creatibutors: fix buttons order +- permissions: change error handler for resolving pid permission denied +- record inclusion: use system identity to accept inclusion request when can_include_directly +- user_moderation: improve DB queries and use Celery tasks +- fix: use index to distinguish type of record in results + * The problem with "is_published" is that drafts created from records will + not be recognised correctly. + * Using the index is a valid solution but it is not a nice implementation. +- results: added support for drafts in the results list +- fix(community): set branding + * The set branding didn't work at all. It didn't work for rebranding if + a default already exists and it didn't work if no branding exists at + all. + * The default property of the CommunitiesRelationManager needs a string. + It can't handle a dict. + +Version v11.5.0 (released 2024-07-22) + +- codemeta: added identifier to schema +- signposting: generate 1 link context object for metadata +- fix: abort on record deletion exception + +Version v11.4.0 (released 2024-07-15) + +- affiliations: update defaults to ror v2 + +Version 11.3.1 (released 2024-07-12) + +- processors: fix tiles files iteration + * Creates a copy of the files list to be iterated since we might be + modifying the underlying dictionary while processing tiles. + +Version 11.3.0 (released 2024-07-12) + +* media-files: generate ptif and include in manifets +* fix: pids required behavior + * The fix for the parent doi configuration + https://github.com/inveniosoftware/invenio-rdm-records/pull/1740 broke + the "required" parameter for the pid provider. Previously you could + have a pid provider that was active (shows up in the deposit form), + but not required (pid would only be minted if something was entered). + Because the check for "required" was removed, this stopped working. + * This correction enables the option of having external DOIs without + necessarily having to set one of them. This would not be possible with + the "is_enabled" configuration. +* iiif: handle DecompressionBombError + +Version 11.2.0 (released 2024-07-05) + +- iiif: schema: only return images within size limit in manifest + +Version 11.1.0 (released 2024-07-04) + +- installation: upgrade invenio-drafts-resources + +Version 11.0.0 (released 2024-06-04) + +- installation: bump invenio-communities, invenio-vocabularies, invenio-drafts-resources and invenio-records-resources +- installation: added invenio-jobs + +Version 10.7.1 (released 2024-05-31) + +- secret links: set csrf token for all requests with secret links, + i.e. fixes edit button CSRF error message on record landing page + + +Version 10.7.0 (released 2024-05-28) + +- pids service: resolve owned_by for the emails +- entity_resolver: match drafts while resolving +- notifications: add user and guest notifications on request actions +- pids: unify pid behaviour, disable/enable parent DOI on demand, based on + DATACITE_ENABLED configuration + +Version 10.6.0 (released 2024-05-22) + +- pids: prevent creating pids for restricted records +- pids: restrict updating permission levels for records based on a grace period + +Version 10.5.0 (released 2024-05-21) + +- iiif: add PyVIPS support for PDF thumbnail rendering + +Version 10.4.3 (released 2024-05-17) + +- services: fix permission for file edit + +Version 10.4.2 (released 2024-05-08) + +- iiif: resolve relative tiles storage against instance path + +Version 10.4.1 (released 2024-05-07) + +- grants: add new endpoint to grant access to records by groups + +Version 10.4.0 (released 2024-05-07) + +- config: add default values for IIIF tiles generation +- config: new variable for default IIIF manifest formats +- iiif: add pyramidal TIFF tiles generation on record publish via files processor +- iiif: harmonize configuration naming +- services: updated file schema + - added "access" field to file schema + - updated metadata field to be nested with a new schema +- services: fixed PDF image conversion bug + - PDF thumbnails should now work again +- iiif: added fallback for iip server +- licenses: fix some delimiters not been recognized. + +Version 10.3.2 (released 2024-04-30) + +- iiif: fix proxy path generation + +Version 10.3.1 (released 2024-04-25) + +- resources: make IIIF proxy configurable via import string + +Version 10.3.0 (released 2024-04-24) + +- services: added nested links for record files + +Version 10.2.0 (released 2024-04-23) + +- iiif: added proxy to image server + +Version 10.1.2 (released 2024-04-22) + +- review: fix draft indexing operations order + - Fixes a bug where when publishing directly to a community (e.g. + beacause the uploader is a community admin/owner/curator), the draft + would get deleted from the index and then get indexed again, thus + appearing in the users' dashboard both as a published record and + as a draft in review. + +Version 10.1.1 (released 2024-04-19) + +- pids: fix register/update serialization + +Version 10.1.0 (released 2024-04-15) + +- licenses: fix wrong characters encoding +- facets: integrate combined_subjects / fix nested subject faceting +- resources: fixed missing imports +- dublincore: fix license URL lookup + +Version 10.0.0 (released 2024-04-11) + +- Fixes datacite, dcat, dublin core, marcxml and schema.org serializer performance (reduced from ~500 queries in an OAI-PMH page down to 5). +- resources: fix performance of serializers + - Rely on index data for licenses, subjects, communities, affiliations, and licenses instead of querying. +- datacite: fixed schema with unsafe access to parent +- datacite: fixed custom license links. +- serializer: add system updated date to DataCite +- csl: improve DOI (alternative identifier), ISBN, and ISSN +- csl: improve serialization performance + - Remove funding information from CSL as it makes database queries and it is not relevant in the CSL JSON for generating citations. +- marcxml: removed service call for community slug +- marcxml: add license in 650 +- marcxml: added references +- marcxml: updated award title in get_funding +- marcxml: added language +- marcxml: moved funding from 856 to 536 +- marcxml: add contributor role +- marcxml: remove read_many call to vocab service +- records: add community.is_verified to mapping +- licenses: use sniffer to determine csv format +- licenses: bring urls up to date and use opensource and creativecommons as main urls with spdx as fallback +- licenses: change delimiter to comma +- assets: Add overridable tags (#1631) +- Added Swedish translation for vocabularies +- IIIF Presi: change viewingHint to individuals +- links: fix ESLint map expects a return value from arrow function +- vocab: add marc to roles.yaml + +Version 9.1.0 (released 2024-04-04) + +- api: added new endpoint to manage access restrictions of records +- deposit: improved communities sorting when uploading a new record +- serializers: marcxml: fixes to transformation rules + +Version 9.0.1 (released 2024-03-25) + +- serializers: DataCite to DCAT-AP - fix missing prov namespace for contributors project roles +- serializers: DataCite to DCAT-AP - include upstream editorial changes +- serializers: marcxml: Add leader to schema + +Version 9.0.0 (released 2024-03-23) + +- views: add signposting +- fixtures: added subject type creation on load +- contrib: change pages label and journal examples +- creatibutors: switch remove and edit button order +- serializers: add geolocation box and polygon to datacite +- serializers: fix longitude and latitude order to match geojson. +- resource-types: fix schema.org Thesis URL +- resource-types: publication-thesis = schema.org/Thesis +- resource-types: schema.org URL for Event +- ux: DOI prefix error message improvement +- init: move record_once to finalize_app + +Version 8.3.0 (released 2024-03-06) + +- services: introduced bulk_add permission +- requests: added community transfer request type +- services: added bulk addition to record community +- services: add metrics param interpreter + +Version 8.2.0 (released 2024-03-05) + +- bumps react-invenio-forms +- ui: center disabled new version popup tooltip +- fix: show popup tooltip on disabled new version button + +Version 8.1.1 (released 2024-02-27) + +- Revert "serializers: updated datacite schema rights." + +Version 8.1.0 (released 2024-02-27) + +- pids: allow empty-string PIDs +- config: safer parent PID conditional check +- serializers: updated datacite schema rights + +Version 8.0.0 (released 2024-02-20) + +- Bump due to major version upgrade in invenio-users-resources + +Version 7.1.1 (released 2024-02-19) + +- communities: add CommunityParentComponent + +Version 7.1.0 (released 2024-02-19) + +- mappings: change "dynamic" values to string +- requests: change default removal reason to spam +- mappings: add keyword field to ``funding.award.number`` +- files: fixed infinite spinning wheel on error +- datacite: added config for funders id priority +- datacite: updated schema +- mapping: add community children + +Version 7.0.0 (released 2024-02-16) + +- services: update community components +- installation: bump invenio-communities +- mappings: denormalize communities in records +- systemfields: fix docstrings +- requests: add check on parent community on accept +- community selection: small ui fixes + +Version 6.2.1 (released 2024-02-11) + +- requests: add record to parent community + +Version 6.2.0 (released 2024-02-09) + +- tests: make deleted file fetching deterministic +- deposit: change upload workflow for styled communities +- deposit: indicate if community selection modal is used for initial submission +- deposit: add community.theme.enabled to selection modal +- installation: bump invenio-communities version + +Version 6.1.1 (released 2024-02-05) + +- oai: exclude deleted records from search +- models: add bucket_id index +- serializers: fix DataDownload missing mimetype + +Version 6.1.0 (released 2024-02-01) + +- Add CSV records serializer + +Version 6.0.0 (released 2024-01-31) + +- installation: bump dependencies +- installation: pin commonmeta-py + +Version 5.1.1 (released 2024-01-30) + +- Custom field ui: fix deserializing for primitive types + +Version 5.1.0 (released 2024-01-29) + +- pids: restore required PIDs on publish +- schema: add dataset specific fields to jsonld + +Version 5.0.0 (2024-01-16) + +- communities: utilize community theming mechanism + +Version 4.43.2 (2024-01-16) + +- dependencies: pin commonmeta-py + +Version 4.43.1 (2023-12-12) + +- replace ckeditor with tinymce + +Version 4.43.0 (2023-12-11) + +- fixtures: method to add/update entries +- fixtures: add KTH affiliation +- chore: pycodestyle fix +- tests: added cff serializer test +- serializers: added yaml formatter +- serializers: added cff +- contrib: removed open terms from software fields +- codemeta: fixed funding serialization +- mappings: fix some mapping paths +- mapping: add a text subfield for award acronyms +- updated formatting +- export: sanitized file name in dcat schema +- export: santized filename in marcxml +- deposit-ui: improve error messages + +Version 4.42.0 (2023-11-30) + +- services: add signals component +- contrib: codemeta serializer + +Version 4.41.0 (2023-11-29) + +- metadata: use DateAndTime format for dates field +- contrib: update imprint labels to be more descriptive +- services: extend embargo check to all versions +- service: improve check for record existance +- generators: add community inclusion reviewers + +Version 4.40.0 (2023-11-20) + +- access: avoid setting ``access_request_token`` +- resources: add parent doi redirection +- serializers: don't strip html for dc and marcxml +- config: update OAISERVER_RECORD_SETS_FETCHER +- deposit-ui: fix affiliations serialization + +Version 4.39.3 (2023-11-13) + +- secret-links: remove token from session on expiration + +Version 4.39.2 (2023-11-07) + +- resources: fix dcat serializer for restricted record files +- email templates: fix access request submit templates +- schemaorg: added fields to schema to improve fair score +- notifications: send community inclusion emails to community managers + +Version 4.39.1 (2023-11-01) + +- installation: remove upper pin for invenio-oauth2server +- draft: fix creatibutors affiliation de-duplication in select dropdown + +Version 4.39.0 (2023-10-31) + +- jsonschema: remove unique items constraints +- ui: deposit fields license Custom SearchBar +- fix: upload going blank on translation + +Version 4.38.3 (2023-10-30) + +- oaiserver: fix record loading for db results +- tests: add OAI endpoint tests + +Version 4.38.2 (2023-10-27) + +- datacite: fix related identifiers serialization. + +Version 4.38.1 (2023-10-26) + +- files: updating url encoding +- entity: catch soft deleted draft +- schemaorg: serialize "creator" +- user access request e-mail: include requestor email address + +Version 4.38.0 (2023-10-25) + +- github: fix identity fetch for releases + +Version 4.37.4 (2023-10-25) + +- serializers: fix award serialization in marcxml +- assets: improve email templates formatting + +Version 4.37.3 (2023-10-23) + +- subjects: validate that values are unique +- github: added default repo creators +- service: fix draft access on deleted published record + +Version 4.37.2 (2023-10-20) + +- email: case-insensitive comparison of user email +- resources: make search request args class configurable +- service: make search option class configurable +- serializers: fix bibtex for github record-releases and requiring given_name field + +Version 4.37.1 (2023-10-19) + +- serializing: patch edtf date parser + +Version 4.37.0 (2023-10-19) + +- service config: change lock edit publish file +- installation: bump invenio-drafts-resources + +Version 4.36.10 (2023-10-19) + +- access: relax serialization checks + +Version 4.36.9 (2023-10-18) + +- github: added support for extra metadata. +- edit: fix serialization of creator roles +- deposit: fix required identifiers for creators +- serializers: fix wrongly used get + +Version 4.36.8 (2023-10-17) + +- github metadata: fix empty affiliations + +Version 4.36.7 (2023-10-17) + +- github: fixed authors serialization. + +Version 4.36.6 (2023-10-16) + +- reindex stats in batches of 10k + +Version 4.36.5 (2023-10-16) + +- allow users to delete pending files +- fix beforeunload event in upload form + +Version 4.36.4 (2023-10-15) + +- remove dependency in `flask_login.current_user` on service layer + +Version 4.36.3 (2023-10-15) + +- fix search of drafts + +Version 4.36.2 (2023-10-14) + +- datastore: prevent autoflush on search + +Version 4.36.1 (2023-10-14) + +- github: read releases by user identity permission + +Version 4.36.0 (2023-10-13) + +- service add version scan method + +Version 4.35.0 (2023-10-13) + +- datacite: hide DOI on delete record admin action +- datacite: show DOI on restore record admin action + +Version 4.34.0 (2023-10-12) + +- oai: add alias methods for backwards compatibility +- oai: marcxml: string encoding bug +- dependencies: upper pinned types requests. +- add schemaorg serializer +- oaiserver: add rebuild index method + +Version 4.33.2 (2023-10-11) + +- deposit form: improve UX of contributors modal +- tombstone: fix information removed by Admin + +Version 4.33.1 (2023-10-10) + +- service: fix restore/delete of specific record version + +Version 4.33.0 (2023-10-09) + +- journal: ui serializer formatting improvements +- serializers: ui - add publication date to journal citation +- github: store name and family name of author + +Version 4.32.0 (2023-10-06) + +- deposit form: report invalid value errors on each draft save +- access-requests: send notification on submit action +- access-requests: replace EmailOp with NotificationOp on guest access token create +- access-requests: replace EmailOp with NotificationOp + +Version 4.31.1 (2023-10-04) + +- deposit: make name's affiliation/id optionals + +Version 4.31.0 (2023-10-04) + +- files: add check for deleted record +- communities: add resource and service handlers for setting default community +- versions: add status param interpreter +- communities-records: set correct links + +Version 4.30.0 (2023-10-03) + +- add task to reindex records to update views/downloads stats + +Version 4.29.0 (2023-10-03) + +- serializers: replace slugs caching with invenio-cache +- assets: remove redundant recover on file upload fail +- notifications: add submission accept action notification +- ui: added autoFocus to Deposit Form modals + +Version 4.28.2 (2023-09-28) + +- serializers: fix cache ttl when fetching communities slugs + +Version 4.28.1 (2023-09-28) + +- serializers: use cache when fetching communities slugs +- service: fix config sort object being wrongly updated + +Version 4.28.0 (2023-09-26) + +- services: add community deletion component +- resources: fix response code on delete action +- resources: accept if_match header with revision id on DELETE + +Version 4.27.0 (2023-09-22) + +- services: added record components config support +- links: return parent_doi for both records and drafts + +Version 4.26.0 (2023-09-21) + +- deposit: add accessibility attributes +- resources: add etag headers +- search: query filter for deleted records on the main search endpoint +- services: add search params + +Version 4.25.0 (2023-09-19) + +- permissions: allow moderator to see all drafts +- services: filter out deleted records +- service: add quota load schema + +Version 4.24.0 (2023-09-19) + +- community submission: fix modal text for different cases +- resources: add administration and moderation actions +- models: avoid flushing when getting records + +Version 4.23.2 (2023-09-17) + +- config: fix ADS bibcode idutils scheme + +Version 4.23.1 (2023-09-15) + +- resources: remove response handler from submit review + +Version 4.23.0 (2023-09-14) + +- fixtures: update names and affiliations to use model PIDs + +Version 4.22.0 (2023-09-14) + +- service: set records and user quota +- deposit modals: fix modal headlines and list options styling for creatibutors + +Version 4.21.0 (2023-09-13) + +- service: prevent creating a request if invalid restrictions +- mappings: added award acronym to os-v1 and es-v7 + +Version 4.20.1 (2023-09-12) + +- records: adds conditional dumping of files +- records: revert file dumper +- entity_resolvers: add missing ghost_record representation +- deposit: update headers for submit review action + +Version 4.20.0 (2023-09-11) + +- export formats: fix serializers +- links: add media files archive link +- moderation: delete user's records when blocking them +- serializers: added locations to UI serializer + +Version 4.19.0 (2023-09-06) + +- custom fields: update namespace values +- tokens: make RAT subject schema configurable +- services: handle no-value DOI for links +- deposit-ui: use "vnd.inveniordm.v1+json" always +- access: serialize "owned_by" field +- resources: add "x-bibtex" record serialization +- resources: make record serializers configurable +- schema: expose checksum and file ID +- services: make record/draft API classes configurable + +Version 4.18.0 (2023-09-06) + +- uow: use ParentRecordCommitOp when committing parent +- resolver: resolve records first when draft is published + +Version 4.17.0 (2023-09-05) + +- dumper: add files dumper ext +- services: add record deletion workflow +- alembic: fix record consent recipe + +Version 4.16.1 (2023-09-04) + +- stats: omit events from records without parent +- views: fix non existing avatar fetch in guest access request + +Version 4.16.0 (2023-08-30) + +- access request: record the consent to share personal data +- access request: ensure compliance of endpoints with the RFC +- access request: add load serialization schema +- oai-pmh: read oai sets prefix from app config + Version 4.15.1 (2023-08-25) - access-field: rely on `instance.files.enabled` to indicate if files exist or not diff --git a/invenio_rdm_records/__init__.py b/invenio_rdm_records/__init__.py index 0aff45d8c..ccb8f1b64 100644 --- a/invenio_rdm_records/__init__.py +++ b/invenio_rdm_records/__init__.py @@ -1,7 +1,9 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2019-2022 CERN. -# Copyright (C) 2019-2022 Northwestern University. +# Copyright (C) 2019-2024 CERN. +# Copyright (C) 2019-2024 Northwestern University. +# Copyright (C) 2024 KTH Royal Institute of Technology. +# Copyright (C) 2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -10,6 +12,6 @@ from .ext import InvenioRDMRecords -__version__ = "4.15.1" +__version__ = "16.1.0" __all__ = ("__version__", "InvenioRDMRecords") diff --git a/invenio_rdm_records/access_requests_ui/__init__.py b/invenio_rdm_records/access_requests_ui/__init__.py new file mode 100644 index 000000000..40b9ad5b5 --- /dev/null +++ b/invenio_rdm_records/access_requests_ui/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 TU Wien. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Access request UI views.""" diff --git a/invenio_rdm_records/access_requests_ui/views.py b/invenio_rdm_records/access_requests_ui/views.py new file mode 100644 index 000000000..de998f17c --- /dev/null +++ b/invenio_rdm_records/access_requests_ui/views.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 TU Wien. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Access request UI views.""" + +from flask import abort, current_app, g, redirect, render_template, request +from invenio_access.permissions import system_identity +from invenio_i18n import lazy_gettext as _ +from invenio_mail.tasks import send_email +from invenio_requests.proxies import current_requests_service +from invenio_requests.views.decorators import pass_request + +from ..proxies import current_rdm_records_service as current_service +from ..requests.access.requests import GuestAcceptAction +from ..services.errors import AccessRequestExistsError + +# Attention! These views are registered on the API app + + +def verify_access_request_token(): + """UI endpoint for verifying guest access request tokens. + + When the token is verified successfully, a new guest access request will be created + and the token object will be deleted from the database. + The token value will be stored with the newly created request and grant access + permissions to the request details. + """ + token = request.args.get("access_request_token") + access_request = None + try: + access_request = current_service.access.create_guest_access_request( + identity=g.identity, token=token + ) + except AccessRequestExistsError as e: + access_request = current_requests_service.read( + identity=system_identity, id_=e.request_id + ) + if e.request_id: + url = access_request.links["self_html"] + token = access_request.data["payload"]["token"] + return redirect(f"{url}?access_request_token={token}") + + if access_request is None: + abort(404) + + url = f"{access_request.links['self_html']}?access_request_token={token}" + + return redirect(url) + + +@pass_request(expand=True) +def read_request(request, **kwargs): + """UI endpoint for the guest access request details.""" + request_type = request["type"] + request_is_accepted = request["status"] == GuestAcceptAction.status_to + + # NOTE: this template is defined in Invenio-App-RDM + return render_template( + f"invenio_requests/{request_type}/index.html", + user_avatar=None, + record=None, + permissions={}, + invenio_request=request.to_dict(), + request_is_accepted=request_is_accepted, + ) diff --git a/invenio_rdm_records/administration/views/oai.py b/invenio_rdm_records/administration/views/oai.py index a13770cd1..d71e4a277 100644 --- a/invenio_rdm_records/administration/views/oai.py +++ b/invenio_rdm_records/administration/views/oai.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2022 CERN. +# Copyright (C) 2022-2024 CERN. # Copyright (C) 2023 Graz University of Technology. # # invenio-administration is free software; you can redistribute it and/or @@ -8,6 +8,7 @@ # details. """Invenio administration OAI-PMH view module.""" + from invenio_administration.views.base import ( AdminResourceCreateView, AdminResourceDetailView, diff --git a/invenio_rdm_records/alembic/425b691f768b_create_collections_tables.py b/invenio_rdm_records/alembic/425b691f768b_create_collections_tables.py new file mode 100644 index 000000000..75068011e --- /dev/null +++ b/invenio_rdm_records/alembic/425b691f768b_create_collections_tables.py @@ -0,0 +1,96 @@ +# +# This file is part of Invenio. +# Copyright (C) 2016-2018 CERN. +# +# Invenio is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Create collections tables.""" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy_utils import UUIDType + +# revision identifiers, used by Alembic. +revision = "425b691f768b" +down_revision = "ff9bec971d30" +branch_labels = () +depends_on = None + + +def upgrade(): + """Upgrade database.""" + # ### commands auto generated by Alembic - please adjust! ### + op.create_table( + "collections_collection_tree", + sa.Column("created", sa.DateTime(), nullable=False), + sa.Column("updated", sa.DateTime(), nullable=False), + sa.Column("id", sa.Integer(), autoincrement=True, nullable=False), + sa.Column("community_id", UUIDType(), nullable=True), + sa.Column("title", sa.String(length=255), nullable=False), + sa.Column("order", sa.Integer(), nullable=True), + sa.Column("slug", sa.String(length=255), nullable=False), + sa.ForeignKeyConstraint( + ["community_id"], + ["communities_metadata.id"], + name=op.f( + "fk_collections_collection_tree_community_id_communities_metadata" + ), + ondelete="SET NULL", + ), + sa.PrimaryKeyConstraint("id", name=op.f("pk_collections_collection_tree")), + sa.UniqueConstraint( + "slug", + "community_id", + name="uq_collections_collection_tree_slug_community_id", + ), + ) + op.create_index( + op.f("ix_collections_collection_tree_community_id"), + "collections_collection_tree", + ["community_id"], + unique=False, + ) + + op.create_table( + "collections_collection", + sa.Column("created", sa.DateTime(), nullable=False), + sa.Column("updated", sa.DateTime(), nullable=False), + sa.Column("id", sa.Integer(), autoincrement=True, nullable=False), + sa.Column("slug", sa.String(length=255), nullable=False), + sa.Column("path", sa.Text(), nullable=False), + sa.Column("tree_id", sa.Integer(), nullable=False), + sa.Column("title", sa.String(length=255), nullable=False), + sa.Column("query", sa.Text(), nullable=False), + sa.Column("order", sa.Integer(), nullable=True), + sa.Column("depth", sa.Integer(), nullable=True), + sa.Column("num_records", sa.Integer(), nullable=True), + sa.ForeignKeyConstraint( + ["tree_id"], + ["collections_collection_tree.id"], + name=op.f("fk_collections_collection_tree_id_collections_collection_tree"), + ), + sa.PrimaryKeyConstraint("id", name=op.f("pk_collections_collection")), + sa.UniqueConstraint( + "slug", "tree_id", name="uq_collections_collection_slug_tree_id" + ), + ) + op.create_index( + op.f("ix_collections_collection_path"), + "collections_collection", + ["path"], + unique=False, + ) + + +def downgrade(): + """Downgrade database.""" + op.drop_index( + op.f("ix_collections_collection_path"), table_name="collections_collection" + ) + op.drop_table("collections_collection") + op.drop_index( + op.f("ix_collections_collection_tree_community_id"), + table_name="collections_collection_tree", + ) + op.drop_table("collections_collection_tree") diff --git a/invenio_rdm_records/alembic/8ed1a438601c_migrate_secret_links.py b/invenio_rdm_records/alembic/8ed1a438601c_migrate_secret_links.py index dc51617a9..f678b93a4 100644 --- a/invenio_rdm_records/alembic/8ed1a438601c_migrate_secret_links.py +++ b/invenio_rdm_records/alembic/8ed1a438601c_migrate_secret_links.py @@ -7,7 +7,6 @@ """Migrate secret links permission levels.""" -import sqlalchemy as sa from alembic import op # revision identifiers, used by Alembic. diff --git a/invenio_rdm_records/alembic/a3957490361d_remove_pidrelations_tables.py b/invenio_rdm_records/alembic/a3957490361d_remove_pidrelations_tables.py index 10ffcb68a..f195b5a7b 100644 --- a/invenio_rdm_records/alembic/a3957490361d_remove_pidrelations_tables.py +++ b/invenio_rdm_records/alembic/a3957490361d_remove_pidrelations_tables.py @@ -7,9 +7,7 @@ """Remove PIDRelations tables.""" -import sqlalchemy as sa from alembic import op -from sqlalchemy.dialects import postgresql from sqlalchemy.engine.reflection import Inspector # revision identifiers, used by Alembic. diff --git a/invenio_rdm_records/alembic/b822ba22c688_create_rdm_records_branch.py b/invenio_rdm_records/alembic/b822ba22c688_create_rdm_records_branch.py index fdd54c6f4..477684a56 100644 --- a/invenio_rdm_records/alembic/b822ba22c688_create_rdm_records_branch.py +++ b/invenio_rdm_records/alembic/b822ba22c688_create_rdm_records_branch.py @@ -8,9 +8,6 @@ """Create RDM-Records branch.""" -import sqlalchemy as sa -from alembic import op - # revision identifiers, used by Alembic. revision = "b822ba22c688" down_revision = None diff --git a/invenio_rdm_records/alembic/faf0cefa79a0_create_record_quota_tables.py b/invenio_rdm_records/alembic/faf0cefa79a0_create_record_quota_tables.py new file mode 100644 index 000000000..08983ef13 --- /dev/null +++ b/invenio_rdm_records/alembic/faf0cefa79a0_create_record_quota_tables.py @@ -0,0 +1,66 @@ +# +# This file is part of Invenio. +# Copyright (C) 2016-2018 CERN. +# +# Invenio is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Create record and user quota tables.""" + +import sqlalchemy as sa +from alembic import op +from sqlalchemy_utils.types import UUIDType + +# revision identifiers, used by Alembic. +revision = "faf0cefa79a0" +down_revision = "ffd725001655" +branch_labels = () +depends_on = None + + +def upgrade(): + """Upgrade database.""" + op.create_table( + "rdm_records_quota", + sa.Column("created", sa.DateTime(), nullable=False), + sa.Column("updated", sa.DateTime(), nullable=False), + sa.Column("id", UUIDType(), nullable=False), + sa.Column("user_id", sa.Integer(), nullable=True), + sa.Column("quota_size", sa.BigInteger(), nullable=False), + sa.Column("max_file_size", sa.BigInteger(), nullable=False), + sa.Column("notes", sa.Text(), nullable=False), + sa.Column("parent_id", UUIDType(), nullable=True), + sa.ForeignKeyConstraint( + ["parent_id"], + ["rdm_parents_metadata.id"], + name=op.f("fk_rdm_records_quota_parent_id_rdm_parents_metadata"), + ondelete="CASCADE", + ), + sa.PrimaryKeyConstraint("id", name=op.f("pk_rdm_records_quota")), + sa.UniqueConstraint("parent_id", name=op.f("uq_rdm_records_quota_parent_id")), + sa.UniqueConstraint("user_id", name=op.f("uq_rdm_records_quota_user_id")), + ) + op.create_table( + "rdm_users_quota", + sa.Column("created", sa.DateTime(), nullable=False), + sa.Column("updated", sa.DateTime(), nullable=False), + sa.Column("id", UUIDType(), nullable=False), + sa.Column("quota_size", sa.BigInteger(), nullable=False), + sa.Column("max_file_size", sa.BigInteger(), nullable=False), + sa.Column("notes", sa.Text(), nullable=False), + sa.Column("user_id", sa.Integer(), nullable=True), + sa.ForeignKeyConstraint( + ["user_id"], + ["accounts_user.id"], + name=op.f("fk_rdm_users_quota_user_id_accounts_user"), + ondelete="CASCADE", + ), + sa.PrimaryKeyConstraint("id", name=op.f("pk_rdm_users_quota")), + sa.UniqueConstraint("user_id", name=op.f("uq_rdm_users_quota_user_id")), + ) + + +def downgrade(): + """Downgrade database.""" + op.drop_table("rdm_records_quota") + op.drop_table("rdm_users_quota") diff --git a/invenio_rdm_records/alembic/ff860d48fb4b_create_media_files_table.py b/invenio_rdm_records/alembic/ff860d48fb4b_create_media_files_table.py index 1eeed26f7..34d2617e8 100644 --- a/invenio_rdm_records/alembic/ff860d48fb4b_create_media_files_table.py +++ b/invenio_rdm_records/alembic/ff860d48fb4b_create_media_files_table.py @@ -1,6 +1,6 @@ # # This file is part of Invenio. -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -124,7 +124,6 @@ def upgrade(): ["id", "key"], unique=True, ) - op.drop_index("ix_uq_partial_files_object_is_head", table_name="files_object") op.add_column( "rdm_drafts_metadata", sa.Column("media_bucket_id", UUIDType(), nullable=True), @@ -175,12 +174,6 @@ def downgrade(): type_="foreignkey", ) op.drop_column("rdm_drafts_metadata", "media_bucket_id") - op.create_index( - "ix_uq_partial_files_object_is_head", - "files_object", - ["bucket_id", "key"], - unique=False, - ) op.drop_index( "uidx_rdm_records_media_files_id_key", table_name="rdm_records_media_files" ) diff --git a/invenio_rdm_records/alembic/ff9bec971d30_add_indexes.py b/invenio_rdm_records/alembic/ff9bec971d30_add_indexes.py new file mode 100644 index 000000000..e6a2cc5c8 --- /dev/null +++ b/invenio_rdm_records/alembic/ff9bec971d30_add_indexes.py @@ -0,0 +1,139 @@ +# +# This file is part of Invenio. +# Copyright (C) 2023-2024 CERN. +# +# Invenio is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Add indexes.""" + +from alembic import op + +# revision identifiers, used by Alembic. +revision = "ff9bec971d30" +down_revision = "faf0cefa79a0" +branch_labels = () +depends_on = None + + +def upgrade(): + """Upgrade database.""" + op.create_index( + op.f("ix_rdm_drafts_metadata_bucket_id"), + "rdm_drafts_metadata", + ["bucket_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_drafts_metadata_media_bucket_id"), + "rdm_drafts_metadata", + ["media_bucket_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_records_metadata_bucket_id"), + "rdm_records_metadata", + ["bucket_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_records_metadata_media_bucket_id"), + "rdm_records_metadata", + ["media_bucket_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_records_metadata_version_bucket_id"), + "rdm_records_metadata_version", + ["bucket_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_records_metadata_version_media_bucket_id"), + "rdm_records_metadata_version", + ["media_bucket_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_drafts_files_object_version_id"), + "rdm_drafts_files", + ["object_version_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_drafts_media_files_object_version_id"), + "rdm_drafts_media_files", + ["object_version_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_records_files_object_version_id"), + "rdm_records_files", + ["object_version_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_records_files_version_object_version_id"), + "rdm_records_files_version", + ["object_version_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_records_media_files_object_version_id"), + "rdm_records_media_files", + ["object_version_id"], + unique=False, + ) + op.create_index( + op.f("ix_rdm_records_media_files_version_object_version_id"), + "rdm_records_media_files_version", + ["object_version_id"], + unique=False, + ) + + +def downgrade(): + """Downgrade database.""" + op.drop_index( + op.f("ix_rdm_records_metadata_version_media_bucket_id"), + table_name="rdm_records_metadata_version", + ) + op.drop_index( + op.f("ix_rdm_records_metadata_version_bucket_id"), + table_name="rdm_records_metadata_version", + ) + op.drop_index( + op.f("ix_rdm_records_metadata_media_bucket_id"), + table_name="rdm_records_metadata", + ) + op.drop_index( + op.f("ix_rdm_records_metadata_bucket_id"), table_name="rdm_records_metadata" + ) + op.drop_index( + op.f("ix_rdm_drafts_metadata_media_bucket_id"), table_name="rdm_drafts_metadata" + ) + op.drop_index( + op.f("ix_rdm_drafts_metadata_bucket_id"), table_name="rdm_drafts_metadata" + ) + op.drop_index( + op.f("ix_rdm_drafts_files_object_version_id"), table_name="rdm_drafts_files" + ) + op.drop_index( + op.f("ix_rdm_drafts_media_files_object_version_id"), + table_name="rdm_drafts_media_files", + ) + op.drop_index( + op.f("ix_rdm_records_files_object_version_id"), table_name="rdm_records_files" + ) + op.drop_index( + op.f("ix_rdm_records_files_version_object_version_id"), + table_name="rdm_records_files_version", + ) + op.drop_index( + op.f("ix_rdm_records_media_files_version_object_version_id"), + table_name="rdm_records_media_files_version", + ) + op.drop_index( + op.f("ix_rdm_records_media_files_object_version_id"), + table_name="rdm_records_media_files", + ) diff --git a/invenio_rdm_records/alembic/ffd725001655_add_field_to_record_consent_to_share_.py b/invenio_rdm_records/alembic/ffd725001655_add_field_to_record_consent_to_share_.py new file mode 100644 index 000000000..52887773c --- /dev/null +++ b/invenio_rdm_records/alembic/ffd725001655_add_field_to_record_consent_to_share_.py @@ -0,0 +1,38 @@ +# +# This file is part of Invenio. +# Copyright (C) 2016-2018 CERN. +# +# Invenio is free software; you can redistribute it and/or modify it +# under the terms of the MIT License; see LICENSE file for more details. + +"""Add field to record consent to share personal data for access request.""" + +import sqlalchemy as sa +from alembic import op + +# revision identifiers, used by Alembic. +revision = "ffd725001655" +down_revision = "a2a6819f14f1" +branch_labels = () +depends_on = "cfcb8cb78708" + + +def upgrade(): + """Upgrade database.""" + # ### commands auto generated by Alembic - please adjust! ### + op.add_column( + "rdm_records_access_request_tokens", + sa.Column( + "consent_to_share_personal_data", sa.String(length=255), nullable=False + ), + ) + # ### end Alembic commands ### + + +def downgrade(): + """Downgrade database.""" + # ### commands auto generated by Alembic - please adjust! ### + op.drop_column( + "rdm_records_access_request_tokens", "consent_to_share_personal_data" + ) + # ### end Alembic commands ### diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/.prettierrc b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/.prettierrc index 057ddf297..103ab415a 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/.prettierrc +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/.prettierrc @@ -1 +1 @@ -"@inveniosoftware/eslint-config-invenio/prettier-config.js" \ No newline at end of file +"@inveniosoftware/eslint-config-invenio/prettier-config" diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/oaipmh/details/LinksTable.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/oaipmh/details/LinksTable.js index 9457933a3..8466996d1 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/oaipmh/details/LinksTable.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/oaipmh/details/LinksTable.js @@ -1,5 +1,5 @@ // This file is part of InvenioRdmRecords -// Copyright (C) 2022 CERN. +// Copyright (C) 2022-2024 CERN. // // Invenio RDM is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. @@ -39,6 +39,10 @@ class LinksTable extends Component { }; } + componentDidMount() { + this.fetchFormats(); + } + fetchFormats = async () => { const cancellableFetchFormats = withCancel(http.get("/api/oaipmh/formats")); @@ -71,10 +75,6 @@ class LinksTable extends Component { } }; - componentDidMount() { - this.fetchFormats(); - } - /** * Replaces the metadata prefix in the link. * Used to update links when the metadata prefix is changed. @@ -123,7 +123,7 @@ class LinksTable extends Component { if (formats.some((obj) => obj.key === newFormat)) { const newLinks = {}; - Object.keys(links).map((key) => { + Object.keys(links).forEach((key) => { const link = links[key]; newLinks[key] = this.replaceLinkPrefix(link, newFormat); }); diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/package.json b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/package.json index 5dbf7b3a1..593cca25c 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/package.json +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/package.json @@ -3,66 +3,60 @@ "This package.json is needed to run the JS tests, locally and CI." ], "scripts": { - "test": "react-scripts test" + "test": "react-scripts test --transformIgnorePatterns /\"node_modules/(?!axios)/\"" }, "devDependencies": { + "@babel/cli": "^7.5.0", + "@babel/runtime": "^7.9.0", + "@inveniosoftware/eslint-config-invenio": "^2.0.0", + "@rollup/plugin-babel": "^5.0.0", + "@rollup/plugin-commonjs": "^11.1.0", + "@rollup/plugin-node-resolve": "^7.1.0", + "@semantic-ui-react/css-patch": "^1.0.0", "@testing-library/jest-dom": "^4.2.0", "@testing-library/react": "^9.5.0", "@testing-library/user-event": "^7.2.0", - "axios": "^0.21.0", + "@tinymce/tinymce-react": "^4.3.0", + "@translations/invenio_rdm_records": "../../translations/invenio_rdm_records", + "ajv": "^8.0.0", + "ajv-keywords": "^5.0.0", + "axios": "^1.7.7", "coveralls": "^3.0.0", "enzyme": "^3.10.0", "enzyme-adapter-react-16": "^1.15.0", - "enzyme-to-json": "^3.4.0", "expect": "^26.0.0", + "formik": "^2.1.0", + "i18next": "^20.3.0", + "i18next-browser-languagedetector": "^6.1.0", + "json": "^9.0.0", + "json-schema-traverse": "^0.4.0", "lodash": "^4.17.0", "luxon": "^1.23.0", + "module-alias": "^2.2.2", + "query-string": "^7.0.0", "react": "^16.13.0", + "react-dnd": "^11.1.0", + "react-dnd-html5-backend": "^11.1.0", "react-dom": "^16.13.0", - "react-scripts": "^5.0.1", - "semantic-ui-react": "^2.1.0", + "react-dropzone": "^11.0.0", + "react-i18next": "^11.11.0", + "react-invenio-forms": "^4.0.0", "react-overridable": "^0.0.3", - "@babel/runtime": "^7.9.0", - "@ckeditor/ckeditor5-build-classic": "^16.0.0", - "@ckeditor/ckeditor5-react": "^2.1.0", - "@semantic-ui-react/css-patch": "^1.0.0", - "formik": "^2.1.0", - "query-string": "^7.0.0", - "semantic-ui-css": "^2.4.0", - "yup": "^0.32.11", - "@babel/cli": "^7.5.0", - "@inveniosoftware/eslint-config-invenio": "^2.0.0", - "@rollup/plugin-babel": "^5.0.0", - "@rollup/plugin-commonjs": "^11.1.0", - "@rollup/plugin-node-resolve": "^7.1.0", - "ajv": "^8.0.0", - "ajv-keywords": "^5.0.0", - "json-schema-traverse": "^0.4.0", - "json": "^9.0.0", + "react-redux": "^7.2.0", + "react-scripts": "^5.0.1", + "react-searchkit": "^3.0.0", + "redux": "^4.0.0", + "redux-thunk": "^2.3.0", "rimraf": "^3.0.0", "rollup": "^2.10.0", "rollup-plugin-local-resolve": "^1.0.0", "rollup-plugin-peer-deps-external": "^2.2.0", "rollup-plugin-postcss": "^3.1.0", "rollup-plugin-url": "^3.0.0", - "typescript" : "^4.9.5", - "module-alias": "^2.2.2", - "i18next": "^20.3.0", - "i18next-browser-languagedetector": "^6.1.0", - "react-dnd": "^11.1.0", - "react-dnd-html5-backend": "^11.1.0", - "react-dropzone": "^11.0.0", - "react-i18next": "^11.11.0", - "react-invenio-forms": "^2.0.0", - "react-redux": "^7.2.0", - "react-searchkit": "^2.0.0", - "redux": "^4.0.0", - "redux-thunk": "^2.3.0", - "@translations/invenio_rdm_records": "../../translations/invenio_rdm_records" - }, - "jest": { - "snapshotSerializers": [ - "enzyme-to-json/serializer" - ] + "semantic-ui-css": "^2.4.0", + "semantic-ui-react": "^2.1.0", + "tinymce": "^6.7.2", + "typescript": "^4.9.5", + "yup": "^0.32.11" } -} +} \ No newline at end of file diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositApiClient.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositApiClient.js index 42b2d4ac1..0d35c2c8d 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositApiClient.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositApiClient.js @@ -41,7 +41,7 @@ export class DepositApiClient { withCredentials: true, xsrfCookieName: "csrftoken", xsrfHeaderName: "X-CSRFToken", - headers: this.apiHeaders.json, + headers: this.apiHeaders["vnd+json"], }; this.axiosWithConfig = axios.create(this.apiConfig); this.cancelToken = axios.CancelToken; @@ -117,7 +117,6 @@ export class RDMDepositApiClient extends DepositApiClient { const payload = this.recordSerializer.serialize(draft); return this._createResponse(() => this.axiosWithConfig.post(this.createDraftURL, payload, { - headers: this.apiHeaders["vnd+json"], params: { expand: 1 }, }) ); @@ -131,7 +130,6 @@ export class RDMDepositApiClient extends DepositApiClient { async readDraft(draftLinks) { return this._createResponse(() => this.axiosWithConfig.get(draftLinks.self, { - headers: this.apiHeaders["vnd+json"], params: { expand: 1 }, }) ); @@ -146,7 +144,6 @@ export class RDMDepositApiClient extends DepositApiClient { const payload = this.recordSerializer.serialize(draft); return this._createResponse(() => this.axiosWithConfig.put(draftLinks.self, payload, { - headers: this.apiHeaders["vnd+json"], params: { expand: 1 }, }) ); @@ -289,7 +286,7 @@ export class DepositFileApiClient { withCredentials: true, xsrfCookieName: "csrftoken", xsrfHeaderName: "X-CSRFToken", - headers: this.apiHeaders.json, + headers: this.apiHeaders["vnd+json"], }; this.axiosWithConfig = axios.create(apiConfig); } diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositBootstrap.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositBootstrap.js index 9eea0fbf1..f6936686f 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositBootstrap.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositBootstrap.js @@ -26,8 +26,8 @@ import { scrollTop } from "../utils"; class DepositBootstrapComponent extends Component { componentDidMount() { - const { fileUploadOngoing } = this.props; window.addEventListener("beforeunload", (e) => { + const { fileUploadOngoing } = this.props; if (fileUploadOngoing) { e.returnValue = ""; return ""; diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositFilesService.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositFilesService.js index fad829260..f4afa51b2 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositFilesService.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositFilesService.js @@ -133,7 +133,6 @@ export class RDMDepositFilesService extends DepositFilesService { // the next upload in the queue this.uploaderQueue.markCompleted(file); this._startNextUpload(); - const response = await this.fileApiClient.finalizeFileUpload(commitFileURL); return response.data; }; @@ -169,7 +168,7 @@ export class RDMDepositFilesService extends DepositFilesService { fileData.links ); } catch (error) { - await this.delete(initializedFileMetadata.links); + console.error(error); const isCancelled = this.fileApiClient.isCancelled(error); this._onError(file, isCancelled); } diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositFilesService.test.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositFilesService.test.js index ffd96c118..3d17597ff 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositFilesService.test.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositFilesService.test.js @@ -170,9 +170,6 @@ describe("DepositFilesService tests", () => { expect(fakeOnUploadFailed).toHaveBeenCalledTimes(1); let filename = fakeOnUploadFailed.mock.calls[0][0]; expect(filename).toEqual(expectedFilename); - expect(fakeApiDeleteFile).toHaveBeenCalledTimes(1); - let fileLinks = fakeApiDeleteFile.mock.calls[0][0]; - expect(fileLinks).toEqual(fakeFileData.links); expect(fakeOnUploadStarted).not.toHaveBeenCalled(); expect(fakeOnUploadProgress).not.toHaveBeenCalled(); expect(fakeOnUploadCompleted).not.toHaveBeenCalled(); @@ -194,7 +191,6 @@ describe("DepositFilesService tests", () => { expect(fakeOnUploadFailed).toHaveBeenCalledTimes(1); let filename = fakeOnUploadFailed.mock.calls[0][0]; expect(filename).toEqual(expectedFilename); - expect(fakeApiDeleteFile).toHaveBeenCalledTimes(1); expect(fakeOnUploadCompleted).not.toHaveBeenCalled(); expect(fakeOnUploadCancelled).not.toHaveBeenCalled(); }); @@ -210,9 +206,6 @@ describe("DepositFilesService tests", () => { expect(fakeOnUploadCancelled).toHaveBeenCalledTimes(1); let filename = fakeOnUploadCancelled.mock.calls[0][0]; expect(filename).toEqual(expectedFilename); - expect(fakeApiDeleteFile).toHaveBeenCalledTimes(1); - let fileLinks = fakeApiDeleteFile.mock.calls[0][0]; - expect(fileLinks).toEqual(fakeFileData.links); expect(fakeOnUploadStarted).not.toHaveBeenCalled(); expect(fakeOnUploadProgress).not.toHaveBeenCalled(); expect(fakeOnUploadCompleted).not.toHaveBeenCalled(); diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositRecordSerializer.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositRecordSerializer.js index 48145f1cd..0c0d59a19 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositRecordSerializer.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositRecordSerializer.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // // Invenio-RDM-Records is free software; you can redistribute it and/or modify it @@ -323,6 +323,9 @@ export class RDMDepositRecordSerializer extends DepositRecordSerializer { "pids", "ui", "custom_fields", + "created", + "updated", + "revision_id", ]); // FIXME: move logic in a more sophisticated PIDField that allows empty values diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositRecordSerializer.test.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositRecordSerializer.test.js index 879ca4d03..fea57a5e3 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositRecordSerializer.test.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/api/DepositRecordSerializer.test.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // // Invenio-RDM-Records is free software; you can redistribute it and/or modify it @@ -368,6 +368,7 @@ describe("RDMDepositRecordSerializer tests", () => { files: false, metadata: false, }, + created: "2020-10-28 18:35:58.113520", expanded: {}, id: "wk205-00878", links: { @@ -496,9 +497,11 @@ describe("RDMDepositRecordSerializer tests", () => { ], version: "v2.0.0", }, + revision_id: 1, ui: { publication_date_l10n: "Sep 28, 2020", }, + updated: "2020-10-28 18:35:58.125222", }; expect(deserializedRecord).toEqual(expectedRecord); }); diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/components/CommunityHeader/CommunityHeader.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/components/CommunityHeader/CommunityHeader.js index 6dc9f0a0c..e0a50fe0b 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/components/CommunityHeader/CommunityHeader.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/components/CommunityHeader/CommunityHeader.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2021-2022 Graz University of Technology. // @@ -14,6 +14,7 @@ import { connect } from "react-redux"; import { Button, Container } from "semantic-ui-react"; import { changeSelectedCommunity } from "../../state/actions"; import { CommunitySelectionModal } from "../CommunitySelectionModal"; +import Overridable from "react-overridable"; class CommunityHeaderComponent extends Component { constructor(props) { @@ -22,6 +23,7 @@ class CommunityHeaderComponent extends Component { modalOpen: false, }; } + render() { const { changeSelectedCommunity, @@ -30,6 +32,7 @@ class CommunityHeaderComponent extends Component { showCommunitySelectionButton, disableCommunitySelectionButton, showCommunityHeader, + record, } = this.props; const { modalOpen } = this.state; @@ -63,46 +66,56 @@ class CommunityHeaderComponent extends Component { )}
{showCommunitySelectionButton && ( - <> - { - changeSelectedCommunity(community); - this.setState({ modalOpen: false }); - }} - onModalChange={(value) => this.setState({ modalOpen: value })} - modalOpen={modalOpen} - chosenCommunity={community} - displaySelected - trigger={ -
@@ -119,6 +132,7 @@ CommunityHeaderComponent.propTypes = { showCommunitySelectionButton: PropTypes.bool.isRequired, showCommunityHeader: PropTypes.bool.isRequired, changeSelectedCommunity: PropTypes.func.isRequired, + record: PropTypes.object.isRequired, }; CommunityHeaderComponent.defaultProps = { diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/components/CommunitySelectionModal/CommunityListItem.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/components/CommunitySelectionModal/CommunityListItem.js index 0fede3819..e35eeffd3 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/components/CommunitySelectionModal/CommunityListItem.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/components/CommunitySelectionModal/CommunityListItem.js @@ -1,18 +1,20 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // // Invenio-RDM-Records is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. import { i18next } from "@translations/invenio_rdm_records/i18next"; +import { get } from "lodash"; import _capitalize from "lodash/capitalize"; import PropTypes from "prop-types"; import React, { useContext } from "react"; import { Button, Icon, Label } from "semantic-ui-react"; import { CommunityCompactItem } from "@js/invenio_communities/community"; import { CommunityContext } from "./CommunityContext"; +import { InvenioPopup } from "react-invenio-forms"; -export const CommunityListItem = ({ result }) => { +export const CommunityListItem = ({ result, record, isInitialSubmission }) => { const { setLocalCommunity, getChosenCommunity, @@ -23,24 +25,92 @@ export const CommunityListItem = ({ result }) => { const { metadata } = result; const itemSelected = getChosenCommunity()?.id === result.id; const userMembership = userCommunitiesMemberships[result["id"]]; - + const invalidPermissionLevel = + record.access.record === "public" && result.access.visibility === "restricted"; + const canSubmitRecord = result.ui.permissions.can_submit_record; + const hasTheme = get(result, "theme.enabled"); + const dedicatedUpload = isInitialSubmission && hasTheme; + const isDisabled = invalidPermissionLevel || dedicatedUpload || !canSubmitRecord; const actions = ( - + + )} + {!dedicatedUpload && ( + + // Extra span needed since disabled buttons do not trigger hover events + + + } /> ); diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/controls/PublishButton/PublishButton.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/controls/PublishButton/PublishButton.js index 6e88f0a31..71dafb704 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/controls/PublishButton/PublishButton.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/controls/PublishButton/PublishButton.js @@ -40,16 +40,29 @@ class PublishButtonComponent extends Component { this.closeConfirmModal(); }; - isDisabled = (values, isSubmitting, numberOfFiles) => { + isDisabled = (values, isSubmitting, filesState) => { + if (isSubmitting) { + return true; + } + const filesEnabled = _get(values, "files.enabled", false); - const filesMissing = filesEnabled && !numberOfFiles; - return isSubmitting || filesMissing; + const filesArray = Object.values(filesState.entries ?? {}); + const filesMissing = filesEnabled && filesArray.length === 0; + + if (filesMissing) { + return true; + } + + // All files must be finished uploading + const allCompleted = filesArray.every((file) => file.status === "finished"); + + return !allCompleted; }; render() { const { actionState, - numberOfFiles, + filesState, buttonLabel, publishWithoutCommunity, formik, @@ -64,7 +77,7 @@ class PublishButtonComponent extends Component { return ( <> - - + <> + {!canRestrictRecord && ( + } + content={i18next.t( + "Record visibility can not be changed to restricted anymore. Please contact support if you still need to make these changes." + )} + /> + )} + + + + + + ); } } ProtectionButtonsComponent.propTypes = { + canRestrictRecord: PropTypes.bool, fieldPath: PropTypes.string.isRequired, formik: PropTypes.object.isRequired, active: PropTypes.bool, @@ -69,6 +82,7 @@ ProtectionButtonsComponent.propTypes = { ProtectionButtonsComponent.defaultProps = { active: true, disabled: false, + canRestrictRecord: true, }; export class ProtectionButtons extends Component { @@ -86,6 +100,11 @@ export class ProtectionButtons extends Component { } } +ProtectionButtons.defaultProps = { + canRestrictRecord: true, +}; + ProtectionButtons.propTypes = { + canRestrictRecord: PropTypes.bool, fieldPath: PropTypes.string.isRequired, }; diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/AffiliationsField/AffiliationsField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/AffiliationsField/AffiliationsField.js index 17abc0810..ea7cd8c53 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/AffiliationsField/AffiliationsField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/AffiliationsField/AffiliationsField.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2021 Graz University of Technology. // @@ -8,23 +8,16 @@ import PropTypes from "prop-types"; import React, { Component } from "react"; -import { FieldLabel, RemoteSelectField } from "react-invenio-forms"; +import { + FieldLabel, + RemoteSelectField, + AffiliationsSuggestions, +} from "react-invenio-forms"; import { Field, getIn } from "formik"; import { i18next } from "@translations/invenio_rdm_records/i18next"; /**Affiliation input component */ export class AffiliationsField extends Component { - serializeAffiliations = (affiliations) => - affiliations.map((affiliation) => ({ - text: affiliation.acronym - ? `${affiliation.name} (${affiliation.acronym})` - : affiliation.name, - value: affiliation.name, - key: affiliation.name, - ...(affiliation.id ? { id: affiliation.id } : {}), - name: affiliation.name, - })); - render() { const { fieldPath, selectRef } = this.props; return ( @@ -35,11 +28,13 @@ export class AffiliationsField extends Component { fieldPath={fieldPath} suggestionAPIUrl="/api/affiliations" suggestionAPIHeaders={{ - Accept: "application/json", + Accept: "application/vnd.inveniordm.v1+json", }} initialSuggestions={getIn(values, fieldPath, [])} - serializeSuggestions={this.serializeAffiliations} - placeholder={i18next.t("Search or create affiliation'")} + serializeSuggestions={(affiliations) => { + return AffiliationsSuggestions(affiliations, true); + }} + placeholder={i18next.t("Search or create affiliation")} label={ val.name)} + value={getIn(values, fieldPath, []).map( + (val) => val.name || val.text || val.id + )} ref={selectRef} + // Disable UI-side filtering of search results + search={(options) => options} /> ); }} diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsField.js index d807590b1..1935dbb10 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsField.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2021 Graz University of Technology. // @@ -11,6 +11,7 @@ import PropTypes from "prop-types"; import { getIn, FieldArray } from "formik"; import { Button, Form, Label, List, Icon } from "semantic-ui-react"; import _get from "lodash/get"; +import _map from "lodash/map"; import { FieldLabel } from "react-invenio-forms"; import { HTML5Backend } from "react-dnd-html5-backend"; import { DndProvider } from "react-dnd"; @@ -27,10 +28,10 @@ const creatibutorNameDisplay = (value) => { const familyName = _get(value, "person_or_org.family_name", ""); const givenName = _get(value, "person_or_org.given_name", ""); - const affiliationName = _get(value, `affiliations[0].name`, ""); + const affiliations = _map(value?.affiliations, "name"); const name = _get(value, `person_or_org.name`); - const affiliation = affiliationName ? ` (${affiliationName})` : ""; + const affiliation = affiliations.length ? ` (${affiliations.join(", ")})` : ""; if (isPerson) { const givenNameSuffix = givenName ? `, ${givenName}` : ""; @@ -106,27 +107,27 @@ class CreatibutorsFieldForm extends Component { /> ); })} - - - {addButtonLabel} - - } - /> - {creatibutorsError && typeof creatibutorsError == "string" && ( - - )} + + + {addButtonLabel} + + } + /> + {creatibutorsError && typeof creatibutorsError == "string" && ( + + )} ); diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsFieldItem.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsFieldItem.js index beda92057..861af712d 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsFieldItem.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsFieldItem.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2021 New York University. // diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsIdentifiers.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsIdentifiers.js index 8afc751cf..db129f467 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsIdentifiers.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsIdentifiers.js @@ -90,6 +90,6 @@ CreatibutorsIdentifiers.propTypes = { }; CreatibutorsIdentifiers.defaultProps = { - label: i18next.t("Name identifiers"), + label: i18next.t("Identifiers"), placeholder: i18next.t("e.g. ORCID, ISNI or GND."), }; diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsModal.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsModal.js index d836559da..0d3f896d5 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsModal.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/CreatibutorsField/CreatibutorsModal.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2021 Graz University of Technology. // Copyright (C) 2022 data-futures.org. @@ -7,27 +7,26 @@ // Invenio-RDM-Records is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. -import React, { Component, createRef } from "react"; -import PropTypes from "prop-types"; -import { Button, Form, Grid, Header, Modal } from "semantic-ui-react"; +import { i18next } from "@translations/invenio_rdm_records/i18next"; import { Formik } from "formik"; +import _find from "lodash/find"; +import _get from "lodash/get"; +import _isEmpty from "lodash/isEmpty"; +import _map from "lodash/map"; +import PropTypes from "prop-types"; +import React, { Component, createRef } from "react"; import { - Image, - SelectField, - TextField, RadioField, RemoteSelectField, + SelectField, + TextField, + AffiliationsSuggestions, } from "react-invenio-forms"; +import { Button, Form, Modal } from "semantic-ui-react"; import * as Yup from "yup"; -import _get from "lodash/get"; -import _find from "lodash/find"; -import _isEmpty from "lodash/isEmpty"; -import _map from "lodash/map"; import { AffiliationsField } from "./../AffiliationsField"; import { CreatibutorsIdentifiers } from "./CreatibutorsIdentifiers"; import { CREATIBUTOR_TYPE } from "./type"; -import { i18next } from "@translations/invenio_rdm_records/i18next"; -import { Trans } from "react-i18next"; const ModalActions = { ADD: "add", @@ -50,6 +49,13 @@ export class CreatibutorsModal extends Component { showPersonForm: props.autocompleteNames !== NamesAutocompleteOptions.SEARCH_ONLY || !_isEmpty(props.initialCreatibutor), + isOrganization: + !_isEmpty(props.initialCreatibutor) && + props.initialCreatibutor.person_or_org.type === CREATIBUTOR_TYPE.ORGANIZATION, + personIdentifiers: [], + personAffiliations: [], + organizationIdentifiers: [], + organizationAffiliations: [], }; this.inputRef = createRef(); this.identifiersRef = createRef(); @@ -57,6 +63,20 @@ export class CreatibutorsModal extends Component { this.namesAutocompleteRef = createRef(); } + initStatesFromInitialCreatibutor(initialCreatibutor) { + const { affiliations = [] } = initialCreatibutor; + const { isOrganization } = this.state; + const identifiers = initialCreatibutor.person_or_org.identifiers?.map( + (identifier) => identifier.identifier + ); + this.setState({ + personIdentifiers: isOrganization ? [] : identifiers, + personAffiliations: isOrganization ? [] : affiliations, + organizationIdentifiers: isOrganization ? identifiers : [], + organizationAffiliations: isOrganization ? affiliations : [], + }); + } + CreatorSchema = Yup.object({ person_or_org: Yup.object({ type: Yup.string(), @@ -78,14 +98,35 @@ export class CreatibutorsModal extends Component { }), }); - focusInput = () => this.inputRef.current.focus(); - openModal = () => { - this.setState({ open: true, action: null }, () => {}); + this.setState({ open: true, action: null }, () => { + const { initialCreatibutor } = this.props; + if (!_isEmpty(initialCreatibutor)) { + const { isOrganization } = this.state; + + if (isOrganization) { + // Set family and given name to empty for organizations + initialCreatibutor.person_or_org.family_name = ""; + initialCreatibutor.person_or_org.given_name = ""; + } else { + // Set name to empty for persons + initialCreatibutor.person_or_org.name = ""; + } + + this.initStatesFromInitialCreatibutor(initialCreatibutor); + } + }); }; closeModal = () => { - this.setState({ open: false, action: null }); + this.setState({ + personAffiliations: [], + personIdentifiers: [], + organizationAffiliations: [], + organizationIdentifiers: [], + open: false, + action: null, + }); }; changeContent = () => { @@ -193,100 +234,76 @@ export class CreatibutorsModal extends Component { } }; - makeIdEntry = (identifier) => { - let icon = null; - let link = null; - - if (identifier.scheme === "orcid") { - icon = "/static/images/orcid.svg"; - link = "https://orcid.org/" + identifier.identifier; - } else if (identifier.scheme === "gnd") { - icon = "/static/images/gnd-icon.svg"; - link = "https://d-nb.info/gnd/" + identifier.identifier; - } else if (identifier.scheme === "ror") { - icon = "/static/images/ror-icon.svg"; - link = "https://ror.org/" + identifier.identifier; - } else { - return ( - <> - {identifier.scehme}: {identifier.identifier} - - ); - } + serializeAffiliations = (creatibutors) => { + const { isOrganization } = this.state; - return ( - - - - {identifier.identifier} - - ; - - ); + return AffiliationsSuggestions(creatibutors, isOrganization); }; - serializeSuggestions = (creatibutors) => { - let results = creatibutors.map((creatibutor) => { - let affNames = ""; - creatibutor.affiliations.forEach((affiliation, idx) => { - affNames += affiliation.name; - if (idx < creatibutor.affiliations.length - 1) { - affNames += ", "; - } - }); + updateIdentifiersAndAffiliations( + formikProps, + identifiers, + affiliations, + identifiersRef, + affiliationsRef + ) { + const personOrOrgPath = `person_or_org`; + const identifiersFieldPath = `${personOrOrgPath}.identifiers`; + const affiliationsFieldPath = "affiliations"; - let idString = []; - creatibutor.identifiers.forEach((i) => { - idString.push(this.makeIdEntry(i)); - }); + let chosen = { + [identifiersFieldPath]: identifiers, + [affiliationsFieldPath]: affiliations, + }; - return { - text: creatibutor.name, - value: creatibutor.id, - extra: creatibutor, - key: creatibutor.id, - content: ( -
- - {creatibutor.name} {idString.length ? <>({idString}) : null} - - {affNames} -
- ), - }; + Object.entries(chosen).forEach(([path, value]) => { + formikProps.form.setFieldValue(path, value); }); - const { showPersonForm } = this.state; - const { autocompleteNames } = this.props; - - const showManualEntry = - autocompleteNames === NamesAutocompleteOptions.SEARCH_ONLY && !showPersonForm; - - if (showManualEntry) { - results.push({ - text: "Manual entry", - value: "Manual entry", - extra: "Manual entry", - key: "manual-entry", - content: ( -
- -

- - {/* eslint-disable-next-line jsx-a11y/anchor-is-valid*/} - Couldn't find your person? You can create a new entry. - -

-
-
- ), - }); - } - return results; + // Update identifiers render + identifiersRef.current.setState({ + selectedOptions: identifiersRef.current.valuesToOptions(identifiers), + }); + + // Update affiliations render + const affiliationsState = affiliations.map(({ name }) => ({ + text: name, + value: name, + key: name, + name, + })); + affiliationsRef.current.setState({ + suggestions: affiliationsState, + selectedSuggestions: affiliationsState, + searchQuery: null, + error: false, + open: false, + }); + } + + onOrganizationSearchChange = ({ formikProps }, selectedSuggestions) => { + const selectedSuggestion = selectedSuggestions[0].extra; + this.setState( + { + organizationIdentifiers: selectedSuggestion.identifiers + .filter((identifier) => identifier.scheme !== "grid") // Filtering out org scheme (RDM_RECORDS_PERSONORG_SCHEMES) for unsupported one i.e. "grid" + .map((identifier) => identifier.identifier), + organizationAffiliations: [], + }, + () => { + const { organizationIdentifiers, organizationAffiliations } = this.state; + + formikProps.form.setFieldValue("person_or_org.name", selectedSuggestion.name); + + this.updateIdentifiersAndAffiliations( + formikProps, + organizationIdentifiers, + organizationAffiliations, + this.identifiersRef, + this.affiliationsRef + ); + } + ); }; onPersonSearchChange = ({ formikProps }, selectedSuggestions) => { @@ -302,55 +319,38 @@ export class CreatibutorsModal extends Component { return; } + const selectedSuggestion = selectedSuggestions[0].extra; this.setState( { showPersonForm: true, + personIdentifiers: selectedSuggestion.identifiers.map( + (identifier) => identifier.identifier + ), + personAffiliations: selectedSuggestion.affiliations.map( + (affiliation) => affiliation + ), }, () => { - const identifiers = selectedSuggestions[0].extra.identifiers.map( - (identifier) => { - return identifier.identifier; - } - ); - const affiliations = selectedSuggestions[0].extra.affiliations.map( - (affiliation) => { - return affiliation; - } - ); - + const { personIdentifiers, personAffiliations } = this.state; const personOrOrgPath = `person_or_org`; const familyNameFieldPath = `${personOrOrgPath}.family_name`; const givenNameFieldPath = `${personOrOrgPath}.given_name`; - const identifiersFieldPath = `${personOrOrgPath}.identifiers`; - const affiliationsFieldPath = "affiliations"; let chosen = { - [givenNameFieldPath]: selectedSuggestions[0].extra.given_name, - [familyNameFieldPath]: selectedSuggestions[0].extra.family_name, - [identifiersFieldPath]: identifiers, - [affiliationsFieldPath]: affiliations, + [givenNameFieldPath]: selectedSuggestion.given_name, + [familyNameFieldPath]: selectedSuggestion.family_name, }; Object.entries(chosen).forEach(([path, value]) => { formikProps.form.setFieldValue(path, value); }); - // Update identifiers render - this.identifiersRef.current.setState({ - selectedOptions: this.identifiersRef.current.valuesToOptions(identifiers), - }); - // Update affiliations render - const affiliationsState = affiliations.map(({ name }) => ({ - text: name, - value: name, - key: name, - name, - })); - this.affiliationsRef.current.setState({ - suggestions: affiliationsState, - selectedSuggestions: affiliationsState, - searchQuery: null, - error: false, - open: false, - }); + + this.updateIdentifiersAndAffiliations( + formikProps, + personIdentifiers, + personAffiliations, + this.identifiersRef, + this.affiliationsRef + ); } ); }; @@ -358,9 +358,17 @@ export class CreatibutorsModal extends Component { render() { const { initialCreatibutor, autocompleteNames, roleOptions, trigger, action } = this.props; - const { open, showPersonForm, saveAndContinueLabel } = this.state; - - const ActionLabel = () => this.displayActionLabel(); + const { + open, + showPersonForm, + personIdentifiers, + personAffiliations, + organizationIdentifiers, + organizationAffiliations, + saveAndContinueLabel, + } = this.state; + + const ActionLabel = this.displayActionLabel(); return ( - - - -
- -
-
-
+ + {ActionLabel}
@@ -410,11 +412,24 @@ export class CreatibutorsModal extends Component { checked={_get(values, typeFieldPath) === CREATIBUTOR_TYPE.PERSON} value={CREATIBUTOR_TYPE.PERSON} onChange={({ formikProps }) => { + this.setState({ + isOrganization: false, + }); formikProps.form.setFieldValue( typeFieldPath, CREATIBUTOR_TYPE.PERSON ); + formikProps.form.setFieldValue( + identifiersFieldPath, + personIdentifiers + ); + formikProps.form.setFieldValue( + affiliationsFieldPath, + personAffiliations + ); }} + // eslint-disable-next-line + autoFocus optimized /> { + this.setState({ + isOrganization: true, + }); formikProps.form.setFieldValue( typeFieldPath, CREATIBUTOR_TYPE.ORGANIZATION ); - this.focusInput(); + formikProps.form.setFieldValue( + affiliationsFieldPath, + organizationAffiliations + ); + formikProps.form.setFieldValue( + identifiersFieldPath, + organizationIdentifiers + ); }} optimized /> {_get(values, typeFieldPath, "") === CREATIBUTOR_TYPE.PERSON ? ( -
+ <> {autocompleteNames !== NamesAutocompleteOptions.OFF && ( options} suggestionAPIUrl="/api/names" - serializeSuggestions={this.serializeSuggestions} + serializeSuggestions={this.serializeAffiliations} onValueChange={this.onPersonSearchChange} ref={this.namesAutocompleteRef} /> )} {showPersonForm && ( -
+ <> - - ({ - text: identifier, - value: identifier, - key: identifier, - }) - )} - fieldPath={identifiersFieldPath} - ref={this.identifiersRef} - /> - -
+ ({ + text: identifier, + value: identifier, + key: identifier, + }) + )} + fieldPath={identifiersFieldPath} + ref={this.identifiersRef} + /> + + )} -
+ ) : ( <> + {autocompleteNames !== NamesAutocompleteOptions.OFF && ( + options} + suggestionAPIUrl="/api/affiliations" + serializeSuggestions={this.serializeAffiliations} + onValueChange={this.onOrganizationSearchChange} + /> + )} + )} {(_get(values, typeFieldPath) === CREATIBUTOR_TYPE.ORGANIZATION || (showPersonForm && _get(values, typeFieldPath) === CREATIBUTOR_TYPE.PERSON)) && ( -
- - -
+ )}
@@ -609,6 +660,7 @@ CreatibutorsModal.propTypes = { family_name: PropTypes.string, given_name: PropTypes.string, name: PropTypes.string, + type: PropTypes.string, identifiers: PropTypes.arrayOf( PropTypes.shape({ scheme: PropTypes.string, diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DatesField/DatesField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DatesField/DatesField.js index 35ea75131..add26ed3c 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DatesField/DatesField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DatesField/DatesField.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2021 Graz University of Technology. // @@ -18,6 +18,7 @@ import _has from "lodash/has"; import { emptyDate } from "./initialValues"; import { i18next } from "@translations/invenio_rdm_records/i18next"; import { sortOptions } from "../../utils"; +import Overridable from "react-overridable"; export class DatesField extends Component { /** Top-level Dates Component */ @@ -53,66 +54,89 @@ export class DatesField extends Component { } = this.props; return ( - - {({ array, arrayHelpers, indexPath, value }) => { - const fieldPathPrefix = `${fieldPath}.${indexPath}`; - const requiredOption = this.getRequiredOption(value, array); - const hasRequiredDateValue = _has(requiredOption, "date"); - const hasRequiredTypeValue = _has(requiredOption, "type"); - const hasRequiredDescriptionValue = _has(requiredOption, "description"); - return ( - - - - - - - - - ); - }} - + + + + + + + + + + + + + + + ); + }} + + ); } } diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DescriptionsField/DescriptionsField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DescriptionsField/DescriptionsField.js index f7cb686d1..b4fc4e222 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DescriptionsField/DescriptionsField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DescriptionsField/DescriptionsField.js @@ -8,7 +8,6 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; - import { FieldLabel, RichInputField } from "react-invenio-forms"; import { AdditionalDescriptionsField } from "./components"; import { i18next } from "@translations/invenio_rdm_records/i18next"; @@ -19,7 +18,7 @@ export class DescriptionsField extends Component { return ( <> } diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DescriptionsField/components/AdditionalDescriptionsField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DescriptionsField/components/AdditionalDescriptionsField.js index 183ef4f0b..df211d609 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DescriptionsField/components/AdditionalDescriptionsField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/DescriptionsField/components/AdditionalDescriptionsField.js @@ -10,7 +10,6 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; import { Button, Form, Grid, Icon } from "semantic-ui-react"; - import { ArrayField, SelectField, RichInputField } from "react-invenio-forms"; import { emptyAdditionalDescription } from "./initialValues"; import { LanguagesField } from "../../LanguagesField"; diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploader.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploader.js index 1fd582bab..eb787e306 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploader.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploader.js @@ -3,6 +3,7 @@ // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2022 Graz University of Technology. // Copyright (C) 2022 TU Wien. +// Copyright (C) 2024 KTH Royal Institute of Technology. // // Invenio-RDM-Records is free software; you can redistribute it and/or modify it // under the terms of the MIT License; see LICENSE file for more details. @@ -40,6 +41,7 @@ export const FileUploaderComponent = ({ isFileImportInProgress, decimalSizeDisplay, filesLocked, + allowEmptyFiles, ...uiProps }) => { // We extract the working copy of the draft stored as `values` in formik @@ -80,20 +82,38 @@ export const FileUploaderComponent = ({ const maxFileStorageReached = filesSize + acceptedFilesSize > quota.maxStorage; const filesNames = _map(filesList, "name"); - const duplicateFiles = acceptedFiles.filter((acceptedFile) => - filesNames.includes(acceptedFile.name) + const filesNamesSet = new Set(filesNames); + + const { duplicateFiles, emptyFiles, nonEmptyFiles } = acceptedFiles.reduce( + (accumulators, file) => { + if (filesNamesSet.has(file.name)) { + accumulators.duplicateFiles.push(file); + } else if (file.size === 0) { + accumulators.emptyFiles.push(file); + } else { + accumulators.nonEmptyFiles.push(file); + } + + return accumulators; + }, + { duplicateFiles: [], emptyFiles: [], nonEmptyFiles: [] } ); + const hasEmptyFiles = !_isEmpty(emptyFiles); + const hasDuplicateFiles = !_isEmpty(duplicateFiles); + if (maxFileNumberReached) { setWarningMsg(
); @@ -103,7 +123,7 @@ export const FileUploaderComponent = ({ {i18next.t("Uploading the selected files would result in")}{" "} @@ -118,19 +138,44 @@ export const FileUploaderComponent = ({ /> ); - } else if (!_isEmpty(duplicateFiles)) { - setWarningMsg( -
+ } else { + let warnings = []; + + if (hasDuplicateFiles) { + warnings.push( -
- ); - } else { - uploadFiles(formikDraft, acceptedFiles); + ); + } + + if (!allowEmptyFiles && hasEmptyFiles) { + warnings.push( + + ); + } + + if (!_isEmpty(warnings)) { + setWarningMsg(
{warnings}
); + } + + const filesToUpload = allowEmptyFiles + ? [...nonEmptyFiles, ...emptyFiles] + : nonEmptyFiles; + + // Proceed with uploading files if there are any to upload + if (!_isEmpty(filesToUpload)) { + uploadFiles(formikDraft, filesToUpload); + } } }, multiple: true, @@ -348,6 +393,7 @@ FileUploaderComponent.propTypes = { decimalSizeDisplay: PropTypes.bool, filesLocked: PropTypes.bool, permissions: PropTypes.object, + allowEmptyFiles: PropTypes.bool, }; FileUploaderComponent.defaultProps = { @@ -369,4 +415,5 @@ FileUploaderComponent.defaultProps = { importButtonText: i18next.t("Import files"), decimalSizeDisplay: true, filesLocked: false, + allowEmptyFiles: true, }; diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploaderArea.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploaderArea.js index 2232fe31d..12565b9b9 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploaderArea.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/FileUploader/FileUploaderArea.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2021-2022 Graz University of Technology. // Copyright (C) 2022 TU Wien. @@ -74,6 +74,7 @@ const FileTableRow = ({ setDefaultPreview(""); } } catch (error) { + setIsDeleting(false); console.error(error); } }; @@ -96,13 +97,13 @@ const FileTableRow = ({
{file.uploadState.isPending ? ( - file.name +
{file.name}
) : ( {file.name} @@ -147,7 +148,9 @@ const FileTableRow = ({ )} {!filesLocked && ( - {(file.uploadState?.isFinished || file.uploadState?.isFailed) && + {(file.uploadState?.isFinished || + file.uploadState?.isFailed || + file.uploadState?.isPending) && (isDeleting ? ( ) : ( diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/Identifiers/IdentifiersField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/Identifiers/IdentifiersField.js index a6bb309ec..ccbe9ad5c 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/Identifiers/IdentifiersField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/Identifiers/IdentifiersField.js @@ -46,6 +46,7 @@ export class IdentifiersField extends Component { diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/Identifiers/PIDField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/Identifiers/PIDField.js index b837250bd..bd5b00cae 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/Identifiers/PIDField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/Identifiers/PIDField.js @@ -126,6 +126,7 @@ class ManagedUnmanagedSwitch extends Component { @@ -419,7 +425,10 @@ class CustomPIDField extends Component { {this.canBeManagedAndUnmanaged && ( { if (userSelectedManaged) { @@ -437,7 +446,7 @@ class CustomPIDField extends Component { {canBeManaged && _isManagedSelected && ( ); })} - - - {i18next.t("Add standard")} - - } - onLicenseChange={(selectedLicense) => { - formikArrayPush(selectedLicense); - }} - mode="standard" - action="add" - serializeLicenses={serializeLicenses} - /> - - - {i18next.t("Add custom")} - - } - onLicenseChange={(selectedLicense) => { - formikArrayPush(selectedLicense); - }} - mode="custom" - action="add" - /> + + + {i18next.t("Add standard")} + + } + onLicenseChange={(selectedLicense) => { + formikArrayPush(selectedLicense); + }} + mode="standard" + action="add" + serializeLicenses={serializeLicenses} + /> + + + {i18next.t("Add custom")} + + } + onLicenseChange={(selectedLicense) => { + formikArrayPush(selectedLicense); + }} + mode="custom" + action="add" + /> ); diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/License/LicenseModal.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/License/LicenseModal.js index 072b13e62..24d440e7e 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/License/LicenseModal.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/License/LicenseModal.js @@ -18,13 +18,13 @@ import { InvenioSearchApi, ReactSearchKit, ResultsLoader, - SearchBar, Toggle, } from "react-searchkit"; -import { Button, Form, Grid, Header, Menu, Modal } from "semantic-ui-react"; +import { Button, Form, Grid, Menu, Modal } from "semantic-ui-react"; import * as Yup from "yup"; import { LicenseFilter } from "./LicenseFilter"; import { LicenseResults } from "./LicenseResults"; +import { LicenseSearchBar } from "./LicenseSearchBar"; const overriddenComponents = { "SearchFilters.Toggle": LicenseFilter, @@ -111,20 +111,14 @@ export class LicenseModal extends Component { closeIcon closeOnDimmerClick={false} > - - - -
- {action === ModalActions.ADD - ? i18next.t(`Add {{mode}} license`, { - mode: mode, - }) - : i18next.t(`Change {{mode}} license`, { - mode: mode, - })} -
-
-
+ + {action === ModalActions.ADD + ? i18next.t(`Add {{mode}} license`, { + mode: mode, + }) + : i18next.t(`Change {{mode}} license`, { + mode: mode, + })} {mode === ModalTypes.STANDARD && ( @@ -138,7 +132,7 @@ export class LicenseModal extends Component { - { + const [currentValue, setCurrentValue] = useState(""); + + const onInputChange = (queryString) => { + setCurrentValue(queryString); + }; + + const executeSearch = () => { + currentQueryState["filters"][0] = ["tags", "all"]; + currentQueryState["queryString"] = currentValue; + updateQueryState(currentQueryState); + }; + + const onKeyPress = (event) => { + if (event.key === "Enter") { + executeSearch(); + } + }; + + return ( + + ); +}; + +LicenseSearchBarComponent.propTypes = { + actionProps: PropTypes.object, + autofocus: PropTypes.bool, + currentQueryState: PropTypes.object, + updateQueryState: PropTypes.func, + placeholder: PropTypes.string, +}; + +LicenseSearchBarComponent.defaultProps = { + actionProps: null, + autofocus: false, + placeholder: "", + currentQueryState: null, + updateQueryState: null, +}; + +class Element extends Component { + componentDidMount() { + const { autofocus } = this.props; + if (autofocus && this.focusInput) { + this.focusInput.focus(); + } + } + + render() { + const { + actionProps, + onBtnSearchClick, + onInputChange, + onKeyPress, + placeholder, + queryString, + } = this.props; + + return ( + { + onInputChange(value); + }} + value={queryString} + onKeyPress={onKeyPress} + ref={(input) => { + this.focusInput = input; + }} + /> + ); + } +} + +Element.propTypes = { + actionProps: PropTypes.object, + autofocus: PropTypes.bool, + onBtnSearchClick: PropTypes.func, + onInputChange: PropTypes.func, + onKeyPress: PropTypes.func, + placeholder: PropTypes.string, + queryString: PropTypes.string, +}; + +Element.defaultProps = { + actionProps: null, + autofocus: false, + onBtnSearchClick: null, + onInputChange: null, + onKeyPress: null, + placeholder: "", + queryString: "", +}; + +export const LicenseSearchBar = withState(LicenseSearchBarComponent); diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/RelatedWorksField/RelatedWorksField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/RelatedWorksField/RelatedWorksField.js index 7949a594a..aa3292cb8 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/RelatedWorksField/RelatedWorksField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/RelatedWorksField/RelatedWorksField.js @@ -51,9 +51,13 @@ export class RelatedWorksField extends Component { clearable fieldPath={`${fieldPathPrefix}.relation_type`} label={i18next.t("Relation")} + aria-label={i18next.t("Relation")} optimized options={options.relations} - placeholder={i18next.t("Select relation...")} + placeholder={{ + role: "option", + content: "Select relation...", + }} required width={3} /> @@ -69,6 +73,7 @@ export class RelatedWorksField extends Component { clearable fieldPath={`${fieldPathPrefix}.scheme`} label={i18next.t("Scheme")} + aria-label={i18next.t("Scheme")} optimized options={options.scheme} required diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/ResourceTypeField/ResourceTypeField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/ResourceTypeField/ResourceTypeField.js index 37b42642a..7eaef86ac 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/ResourceTypeField/ResourceTypeField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/ResourceTypeField/ResourceTypeField.js @@ -58,6 +58,7 @@ export class ResourceTypeField extends Component { fieldPath={fieldPath} label={} optimized + aria-label={label} options={frontEndOptions} selectOnBlur={false} {...restProps} diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/SubjectsField/SubjectsField.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/SubjectsField/SubjectsField.js index 1dd45393d..0becca64a 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/SubjectsField/SubjectsField.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/fields/SubjectsField/SubjectsField.js @@ -1,5 +1,5 @@ // This file is part of Invenio-RDM-Records -// Copyright (C) 2020-2023 CERN. +// Copyright (C) 2020-2024 CERN. // Copyright (C) 2020-2022 Northwestern University. // Copyright (C) 2021 Graz University of Technology. // @@ -8,9 +8,12 @@ import React, { Component } from "react"; import PropTypes from "prop-types"; -import { FieldLabel, GroupField, RemoteSelectField } from "react-invenio-forms"; +import { + FieldLabel, + GroupField, + SubjectAutocompleteDropdown, +} from "react-invenio-forms"; import { Form } from "semantic-ui-react"; -import { Field, getIn } from "formik"; import { i18next } from "@translations/invenio_rdm_records/i18next"; export class SubjectsField extends Component { @@ -18,100 +21,49 @@ export class SubjectsField extends Component { limitTo: "all", }; - serializeSubjects = (subjects) => - subjects.map((subject) => { - const scheme = subject.scheme ? `(${subject.scheme}) ` : ""; - return { - text: scheme + subject.subject, - value: subject.subject, - key: subject.subject, - ...(subject.id ? { id: subject.id } : {}), - subject: subject.subject, - }; - }); - - prepareSuggest = (searchQuery) => { - const { limitTo } = this.state; - - const prefix = limitTo === "all" ? "" : `${limitTo}:`; - return `${prefix}${searchQuery}`; - }; - render() { - const { - fieldPath, - label, - labelIcon, - required, - multiple, - placeholder, - clearable, - limitToOptions, - } = this.props; + const { fieldPath, label, labelIcon, limitToOptions, ...dropdownProps } = + this.props; + const { limitTo } = this.state; + const displaySuggestFromField = limitToOptions.length > 2; // 2 because of "all", that is always present return ( - - - - - {i18next.t("Suggest from")} - - this.setState({ limitTo: data.value })} - options={limitToOptions} - selection - width={8} - /> - - - - {({ form: { values } }) => { - return ( - ({ - text: value, - value: value, - key: value, - subject: value, - })} - suggestionAPIUrl="/api/subjects" - onValueChange={({ formikProps }, selectedSuggestions) => { - formikProps.form.setFieldValue( - fieldPath, - // save the suggestion objects so we can extract information - // about which value added by the user - selectedSuggestions - ); - }} - value={getIn(values, fieldPath, []).map((val) => val.subject)} - label={ - <> - {/* eslint-disable-next-line jsx-a11y/label-has-associated-control */} - - - } /** For alignment purposes */ - allowAdditions - width={11} + {displaySuggestFromField && ( + + + + + {i18next.t("Suggest from")} + + this.setState({ limitTo: data.value })} + options={limitToOptions} + selection + width={8} /> - ); - }} - + + + )} + + + ) // Add label to second field if suggest from is hidden + } + limitTo={limitTo} + width={displaySuggestFromField ? 11 : 16} + /> ); } @@ -122,17 +74,11 @@ SubjectsField.propTypes = { fieldPath: PropTypes.string.isRequired, label: PropTypes.string, labelIcon: PropTypes.string, - required: PropTypes.bool, - multiple: PropTypes.bool, - clearable: PropTypes.bool, placeholder: PropTypes.string, }; SubjectsField.defaultProps = { - required: false, label: i18next.t("Keywords and subjects"), labelIcon: "tag", - multiple: true, - clearable: true, placeholder: i18next.t("Search for a subject by name"), }; diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/actions/deposit.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/actions/deposit.js index e763e0343..0e83f475a 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/actions/deposit.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/actions/deposit.js @@ -6,6 +6,7 @@ // under the terms of the MIT License; see LICENSE file for more details. import _isEmpty from "lodash/isEmpty"; +import _ from "lodash"; import { DISCARD_PID_FAILED, DISCARD_PID_STARTED, @@ -38,6 +39,21 @@ async function changeURLAfterCreation(draftURL) { export const saveDraftWithUrlUpdate = async (draft, draftsService) => { const hasAlreadyId = !!draft.id; const response = await draftsService.save(draft); + + const draftHasValidationErrors = !_isEmpty(response.errors); + + // In case of invalid values, on the second draft save, the form doesn't report the errors. This happens + // because the backend doesn't save invalid metadata. Here we are merging draft state with backend + // response in order not to lose those invalid values from the form state and have the errors reported. + if (draftHasValidationErrors) { + const mergingValues = { + metadata: draft.metadata, + custom_fields: draft.custom_fields, + }; + + response.data = _.merge(response.data, mergingValues); + } + if (!hasAlreadyId) { // draft was created, change URL to add the draft PID const draftURL = response.data.links.self_html; @@ -241,9 +257,8 @@ export const delete_ = () => { try { const draft = getState().deposit.record; await config.service.drafts.delete(draft.links); - // redirect to the the uploads page after deleting/discarding a draft - const redirectURL = "/me/uploads"; + const redirectURL = config.config.dashboard_routes.uploads; window.location.replace(redirectURL); } catch (error) { dispatch({ diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/actions/files.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/actions/files.js index 00c5eb900..982867b16 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/actions/files.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/actions/files.js @@ -55,8 +55,18 @@ export const deleteFile = (file) => { }, }); } catch (error) { - dispatch({ type: FILE_DELETE_FAILED }); - throw error; + if (error.response.status === 404 && file.uploadState?.isPending) { + // pending file was removed from the backend thus we can remove it from the state + dispatch({ + type: FILE_DELETED_SUCCESS, + payload: { + filename: file.name, + }, + }); + } else { + dispatch({ type: FILE_DELETE_FAILED }); + throw error; + } } }; }; diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/reducers/deposit.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/reducers/deposit.js index dff21b6d7..d910ece74 100644 --- a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/reducers/deposit.js +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/deposit/state/reducers/deposit.js @@ -253,8 +253,6 @@ const depositReducer = (state = {}, action) => { actionState: action.type, actionStateExtra: { pidType: action.payload.pidType }, }; - case DRAFT_FETCHED: - case DRAFT_SAVE_SUCCEEDED: case RESERVE_PID_SUCCEEDED: case DISCARD_PID_SUCCEEDED: return { @@ -271,6 +269,22 @@ const depositReducer = (state = {}, action) => { actionState: action.type, actionStateExtra: {}, }; + case DRAFT_FETCHED: + case DRAFT_SAVE_SUCCEEDED: + return { + ...state, + record: { + // populate record only with fresh backend response + ...action.payload.data, + }, + editorState: computeDepositState( + action.payload.data, + state.editorState.selectedCommunity + ), + errors: {}, + actionState: action.type, + actionStateExtra: {}, + }; case DRAFT_HAS_VALIDATION_ERRORS: case DRAFT_PUBLISH_FAILED_WITH_VALIDATION_ERRORS: case DRAFT_SUBMIT_REVIEW_FAILED_WITH_VALIDATION_ERRORS: diff --git a/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/setupTests.js b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/setupTests.js new file mode 100644 index 000000000..985de28f7 --- /dev/null +++ b/invenio_rdm_records/assets/semantic-ui/js/invenio_rdm_records/src/setupTests.js @@ -0,0 +1,20 @@ +// This file is part of Invenio-RDM-Records +// Copyright (C) 2020 CERN. +// Copyright (C) 2020 Northwestern University. +// +// Invenio-RDM-Records is free software; you can redistribute it and/or modify it +// under the terms of the MIT License; see LICENSE file for more details. + +Object.defineProperty(window, "matchMedia", { + writable: true, + value: jest.fn().mockImplementation((query) => ({ + matches: false, + media: query, + onchange: null, + addListener: jest.fn(), // deprecated + removeListener: jest.fn(), // deprecated + addEventListener: jest.fn(), + removeEventListener: jest.fn(), + dispatchEvent: jest.fn(), + })), +}); diff --git a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/de/translations.json b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/de/translations.json index 7cfca2ab3..d7cfdecdf 100644 --- a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/de/translations.json +++ b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/de/translations.json @@ -13,5 +13,220 @@ "Cancel": "", "Delete": "", "Delete {{title}}": "Delete {{title}}", - "This will delete the set '{{title}}'.": "This will delete the set '{{title}}'." + "This will delete the set '{{title}}'.": "This will delete the set '{{title}}'.", + "Fetch error": "", + "Error fetching OAI set formats.": "", + "Select the community where you want to submit your record.": "", + "Change": "", + "Select a community": "", + "Remove": "", + "Community inclusion information": "", + "Submission to this community is only allowed if the record is restricted.": "", + "Community submission conditions information": "", + "Submission to this community is only allowed by dedicated upload form. Use the button to jump to the form.": "", + "Selected": "", + "Select": "", + "Select {{title}}": "", + "Did not find a community that fits you? Upload without a community or <2>create your own.": "Did not find a community that fits you? Upload without a community or <2>create your own.", + "Close": "", + "All": "", + "My communities": "", + "Search": "", + "In review": "", + "Community curators will review your upload. Once accepted, it will be published.": "", + "Declined": "", + "The request to submit this upload to the community was declined.": "", + "Expired": "", + "The request to submit this upload to the community has expired.": "", + "Published": "", + "Your upload is published.": "", + "Draft": "", + "Once your upload is complete, you can submit it for review to the community curators.": "", + "Once your upload is complete, you can publish or submit it for review to the community curators.": "", + "New version draft": "", + "Once your upload is complete, you can publish it.": "", + "View request": "", + "discard changes": "", + "discard version": "", + "delete": "", + "Are you sure you want to discard the changes to this draft?": "", + "Are you sure you want to delete this new version?": "", + "Are you sure you want to delete this draft?": "", + "You don't have permissions to create a new version.": "", + "New version": "", + "Preview": "", + "Are you sure you want to publish this record?": "", + "Once the record is published you will no longer be able to change the files in the upload! However, you will still be able to update the record's metadata later.": "", + "Publish": "", + "Submitted for review": "", + "Submit for review": "", + "Publish to community": "", + "You must accept this.": "", + "Before publishing to the community, please read and check the following:": "", + "Your upload will be immediately published in '{{communityTitle}}'. You will no longer be able to change the files in the upload! However, you will still be able to update the record's metadata later.": "", + "Publish record to community": "", + "Submit to community": "", + "Before submitting to community, please read and check the following:": "", + "Before requesting review, please read and check the following:": "", + "If your upload is accepted by the community curators, it will be immediately published. Before that, you will still be able to modify metadata and files of this upload.": "", + "Submit record for review": "", + "The '{{communityTitle}}' curators will have access to view and edit your upload's metadata and files.": "", + "Message to curators (optional)": "", + "Change community": "", + "Publish without community": "", + "Save draft": "", + "Files": "", + "Resource type": "", + "Title": "", + "Additional titles": "", + "Publication date": "", + "Creators": "", + "Contributors": "", + "Description": "", + "Additional descriptions": "", + "Licenses": "", + "Languages": "", + "Dates": "", + "Version": "", + "Publisher": "", + "Related works": "", + "References": "", + "Alternate identifiers": "", + "Keywords and subjects": "", + "Embargo until": "", + "DOI": "", + "Record successfully saved.": "", + "Record saved with validation errors:": "", + "The draft was not saved. Please try again. If the problem persists, contact user support.": "", + "The draft was not published. Please try again. If the problem persists, contact user support.": "", + "The draft was not published. Record saved with validation errors:": "", + "The draft was not submitted for review. Please try again. If the problem persists, contact user support.": "", + "The draft was not submitted for review. Record saved with validation errors:": "", + "Draft deletion failed. Please try again. If the problem persists, contact user support.": "", + "Draft preview failed. Please try again. If the problem persists, contact user support.": "", + "Identifier reservation failed. Please try again. If the problem persists, contact user support.": "", + "Identifier could not be discarded. Please try again. If the problem persists, contact user support.": "", + "Draft save failed before file upload. Please try again. If the problem persists, contact user support.": "", + "Files import from the previous version failed. Please try again. If the problem persists, contact user support.": "", + "Options": "", + "Public": "", + "The record is publicly accessible.": "", + "The record and files are publicly accessible.": "", + "Embargoed (full record)": "", + "Restricted": "", + "Public with restricted files": "", + "Embargoed (files-only)": "", + "access-message": "On <1> the record will automatically be made publicly accessible. Until then, the record can <3>only be accessed by <6>users specified in the permissions.\"", + "The record can <1>only be accessed by <3>users specified in the permissions.": "The record can <1>only be accessed by <3>users specified in the permissions.", + "The record is publicly accessible. The files can <1>only be accessed by <4>users specified in the permissions.": "The record is publicly accessible. The files can <1>only be accessed by <4>users specified in the permissions.", + "The record is publicly accessible. On {{ date }} the files will automatically be made publicly accessible. Until then, the files can only be accessed by users specified in the permissions.": "The record is publicly accessible. On {{ date }} the files will automatically be made publicly accessible. Until then, the files can only be accessed by users specified in the permissions.", + "Apply an embargo": "", + "Embargo reason": "", + "Optionally, describe the reason for the embargo.": "", + "Embargo was lifted on {{fmtDate}}.": "", + "Reason": "", + "Record or files protection must be <1>restricted to apply an embargo.": "Record or files protection must be <1>restricted to apply an embargo.", + "YYYY-MM-DD": "", + "The record has no files.": "", + "Files only": "", + "The full record is restricted.": "", + "The files of this record are restricted.": "", + "Full record": "", + "Record visibility can not be changed to restricted anymore. Please contact support if you still need to make these changes.": "", + "Search or create affiliation": "", + "Affiliations": "", + "Search for affiliations..": "", + "Add creator": "", + "Edit creator": "", + "Edit": "", + "Type the value of an identifier...": "", + "Identifiers": "", + "e.g. ORCID, ISNI or GND.": "", + "Save and add another": "", + "Family name is a required field.": "", + "Name is a required field.": "", + "Role is a required field.": "", + "Added": "", + "Person": "", + "Organization": "", + "Search for persons by name, identifier, or affiliation...": "", + "Family name": "", + "Given names": "", + "Search for an organization by name, identifier, or affiliation...": "", + "Search for organization by name, identifier, or affiliation...": "", + "Name": "", + "Organization name": "", + "e.g. ROR, ISNI or GND.": "", + "Role": "", + "Select role": "", + "Save": "", + "Couldn't find your person? You can <2>create a new entry.": "Couldn't find your person? You can <2>create a new entry.", + "Add date": "", + "Format: DATE or DATE/DATE where DATE is YYYY or YYYY-MM or YYYY-MM-DD.": "", + "Date": "", + "Type": "", + "Remove field": "", + "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD": "", + "Add description": "", + "Additional Description": "", + "Language": "", + "Select language": "", + "Uploading the selected files would result in": "", + "but the limit is": "", + "The following files already exist": "", + "You can import files from the previous version.": "", + "File addition, removal or modification are not allowed after you have published your upload.": "", + "You must create a new version to add, modify or delete files.": "", + "Drag and drop files": "", + "Upload files": "", + "Import files": "", + "Filename": "", + "Size": "", + "Progress": "", + "Default preview": "", + "This is the file fingerprint (MD5 checksum), which can be used to verify the file integrity.": "", + "Pending": "", + "Delete file": "", + "or": "", + "This is a Metadata-only record.": "", + "Metadata-only record": "", + "Disable files for this record": "", + "Storage available": "", + "{{length}} out of {{maxfiles}} files": "", + "out of": "", + "Add identifier": "", + "Identifier": "", + "Scheme": "", + "Do you already have a {{pidLabel}} for this upload?": "", + "Yes": "", + "No": "", + "Search for languages...": "", + "Search for a language by name (e.g \"eng\", \"fr\" or \"Polish\")": "", + "Add standard": "", + "Add custom": "", + "Read more": "", + "Title is a required field.": "", + "Link must be a valid URL": "", + "Add {{mode}} license": "", + "Change {{mode}} license": "", + "Recommended": "", + "Data": "", + "Software": "", + "License title": "", + "Link": "", + "License link": "", + "Add license": "", + "Change license": "", + "In case your upload was already published elsewhere, please use the date of the first publication. Format: YYYY-MM-DD, YYYY-MM, or YYYY. For intervals use DATE/DATE, e.g. 1939/1945.": "", + "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD for intervals. MM and DD are optional.": "", + "The publisher is used to formulate the citation, so consider the prominence of the role.": "", + "Add reference": "", + "Reference string": "", + "Specify identifiers of related works. Supported identifiers include DOI, Handle, ARK, PURL, ISSN, ISBN, PubMed ID, PubMed Central ID, ADS Bibliographic Code, arXiv, Life Science Identifiers (LSID), EAN-13, ISTC, URNs, and URLs.": "", + "Add related work": "", + "Relation": "", + "Suggest from": "", + "Search for a subject by name": "", + "Add titles": "", + "Mostly relevant for software and dataset uploads. A semantic version string is preferred see<1> semver.org, but any version string is accepted.": "Mostly relevant for software and dataset uploads. A semantic version string is preferred see<1> semver.org, but any version string is accepted." } diff --git a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/el/translations.json b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/el/translations.json index 7cfca2ab3..d7cfdecdf 100644 --- a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/el/translations.json +++ b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/el/translations.json @@ -13,5 +13,220 @@ "Cancel": "", "Delete": "", "Delete {{title}}": "Delete {{title}}", - "This will delete the set '{{title}}'.": "This will delete the set '{{title}}'." + "This will delete the set '{{title}}'.": "This will delete the set '{{title}}'.", + "Fetch error": "", + "Error fetching OAI set formats.": "", + "Select the community where you want to submit your record.": "", + "Change": "", + "Select a community": "", + "Remove": "", + "Community inclusion information": "", + "Submission to this community is only allowed if the record is restricted.": "", + "Community submission conditions information": "", + "Submission to this community is only allowed by dedicated upload form. Use the button to jump to the form.": "", + "Selected": "", + "Select": "", + "Select {{title}}": "", + "Did not find a community that fits you? Upload without a community or <2>create your own.": "Did not find a community that fits you? Upload without a community or <2>create your own.", + "Close": "", + "All": "", + "My communities": "", + "Search": "", + "In review": "", + "Community curators will review your upload. Once accepted, it will be published.": "", + "Declined": "", + "The request to submit this upload to the community was declined.": "", + "Expired": "", + "The request to submit this upload to the community has expired.": "", + "Published": "", + "Your upload is published.": "", + "Draft": "", + "Once your upload is complete, you can submit it for review to the community curators.": "", + "Once your upload is complete, you can publish or submit it for review to the community curators.": "", + "New version draft": "", + "Once your upload is complete, you can publish it.": "", + "View request": "", + "discard changes": "", + "discard version": "", + "delete": "", + "Are you sure you want to discard the changes to this draft?": "", + "Are you sure you want to delete this new version?": "", + "Are you sure you want to delete this draft?": "", + "You don't have permissions to create a new version.": "", + "New version": "", + "Preview": "", + "Are you sure you want to publish this record?": "", + "Once the record is published you will no longer be able to change the files in the upload! However, you will still be able to update the record's metadata later.": "", + "Publish": "", + "Submitted for review": "", + "Submit for review": "", + "Publish to community": "", + "You must accept this.": "", + "Before publishing to the community, please read and check the following:": "", + "Your upload will be immediately published in '{{communityTitle}}'. You will no longer be able to change the files in the upload! However, you will still be able to update the record's metadata later.": "", + "Publish record to community": "", + "Submit to community": "", + "Before submitting to community, please read and check the following:": "", + "Before requesting review, please read and check the following:": "", + "If your upload is accepted by the community curators, it will be immediately published. Before that, you will still be able to modify metadata and files of this upload.": "", + "Submit record for review": "", + "The '{{communityTitle}}' curators will have access to view and edit your upload's metadata and files.": "", + "Message to curators (optional)": "", + "Change community": "", + "Publish without community": "", + "Save draft": "", + "Files": "", + "Resource type": "", + "Title": "", + "Additional titles": "", + "Publication date": "", + "Creators": "", + "Contributors": "", + "Description": "", + "Additional descriptions": "", + "Licenses": "", + "Languages": "", + "Dates": "", + "Version": "", + "Publisher": "", + "Related works": "", + "References": "", + "Alternate identifiers": "", + "Keywords and subjects": "", + "Embargo until": "", + "DOI": "", + "Record successfully saved.": "", + "Record saved with validation errors:": "", + "The draft was not saved. Please try again. If the problem persists, contact user support.": "", + "The draft was not published. Please try again. If the problem persists, contact user support.": "", + "The draft was not published. Record saved with validation errors:": "", + "The draft was not submitted for review. Please try again. If the problem persists, contact user support.": "", + "The draft was not submitted for review. Record saved with validation errors:": "", + "Draft deletion failed. Please try again. If the problem persists, contact user support.": "", + "Draft preview failed. Please try again. If the problem persists, contact user support.": "", + "Identifier reservation failed. Please try again. If the problem persists, contact user support.": "", + "Identifier could not be discarded. Please try again. If the problem persists, contact user support.": "", + "Draft save failed before file upload. Please try again. If the problem persists, contact user support.": "", + "Files import from the previous version failed. Please try again. If the problem persists, contact user support.": "", + "Options": "", + "Public": "", + "The record is publicly accessible.": "", + "The record and files are publicly accessible.": "", + "Embargoed (full record)": "", + "Restricted": "", + "Public with restricted files": "", + "Embargoed (files-only)": "", + "access-message": "On <1> the record will automatically be made publicly accessible. Until then, the record can <3>only be accessed by <6>users specified in the permissions.\"", + "The record can <1>only be accessed by <3>users specified in the permissions.": "The record can <1>only be accessed by <3>users specified in the permissions.", + "The record is publicly accessible. The files can <1>only be accessed by <4>users specified in the permissions.": "The record is publicly accessible. The files can <1>only be accessed by <4>users specified in the permissions.", + "The record is publicly accessible. On {{ date }} the files will automatically be made publicly accessible. Until then, the files can only be accessed by users specified in the permissions.": "The record is publicly accessible. On {{ date }} the files will automatically be made publicly accessible. Until then, the files can only be accessed by users specified in the permissions.", + "Apply an embargo": "", + "Embargo reason": "", + "Optionally, describe the reason for the embargo.": "", + "Embargo was lifted on {{fmtDate}}.": "", + "Reason": "", + "Record or files protection must be <1>restricted to apply an embargo.": "Record or files protection must be <1>restricted to apply an embargo.", + "YYYY-MM-DD": "", + "The record has no files.": "", + "Files only": "", + "The full record is restricted.": "", + "The files of this record are restricted.": "", + "Full record": "", + "Record visibility can not be changed to restricted anymore. Please contact support if you still need to make these changes.": "", + "Search or create affiliation": "", + "Affiliations": "", + "Search for affiliations..": "", + "Add creator": "", + "Edit creator": "", + "Edit": "", + "Type the value of an identifier...": "", + "Identifiers": "", + "e.g. ORCID, ISNI or GND.": "", + "Save and add another": "", + "Family name is a required field.": "", + "Name is a required field.": "", + "Role is a required field.": "", + "Added": "", + "Person": "", + "Organization": "", + "Search for persons by name, identifier, or affiliation...": "", + "Family name": "", + "Given names": "", + "Search for an organization by name, identifier, or affiliation...": "", + "Search for organization by name, identifier, or affiliation...": "", + "Name": "", + "Organization name": "", + "e.g. ROR, ISNI or GND.": "", + "Role": "", + "Select role": "", + "Save": "", + "Couldn't find your person? You can <2>create a new entry.": "Couldn't find your person? You can <2>create a new entry.", + "Add date": "", + "Format: DATE or DATE/DATE where DATE is YYYY or YYYY-MM or YYYY-MM-DD.": "", + "Date": "", + "Type": "", + "Remove field": "", + "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD": "", + "Add description": "", + "Additional Description": "", + "Language": "", + "Select language": "", + "Uploading the selected files would result in": "", + "but the limit is": "", + "The following files already exist": "", + "You can import files from the previous version.": "", + "File addition, removal or modification are not allowed after you have published your upload.": "", + "You must create a new version to add, modify or delete files.": "", + "Drag and drop files": "", + "Upload files": "", + "Import files": "", + "Filename": "", + "Size": "", + "Progress": "", + "Default preview": "", + "This is the file fingerprint (MD5 checksum), which can be used to verify the file integrity.": "", + "Pending": "", + "Delete file": "", + "or": "", + "This is a Metadata-only record.": "", + "Metadata-only record": "", + "Disable files for this record": "", + "Storage available": "", + "{{length}} out of {{maxfiles}} files": "", + "out of": "", + "Add identifier": "", + "Identifier": "", + "Scheme": "", + "Do you already have a {{pidLabel}} for this upload?": "", + "Yes": "", + "No": "", + "Search for languages...": "", + "Search for a language by name (e.g \"eng\", \"fr\" or \"Polish\")": "", + "Add standard": "", + "Add custom": "", + "Read more": "", + "Title is a required field.": "", + "Link must be a valid URL": "", + "Add {{mode}} license": "", + "Change {{mode}} license": "", + "Recommended": "", + "Data": "", + "Software": "", + "License title": "", + "Link": "", + "License link": "", + "Add license": "", + "Change license": "", + "In case your upload was already published elsewhere, please use the date of the first publication. Format: YYYY-MM-DD, YYYY-MM, or YYYY. For intervals use DATE/DATE, e.g. 1939/1945.": "", + "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD for intervals. MM and DD are optional.": "", + "The publisher is used to formulate the citation, so consider the prominence of the role.": "", + "Add reference": "", + "Reference string": "", + "Specify identifiers of related works. Supported identifiers include DOI, Handle, ARK, PURL, ISSN, ISBN, PubMed ID, PubMed Central ID, ADS Bibliographic Code, arXiv, Life Science Identifiers (LSID), EAN-13, ISTC, URNs, and URLs.": "", + "Add related work": "", + "Relation": "", + "Suggest from": "", + "Search for a subject by name": "", + "Add titles": "", + "Mostly relevant for software and dataset uploads. A semantic version string is preferred see<1> semver.org, but any version string is accepted.": "Mostly relevant for software and dataset uploads. A semantic version string is preferred see<1> semver.org, but any version string is accepted." } diff --git a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/en/translations.json b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/en/translations.json index c3353bfbb..53f539b5d 100644 --- a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/en/translations.json +++ b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/messages/en/translations.json @@ -13,5 +13,220 @@ "Cancel": "Cancel", "Delete": "Delete", "Delete {{title}}": "Delete {{title}}", - "This will delete the set '{{title}}'.": "This will delete the set '{{title}}'." + "This will delete the set '{{title}}'.": "This will delete the set '{{title}}'.", + "Fetch error": "Fetch error", + "Error fetching OAI set formats.": "Error fetching OAI set formats.", + "Select the community where you want to submit your record.": "Select the community where you want to submit your record.", + "Change": "Change", + "Select a community": "Select a community", + "Remove": "Remove", + "Community inclusion information": "Community inclusion information", + "Submission to this community is only allowed if the record is restricted.": "Submission to this community is only allowed if the record is restricted.", + "Community submission conditions information": "Community submission conditions information", + "Submission to this community is only allowed by dedicated upload form. Use the button to jump to the form.": "Submission to this community is only allowed by dedicated upload form. Use the button to jump to the form.", + "Selected": "Selected", + "Select": "Select", + "Select {{title}}": "Select {{title}}", + "Did not find a community that fits you? Upload without a community or <2>create your own.": "Did not find a community that fits you? Upload without a community or <2>create your own.", + "Close": "Close", + "All": "All", + "My communities": "My communities", + "Search": "Search", + "In review": "In review", + "Community curators will review your upload. Once accepted, it will be published.": "Community curators will review your upload. Once accepted, it will be published.", + "Declined": "Declined", + "The request to submit this upload to the community was declined.": "The request to submit this upload to the community was declined.", + "Expired": "Expired", + "The request to submit this upload to the community has expired.": "The request to submit this upload to the community has expired.", + "Published": "Published", + "Your upload is published.": "Your upload is published.", + "Draft": "Draft", + "Once your upload is complete, you can submit it for review to the community curators.": "Once your upload is complete, you can submit it for review to the community curators.", + "Once your upload is complete, you can publish or submit it for review to the community curators.": "Once your upload is complete, you can publish or submit it for review to the community curators.", + "New version draft": "New version draft", + "Once your upload is complete, you can publish it.": "Once your upload is complete, you can publish it.", + "View request": "View request", + "discard changes": "discard changes", + "discard version": "discard version", + "delete": "delete", + "Are you sure you want to discard the changes to this draft?": "Are you sure you want to discard the changes to this draft?", + "Are you sure you want to delete this new version?": "Are you sure you want to delete this new version?", + "Are you sure you want to delete this draft?": "Are you sure you want to delete this draft?", + "You don't have permissions to create a new version.": "You don't have permissions to create a new version.", + "New version": "New version", + "Preview": "Preview", + "Are you sure you want to publish this record?": "Are you sure you want to publish this record?", + "Once the record is published you will no longer be able to change the files in the upload! However, you will still be able to update the record's metadata later.": "Once the record is published you will no longer be able to change the files in the upload! However, you will still be able to update the record's metadata later.", + "Publish": "Publish", + "Submitted for review": "Submitted for review", + "Submit for review": "Submit for review", + "Publish to community": "Publish to community", + "You must accept this.": "You must accept this.", + "Before publishing to the community, please read and check the following:": "Before publishing to the community, please read and check the following:", + "Your upload will be immediately published in '{{communityTitle}}'. You will no longer be able to change the files in the upload! However, you will still be able to update the record's metadata later.": "Your upload will be immediately published in '{{communityTitle}}'. You will no longer be able to change the files in the upload! However, you will still be able to update the record's metadata later.", + "Publish record to community": "Publish record to community", + "Submit to community": "Submit to community", + "Before submitting to community, please read and check the following:": "Before submitting to community, please read and check the following:", + "Before requesting review, please read and check the following:": "Before requesting review, please read and check the following:", + "If your upload is accepted by the community curators, it will be immediately published. Before that, you will still be able to modify metadata and files of this upload.": "If your upload is accepted by the community curators, it will be immediately published. Before that, you will still be able to modify metadata and files of this upload.", + "Submit record for review": "Submit record for review", + "The '{{communityTitle}}' curators will have access to view and edit your upload's metadata and files.": "The '{{communityTitle}}' curators will have access to view and edit your upload's metadata and files.", + "Message to curators (optional)": "Message to curators (optional)", + "Change community": "Change community", + "Publish without community": "Publish without community", + "Save draft": "Save draft", + "Files": "Files", + "Resource type": "Resource type", + "Title": "Title", + "Additional titles": "Additional titles", + "Publication date": "Publication date", + "Creators": "Creators", + "Contributors": "Contributors", + "Description": "Description", + "Additional descriptions": "Additional descriptions", + "Licenses": "Licenses", + "Languages": "Languages", + "Dates": "Dates", + "Version": "Version", + "Publisher": "Publisher", + "Related works": "Related works", + "References": "References", + "Alternate identifiers": "Alternate identifiers", + "Keywords and subjects": "Keywords and subjects", + "Embargo until": "Embargo until", + "DOI": "DOI", + "Record successfully saved.": "Record successfully saved.", + "Record saved with validation errors:": "Record saved with validation errors:", + "The draft was not saved. Please try again. If the problem persists, contact user support.": "The draft was not saved. Please try again. If the problem persists, contact user support.", + "The draft was not published. Please try again. If the problem persists, contact user support.": "The draft was not published. Please try again. If the problem persists, contact user support.", + "The draft was not published. Record saved with validation errors:": "The draft was not published. Record saved with validation errors:", + "The draft was not submitted for review. Please try again. If the problem persists, contact user support.": "The draft was not submitted for review. Please try again. If the problem persists, contact user support.", + "The draft was not submitted for review. Record saved with validation errors:": "The draft was not submitted for review. Record saved with validation errors:", + "Draft deletion failed. Please try again. If the problem persists, contact user support.": "Draft deletion failed. Please try again. If the problem persists, contact user support.", + "Draft preview failed. Please try again. If the problem persists, contact user support.": "Draft preview failed. Please try again. If the problem persists, contact user support.", + "Identifier reservation failed. Please try again. If the problem persists, contact user support.": "Identifier reservation failed. Please try again. If the problem persists, contact user support.", + "Identifier could not be discarded. Please try again. If the problem persists, contact user support.": "Identifier could not be discarded. Please try again. If the problem persists, contact user support.", + "Draft save failed before file upload. Please try again. If the problem persists, contact user support.": "Draft save failed before file upload. Please try again. If the problem persists, contact user support.", + "Files import from the previous version failed. Please try again. If the problem persists, contact user support.": "Files import from the previous version failed. Please try again. If the problem persists, contact user support.", + "Options": "Options", + "Public": "Public", + "The record is publicly accessible.": "The record is publicly accessible.", + "The record and files are publicly accessible.": "The record and files are publicly accessible.", + "Embargoed (full record)": "Embargoed (full record)", + "Restricted": "Restricted", + "Public with restricted files": "Public with restricted files", + "Embargoed (files-only)": "Embargoed (files-only)", + "access-message": "access-message", + "The record can <1>only be accessed by <3>users specified in the permissions.": "The record can <1>only be accessed by <3>users specified in the permissions.", + "The record is publicly accessible. The files can <1>only be accessed by <4>users specified in the permissions.": "The record is publicly accessible. The files can <1>only be accessed by <4>users specified in the permissions.", + "The record is publicly accessible. On {{ date }} the files will automatically be made publicly accessible. Until then, the files can only be accessed by users specified in the permissions.": "The record is publicly accessible. On {{ date }} the files will automatically be made publicly accessible. Until then, the files can only be accessed by users specified in the permissions.", + "Apply an embargo": "Apply an embargo", + "Embargo reason": "Embargo reason", + "Optionally, describe the reason for the embargo.": "Optionally, describe the reason for the embargo.", + "Embargo was lifted on {{fmtDate}}.": "Embargo was lifted on {{fmtDate}}.", + "Reason": "Reason", + "Record or files protection must be <1>restricted to apply an embargo.": "Record or files protection must be <1>restricted to apply an embargo.", + "YYYY-MM-DD": "YYYY-MM-DD", + "The record has no files.": "The record has no files.", + "Files only": "Files only", + "The full record is restricted.": "The full record is restricted.", + "The files of this record are restricted.": "The files of this record are restricted.", + "Full record": "Full record", + "Record visibility can not be changed to restricted anymore. Please contact support if you still need to make these changes.": "Record visibility can not be changed to restricted anymore. Please contact support if you still need to make these changes.", + "Search or create affiliation": "Search or create affiliation", + "Affiliations": "Affiliations", + "Search for affiliations..": "Search for affiliations..", + "Add creator": "Add creator", + "Edit creator": "Edit creator", + "Edit": "Edit", + "Type the value of an identifier...": "Type the value of an identifier...", + "Identifiers": "Identifiers", + "e.g. ORCID, ISNI or GND.": "e.g. ORCID, ISNI or GND.", + "Save and add another": "Save and add another", + "Family name is a required field.": "Family name is a required field.", + "Name is a required field.": "Name is a required field.", + "Role is a required field.": "Role is a required field.", + "Added": "Added", + "Person": "Person", + "Organization": "Organization", + "Search for persons by name, identifier, or affiliation...": "Search for persons by name, identifier, or affiliation...", + "Family name": "Family name", + "Given names": "Given names", + "Search for an organization by name, identifier, or affiliation...": "Search for an organization by name, identifier, or affiliation...", + "Search for organization by name, identifier, or affiliation...": "Search for organization by name, identifier, or affiliation...", + "Name": "Name", + "Organization name": "Organization name", + "e.g. ROR, ISNI or GND.": "e.g. ROR, ISNI or GND.", + "Role": "Role", + "Select role": "Select role", + "Save": "Save", + "Couldn't find your person? You can <2>create a new entry.": "Couldn't find your person? You can <2>create a new entry.", + "Add date": "Add date", + "Format: DATE or DATE/DATE where DATE is YYYY or YYYY-MM or YYYY-MM-DD.": "Format: DATE or DATE/DATE where DATE is YYYY or YYYY-MM or YYYY-MM-DD.", + "Date": "Date", + "Type": "Type", + "Remove field": "Remove field", + "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD": "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD", + "Add description": "Add description", + "Additional Description": "Additional Description", + "Language": "Language", + "Select language": "Select language", + "Uploading the selected files would result in": "Uploading the selected files would result in", + "but the limit is": "but the limit is", + "The following files already exist": "The following files already exist", + "You can import files from the previous version.": "You can import files from the previous version.", + "File addition, removal or modification are not allowed after you have published your upload.": "File addition, removal or modification are not allowed after you have published your upload.", + "You must create a new version to add, modify or delete files.": "You must create a new version to add, modify or delete files.", + "Drag and drop files": "Drag and drop files", + "Upload files": "Upload files", + "Import files": "Import files", + "Filename": "Filename", + "Size": "Size", + "Progress": "Progress", + "Default preview": "Default preview", + "This is the file fingerprint (MD5 checksum), which can be used to verify the file integrity.": "This is the file fingerprint (MD5 checksum), which can be used to verify the file integrity.", + "Pending": "Pending", + "Delete file": "Delete file", + "or": "or", + "This is a Metadata-only record.": "This is a Metadata-only record.", + "Metadata-only record": "Metadata-only record", + "Disable files for this record": "Disable files for this record", + "Storage available": "Storage available", + "{{length}} out of {{maxfiles}} files": "{{length}} out of {{maxfiles}} files", + "out of": "out of", + "Add identifier": "Add identifier", + "Identifier": "Identifier", + "Scheme": "Scheme", + "Do you already have a {{pidLabel}} for this upload?": "Do you already have a {{pidLabel}} for this upload?", + "Yes": "Yes", + "No": "No", + "Search for languages...": "Search for languages...", + "Search for a language by name (e.g \"eng\", \"fr\" or \"Polish\")": "Search for a language by name (e.g \"eng\", \"fr\" or \"Polish\")", + "Add standard": "Add standard", + "Add custom": "Add custom", + "Read more": "Read more", + "Title is a required field.": "Title is a required field.", + "Link must be a valid URL": "Link must be a valid URL", + "Add {{mode}} license": "Add {{mode}} license", + "Change {{mode}} license": "Change {{mode}} license", + "Recommended": "Recommended", + "Data": "Data", + "Software": "Software", + "License title": "License title", + "Link": "Link", + "License link": "License link", + "Add license": "Add license", + "Change license": "Change license", + "In case your upload was already published elsewhere, please use the date of the first publication. Format: YYYY-MM-DD, YYYY-MM, or YYYY. For intervals use DATE/DATE, e.g. 1939/1945.": "In case your upload was already published elsewhere, please use the date of the first publication. Format: YYYY-MM-DD, YYYY-MM, or YYYY. For intervals use DATE/DATE, e.g. 1939/1945.", + "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD for intervals. MM and DD are optional.": "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD for intervals. MM and DD are optional.", + "The publisher is used to formulate the citation, so consider the prominence of the role.": "The publisher is used to formulate the citation, so consider the prominence of the role.", + "Add reference": "Add reference", + "Reference string": "Reference string", + "Specify identifiers of related works. Supported identifiers include DOI, Handle, ARK, PURL, ISSN, ISBN, PubMed ID, PubMed Central ID, ADS Bibliographic Code, arXiv, Life Science Identifiers (LSID), EAN-13, ISTC, URNs, and URLs.": "Specify identifiers of related works. Supported identifiers include DOI, Handle, ARK, PURL, ISSN, ISBN, PubMed ID, PubMed Central ID, ADS Bibliographic Code, arXiv, Life Science Identifiers (LSID), EAN-13, ISTC, URNs, and URLs.", + "Add related work": "Add related work", + "Relation": "Relation", + "Suggest from": "Suggest from", + "Search for a subject by name": "Search for a subject by name", + "Add titles": "Add titles", + "Mostly relevant for software and dataset uploads. A semantic version string is preferred see<1> semver.org, but any version string is accepted.": "Mostly relevant for software and dataset uploads. A semantic version string is preferred see<1> semver.org, but any version string is accepted." } diff --git a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/package-lock.json b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/package-lock.json index ad6308427..94ca2d02b 100644 --- a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/package-lock.json +++ b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/package-lock.json @@ -26,10 +26,11 @@ } }, "node_modules/acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", "dev": true, + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -98,23 +99,6 @@ "acorn": "^6 || ^7 || ^8" } }, - "node_modules/acorn-stage3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz", - "integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==", - "dev": true, - "dependencies": { - "acorn-class-fields": "^0.3.7", - "acorn-private-methods": "^0.3.3", - "acorn-static-class-features": "^0.2.4" - }, - "engines": { - "node": ">=4.8.2" - }, - "peerDependencies": { - "acorn": "^7.4 || ^8" - } - }, "node_modules/acorn-static-class-features": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/acorn-static-class-features/-/acorn-static-class-features-0.2.4.tgz", @@ -888,6 +872,35 @@ "node": ">=12" } }, + "node_modules/i18next-scanner/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/i18next-scanner/node_modules/acorn-stage3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz", + "integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==", + "dev": true, + "dependencies": { + "acorn-class-fields": "^0.3.7", + "acorn-private-methods": "^0.3.3", + "acorn-static-class-features": "^0.2.4" + }, + "engines": { + "node": ">=4.8.2" + }, + "peerDependencies": { + "acorn": "^7.4 || ^8" + } + }, "node_modules/i18next-scanner/node_modules/commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", @@ -1884,10 +1897,11 @@ } }, "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true, + "peer": true }, "acorn-class-fields": { "version": "0.3.7", @@ -1902,19 +1916,22 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-4.0.0.tgz", "integrity": "sha512-d3OEjQV4ROpoflsnUA8HozoIR504TFxNivYEUi6uwz0IYhBkTDXGuWlNdMtybRt3nqVx/L6XqMt0FxkXuWKZhw==", - "dev": true + "dev": true, + "requires": {} }, "acorn-jsx": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true + "dev": true, + "requires": {} }, "acorn-private-class-elements": { "version": "0.2.7", "resolved": "https://registry.npmjs.org/acorn-private-class-elements/-/acorn-private-class-elements-0.2.7.tgz", "integrity": "sha512-+GZH2wOKNZOBI4OOPmzpo4cs6mW297sn6fgIk1dUI08jGjhAaEwvC39mN2gJAg2lmAQJ1rBkFqKWonL3Zz6PVA==", - "dev": true + "dev": true, + "requires": {} }, "acorn-private-methods": { "version": "0.3.3", @@ -1925,17 +1942,6 @@ "acorn-private-class-elements": "^0.2.7" } }, - "acorn-stage3": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz", - "integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==", - "dev": true, - "requires": { - "acorn-class-fields": "^0.3.7", - "acorn-private-methods": "^0.3.3", - "acorn-static-class-features": "^0.2.4" - } - }, "acorn-static-class-features": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/acorn-static-class-features/-/acorn-static-class-features-0.2.4.tgz", @@ -2595,6 +2601,23 @@ "vinyl-fs": "^3.0.1" }, "dependencies": { + "acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true + }, + "acorn-stage3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/acorn-stage3/-/acorn-stage3-4.0.0.tgz", + "integrity": "sha512-BR+LaADtA6GTB5prkNqWmlmCLYmkyW0whvSxdHhbupTaro2qBJ95fJDEiRLPUmiACGHPaYyeH9xmNJWdGfXRQw==", + "dev": true, + "requires": { + "acorn-class-fields": "^0.3.7", + "acorn-private-methods": "^0.3.3", + "acorn-static-class-features": "^0.2.4" + } + }, "commander": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", diff --git a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/translations.pot b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/translations.pot index e0fafff70..041254a12 100644 --- a/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/translations.pot +++ b/invenio_rdm_records/assets/semantic-ui/translations/invenio_rdm_records/translations.pot @@ -5,8 +5,8 @@ msgstr "" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n" -"POT-Creation-Date: 2022-10-19T15:04:53.186Z\n" -"PO-Revision-Date: 2022-10-19T15:04:53.186Z\n" +"POT-Creation-Date: 2024-08-14T06:30:28.436Z\n" +"PO-Revision-Date: 2024-08-14T06:30:28.436Z\n" "Language: en\n" msgid "Copy to clipboard" @@ -56,4 +56,779 @@ msgid "Delete {{title}}" msgstr "Delete {{title}}" msgid "This will delete the set '{{title}}'." -msgstr "This will delete the set '{{title}}'." \ No newline at end of file +msgstr "This will delete the set '{{title}}'." + +msgid "Fetch error" +msgstr "Fetch error" + +msgid "Error fetching OAI set formats." +msgstr "Error fetching OAI set formats." + +msgid "Select the community where you want to submit your record." +msgstr "Select the community where you want to submit your record." + +msgid "Change" +msgstr "Change" + +msgid "Select a community" +msgstr "Select a community" + +msgid "Remove" +msgstr "Remove" + +msgid "Community inclusion information" +msgstr "Community inclusion information" + +msgid "Submission to this community is only allowed if the record is restricted." +msgstr "Submission to this community is only allowed if the record is restricted." + +msgid "Community submission conditions information" +msgstr "Community submission conditions information" + +msgid "" +"Submission to this community is only allowed by dedicated upload form. Use " +"the button to jump to the form." +msgstr "" +"Submission to this community is only allowed by dedicated upload form. Use " +"the button to jump to the form." + +msgid "Selected" +msgstr "Selected" + +msgid "Select" +msgstr "Select" + +msgid "Select {{title}}" +msgstr "Select {{title}}" + +msgid "" +"Did not find a community that fits you? Upload without a community or " +"<2>create your own." +msgstr "" +"Did not find a community that fits you? Upload without a community or " +"<2>create your own." + +msgid "Close" +msgstr "Close" + +msgid "All" +msgstr "All" + +msgid "My communities" +msgstr "My communities" + +msgid "Search" +msgstr "Search" + +msgid "In review" +msgstr "In review" + +msgid "" +"Community curators will review your upload. Once accepted, it will be " +"published." +msgstr "" +"Community curators will review your upload. Once accepted, it will be " +"published." + +msgid "Declined" +msgstr "Declined" + +msgid "The request to submit this upload to the community was declined." +msgstr "The request to submit this upload to the community was declined." + +msgid "Expired" +msgstr "Expired" + +msgid "The request to submit this upload to the community has expired." +msgstr "The request to submit this upload to the community has expired." + +msgid "Published" +msgstr "Published" + +msgid "Your upload is published." +msgstr "Your upload is published." + +msgid "Draft" +msgstr "Draft" + +msgid "" +"Once your upload is complete, you can submit it for review to the community " +"curators." +msgstr "" +"Once your upload is complete, you can submit it for review to the community " +"curators." + +msgid "" +"Once your upload is complete, you can publish or submit it for review to " +"the community curators." +msgstr "" +"Once your upload is complete, you can publish or submit it for review to " +"the community curators." + +msgid "New version draft" +msgstr "New version draft" + +msgid "Once your upload is complete, you can publish it." +msgstr "Once your upload is complete, you can publish it." + +msgid "View request" +msgstr "View request" + +msgid "discard changes" +msgstr "discard changes" + +msgid "discard version" +msgstr "discard version" + +msgid "delete" +msgstr "delete" + +msgid "Are you sure you want to discard the changes to this draft?" +msgstr "Are you sure you want to discard the changes to this draft?" + +msgid "Are you sure you want to delete this new version?" +msgstr "Are you sure you want to delete this new version?" + +msgid "Are you sure you want to delete this draft?" +msgstr "Are you sure you want to delete this draft?" + +msgid "You don't have permissions to create a new version." +msgstr "You don't have permissions to create a new version." + +msgid "New version" +msgstr "New version" + +msgid "Preview" +msgstr "Preview" + +msgid "Are you sure you want to publish this record?" +msgstr "Are you sure you want to publish this record?" + +msgid "" +"Once the record is published you will no longer be able to change the files " +"in the upload! However, you will still be able to update the record's " +"metadata later." +msgstr "" +"Once the record is published you will no longer be able to change the files " +"in the upload! However, you will still be able to update the record's " +"metadata later." + +msgid "Publish" +msgstr "Publish" + +msgid "Submitted for review" +msgstr "Submitted for review" + +msgid "Submit for review" +msgstr "Submit for review" + +msgid "Publish to community" +msgstr "Publish to community" + +msgid "You must accept this." +msgstr "You must accept this." + +msgid "Before publishing to the community, please read and check the following:" +msgstr "Before publishing to the community, please read and check the following:" + +msgid "" +"Your upload will be immediately published in " +"'{{communityTitle}}'. You will no longer be able to change the files in the " +"upload! However, you will still be able to update the record's metadata " +"later." +msgstr "" +"Your upload will be immediately published in " +"'{{communityTitle}}'. You will no longer be able to change the files in the " +"upload! However, you will still be able to update the record's metadata " +"later." + +msgid "Publish record to community" +msgstr "Publish record to community" + +msgid "Submit to community" +msgstr "Submit to community" + +msgid "Before submitting to community, please read and check the following:" +msgstr "Before submitting to community, please read and check the following:" + +msgid "Before requesting review, please read and check the following:" +msgstr "Before requesting review, please read and check the following:" + +msgid "" +"If your upload is accepted by the community curators, it will be " +"immediately published. Before that, you will still be able to " +"modify metadata and files of this upload." +msgstr "" +"If your upload is accepted by the community curators, it will be " +"immediately published. Before that, you will still be able to " +"modify metadata and files of this upload." + +msgid "Submit record for review" +msgstr "Submit record for review" + +msgid "" +"The '{{communityTitle}}' curators will have access to view and " +"edit your upload's metadata and files." +msgstr "" +"The '{{communityTitle}}' curators will have access to view and " +"edit your upload's metadata and files." + +msgid "Message to curators (optional)" +msgstr "Message to curators (optional)" + +msgid "Change community" +msgstr "Change community" + +msgid "Publish without community" +msgstr "Publish without community" + +msgid "Save draft" +msgstr "Save draft" + +msgid "Files" +msgstr "Files" + +msgid "Resource type" +msgstr "Resource type" + +msgid "Title" +msgstr "Title" + +msgid "Additional titles" +msgstr "Additional titles" + +msgid "Publication date" +msgstr "Publication date" + +msgid "Creators" +msgstr "Creators" + +msgid "Contributors" +msgstr "Contributors" + +msgid "Description" +msgstr "Description" + +msgid "Additional descriptions" +msgstr "Additional descriptions" + +msgid "Licenses" +msgstr "Licenses" + +msgid "Languages" +msgstr "Languages" + +msgid "Dates" +msgstr "Dates" + +msgid "Version" +msgstr "Version" + +msgid "Publisher" +msgstr "Publisher" + +msgid "Related works" +msgstr "Related works" + +msgid "References" +msgstr "References" + +msgid "Alternate identifiers" +msgstr "Alternate identifiers" + +msgid "Keywords and subjects" +msgstr "Keywords and subjects" + +msgid "Embargo until" +msgstr "Embargo until" + +msgid "DOI" +msgstr "DOI" + +msgid "Record successfully saved." +msgstr "Record successfully saved." + +msgid "Record saved with validation errors:" +msgstr "Record saved with validation errors:" + +msgid "" +"The draft was not saved. Please try again. If the problem persists, contact " +"user support." +msgstr "" +"The draft was not saved. Please try again. If the problem persists, contact " +"user support." + +msgid "" +"The draft was not published. Please try again. If the problem persists, " +"contact user support." +msgstr "" +"The draft was not published. Please try again. If the problem persists, " +"contact user support." + +msgid "The draft was not published. Record saved with validation errors:" +msgstr "The draft was not published. Record saved with validation errors:" + +msgid "" +"The draft was not submitted for review. Please try again. If the problem " +"persists, contact user support." +msgstr "" +"The draft was not submitted for review. Please try again. If the problem " +"persists, contact user support." + +msgid "The draft was not submitted for review. Record saved with validation errors:" +msgstr "The draft was not submitted for review. Record saved with validation errors:" + +msgid "" +"Draft deletion failed. Please try again. If the problem persists, contact " +"user support." +msgstr "" +"Draft deletion failed. Please try again. If the problem persists, contact " +"user support." + +msgid "" +"Draft preview failed. Please try again. If the problem persists, contact " +"user support." +msgstr "" +"Draft preview failed. Please try again. If the problem persists, contact " +"user support." + +msgid "" +"Identifier reservation failed. Please try again. If the problem persists, " +"contact user support." +msgstr "" +"Identifier reservation failed. Please try again. If the problem persists, " +"contact user support." + +msgid "" +"Identifier could not be discarded. Please try again. If the problem " +"persists, contact user support." +msgstr "" +"Identifier could not be discarded. Please try again. If the problem " +"persists, contact user support." + +msgid "" +"Draft save failed before file upload. Please try again. If the problem " +"persists, contact user support." +msgstr "" +"Draft save failed before file upload. Please try again. If the problem " +"persists, contact user support." + +msgid "" +"Files import from the previous version failed. Please try again. If the " +"problem persists, contact user support." +msgstr "" +"Files import from the previous version failed. Please try again. If the " +"problem persists, contact user support." + +msgid "Options" +msgstr "Options" + +msgid "Public" +msgstr "Public" + +msgid "The record is publicly accessible." +msgstr "The record is publicly accessible." + +msgid "The record and files are publicly accessible." +msgstr "The record and files are publicly accessible." + +msgid "Embargoed (full record)" +msgstr "Embargoed (full record)" + +msgid "Restricted" +msgstr "Restricted" + +msgid "Public with restricted files" +msgstr "Public with restricted files" + +msgid "Embargoed (files-only)" +msgstr "Embargoed (files-only)" + +msgid "access-message" +msgstr "access-message" + +msgid "" +"The record can <1>only be accessed by <3>users specified in the " +"permissions." +msgstr "" +"The record can <1>only be accessed by <3>users specified in the " +"permissions." + +msgid "" +"The record is publicly accessible. The files can <1>only be accessed by " +"<4>users specified in the permissions." +msgstr "" +"The record is publicly accessible. The files can <1>only be accessed by " +"<4>users specified in the permissions." + +msgid "" +"The record is publicly accessible. On {{ date }} the files " +"will automatically be made publicly accessible. Until then, the files can " +"only be accessed by users specified in the " +"permissions." +msgstr "" +"The record is publicly accessible. On {{ date }} the files " +"will automatically be made publicly accessible. Until then, the files can " +"only be accessed by users specified in the " +"permissions." + +msgid "Apply an embargo" +msgstr "Apply an embargo" + +msgid "Embargo reason" +msgstr "Embargo reason" + +msgid "Optionally, describe the reason for the embargo." +msgstr "Optionally, describe the reason for the embargo." + +msgid "Embargo was lifted on {{fmtDate}}." +msgstr "Embargo was lifted on {{fmtDate}}." + +msgid "Reason" +msgstr "Reason" + +msgid "Record or files protection must be <1>restricted to apply an embargo." +msgstr "Record or files protection must be <1>restricted to apply an embargo." + +msgid "YYYY-MM-DD" +msgstr "YYYY-MM-DD" + +msgid "The record has no files." +msgstr "The record has no files." + +msgid "Files only" +msgstr "Files only" + +msgid "The full record is restricted." +msgstr "The full record is restricted." + +msgid "The files of this record are restricted." +msgstr "The files of this record are restricted." + +msgid "Full record" +msgstr "Full record" + +msgid "" +"Record visibility can not be changed to restricted anymore. Please contact " +"support if you still need to make these changes." +msgstr "" +"Record visibility can not be changed to restricted anymore. Please contact " +"support if you still need to make these changes." + +msgid "Search or create affiliation" +msgstr "Search or create affiliation" + +msgid "Affiliations" +msgstr "Affiliations" + +msgid "Search for affiliations.." +msgstr "Search for affiliations.." + +msgid "Add creator" +msgstr "Add creator" + +msgid "Edit creator" +msgstr "Edit creator" + +msgid "Edit" +msgstr "Edit" + +msgid "Type the value of an identifier..." +msgstr "Type the value of an identifier..." + +msgid "Identifiers" +msgstr "Identifiers" + +msgid "e.g. ORCID, ISNI or GND." +msgstr "e.g. ORCID, ISNI or GND." + +msgid "Save and add another" +msgstr "Save and add another" + +msgid "Family name is a required field." +msgstr "Family name is a required field." + +msgid "Name is a required field." +msgstr "Name is a required field." + +msgid "Role is a required field." +msgstr "Role is a required field." + +msgid "Added" +msgstr "Added" + +msgid "Person" +msgstr "Person" + +msgid "Organization" +msgstr "Organization" + +msgid "Search for persons by name, identifier, or affiliation..." +msgstr "Search for persons by name, identifier, or affiliation..." + +msgid "Family name" +msgstr "Family name" + +msgid "Given names" +msgstr "Given names" + +msgid "Search for an organization by name, identifier, or affiliation..." +msgstr "Search for an organization by name, identifier, or affiliation..." + +msgid "Search for organization by name, identifier, or affiliation..." +msgstr "Search for organization by name, identifier, or affiliation..." + +msgid "Name" +msgstr "Name" + +msgid "Organization name" +msgstr "Organization name" + +msgid "e.g. ROR, ISNI or GND." +msgstr "e.g. ROR, ISNI or GND." + +msgid "Role" +msgstr "Role" + +msgid "Select role" +msgstr "Select role" + +msgid "Save" +msgstr "Save" + +msgid "Couldn't find your person? You can <2>create a new entry." +msgstr "Couldn't find your person? You can <2>create a new entry." + +msgid "Add date" +msgstr "Add date" + +msgid "Format: DATE or DATE/DATE where DATE is YYYY or YYYY-MM or YYYY-MM-DD." +msgstr "Format: DATE or DATE/DATE where DATE is YYYY or YYYY-MM or YYYY-MM-DD." + +msgid "Date" +msgstr "Date" + +msgid "Type" +msgstr "Type" + +msgid "Remove field" +msgstr "Remove field" + +msgid "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD" +msgstr "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD" + +msgid "Add description" +msgstr "Add description" + +msgid "Additional Description" +msgstr "Additional Description" + +msgid "Language" +msgstr "Language" + +msgid "Select language" +msgstr "Select language" + +msgid "Uploading the selected files would result in" +msgstr "Uploading the selected files would result in" + +msgid "but the limit is" +msgstr "but the limit is" + +msgid "The following files already exist" +msgstr "The following files already exist" + +msgid "You can import files from the previous version." +msgstr "You can import files from the previous version." + +msgid "" +"File addition, removal or modification are not allowed after you have " +"published your upload." +msgstr "" +"File addition, removal or modification are not allowed after you have " +"published your upload." + +msgid "You must create a new version to add, modify or delete files." +msgstr "You must create a new version to add, modify or delete files." + +msgid "Drag and drop files" +msgstr "Drag and drop files" + +msgid "Upload files" +msgstr "Upload files" + +msgid "Import files" +msgstr "Import files" + +msgid "Filename" +msgstr "Filename" + +msgid "Size" +msgstr "Size" + +msgid "Progress" +msgstr "Progress" + +msgid "Default preview" +msgstr "Default preview" + +msgid "" +"This is the file fingerprint (MD5 checksum), which can be used to verify " +"the file integrity." +msgstr "" +"This is the file fingerprint (MD5 checksum), which can be used to verify " +"the file integrity." + +msgid "Pending" +msgstr "Pending" + +msgid "Delete file" +msgstr "Delete file" + +msgid "or" +msgstr "or" + +msgid "This is a Metadata-only record." +msgstr "This is a Metadata-only record." + +msgid "Metadata-only record" +msgstr "Metadata-only record" + +msgid "Disable files for this record" +msgstr "Disable files for this record" + +msgid "Storage available" +msgstr "Storage available" + +msgid "{{length}} out of {{maxfiles}} files" +msgstr "{{length}} out of {{maxfiles}} files" + +msgid "out of" +msgstr "out of" + +msgid "Add identifier" +msgstr "Add identifier" + +msgid "Identifier" +msgstr "Identifier" + +msgid "Scheme" +msgstr "Scheme" + +msgid "Do you already have a {{pidLabel}} for this upload?" +msgstr "Do you already have a {{pidLabel}} for this upload?" + +msgid "Yes" +msgstr "Yes" + +msgid "No" +msgstr "No" + +msgid "Search for languages..." +msgstr "Search for languages..." + +msgid "Search for a language by name (e.g \"eng\", \"fr\" or \"Polish\")" +msgstr "Search for a language by name (e.g \"eng\", \"fr\" or \"Polish\")" + +msgid "Add standard" +msgstr "Add standard" + +msgid "Add custom" +msgstr "Add custom" + +msgid "Read more" +msgstr "Read more" + +msgid "Title is a required field." +msgstr "Title is a required field." + +msgid "Link must be a valid URL" +msgstr "Link must be a valid URL" + +msgid "Add {{mode}} license" +msgstr "Add {{mode}} license" + +msgid "Change {{mode}} license" +msgstr "Change {{mode}} license" + +msgid "Recommended" +msgstr "Recommended" + +msgid "Data" +msgstr "Data" + +msgid "Software" +msgstr "Software" + +msgid "License title" +msgstr "License title" + +msgid "Link" +msgstr "Link" + +msgid "License link" +msgstr "License link" + +msgid "Add license" +msgstr "Add license" + +msgid "Change license" +msgstr "Change license" + +msgid "" +"In case your upload was already published elsewhere, please use the date of " +"the first publication. Format: YYYY-MM-DD, YYYY-MM, or YYYY. For intervals " +"use DATE/DATE, e.g. 1939/1945." +msgstr "" +"In case your upload was already published elsewhere, please use the date of " +"the first publication. Format: YYYY-MM-DD, YYYY-MM, or YYYY. For intervals " +"use DATE/DATE, e.g. 1939/1945." + +msgid "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD for intervals. MM and DD are optional." +msgstr "YYYY-MM-DD or YYYY-MM-DD/YYYY-MM-DD for intervals. MM and DD are optional." + +msgid "" +"The publisher is used to formulate the citation, so consider the prominence " +"of the role." +msgstr "" +"The publisher is used to formulate the citation, so consider the prominence " +"of the role." + +msgid "Add reference" +msgstr "Add reference" + +msgid "Reference string" +msgstr "Reference string" + +msgid "" +"Specify identifiers of related works. Supported identifiers include DOI, " +"Handle, ARK, PURL, ISSN, ISBN, PubMed ID, PubMed Central ID, ADS " +"Bibliographic Code, arXiv, Life Science Identifiers (LSID), EAN-13, ISTC, " +"URNs, and URLs." +msgstr "" +"Specify identifiers of related works. Supported identifiers include DOI, " +"Handle, ARK, PURL, ISSN, ISBN, PubMed ID, PubMed Central ID, ADS " +"Bibliographic Code, arXiv, Life Science Identifiers (LSID), EAN-13, ISTC, " +"URNs, and URLs." + +msgid "Add related work" +msgstr "Add related work" + +msgid "Relation" +msgstr "Relation" + +msgid "Suggest from" +msgstr "Suggest from" + +msgid "Search for a subject by name" +msgstr "Search for a subject by name" + +msgid "Add titles" +msgstr "Add titles" + +msgid "" +"Mostly relevant for software and dataset uploads. A semantic version string " +"is preferred see<1> semver.org, but any version string is accepted." +msgstr "" +"Mostly relevant for software and dataset uploads. A semantic version string " +"is preferred see<1> semver.org, but any version string is accepted." \ No newline at end of file diff --git a/invenio_rdm_records/cli.py b/invenio_rdm_records/cli.py index ed15a6942..211c2004e 100644 --- a/invenio_rdm_records/cli.py +++ b/invenio_rdm_records/cli.py @@ -2,6 +2,7 @@ # # Copyright (C) 2019-2022 CERN. # Copyright (C) 2019-2022 Northwestern University. +# Copyright (C) 2023 California Institute of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -25,8 +26,6 @@ from invenio_search.engine import dsl, search from invenio_search.utils import build_alias_name -from invenio_rdm_records.proxies import current_rdm_records, current_rdm_records_service - from .fixtures import FixturesEngine from .fixtures.demo import ( create_fake_community, @@ -41,6 +40,7 @@ create_demo_record, get_authenticated_identity, ) +from .proxies import current_rdm_records, current_rdm_records_service from .utils import get_or_create_user COMMUNITY_OWNER_EMAIL = "community@demo.org" @@ -91,7 +91,13 @@ def records(user_email, n_records): for _ in range(n_records): fake_data = create_fake_record() - create_demo_record.delay(user.id, fake_data, publish=True) + create_file = False + if not current_app.config.get("RDM_ALLOW_METADATA_ONLY_RECORDS"): + create_file = True + fake_data["files"]["enabled"] = True + create_demo_record.delay( + user.id, fake_data, publish=True, create_file=create_file + ) click.secho("Demo records task submitted...", fg="green") @@ -280,6 +286,25 @@ def create_fixtures(): click.secho("Created required fixtures!", fg="green") +@rdm_records.command("add-to-fixture") +@click.argument("fixture") +@with_appcontext +def add_to_fixture(fixture): + """Add or update new entries to existing fixture. + + Takes a argument of a vocabulary + name (e.g. contributorsroles). + + Example: + pipenv run invenio rdm-records add-to-fixture contributorsroles + """ + click.secho("Adding or updating entries to fixtures...", fg="green") + + FixturesEngine(system_identity).add_to(fixture) + + click.secho("Sent all entry additions and updates to celery!", fg="green") + + @rdm_records.command("rebuild-index") @with_appcontext def rebuild_index(): @@ -312,6 +337,10 @@ def rebuild_index(): rec_service = current_rdm_records.records_service rec_service.rebuild_index(identity=system_identity) + click.secho("Reindexing OAI sets...", fg="green") + oaipmh_service = current_rdm_records.oaipmh_server_service + oaipmh_service.rebuild_index(identity=system_identity) + click.secho("Reindexed records and vocabularies!", fg="green") diff --git a/invenio_rdm_records/collections/__init__.py b/invenio_rdm_records/collections/__init__.py new file mode 100644 index 000000000..5ec831f0b --- /dev/null +++ b/invenio_rdm_records/collections/__init__.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collections entrypoint.""" + +from .errors import CollectionNotFound, CollectionTreeNotFound, LogoNotFoundError +from .models import Collection, CollectionTree +from .searchapp import search_app_context + +__all__ = ( + "Collection", + "CollectionNotFound", + "CollectionTree", + "CollectionTreeNotFound", + "LogoNotFoundError", + "search_app_context", +) diff --git a/invenio_rdm_records/collections/api.py b/invenio_rdm_records/collections/api.py new file mode 100644 index 000000000..10a686935 --- /dev/null +++ b/invenio_rdm_records/collections/api.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collections programmatic API.""" +from invenio_records.systemfields import ModelField +from luqum.parser import parser as luqum_parser +from werkzeug.utils import cached_property + +from .errors import CollectionNotFound, CollectionTreeNotFound, InvalidQuery +from .models import Collection as CollectionModel +from .models import CollectionTree as CollectionTreeModel + + +class Collection: + """Collection Object.""" + + model_cls = CollectionModel + + id = ModelField() + path = ModelField() + ctree_id = ModelField("collection_tree_id") + order = ModelField() + title = ModelField() + slug = ModelField() + depth = ModelField() + search_query = ModelField() + num_records = ModelField() + + def __init__(self, model=None, max_depth=2): + """Instantiate a Collection object.""" + self.model = model + self.max_depth = max_depth + + @classmethod + def validate_query(cls, query): + """Validate the collection query.""" + try: + luqum_parser.parse(query) + except Exception: + raise InvalidQuery() + + @classmethod + def create(cls, slug, title, query, ctree=None, parent=None, order=None, depth=2): + """Create a new collection.""" + _ctree = None + if parent: + path = f"{parent.path}{parent.id}," + _ctree = parent.collection_tree.model + elif ctree: + path = "," + _ctree = ctree if isinstance(ctree, int) else ctree.model + else: + raise ValueError("Either parent or ctree must be set.") + + Collection.validate_query(query) + return cls( + cls.model_cls.create( + slug=slug, + path=path, + title=title, + search_query=query, + order=order, + ctree_or_id=_ctree, + ), + depth, + ) + + @classmethod + def read(cls, *, id_=None, slug=None, ctree_id=None, depth=2): + """Read a collection by ID or slug. + + To read by slug, the collection tree ID must be provided. + """ + res = None + if id_: + res = cls(cls.model_cls.get(id_), depth) + elif slug and ctree_id: + res = cls(cls.model_cls.get_by_slug(slug, ctree_id), depth) + else: + raise ValueError( + "Either ID or slug and collection tree ID must be provided." + ) + + if res.model is None: + raise CollectionNotFound() + return res + + @classmethod + def read_many(cls, ids_, depth=2): + """Read many collections by ID.""" + return [cls(c, depth) for c in cls.model_cls.read_many(ids_)] + + @classmethod + def read_all(cls, depth=2): + """Read all collections.""" + return [cls(c, depth) for c in cls.model_cls.read_all()] + + def update(self, **kwargs): + """Update the collection.""" + if "search_query" in kwargs: + Collection.validate_query(kwargs["search_query"]) + self.model.update(**kwargs) + return self + + def add(self, slug, title, query, order=None, depth=2): + """Add a subcollection to the collection.""" + return self.create( + slug=slug, title=title, query=query, parent=self, order=order, depth=depth + ) + + @property + def collection_tree(self): + """Get the collection tree object. + + Note: this will execute a query to the collection tree table. + """ + return CollectionTree(self.model.collection_tree) + + @cached_property + def community(self): + """Get the community object.""" + return self.collection_tree.community + + @property + def query(self): + """Get the collection query.""" + import operator + from functools import reduce + + from invenio_search.engine import dsl + + queries = [dsl.Q("query_string", query=a.search_query) for a in self.ancestors] + queries.append(dsl.Q("query_string", query=self.search_query)) + return reduce(operator.and_, queries) + + @cached_property + def ancestors(self): + """Get the collection ancestors.""" + ids_ = self.split_path_to_ids() + if not ids_: + return [] + return Collection.read_many(ids_) + + @cached_property + def subcollections(self): + """Fetch descendants. + + If the max_depth is 1, fetch only direct descendants. + """ + if self.max_depth == 0: + return [] + + if self.max_depth == 1: + return self.get_children() + + return self.get_subcollections() + + @cached_property + def children(self): + """Fetch only direct descendants.""" + return self.get_children() + + def split_path_to_ids(self): + """Return the path as a list of integers.""" + if not self.model: + return None + return [int(part) for part in self.path.split(",") if part.strip()] + + def get_children(self): + """Get the collection first level (direct) children. + + More preformant query to retrieve descendants, executes an exact match query. + """ + if not self.model: + return None + res = self.model_cls.get_children(self.model) + return [type(self)(r) for r in res] + + def get_subcollections(self): + """Get the collection subcollections. + + This query executes a LIKE query on the path column. + """ + if not self.model: + return None + + res = self.model_cls.get_subcollections(self.model, self.max_depth) + return [type(self)(r) for r in res] + + def __repr__(self) -> str: + """Return a string representation of the collection.""" + if self.model: + return f"Collection {self.id} ({self.path})" + else: + return "Collection (None)" + + def __eq__(self, value: object) -> bool: + """Check if the value is equal to the collection.""" + return isinstance(value, Collection) and value.id == self.id + + +class CollectionTree: + """Collection Tree Object.""" + + model_cls = CollectionTreeModel + + id = ModelField("id") + title = ModelField("title") + slug = ModelField("slug") + community_id = ModelField("community_id") + order = ModelField("order") + community = ModelField("community") + collections = ModelField("collections") + + def __init__(self, model=None, max_depth=2): + """Instantiate a CollectionTree object.""" + self.model = model + self.max_depth = max_depth + + @classmethod + def create(cls, title, slug, community_id=None, order=None): + """Create a new collection tree.""" + return cls( + cls.model_cls.create( + title=title, slug=slug, community_id=community_id, order=order + ) + ) + + @classmethod + def resolve(cls, id_=None, slug=None, community_id=None): + """Resolve a CollectionTree.""" + res = None + if id_: + res = cls(cls.model_cls.get(id_)) + elif slug and community_id: + res = cls(cls.model_cls.get_by_slug(slug, community_id)) + else: + raise ValueError("Either ID or slug and community ID must be provided.") + + if res.model is None: + raise CollectionTreeNotFound() + return res + + @cached_property + def collections(self): + """Get the collections under this tree.""" + root_collections = CollectionTreeModel.get_collections(self.model, 1) + return [Collection(c, self.max_depth) for c in root_collections] + + @classmethod + def get_community_trees(cls, community_id, depth=2): + """Get all the collection trees for a community.""" + return [cls(c, depth) for c in cls.model_cls.get_community_trees(community_id)] diff --git a/invenio_rdm_records/collections/errors.py b/invenio_rdm_records/collections/errors.py new file mode 100644 index 000000000..e14a457d9 --- /dev/null +++ b/invenio_rdm_records/collections/errors.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Errors for collections module.""" + + +class CollectionError(Exception): + """Base class for collection errors.""" + + +class CollectionNotFound(CollectionError): + """Collection not found error.""" + + +class CollectionTreeNotFound(CollectionError): + """Collection tree not found error.""" + + +class InvalidQuery(CollectionError): + """Query syntax is invalid.""" + + +class LogoNotFoundError(CollectionError): + """Logo not found error.""" diff --git a/invenio_rdm_records/collections/models.py b/invenio_rdm_records/collections/models.py new file mode 100644 index 000000000..5d9c0820a --- /dev/null +++ b/invenio_rdm_records/collections/models.py @@ -0,0 +1,197 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collections models.""" + +from invenio_communities.communities.records.models import CommunityMetadata +from invenio_db import db +from invenio_records.models import Timestamp +from sqlalchemy import UniqueConstraint +from sqlalchemy_utils.types import UUIDType + + +# CollectionTree Table +class CollectionTree(db.Model, Timestamp): + """Collection tree model.""" + + __tablename__ = "collections_collection_tree" + + __table_args__ = ( + # Unique constraint on slug and community_id. Slugs should be unique within a community. + UniqueConstraint( + "slug", + "community_id", + name="uq_collections_collection_tree_slug_community_id", + ), + ) + + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + community_id = db.Column( + UUIDType, + db.ForeignKey(CommunityMetadata.id, ondelete="SET NULL"), + nullable=True, + index=True, + ) + title = db.Column(db.String(255), nullable=False) + order = db.Column(db.Integer, nullable=True) + slug = db.Column(db.String(255), nullable=False) + + # Relationship to Collection + collections = db.relationship("Collection", back_populates="collection_tree") + community = db.relationship(CommunityMetadata, backref="collection_trees") + + @classmethod + def create(cls, title, slug, community_id=None, order=None): + """Create a new collection tree.""" + with db.session.begin_nested(): + collection_tree = cls( + title=title, slug=slug, community_id=community_id, order=order + ) + db.session.add(collection_tree) + return collection_tree + + @classmethod + def get(cls, id_): + """Get a collection tree by ID.""" + return cls.query.get(id_) + + @classmethod + def get_by_slug(cls, slug, community_id): + """Get a collection tree by slug.""" + return cls.query.filter( + cls.slug == slug, cls.community_id == community_id + ).one_or_none() + + @classmethod + def get_community_trees(cls, community_id): + """Get all collection trees of a community.""" + return cls.query.filter(cls.community_id == community_id).order_by(cls.order) + + @classmethod + def get_collections(cls, model, max_depth): + """Get collections under a tree.""" + return Collection.query.filter( + Collection.tree_id == model.id, Collection.depth < max_depth + ).order_by(Collection.path, Collection.order) + + +# Collection Table +class Collection(db.Model, Timestamp): + """Collection model. + + Indices: + - id + - collection_tree_id + - path + - slug + """ + + __tablename__ = "collections_collection" + __table_args__ = ( + # Unique constraint on slug and tree_id. Slugs should be unique within a tree. + UniqueConstraint( + "slug", "tree_id", name="uq_collections_collection_slug_tree_id" + ), + ) + + id = db.Column(db.Integer, primary_key=True, autoincrement=True) + slug = db.Column(db.String(255), nullable=False) + path = db.Column(db.Text, nullable=False, index=True) + tree_id = db.Column( + db.Integer, db.ForeignKey("collections_collection_tree.id"), nullable=False + ) + title = db.Column(db.String(255), nullable=False) + search_query = db.Column("query", db.Text, nullable=False) + order = db.Column(db.Integer, nullable=True) + # TODO index depth + depth = db.Column(db.Integer, nullable=False) + num_records = db.Column(db.Integer, nullable=False, default=0) + + # Relationship to CollectionTree + collection_tree = db.relationship("CollectionTree", back_populates="collections") + + @classmethod + def create(cls, slug, path, title, search_query, ctree_or_id, **kwargs): + """Create a new collection.""" + depth = len([int(part) for part in path.split(",") if part.strip()]) + with db.session.begin_nested(): + if isinstance(ctree_or_id, CollectionTree): + collection = cls( + slug=slug, + path=path, + title=title, + search_query=search_query, + collection_tree=ctree_or_id, + depth=depth, + **kwargs, + ) + elif isinstance(ctree_or_id, int): + collection = cls( + slug=slug, + path=path, + title=title, + search_query=search_query, + tree_id=ctree_or_id, + depth=depth, + **kwargs, + ) + else: + raise ValueError( + "Either `collection_tree` or `collection_tree_id` must be provided." + ) + db.session.add(collection) + return collection + + @classmethod + def get(cls, id_): + """Get a collection by ID.""" + return cls.query.get(id_) + + @classmethod + def get_by_slug(cls, slug, tree_id): + """Get a collection by slug.""" + return cls.query.filter(cls.slug == slug, cls.tree_id == tree_id).one_or_none() + + @classmethod + def read_many(cls, ids_): + """Get many collections by ID.""" + return cls.query.filter(cls.id.in_(ids_)).order_by(cls.path, cls.order) + + @classmethod + def read_all(cls): + """Get all collections. + + The collections are ordered by ``path`` and ``order``, which means: + + - By path: the collections are ordered in a breadth-first manner (first come the root collection, then the next level, and so on) + - By order: between the same level collections, they are ordered by the specified order field. + """ + return cls.query.order_by(cls.path, cls.order) + + def update(self, **kwargs): + """Update a collection.""" + for key, value in kwargs.items(): + setattr(self, key, value) + + @classmethod + def get_children(cls, model): + """Get children collections of a collection.""" + return cls.query.filter( + cls.path == f"{model.path}{model.id},", cls.tree_id == model.tree_id + ).order_by(cls.path, cls.order) + + @classmethod + def get_subcollections(cls, model, max_depth): + """Get subcollections of a collection. + + This query will return all subcollections of a collection up to a certain depth. + It can be used for max_depth=1, however it is more efficient to use get_children. + """ + return cls.query.filter( + cls.path.like(f"{model.path}{model.id},%"), + cls.tree_id == model.tree_id, + cls.depth < model.depth + max_depth, + ).order_by(cls.path, cls.order) diff --git a/invenio_rdm_records/collections/resources/__init__.py b/invenio_rdm_records/collections/resources/__init__.py new file mode 100644 index 000000000..d9b40da79 --- /dev/null +++ b/invenio_rdm_records/collections/resources/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collection resource module.""" diff --git a/invenio_rdm_records/collections/resources/config.py b/invenio_rdm_records/collections/resources/config.py new file mode 100644 index 000000000..581dfea71 --- /dev/null +++ b/invenio_rdm_records/collections/resources/config.py @@ -0,0 +1,50 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collection resource config.""" + +from flask_resources import ( + HTTPJSONException, + JSONSerializer, + ResourceConfig, + ResponseHandler, + create_error_handler, +) +from invenio_records_resources.resources.records.args import SearchRequestArgsSchema +from invenio_records_resources.resources.records.headers import etag_headers +from marshmallow.fields import Integer + +from invenio_rdm_records.resources.serializers import UIJSONSerializer + +from ..errors import CollectionNotFound + + +class CollectionsResourceConfig(ResourceConfig): + """Configuration for the Collection resource.""" + + blueprint_name = "collections" + url_prefix = "/collections" + + routes = { + "search-records": "//records", + } + + request_view_args = {"id": Integer()} + request_search_args = SearchRequestArgsSchema + error_handlers = { + CollectionNotFound: create_error_handler( + HTTPJSONException( + code=404, + description="Collection was not found.", + ) + ), + } + response_handlers = { + "application/json": ResponseHandler(JSONSerializer(), headers=etag_headers), + "application/vnd.inveniordm.v1+json": ResponseHandler( + UIJSONSerializer(), headers=etag_headers + ), + } diff --git a/invenio_rdm_records/collections/resources/resource.py b/invenio_rdm_records/collections/resources/resource.py new file mode 100644 index 000000000..2b505e184 --- /dev/null +++ b/invenio_rdm_records/collections/resources/resource.py @@ -0,0 +1,43 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collection resource.""" + +from flask import g +from flask_resources import Resource, resource_requestctx, response_handler, route +from invenio_records_resources.resources.records.resource import ( + request_search_args, + request_view_args, +) + + +class CollectionsResource(Resource): + """Collection resource.""" + + def __init__(self, config, service): + """Instantiate the resource.""" + super().__init__(config) + self.service = service + + def create_url_rules(self): + """Create the URL rules for the record resource.""" + routes = self.config.routes + return [ + route("GET", routes["search-records"], self.search_records), + ] + + @request_view_args + @request_search_args + @response_handler(many=True) + def search_records(self): + """Search records in a collection.""" + id_ = resource_requestctx.view_args["id"] + records = self.service.search_collection_records( + g.identity, + id_, + params=resource_requestctx.args, + ) + return records.to_dict(), 200 diff --git a/invenio_rdm_records/collections/searchapp.py b/invenio_rdm_records/collections/searchapp.py new file mode 100644 index 000000000..2a05e26b1 --- /dev/null +++ b/invenio_rdm_records/collections/searchapp.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collection search app helpers for React-SearchKit.""" + + +from functools import partial + +from flask import current_app +from invenio_search_ui.searchconfig import search_app_config + + +def search_app_context(): + """Search app context.""" + return { + "search_app_collection_config": partial( + search_app_config, + config_name="RDM_SEARCH", + available_facets=current_app.config["RDM_FACETS"], + sort_options=current_app.config["RDM_SORT_OPTIONS"], + headers={"Accept": "application/vnd.inveniordm.v1+json"}, + pagination_options=(10, 25, 50, 100), + ) + } diff --git a/invenio_rdm_records/collections/services/__init__.py b/invenio_rdm_records/collections/services/__init__.py new file mode 100644 index 000000000..10d60ea45 --- /dev/null +++ b/invenio_rdm_records/collections/services/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collection service module.""" diff --git a/invenio_rdm_records/collections/services/config.py b/invenio_rdm_records/collections/services/config.py new file mode 100644 index 000000000..62d6264a4 --- /dev/null +++ b/invenio_rdm_records/collections/services/config.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collections service config.""" + +from invenio_communities.permissions import CommunityPermissionPolicy +from invenio_records_resources.services import ConditionalLink +from invenio_records_resources.services.base import ServiceConfig +from invenio_records_resources.services.base.config import ConfiguratorMixin, FromConfig + +from .links import CollectionLink +from .results import CollectionItem, CollectionList +from .schema import CollectionSchema + + +class CollectionServiceConfig(ServiceConfig, ConfiguratorMixin): + """Collections service configuration.""" + + result_item_cls = CollectionItem + result_list_cls = CollectionList + service_id = "collections" + permission_policy_cls = FromConfig( + "COMMUNITIES_PERMISSION_POLICY", default=CommunityPermissionPolicy + ) + schema = CollectionSchema + + links_item = { + "search": CollectionLink("/api/collections/{id}/records"), + "self_html": ConditionalLink( + cond=lambda coll, ctx: coll.community, + if_=CollectionLink( + "/communities/{community}/collections/{tree}/{collection}" + ), + else_=CollectionLink("/collections/{tree}/{collection}"), + ), + } diff --git a/invenio_rdm_records/collections/services/links.py b/invenio_rdm_records/collections/services/links.py new file mode 100644 index 000000000..4ba6f0064 --- /dev/null +++ b/invenio_rdm_records/collections/services/links.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collection links.""" + +from invenio_records_resources.services.base.links import Link, LinksTemplate + + +class CollectionLinkstemplate(LinksTemplate): + """Templates for generating links for a collection object.""" + + def __init__(self, links=None, context=None): + """Initialize the links template.""" + super().__init__(links, context) + + +class CollectionLink(Link): + """Link variables setter for Collection links.""" + + @staticmethod + def vars(collection, vars): + """Variables for the URI template.""" + vars.update( + { + "community": collection.community.slug, + "tree": collection.collection_tree.slug, + "collection": collection.slug, + "id": collection.id, + } + ) diff --git a/invenio_rdm_records/collections/services/results.py b/invenio_rdm_records/collections/services/results.py new file mode 100644 index 000000000..21906002c --- /dev/null +++ b/invenio_rdm_records/collections/services/results.py @@ -0,0 +1,207 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collections service items.""" + +from invenio_records_resources.services.base.results import ( + ServiceItemResult, + ServiceListResult, +) + + +class CollectionItem(ServiceItemResult): + """Collection item.""" + + def __init__(self, identity, collection, schema, links_tpl): + """Instantiate a Collection object. + + Optionally pass a community to cache its information in the collection's instance. + """ + self._identity = identity + self._collection = collection + self._schema = schema + self._links_tpl = links_tpl + + def to_dict(self): + """Serialize the collection to a dictionary and add links. + + It will output a dictionary with the following structure: + + .. code-block:: python + + { + "root": 1, + 1: { + "id": 1, + "title": "Root", + "slug": "root", + "depth": 0, + "order": 1, + "query": "", + "num_records": 0, + "children": [2], + "links": { + "self_html": "..." + "search": "..." + } + }, + 2: { + "id": 2, + "title": "Subcollection", + "slug": "subcollection", + "depth": 1, + "order": 1, + "query": "", + "num_records": 0, + "children": [], + "links": { + "self_html": "..." + "search": "..." + } + } + """ + res = { + "root": self._collection.id, + self._collection.id: { + **self._schema.dump( + self._collection, context={"identity": self._identity} + ), + "children": list(), + "links": self._links_tpl.expand(self._identity, self._collection), + }, + } + + for _c in self._collection.subcollections: + if _c.id not in res: + # Add the subcollection to the dictionary + res[_c.id] = { + **self._schema.dump(_c, context={"identity": self._identity}), + "children": list(), + "links": self._links_tpl.expand(self._identity, _c), + } + # Find the parent ID from the collection's path (last valid ID in the path) + path_parts = _c.split_path_to_ids() + if path_parts: + parent_id = path_parts[-1] + # Add the collection as a child of its parent + res[parent_id]["children"].append(_c.id) + + # Add breadcrumbs, sorted from root to leaf and taking into account the `order` field + res[self._collection.id]["breadcrumbs"] = self.breadcrumbs + + return res + + @property + def breadcrumbs(self): + """Get the collection ancestors.""" + res = [] + for anc in self._collection.ancestors: + _a = { + "title": anc.title, + "link": self._links_tpl.expand(self._identity, anc)["self_html"], + } + res.append(_a) + res.append( + { + "title": self._collection.title, + "link": self._links_tpl.expand(self._identity, self._collection)[ + "self_html" + ], + } + ) + return res + + @property + def query(self): + """Get the collection query.""" + return self._collection.query + + +class CollectionList(ServiceListResult): + """Collection list item.""" + + def __init__(self, identity, collections, schema, links_tpl, links_item_tpl): + """Instantiate a Collection list item.""" + self._identity = identity + self._collections = collections + self._schema = schema + self._links_tpl = links_tpl + self._links_item_tpl = links_item_tpl + + def to_dict(self): + """Serialize the collection list to a dictionary.""" + res = [] + for collection in self._collections: + _r = CollectionItem( + self._identity, collection, self._schema, self._links_item_tpl + ).to_dict() + res.append(_r) + return res + + def __iter__(self): + """Iterate over the collections.""" + return ( + CollectionItem(self._identity, x, self._schema, self._links_item_tpl) + for x in self._collections + ) + + +class CollectionTreeItem: + """Collection tree item.""" + + def __init__(self, identity, tree, collection_link_tpl, collection_schema): + """Instantiate a Collection tree object.""" + self._identity = identity + self._tree = tree + self._collection_link_tpl = collection_link_tpl + self._collection_schema = collection_schema + + def to_dict(self): + """Serialize the collection tree to a dictionary.""" + return { + "title": self._tree.title, + "slug": self._tree.slug, + "community_id": str(self._tree.community_id), + "order": self._tree.order, + "id": self._tree.id, + "collections": [ + CollectionItem( + self._identity, + c, + self._collection_schema, + self._collection_link_tpl, + ).to_dict() + for c in self._tree.collections + ], + } + + +class CollectionTreeList: + """Collection tree list item.""" + + def __init__(self, identity, trees, collection_schema, collection_link_tpl): + """Instantiate a Collection tree list item.""" + self._identity = identity + self._trees = trees + self._collection_link_tpl = collection_link_tpl + self._collection_schema = collection_schema + + def to_dict(self): + """Serialize the collection tree list to a dictionary.""" + res = {} + for tree in self._trees: + # Only root collections + res[tree.id] = CollectionTreeItem( + self._identity, + tree, + self._collection_schema, + self._collection_link_tpl, + ).to_dict() + return res + + def __iter__(self): + """Iterate over the collection trees.""" + return iter(self._trees) diff --git a/invenio_rdm_records/collections/services/schema.py b/invenio_rdm_records/collections/services/schema.py new file mode 100644 index 000000000..f2368368b --- /dev/null +++ b/invenio_rdm_records/collections/services/schema.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collections schema.""" + +from marshmallow import Schema, fields + + +class CollectionSchema(Schema): + """Collection schema.""" + + slug = fields.Str() + title = fields.Str() + depth = fields.Int(dump_only=True) + order = fields.Int() + id = fields.Int(dump_only=True) + num_records = fields.Int() + search_query = fields.Str(load_only=True) diff --git a/invenio_rdm_records/collections/services/service.py b/invenio_rdm_records/collections/services/service.py new file mode 100644 index 000000000..d7b312ba4 --- /dev/null +++ b/invenio_rdm_records/collections/services/service.py @@ -0,0 +1,211 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collections service.""" + +import os + +from flask import current_app, url_for +from invenio_records_resources.services import ServiceSchemaWrapper +from invenio_records_resources.services.base import Service +from invenio_records_resources.services.uow import ModelCommitOp, unit_of_work + +from invenio_rdm_records.proxies import ( + current_community_records_service, + current_rdm_records_service, +) + +from ..api import Collection, CollectionTree +from ..errors import LogoNotFoundError +from .links import CollectionLinkstemplate +from .results import CollectionItem, CollectionList, CollectionTreeList + + +class CollectionsService(Service): + """Collections service.""" + + def __init__(self, config): + """Instantiate the service with the given config.""" + self.config = config + + collection_cls = Collection + + @property + def collection_schema(self): + """Get the collection schema.""" + return ServiceSchemaWrapper(self, schema=self.config.schema) + + @property + def links_item_tpl(self): + """Get the item links template.""" + return CollectionLinkstemplate( + links=self.config.links_item, + context={ + "permission_policy_cls": self.config.permission_policy_cls, + }, + ) + + @unit_of_work() + def create( + self, identity, community_id, tree_slug, slug, title, query, uow=None, **kwargs + ): + """Create a new collection. + + The created collection will be added to the collection tree as a root collection (no parent). + If a parent is needed, use the ``add`` method. + """ + self.require_permission(identity, "update", community_id=community_id) + ctree = CollectionTree.resolve(slug=tree_slug, community_id=community_id) + collection = self.collection_cls.create( + slug=slug, title=title, query=query, ctree=ctree, **kwargs + ) + uow.register(ModelCommitOp(collection.model)) + return CollectionItem( + identity, collection, self.collection_schema, self.links_item_tpl + ) + + def read( + self, + identity=None, + *, + id_=None, + slug=None, + community_id=None, + tree_slug=None, + depth=2, + **kwargs, + ): + """Get a collection by ID or slug. + + To resolve by slug, the collection tree ID and community ID must be provided. + """ + if id_: + collection = self.collection_cls.read(id_=id_, depth=depth) + elif slug and tree_slug and community_id: + ctree = CollectionTree.resolve(slug=tree_slug, community_id=community_id) + collection = self.collection_cls.read( + slug=slug, ctree_id=ctree.id, depth=depth + ) + else: + raise ValueError( + "ID or slug and tree_slug and community_id must be provided." + ) + + if collection.community: + self.require_permission( + identity, "read", community_id=collection.community.id + ) + + return CollectionItem( + identity, + collection, + self.collection_schema, + self.links_item_tpl, + ) + + def list_trees(self, identity, community_id, **kwargs): + """Get the trees of a community.""" + self.require_permission(identity, "read", community_id=community_id) + if not community_id: + raise ValueError("Community ID must be provided.") + res = CollectionTree.get_community_trees(community_id, **kwargs) + return CollectionTreeList( + identity, res, self.links_item_tpl, self.collection_schema + ) + + @unit_of_work() + def add(self, identity, collection, slug, title, query, uow=None, **kwargs): + """Add a subcollection to a collection.""" + self.require_permission( + identity, "update", community_id=collection.community.id + ) + new_collection = self.collection_cls.create( + parent=collection, slug=slug, title=title, query=query, **kwargs + ) + uow.register(ModelCommitOp(new_collection.model)) + return CollectionItem( + identity, new_collection, self.collection_schema, self.links_item_tpl + ) + + @unit_of_work() + def update(self, identity, collection_or_id, data=None, uow=None): + """Update a collection.""" + if isinstance(collection_or_id, int): + collection = self.collection_cls.read(id_=collection_or_id) + else: + collection = collection_or_id + self.require_permission( + identity, "update", community_id=collection.community.id + ) + + data = data or {} + + valid_data, errors = self.collection_schema.load( + data, context={"identity": identity}, raise_errors=True + ) + + res = collection.update(**valid_data) + + uow.register(ModelCommitOp(res.model)) + + return CollectionItem( + identity, collection, self.collection_schema, self.links_item_tpl + ) + + def read_logo(self, identity, slug): + """Read a collection logo. + + TODO: implement logos as files in the database. For now, we just check if the file exists as a static file. + """ + logo_path = f"images/collections/{slug}.jpg" + _exists = os.path.exists(os.path.join(current_app.static_folder, logo_path)) + if _exists: + return url_for("static", filename=logo_path) + raise LogoNotFoundError() + + def read_many(self, identity, ids_, depth=2): + """Get many collections.""" + self.require_permission(identity, "read") + + if ids_ is None: + raise ValueError("IDs must be provided.") + + if ids_ == []: + raise ValueError("Use read_all to get all collections.") + + res = self.collection_cls.read_many(ids_, depth=depth) + return CollectionList( + identity, res, self.collection_schema, None, self.links_item_tpl + ) + + def read_all(self, identity, depth=2): + """Get all collections.""" + self.require_permission(identity, "read") + res = self.collection_cls.read_all(depth=depth) + return CollectionList( + identity, res, self.collection_schema, None, self.links_item_tpl + ) + + def search_collection_records(self, identity, collection_or_id, params=None): + """Search records in a collection.""" + params = params or {} + + if isinstance(collection_or_id, int): + collection = self.collection_cls.read(id_=collection_or_id) + else: + collection = collection_or_id + + if collection.community: + res = current_community_records_service.search( + identity, + community_id=collection.community.id, + extra_filter=collection.query, + ) + else: + raise NotImplementedError( + "Search for collections without community not supported." + ) + return res diff --git a/invenio_rdm_records/collections/tasks.py b/invenio_rdm_records/collections/tasks.py new file mode 100644 index 000000000..951c9d2d2 --- /dev/null +++ b/invenio_rdm_records/collections/tasks.py @@ -0,0 +1,31 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Collections celery tasks.""" + +from celery import shared_task +from flask import current_app +from invenio_access.permissions import system_identity + +from invenio_rdm_records.proxies import current_rdm_records + + +@shared_task(ignore_result=True) +def update_collections_size(): + """Calculate and update the size of all the collections.""" + collections_service = current_rdm_records.collections_service + res = collections_service.read_all(system_identity, depth=0) + for citem in res: + try: + collection = citem._collection + res = collections_service.search_collection_records( + system_identity, collection + ) + collections_service.update( + system_identity, collection, data={"num_records": res.total} + ) + except Exception as e: + current_app.logger.exception(str(e)) diff --git a/invenio_rdm_records/config.py b/invenio_rdm_records/config.py index 1c525bea2..9ea88dddd 100644 --- a/invenio_rdm_records/config.py +++ b/invenio_rdm_records/config.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2019-2023 CERN. +# Copyright (C) 2019-2024 CERN. # Copyright (C) 2019 Northwestern University. -# Copyright (C) 2021-2023 Graz University of Technology. +# Copyright (C) 2021-2024 Graz University of Technology. # Copyright (C) 2023 TU Wien. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -13,13 +13,25 @@ from datetime import timedelta import idutils +from invenio_access.permissions import system_permission from invenio_i18n import lazy_gettext as _ +from invenio_records_resources.services.records.queryparser import QueryParser +from invenio_records_resources.services.records.queryparser.transformer import ( + RestrictedTerm, + RestrictedTermValue, + SearchFieldTransformer, +) +import invenio_rdm_records.services.communities.moderation as communities_moderation +from invenio_rdm_records.services.components.verified import UserModerationHandler + +from . import tokens from .resources.serializers import DataCite43JSONSerializer from .services import facets from .services.config import lock_edit_published_files from .services.permissions import RDMRecordPermissionPolicy from .services.pids import providers +from .services.queryparser import word_internal_notes # Invenio-RDM-Records # =================== @@ -61,7 +73,7 @@ def always_valid(identifier): RDM_RECORDS_IDENTIFIERS_SCHEMES = { "ark": {"label": _("ARK"), "validator": idutils.is_ark, "datacite": "ARK"}, "arxiv": {"label": _("arXiv"), "validator": idutils.is_arxiv, "datacite": "arXiv"}, - "bibcode": { + "ads": { "label": _("Bibcode"), "validator": idutils.is_ads, "datacite": "bibcode", @@ -130,6 +142,12 @@ def always_valid(identifier): RDM_ALLOW_RESTRICTED_RECORDS = True """Allow users to set restricted/private records.""" +# +# Record communities +# +RDM_COMMUNITY_REQUIRED_TO_PUBLISH = False +"""Enforces at least one community per record.""" + # # Search configuration # @@ -173,6 +191,11 @@ def always_valid(identifier): "field": "subjects.subject", }, }, + # subject_nested is deprecated and should be removed. + # subject_combined does require a pre-existing change to indexed documents, + # so it's unclear if a direct replacement is right. + # Keeping it around until v13 might be better. On the flipside it is an incorrect + # facet... "subject_nested": { "facet": facets.subject_nested, "ui": { @@ -182,6 +205,15 @@ def always_valid(identifier): }, }, }, + "subject_combined": { + "facet": facets.subject_combined, + "ui": { + "field": "subjects.scheme", + "childAgg": { + "field": "subjects.subject", + }, + }, + }, } RDM_SEARCH_SORT_BY_VERIFIED = False @@ -230,6 +262,7 @@ def always_valid(identifier): """ + RDM_SEARCH = { "facets": ["access_status", "file_type", "resource_type"], "sort": [ @@ -240,6 +273,18 @@ def always_valid(identifier): "mostviewed", "mostdownloaded", ], + "query_parser_cls": QueryParser.factory( + mapping={ + "internal_notes.note": RestrictedTerm(system_permission), + "internal_notes.id": RestrictedTerm(system_permission), + "internal_notes.added_by": RestrictedTerm(system_permission), + "internal_notes.timestamp": RestrictedTerm(system_permission), + "_exists_": RestrictedTermValue( + system_permission, word=word_internal_notes + ), + }, + tree_transformer_cls=SearchFieldTransformer, + ), } """Record search configuration. @@ -345,11 +390,13 @@ def always_valid(identifier): "label": _("DOI"), "validator": idutils.is_doi, "normalizer": idutils.normalize_doi, + "is_enabled": providers.DataCitePIDProvider.is_enabled, }, "oai": { "providers": ["oai"], "required": True, "label": _("OAI"), + "is_enabled": providers.OAIPIDProvider.is_enabled, }, } """The configured persistent identifiers for records. @@ -377,10 +424,11 @@ def always_valid(identifier): "doi": { "providers": ["datacite"], "required": True, - "condition": lambda record: record.pids["doi"]["provider"] == "datacite", + "condition": lambda rec: rec.pids.get("doi", {}).get("provider") == "datacite", "label": _("Concept DOI"), "validator": idutils.is_doi, "normalizer": idutils.normalize_doi, + "is_enabled": providers.DataCitePIDProvider.is_enabled, }, } """Persistent identifiers for parent record.""" @@ -521,10 +569,100 @@ def make_doi(prefix, record): RDM_RESOURCE_ACCESS_TOKEN_REQUEST_ARG = "resource_access_token" """URL argument to provide resource access token.""" +RDM_RESOURCE_ACCESS_TOKENS_SUBJECT_SCHEMA = tokens.resource_access.SubjectSchema +"""Resource access token Marshmallow schema for parsing JWT subject.""" RDM_LOCK_EDIT_PUBLISHED_FILES = lock_edit_published_files -"""Lock editing already published files (enforce record versioning).""" +"""Lock editing already published files (enforce record versioning). + + signature to implement: + def lock_edit_published_files(service, identity, record=None, draft=None): +""" + +RDM_CONTENT_MODERATION_HANDLERS = [ + UserModerationHandler(), +] +"""Records content moderation handlers.""" + +RDM_COMMUNITY_CONTENT_MODERATION_HANDLERS = [ + communities_moderation.UserModerationHandler(), +] +"""Community content moderation handlers.""" # Feature flag to enable/disable user moderation RDM_USER_MODERATION_ENABLED = False """Flag to enable creation of user moderation requests on specific user actions.""" + +RDM_RECORDS_MAX_FILES_COUNT = 100 +"""Max amount of files allowed to upload in the deposit form.""" + +RDM_RECORDS_MAX_MEDIA_FILES_COUNT = 100 +"""Max amount of media files allowed to upload in the deposit form.""" + +RDM_MEDIA_FILES_DEFAULT_QUOTA_SIZE = 10 * (10**9) # 10 GB +"""Default size for a bucket in bytes for media files.""" + +RDM_MEDIA_FILES_DEFAULT_MAX_FILE_SIZE = 10 * (10**9) # 10 GB +"""Default maximum file size for a bucket in bytes for media files.""" + +# For backwards compatibility, +# FILES_REST_DEFAULT_QUOTA_SIZE & FILES_REST_DEFAULT_MAX_FILE_SIZE +# are used respectively instead +RDM_FILES_DEFAULT_QUOTA_SIZE = None +"""Default size for a bucket in bytes for files.""" + +RDM_FILES_DEFAULT_MAX_FILE_SIZE = None +"""Default maximum file size for a bucket in bytes for files.""" + + +RDM_DATACITE_FUNDER_IDENTIFIERS_PRIORITY = ("ror", "doi", "grid", "isni", "gnd") +"""Priority of funder identifiers types to be used for DataCite serialization.""" + +RDM_IIIF_MANIFEST_FORMATS = [ + "gif", + "jp2", + "jpeg", + "jpg", + "png", + "tif", + "tiff", +] +"""Formats to be included in the IIIF Manifest.""" + +# +# IIIF Tiles configuration +# +IIIF_TILES_GENERATION_ENABLED = False +"""Enable generating pyramidal TIFF tiles for uploaded images.""" + +IIIF_TILES_VALID_EXTENSIONS = [ + "jp2", + "jpeg", + "jpg", + "pdf", # We can still generate tiles for the first page of a PDF + "png", + "png", + "tif", + "tiff", +] +"""Valid (normalized) file extensions for generating tiles.""" + +IIIF_TILES_STORAGE_BASE_PATH = "images/" +"""Base path for storing IIIF tiles. + +Relative paths are resolved against the application instance path. +""" + +IIIF_TILES_CONVERTER_PARAMS = { + "compression": "jpeg", + "Q": 90, + "tile_width": 256, + "tile_height": 256, +} +"""Parameters to be passed to the tiles converter.""" + +RDM_RECORDS_RESTRICTION_GRACE_PERIOD = timedelta(days=30) +"""Grace period for changing record access to restricted.""" + +RDM_RECORDS_ALLOW_RESTRICTION_AFTER_GRACE_PERIOD = False +"""Whether record access restriction is allowed after the grace period or not.""" diff --git a/invenio_rdm_records/contrib/codemeta/custom_fields.py b/invenio_rdm_records/contrib/codemeta/custom_fields.py index 02f2efffd..55c691ffc 100644 --- a/invenio_rdm_records/contrib/codemeta/custom_fields.py +++ b/invenio_rdm_records/contrib/codemeta/custom_fields.py @@ -23,7 +23,7 @@ CODEMETA_NAMESPACE = { # CodeMeta - "code": "https://codemeta.github.io", + "code": "https://codemeta.github.io/terms/#", } @@ -35,9 +35,12 @@ "error_messages": {"validate": "You must provide a valid URL."}, }, ), - KeywordCF(name="code:programmingLanguage"), - KeywordCF(name="code:runtimePlatform"), - KeywordCF(name="code:operatingSystem"), + VocabularyCF( + name="code:programmingLanguage", + vocabulary_id="code:programmingLanguages", + multiple=True, + dump_options=False, + ), VocabularyCF( name="code:developmentStatus", vocabulary_id="code:developmentStatus", @@ -53,6 +56,7 @@ field="code:codeRepository", ui_widget="Input", props=dict( + is_identifier=True, label="Repository URL", icon="linkify", description="URL or link where the code repository is hosted.", @@ -60,32 +64,17 @@ ), dict( field="code:programmingLanguage", - ui_widget="Input", + ui_widget="AutocompleteDropdown", props=dict( label="Programming language", icon="code", description="Repository's programming language.", - placeholder="Python ...", - ), - ), - dict( - field="code:runtimePlatform", - ui_widget="Input", - props=dict( - label="Runtime platform", - icon="cog", - description="Repository runtime platform or script interpreter dependencies.", - placeholder="Java v1, Python2.3, .Net Framework 3.0 ...", - ), - ), - dict( - field="code:operatingSystem", - ui_widget="Input", - props=dict( - label="Supported operating system", - icon="desktop", - description="Supported operating systems.", - placeholder="Windows 7, OSX 10.6, Android 1.6 ...", + placeholder="e.g. Python ...", + autocompleteFrom="/api/vocabularies/code:programmingLanguages", + autocompleteFromAcceptHeader="application/vnd.inveniordm.v1+json", + required=False, + multiple=True, + clearable=True, ), ), dict( diff --git a/invenio_rdm_records/contrib/codemeta/processors.py b/invenio_rdm_records/contrib/codemeta/processors.py new file mode 100644 index 000000000..289e7ee3a --- /dev/null +++ b/invenio_rdm_records/contrib/codemeta/processors.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Codemeta processors.""" + +from flask_resources.serializers import DumperMixin + + +class CodemetaDumper(DumperMixin): + """Software fields dumper for CodeMeta.""" + + def post_dump(self, data, original=None, **kwargs): + """Adds the codemeta information.""" + _original = original or {} + custom_fields = _original.get("custom_fields", {}) + repository = custom_fields.get("code:codeRepository") + prog_language = custom_fields.get("code:programmingLanguage") + status = custom_fields.get("code:developmentStatus") + + if repository: + data["codeRepository"] = repository + + if prog_language: + data["programmingLanguage"] = " ".join( + [pl["title"]["en"] for pl in prog_language] + ) + + if status: + data["developmentStatus"] = status["title"]["en"] + + return data diff --git a/invenio_rdm_records/contrib/imprint/__init__.py b/invenio_rdm_records/contrib/imprint/__init__.py index 29d713f85..dd409ed94 100644 --- a/invenio_rdm_records/contrib/imprint/__init__.py +++ b/invenio_rdm_records/contrib/imprint/__init__.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Imprint contrib module.""" + from .custom_fields import ( IMPRINT_CUSTOM_FIELDS, IMPRINT_CUSTOM_FIELDS_UI, diff --git a/invenio_rdm_records/contrib/imprint/custom_fields.py b/invenio_rdm_records/contrib/imprint/custom_fields.py index 74d306a77..83b48fc6f 100644 --- a/invenio_rdm_records/contrib/imprint/custom_fields.py +++ b/invenio_rdm_records/contrib/imprint/custom_fields.py @@ -32,7 +32,7 @@ def field(self): "isbn": SanitizedUnicode( validate=is_isbn, error_messages={ - "validator_failed": _("Please provide a valid ISBN.") + "validator_failed": [_("Please provide a valid ISBN.")] }, ), "pages": SanitizedUnicode(), @@ -59,7 +59,7 @@ def mapping(self): IMPRINT_NAMESPACE = { # Imprint - "imprint": "", + "imprint": None, } @@ -73,11 +73,11 @@ def mapping(self): "ui_widget": "Imprint", "template": "imprint.html", "props": { - "label": _("Imprint"), + "label": _("Imprint (Book, Chapter, or Report)"), "place": { "label": _("Place"), "placeholder": _("e.g. city, country"), - "description": _("Place where the imprint was published"), + "description": _("Place where the book or report was published"), }, "isbn": { "label": _("ISBN"), @@ -85,19 +85,18 @@ def mapping(self): "description": _("International Standard Book Number"), }, "title": { - "label": _("Book title"), + "label": _("Book or report title"), "placeholder": "", "description": _( - "Title of the book or report which this upload is part of." + "Title of the book or report which this upload is part of" ), }, "pages": { - "label": _("Pages"), - "placeholder": "", + "label": _("Pagination"), + "placeholder": _("e.g. 15-23 or 158"), "description": "", }, "icon": "book", - "description": "Imprint", }, } ], diff --git a/invenio_rdm_records/contrib/imprint/processors.py b/invenio_rdm_records/contrib/imprint/processors.py index 578eaa814..244973027 100644 --- a/invenio_rdm_records/contrib/imprint/processors.py +++ b/invenio_rdm_records/contrib/imprint/processors.py @@ -38,3 +38,39 @@ def post_dump(self, data, original=None, **kwargs): data["ISBN"] = isbn return data + + +class ImprintMarcXMLDumper(DumperMixin): + """Dumper for MarcXML serialization of 'Imprint' custom field.""" + + def post_dump(self, data, original=None, **kwargs): + """Adds serialized imprint data to the input data under the '773' key.""" + _original = original or {} + custom_fields = _original.get("custom_fields", {}) + imprint_data = custom_fields.get("imprint:imprint", {}) + + if not imprint_data: + return data + + items_dict = {} + field_keys = { + "t": imprint_data.get("title"), + "z": imprint_data.get("isbn"), + "g": imprint_data.get("pages"), + "a": imprint_data.get("place"), + "b": _original.get("metadata", {}).get("publication_date"), + } + for key, value in field_keys.items(): + if value: + items_dict[key] = value + + if not items_dict: + return data + + code = "773 " + existing_data = data.get(code) + if existing_data and isinstance(existing_data, list): + data[code].append(items_dict) + else: + data[code] = [items_dict] + return data diff --git a/invenio_rdm_records/contrib/journal/custom_fields.py b/invenio_rdm_records/contrib/journal/custom_fields.py index 5f7e97d8c..9277213fc 100644 --- a/invenio_rdm_records/contrib/journal/custom_fields.py +++ b/invenio_rdm_records/contrib/journal/custom_fields.py @@ -34,7 +34,7 @@ def field(self): "issn": SanitizedUnicode( validate=is_issn, error_messages={ - "validator_failed": _("Please provide a valid ISSN.") + "validator_failed": [_("Please provide a valid ISSN.")] }, ), } @@ -60,7 +60,7 @@ def mapping(self): JOURNAL_NAMESPACE = { # Journal - "journal": "", + "journal": None, } @@ -81,27 +81,27 @@ def mapping(self): "label": _("Title"), "placeholder": "", "description": _( - "Title of the journal on which the article was published" + "Title of the journal in which the article was published" ), }, "volume": { "label": _("Volume"), - "placeholder": "", + "placeholder": "e.g. 645", "description": "", }, "issue": { "label": _("Issue"), - "placeholder": "", + "placeholder": "e.g. 7", "description": "", }, "pages": { - "label": _("Pages"), - "placeholder": "", + "label": _("Page range or article number"), + "placeholder": "e.g. 15-23 or A29", "description": "", }, "issn": { "label": _("ISSN"), - "placeholder": "", + "placeholder": "e.g. 2077-9550", "description": _("International Standard Serial Number"), }, "icon": "newspaper outline", diff --git a/invenio_rdm_records/contrib/journal/processors.py b/invenio_rdm_records/contrib/journal/processors.py index ef9c0ff33..ed3a38434 100644 --- a/invenio_rdm_records/contrib/journal/processors.py +++ b/invenio_rdm_records/contrib/journal/processors.py @@ -108,19 +108,19 @@ def post_dump(self, data, original=None, **kwargs): "c": journal_data.get("pages"), "y": _original.get("metadata", {}).get("publication_date"), } - for key, field in field_keys.items(): - value = journal_data.get(field) + for key, value in field_keys.items(): if value: items_dict[key] = value if not items_dict: return data - # TODO in zenodo, journal field serializes to - # TODO code 909, C, 4 but that's not in the specification - code = "773 " - - data[code] = items_dict + code = "909C4" + existing_data = data.get(code) + if existing_data and isinstance(existing_data, list): + data[code].append(items_dict) + else: + data[code] = [items_dict] return data @@ -154,3 +154,35 @@ def post_dump(self, data, original=None, **kwargs): data["ISSN"] = issn return data + + +class JournalSchemaorgDumper(DumperMixin): + """Dumper for Schemaorg serialization of 'Journal' custom field.""" + + def post_dump(self, data, original=None, **kwargs): + """Adds serialized journal data to the input data.""" + _original = original or {} + custom_fields = _original.get("custom_fields", {}) + journal_data = custom_fields.get("journal:journal", {}) + + if not journal_data: + return data + + title = journal_data.get("title") + volume = journal_data.get("volume") + issue = journal_data.get("issue") + pages = journal_data.get("pages") + issn = journal_data.get("issn") + + if title: + data["container_title"] = title + if pages: + data["page"] = pages + if volume: + data["volume"] = volume + if issue: + data["issue"] = issue + if issn: + data["ISSN"] = issn + + return data diff --git a/invenio_rdm_records/contrib/thesis/__init__.py b/invenio_rdm_records/contrib/thesis/__init__.py index a45ccabb8..0fd146580 100644 --- a/invenio_rdm_records/contrib/thesis/__init__.py +++ b/invenio_rdm_records/contrib/thesis/__init__.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Thesis contrib module.""" + from .custom_fields import ( THESIS_CUSTOM_FIELDS, THESIS_CUSTOM_FIELDS_UI, diff --git a/invenio_rdm_records/contrib/thesis/custom_fields.py b/invenio_rdm_records/contrib/thesis/custom_fields.py index 92cab6974..797920e94 100644 --- a/invenio_rdm_records/contrib/thesis/custom_fields.py +++ b/invenio_rdm_records/contrib/thesis/custom_fields.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -10,12 +10,13 @@ - thesis.university """ + from invenio_i18n import lazy_gettext as _ from invenio_records_resources.services.custom_fields import TextCF THESIS_NAMESPACE = { # Thesis - "thesis": "", + "thesis": None, } THESIS_CUSTOM_FIELDS = [ diff --git a/invenio_rdm_records/ext.py b/invenio_rdm_records/ext.py index 7bb30baa0..be975dd37 100644 --- a/invenio_rdm_records/ext.py +++ b/invenio_rdm_records/ext.py @@ -1,36 +1,41 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2019-2023 CERN. +# Copyright (C) 2019-2024 CERN. # Copyright (C) 2019-2021 Northwestern University. # Copyright (C) 2022 Universität Hamburg. -# Copyright (C) 2023 Graz University of Technology. +# Copyright (C) 2023-2024 Graz University of Technology. # Copyright (C) 2023 TU Wien. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """DataCite-based data model for Invenio.""" + +from warnings import warn + +from flask import Blueprint from flask_iiif import IIIF from flask_principal import identity_loaded from invenio_records_resources.resources.files import FileResource -from invenio_records_resources.services import FileService - -from invenio_rdm_records.oaiserver.resources.config import OAIPMHServerResourceConfig -from invenio_rdm_records.oaiserver.resources.resources import OAIPMHServerResource -from invenio_rdm_records.oaiserver.services.config import OAIPMHServerServiceConfig -from invenio_rdm_records.oaiserver.services.services import OAIPMHServerService -from invenio_rdm_records.services.communities.service import RecordCommunitiesService -from invenio_rdm_records.services.community_inclusion.service import ( - CommunityInclusionService, -) from . import config +from .collections.resources.config import CollectionsResourceConfig +from .collections.resources.resource import CollectionsResource +from .collections.services.config import CollectionServiceConfig +from .collections.services.service import CollectionsService +from .oaiserver.resources.config import OAIPMHServerResourceConfig +from .oaiserver.resources.resources import OAIPMHServerResource +from .oaiserver.services.config import OAIPMHServerServiceConfig +from .oaiserver.services.services import OAIPMHServerService from .resources import ( IIIFResource, IIIFResourceConfig, RDMCommunityRecordsResource, RDMCommunityRecordsResourceConfig, RDMDraftFilesResourceConfig, + RDMGrantGroupAccessResourceConfig, + RDMGrantsAccessResource, + RDMGrantUserAccessResourceConfig, RDMParentGrantsResource, RDMParentGrantsResourceConfig, RDMParentRecordLinksResource, @@ -59,11 +64,14 @@ RecordAccessService, RecordRequestsService, ) +from .services.communities.service import RecordCommunitiesService +from .services.community_inclusion.service import CommunityInclusionService from .services.config import ( RDMMediaFileDraftServiceConfig, RDMMediaFileRecordServiceConfig, RDMRecordMediaFilesServiceConfig, ) +from .services.files import RDMFileService from .services.pids import PIDManager, PIDsService from .services.review.service import ReviewService from .utils import verify_token @@ -75,8 +83,6 @@ def on_identity_loaded(_, identity): verify_token(identity) -from flask import Blueprint - blueprint = Blueprint( "invenio_rdm_records", __name__, @@ -118,6 +124,8 @@ def init_config(self, app): k in supported_configurations or k.startswith("RDM_") or k.startswith("DATACITE_") + # TODO: This can likely be moved to a separate module + or k.startswith("IIIF_TILES_") ): app.config.setdefault(k, getattr(config, k)) @@ -125,6 +133,19 @@ def init_config(self, app): if not app.config.get("COMMUNITIES_NAMESPACES"): app.config["COMMUNITIES_NAMESPACES"] = app.config["RDM_NAMESPACES"] + if not app.config.get("RDM_FILES_DEFAULT_QUOTA_SIZE"): + warn( + "The configuration value 'RDM_FILES_DEFAULT_QUOTA_SIZE' is not set. In future, please set it " + "explicitly to define your quota size, or be aware that the default value used i.e. FILES_REST_DEFAULT_QUOTA_SIZE will be 10 * (10**9) (10 GB).", + DeprecationWarning, + ) + if not app.config.get("RDM_FILES_DEFAULT_MAX_FILE_SIZE"): + warn( + "The configuration value 'RDM_FILES_DEFAULT_MAX_FILE_SIZE' is not set. In future, please set it " + "explicitly to define your max file size, or be aware that the default value used i.e. FILES_REST_DEFAULT_MAX_FILE_SIZE will be 10 * (10**9) (10 GB).", + DeprecationWarning, + ) + self.fix_datacite_configs(app) def service_configs(self, app): @@ -141,6 +162,7 @@ class ServiceConfigs: record_communities = RDMRecordCommunitiesConfig.build(app) community_records = RDMCommunityRecordsConfig.build(app) record_requests = RDMRecordRequestsConfig.build(app) + collections = CollectionServiceConfig.build(app) return ServiceConfigs @@ -151,8 +173,8 @@ def init_services(self, app): # Services self.records_service = RDMRecordService( service_configs.record, - files_service=FileService(service_configs.file), - draft_files_service=FileService(service_configs.file_draft), + files_service=RDMFileService(service_configs.file), + draft_files_service=RDMFileService(service_configs.file_draft), access_service=RecordAccessService(service_configs.record), pids_service=PIDsService(service_configs.record, PIDManager), review_service=ReviewService(service_configs.record), @@ -160,8 +182,8 @@ def init_services(self, app): self.records_media_files_service = RDMRecordService( service_configs.record_with_media_files, - files_service=FileService(service_configs.media_file), - draft_files_service=FileService(service_configs.media_file_draft), + files_service=RDMFileService(service_configs.media_file), + draft_files_service=RDMFileService(service_configs.media_file_draft), pids_service=PIDsService(service_configs.record, PIDManager), ) @@ -186,6 +208,10 @@ def init_services(self, app): config=service_configs.oaipmh_server, ) + self.collections_service = CollectionsService( + config=service_configs.collections + ) + def init_resource(self, app): """Initialize resources.""" self.records_resource = RDMRecordResource( @@ -227,6 +253,16 @@ def init_resource(self, app): config=RDMParentGrantsResourceConfig.build(app), ) + self.grant_user_access_resource = RDMGrantsAccessResource( + service=self.records_service, + config=RDMGrantUserAccessResourceConfig.build(app), + ) + + self.grant_group_access_resource = RDMGrantsAccessResource( + service=self.records_service, + config=RDMGrantGroupAccessResourceConfig.build(app), + ) + # Record's communities self.record_communities_resource = RDMRecordCommunitiesResource( service=self.record_communities_service, @@ -244,6 +280,12 @@ def init_resource(self, app): config=RDMCommunityRecordsResourceConfig.build(app), ) + # Collections + self.collections_resource = CollectionsResource( + service=self.collections_service, + config=CollectionsResourceConfig, + ) + # OAI-PMH self.oaipmh_server_resource = OAIPMHServerResource( service=self.oaipmh_server_service, @@ -267,3 +309,41 @@ def fix_datacite_configs(self, app): for config_item in datacite_config_items: if config_item in app.config: app.config[config_item] = str(app.config[config_item]) + + +def finalize_app(app): + """Finalize app. + + NOTE: replace former @record_once decorator + """ + init(app) + + +def api_finalize_app(app): + """Finalize app for api. + + NOTE: replace former @record_once decorator + """ + init(app) + + +def init(app): + """Init app.""" + # Register services - cannot be done in extension because + # Invenio-Records-Resources might not have been initialized. + sregistry = app.extensions["invenio-records-resources"].registry + ext = app.extensions["invenio-rdm-records"] + sregistry.register(ext.records_service, service_id="records") + sregistry.register(ext.records_service.files, service_id="files") + sregistry.register(ext.records_service.draft_files, service_id="draft-files") + sregistry.register(ext.records_media_files_service, service_id="record-media-files") + sregistry.register(ext.records_media_files_service.files, service_id="media-files") + sregistry.register( + ext.records_media_files_service.draft_files, service_id="draft-media-files" + ) + sregistry.register(ext.oaipmh_server_service, service_id="oaipmh-server") + sregistry.register(ext.iiif_service, service_id="rdm-iiif") + # Register indexers + iregistry = app.extensions["invenio-indexer"].registry + iregistry.register(ext.records_service.indexer, indexer_id="records") + iregistry.register(ext.records_service.draft_indexer, indexer_id="records-drafts") diff --git a/invenio_rdm_records/fixtures/__init__.py b/invenio_rdm_records/fixtures/__init__.py index b18d3c6c7..05b2759c7 100644 --- a/invenio_rdm_records/fixtures/__init__.py +++ b/invenio_rdm_records/fixtures/__init__.py @@ -62,5 +62,18 @@ def run(self): create_demo_record, ).load() + def add_to(self, fixture): + """Run the fixture loading.""" + dir_ = Path(__file__).parent + app_data_folder = Path(current_app.instance_path) / "app_data" + data_folder = dir_ / "data" + + PrioritizedVocabulariesFixtures( + self._identity, + app_data_folder=app_data_folder, + pkg_data_folder=data_folder, + filename="vocabularies.yaml", + ).load(reload=fixture) + __all__ = ("FixturesEngine", "PrioritizedVocabulariesFixtures", "VocabulariesFixture") diff --git a/invenio_rdm_records/fixtures/data/vocabularies.yaml b/invenio_rdm_records/fixtures/data/vocabularies.yaml index 28fa6bfcb..cd4bb5218 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies.yaml @@ -1,10 +1,6 @@ affiliations: pid-type: aff - schemes: - - id: ROR - name: Research Organization Registry - uri: "https://ror.org/" - data-file: vocabularies/affiliations_ror.yaml + data-file: vocabularies/affiliations_ror.yaml creatorsroles: pid-type: crr data-file: vocabularies/roles.yaml @@ -56,3 +52,6 @@ awards: code:developmentStatus: pid-type: ds data-file: vocabularies/contrib/codemeta/development_status.yaml +code:programmingLanguages: + pid-type: pl + data-file: vocabularies/contrib/codemeta/programming_languages.yaml diff --git a/invenio_rdm_records/fixtures/data/vocabularies/affiliations_ror.yaml b/invenio_rdm_records/fixtures/data/vocabularies/affiliations_ror.yaml index 0c9a74e4e..aa46e54c1 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/affiliations_ror.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/affiliations_ror.yaml @@ -1,127 +1,337 @@ - acronym: CERN + country: CH + country_name: Switzerland id: 01ggx4157 + identifiers: + - identifier: 01ggx4157 + scheme: ror + - identifier: grid.9132.9 + scheme: grid + - identifier: 0000 0001 2156 142X + scheme: isni + location_name: Geneva name: European Organization for Nuclear Research + status: active title: - de: "\_Europ\xE4ische Organisation f\xFCr Kernforschung" + de: Europäische Organisation für Kernforschung en: European Organization for Nuclear Research - fr: "Organisation europ\xE9enne pour la recherche nucl\xE9aire" - identifiers: - - scheme: ror - identifier: 01ggx4157 + fr: Organisation européenne pour la recherche nucléaire + types: + - facility + - funder - acronym: BNL + aliases: + - Office of Science Brookhaven National Laboratory + - United States Department of Energy Office of Science Brookhaven National Laboratory + country: US + country_name: United States id: 02ex6cf31 + identifiers: + - identifier: 02ex6cf31 + scheme: ror + - identifier: grid.202665.5 + scheme: grid + - identifier: 0000 0001 2188 4229 + scheme: isni + location_name: Upton name: Brookhaven National Laboratory + status: active title: en: Brookhaven National Laboratory + types: + - facility + - funder +- aliases: + - Eko-Konnect Research and Education Initiative + country: NG + country_name: Nigeria + id: 047h63042 identifiers: - - scheme: ror - identifier: 02ex6cf31 -- id: 047h63042 + - identifier: 047h63042 + scheme: ror + - identifier: grid.503642.6 + scheme: grid + location_name: Lagos name: Eko-Konnect + status: active title: en: Eko-Konnect - identifiers: - - scheme: ror - identifier: 047h63042 + types: + - nonprofit - acronym: HZDR + country: DE + country_name: Germany id: 01zy2cs03 + identifiers: + - identifier: 01zy2cs03 + scheme: ror + - identifier: grid.40602.30 + scheme: grid + - identifier: 0000 0001 2158 0612 + scheme: isni + location_name: Dresden name: Helmholtz-Zentrum Dresden-Rossendorf + status: active title: - en: Helmholtz-Zentrum Dresden-Rossendorf - identifiers: - - scheme: ror - identifier: 01zy2cs03 + de: Helmholtz-Zentrum Dresden-Rossendorf + types: + - facility + - funder - acronym: INFN + country: IT + country_name: Italy id: 005ta0471 - name: National Institute for Nuclear Physics + identifiers: + - identifier: 005ta0471 + scheme: ror + - identifier: grid.6045.7 + scheme: grid + - identifier: 0000 0004 1757 5281 + scheme: isni + location_name: Rome + name: Istituto Nazionale di Fisica Nucleare + status: active title: en: National Institute for Nuclear Physics it: Istituto Nazionale di Fisica Nucleare - identifiers: - - scheme: ror - identifier: 005ta0471 + types: + - government + - funder - acronym: JRC + country: BE + country_name: Belgium id: 04j5wtv36 + identifiers: + - identifier: 04j5wtv36 + scheme: ror + - identifier: grid.489339.c + scheme: grid + - identifier: 0000 0004 0635 247X + scheme: isni + location_name: Brussels name: Directorate-General Joint Research Centre + status: active title: de: Gemeinsame Forschungsstelle en: Directorate-General Joint Research Centre fr: Centre commun de recherche - identifiers: - - scheme: ror - identifier: 04j5wtv36 + types: + - government + - funder - acronym: NU + country: US + country_name: United States id: 000e0be47 + identifiers: + - identifier: 000e0be47 + scheme: ror + - identifier: grid.16753.36 + scheme: grid + - identifier: 0000 0001 2299 3507 + scheme: isni + location_name: Evanston name: Northwestern University + status: active title: en: Northwestern University + types: + - education + - funder +- country: 'NO' + country_name: Norway + id: 04mcehe57 identifiers: - - scheme: ror - identifier: 000e0be47 -- id: 04mcehe57 + - identifier: 04mcehe57 + scheme: ror + - identifier: grid.459209.3 + scheme: grid + location_name: Trondheim name: Tind Technologies (Norway) + status: active title: en: Tind Technologies (Norway) - identifiers: - - scheme: ror - identifier: 04mcehe57 + types: + - company - acronym: ULAKBIM + country: TR + country_name: Turkey id: 017k52s24 + identifiers: + - identifier: 017k52s24 + scheme: ror + - identifier: grid.509244.e + scheme: grid + - identifier: 0000 0004 0574 2652 + scheme: isni + location_name: Ankara name: Turkish Academic Network and Information Center + status: active title: en: Turkish Academic Network and Information Center - tr: "Ulusal Akademik A\u011F ve Bilgi Merkezi" + tr: Ulusal Akademik Ağ ve Bilgi Merkezi + types: + - facility +- country: AT + country_name: Austria + id: 00d7xrm67 identifiers: - - scheme: ror - identifier: 017k52s24 -- id: 00d7xrm67 + - identifier: 00d7xrm67 + scheme: ror + - identifier: grid.410413.3 + scheme: grid + - identifier: 0000 0001 2294 748X + scheme: isni + location_name: Graz name: Graz University of Technology + status: active title: - de: "Technische Universit\xE4t Graz" + de: Technische Universität Graz en: Graz University of Technology - identifiers: - - scheme: ror - identifier: 00d7xrm67 + types: + - education + - funder - acronym: TUW + aliases: + - Technische Universität Wien + - Vienna University of Technology + country: AT + country_name: Austria id: 04d836q62 + identifiers: + - identifier: 04d836q62 + scheme: ror + - identifier: grid.5329.d + scheme: grid + - identifier: 0000 0004 1937 0669 + scheme: isni + location_name: Vienna name: TU Wien + status: active title: - de: "Technische Universit\xE4t Wien" - en: TU Wien - identifiers: - - scheme: ror - identifier: 04d836q62 + de: TU Wien + types: + - education + - funder - acronym: UHH + aliases: + - University of Hamburg + country: DE + country_name: Germany id: 00g30e956 - name: "Universit\xE4t Hamburg" - title: - en: University of Hamburg identifiers: - - scheme: ror - identifier: 00g30e956 + - identifier: 00g30e956 + scheme: ror + - identifier: grid.9026.d + scheme: grid + - identifier: 0000 0001 2287 2617 + scheme: isni + location_name: Hamburg + name: Universität Hamburg + status: active + title: + de: Universität Hamburg + en: Hamburg University + types: + - education + - funder - acronym: WWU + aliases: + - Universitaet Muenster + - University of Muenster + - Westfälische Wilhelms-Universität Münster + country: DE + country_name: Germany id: 00pd74e08 - name: "University of M\xFCnster" - title: - de: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - en: "University of M\xFCnster" identifiers: - - scheme: ror - identifier: 00pd74e08 + - identifier: 00pd74e08 + scheme: ror + - identifier: grid.5949.1 + scheme: grid + - identifier: 0000 0001 2172 9288 + scheme: isni + location_name: Münster + name: University of Münster + status: active + title: + de: Universität Münster + en: University of Münster + types: + - education + - funder - acronym: WACREN + country: GH + country_name: Ghana id: 006rqpt26 + identifiers: + - identifier: 006rqpt26 + scheme: ror + - identifier: grid.463700.6 + scheme: grid + location_name: Accra name: West and Central African Research and Education Network + status: active title: en: West and Central African Research and Education Network - identifiers: - - scheme: ror - identifier: 006rqpt26 + types: + - other - acronym: CIT + aliases: + - Caltech + country: US + country_name: United States id: 05dxps055 + identifiers: + - identifier: 05dxps055 + scheme: ror + - identifier: grid.20861.3d + scheme: grid + - identifier: 0000 0001 0706 8890 + scheme: isni + location_name: Pasadena name: California Institute of Technology + status: active title: en: California Institute of Technology - es: "Instituto de Tecnolog\xEDa de California" + es: Instituto de Tecnología de California + types: + - education + - funder +- acronym: KTH + aliases: + - Royal Institute of Technology + country: SE + country_name: Sweden + id: 026vcq606 identifiers: - - scheme: ror - identifier: 05dxps055 + - identifier: 026vcq606 + scheme: ror + - identifier: grid.5037.1 + scheme: grid + - identifier: 0000 0001 2158 1746 + scheme: isni + location_name: Stockholm + name: KTH Royal Institute of Technology + status: active + title: + en: KTH Royal Institute of Technology + fi: Kuninkaallinen teknillinen korkeakoulu + sv: Kungliga Tekniska högskolan + types: + - education + - funder +- acronym: DF + aliases: + - datafutures + country: DE + country_name: Germany + id: 01653xx13 + identifiers: + - identifier: 01653xx13 + scheme: ror + location_name: Leipzig + name: Data Futures GmbH + status: active + title: + de: Data Futures GmbH + types: + - nonprofit diff --git a/invenio_rdm_records/fixtures/data/vocabularies/community_types.yaml b/invenio_rdm_records/fixtures/data/vocabularies/community_types.yaml index 8326aaf59..8bb5bdbee 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/community_types.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/community_types.yaml @@ -1,16 +1,20 @@ - id: "organization" title: en: "Organization" + sv: "Organisation" de: "Organisation" - id: "event" title: en: "Event" + sv: "Evenemang" de: "Event" - id: "topic" title: en: "Topic" + sv: "Tema" de: "Thema" - id: "project" title: en: "Project" + sv: "Projekt" de: "Projekt" diff --git a/invenio_rdm_records/fixtures/data/vocabularies/contrib/codemeta/development_status.yaml b/invenio_rdm_records/fixtures/data/vocabularies/contrib/codemeta/development_status.yaml index 616594480..3bb03181c 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/contrib/codemeta/development_status.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/contrib/codemeta/development_status.yaml @@ -3,40 +3,56 @@ - id: "concept" title: en: "Concept" + sv: "Koncept" description: en: "Minimal or no implementation has been done yet, or the repository is only intended to be a limited example, demo, or proof-of-concept." + sv: "Minimal eller ingen implementation har skett hittills, eller så är repositoriet enbart avsett att vara ett begränsat exempel, demo eller proof-of-concept." - id: "wip" title: en: "Wip" + sv: "Pågående arbete" description: en: "Initial development is in progress, but there has not yet been a stable, usable release suitable for the public." + sv: "Initial utveckling pågår, men det finns ännu ingen stabil och användbar publik version tillgänglig." - id: "suspended" title: en: "Suspended" + sv: "Avstannad" description: en: "Initial development has started, but there has not yet been a stable, usable release; work has been stopped for the time being but the author(s) intend on resuming work." + sv: "Initial utveckling har påbörjats, men det finns ännu ingen stabil och användbar publik version tillgänglig; arbetet har avstannat för stunden men utvecklarna avser att fortsätta arbetet." - id: "abandoned" title: en: "Abandoned" + sv: "Övergivet" description: en: "Initial development has started, but there has not yet been a stable, usable release; the project has been abandoned and the author(s) do not intend on continuing development." + sv: "Initial utveckling har påbörjats, men det finns ännu ingen stabil och användbar publik version tillgänglig; arbetet har övergivits och utvecklarna avser inte att fortsätta arbetet." - id: "active" title: en: "Active" + sv: "Aktiv" description: en: "The project has reached a stable, usable state and is being actively developed." + sv: "Projektet har nått ett stabilt, användbart stadie och utvecklas aktivt." - id: "inactive" title: en: "Inactive" + sv: "Inaktiv" description: - en: "The project has reacaed a stable, usable state but is no longer being actively developed; support/maintenance will be provided as time allows." + en: "The project has reached a stable, usable state but is no longer being actively developed; support/maintenance will be provided as time allows." + sv: "Projektet har nått ett stabilt, användbart stadie men utvecklas inte längre aktivt; support/underhåll kommer ske i den mån det är möjligt." - id: "unsupported" title: en: "Unsupported" + sv: "Ej stödd" description: en: "The project has reached a stable, usable state but the author(s) have ceased all work on it. A new maintainer may be desired." + sv: "Projektet har nått ett stabilt, användbart stadie men allt utvecklingsarbete har upphört. En ny förvaltare kan vara önskvärt." - id: "moved" title: en: "Moved" + sv: "Flyttat" description: en: "The project has been moved to a new location, and the version at that location should be considered authoritative. This status should be accompanied by a new URL." + sv: "Projektet har flyttat till en ny plats, och versionen på den platsen bör anses vederhäftig. Denna status bör åtföljas av en ny URL." diff --git a/invenio_rdm_records/fixtures/data/vocabularies/contrib/codemeta/programming_languages.yaml b/invenio_rdm_records/fixtures/data/vocabularies/contrib/codemeta/programming_languages.yaml new file mode 100644 index 000000000..3b4cd13d6 --- /dev/null +++ b/invenio_rdm_records/fixtures/data/vocabularies/contrib/codemeta/programming_languages.yaml @@ -0,0 +1,4236 @@ +- id: 1c_enterprise + props: + language_id: '0' + popular: 'False' + title: + en: 1C Enterprise +- id: 2_dimensional_array + props: + language_id: '387204628' + popular: 'False' + title: + en: 2-Dimensional Array +- id: 4d + props: + language_id: '577529595' + popular: 'False' + title: + en: 4D +- id: abap + props: + language_id: '1' + popular: 'False' + title: + en: ABAP +- id: abap_cds + props: + language_id: '452681853' + popular: 'False' + title: + en: ABAP CDS +- id: abnf + props: + language_id: '429' + popular: 'False' + title: + en: ABNF +- id: ags_script + props: + language_id: '2' + popular: 'False' + title: + en: AGS Script +- id: aidl + props: + language_id: '451700185' + popular: 'False' + title: + en: AIDL +- id: al + props: + language_id: '658971832' + popular: 'False' + title: + en: AL +- id: ampl + props: + language_id: '3' + popular: 'False' + title: + en: AMPL +- id: antlr + props: + language_id: '4' + popular: 'False' + title: + en: ANTLR +- id: api_blueprint + props: + language_id: '5' + popular: 'False' + title: + en: API Blueprint +- id: apl + props: + language_id: '6' + popular: 'False' + title: + en: APL +- id: asl + props: + language_id: '124996147' + popular: 'False' + title: + en: ASL +- id: asn.1 + props: + language_id: '7' + popular: 'False' + title: + en: ASN.1 +- id: asp.net + props: + language_id: '564186416' + popular: 'False' + title: + en: ASP.NET +- id: ats + props: + language_id: '9' + popular: 'False' + title: + en: ATS +- id: actionscript + props: + language_id: '10' + popular: 'False' + title: + en: ActionScript +- id: ada + props: + language_id: '11' + popular: 'False' + title: + en: Ada +- id: adblock_filter_list + props: + language_id: '884614762' + popular: 'False' + title: + en: Adblock Filter List +- id: adobe_font_metrics + props: + language_id: '147198098' + popular: 'False' + title: + en: Adobe Font Metrics +- id: agda + props: + language_id: '12' + popular: 'False' + title: + en: Agda +- id: alloy + props: + language_id: '13' + popular: 'False' + title: + en: Alloy +- id: alpine_abuild + props: + language_id: '14' + popular: 'False' + title: + en: Alpine Abuild +- id: altium_designer + props: + language_id: '187772328' + popular: 'False' + title: + en: Altium Designer +- id: angelscript + props: + language_id: '389477596' + popular: 'False' + title: + en: AngelScript +- id: ant_build_system + props: + language_id: '15' + popular: 'False' + title: + en: Ant Build System +- id: antlers + props: + language_id: '1067292663' + popular: 'False' + title: + en: Antlers +- id: apacheconf + props: + language_id: '16' + popular: 'False' + title: + en: ApacheConf +- id: apex + props: + language_id: '17' + popular: 'False' + title: + en: Apex +- id: apollo_guidance_computer + props: + language_id: '18' + popular: 'False' + title: + en: Apollo Guidance Computer +- id: applescript + props: + language_id: '19' + popular: 'False' + title: + en: AppleScript +- id: arc + props: + language_id: '20' + popular: 'False' + title: + en: Arc +- id: asciidoc + props: + language_id: '22' + popular: 'False' + title: + en: AsciiDoc +- id: aspectj + props: + language_id: '23' + popular: 'False' + title: + en: AspectJ +- id: assembly + props: + language_id: '24' + popular: 'False' + title: + en: Assembly +- id: astro + props: + language_id: '578209015' + popular: 'False' + title: + en: Astro +- id: asymptote + props: + language_id: '591605007' + popular: 'False' + title: + en: Asymptote +- id: augeas + props: + language_id: '25' + popular: 'False' + title: + en: Augeas +- id: autohotkey + props: + language_id: '26' + popular: 'False' + title: + en: AutoHotkey +- id: autoit + props: + language_id: '27' + popular: 'False' + title: + en: AutoIt +- id: avro_idl + props: + language_id: '785497837' + popular: 'False' + title: + en: Avro IDL +- id: awk + props: + language_id: '28' + popular: 'False' + title: + en: Awk +- id: basic + props: + language_id: '28923963' + popular: 'False' + title: + en: BASIC +- id: ballerina + props: + language_id: '720859680' + popular: 'False' + title: + en: Ballerina +- id: batchfile + props: + language_id: '29' + popular: 'False' + title: + en: Batchfile +- id: beef + props: + language_id: '545626333' + popular: 'False' + title: + en: Beef +- id: befunge + props: + language_id: '30' + popular: 'False' + title: + en: Befunge +- id: berry + props: + language_id: '121855308' + popular: 'False' + title: + en: Berry +- id: bibtex + props: + language_id: '982188347' + popular: 'False' + title: + en: BibTeX +- id: bicep + props: + language_id: '321200902' + popular: 'False' + title: + en: Bicep +- id: bikeshed + props: + language_id: '1055528081' + popular: 'False' + title: + en: Bikeshed +- id: bison + props: + language_id: '31' + popular: 'False' + title: + en: Bison +- id: bitbake + props: + language_id: '32' + popular: 'False' + title: + en: BitBake +- id: blade + props: + language_id: '33' + popular: 'False' + title: + en: Blade +- id: blitzbasic + props: + language_id: '34' + popular: 'False' + title: + en: BlitzBasic +- id: blitzmax + props: + language_id: '35' + popular: 'False' + title: + en: BlitzMax +- id: bluespec + props: + language_id: '36' + popular: 'False' + title: + en: Bluespec +- id: bluespec_bh + props: + language_id: '641580358' + popular: 'False' + title: + en: Bluespec BH +- id: boo + props: + language_id: '37' + popular: 'False' + title: + en: Boo +- id: boogie + props: + language_id: '955017407' + popular: 'False' + title: + en: Boogie +- id: brainfuck + props: + language_id: '38' + popular: 'False' + title: + en: Brainfuck +- id: brighterscript + props: + language_id: '943571030' + popular: 'False' + title: + en: BrighterScript +- id: brightscript + props: + language_id: '39' + popular: 'False' + title: + en: Brightscript +- id: browserslist + props: + language_id: '153503348' + popular: 'False' + title: + en: Browserslist +- id: c + props: + language_id: '41' + popular: 'False' + title: + en: C +- id: c# + props: + language_id: '42' + popular: 'False' + title: + en: C# +- id: c++ + props: + language_id: '43' + popular: 'False' + title: + en: C++ +- id: c_objdump + props: + language_id: '44' + popular: 'False' + title: + en: C-ObjDump +- id: c2hs_haskell + props: + language_id: '45' + popular: 'False' + title: + en: C2hs Haskell +- id: cap_cds + props: + language_id: '390788699' + popular: 'False' + title: + en: CAP CDS +- id: cil + props: + language_id: '29176339' + popular: 'False' + title: + en: CIL +- id: clips + props: + language_id: '46' + popular: 'False' + title: + en: CLIPS +- id: cmake + props: + language_id: '47' + popular: 'False' + title: + en: CMake +- id: cobol + props: + language_id: '48' + popular: 'False' + title: + en: COBOL +- id: codeowners + props: + language_id: '321684729' + popular: 'False' + title: + en: CODEOWNERS +- id: collada + props: + language_id: '49' + popular: 'False' + title: + en: COLLADA +- id: cson + props: + language_id: '424' + popular: 'False' + title: + en: CSON +- id: css + props: + language_id: '50' + popular: 'False' + title: + en: CSS +- id: csv + props: + language_id: '51' + popular: 'False' + title: + en: CSV +- id: cue + props: + language_id: '356063509' + popular: 'False' + title: + en: CUE +- id: cweb + props: + language_id: '657332628' + popular: 'False' + title: + en: CWeb +- id: cabal_config + props: + language_id: '677095381' + popular: 'False' + title: + en: Cabal Config +- id: cadence + props: + language_id: '270184138' + popular: 'False' + title: + en: Cadence +- id: cairo + props: + language_id: '620599567' + popular: 'False' + title: + en: Cairo +- id: cameligo + props: + language_id: '829207807' + popular: 'False' + title: + en: CameLIGO +- id: cap'n_proto + props: + language_id: '52' + popular: 'False' + title: + en: Cap'n Proto +- id: cartocss + props: + language_id: '53' + popular: 'False' + title: + en: CartoCSS +- id: ceylon + props: + language_id: '54' + popular: 'False' + title: + en: Ceylon +- id: chapel + props: + language_id: '55' + popular: 'False' + title: + en: Chapel +- id: charity + props: + language_id: '56' + popular: 'False' + title: + en: Charity +- id: checksums + props: + language_id: '372063053' + popular: 'False' + title: + en: Checksums +- id: chuck + props: + language_id: '57' + popular: 'False' + title: + en: ChucK +- id: circom + props: + language_id: '1042332086' + popular: 'False' + title: + en: Circom +- id: cirru + props: + language_id: '58' + popular: 'False' + title: + en: Cirru +- id: clarion + props: + language_id: '59' + popular: 'False' + title: + en: Clarion +- id: clarity + props: + language_id: '91493841' + popular: 'False' + title: + en: Clarity +- id: classic_asp + props: + language_id: '8' + popular: 'False' + title: + en: Classic ASP +- id: clean + props: + language_id: '60' + popular: 'False' + title: + en: Clean +- id: click + props: + language_id: '61' + popular: 'False' + title: + en: Click +- id: clojure + props: + language_id: '62' + popular: 'False' + title: + en: Clojure +- id: closure_templates + props: + language_id: '357046146' + popular: 'False' + title: + en: Closure Templates +- id: cloud_firestore_security_rules + props: + language_id: '407996372' + popular: 'False' + title: + en: Cloud Firestore Security Rules +- id: conll_u + props: + language_id: '421026389' + popular: 'False' + title: + en: CoNLL-U +- id: codeql + props: + language_id: '424259634' + popular: 'False' + title: + en: CodeQL +- id: coffeescript + props: + language_id: '63' + popular: 'False' + title: + en: CoffeeScript +- id: coldfusion + props: + language_id: '64' + popular: 'False' + title: + en: ColdFusion +- id: coldfusion_cfc + props: + language_id: '65' + popular: 'False' + title: + en: ColdFusion CFC +- id: common_lisp + props: + language_id: '66' + popular: 'False' + title: + en: Common Lisp +- id: common_workflow_language + props: + language_id: '988547172' + popular: 'False' + title: + en: Common Workflow Language +- id: component_pascal + props: + language_id: '67' + popular: 'False' + title: + en: Component Pascal +- id: cool + props: + language_id: '68' + popular: 'False' + title: + en: Cool +- id: coq + props: + language_id: '69' + popular: 'False' + title: + en: Coq +- id: cpp_objdump + props: + language_id: '70' + popular: 'False' + title: + en: Cpp-ObjDump +- id: creole + props: + language_id: '71' + popular: 'False' + title: + en: Creole +- id: crystal + props: + language_id: '72' + popular: 'False' + title: + en: Crystal +- id: csound + props: + language_id: '73' + popular: 'False' + title: + en: Csound +- id: csound_document + props: + language_id: '74' + popular: 'False' + title: + en: Csound Document +- id: csound_score + props: + language_id: '75' + popular: 'False' + title: + en: Csound Score +- id: cuda + props: + language_id: '77' + popular: 'False' + title: + en: Cuda +- id: cue_sheet + props: + language_id: '942714150' + popular: 'False' + title: + en: Cue Sheet +- id: curry + props: + language_id: '439829048' + popular: 'False' + title: + en: Curry +- id: cycript + props: + language_id: '78' + popular: 'False' + title: + en: Cycript +- id: cypher + props: + language_id: '850806976' + popular: 'False' + title: + en: Cypher +- id: cython + props: + language_id: '79' + popular: 'False' + title: + en: Cython +- id: d + props: + language_id: '80' + popular: 'False' + title: + en: D +- id: d_objdump + props: + language_id: '81' + popular: 'False' + title: + en: D-ObjDump +- id: d2 + props: + language_id: '37531557' + popular: 'False' + title: + en: D2 +- id: digital_command_language + props: + language_id: '82' + popular: 'False' + title: + en: DIGITAL Command Language +- id: dm + props: + language_id: '83' + popular: 'False' + title: + en: DM +- id: dns_zone + props: + language_id: '84' + popular: 'False' + title: + en: DNS Zone +- id: dtrace + props: + language_id: '85' + popular: 'False' + title: + en: DTrace +- id: dafny + props: + language_id: '969323346' + popular: 'False' + title: + en: Dafny +- id: darcs_patch + props: + language_id: '86' + popular: 'False' + title: + en: Darcs Patch +- id: dart + props: + language_id: '87' + popular: 'False' + title: + en: Dart +- id: dataweave + props: + language_id: '974514097' + popular: 'False' + title: + en: DataWeave +- id: debian_package_control_file + props: + language_id: '527438264' + popular: 'False' + title: + en: Debian Package Control File +- id: denizenscript + props: + language_id: '435000929' + popular: 'False' + title: + en: DenizenScript +- id: dhall + props: + language_id: '793969321' + popular: 'False' + title: + en: Dhall +- id: diff + props: + language_id: '88' + popular: 'False' + title: + en: Diff +- id: directx_3d_file + props: + language_id: '201049282' + popular: 'False' + title: + en: DirectX 3D File +- id: dockerfile + props: + language_id: '89' + popular: 'False' + title: + en: Dockerfile +- id: dogescript + props: + language_id: '90' + popular: 'False' + title: + en: Dogescript +- id: dotenv + props: + language_id: '111148035' + popular: 'False' + title: + en: Dotenv +- id: dylan + props: + language_id: '91' + popular: 'False' + title: + en: Dylan +- id: e + props: + language_id: '92' + popular: 'False' + title: + en: E +- id: e_mail + props: + language_id: '529653389' + popular: 'False' + title: + en: E-mail +- id: ebnf + props: + language_id: '430' + popular: 'False' + title: + en: EBNF +- id: ecl + props: + language_id: '93' + popular: 'False' + title: + en: ECL +- id: eclipse + props: + language_id: '94' + popular: 'False' + title: + en: ECLiPSe +- id: ejs + props: + language_id: '95' + popular: 'False' + title: + en: EJS +- id: eq + props: + language_id: '96' + popular: 'False' + title: + en: EQ +- id: eagle + props: + language_id: '97' + popular: 'False' + title: + en: Eagle +- id: earthly + props: + language_id: '963512632' + popular: 'False' + title: + en: Earthly +- id: easybuild + props: + language_id: '342840477' + popular: 'False' + title: + en: Easybuild +- id: ecere_projects + props: + language_id: '98' + popular: 'False' + title: + en: Ecere Projects +- id: ecmarkup + props: + language_id: '844766630' + popular: 'False' + title: + en: Ecmarkup +- id: editorconfig + props: + language_id: '96139566' + popular: 'False' + title: + en: EditorConfig +- id: edje_data_collection + props: + language_id: '342840478' + popular: 'False' + title: + en: Edje Data Collection +- id: eiffel + props: + language_id: '99' + popular: 'False' + title: + en: Eiffel +- id: elixir + props: + language_id: '100' + popular: 'False' + title: + en: Elixir +- id: elm + props: + language_id: '101' + popular: 'False' + title: + en: Elm +- id: elvish + props: + language_id: '570996448' + popular: 'False' + title: + en: Elvish +- id: elvish_transcript + props: + language_id: '452025714' + popular: 'False' + title: + en: Elvish Transcript +- id: emacs_lisp + props: + language_id: '102' + popular: 'False' + title: + en: Emacs Lisp +- id: emberscript + props: + language_id: '103' + popular: 'False' + title: + en: EmberScript +- id: erlang + props: + language_id: '104' + popular: 'False' + title: + en: Erlang +- id: euphoria + props: + language_id: '880693982' + popular: 'False' + title: + en: Euphoria +- id: f# + props: + language_id: '105' + popular: 'False' + title: + en: F# +- id: f* + props: + language_id: '336943375' + popular: 'False' + title: + en: F* +- id: figlet_font + props: + language_id: '686129783' + popular: 'False' + title: + en: FIGlet Font +- id: flux + props: + language_id: '106' + popular: 'False' + title: + en: FLUX +- id: factor + props: + language_id: '108' + popular: 'False' + title: + en: Factor +- id: fancy + props: + language_id: '109' + popular: 'False' + title: + en: Fancy +- id: fantom + props: + language_id: '110' + popular: 'False' + title: + en: Fantom +- id: faust + props: + language_id: '622529198' + popular: 'False' + title: + en: Faust +- id: fennel + props: + language_id: '239946126' + popular: 'False' + title: + en: Fennel +- id: filebench_wml + props: + language_id: '111' + popular: 'False' + title: + en: Filebench WML +- id: filterscript + props: + language_id: '112' + popular: 'False' + title: + en: Filterscript +- id: fluent + props: + language_id: '206353404' + popular: 'False' + title: + en: Fluent +- id: formatted + props: + language_id: '113' + popular: 'False' + title: + en: Formatted +- id: forth + props: + language_id: '114' + popular: 'False' + title: + en: Forth +- id: fortran + props: + language_id: '107' + popular: 'False' + title: + en: Fortran +- id: fortran_free_form + props: + language_id: '761352333' + popular: 'False' + title: + en: Fortran Free Form +- id: freebasic + props: + language_id: '472896659' + popular: 'False' + title: + en: FreeBasic +- id: freemarker + props: + language_id: '115' + popular: 'False' + title: + en: FreeMarker +- id: frege + props: + language_id: '116' + popular: 'False' + title: + en: Frege +- id: futhark + props: + language_id: '97358117' + popular: 'False' + title: + en: Futhark +- id: g_code + props: + language_id: '117' + popular: 'False' + title: + en: G-code +- id: gaml + props: + language_id: '290345951' + popular: 'False' + title: + en: GAML +- id: gams + props: + language_id: '118' + popular: 'False' + title: + en: GAMS +- id: gap + props: + language_id: '119' + popular: 'False' + title: + en: GAP +- id: gcc_machine_description + props: + language_id: '121' + popular: 'False' + title: + en: GCC Machine Description +- id: gdb + props: + language_id: '122' + popular: 'False' + title: + en: GDB +- id: gdscript + props: + language_id: '123' + popular: 'False' + title: + en: GDScript +- id: gedcom + props: + language_id: '459577965' + popular: 'False' + title: + en: GEDCOM +- id: glsl + props: + language_id: '124' + popular: 'False' + title: + en: GLSL +- id: gn + props: + language_id: '302957008' + popular: 'False' + title: + en: GN +- id: gsc + props: + language_id: '257856279' + popular: 'False' + title: + en: GSC +- id: game_maker_language + props: + language_id: '125' + popular: 'False' + title: + en: Game Maker Language +- id: gemfile.lock + props: + language_id: '907065713' + popular: 'False' + title: + en: Gemfile.lock +- id: gemini + props: + language_id: '310828396' + popular: 'False' + title: + en: Gemini +- id: genero + props: + language_id: '986054050' + popular: 'False' + title: + en: Genero +- id: genero_forms + props: + language_id: '902995658' + popular: 'False' + title: + en: Genero Forms +- id: genie + props: + language_id: '792408528' + popular: 'False' + title: + en: Genie +- id: genshi + props: + language_id: '126' + popular: 'False' + title: + en: Genshi +- id: gentoo_ebuild + props: + language_id: '127' + popular: 'False' + title: + en: Gentoo Ebuild +- id: gentoo_eclass + props: + language_id: '128' + popular: 'False' + title: + en: Gentoo Eclass +- id: gerber_image + props: + language_id: '404627610' + popular: 'False' + title: + en: Gerber Image +- id: gettext_catalog + props: + language_id: '129' + popular: 'False' + title: + en: Gettext Catalog +- id: gherkin + props: + language_id: '76' + popular: 'False' + title: + en: Gherkin +- id: git_attributes + props: + language_id: '956324166' + popular: 'False' + title: + en: Git Attributes +- id: git_config + props: + language_id: '807968997' + popular: 'False' + title: + en: Git Config +- id: git_revision_list + props: + language_id: '461881235' + popular: 'False' + title: + en: Git Revision List +- id: gleam + props: + language_id: '1054258749' + popular: 'False' + title: + en: Gleam +- id: glyph + props: + language_id: '130' + popular: 'False' + title: + en: Glyph +- id: glyph_bitmap_distribution_format + props: + language_id: '997665271' + popular: 'False' + title: + en: Glyph Bitmap Distribution Format +- id: gnuplot + props: + language_id: '131' + popular: 'False' + title: + en: Gnuplot +- id: go + props: + language_id: '132' + popular: 'False' + title: + en: Go +- id: go_checksums + props: + language_id: '1054391671' + popular: 'False' + title: + en: Go Checksums +- id: go_module + props: + language_id: '947461016' + popular: 'False' + title: + en: Go Module +- id: go_workspace + props: + language_id: '934546256' + popular: 'False' + title: + en: Go Workspace +- id: godot_resource + props: + language_id: '738107771' + popular: 'False' + title: + en: Godot Resource +- id: golo + props: + language_id: '133' + popular: 'False' + title: + en: Golo +- id: gosu + props: + language_id: '134' + popular: 'False' + title: + en: Gosu +- id: grace + props: + language_id: '135' + popular: 'False' + title: + en: Grace +- id: gradle + props: + language_id: '136' + popular: 'False' + title: + en: Gradle +- id: gradle_kotlin_dsl + props: + language_id: '432600901' + popular: 'False' + title: + en: Gradle Kotlin DSL +- id: grammatical_framework + props: + language_id: '137' + popular: 'False' + title: + en: Grammatical Framework +- id: graph_modeling_language + props: + language_id: '138' + popular: 'False' + title: + en: Graph Modeling Language +- id: graphql + props: + language_id: '139' + popular: 'False' + title: + en: GraphQL +- id: graphviz_(dot) + props: + language_id: '140' + popular: 'False' + title: + en: Graphviz (DOT) +- id: groovy + props: + language_id: '142' + popular: 'False' + title: + en: Groovy +- id: groovy_server_pages + props: + language_id: '143' + popular: 'False' + title: + en: Groovy Server Pages +- id: haproxy + props: + language_id: '366607477' + popular: 'False' + title: + en: HAProxy +- id: hcl + props: + language_id: '144' + popular: 'False' + title: + en: HCL +- id: hlsl + props: + language_id: '145' + popular: 'False' + title: + en: HLSL +- id: hocon + props: + language_id: '679725279' + popular: 'False' + title: + en: HOCON +- id: html + props: + language_id: '146' + popular: 'False' + title: + en: HTML +- id: html+ecr + props: + language_id: '148' + popular: 'False' + title: + en: HTML+ECR +- id: html+eex + props: + language_id: '149' + popular: 'False' + title: + en: HTML+EEX +- id: html+erb + props: + language_id: '150' + popular: 'False' + title: + en: HTML+ERB +- id: html+php + props: + language_id: '151' + popular: 'False' + title: + en: HTML+PHP +- id: html+razor + props: + language_id: '479039817' + popular: 'False' + title: + en: HTML+Razor +- id: http + props: + language_id: '152' + popular: 'False' + title: + en: HTTP +- id: hxml + props: + language_id: '786683730' + popular: 'False' + title: + en: HXML +- id: hack + props: + language_id: '153' + popular: 'False' + title: + en: Hack +- id: haml + props: + language_id: '154' + popular: 'False' + title: + en: Haml +- id: handlebars + props: + language_id: '155' + popular: 'False' + title: + en: Handlebars +- id: harbour + props: + language_id: '156' + popular: 'False' + title: + en: Harbour +- id: haskell + props: + language_id: '157' + popular: 'False' + title: + en: Haskell +- id: haxe + props: + language_id: '158' + popular: 'False' + title: + en: Haxe +- id: hiveql + props: + language_id: '931814087' + popular: 'False' + title: + en: HiveQL +- id: holyc + props: + language_id: '928121743' + popular: 'False' + title: + en: HolyC +- id: hosts_file + props: + language_id: '231021894' + popular: 'False' + title: + en: Hosts File +- id: hy + props: + language_id: '159' + popular: 'False' + title: + en: Hy +- id: hyphy + props: + language_id: '160' + popular: 'False' + title: + en: HyPhy +- id: idl + props: + language_id: '161' + popular: 'False' + title: + en: IDL +- id: igor_pro + props: + language_id: '162' + popular: 'False' + title: + en: IGOR Pro +- id: ini + props: + language_id: '163' + popular: 'False' + title: + en: INI +- id: irc_log + props: + language_id: '164' + popular: 'False' + title: + en: IRC log +- id: idris + props: + language_id: '165' + popular: 'False' + title: + en: Idris +- id: ignore_list + props: + language_id: '74444240' + popular: 'False' + title: + en: Ignore List +- id: imagej_macro + props: + language_id: '575143428' + popular: 'False' + title: + en: ImageJ Macro +- id: imba + props: + language_id: '1057618448' + popular: 'False' + title: + en: Imba +- id: inform_7 + props: + language_id: '166' + popular: 'False' + title: + en: Inform 7 +- id: ink + props: + language_id: '838252715' + popular: 'False' + title: + en: Ink +- id: inno_setup + props: + language_id: '167' + popular: 'False' + title: + en: Inno Setup +- id: io + props: + language_id: '168' + popular: 'False' + title: + en: Io +- id: ioke + props: + language_id: '169' + popular: 'False' + title: + en: Ioke +- id: isabelle + props: + language_id: '170' + popular: 'False' + title: + en: Isabelle +- id: isabelle_root + props: + language_id: '171' + popular: 'False' + title: + en: Isabelle ROOT +- id: j + props: + language_id: '172' + popular: 'False' + title: + en: J +- id: jar_manifest + props: + language_id: '447261135' + popular: 'False' + title: + en: JAR Manifest +- id: jcl + props: + language_id: '316620079' + popular: 'False' + title: + en: JCL +- id: jflex + props: + language_id: '173' + popular: 'False' + title: + en: JFlex +- id: json + props: + language_id: '174' + popular: 'False' + title: + en: JSON +- id: json_with_comments + props: + language_id: '423' + popular: 'False' + title: + en: JSON with Comments +- id: json5 + props: + language_id: '175' + popular: 'False' + title: + en: JSON5 +- id: jsonld + props: + language_id: '176' + popular: 'False' + title: + en: JSONLD +- id: jsoniq + props: + language_id: '177' + popular: 'False' + title: + en: JSONiq +- id: janet + props: + language_id: '1028705371' + popular: 'False' + title: + en: Janet +- id: jasmin + props: + language_id: '180' + popular: 'False' + title: + en: Jasmin +- id: java + props: + language_id: '181' + popular: 'False' + title: + en: Java +- id: java_properties + props: + language_id: '519377561' + popular: 'False' + title: + en: Java Properties +- id: java_server_pages + props: + language_id: '182' + popular: 'False' + title: + en: Java Server Pages +- id: javascript + props: + language_id: '183' + popular: 'False' + title: + en: JavaScript +- id: javascript+erb + props: + language_id: '914318960' + popular: 'False' + title: + en: JavaScript+ERB +- id: jest_snapshot + props: + language_id: '774635084' + popular: 'False' + title: + en: Jest Snapshot +- id: jetbrains_mps + props: + language_id: '465165328' + popular: 'False' + title: + en: JetBrains MPS +- id: jinja + props: + language_id: '147' + popular: 'False' + title: + en: Jinja +- id: jison + props: + language_id: '284531423' + popular: 'False' + title: + en: Jison +- id: jison_lex + props: + language_id: '406395330' + popular: 'False' + title: + en: Jison Lex +- id: jolie + props: + language_id: '998078858' + popular: 'False' + title: + en: Jolie +- id: jsonnet + props: + language_id: '664885656' + popular: 'False' + title: + en: Jsonnet +- id: julia + props: + language_id: '184' + popular: 'False' + title: + en: Julia +- id: jupyter_notebook + props: + language_id: '185' + popular: 'False' + title: + en: Jupyter Notebook +- id: just + props: + language_id: '128447695' + popular: 'False' + title: + en: Just +- id: krl + props: + language_id: '186' + popular: 'False' + title: + en: KRL +- id: kaitai_struct + props: + language_id: '818804755' + popular: 'False' + title: + en: Kaitai Struct +- id: kakounescript + props: + language_id: '603336474' + popular: 'False' + title: + en: KakouneScript +- id: kerboscript + props: + language_id: '59716426' + popular: 'False' + title: + en: KerboScript +- id: kicad_layout + props: + language_id: '187' + popular: 'False' + title: + en: KiCad Layout +- id: kicad_legacy_layout + props: + language_id: '140848857' + popular: 'False' + title: + en: KiCad Legacy Layout +- id: kicad_schematic + props: + language_id: '622447435' + popular: 'False' + title: + en: KiCad Schematic +- id: kickstart + props: + language_id: '692635484' + popular: 'False' + title: + en: Kickstart +- id: kit + props: + language_id: '188' + popular: 'False' + title: + en: Kit +- id: kotlin + props: + language_id: '189' + popular: 'False' + title: + en: Kotlin +- id: kusto + props: + language_id: '225697190' + popular: 'False' + title: + en: Kusto +- id: lfe + props: + language_id: '190' + popular: 'False' + title: + en: LFE +- id: llvm + props: + language_id: '191' + popular: 'False' + title: + en: LLVM +- id: lolcode + props: + language_id: '192' + popular: 'False' + title: + en: LOLCODE +- id: lsl + props: + language_id: '193' + popular: 'False' + title: + en: LSL +- id: ltspice_symbol + props: + language_id: '1013566805' + popular: 'False' + title: + en: LTspice Symbol +- id: labview + props: + language_id: '194' + popular: 'False' + title: + en: LabVIEW +- id: lark + props: + language_id: '758480799' + popular: 'False' + title: + en: Lark +- id: lasso + props: + language_id: '195' + popular: 'False' + title: + en: Lasso +- id: latte + props: + language_id: '196' + popular: 'False' + title: + en: Latte +- id: lean + props: + language_id: '197' + popular: 'False' + title: + en: Lean +- id: less + props: + language_id: '198' + popular: 'False' + title: + en: Less +- id: lex + props: + language_id: '199' + popular: 'False' + title: + en: Lex +- id: ligolang + props: + language_id: '1040646257' + popular: 'False' + title: + en: LigoLANG +- id: lilypond + props: + language_id: '200' + popular: 'False' + title: + en: LilyPond +- id: limbo + props: + language_id: '201' + popular: 'False' + title: + en: Limbo +- id: linker_script + props: + language_id: '202' + popular: 'False' + title: + en: Linker Script +- id: linux_kernel_module + props: + language_id: '203' + popular: 'False' + title: + en: Linux Kernel Module +- id: liquid + props: + language_id: '204' + popular: 'False' + title: + en: Liquid +- id: literate_agda + props: + language_id: '205' + popular: 'False' + title: + en: Literate Agda +- id: literate_coffeescript + props: + language_id: '206' + popular: 'False' + title: + en: Literate CoffeeScript +- id: literate_haskell + props: + language_id: '207' + popular: 'False' + title: + en: Literate Haskell +- id: livescript + props: + language_id: '208' + popular: 'False' + title: + en: LiveScript +- id: logos + props: + language_id: '209' + popular: 'False' + title: + en: Logos +- id: logtalk + props: + language_id: '210' + popular: 'False' + title: + en: Logtalk +- id: lookml + props: + language_id: '211' + popular: 'False' + title: + en: LookML +- id: loomscript + props: + language_id: '212' + popular: 'False' + title: + en: LoomScript +- id: lua + props: + language_id: '213' + popular: 'False' + title: + en: Lua +- id: m + props: + language_id: '214' + popular: 'False' + title: + en: M +- id: m4 + props: + language_id: '215' + popular: 'False' + title: + en: M4 +- id: m4sugar + props: + language_id: '216' + popular: 'False' + title: + en: M4Sugar +- id: matlab + props: + language_id: '225' + popular: 'False' + title: + en: MATLAB +- id: maxscript + props: + language_id: '217' + popular: 'False' + title: + en: MAXScript +- id: mdx + props: + language_id: '512838272' + popular: 'False' + title: + en: MDX +- id: mlir + props: + language_id: '448253929' + popular: 'False' + title: + en: MLIR +- id: mql4 + props: + language_id: '426' + popular: 'False' + title: + en: MQL4 +- id: mql5 + props: + language_id: '427' + popular: 'False' + title: + en: MQL5 +- id: mtml + props: + language_id: '218' + popular: 'False' + title: + en: MTML +- id: muf + props: + language_id: '219' + popular: 'False' + title: + en: MUF +- id: macaulay2 + props: + language_id: '34167825' + popular: 'False' + title: + en: Macaulay2 +- id: makefile + props: + language_id: '220' + popular: 'False' + title: + en: Makefile +- id: mako + props: + language_id: '221' + popular: 'False' + title: + en: Mako +- id: markdown + props: + language_id: '222' + popular: 'False' + title: + en: Markdown +- id: marko + props: + language_id: '932782397' + popular: 'False' + title: + en: Marko +- id: mask + props: + language_id: '223' + popular: 'False' + title: + en: Mask +- id: mathematica + props: + language_id: '224' + popular: 'False' + title: + en: Mathematica +- id: maven_pom + props: + language_id: '226' + popular: 'False' + title: + en: Maven POM +- id: max + props: + language_id: '227' + popular: 'False' + title: + en: Max +- id: mercury + props: + language_id: '229' + popular: 'False' + title: + en: Mercury +- id: mermaid + props: + language_id: '385992043' + popular: 'False' + title: + en: Mermaid +- id: meson + props: + language_id: '799141244' + popular: 'False' + title: + en: Meson +- id: metal + props: + language_id: '230' + popular: 'False' + title: + en: Metal +- id: microsoft_developer_studio_project + props: + language_id: '800983837' + popular: 'False' + title: + en: Microsoft Developer Studio Project +- id: microsoft_visual_studio_solution + props: + language_id: '849523096' + popular: 'False' + title: + en: Microsoft Visual Studio Solution +- id: minid + props: + language_id: '231' + popular: 'False' + title: + en: MiniD +- id: miniyaml + props: + language_id: '4896465' + popular: 'False' + title: + en: MiniYAML +- id: mint + props: + language_id: '968740319' + popular: 'False' + title: + en: Mint +- id: mirah + props: + language_id: '232' + popular: 'False' + title: + en: Mirah +- id: modelica + props: + language_id: '233' + popular: 'False' + title: + en: Modelica +- id: modula_2 + props: + language_id: '234' + popular: 'False' + title: + en: Modula-2 +- id: modula_3 + props: + language_id: '564743864' + popular: 'False' + title: + en: Modula-3 +- id: module_management_system + props: + language_id: '235' + popular: 'False' + title: + en: Module Management System +- id: monkey + props: + language_id: '236' + popular: 'False' + title: + en: Monkey +- id: monkey_c + props: + language_id: '231751931' + popular: 'False' + title: + en: Monkey C +- id: moocode + props: + language_id: '237' + popular: 'False' + title: + en: Moocode +- id: moonscript + props: + language_id: '238' + popular: 'False' + title: + en: MoonScript +- id: motoko + props: + language_id: '202937027' + popular: 'False' + title: + en: Motoko +- id: motorola_68k_assembly + props: + language_id: '477582706' + popular: 'False' + title: + en: Motorola 68K Assembly +- id: move + props: + language_id: '638334599' + popular: 'False' + title: + en: Move +- id: muse + props: + language_id: '474864066' + popular: 'False' + title: + en: Muse +- id: mustache + props: + language_id: '638334590' + popular: 'False' + title: + en: Mustache +- id: myghty + props: + language_id: '239' + popular: 'False' + title: + en: Myghty +- id: nasl + props: + language_id: '171666519' + popular: 'False' + title: + en: NASL +- id: ncl + props: + language_id: '240' + popular: 'False' + title: + en: NCL +- id: neon + props: + language_id: '481192983' + popular: 'False' + title: + en: NEON +- id: nl + props: + language_id: '241' + popular: 'False' + title: + en: NL +- id: npm_config + props: + language_id: '685022663' + popular: 'False' + title: + en: NPM Config +- id: nsis + props: + language_id: '242' + popular: 'False' + title: + en: NSIS +- id: nwscript + props: + language_id: '731233819' + popular: 'False' + title: + en: NWScript +- id: nasal + props: + language_id: '178322513' + popular: 'False' + title: + en: Nasal +- id: nearley + props: + language_id: '521429430' + popular: 'False' + title: + en: Nearley +- id: nemerle + props: + language_id: '243' + popular: 'False' + title: + en: Nemerle +- id: netlinx + props: + language_id: '244' + popular: 'False' + title: + en: NetLinx +- id: netlinx+erb + props: + language_id: '245' + popular: 'False' + title: + en: NetLinx+ERB +- id: netlogo + props: + language_id: '246' + popular: 'False' + title: + en: NetLogo +- id: newlisp + props: + language_id: '247' + popular: 'False' + title: + en: NewLisp +- id: nextflow + props: + language_id: '506780613' + popular: 'False' + title: + en: Nextflow +- id: nginx + props: + language_id: '248' + popular: 'False' + title: + en: Nginx +- id: nim + props: + language_id: '249' + popular: 'False' + title: + en: Nim +- id: ninja + props: + language_id: '250' + popular: 'False' + title: + en: Ninja +- id: nit + props: + language_id: '251' + popular: 'False' + title: + en: Nit +- id: nix + props: + language_id: '252' + popular: 'False' + title: + en: Nix +- id: nu + props: + language_id: '253' + popular: 'False' + title: + en: Nu +- id: numpy + props: + language_id: '254' + popular: 'False' + title: + en: NumPy +- id: nunjucks + props: + language_id: '461856962' + popular: 'False' + title: + en: Nunjucks +- id: nushell + props: + language_id: '446573572' + popular: 'False' + title: + en: Nushell +- id: oasv2_json + props: + language_id: '834374816' + popular: 'False' + title: + en: OASv2-json +- id: oasv2_yaml + props: + language_id: '105187618' + popular: 'False' + title: + en: OASv2-yaml +- id: oasv3_json + props: + language_id: '980062566' + popular: 'False' + title: + en: OASv3-json +- id: oasv3_yaml + props: + language_id: '51239111' + popular: 'False' + title: + en: OASv3-yaml +- id: ocaml + props: + language_id: '255' + popular: 'False' + title: + en: OCaml +- id: objdump + props: + language_id: '256' + popular: 'False' + title: + en: ObjDump +- id: object_data_instance_notation + props: + language_id: '985227236' + popular: 'False' + title: + en: Object Data Instance Notation +- id: objectscript + props: + language_id: '202735509' + popular: 'False' + title: + en: ObjectScript +- id: objective_c + props: + language_id: '257' + popular: 'False' + title: + en: Objective-C +- id: objective_c++ + props: + language_id: '258' + popular: 'False' + title: + en: Objective-C++ +- id: objective_j + props: + language_id: '259' + popular: 'False' + title: + en: Objective-J +- id: odin + props: + language_id: '889244082' + popular: 'False' + title: + en: Odin +- id: omgrofl + props: + language_id: '260' + popular: 'False' + title: + en: Omgrofl +- id: opa + props: + language_id: '261' + popular: 'False' + title: + en: Opa +- id: opal + props: + language_id: '262' + popular: 'False' + title: + en: Opal +- id: open_policy_agent + props: + language_id: '840483232' + popular: 'False' + title: + en: Open Policy Agent +- id: openapi_specification_v2 + props: + language_id: '848295328' + popular: 'False' + title: + en: OpenAPI Specification v2 +- id: openapi_specification_v3 + props: + language_id: '557959099' + popular: 'False' + title: + en: OpenAPI Specification v3 +- id: opencl + props: + language_id: '263' + popular: 'False' + title: + en: OpenCL +- id: openedge_abl + props: + language_id: '264' + popular: 'False' + title: + en: OpenEdge ABL +- id: openqasm + props: + language_id: '153739399' + popular: 'False' + title: + en: OpenQASM +- id: openrc_runscript + props: + language_id: '265' + popular: 'False' + title: + en: OpenRC runscript +- id: openscad + props: + language_id: '266' + popular: 'False' + title: + en: OpenSCAD +- id: openstep_property_list + props: + language_id: '598917541' + popular: 'False' + title: + en: OpenStep Property List +- id: opentype_feature_file + props: + language_id: '374317347' + popular: 'False' + title: + en: OpenType Feature File +- id: option_list + props: + language_id: '723589315' + popular: 'False' + title: + en: Option List +- id: org + props: + language_id: '267' + popular: 'False' + title: + en: Org +- id: ox + props: + language_id: '268' + popular: 'False' + title: + en: Ox +- id: oxygene + props: + language_id: '269' + popular: 'False' + title: + en: Oxygene +- id: oz + props: + language_id: '270' + popular: 'False' + title: + en: Oz +- id: p4 + props: + language_id: '348895984' + popular: 'False' + title: + en: P4 +- id: pddl + props: + language_id: '736235603' + popular: 'False' + title: + en: PDDL +- id: peg.js + props: + language_id: '81442128' + popular: 'False' + title: + en: PEG.js +- id: php + props: + language_id: '272' + popular: 'False' + title: + en: PHP +- id: plsql + props: + language_id: '273' + popular: 'False' + title: + en: PLSQL +- id: plpgsql + props: + language_id: '274' + popular: 'False' + title: + en: PLpgSQL +- id: pov_ray_sdl + props: + language_id: '275' + popular: 'False' + title: + en: POV-Ray SDL +- id: pact + props: + language_id: '756774415' + popular: 'False' + title: + en: Pact +- id: pan + props: + language_id: '276' + popular: 'False' + title: + en: Pan +- id: papyrus + props: + language_id: '277' + popular: 'False' + title: + en: Papyrus +- id: parrot + props: + language_id: '278' + popular: 'False' + title: + en: Parrot +- id: parrot_assembly + props: + language_id: '279' + popular: 'False' + title: + en: Parrot Assembly +- id: parrot_internal_representation + props: + language_id: '280' + popular: 'False' + title: + en: Parrot Internal Representation +- id: pascal + props: + language_id: '281' + popular: 'False' + title: + en: Pascal +- id: pawn + props: + language_id: '271' + popular: 'False' + title: + en: Pawn +- id: pep8 + props: + language_id: '840372442' + popular: 'False' + title: + en: Pep8 +- id: perl + props: + language_id: '282' + popular: 'False' + title: + en: Perl +- id: pic + props: + language_id: '425' + popular: 'False' + title: + en: Pic +- id: pickle + props: + language_id: '284' + popular: 'False' + title: + en: Pickle +- id: picolisp + props: + language_id: '285' + popular: 'False' + title: + en: PicoLisp +- id: piglatin + props: + language_id: '286' + popular: 'False' + title: + en: PigLatin +- id: pike + props: + language_id: '287' + popular: 'False' + title: + en: Pike +- id: plantuml + props: + language_id: '833504686' + popular: 'False' + title: + en: PlantUML +- id: pod + props: + language_id: '288' + popular: 'False' + title: + en: Pod +- id: pod_6 + props: + language_id: '155357471' + popular: 'False' + title: + en: Pod 6 +- id: pogoscript + props: + language_id: '289' + popular: 'False' + title: + en: PogoScript +- id: polar + props: + language_id: '839112914' + popular: 'False' + title: + en: Polar +- id: pony + props: + language_id: '290' + popular: 'False' + title: + en: Pony +- id: portugol + props: + language_id: '832391833' + popular: 'False' + title: + en: Portugol +- id: postcss + props: + language_id: '262764437' + popular: 'False' + title: + en: PostCSS +- id: postscript + props: + language_id: '291' + popular: 'False' + title: + en: PostScript +- id: powerbuilder + props: + language_id: '292' + popular: 'False' + title: + en: PowerBuilder +- id: powershell + props: + language_id: '293' + popular: 'False' + title: + en: PowerShell +- id: prisma + props: + language_id: '499933428' + popular: 'False' + title: + en: Prisma +- id: processing + props: + language_id: '294' + popular: 'False' + title: + en: Processing +- id: procfile + props: + language_id: '305313959' + popular: 'False' + title: + en: Procfile +- id: proguard + props: + language_id: '716513858' + popular: 'False' + title: + en: Proguard +- id: prolog + props: + language_id: '295' + popular: 'False' + title: + en: Prolog +- id: promela + props: + language_id: '441858312' + popular: 'False' + title: + en: Promela +- id: propeller_spin + props: + language_id: '296' + popular: 'False' + title: + en: Propeller Spin +- id: protocol_buffer + props: + language_id: '297' + popular: 'False' + title: + en: Protocol Buffer +- id: protocol_buffer_text_format + props: + language_id: '436568854' + popular: 'False' + title: + en: Protocol Buffer Text Format +- id: public_key + props: + language_id: '298' + popular: 'False' + title: + en: Public Key +- id: pug + props: + language_id: '179' + popular: 'False' + title: + en: Pug +- id: puppet + props: + language_id: '299' + popular: 'False' + title: + en: Puppet +- id: pure_data + props: + language_id: '300' + popular: 'False' + title: + en: Pure Data +- id: purebasic + props: + language_id: '301' + popular: 'False' + title: + en: PureBasic +- id: purescript + props: + language_id: '302' + popular: 'False' + title: + en: PureScript +- id: pyret + props: + language_id: '252961827' + popular: 'False' + title: + en: Pyret +- id: python + props: + language_id: '303' + popular: 'False' + title: + en: Python +- id: python_console + props: + language_id: '428' + popular: 'False' + title: + en: Python console +- id: python_traceback + props: + language_id: '304' + popular: 'False' + title: + en: Python traceback +- id: q# + props: + language_id: '697448245' + popular: 'False' + title: + en: Q# +- id: qml + props: + language_id: '305' + popular: 'False' + title: + en: QML +- id: qmake + props: + language_id: '306' + popular: 'False' + title: + en: QMake +- id: qt_script + props: + language_id: '558193693' + popular: 'False' + title: + en: Qt Script +- id: quake + props: + language_id: '375265331' + popular: 'False' + title: + en: Quake +- id: r + props: + language_id: '307' + popular: 'False' + title: + en: R +- id: raml + props: + language_id: '308' + popular: 'False' + title: + en: RAML +- id: rbs + props: + language_id: '899227493' + popular: 'False' + title: + en: RBS +- id: rdoc + props: + language_id: '309' + popular: 'False' + title: + en: RDoc +- id: realbasic + props: + language_id: '310' + popular: 'False' + title: + en: REALbasic +- id: rexx + props: + language_id: '311' + popular: 'False' + title: + en: REXX +- id: rmarkdown + props: + language_id: '313' + popular: 'False' + title: + en: RMarkdown +- id: rpc + props: + language_id: '1031374237' + popular: 'False' + title: + en: RPC +- id: rpgle + props: + language_id: '609977990' + popular: 'False' + title: + en: RPGLE +- id: rpm_spec + props: + language_id: '314' + popular: 'False' + title: + en: RPM Spec +- id: runoff + props: + language_id: '315' + popular: 'False' + title: + en: RUNOFF +- id: racket + props: + language_id: '316' + popular: 'False' + title: + en: Racket +- id: ragel + props: + language_id: '317' + popular: 'False' + title: + en: Ragel +- id: raku + props: + language_id: '283' + popular: 'False' + title: + en: Raku +- id: rascal + props: + language_id: '173616037' + popular: 'False' + title: + en: Rascal +- id: raw_token_data + props: + language_id: '318' + popular: 'False' + title: + en: Raw token data +- id: rescript + props: + language_id: '501875647' + popular: 'False' + title: + en: ReScript +- id: readline_config + props: + language_id: '538732839' + popular: 'False' + title: + en: Readline Config +- id: reason + props: + language_id: '869538413' + popular: 'False' + title: + en: Reason +- id: reasonligo + props: + language_id: '319002153' + popular: 'False' + title: + en: ReasonLIGO +- id: rebol + props: + language_id: '319' + popular: 'False' + title: + en: Rebol +- id: record_jar + props: + language_id: '865765202' + popular: 'False' + title: + en: Record Jar +- id: red + props: + language_id: '320' + popular: 'False' + title: + en: Red +- id: redcode + props: + language_id: '321' + popular: 'False' + title: + en: Redcode +- id: redirect_rules + props: + language_id: '1020148948' + popular: 'False' + title: + en: Redirect Rules +- id: regular_expression + props: + language_id: '363378884' + popular: 'False' + title: + en: Regular Expression +- id: ren'py + props: + language_id: '322' + popular: 'False' + title: + en: Ren'Py +- id: renderscript + props: + language_id: '323' + popular: 'False' + title: + en: RenderScript +- id: rez + props: + language_id: '498022874' + popular: 'False' + title: + en: Rez +- id: rich_text_format + props: + language_id: '51601661' + popular: 'False' + title: + en: Rich Text Format +- id: ring + props: + language_id: '431' + popular: 'False' + title: + en: Ring +- id: riot + props: + language_id: '878396783' + popular: 'False' + title: + en: Riot +- id: robotframework + props: + language_id: '324' + popular: 'False' + title: + en: RobotFramework +- id: roff + props: + language_id: '141' + popular: 'False' + title: + en: Roff +- id: roff_manpage + props: + language_id: '612669833' + popular: 'False' + title: + en: Roff Manpage +- id: rouge + props: + language_id: '325' + popular: 'False' + title: + en: Rouge +- id: routeros_script + props: + language_id: '592853203' + popular: 'False' + title: + en: RouterOS Script +- id: ruby + props: + language_id: '326' + popular: 'False' + title: + en: Ruby +- id: rust + props: + language_id: '327' + popular: 'False' + title: + en: Rust +- id: sas + props: + language_id: '328' + popular: 'False' + title: + en: SAS +- id: scss + props: + language_id: '329' + popular: 'False' + title: + en: SCSS +- id: selinux_policy + props: + language_id: '880010326' + popular: 'False' + title: + en: SELinux Policy +- id: smt + props: + language_id: '330' + popular: 'False' + title: + en: SMT +- id: sparql + props: + language_id: '331' + popular: 'False' + title: + en: SPARQL +- id: sqf + props: + language_id: '332' + popular: 'False' + title: + en: SQF +- id: sql + props: + language_id: '333' + popular: 'False' + title: + en: SQL +- id: sqlpl + props: + language_id: '334' + popular: 'False' + title: + en: SQLPL +- id: srecode_template + props: + language_id: '335' + popular: 'False' + title: + en: SRecode Template +- id: ssh_config + props: + language_id: '554920715' + popular: 'False' + title: + en: SSH Config +- id: star + props: + language_id: '424510560' + popular: 'False' + title: + en: STAR +- id: stl + props: + language_id: '455361735' + popular: 'False' + title: + en: STL +- id: ston + props: + language_id: '336' + popular: 'False' + title: + en: STON +- id: svg + props: + language_id: '337' + popular: 'False' + title: + en: SVG +- id: swig + props: + language_id: '1066250075' + popular: 'False' + title: + en: SWIG +- id: sage + props: + language_id: '338' + popular: 'False' + title: + en: Sage +- id: saltstack + props: + language_id: '339' + popular: 'False' + title: + en: SaltStack +- id: sass + props: + language_id: '340' + popular: 'False' + title: + en: Sass +- id: scala + props: + language_id: '341' + popular: 'False' + title: + en: Scala +- id: scaml + props: + language_id: '342' + popular: 'False' + title: + en: Scaml +- id: scenic + props: + language_id: '619814037' + popular: 'False' + title: + en: Scenic +- id: scheme + props: + language_id: '343' + popular: 'False' + title: + en: Scheme +- id: scilab + props: + language_id: '344' + popular: 'False' + title: + en: Scilab +- id: self + props: + language_id: '345' + popular: 'False' + title: + en: Self +- id: shaderlab + props: + language_id: '664257356' + popular: 'False' + title: + en: ShaderLab +- id: shell + props: + language_id: '346' + popular: 'False' + title: + en: Shell +- id: shellcheck_config + props: + language_id: '687511714' + popular: 'False' + title: + en: ShellCheck Config +- id: shellsession + props: + language_id: '347' + popular: 'False' + title: + en: ShellSession +- id: shen + props: + language_id: '348' + popular: 'False' + title: + en: Shen +- id: sieve + props: + language_id: '208976687' + popular: 'False' + title: + en: Sieve +- id: simple_file_verification + props: + language_id: '735623761' + popular: 'False' + title: + en: Simple File Verification +- id: singularity + props: + language_id: '987024632' + popular: 'False' + title: + en: Singularity +- id: slash + props: + language_id: '349' + popular: 'False' + title: + en: Slash +- id: slice + props: + language_id: '894641667' + popular: 'False' + title: + en: Slice +- id: slim + props: + language_id: '350' + popular: 'False' + title: + en: Slim +- id: smpl + props: + language_id: '164123055' + popular: 'False' + title: + en: SmPL +- id: smali + props: + language_id: '351' + popular: 'False' + title: + en: Smali +- id: smalltalk + props: + language_id: '352' + popular: 'False' + title: + en: Smalltalk +- id: smarty + props: + language_id: '353' + popular: 'False' + title: + en: Smarty +- id: smithy + props: + language_id: '1027892786' + popular: 'False' + title: + en: Smithy +- id: snakemake + props: + language_id: '151241392' + popular: 'False' + title: + en: Snakemake +- id: solidity + props: + language_id: '237469032' + popular: 'False' + title: + en: Solidity +- id: soong + props: + language_id: '222900098' + popular: 'False' + title: + en: Soong +- id: sourcepawn + props: + language_id: '354' + popular: 'False' + title: + en: SourcePawn +- id: spline_font_database + props: + language_id: '767169629' + popular: 'False' + title: + en: Spline Font Database +- id: squirrel + props: + language_id: '355' + popular: 'False' + title: + en: Squirrel +- id: stan + props: + language_id: '356' + popular: 'False' + title: + en: Stan +- id: standard_ml + props: + language_id: '357' + popular: 'False' + title: + en: Standard ML +- id: starlark + props: + language_id: '960266174' + popular: 'False' + title: + en: Starlark +- id: stata + props: + language_id: '358' + popular: 'False' + title: + en: Stata +- id: stringtemplate + props: + language_id: '89855901' + popular: 'False' + title: + en: StringTemplate +- id: stylus + props: + language_id: '359' + popular: 'False' + title: + en: Stylus +- id: subrip_text + props: + language_id: '360' + popular: 'False' + title: + en: SubRip Text +- id: sugarss + props: + language_id: '826404698' + popular: 'False' + title: + en: SugarSS +- id: supercollider + props: + language_id: '361' + popular: 'False' + title: + en: SuperCollider +- id: svelte + props: + language_id: '928734530' + popular: 'False' + title: + en: Svelte +- id: sway + props: + language_id: '271471144' + popular: 'False' + title: + en: Sway +- id: sweave + props: + language_id: '558779190' + popular: 'False' + title: + en: Sweave +- id: swift + props: + language_id: '362' + popular: 'False' + title: + en: Swift +- id: systemverilog + props: + language_id: '363' + popular: 'False' + title: + en: SystemVerilog +- id: ti_program + props: + language_id: '422' + popular: 'False' + title: + en: TI Program +- id: tl_verilog + props: + language_id: '118656070' + popular: 'False' + title: + en: TL-Verilog +- id: tla + props: + language_id: '364' + popular: 'False' + title: + en: TLA +- id: toml + props: + language_id: '365' + popular: 'False' + title: + en: TOML +- id: tsql + props: + language_id: '918334941' + popular: 'False' + title: + en: TSQL +- id: tsv + props: + language_id: '1035892117' + popular: 'False' + title: + en: TSV +- id: tsx + props: + language_id: '94901924' + popular: 'False' + title: + en: TSX +- id: txl + props: + language_id: '366' + popular: 'False' + title: + en: TXL +- id: talon + props: + language_id: '959889508' + popular: 'False' + title: + en: Talon +- id: tcl + props: + language_id: '367' + popular: 'False' + title: + en: Tcl +- id: tcsh + props: + language_id: '368' + popular: 'False' + title: + en: Tcsh +- id: tex + props: + language_id: '369' + popular: 'False' + title: + en: TeX +- id: tea + props: + language_id: '370' + popular: 'False' + title: + en: Tea +- id: terra + props: + language_id: '371' + popular: 'False' + title: + en: Terra +- id: texinfo + props: + language_id: '988020015' + popular: 'False' + title: + en: Texinfo +- id: text + props: + language_id: '372' + popular: 'False' + title: + en: Text +- id: textmate_properties + props: + language_id: '981795023' + popular: 'False' + title: + en: TextMate Properties +- id: textile + props: + language_id: '373' + popular: 'False' + title: + en: Textile +- id: thrift + props: + language_id: '374' + popular: 'False' + title: + en: Thrift +- id: turing + props: + language_id: '375' + popular: 'False' + title: + en: Turing +- id: turtle + props: + language_id: '376' + popular: 'False' + title: + en: Turtle +- id: twig + props: + language_id: '377' + popular: 'False' + title: + en: Twig +- id: type_language + props: + language_id: '632765617' + popular: 'False' + title: + en: Type Language +- id: typescript + props: + language_id: '378' + popular: 'False' + title: + en: TypeScript +- id: typst + props: + language_id: '704730682' + popular: 'False' + title: + en: Typst +- id: unified_parallel_c + props: + language_id: '379' + popular: 'False' + title: + en: Unified Parallel C +- id: unity3d_asset + props: + language_id: '380' + popular: 'False' + title: + en: Unity3D Asset +- id: unix_assembly + props: + language_id: '120' + popular: 'False' + title: + en: Unix Assembly +- id: uno + props: + language_id: '381' + popular: 'False' + title: + en: Uno +- id: unrealscript + props: + language_id: '382' + popular: 'False' + title: + en: UnrealScript +- id: urweb + props: + language_id: '383' + popular: 'False' + title: + en: UrWeb +- id: v + props: + language_id: '603371597' + popular: 'False' + title: + en: V +- id: vba + props: + language_id: '399230729' + popular: 'False' + title: + en: VBA +- id: vbscript + props: + language_id: '408016005' + popular: 'False' + title: + en: VBScript +- id: vcl + props: + language_id: '384' + popular: 'False' + title: + en: VCL +- id: vhdl + props: + language_id: '385' + popular: 'False' + title: + en: VHDL +- id: vala + props: + language_id: '386' + popular: 'False' + title: + en: Vala +- id: valve_data_format + props: + language_id: '544060961' + popular: 'False' + title: + en: Valve Data Format +- id: velocity_template_language + props: + language_id: '292377326' + popular: 'False' + title: + en: Velocity Template Language +- id: verilog + props: + language_id: '387' + popular: 'False' + title: + en: Verilog +- id: vim_help_file + props: + language_id: '508563686' + popular: 'False' + title: + en: Vim Help File +- id: vim_script + props: + language_id: '388' + popular: 'False' + title: + en: Vim Script +- id: vim_snippet + props: + language_id: '81265970' + popular: 'False' + title: + en: Vim Snippet +- id: visual_basic_.net + props: + language_id: '389' + popular: 'False' + title: + en: Visual Basic .NET +- id: visual_basic_6.0 + props: + language_id: '679594952' + popular: 'False' + title: + en: Visual Basic 6.0 +- id: volt + props: + language_id: '390' + popular: 'False' + title: + en: Volt +- id: vue + props: + language_id: '391' + popular: 'False' + title: + en: Vue +- id: vyper + props: + language_id: '1055641948' + popular: 'False' + title: + en: Vyper +- id: wdl + props: + language_id: '374521672' + popular: 'False' + title: + en: WDL +- id: wgsl + props: + language_id: '836605993' + popular: 'False' + title: + en: WGSL +- id: wavefront_material + props: + language_id: '392' + popular: 'False' + title: + en: Wavefront Material +- id: wavefront_object + props: + language_id: '393' + popular: 'False' + title: + en: Wavefront Object +- id: web_ontology_language + props: + language_id: '394' + popular: 'False' + title: + en: Web Ontology Language +- id: webassembly + props: + language_id: '956556503' + popular: 'False' + title: + en: WebAssembly +- id: webassembly_interface_type + props: + language_id: '134534086' + popular: 'False' + title: + en: WebAssembly Interface Type +- id: webidl + props: + language_id: '395' + popular: 'False' + title: + en: WebIDL +- id: webvtt + props: + language_id: '658679714' + popular: 'False' + title: + en: WebVTT +- id: wget_config + props: + language_id: '668457123' + popular: 'False' + title: + en: Wget Config +- id: whiley + props: + language_id: '888779559' + popular: 'False' + title: + en: Whiley +- id: wikitext + props: + language_id: '228' + popular: 'False' + title: + en: Wikitext +- id: win32_message_file + props: + language_id: '950967261' + popular: 'False' + title: + en: Win32 Message File +- id: windows_registry_entries + props: + language_id: '969674868' + popular: 'False' + title: + en: Windows Registry Entries +- id: witcher_script + props: + language_id: '686821385' + popular: 'False' + title: + en: Witcher Script +- id: wollok + props: + language_id: '632745969' + popular: 'False' + title: + en: Wollok +- id: world_of_warcraft_addon_data + props: + language_id: '396' + popular: 'False' + title: + en: World of Warcraft Addon Data +- id: wren + props: + language_id: '713580619' + popular: 'False' + title: + en: Wren +- id: x_bitmap + props: + language_id: '782911107' + popular: 'False' + title: + en: X BitMap +- id: x_font_directory_index + props: + language_id: '208700028' + popular: 'False' + title: + en: X Font Directory Index +- id: x_pixmap + props: + language_id: '781846279' + popular: 'False' + title: + en: X PixMap +- id: x10 + props: + language_id: '397' + popular: 'False' + title: + en: X10 +- id: xc + props: + language_id: '398' + popular: 'False' + title: + en: XC +- id: xcompose + props: + language_id: '225167241' + popular: 'False' + title: + en: XCompose +- id: xml + props: + language_id: '399' + popular: 'False' + title: + en: XML +- id: xml_property_list + props: + language_id: '75622871' + popular: 'False' + title: + en: XML Property List +- id: xpages + props: + language_id: '400' + popular: 'False' + title: + en: XPages +- id: xproc + props: + language_id: '401' + popular: 'False' + title: + en: XProc +- id: xquery + props: + language_id: '402' + popular: 'False' + title: + en: XQuery +- id: xs + props: + language_id: '403' + popular: 'False' + title: + en: XS +- id: xslt + props: + language_id: '404' + popular: 'False' + title: + en: XSLT +- id: xojo + props: + language_id: '405' + popular: 'False' + title: + en: Xojo +- id: xonsh + props: + language_id: '614078284' + popular: 'False' + title: + en: Xonsh +- id: xtend + props: + language_id: '406' + popular: 'False' + title: + en: Xtend +- id: yaml + props: + language_id: '407' + popular: 'False' + title: + en: YAML +- id: yang + props: + language_id: '408' + popular: 'False' + title: + en: YANG +- id: yara + props: + language_id: '805122868' + popular: 'False' + title: + en: YARA +- id: yasnippet + props: + language_id: '378760102' + popular: 'False' + title: + en: YASnippet +- id: yacc + props: + language_id: '409' + popular: 'False' + title: + en: Yacc +- id: yul + props: + language_id: '237469033' + popular: 'False' + title: + en: Yul +- id: zap + props: + language_id: '952972794' + popular: 'False' + title: + en: ZAP +- id: zil + props: + language_id: '973483626' + popular: 'False' + title: + en: ZIL +- id: zeek + props: + language_id: '40' + popular: 'False' + title: + en: Zeek +- id: zenscript + props: + language_id: '494938890' + popular: 'False' + title: + en: ZenScript +- id: zephir + props: + language_id: '410' + popular: 'False' + title: + en: Zephir +- id: zig + props: + language_id: '646424281' + popular: 'False' + title: + en: Zig +- id: zimpl + props: + language_id: '411' + popular: 'False' + title: + en: Zimpl +- id: curl_config + props: + language_id: '992375436' + popular: 'False' + title: + en: cURL Config +- id: desktop + props: + language_id: '412' + popular: 'False' + title: + en: desktop +- id: dircolors + props: + language_id: '691605112' + popular: 'False' + title: + en: dircolors +- id: ec + props: + language_id: '413' + popular: 'False' + title: + en: eC +- id: edn + props: + language_id: '414' + popular: 'False' + title: + en: edn +- id: fish + props: + language_id: '415' + popular: 'False' + title: + en: fish +- id: hoon + props: + language_id: '560883276' + popular: 'False' + title: + en: hoon +- id: jq + props: + language_id: '905371884' + popular: 'False' + title: + en: jq +- id: kvlang + props: + language_id: '970675279' + popular: 'False' + title: + en: kvlang +- id: mirc_script + props: + language_id: '517654727' + popular: 'False' + title: + en: mIRC Script +- id: mcfunction + props: + language_id: '462488745' + popular: 'False' + title: + en: mcfunction +- id: mupad + props: + language_id: '416' + popular: 'False' + title: + en: mupad +- id: nanorc + props: + language_id: '775996197' + popular: 'False' + title: + en: nanorc +- id: nesc + props: + language_id: '417' + popular: 'False' + title: + en: nesC +- id: ooc + props: + language_id: '418' + popular: 'False' + title: + en: ooc +- id: q + props: + language_id: '970539067' + popular: 'False' + title: + en: q +- id: restructuredtext + props: + language_id: '419' + popular: 'False' + title: + en: reStructuredText +- id: robots.txt + props: + language_id: '674736065' + popular: 'False' + title: + en: robots.txt +- id: sed + props: + language_id: '847830017' + popular: 'False' + title: + en: sed +- id: wisp + props: + language_id: '420' + popular: 'False' + title: + en: wisp +- id: xbase + props: + language_id: '421' + popular: 'False' + title: + en: xBase diff --git a/invenio_rdm_records/fixtures/data/vocabularies/date_types.yaml b/invenio_rdm_records/fixtures/data/vocabularies/date_types.yaml index 2297f999d..e21f9619c 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/date_types.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/date_types.yaml @@ -3,64 +3,75 @@ datacite: Accepted title: en: Accepted + sv: Accepterad de: Angenommen - id: available props: datacite: Available title: en: Available + sv: Tillgänglig de: Verfügbar - id: collected props: datacite: Collected title: en: Collected + sv: Samlade de: Gesammelt - id: copyrighted props: datacite: Copyrighted title: en: Copyrighted + sv: Upphovsrättsligt skyddad de: Mit Copyright versehen - id: created props: datacite: Created title: en: Created + sv: Skapad de: Erstellt - id: issued props: datacite: Issued title: en: Issued + sv: Utfärdad de: Veröffentlicht - id: other props: datacite: Other title: en: Other + sv: Övrig de: Sonstiges - id: submitted props: datacite: Submitted title: en: Submitted + sv: Inskickad de: Eingereicht - id: updated props: datacite: Updated title: en: Updated + sv: Uppdaterad de: Aktualisiert - id: valid props: datacite: Valid title: en: Valid + sv: Giltig de: Gültig - id: withdrawn props: datacite: Withdrawn title: en: Withdrawn + sv: Tillbakadragen de: Zurückgezogen diff --git a/invenio_rdm_records/fixtures/data/vocabularies/description_types.yaml b/invenio_rdm_records/fixtures/data/vocabularies/description_types.yaml index e0f0c8ae1..fa4055a63 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/description_types.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/description_types.yaml @@ -3,34 +3,40 @@ datacite: Abstract title: en: Abstract + sv: Abstract de: Abstract - id: methods props: datacite: Methods title: en: Methods + sv: Metoder de: Methoden - id: series-information props: datacite: SeriesInformation title: en: Series information + sv: Information om serien de: Informationen zur Reihe - id: table-of-contents props: datacite: TableOfContents title: en: Table of contents + sv: Innehållsförteckning de: Inhaltsverzeichnis - id: technical-info props: datacite: TechnicalInfo title: en: Technical info + sv: Teknisk information de: Technische Informationen - id: other props: datacite: Other title: en: Other + sv: Övrig de: Sonstige diff --git a/invenio_rdm_records/fixtures/data/vocabularies/licenses.csv b/invenio_rdm_records/fixtures/data/vocabularies/licenses.csv index 2c1f759a4..e2bad7154 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/licenses.csv +++ b/invenio_rdm_records/fixtures/data/vocabularies/licenses.csv @@ -1,419 +1,419 @@ -id;title__en;description__en;icon;tags;props__url;props__scheme;props__osi_approved -0bsd;BSD Zero Clause License;;;all,software;http://landley.net/toybox/license.html;spdx;y -aal;Attribution Assurance License;;;all,software;https://opensource.org/licenses/attribution;spdx;y -adsl;Amazon Digital Services License;;;all;https://fedoraproject.org/wiki/Licensing/AmazonDigitalServicesLicense;spdx; -afl-1.1;Academic Free License v1.1;;;all,software;http://opensource.linux-mirror.org/licenses/afl-1.1.txt;spdx;y -afl-1.2;Academic Free License v1.2;;;all,software;http://opensource.linux-mirror.org/licenses/afl-1.2.txt;spdx;y -afl-2.0;Academic Free License v2.0;;;all,software;http://wayback.archive.org/web/20060924134533/http://www.opensource.org/licenses/afl-2.0.txt;spdx;y -afl-2.1;Academic Free License v2.1;;;all,software;http://opensource.linux-mirror.org/licenses/afl-2.1.txt;spdx;y -afl-3.0;Academic Free License v3.0;;;all,software;http://www.rosenlaw.com/AFL3.0.htm;spdx;y -agpl-1.0-only;Affero General Public License v1.0 only;;;all,software;http://www.affero.org/oagpl.html;spdx; -agpl-1.0-or-later;Affero General Public License v1.0 or later;;;all,software;http://www.affero.org/oagpl.html;spdx; -agpl-3.0-only;GNU Affero General Public License v3.0 only;;;all,software;https://www.gnu.org/licenses/agpl.txt;spdx;y -agpl-3.0-or-later;GNU Affero General Public License v3.0 or later;;;all,software;https://www.gnu.org/licenses/agpl.txt;spdx;y -amdplpa;AMD's plpa_map.c License;;;all;https://fedoraproject.org/wiki/Licensing/AMD_plpa_map_License;spdx; -aml;Apple MIT License;;;all,software;https://fedoraproject.org/wiki/Licensing/Apple_MIT_License;spdx; -ampas;Academy of Motion Picture Arts and Sciences BSD;;;all;https://fedoraproject.org/wiki/Licensing/BSD#AMPASBSD;spdx; -antlr-pd;ANTLR Software Rights Notice;;;all,software;http://www.antlr2.org/license.html;spdx; -antlr-pd-fallback;ANTLR Software Rights Notice with license fallback;;;all,software;http://www.antlr2.org/license.html;spdx; -apafml;Adobe Postscript AFM License;;;all;https://fedoraproject.org/wiki/Licensing/AdobePostscriptAFM;spdx; -apl-1.0;Adaptive Public License 1.0;;;all,software;https://opensource.org/licenses/APL-1.0;spdx;y -apsl-1.0;Apple Public Source License 1.0;;;all,software;https://fedoraproject.org/wiki/Licensing/Apple_Public_Source_License_1.0;spdx;y -apsl-1.1;Apple Public Source License 1.1;;;all,software;http://www.opensource.apple.com/source/IOSerialFamily/IOSerialFamily-7/APPLE_LICENSE;spdx;y -apsl-1.2;Apple Public Source License 1.2;;;all,software;http://www.samurajdata.se/opensource/mirror/licenses/apsl.php;spdx;y -apsl-2.0;Apple Public Source License 2.0;;;all,software;http://www.opensource.apple.com/license/apsl/;spdx;y -abstyles;Abstyles License;;;all;https://fedoraproject.org/wiki/Licensing/Abstyles;spdx; -adobe-2006;Adobe Systems Incorporated Source Code License Agreement;;;all,software;https://fedoraproject.org/wiki/Licensing/AdobeLicense;spdx; -adobe-glyph;Adobe Glyph List License;;;all;https://fedoraproject.org/wiki/Licensing/MIT#AdobeGlyph;spdx; -afmparse;Afmparse License;;;all;https://fedoraproject.org/wiki/Licensing/Afmparse;spdx; -aladdin;Aladdin Free Public License;;;all;http://pages.cs.wisc.edu/~ghost/doc/AFPL/6.01/Public.htm;spdx; -apache-1.0;Apache License 1.0;;;all,software;http://www.apache.org/licenses/LICENSE-1.0;spdx; -apache-1.1;Apache License 1.1;;;all,software;http://apache.org/licenses/LICENSE-1.1;spdx;y -apache-2.0;Apache License 2.0;A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code.;;recommended,all,software;http://www.apache.org/licenses/LICENSE-2.0;spdx;y -artistic-1.0;Artistic License 1.0;;;all,software;https://opensource.org/licenses/Artistic-1.0;spdx;y -artistic-1.0-perl;Artistic License 1.0 (Perl);;;all,software;http://dev.perl.org/licenses/artistic.html;spdx;y -artistic-1.0-cl8;Artistic License 1.0 w/clause 8;;;all,software;https://opensource.org/licenses/Artistic-1.0;spdx;y -artistic-2.0;Artistic License 2.0;;;all,software;http://www.perlfoundation.org/artistic_license_2_0;spdx;y -bsd-1-clause;BSD 1-Clause License;;;all,software;https://svnweb.freebsd.org/base/head/include/ifaddrs.h?revision=326823;spdx;y -bsd-2-clause;"BSD 2-Clause ""Simplified"" License";;;all,software;https://opensource.org/licenses/BSD-2-Clause;spdx;y -bsd-2-clause-patent;BSD-2-Clause Plus Patent License;;;all,software;https://opensource.org/licenses/BSDplusPatent;spdx;y -bsd-2-clause-views;BSD 2-Clause with views sentence;;;all,software;http://www.freebsd.org/copyright/freebsd-license.html;spdx; -bsd-3-clause;"BSD 3-Clause ""New"" or ""Revised"" License";;;all,software;https://opensource.org/licenses/BSD-3-Clause;spdx;y -bsd-3-clause-attribution;BSD with attribution;;;all,software;https://fedoraproject.org/wiki/Licensing/BSD_with_Attribution;spdx; -bsd-3-clause-clear;BSD 3-Clause Clear License;;;all,software;http://labs.metacarta.com/license-explanation.html#license;spdx; -bsd-3-clause-lbnl;Lawrence Berkeley National Labs BSD variant license;;;all,software;https://fedoraproject.org/wiki/Licensing/LBNLBSD;spdx;y -bsd-3-clause-no-nuclear-license;BSD 3-Clause No Nuclear License;;;all,software;http://download.oracle.com/otn-pub/java/licenses/bsd.txt?AuthParam=1467140197_43d516ce1776bd08a58235a7785be1cc;spdx; -bsd-3-clause-no-nuclear-license-2014;BSD 3-Clause No Nuclear License 2014;;;all,software;https://java.net/projects/javaeetutorial/pages/BerkeleyLicense;spdx; -bsd-3-clause-no-nuclear-warranty;BSD 3-Clause No Nuclear Warranty;;;all,software;"https://jogamp.org/git/?p=gluegen.git;a=blob_plain;f=LICENSE.txt";spdx; -bsd-3-clause-open-mpi;BSD 3-Clause Open MPI variant;;;all,software;https://www.open-mpi.org/community/license.php;spdx; -bsd-4-clause;"BSD 4-Clause ""Original"" or ""Old"" License";;;all,software;http://directory.fsf.org/wiki/License:BSD_4Clause;spdx; -bsd-4-clause-uc;BSD-4-Clause (University of California-Specific);;;all,software;http://www.freebsd.org/copyright/license.html;spdx; -bsd-protection;BSD Protection License;;;all,software;https://fedoraproject.org/wiki/Licensing/BSD_Protection_License;spdx; -bsd-source-code;BSD Source Code Attribution;;;all,software;https://github.com/robbiehanson/CocoaHTTPServer/blob/master/LICENSE.txt;spdx; -bsl-1.0;Boost Software License 1.0;;;all,software;http://www.boost.org/LICENSE_1_0.txt;spdx;y -busl-1.1;Business Source License 1.1;;;all;https://mariadb.com/bsl11/;spdx; -bahyph;Bahyph License;;;all;https://fedoraproject.org/wiki/Licensing/Bahyph;spdx; -barr;Barr License;;;all;https://fedoraproject.org/wiki/Licensing/Barr;spdx; -beerware;Beerware License;;;all;https://fedoraproject.org/wiki/Licensing/Beerware;spdx; -bittorrent-1.0;BitTorrent Open Source License v1.0;;;all,software;http://sources.gentoo.org/cgi-bin/viewvc.cgi/gentoo-x86/licenses/BitTorrent?r1=1.1&r2=1.1.1.1&diff_format=s;spdx; -bittorrent-1.1;BitTorrent Open Source License v1.1;;;all,software;http://directory.fsf.org/wiki/License:BitTorrentOSL1.1;spdx; -blueoak-1.0.0;Blue Oak Model License 1.0.0;;;all;https://blueoakcouncil.org/license/1.0.0;spdx; -borceux;Borceux license;;;all;https://fedoraproject.org/wiki/Licensing/Borceux;spdx; -cal-1.0;Cryptographic Autonomy License 1.0;;;all;http://cryptographicautonomylicense.com/license-text.html;spdx;y -cal-1.0-combined-work-exception;Cryptographic Autonomy License 1.0 (Combined Work Exception);;;all;http://cryptographicautonomylicense.com/license-text.html;spdx;y -catosl-1.1;Computer Associates Trusted Open Source License 1.1;;;all,software;https://opensource.org/licenses/CATOSL-1.1;spdx;y -cc-by-1.0;Creative Commons Attribution 1.0 Generic;;cc-by-icon;all,data;https://creativecommons.org/licenses/by/1.0/legalcode;spdx; -cc-by-2.0;Creative Commons Attribution 2.0 Generic;;cc-by-icon;all,data;https://creativecommons.org/licenses/by/2.0/legalcode;spdx; -cc-by-2.5;Creative Commons Attribution 2.5 Generic;;cc-by-icon;all,data;https://creativecommons.org/licenses/by/2.5/legalcode;spdx; -cc-by-3.0;Creative Commons Attribution 3.0 Unported;;cc-by-icon;all,data;https://creativecommons.org/licenses/by/3.0/legalcode;spdx; -cc-by-3.0-at;Creative Commons Attribution 3.0 Austria;;cc-by-icon;all,data;https://creativecommons.org/licenses/by/3.0/at/legalcode;spdx; -cc-by-3.0-us;Creative Commons Attribution 3.0 United States;;cc-by-icon;all,data;https://creativecommons.org/licenses/by/3.0/us/legalcode;spdx; -cc-by-4.0;Creative Commons Attribution 4.0 International;The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.;cc-by-icon;recommended,all,data;https://creativecommons.org/licenses/by/4.0/legalcode;spdx; -cc-by-nc-1.0;Creative Commons Attribution Non Commercial 1.0 Generic;;cc-by-nc-icon;all,data;https://creativecommons.org/licenses/by-nc/1.0/legalcode;spdx; -cc-by-nc-2.0;Creative Commons Attribution Non Commercial 2.0 Generic;;cc-by-nc-icon;all,data;https://creativecommons.org/licenses/by-nc/2.0/legalcode;spdx; -cc-by-nc-2.5;Creative Commons Attribution Non Commercial 2.5 Generic;;cc-by-nc-icon;all,data;https://creativecommons.org/licenses/by-nc/2.5/legalcode;spdx; -cc-by-nc-3.0;Creative Commons Attribution Non Commercial 3.0 Unported;;cc-by-nc-icon;all,data;https://creativecommons.org/licenses/by-nc/3.0/legalcode;spdx; -cc-by-nc-4.0;Creative Commons Attribution Non Commercial 4.0 International;;cc-by-nc-icon;all,data;https://creativecommons.org/licenses/by-nc/4.0/legalcode;spdx; -cc-by-nc-nd-1.0;Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic;;cc-by-nc-nd-icon;all,data;https://creativecommons.org/licenses/by-nd-nc/1.0/legalcode;spdx; -cc-by-nc-nd-2.0;Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic;;cc-by-nc-nd-icon;all,data;https://creativecommons.org/licenses/by-nc-nd/2.0/legalcode;spdx; -cc-by-nc-nd-2.5;Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic;;cc-by-nc-nd-icon;all,data;https://creativecommons.org/licenses/by-nc-nd/2.5/legalcode;spdx; -cc-by-nc-nd-3.0;Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported;;cc-by-nc-nd-icon;all,data;https://creativecommons.org/licenses/by-nc-nd/3.0/legalcode;spdx; -cc-by-nc-nd-3.0-igo;Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO;;cc-by-nc-nd-icon;all,data;https://creativecommons.org/licenses/by-nc-nd/3.0/igo/legalcode;spdx; -cc-by-nc-nd-4.0;Creative Commons Attribution Non Commercial No Derivatives 4.0 International;;cc-by-nc-nd-icon;all,data;https://creativecommons.org/licenses/by-nc-nd/4.0/legalcode;spdx; -cc-by-nc-sa-1.0;Creative Commons Attribution Non Commercial Share Alike 1.0 Generic;;cc-by-nc-sa-icon;all,data;https://creativecommons.org/licenses/by-nc-sa/1.0/legalcode;spdx; -cc-by-nc-sa-2.0;Creative Commons Attribution Non Commercial Share Alike 2.0 Generic;;cc-by-nc-sa-icon;all,data;https://creativecommons.org/licenses/by-nc-sa/2.0/legalcode;spdx; -cc-by-nc-sa-2.5;Creative Commons Attribution Non Commercial Share Alike 2.5 Generic;;cc-by-nc-sa-icon;all,data;https://creativecommons.org/licenses/by-nc-sa/2.5/legalcode;spdx; -cc-by-nc-sa-3.0;Creative Commons Attribution Non Commercial Share Alike 3.0 Unported;;cc-by-nc-sa-icon;all,data;https://creativecommons.org/licenses/by-nc-sa/3.0/legalcode;spdx; -cc-by-nc-sa-4.0;Creative Commons Attribution Non Commercial Share Alike 4.0 International;;cc-by-nc-sa-icon;all,data;https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode;spdx; -cc-by-nd-1.0;Creative Commons Attribution No Derivatives 1.0 Generic;;cc-by-nd-icon;all,data;https://creativecommons.org/licenses/by-nd/1.0/legalcode;spdx; -cc-by-nd-2.0;Creative Commons Attribution No Derivatives 2.0 Generic;;cc-by-nd-icon;all,data;https://creativecommons.org/licenses/by-nd/2.0/legalcode;spdx; -cc-by-nd-2.5;Creative Commons Attribution No Derivatives 2.5 Generic;;cc-by-nd-icon;all,data;https://creativecommons.org/licenses/by-nd/2.5/legalcode;spdx; -cc-by-nd-3.0;Creative Commons Attribution No Derivatives 3.0 Unported;;cc-by-nd-icon;all,data;https://creativecommons.org/licenses/by-nd/3.0/legalcode;spdx; -cc-by-nd-4.0;Creative Commons Attribution No Derivatives 4.0 International;;cc-by-nd-icon;all,data;https://creativecommons.org/licenses/by-nd/4.0/legalcode;spdx; -cc-by-sa-1.0;Creative Commons Attribution Share Alike 1.0 Generic;;cc-by-sa-icon;all,data;https://creativecommons.org/licenses/by-sa/1.0/legalcode;spdx; -cc-by-sa-2.0;Creative Commons Attribution Share Alike 2.0 Generic;;cc-by-sa-icon;all,data;https://creativecommons.org/licenses/by-sa/2.0/legalcode;spdx; -cc-by-sa-2.0-uk;Creative Commons Attribution Share Alike 2.0 England and Wales;;;all,data;https://creativecommons.org/licenses/by-sa/2.0/uk/legalcode;spdx; -cc-by-sa-2.5;Creative Commons Attribution Share Alike 2.5 Generic;;cc-by-sa-icon;all,data;https://creativecommons.org/licenses/by-sa/2.5/legalcode;spdx; -cc-by-sa-3.0;Creative Commons Attribution Share Alike 3.0 Unported;;cc-by-sa-icon;all,data;https://creativecommons.org/licenses/by-sa/3.0/legalcode;spdx; -cc-by-sa-3.0-at;Creative Commons Attribution-Share Alike 3.0 Austria;;cc-by-sa-icon;all,data;https://creativecommons.org/licenses/by-sa/3.0/at/legalcode;spdx; -cc-by-sa-4.0;Creative Commons Attribution Share Alike 4.0 International;Permits almost any use subject to providing credit and license notice. Frequently used for media assets and educational materials. The most common license for Open Access scientific publications. Not recommended for software.;cc-by-sa-icon;recommended,all,data;https://creativecommons.org/licenses/by-sa/4.0/legalcode;spdx; -cc-pddc;Creative Commons Public Domain Dedication and Certification;;cc-pddc-icon;all;https://creativecommons.org/licenses/publicdomain/;spdx; -cc0-1.0;Creative Commons Zero v1.0 Universal;CC0 waives copyright interest in a work you've created and dedicates it to the world-wide public domain. Use CC0 to opt out of copyright entirely and ensure your work has the widest reach.;cc-cc0-icon;recommended,all,data,software;https://creativecommons.org/publicdomain/zero/1.0/legalcode;spdx; -cddl-1.0;Common Development and Distribution License 1.0;;;all,software;https://opensource.org/licenses/cddl1;spdx;y -cddl-1.1;Common Development and Distribution License 1.1;;;all,software;http://glassfish.java.net/public/CDDL+GPL_1_1.html;spdx; -cdla-permissive-1.0;Community Data License Agreement Permissive 1.0;;;all,data;https://cdla.io/permissive-1-0;spdx; -cdla-sharing-1.0;Community Data License Agreement Sharing 1.0;;;all,data;https://cdla.io/sharing-1-0;spdx; -cecill-1.0;CeCILL Free Software License Agreement v1.0;;;all,software;http://www.cecill.info/licences/Licence_CeCILL_V1-fr.html;spdx; -cecill-1.1;CeCILL Free Software License Agreement v1.1;;;all,software;http://www.cecill.info/licences/Licence_CeCILL_V1.1-US.html;spdx; -cecill-2.0;CeCILL Free Software License Agreement v2.0;;;all,software;http://www.cecill.info/licences/Licence_CeCILL_V2-en.html;spdx; -cecill-2.1;CeCILL Free Software License Agreement v2.1;;;all,software;http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.html;spdx;y -cecill-b;CeCILL-B Free Software License Agreement;;;all,software;http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html;spdx; -cecill-c;CeCILL-C Free Software License Agreement;;;all,software;http://www.cecill.info/licences/Licence_CeCILL-C_V1-en.html;spdx; -cern-ohl-1.1;CERN Open Hardware Licence v1.1;;;all;https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.1;spdx; -cern-ohl-1.2;CERN Open Hardware Licence v1.2;;;all;https://www.ohwr.org/project/licenses/wikis/cern-ohl-v1.2;spdx; -cern-ohl-p-2.0;CERN Open Hardware Licence Version 2 - Permissive;;;all;https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2;spdx; -cern-ohl-s-2.0;CERN Open Hardware Licence Version 2 - Strongly Reciprocal;;;all;https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2;spdx; -cern-ohl-w-2.0;CERN Open Hardware Licence Version 2 - Weakly Reciprocal;;;all;https://www.ohwr.org/project/cernohl/wikis/Documents/CERN-OHL-version-2;spdx; -cnri-jython;CNRI Jython License;;;all,software;http://www.jython.org/license.html;spdx; -cnri-python;CNRI Python License;;;all,software;https://opensource.org/licenses/CNRI-Python;spdx;y -cnri-python-gpl-compatible;CNRI Python Open Source GPL Compatible License Agreement;;;all,software;http://www.python.org/download/releases/1.6.1/download_win/;spdx; -cpal-1.0;Common Public Attribution License 1.0;;;all,software;https://opensource.org/licenses/CPAL-1.0;spdx;y -cpl-1.0;Common Public License 1.0;;;all;https://opensource.org/licenses/CPL-1.0;spdx;y -cpol-1.02;Code Project Open License 1.02;;;all;http://www.codeproject.com/info/cpol10.aspx;spdx; -cua-opl-1.0;CUA Office Public License v1.0;;;all,software;https://opensource.org/licenses/CUA-OPL-1.0;spdx;y -caldera;Caldera License;;;all;http://www.lemis.com/grog/UNIX/ancient-source-all.pdf;spdx; -clartistic;Clarified Artistic License;;;all;http://gianluca.dellavedova.org/2011/01/03/clarified-artistic-license/;spdx; -condor-1.1;Condor Public License v1.1;;;all;http://research.cs.wisc.edu/condor/license.html#condor;spdx; -crossword;Crossword License;;;all;https://fedoraproject.org/wiki/Licensing/Crossword;spdx; -crystalstacker;CrystalStacker License;;;all;https://fedoraproject.org/wiki/Licensing:CrystalStacker?rd=Licensing/CrystalStacker;spdx; -cube;Cube License;;;all;https://fedoraproject.org/wiki/Licensing/Cube;spdx; -d-fsl-1.0;Deutsche Freie Software Lizenz;;;all,software;http://www.dipp.nrw.de/d-fsl/lizenzen/;spdx; -doc;DOC License;;;all;http://www.cs.wustl.edu/~schmidt/ACE-copying.html;spdx; -dsdp;DSDP License;;;all;https://fedoraproject.org/wiki/Licensing/DSDP;spdx; -dotseqn;Dotseqn License;;;all;https://fedoraproject.org/wiki/Licensing/Dotseqn;spdx; -ecl-1.0;Educational Community License v1.0;;;all,software;https://opensource.org/licenses/ECL-1.0;spdx;y -ecl-2.0;Educational Community License v2.0;;;all,software;https://opensource.org/licenses/ECL-2.0;spdx;y -efl-1.0;Eiffel Forum License v1.0;;;all,software;http://www.eiffel-nice.org/license/forum.txt;spdx;y -efl-2.0;Eiffel Forum License v2.0;;;all,software;http://www.eiffel-nice.org/license/eiffel-forum-license-2.html;spdx;y -epics;EPICS Open License;;;all;https://epics.anl.gov/license/open.php;spdx; -epl-1.0;Eclipse Public License 1.0;;;all,software;http://www.eclipse.org/legal/epl-v10.html;spdx;y -epl-2.0;Eclipse Public License 2.0;;;all,software;https://www.eclipse.org/legal/epl-2.0;spdx;y -eudatagrid;EU DataGrid Software License;;;all,software;http://eu-datagrid.web.cern.ch/eu-datagrid/license.html;spdx;y -eupl-1.0;European Union Public License 1.0;;;all,sofware;http://ec.europa.eu/idabc/en/document/7330.html;spdx; -eupl-1.1;European Union Public License 1.1;;;all,software;https://joinup.ec.europa.eu/software/page/eupl/licence-eupl;spdx;y -eupl-1.2;European Union Public License 1.2;;;all,software;https://joinup.ec.europa.eu/page/eupl-text-11-12;spdx;y -entessa;Entessa Public License v1.0;;;all,software;https://opensource.org/licenses/Entessa;spdx;y -erlpl-1.1;Erlang Public License v1.1;;;all;http://www.erlang.org/EPLICENSE;spdx; -eurosym;Eurosym License;;;all;https://fedoraproject.org/wiki/Licensing/Eurosym;spdx; -fsfap;FSF All Permissive License;;;all;https://www.gnu.org/prep/maintain/html_node/License-Notices-for-Other-Files.html;spdx; -fsful;FSF Unlimited License;;;all;https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License;spdx; -fsfullr;FSF Unlimited License (with License Retention);;;all;https://fedoraproject.org/wiki/Licensing/FSF_Unlimited_License#License_Retention_Variant;spdx; -ftl;Freetype Project License;;;all;http://freetype.fis.uniroma2.it/FTL.TXT;spdx; -fair;Fair License;;;all,software;http://fairlicense.org/;spdx;y -frameworx-1.0;Frameworx Open License 1.0;;;all,software;https://opensource.org/licenses/Frameworx-1.0;spdx;y -freeimage;FreeImage Public License v1.0;;;all;http://freeimage.sourceforge.net/freeimage-license.txt;spdx; -gfdl-1.1-invariants-only;GNU Free Documentation License v1.1 only - invariants;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt;spdx; -gfdl-1.1-invariants-or-later;GNU Free Documentation License v1.1 or later - invariants;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt;spdx; -gfdl-1.1-no-invariants-only;GNU Free Documentation License v1.1 only - no invariants;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt;spdx; -gfdl-1.1-no-invariants-or-later;GNU Free Documentation License v1.1 or later - no invariants;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt;spdx; -gfdl-1.1-only;GNU Free Documentation License v1.1 only;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt;spdx; -gfdl-1.1-or-later;GNU Free Documentation License v1.1 or later;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.1.txt;spdx; -gfdl-1.2-invariants-only;GNU Free Documentation License v1.2 only - invariants;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt;spdx; -gfdl-1.2-invariants-or-later;GNU Free Documentation License v1.2 or later - invariants;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt;spdx; -gfdl-1.2-no-invariants-only;GNU Free Documentation License v1.2 only - no invariants;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt;spdx; -gfdl-1.2-no-invariants-or-later;GNU Free Documentation License v1.2 or later - no invariants;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt;spdx; -gfdl-1.2-only;GNU Free Documentation License v1.2 only;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt;spdx; -gfdl-1.2-or-later;GNU Free Documentation License v1.2 or later;;;all;https://www.gnu.org/licenses/old-licenses/fdl-1.2.txt;spdx; -gfdl-1.3-invariants-only;GNU Free Documentation License v1.3 only - invariants;;;all;https://www.gnu.org/licenses/fdl-1.3.txt;spdx; -gfdl-1.3-invariants-or-later;GNU Free Documentation License v1.3 or later - invariants;;;all;https://www.gnu.org/licenses/fdl-1.3.txt;spdx; -gfdl-1.3-no-invariants-only;GNU Free Documentation License v1.3 only - no invariants;;;all;https://www.gnu.org/licenses/fdl-1.3.txt;spdx; -gfdl-1.3-no-invariants-or-later;GNU Free Documentation License v1.3 or later - no invariants;;;all;https://www.gnu.org/licenses/fdl-1.3.txt;spdx; -gfdl-1.3-only;GNU Free Documentation License v1.3 only;;;all;https://www.gnu.org/licenses/fdl-1.3.txt;spdx; -gfdl-1.3-or-later;GNU Free Documentation License v1.3 or later;;;all;https://www.gnu.org/licenses/fdl-1.3.txt;spdx; -gl2ps;GL2PS License;;;all;http://www.geuz.org/gl2ps/COPYING.GL2PS;spdx; -glwtpl;Good Luck With That Public License;;;all;https://github.com/me-shaon/GLWTPL/commit/da5f6bc734095efbacb442c0b31e33a65b9d6e85;spdx; -gpl-1.0-only;GNU General Public License v1.0 only;;;all,software;https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html;spdx; -gpl-1.0-or-later;GNU General Public License v1.0 or later;;;all,software;https://www.gnu.org/licenses/old-licenses/gpl-1.0-standalone.html;spdx; -gpl-2.0-only;GNU General Public License v2.0 only;;;all,software;https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html;spdx;y -gpl-2.0-or-later;GNU General Public License v2.0 or later;;;all,software;https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html;spdx;y -gpl-3.0-only;GNU General Public License v3.0 only;;;all,software;https://www.gnu.org/licenses/gpl-3.0-standalone.html;spdx;y -gpl-3.0-or-later;GNU General Public License v3.0 or later;Permissions of this strong copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights.;;recommended,all,software;https://www.gnu.org/licenses/gpl-3.0-standalone.html;spdx;y -giftware;Giftware License;;;all;http://liballeg.org/license.html#allegro-4-the-giftware-license;spdx; -glide;3dfx Glide License;;;all;http://www.users.on.net/~triforce/glidexp/COPYING.txt;spdx; -glulxe;Glulxe License;;;all;https://fedoraproject.org/wiki/Licensing/Glulxe;spdx; -hpnd;Historical Permission Notice and Disclaimer;;;all,software;https://opensource.org/licenses/HPND;spdx;y -hpnd-sell-variant;Historical Permission Notice and Disclaimer - sell variant;;;all,software;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/net/sunrpc/auth_gss/gss_generic_token.c?h=v4.19;spdx; -htmltidy;HTML Tidy License;;;all;https://github.com/htacg/tidy-html5/blob/next/README/LICENSE.md;spdx; -haskellreport;Haskell Language Report License;;;all;https://fedoraproject.org/wiki/Licensing/Haskell_Language_Report_License;spdx; -hippocratic-2.1;Hippocratic License 2.1;;;all;https://firstdonoharm.dev/version/2/1/license.html;spdx; -ibm-pibs;IBM PowerPC Initialization and Boot Software;;;all,software;"http://git.denx.de/?p=u-boot.git;a=blob;f=arch/powerpc/cpu/ppc4xx/miiphy.c;h=297155fdafa064b955e53e9832de93bfb0cfb85b;hb=9fab4bf4cc077c21e43941866f3f2c196f28670d";spdx; -icu;ICU License;;;all;http://source.icu-project.org/repos/icu/icu/trunk/license.html;spdx; -ijg;Independent JPEG Group License;;;all;http://dev.w3.org/cvsweb/Amaya/libjpeg/Attic/README?rev=1.2;spdx; -ipa;IPA Font License;;;all,software;https://opensource.org/licenses/IPA;spdx;y -ipl-1.0;IBM Public License v1.0;;;all,software;https://opensource.org/licenses/IPL-1.0;spdx;y -isc;ISC License;;;all,software;https://www.isc.org/downloads/software-support-policy/isc-license/;spdx;y -imagemagick;ImageMagick License;;;all;http://www.imagemagick.org/script/license.php;spdx; -imlib2;Imlib2 License;;;all;http://trac.enlightenment.org/e/browser/trunk/imlib2/COPYING;spdx; -info-zip;Info-ZIP License;;;all;http://www.info-zip.org/license.html;spdx; -intel;Intel Open Source License;;;all,software;https://opensource.org/licenses/Intel;spdx;y -intel-acpi;Intel ACPI Software License Agreement;;;all,software;https://fedoraproject.org/wiki/Licensing/Intel_ACPI_Software_License_Agreement;spdx; -interbase-1.0;Interbase Public License v1.0;;;all;https://web.archive.org/web/20060319014854/http://info.borland.com/devsupport/interbase/opensource/IPL.html;spdx; -jpnic;Japan Network Information Center License;;;all;https://gitlab.isc.org/isc-projects/bind9/blob/master/COPYRIGHT#L366;spdx; -json;JSON License;;;all;http://www.json.org/license.html;spdx; -jasper-2.0;JasPer License;;;all;http://www.ece.uvic.ca/~mdadams/jasper/LICENSE;spdx; -lal-1.2;Licence Art Libre 1.2;;;all;http://artlibre.org/licence/lal/licence-art-libre-12/;spdx; -lal-1.3;Licence Art Libre 1.3;;;all;https://artlibre.org/;spdx; -lgpl-2.0-only;GNU Library General Public License v2 only;;;all,software;https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html;spdx;y -lgpl-2.0-or-later;GNU Library General Public License v2 or later;;;all,software;https://www.gnu.org/licenses/old-licenses/lgpl-2.0-standalone.html;spdx;y -lgpl-2.1-only;GNU Lesser General Public License v2.1 only;;;all,software;https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html;spdx;y -lgpl-2.1-or-later;GNU Lesser General Public License v2.1 or later;;;all,software;https://www.gnu.org/licenses/old-licenses/lgpl-2.1-standalone.html;spdx;y -lgpl-3.0-only;GNU Lesser General Public License v3.0 only;;;all,software;https://www.gnu.org/licenses/lgpl-3.0-standalone.html;spdx;y -lgpl-3.0-or-later;GNU Lesser General Public License v3.0 or later;Permissions of this copyleft license are conditioned on making available complete source code of licensed works and modifications under the same license or the GNU GPLv3. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. However, a larger work using the licensed work through interfaces provided by the licensed work may be distributed under different terms and without source code for the larger work.;;all,software;https://www.gnu.org/licenses/lgpl-3.0-standalone.html;spdx;y -lgpllr;Lesser General Public License For Linguistic Resources;;;all,software;http://www-igm.univ-mlv.fr/~unitex/lgpllr.html;spdx; -lpl-1.0;Lucent Public License Version 1.0;;;all,software;https://opensource.org/licenses/LPL-1.0;spdx;y -lpl-1.02;Lucent Public License v1.02;;;all,software;http://plan9.bell-labs.com/plan9/license.html;spdx;y -lppl-1.0;LaTeX Project Public License v1.0;;;all,software;http://www.latex-project.org/lppl/lppl-1-0.txt;spdx; -lppl-1.1;LaTeX Project Public License v1.1;;;all,software;http://www.latex-project.org/lppl/lppl-1-1.txt;spdx; -lppl-1.2;LaTeX Project Public License v1.2;;;all,software;http://www.latex-project.org/lppl/lppl-1-2.txt;spdx; -lppl-1.3a;LaTeX Project Public License v1.3a;;;all,software;http://www.latex-project.org/lppl/lppl-1-3a.txt;spdx; -lppl-1.3c;LaTeX Project Public License v1.3c;;;all,software;http://www.latex-project.org/lppl/lppl-1-3c.txt;spdx;y -latex2e;Latex2e License;;;all;https://fedoraproject.org/wiki/Licensing/Latex2e;spdx; -leptonica;Leptonica License;;;all;https://fedoraproject.org/wiki/Licensing/Leptonica;spdx; -liliq-p-1.1;Licence Libre du Québec – Permissive version 1.1;;;all;https://forge.gouv.qc.ca/licence/fr/liliq-v1-1/;spdx;y -liliq-r-1.1;Licence Libre du Québec – Réciprocité version 1.1;;;all;https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-liliq-r-v1-1/;spdx;y -liliq-rplus-1.1;Licence Libre du Québec – Réciprocité forte version 1.1;;;all;https://www.forge.gouv.qc.ca/participez/licence-logicielle/licence-libre-du-quebec-liliq-en-francais/licence-libre-du-quebec-reciprocite-forte-liliq-r-v1-1/;spdx;y -libpng;libpng License;;;all,software;http://www.libpng.org/pub/png/src/libpng-LICENSE.txt;spdx; -linux-openib;Linux Kernel Variant of OpenIB.org license;;;all;https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/infiniband/core/sa.h;spdx; -mit;MIT License;A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code.;;recommended,all,software;https://opensource.org/licenses/MIT;spdx;y -mit-0;MIT No Attribution;;;all,software;https://github.com/aws/mit-0;spdx;y -mit-cmu;CMU License;;;all,software;https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#CMU_Style;spdx; -mit-advertising;Enlightenment License (e16);;;all,software;https://fedoraproject.org/wiki/Licensing/MIT_With_Advertising;spdx; -mit-enna;enna License;;;all,software;https://fedoraproject.org/wiki/Licensing/MIT#enna;spdx; -mit-feh;feh License;;;all,software;https://fedoraproject.org/wiki/Licensing/MIT#feh;spdx; -mit-open-group;MIT Open Group variant;;;all,software;https://gitlab.freedesktop.org/xorg/app/iceauth/-/blob/master/COPYING;spdx; -mitnfa;MIT +no-false-attribs license;;;all,software;https://fedoraproject.org/wiki/Licensing/MITNFA;spdx; -mpl-1.0;Mozilla Public License 1.0;;;all,software;http://www.mozilla.org/MPL/MPL-1.0.html;spdx;y -mpl-1.1;Mozilla Public License 1.1;;;all,software;http://www.mozilla.org/MPL/MPL-1.1.html;spdx;y -mpl-2.0;Mozilla Public License 2.0;;;all,software;http://www.mozilla.org/MPL/2.0/;spdx;y -mpl-2.0-no-copyleft-exception;Mozilla Public License 2.0 (no copyleft exception);;;all,software;http://www.mozilla.org/MPL/2.0/;spdx;y -ms-pl;Microsoft Public License;;;all,software;http://www.microsoft.com/opensource/licenses.mspx;spdx;y -ms-rl;Microsoft Reciprocal License;;;all,software;http://www.microsoft.com/opensource/licenses.mspx;spdx;y -mtll;Matrix Template Library License;;;all;https://fedoraproject.org/wiki/Licensing/Matrix_Template_Library_License;spdx; -makeindex;MakeIndex License;;;all;https://fedoraproject.org/wiki/Licensing/MakeIndex;spdx; -miros;The MirOS Licence;;;all,software;https://opensource.org/licenses/MirOS;spdx;y -motosoto;Motosoto License;;;all,software;https://opensource.org/licenses/Motosoto;spdx;y -mulanpsl-1.0;Mulan Permissive Software License, Version 1;;;all;https://license.coscl.org.cn/MulanPSL/;spdx; -mulanpsl-2.0;Mulan Permissive Software License, Version 2;;;all;https://license.coscl.org.cn/MulanPSL2/;spdx;y -multics;Multics License;;;all,software;https://opensource.org/licenses/Multics;spdx;y -mup;Mup License;;;all;https://fedoraproject.org/wiki/Licensing/Mup;spdx; -nasa-1.3;NASA Open Source Agreement 1.3;;;all,software;http://ti.arc.nasa.gov/opensource/nosa/;spdx;y -nbpl-1.0;Net Boolean Public License v1;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=37b4b3f6cc4bf34e1d3dec61e69914b9819d8894";spdx; -ncgl-uk-2.0;Non-Commercial Government Licence;;;all;https://github.com/spdx/license-list-XML/blob/master/src/Apache-2.0.xml;spdx; -ncsa;University of Illinois/NCSA Open Source License;;;all,software;http://otm.illinois.edu/uiuc_openSource;spdx;y -ngpl;Nethack General Public License;;;all,software;https://opensource.org/licenses/NGPL;spdx;y -nist-pd;NIST Public Domain Notice;;;all;https://github.com/tcheneau/simpleRPL/blob/e645e69e38dd4e3ccfeceb2db8cba05b7c2e0cd3/LICENSE.txt;spdx; -nist-pd-fallback;NIST Public Domain Notice with license fallback;;;all;https://github.com/usnistgov/jsip/blob/59700e6926cbe96c5cdae897d9a7d2656b42abe3/LICENSE;spdx; -nlod-1.0;Norwegian Licence for Open Government Data;;;all;http://data.norge.no/nlod/en/1.0;spdx; -nlpl;No Limit Public License;;;all;https://fedoraproject.org/wiki/Licensing/NLPL;spdx; -nosl;Netizen Open Source License;;;all,software;http://bits.netizen.com.au/licenses/NOSL/nosl.txt;spdx; -npl-1.0;Netscape Public License v1.0;;;all;http://www.mozilla.org/MPL/NPL/1.0/;spdx; -npl-1.1;Netscape Public License v1.1;;;all;http://www.mozilla.org/MPL/NPL/1.1/;spdx; -nposl-3.0;Non-Profit Open Software License 3.0;;;all,software;https://opensource.org/licenses/NOSL3.0;spdx;y -nrl;NRL License;;;all;http://web.mit.edu/network/isakmp/nrllicense.html;spdx; -ntp;NTP License;;;all,software;https://opensource.org/licenses/NTP;spdx;y -ntp-0;NTP No Attribution;;;all,software;https://github.com/tytso/e2fsprogs/blob/master/lib/et/et_name.c;spdx; -naumen;Naumen Public License;;;all,software;https://opensource.org/licenses/Naumen;spdx;y -net-snmp;Net-SNMP License;;;all;http://net-snmp.sourceforge.net/about/license.html;spdx; -netcdf;NetCDF license;;;all;http://www.unidata.ucar.edu/software/netcdf/copyright.html;spdx; -newsletr;Newsletr License;;;all;https://fedoraproject.org/wiki/Licensing/Newsletr;spdx; -nokia;Nokia Open Source License;;;all,software;https://opensource.org/licenses/nokia;spdx;y -noweb;Noweb License;;;all;https://fedoraproject.org/wiki/Licensing/Noweb;spdx; -o-uda-1.0;Open Use of Data Agreement v1.0;;;all;https://github.com/microsoft/Open-Use-of-Data-Agreement/blob/v1.0/O-UDA-1.0.md;spdx; -occt-pl;Open CASCADE Technology Public License;;;all;http://www.opencascade.com/content/occt-public-license;spdx; -oclc-2.0;OCLC Research Public License 2.0;;;all,software;http://www.oclc.org/research/activities/software/license/v2final.htm;spdx;y -odc-by-1.0;Open Data Commons Attribution License v1.0;;;all,data;https://opendatacommons.org/licenses/by/1.0/;spdx; -odbl-1.0;ODC Open Database License v1.0;;;all,data;http://www.opendatacommons.org/licenses/odbl/1.0/;spdx; -ofl-1.0;SIL Open Font License 1.0;;;all,software;http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web;spdx; -ofl-1.0-rfn;SIL Open Font License 1.0 with Reserved Font Name;;;all,software;http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web;spdx; -ofl-1.0-no-rfn;SIL Open Font License 1.0 with no Reserved Font Name;;;all,software;http://scripts.sil.org/cms/scripts/page.php?item_id=OFL10_web;spdx; -ofl-1.1;SIL Open Font License 1.1;;;all,software;http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web;spdx;y -ofl-1.1-rfn;SIL Open Font License 1.1 with Reserved Font Name;;;all,software;http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web;spdx;y -ofl-1.1-no-rfn;SIL Open Font License 1.1 with no Reserved Font Name;;;all,software;http://scripts.sil.org/cms/scripts/page.php?item_id=OFL_web;spdx;y -ogc-1.0;OGC Software License, Version 1.0;;;all,software;https://www.ogc.org/ogc/software/1.0;spdx; -ogl-canada-2.0;Open Government Licence - Canada;;;all,data;https://open.canada.ca/en/open-government-licence-canada;spdx; -ogl-uk-1.0;Open Government Licence v1.0;;;all,data,software;http://www.nationalarchives.gov.uk/doc/open-government-licence/version/1/;spdx; -ogl-uk-2.0;Open Government Licence v2.0;;;all,data,software;http://www.nationalarchives.gov.uk/doc/open-government-licence/version/2/;spdx; -ogl-uk-3.0;Open Government Licence v3.0;;;all,data,software;http://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/;spdx; -ogtsl;Open Group Test Suite License;;;all,software;http://www.opengroup.org/testing/downloads/The_Open_Group_TSL.txt;spdx;y -oldap-1.1;Open LDAP Public License v1.1;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=806557a5ad59804ef3a44d5abfbe91d706b0791f";spdx; -oldap-1.2;Open LDAP Public License v1.2;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=42b0383c50c299977b5893ee695cf4e486fb0dc7";spdx; -oldap-1.3;Open LDAP Public License v1.3;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=e5f8117f0ce088d0bd7a8e18ddf37eaa40eb09b1";spdx; -oldap-1.4;Open LDAP Public License v1.4;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=c9f95c2f3f2ffb5e0ae55fe7388af75547660941";spdx; -oldap-2.0;Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B);;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cbf50f4e1185a21abd4c0a54d3f4341fe28f36ea";spdx; -oldap-2.0.1;Open LDAP Public License v2.0.1;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b6d68acd14e51ca3aab4428bf26522aa74873f0e";spdx; -oldap-2.1;Open LDAP Public License v2.1;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=b0d176738e96a0d3b9f85cb51e140a86f21be715";spdx; -oldap-2.2;Open LDAP Public License v2.2;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=470b0c18ec67621c85881b2733057fecf4a1acc3";spdx; -oldap-2.2.1;Open LDAP Public License v2.2.1;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=4bc786f34b50aa301be6f5600f58a980070f481e";spdx; -oldap-2.2.2;Open LDAP Public License 2.2.2;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=df2cc1e21eb7c160695f5b7cffd6296c151ba188";spdx; -oldap-2.3;Open LDAP Public License v2.3;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=d32cf54a32d581ab475d23c810b0a7fbaf8d63c3";spdx; -oldap-2.4;Open LDAP Public License v2.4;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=cd1284c4a91a8a380d904eee68d1583f989ed386";spdx; -oldap-2.5;Open LDAP Public License v2.5;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=6852b9d90022e8593c98205413380536b1b5a7cf";spdx; -oldap-2.6;Open LDAP Public License v2.6;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=1cae062821881f41b73012ba816434897abf4205";spdx; -oldap-2.7;Open LDAP Public License v2.7;;;all;"http://www.openldap.org/devel/gitweb.cgi?p=openldap.git;a=blob;f=LICENSE;hb=47c2415c1df81556eeb39be6cad458ef87c534a2";spdx; -oldap-2.8;Open LDAP Public License v2.8;;;all;http://www.openldap.org/software/release/license.html;spdx;y -oml;Open Market License;;;all;https://fedoraproject.org/wiki/Licensing/Open_Market_License;spdx; -opl-1.0;Open Public License v1.0;;;all;http://old.koalateam.com/jackaroo/OPL_1_0.TXT;spdx; -oset-pl-2.1;OSET Public License version 2.1;;;all;http://www.osetfoundation.org/public-license;spdx;y -osl-1.0;Open Software License 1.0;;;all,software;https://opensource.org/licenses/OSL-1.0;spdx;y -osl-1.1;Open Software License 1.1;;;all,software;https://fedoraproject.org/wiki/Licensing/OSL1.1;spdx; -osl-2.0;Open Software License 2.0;;;all,software;http://web.archive.org/web/20041020171434/http://www.rosenlaw.com/osl2.0.html;spdx;y -osl-2.1;Open Software License 2.1;;;all,software;http://web.archive.org/web/20050212003940/http://www.rosenlaw.com/osl21.htm;spdx;y -osl-3.0;Open Software License 3.0;;;all,software;https://web.archive.org/web/20120101081418/http://rosenlaw.com:80/OSL3.0.htm;spdx;y -openssl;OpenSSL License;;;all;http://www.openssl.org/source/license.html;spdx; -pddl-1.0;ODC Public Domain Dedication & License 1.0;;;all,data;http://opendatacommons.org/licenses/pddl/1.0/;spdx; -php-3.0;PHP License v3.0;;;all,software;http://www.php.net/license/3_0.txt;spdx;y -php-3.01;PHP License v3.01;;;all,software;http://www.php.net/license/3_01.txt;spdx;y -psf-2.0;Python Software Foundation License 2.0;;;all,software;https://opensource.org/licenses/Python-2.0;spdx; -parity-6.0.0;The Parity Public License 6.0.0;;;all;https://paritylicense.com/versions/6.0.0.html;spdx; -parity-7.0.0;The Parity Public License 7.0.0;;;all;https://paritylicense.com/versions/7.0.0.html;spdx; -plexus;Plexus Classworlds License;;;all;https://fedoraproject.org/wiki/Licensing/Plexus_Classworlds_License;spdx; -polyform-noncommercial-1.0.0;PolyForm Noncommercial License 1.0.0;;;all;https://polyformproject.org/licenses/noncommercial/1.0.0;spdx; -polyform-small-business-1.0.0;PolyForm Small Business License 1.0.0;;;all;https://polyformproject.org/licenses/small-business/1.0.0;spdx; -postgresql;PostgreSQL License;;;all,software;http://www.postgresql.org/about/licence;spdx;y -python-2.0;Python License 2.0;;;all,software;https://opensource.org/licenses/Python-2.0;spdx;y -qpl-1.0;Q Public License 1.0;;;all,software;http://doc.qt.nokia.com/3.3/license.html;spdx;y -qhull;Qhull License;;;all;https://fedoraproject.org/wiki/Licensing/Qhull;spdx; -rhecos-1.1;Red Hat eCos Public License v1.1;;;all;http://ecos.sourceware.org/old-license.html;spdx; -rpl-1.1;Reciprocal Public License 1.1;;;all,software;https://opensource.org/licenses/RPL-1.1;spdx;y -rpl-1.5;Reciprocal Public License 1.5;;;all,software;https://opensource.org/licenses/RPL-1.5;spdx;y -rpsl-1.0;RealNetworks Public Source License v1.0;;;all,software;https://helixcommunity.org/content/rpsl;spdx;y -rsa-md;RSA Message-Digest License;;;all;http://www.faqs.org/rfcs/rfc1321.html;spdx; -rscpl;Ricoh Source Code Public License;;;all,software;http://wayback.archive.org/web/20060715140826/http://www.risource.org/RPL/RPL-1.0A.shtml;spdx;y -rdisc;Rdisc License;;;all;https://fedoraproject.org/wiki/Licensing/Rdisc_License;spdx; -ruby;Ruby License;;;all;http://www.ruby-lang.org/en/LICENSE.txt;spdx; -sax-pd;Sax Public Domain Notice;;;all;http://www.saxproject.org/copying.html;spdx; -scea;SCEA Shared Source License;;;all;http://research.scea.com/scea_shared_source_license.html;spdx; -sgi-b-1.0;SGI Free Software License B v1.0;;;all;http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.1.0.html;spdx; -sgi-b-1.1;SGI Free Software License B v1.1;;;all;http://oss.sgi.com/projects/FreeB/;spdx; -sgi-b-2.0;SGI Free Software License B v2.0;;;all;http://oss.sgi.com/projects/FreeB/SGIFreeSWLicB.2.0.pdf;spdx; -shl-0.5;Solderpad Hardware License v0.5;;;all;https://solderpad.org/licenses/SHL-0.5/;spdx; -shl-0.51;Solderpad Hardware License, Version 0.51;;;all;https://solderpad.org/licenses/SHL-0.51/;spdx; -sissl;Sun Industry Standards Source License v1.1;;;all,software;http://www.openoffice.org/licenses/sissl_license.html;spdx;y -sissl-1.2;Sun Industry Standards Source License v1.2;;;all,software;http://gridscheduler.sourceforge.net/Gridengine_SISSL_license.html;spdx; -smlnj;Standard ML of New Jersey License;;;all;https://www.smlnj.org/license.html;spdx; -smppl;Secure Messaging Protocol Public License;;;all;https://github.com/dcblake/SMP/blob/master/Documentation/License.txt;spdx; -snia;SNIA Public License 1.1;;;all;https://fedoraproject.org/wiki/Licensing/SNIA_Public_License;spdx; -spl-1.0;Sun Public License v1.0;;;all,software;https://opensource.org/licenses/SPL-1.0;spdx;y -ssh-openssh;SSH OpenSSH license;;;all;https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/LICENCE#L10;spdx; -ssh-short;SSH short notice;;;all;https://github.com/openssh/openssh-portable/blob/1b11ea7c58cd5c59838b5fa574cd456d6047b2d4/pathnames.h;spdx; -sspl-1.0;Server Side Public License, v 1;;;all;https://www.mongodb.com/licensing/server-side-public-license;spdx; -swl;Scheme Widget Library (SWL) Software License Agreement;;;all;https://fedoraproject.org/wiki/Licensing/SWL;spdx; -saxpath;Saxpath License;;;all;https://fedoraproject.org/wiki/Licensing/Saxpath_License;spdx; -sendmail;Sendmail License;;;all;http://www.sendmail.com/pdfs/open_source/sendmail_license.pdf;spdx; -sendmail-8.23;Sendmail License 8.23;;;all;https://www.proofpoint.com/sites/default/files/sendmail-license.pdf;spdx; -simpl-2.0;Simple Public License 2.0;;;all,software;https://opensource.org/licenses/SimPL-2.0;spdx;y -sleepycat;Sleepycat License;;;all,software;https://opensource.org/licenses/Sleepycat;spdx;y -spencer-86;Spencer License 86;;;all;https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License;spdx; -spencer-94;Spencer License 94;;;all;https://fedoraproject.org/wiki/Licensing/Henry_Spencer_Reg-Ex_Library_License;spdx; -spencer-99;Spencer License 99;;;all;http://www.opensource.apple.com/source/tcl/tcl-5/tcl/generic/regfronts.c;spdx; -sugarcrm-1.1.3;SugarCRM Public License v1.1.3;;;all;http://www.sugarcrm.com/crm/SPL;spdx; -tapr-ohl-1.0;TAPR Open Hardware License v1.0;;;all;https://www.tapr.org/OHL;spdx; -tcl;TCL/TK License;;;all;http://www.tcl.tk/software/tcltk/license.html;spdx; -tcp-wrappers;TCP Wrappers License;;;all;http://rc.quest.com/topics/openssh/license.php#tcpwrappers;spdx; -tmate;TMate Open Source License;;;all;http://svnkit.com/license.html;spdx; -torque-1.1;TORQUE v2.5+ Software License v1.1;;;all;https://fedoraproject.org/wiki/Licensing/TORQUEv1.1;spdx; -tosl;Trusster Open Source License;;;all;https://fedoraproject.org/wiki/Licensing/TOSL;spdx; -tu-berlin-1.0;Technische Universitaet Berlin License 1.0;;;all;https://github.com/swh/ladspa/blob/7bf6f3799fdba70fda297c2d8fd9f526803d9680/gsm/COPYRIGHT;spdx; -tu-berlin-2.0;Technische Universitaet Berlin License 2.0;;;all;https://github.com/CorsixTH/deps/blob/fd339a9f526d1d9c9f01ccf39e438a015da50035/licences/libgsm.txt;spdx; -ucl-1.0;Upstream Compatibility License v1.0;;;all;https://opensource.org/licenses/UCL-1.0;spdx;y -upl-1.0;Universal Permissive License v1.0;;;all;https://opensource.org/licenses/UPL;spdx;y -unicode-dfs-2015;Unicode License Agreement - Data Files and Software (2015);;;all;https://web.archive.org/web/20151224134844/http://unicode.org/copyright.html;spdx; -unicode-dfs-2016;Unicode License Agreement - Data Files and Software (2016);;;all;http://www.unicode.org/copyright.html;spdx;y -unicode-tou;Unicode Terms of Use;;;all;http://www.unicode.org/copyright.html;spdx; -unlicense;The Unlicense;;;all;https://unlicense.org/;spdx;y -vostrom;VOSTROM Public License for Open Source;;;all;https://fedoraproject.org/wiki/Licensing/VOSTROM;spdx; -vsl-1.0;Vovida Software License v1.0;;;all,software;https://opensource.org/licenses/VSL-1.0;spdx;y -vim;Vim License;;;all;http://vimdoc.sourceforge.net/htmldoc/uganda.html;spdx; -w3c;W3C Software Notice and License (2002-12-31);;;all,software;http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231.html;spdx;y -w3c-19980720;W3C Software Notice and License (1998-07-20);;;all,software;http://www.w3.org/Consortium/Legal/copyright-software-19980720.html;spdx; -w3c-20150513;W3C Software Notice and Document License (2015-05-13);;;all,software;https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document;spdx; -wtfpl;Do What The F*ck You Want To Public License;;;all;http://www.wtfpl.net/about/;spdx; -watcom-1.0;Sybase Open Watcom Public License 1.0;;;all,software;https://opensource.org/licenses/Watcom-1.0;spdx;y -wsuipa;Wsuipa License;;;all;https://fedoraproject.org/wiki/Licensing/Wsuipa;spdx; -x11;X11 License;;;all;http://www.xfree86.org/3.3.6/COPYRIGHT2.html#3;spdx; -xfree86-1.1;XFree86 License 1.1;;;all;http://www.xfree86.org/current/LICENSE4.html;spdx; -xskat;XSkat License;;;all;https://fedoraproject.org/wiki/Licensing/XSkat_License;spdx; -xerox;Xerox License;;;all;https://fedoraproject.org/wiki/Licensing/Xerox;spdx; -xnet;X.Net License;;;all,software;https://opensource.org/licenses/Xnet;spdx;y -ypl-1.0;Yahoo! Public License v1.0;;;all;http://www.zimbra.com/license/yahoo_public_license_1.0.html;spdx; -ypl-1.1;Yahoo! Public License v1.1;;;all;http://www.zimbra.com/license/yahoo_public_license_1.1.html;spdx; -zpl-1.1;Zope Public License 1.1;;;all,software;http://old.zope.org/Resources/License/ZPL-1.1;spdx; -zpl-2.0;Zope Public License 2.0;;;all,software;http://old.zope.org/Resources/License/ZPL-2.0;spdx;y -zpl-2.1;Zope Public License 2.1;;;all,software;http://old.zope.org/Resources/ZPL/;spdx; -zed;Zed License;;;all;https://fedoraproject.org/wiki/Licensing/Zed;spdx; -zend-2.0;Zend License v2.0;;;all;https://web.archive.org/web/20130517195954/http://www.zend.com/license/2_00.txt;spdx; -zimbra-1.3;Zimbra Public License v1.3;;;all;http://web.archive.org/web/20100302225219/http://www.zimbra.com/license/zimbra-public-license-1-3.html;spdx; -zimbra-1.4;Zimbra Public License v1.4;;;all;http://www.zimbra.com/legal/zimbra-public-license-1-4;spdx; -zlib;zlib License;;;all,software;http://www.zlib.net/zlib_license.html;spdx;y -blessing;SQLite Blessing;;;all;https://www.sqlite.org/src/artifact/e33a4df7e32d742a?ln=4-9;spdx; -bzip2-1.0.5;bzip2 and libbzip2 License v1.0.5;;;all;https://sourceware.org/bzip2/1.0.5/bzip2-manual-1.0.5.html;spdx; -bzip2-1.0.6;bzip2 and libbzip2 License v1.0.6;;;all;"https://sourceware.org/git/?p=bzip2.git;a=blob;f=LICENSE;hb=bzip2-1.0.6";spdx; -copyleft-next-0.3.0;copyleft-next 0.3.0;;;all;https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.0;spdx; -copyleft-next-0.3.1;copyleft-next 0.3.1;;;all;https://github.com/copyleft-next/copyleft-next/blob/master/Releases/copyleft-next-0.3.1;spdx; -curl;curl License;;;all;https://github.com/bagder/curl/blob/master/COPYING;spdx; -diffmark;diffmark license;;;all;https://fedoraproject.org/wiki/Licensing/diffmark;spdx; -dvipdfm;dvipdfm License;;;all;https://fedoraproject.org/wiki/Licensing/dvipdfm;spdx; -egenix;eGenix.com Public License 1.1.0;;;all;http://www.egenix.com/products/eGenix.com-Public-License-1.1.0.pdf;spdx; -etalab-2.0;Etalab Open License 2.0;;;all,data;https://github.com/DISIC/politique-de-contribution-open-source/blob/master/LICENSE.pdf;spdx; -gsoap-1.3b;gSOAP Public License v1.3b;;;all;http://www.cs.fsu.edu/~engelen/license.html;spdx; -gnuplot;gnuplot License;;;all;https://fedoraproject.org/wiki/Licensing/Gnuplot;spdx; -imatix;iMatix Standard Function Library Agreement;;;all;http://legacy.imatix.com/html/sfl/sfl4.htm#license;spdx; -libpng-2.0;PNG Reference Library version 2;;;all,software;http://www.libpng.org/pub/png/src/libpng-LICENSE.txt;spdx; -libselinux-1.0;libselinux public domain notice;;;all;https://github.com/SELinuxProject/selinux/blob/master/libselinux/LICENSE;spdx; -libtiff;libtiff License;;;all;https://fedoraproject.org/wiki/Licensing/libtiff;spdx; -mpich2;mpich2 License;;;all;https://fedoraproject.org/wiki/Licensing/MIT;spdx; -psfrag;psfrag License;;;all;https://fedoraproject.org/wiki/Licensing/psfrag;spdx; -psutils;psutils License;;;all;https://fedoraproject.org/wiki/Licensing/psutils;spdx; -xinetd;xinetd License;;;all;https://fedoraproject.org/wiki/Licensing/Xinetd_License;spdx; -xpp;XPP License;;;all;https://fedoraproject.org/wiki/Licensing/xpp;spdx; -zlib-acknowledgement;zlib/libpng License with Acknowledgement;;;all,software;https://fedoraproject.org/wiki/Licensing/ZlibWithAcknowledgement;spdx; +id,title__en,description__en,icon,tags,props__url,props__scheme,props__osi_approved +0bsd,BSD Zero Clause License,,,"all,software",https://opensource.org/license/0bsd,spdx,y +aal,Attribution Assurance License,,,"all,software",https://opensource.org/license/attribution-php,spdx,y +adsl,Amazon Digital Services License,,,all,https://spdx.org/licenses/ADSL,spdx, +afl-1.1,Academic Free License v1.1,,,"all,software",https://spdx.org/licenses/AFL-1.1,spdx,y +afl-1.2,Academic Free License v1.2,,,"all,software",https://spdx.org/licenses/AFL-1.2,spdx,y +afl-2.0,Academic Free License v2.0,,,"all,software",https://spdx.org/licenses/AFL-2.0,spdx,y +afl-2.1,Academic Free License v2.1,,,"all,software",https://spdx.org/licenses/AFL-2.1,spdx,y +afl-3.0,Academic Free License v3.0,,,"all,software",https://opensource.org/license/afl-3-0-php,spdx,y +agpl-1.0-only,Affero General Public License v1.0 only,,,"all,software",https://spdx.org/licenses/AGPL-1.0-only,spdx, +agpl-1.0-or-later,Affero General Public License v1.0 or later,,,"all,software",https://spdx.org/licenses/AGPL-1.0-or-later,spdx, +agpl-3.0-only,GNU Affero General Public License v3.0 only,,,"all,software",https://opensource.org/license/agpl-v3,spdx,y +agpl-3.0-or-later,GNU Affero General Public License v3.0 or later,,,"all,software",https://spdx.org/licenses/AGPL-3.0-or-later,spdx,y +amdplpa,AMD's plpa_map.c License,,,all,https://spdx.org/licenses/AMDPLPA,spdx, +aml,Apple MIT License,,,"all,software",https://spdx.org/licenses/AML,spdx, +ampas,Academy of Motion Picture Arts and Sciences BSD,,,all,https://spdx.org/licenses/AMPAS,spdx, +antlr-pd,ANTLR Software Rights Notice,,,"all,software",https://spdx.org/licenses/ANTLR-PD,spdx, +antlr-pd-fallback,ANTLR Software Rights Notice with license fallback,,,"all,software",https://spdx.org/licenses/ANTLR-PD-fallback,spdx, +apafml,Adobe Postscript AFM License,,,all,https://spdx.org/licenses/APAFML,spdx, +apl-1.0,Adaptive Public License 1.0,,,"all,software",https://opensource.org/license/apl1-0-php,spdx,y +apsl-1.0,Apple Public Source License 1.0,,,"all,software",https://spdx.org/licenses/APSL-1.0,spdx,y +apsl-1.1,Apple Public Source License 1.1,,,"all,software",https://spdx.org/licenses/APSL-1.1,spdx,y +apsl-1.2,Apple Public Source License 1.2,,,"all,software",https://spdx.org/licenses/APSL-1.2,spdx,y +apsl-2.0,Apple Public Source License 2.0,,,"all,software",https://opensource.org/license/apsl-2-0,spdx,y +abstyles,Abstyles License,,,all,https://spdx.org/licenses/Abstyles,spdx, +adobe-2006,Adobe Systems Incorporated Source Code License Agreement,,,"all,software",https://spdx.org/licenses/Adobe-2006,spdx, +adobe-glyph,Adobe Glyph List License,,,all,https://spdx.org/licenses/Adobe-Glyph,spdx, +afmparse,Afmparse License,,,all,https://spdx.org/licenses/Afmparse,spdx, +aladdin,Aladdin Free Public License,,,all,https://spdx.org/licenses/Aladdin,spdx, +apache-1.0,Apache License 1.0,,,"all,software",https://spdx.org/licenses/Apache-1.0,spdx, +apache-1.1,Apache License 1.1,,,"all,software",https://opensource.org/license/apache-1-1,spdx,y +apache-2.0,Apache License 2.0,"A permissive license whose main conditions require preservation of copyright and license notices. Contributors provide an express grant of patent rights. Licensed works, modifications, and larger works may be distributed under different terms and without source code.",,"recommended,all,software",https://opensource.org/license/apache-2-0,spdx,y +artistic-1.0,Artistic License 1.0,,,"all,software",https://opensource.org/license/artistic-1-0,spdx,y +artistic-1.0-perl,Artistic License 1.0 (Perl),,,"all,software",https://opensource.org/license/artistic-perl-1-0-2,spdx,y +artistic-1.0-cl8,Artistic License 1.0 w/clause 8,,,"all,software",https://spdx.org/licenses/Artistic-1.0-cl8,spdx,y +artistic-2.0,Artistic License 2.0,,,"all,software",https://opensource.org/license/artistic-2-0,spdx,y +bsd-1-clause,BSD 1-Clause License,,,"all,software",https://opensource.org/license/bsd-1-clause,spdx,y +bsd-2-clause,"BSD 2-Clause ""Simplified"" License",,,"all,software",https://opensource.org/license/bsd-2-clause,spdx,y +bsd-2-clause-patent,BSD-2-Clause Plus Patent License,,,"all,software",https://opensource.org/license/bsdpluspatent,spdx,y +bsd-2-clause-views,BSD 2-Clause with views sentence,,,"all,software",https://spdx.org/licenses/BSD-2-Clause-Views,spdx, +bsd-3-clause,"BSD 3-Clause ""New"" or ""Revised"" License",,,"all,software",https://opensource.org/license/bsd-3-clause,spdx,y +bsd-3-clause-attribution,BSD with attribution,,,"all,software",https://spdx.org/licenses/BSD-3-Clause-Attribution,spdx, +bsd-3-clause-clear,BSD 3-Clause Clear License,,,"all,software",https://spdx.org/licenses/BSD-3-Clause-Clear,spdx, +bsd-3-clause-lbnl,Lawrence Berkeley National Labs BSD variant license,,,"all,software",https://opensource.org/license/bsd-3-clause-lbnl,spdx,y +bsd-3-clause-no-nuclear-license,BSD 3-Clause No Nuclear License,,,"all,software",https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License,spdx, +bsd-3-clause-no-nuclear-license-2014,BSD 3-Clause No Nuclear License 2014,,,"all,software",https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-License-2014,spdx, +bsd-3-clause-no-nuclear-warranty,BSD 3-Clause No Nuclear Warranty,,,"all,software",https://spdx.org/licenses/BSD-3-Clause-No-Nuclear-Warranty,spdx, +bsd-3-clause-open-mpi,BSD 3-Clause Open MPI variant,,,"all,software",https://spdx.org/licenses/BSD-3-Clause-Open-MPI,spdx, +bsd-4-clause,"BSD 4-Clause ""Original"" or ""Old"" License",,,"all,software",https://spdx.org/licenses/BSD-4-Clause,spdx, +bsd-4-clause-uc,BSD-4-Clause (University of California-Specific),,,"all,software",https://spdx.org/licenses/BSD-4-Clause-UC,spdx, +bsd-protection,BSD Protection License,,,"all,software",https://spdx.org/licenses/BSD-Protection,spdx, +bsd-source-code,BSD Source Code Attribution,,,"all,software",https://spdx.org/licenses/BSD-Source-Code,spdx, +bsl-1.0,Boost Software License 1.0,,,"all,software",https://opensource.org/license/bsl-1-0,spdx,y +busl-1.1,Business Source License 1.1,,,all,https://spdx.org/licenses/BUSL-1.1,spdx, +bahyph,Bahyph License,,,all,https://spdx.org/licenses/Bahyph,spdx, +barr,Barr License,,,all,https://spdx.org/licenses/Barr,spdx, +beerware,Beerware License,,,all,https://spdx.org/licenses/Beerware,spdx, +bittorrent-1.0,BitTorrent Open Source License v1.0,,,"all,software",https://spdx.org/licenses/BitTorrent-1.0,spdx, +bittorrent-1.1,BitTorrent Open Source License v1.1,,,"all,software",https://spdx.org/licenses/BitTorrent-1.1,spdx, +blueoak-1.0.0,Blue Oak Model License 1.0.0,,,all,https://spdx.org/licenses/BlueOak-1.0.0,spdx, +borceux,Borceux license,,,all,https://spdx.org/licenses/Borceux,spdx, +cal-1.0,Cryptographic Autonomy License 1.0,,,all,https://opensource.org/license/cal-1-0,spdx,y +cal-1.0-combined-work-exception,Cryptographic Autonomy License 1.0 (Combined Work Exception),,,all,https://spdx.org/licenses/CAL-1.0-Combined-Work-Exception,spdx,y +catosl-1.1,Computer Associates Trusted Open Source License 1.1,,,"all,software",https://opensource.org/license/ca-tosl1-1-php,spdx,y +cc-by-1.0,Creative Commons Attribution 1.0 Generic,,cc-by-icon,"all,data",https://creativecommons.org/licenses/by/1.0/,spdx, +cc-by-2.0,Creative Commons Attribution 2.0 Generic,,cc-by-icon,"all,data",https://creativecommons.org/licenses/by/2.0/,spdx, +cc-by-2.5,Creative Commons Attribution 2.5 Generic,,cc-by-icon,"all,data",https://creativecommons.org/licenses/by/2.5/,spdx, +cc-by-3.0,Creative Commons Attribution 3.0 Unported,,cc-by-icon,"all,data",https://creativecommons.org/licenses/by/3.0/,spdx, +cc-by-3.0-at,Creative Commons Attribution 3.0 Austria,,cc-by-icon,"all,data",https://creativecommons.org/licenses/by/3.0/at/,spdx, +cc-by-3.0-us,Creative Commons Attribution 3.0 United States,,cc-by-icon,"all,data",https://creativecommons.org/licenses/by/3.0/us/,spdx, +cc-by-4.0,Creative Commons Attribution 4.0 International,The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.,cc-by-icon,"recommended,all,data",https://creativecommons.org/licenses/by/4.0/,spdx, +cc-by-nc-1.0,Creative Commons Attribution Non Commercial 1.0 Generic,,cc-by-nc-icon,"all,data",https://creativecommons.org/licenses/by-nc/1.0/,spdx, +cc-by-nc-2.0,Creative Commons Attribution Non Commercial 2.0 Generic,,cc-by-nc-icon,"all,data",https://creativecommons.org/licenses/by-nc/2.0/,spdx, +cc-by-nc-2.5,Creative Commons Attribution Non Commercial 2.5 Generic,,cc-by-nc-icon,"all,data",https://creativecommons.org/licenses/by-nc/2.5/,spdx, +cc-by-nc-3.0,Creative Commons Attribution Non Commercial 3.0 Unported,,cc-by-nc-icon,"all,data",https://creativecommons.org/licenses/by-nc/3.0/,spdx, +cc-by-nc-4.0,Creative Commons Attribution Non Commercial 4.0 International,,cc-by-nc-icon,"all,data",https://creativecommons.org/licenses/by-nc/4.0/,spdx, +cc-by-nc-nd-1.0,Creative Commons Attribution Non Commercial No Derivatives 1.0 Generic,,cc-by-nc-nd-icon,"all,data",https://creativecommons.org/licenses/by-nd-nc/1.0/,spdx, +cc-by-nc-nd-2.0,Creative Commons Attribution Non Commercial No Derivatives 2.0 Generic,,cc-by-nc-nd-icon,"all,data",https://creativecommons.org/licenses/by-nc-nd/2.0/,spdx, +cc-by-nc-nd-2.5,Creative Commons Attribution Non Commercial No Derivatives 2.5 Generic,,cc-by-nc-nd-icon,"all,data",https://creativecommons.org/licenses/by-nc-nd/2.5/,spdx, +cc-by-nc-nd-3.0,Creative Commons Attribution Non Commercial No Derivatives 3.0 Unported,,cc-by-nc-nd-icon,"all,data",https://creativecommons.org/licenses/by-nc-nd/3.0/,spdx, +cc-by-nc-nd-3.0-igo,Creative Commons Attribution Non Commercial No Derivatives 3.0 IGO,,cc-by-nc-nd-icon,"all,data",https://creativecommons.org/licenses/by-nc-nd/3.0/igo/,spdx, +cc-by-nc-nd-4.0,Creative Commons Attribution Non Commercial No Derivatives 4.0 International,,cc-by-nc-nd-icon,"all,data",https://creativecommons.org/licenses/by-nc-nd/4.0/,spdx, +cc-by-nc-sa-1.0,Creative Commons Attribution Non Commercial Share Alike 1.0 Generic,,cc-by-nc-sa-icon,"all,data",https://creativecommons.org/licenses/by-nc-sa/1.0/,spdx, +cc-by-nc-sa-2.0,Creative Commons Attribution Non Commercial Share Alike 2.0 Generic,,cc-by-nc-sa-icon,"all,data",https://creativecommons.org/licenses/by-nc-sa/2.0/,spdx, +cc-by-nc-sa-2.5,Creative Commons Attribution Non Commercial Share Alike 2.5 Generic,,cc-by-nc-sa-icon,"all,data",https://creativecommons.org/licenses/by-nc-sa/2.5/,spdx, +cc-by-nc-sa-3.0,Creative Commons Attribution Non Commercial Share Alike 3.0 Unported,,cc-by-nc-sa-icon,"all,data",https://creativecommons.org/licenses/by-nc-sa/3.0/,spdx, +cc-by-nc-sa-4.0,Creative Commons Attribution Non Commercial Share Alike 4.0 International,,cc-by-nc-sa-icon,"all,data",https://creativecommons.org/licenses/by-nc-sa/4.0/,spdx, +cc-by-nd-1.0,Creative Commons Attribution No Derivatives 1.0 Generic,,cc-by-nd-icon,"all,data",https://creativecommons.org/licenses/by-nd/1.0/,spdx, +cc-by-nd-2.0,Creative Commons Attribution No Derivatives 2.0 Generic,,cc-by-nd-icon,"all,data",https://creativecommons.org/licenses/by-nd/2.0/,spdx, +cc-by-nd-2.5,Creative Commons Attribution No Derivatives 2.5 Generic,,cc-by-nd-icon,"all,data",https://creativecommons.org/licenses/by-nd/2.5/,spdx, +cc-by-nd-3.0,Creative Commons Attribution No Derivatives 3.0 Unported,,cc-by-nd-icon,"all,data",https://creativecommons.org/licenses/by-nd/3.0/,spdx, +cc-by-nd-4.0,Creative Commons Attribution No Derivatives 4.0 International,,cc-by-nd-icon,"all,data",https://creativecommons.org/licenses/by-nd/4.0/,spdx, +cc-by-sa-1.0,Creative Commons Attribution Share Alike 1.0 Generic,,cc-by-sa-icon,"all,data",https://creativecommons.org/licenses/by-sa/1.0/,spdx, +cc-by-sa-2.0,Creative Commons Attribution Share Alike 2.0 Generic,,cc-by-sa-icon,"all,data",https://creativecommons.org/licenses/by-sa/2.0/,spdx, +cc-by-sa-2.0-uk,Creative Commons Attribution Share Alike 2.0 England and Wales,,,"all,data",https://creativecommons.org/licenses/by-sa/2.0/uk/,spdx, +cc-by-sa-2.5,Creative Commons Attribution Share Alike 2.5 Generic,,cc-by-sa-icon,"all,data",https://creativecommons.org/licenses/by-sa/2.5/,spdx, +cc-by-sa-3.0,Creative Commons Attribution Share Alike 3.0 Unported,,cc-by-sa-icon,"all,data",https://creativecommons.org/licenses/by-sa/3.0/,spdx, +cc-by-sa-3.0-at,Creative Commons Attribution-Share Alike 3.0 Austria,,cc-by-sa-icon,"all,data",https://creativecommons.org/licenses/by-sa/3.0/at/,spdx, +cc-by-sa-4.0,Creative Commons Attribution Share Alike 4.0 International,Permits almost any use subject to providing credit and license notice. Frequently used for media assets and educational materials. The most common license for Open Access scientific publications. Not recommended for software.,cc-by-sa-icon,"recommended,all,data",https://creativecommons.org/licenses/by-sa/4.0/,spdx, +cc-pddc,Creative Commons Public Domain Dedication and Certification,,cc-pddc-icon,all,https://creativecommons.org/licenses/publicdomain/,spdx, +cc0-1.0,Creative Commons Zero v1.0 Universal,CC0 waives copyright interest in a work you've created and dedicates it to the world-wide public domain. Use CC0 to opt out of copyright entirely and ensure your work has the widest reach.,cc-cc0-icon,"recommended,all,data,software",https://creativecommons.org/publicdomain/zero/1.0/,spdx, +cddl-1.0,Common Development and Distribution License 1.0,,,"all,software",https://opensource.org/license/cddl-1-0,spdx,y +cddl-1.1,Common Development and Distribution License 1.1,,,"all,software",https://spdx.org/licenses/CDDL-1.1,spdx, +cdla-permissive-1.0,Community Data License Agreement Permissive 1.0,,,"all,data",https://spdx.org/licenses/CDLA-Permissive-1.0,spdx, +cdla-sharing-1.0,Community Data License Agreement Sharing 1.0,,,"all,data",https://spdx.org/licenses/CDLA-Sharing-1.0,spdx, +cecill-1.0,CeCILL Free Software License Agreement v1.0,,,"all,software",https://spdx.org/licenses/CECILL-1.0,spdx, +cecill-1.1,CeCILL Free Software License Agreement v1.1,,,"all,software",https://spdx.org/licenses/CECILL-1.1,spdx, +cecill-2.0,CeCILL Free Software License Agreement v2.0,,,"all,software",https://spdx.org/licenses/CECILL-2.0,spdx, +cecill-2.1,CeCILL Free Software License Agreement v2.1,,,"all,software",https://opensource.org/license/cecill-2-1,spdx,y +cecill-b,CeCILL-B Free Software License Agreement,,,"all,software",https://spdx.org/licenses/CECILL-B,spdx, +cecill-c,CeCILL-C Free Software License Agreement,,,"all,software",https://spdx.org/licenses/CECILL-C,spdx, +cern-ohl-1.1,CERN Open Hardware Licence v1.1,,,all,https://spdx.org/licenses/CERN-OHL-1.1,spdx, +cern-ohl-1.2,CERN Open Hardware Licence v1.2,,,all,https://spdx.org/licenses/CERN-OHL-1.2,spdx, +cern-ohl-p-2.0,CERN Open Hardware Licence Version 2 - Permissive,,,all,https://opensource.org/license/cern-ohl-p,spdx,y +cern-ohl-s-2.0,CERN Open Hardware Licence Version 2 - Strongly Reciprocal,,,all,https://opensource.org/license/cern-ohl-s,spdx,y +cern-ohl-w-2.0,CERN Open Hardware Licence Version 2 - Weakly Reciprocal,,,all,https://opensource.org/license/cern-ohl-w,spdx,y +cnri-jython,CNRI Jython License,,,"all,software",https://spdx.org/licenses/CNRI-Jython,spdx, +cnri-python,CNRI Python License,,,"all,software",https://opensource.org/license/cnri-python,spdx,y +cnri-python-gpl-compatible,CNRI Python Open Source GPL Compatible License Agreement,,,"all,software",https://spdx.org/licenses/CNRI-Python-GPL-Compatible,spdx, +cpal-1.0,Common Public Attribution License 1.0,,,"all,software",https://opensource.org/license/cpal_1-0,spdx,y +cpl-1.0,Common Public License 1.0,,,all,https://opensource.org/license/cpl1-0-txt,spdx,y +cpol-1.02,Code Project Open License 1.02,,,all,https://spdx.org/licenses/CPOL-1.02,spdx, +cua-opl-1.0,CUA Office Public License v1.0,,,"all,software",https://opensource.org/license/cuaoffice-php,spdx,y +caldera,Caldera License,,,all,https://spdx.org/licenses/Caldera,spdx, +clartistic,Clarified Artistic License,,,all,https://spdx.org/licenses/ClArtistic,spdx, +condor-1.1,Condor Public License v1.1,,,all,https://spdx.org/licenses/Condor-1.1,spdx, +crossword,Crossword License,,,all,https://spdx.org/licenses/Crossword,spdx, +crystalstacker,CrystalStacker License,,,all,https://spdx.org/licenses/CrystalStacker,spdx, +cube,Cube License,,,all,https://spdx.org/licenses/Cube,spdx, +d-fsl-1.0,Deutsche Freie Software Lizenz,,,"all,software",https://spdx.org/licenses/D-FSL-1.0,spdx, +doc,DOC License,,,all,https://spdx.org/licenses/DOC,spdx, +dsdp,DSDP License,,,all,https://spdx.org/licenses/DSDP,spdx, +dotseqn,Dotseqn License,,,all,https://spdx.org/licenses/Dotseqn,spdx, +ecl-1.0,Educational Community License v1.0,,,"all,software",https://opensource.org/license/ecl-1-0,spdx,y +ecl-2.0,Educational Community License v2.0,,,"all,software",https://opensource.org/license/ecl-2-0,spdx,y +efl-1.0,Eiffel Forum License v1.0,,,"all,software",https://opensource.org/license/efl-1-0,spdx,y +efl-2.0,Eiffel Forum License v2.0,,,"all,software",https://opensource.org/license/ver2_eiffel-php,spdx,y +epics,EPICS Open License,,,all,https://spdx.org/licenses/EPICS,spdx, +epl-1.0,Eclipse Public License 1.0,,,"all,software",https://opensource.org/license/epl-1-0,spdx,y +epl-2.0,Eclipse Public License 2.0,,,"all,software",https://opensource.org/license/epl-2-0,spdx,y +eudatagrid,EU DataGrid Software License,,,"all,software",https://opensource.org/license/eudatagrid-php,spdx,y +eupl-1.0,European Union Public License 1.0,,,"all,sofware",https://spdx.org/licenses/EUPL-1.0,spdx, +eupl-1.1,European Union Public License 1.1,,,"all,software",https://opensource.org/license/eupl-1-1,spdx,y +eupl-1.2,European Union Public License 1.2,,,"all,software",https://opensource.org/license/eupl-1-2,spdx,y +entessa,Entessa Public License v1.0,,,"all,software",https://opensource.org/license/entessa,spdx,y +erlpl-1.1,Erlang Public License v1.1,,,all,https://spdx.org/licenses/ErlPL-1.1,spdx, +eurosym,Eurosym License,,,all,https://spdx.org/licenses/Eurosym,spdx, +fsfap,FSF All Permissive License,,,all,https://spdx.org/licenses/FSFAP,spdx, +fsful,FSF Unlimited License,,,all,https://spdx.org/licenses/FSFUL,spdx, +fsfullr,FSF Unlimited License (with License Retention),,,all,https://spdx.org/licenses/FSFULLR,spdx, +ftl,Freetype Project License,,,all,https://spdx.org/licenses/FTL,spdx, +fair,Fair License,,,"all,software",https://opensource.org/license/fair,spdx,y +frameworx-1.0,Frameworx Open License 1.0,,,"all,software",https://opensource.org/license/frameworx-php,spdx,y +freeimage,FreeImage Public License v1.0,,,all,https://spdx.org/licenses/FreeImage,spdx, +gfdl-1.1-invariants-only,GNU Free Documentation License v1.1 only - invariants,,,all,https://spdx.org/licenses/GFDL-1.1-invariants-only,spdx, +gfdl-1.1-invariants-or-later,GNU Free Documentation License v1.1 or later - invariants,,,all,https://spdx.org/licenses/GFDL-1.1-invariants-or-later,spdx, +gfdl-1.1-no-invariants-only,GNU Free Documentation License v1.1 only - no invariants,,,all,https://spdx.org/licenses/GFDL-1.1-no-invariants-only,spdx, +gfdl-1.1-no-invariants-or-later,GNU Free Documentation License v1.1 or later - no invariants,,,all,https://spdx.org/licenses/GFDL-1.1-no-invariants-or-later,spdx, +gfdl-1.1-only,GNU Free Documentation License v1.1 only,,,all,https://spdx.org/licenses/GFDL-1.1-only,spdx, +gfdl-1.1-or-later,GNU Free Documentation License v1.1 or later,,,all,https://spdx.org/licenses/GFDL-1.1-or-later,spdx, +gfdl-1.2-invariants-only,GNU Free Documentation License v1.2 only - invariants,,,all,https://spdx.org/licenses/GFDL-1.2-invariants-only,spdx, +gfdl-1.2-invariants-or-later,GNU Free Documentation License v1.2 or later - invariants,,,all,https://spdx.org/licenses/GFDL-1.2-invariants-or-later,spdx, +gfdl-1.2-no-invariants-only,GNU Free Documentation License v1.2 only - no invariants,,,all,https://spdx.org/licenses/GFDL-1.2-no-invariants-only,spdx, +gfdl-1.2-no-invariants-or-later,GNU Free Documentation License v1.2 or later - no invariants,,,all,https://spdx.org/licenses/GFDL-1.2-no-invariants-or-later,spdx, +gfdl-1.2-only,GNU Free Documentation License v1.2 only,,,all,https://spdx.org/licenses/GFDL-1.2-only,spdx, +gfdl-1.2-or-later,GNU Free Documentation License v1.2 or later,,,all,https://spdx.org/licenses/GFDL-1.2-or-later,spdx, +gfdl-1.3-invariants-only,GNU Free Documentation License v1.3 only - invariants,,,all,https://spdx.org/licenses/GFDL-1.3-invariants-only,spdx, +gfdl-1.3-invariants-or-later,GNU Free Documentation License v1.3 or later - invariants,,,all,https://spdx.org/licenses/GFDL-1.3-invariants-or-later,spdx, +gfdl-1.3-no-invariants-only,GNU Free Documentation License v1.3 only - no invariants,,,all,https://spdx.org/licenses/GFDL-1.3-no-invariants-only,spdx, +gfdl-1.3-no-invariants-or-later,GNU Free Documentation License v1.3 or later - no invariants,,,all,https://spdx.org/licenses/GFDL-1.3-no-invariants-or-later,spdx, +gfdl-1.3-only,GNU Free Documentation License v1.3 only,,,all,https://spdx.org/licenses/GFDL-1.3-only,spdx, +gfdl-1.3-or-later,GNU Free Documentation License v1.3 or later,,,all,https://spdx.org/licenses/GFDL-1.3-or-later,spdx, +gl2ps,GL2PS License,,,all,https://spdx.org/licenses/GL2PS,spdx, +glwtpl,Good Luck With That Public License,,,all,https://spdx.org/licenses/GLWTPL,spdx, +gpl-1.0-only,GNU General Public License v1.0 only,,,"all,software",https://opensource.org/license/gpl-1-0,spdx, +gpl-1.0-or-later,GNU General Public License v1.0 or later,,,"all,software",https://spdx.org/licenses/GPL-1.0-or-later,spdx, +gpl-2.0-only,GNU General Public License v2.0 only,,,"all,software",https://opensource.org/license/gpl-2-0,spdx,y +gpl-2.0-or-later,GNU General Public License v2.0 or later,,,"all,software",https://spdx.org/licenses/GPL-2.0-or-later,spdx,y +gpl-3.0-only,GNU General Public License v3.0 only,,,"all,software",https://opensource.org/license/gpl-3-0,spdx,y +gpl-3.0-or-later,GNU General Public License v3.0 or later,"Permissions of this strong copyleft license are conditioned on making available complete source code of licensed works and modifications, which include larger works using a licensed work, under the same license. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights.",,"recommended,all,software",https://spdx.org/licenses/GPL-3.0-or-later,spdx,y +giftware,Giftware License,,,all,https://spdx.org/licenses/Giftware,spdx, +glide,3dfx Glide License,,,all,https://spdx.org/licenses/Glide,spdx, +glulxe,Glulxe License,,,all,https://spdx.org/licenses/Glulxe,spdx, +hpnd,Historical Permission Notice and Disclaimer,,,"all,software",https://opensource.org/license/historical-php,spdx,y +hpnd-sell-variant,Historical Permission Notice and Disclaimer - sell variant,,,"all,software",https://spdx.org/licenses/HPND-sell-variant,spdx, +htmltidy,HTML Tidy License,,,all,https://spdx.org/licenses/HTMLTIDY,spdx, +haskellreport,Haskell Language Report License,,,all,https://spdx.org/licenses/HaskellReport,spdx, +hippocratic-2.1,Hippocratic License 2.1,,,all,https://spdx.org/licenses/Hippocratic-2.1,spdx, +ibm-pibs,IBM PowerPC Initialization and Boot Software,,,"all,software",https://spdx.org/licenses/IBM-pibs,spdx, +icu,ICU License,,,all,https://spdx.org/licenses/ICU,spdx, +ijg,Independent JPEG Group License,,,all,https://spdx.org/licenses/IJG,spdx, +ipa,IPA Font License,,,"all,software",https://opensource.org/license/ipafont-html,spdx,y +ipl-1.0,IBM Public License v1.0,,,"all,software",https://opensource.org/license/ibmpl-php,spdx,y +isc,ISC License,,,"all,software",https://opensource.org/license/isc-license-txt,spdx,y +imagemagick,ImageMagick License,,,all,https://spdx.org/licenses/ImageMagick,spdx, +imlib2,Imlib2 License,,,all,https://spdx.org/licenses/Imlib2,spdx, +info-zip,Info-ZIP License,,,all,https://spdx.org/licenses/Info-ZIP,spdx, +intel,Intel Open Source License,,,"all,software",https://opensource.org/license/intel,spdx,y +intel-acpi,Intel ACPI Software License Agreement,,,"all,software",https://spdx.org/licenses/Intel-ACPI,spdx, +interbase-1.0,Interbase Public License v1.0,,,all,https://spdx.org/licenses/Interbase-1.0,spdx, +jpnic,Japan Network Information Center License,,,all,https://spdx.org/licenses/JPNIC,spdx, +json,JSON License,,,all,https://spdx.org/licenses/JSON,spdx, +jasper-2.0,JasPer License,,,all,https://spdx.org/licenses/JasPer-2.0,spdx, +lal-1.2,Licence Art Libre 1.2,,,all,https://spdx.org/licenses/LAL-1.2,spdx, +lal-1.3,Licence Art Libre 1.3,,,all,https://spdx.org/licenses/LAL-1.3,spdx, +lgpl-2.0-only,GNU Library General Public License v2 only,,,"all,software",https://opensource.org/license/lgpl-2-0,spdx,y +lgpl-2.0-or-later,GNU Library General Public License v2 or later,,,"all,software",https://spdx.org/licenses/LGPL-2.0-or-later,spdx,y +lgpl-2.1-only,GNU Lesser General Public License v2.1 only,,,"all,software",https://opensource.org/license/lgpl-2-1,spdx,y +lgpl-2.1-or-later,GNU Lesser General Public License v2.1 or later,,,"all,software",https://spdx.org/licenses/LGPL-2.1-or-later,spdx,y +lgpl-3.0-only,GNU Lesser General Public License v3.0 only,,,"all,software",https://opensource.org/license/lgpl-3-0,spdx,y +lgpl-3.0-or-later,GNU Lesser General Public License v3.0 or later,"Permissions of this copyleft license are conditioned on making available complete source code of licensed works and modifications under the same license or the GNU GPLv3. Copyright and license notices must be preserved. Contributors provide an express grant of patent rights. However, a larger work using the licensed work through interfaces provided by the licensed work may be distributed under different terms and without source code for the larger work.",,"all,software",https://spdx.org/licenses/LGPL-3.0-or-later,spdx,y +lgpllr,Lesser General Public License For Linguistic Resources,,,"all,software",https://spdx.org/licenses/LGPLLR,spdx, +lpl-1.0,Lucent Public License Version 1.0,,,"all,software",https://opensource.org/license/lpl-1-0,spdx,y +lpl-1.02,Lucent Public License v1.02,,,"all,software",https://opensource.org/license/lucent1-02-php,spdx,y +lppl-1.0,LaTeX Project Public License v1.0,,,"all,software",https://spdx.org/licenses/LPPL-1.0,spdx, +lppl-1.1,LaTeX Project Public License v1.1,,,"all,software",https://spdx.org/licenses/LPPL-1.1,spdx, +lppl-1.2,LaTeX Project Public License v1.2,,,"all,software",https://spdx.org/licenses/LPPL-1.2,spdx, +lppl-1.3a,LaTeX Project Public License v1.3a,,,"all,software",https://spdx.org/licenses/LPPL-1.3a,spdx, +lppl-1.3c,LaTeX Project Public License v1.3c,,,"all,software",https://opensource.org/license/lppl,spdx,y +latex2e,Latex2e License,,,all,https://spdx.org/licenses/Latex2e,spdx, +leptonica,Leptonica License,,,all,https://spdx.org/licenses/Leptonica,spdx, +liliq-p-1.1,Licence Libre du Québec – Permissive version 1.1,,,all,https://opensource.org/license/liliq-p-1-1,spdx,y +liliq-r-1.1,Licence Libre du Québec – Réciprocité version 1.1,,,all,https://opensource.org/license/liliq-r-1-1,spdx,y +liliq-rplus-1.1,Licence Libre du Québec – Réciprocité forte version 1.1,,,all,https://opensource.org/license/liliq-rplus-1-1,spdx,y +libpng,libpng License,,,"all,software",https://spdx.org/licenses/Libpng,spdx, +linux-openib,Linux Kernel Variant of OpenIB.org license,,,all,https://spdx.org/licenses/Linux-OpenIB,spdx, +mit,MIT License,"A short and simple permissive license with conditions only requiring preservation of copyright and license notices. Licensed works, modifications, and larger works may be distributed under different terms and without source code.",,"recommended,all,software",https://opensource.org/license/mit,spdx,y +mit-0,MIT No Attribution,,,"all,software",https://opensource.org/license/mit-0,spdx,y +mit-cmu,CMU License,,,"all,software",https://spdx.org/licenses/MIT-CMU,spdx, +mit-advertising,Enlightenment License (e16),,,"all,software",https://spdx.org/licenses/MIT-advertising,spdx, +mit-enna,enna License,,,"all,software",https://spdx.org/licenses/MIT-enna,spdx, +mit-feh,feh License,,,"all,software",https://spdx.org/licenses/MIT-feh,spdx, +mit-open-group,MIT Open Group variant,,,"all,software",https://spdx.org/licenses/MIT-open-group,spdx, +mitnfa,MIT +no-false-attribs license,,,"all,software",https://spdx.org/licenses/MITNFA,spdx, +mpl-1.0,Mozilla Public License 1.0,,,"all,software",https://opensource.org/license/mpl-1-0,spdx,y +mpl-1.1,Mozilla Public License 1.1,,,"all,software",https://opensource.org/license/mpl-1-1,spdx,y +mpl-2.0,Mozilla Public License 2.0,,,"all,software",https://opensource.org/license/mpl-2-0,spdx,y +mpl-2.0-no-copyleft-exception,Mozilla Public License 2.0 (no copyleft exception),,,"all,software",https://spdx.org/licenses/MPL-2.0-no-copyleft-exception,spdx,y +ms-pl,Microsoft Public License,,,"all,software",https://opensource.org/license/ms-pl-html,spdx,y +ms-rl,Microsoft Reciprocal License,,,"all,software",https://opensource.org/license/ms-rl-html,spdx,y +mtll,Matrix Template Library License,,,all,https://spdx.org/licenses/MTLL,spdx, +makeindex,MakeIndex License,,,all,https://spdx.org/licenses/MakeIndex,spdx, +miros,The MirOS Licence,,,"all,software",https://opensource.org/license/miros-html,spdx,y +motosoto,Motosoto License,,,"all,software",https://opensource.org/license/motosoto,spdx,y +mulanpsl-1.0,"Mulan Permissive Software License, Version 1",,,all,https://spdx.org/licenses/MulanPSL-1.0,spdx, +mulanpsl-2.0,"Mulan Permissive Software License, Version 2",,,all,https://opensource.org/license/mulanpsl-2-0,spdx,y +multics,Multics License,,,"all,software",https://opensource.org/license/multics-txt,spdx,y +mup,Mup License,,,all,https://spdx.org/licenses/Mup,spdx, +nasa-1.3,NASA Open Source Agreement 1.3,,,"all,software",https://opensource.org/license/nasa1-3-php,spdx,y +nbpl-1.0,Net Boolean Public License v1,,,all,https://spdx.org/licenses/NBPL-1.0,spdx, +ncgl-uk-2.0,Non-Commercial Government Licence,,,all,https://spdx.org/licenses/NCGL-UK-2.0,spdx, +ncsa,University of Illinois/NCSA Open Source License,,,"all,software",https://opensource.org/license/uoi-ncsa-php,spdx,y +ngpl,Nethack General Public License,,,"all,software",https://opensource.org/license/nethack,spdx,y +nist-pd,NIST Public Domain Notice,,,all,https://spdx.org/licenses/NIST-PD,spdx, +nist-pd-fallback,NIST Public Domain Notice with license fallback,,,all,https://spdx.org/licenses/NIST-PD-fallback,spdx, +nlod-1.0,Norwegian Licence for Open Government Data,,,all,https://spdx.org/licenses/NLOD-1.0,spdx, +nlpl,No Limit Public License,,,all,https://spdx.org/licenses/NLPL,spdx, +nosl,Netizen Open Source License,,,"all,software",https://spdx.org/licenses/NOSL,spdx, +npl-1.0,Netscape Public License v1.0,,,all,https://spdx.org/licenses/NPL-1.0,spdx, +npl-1.1,Netscape Public License v1.1,,,all,https://spdx.org/licenses/NPL-1.1,spdx, +nposl-3.0,Non-Profit Open Software License 3.0,,,"all,software",https://opensource.org/license/nposl-3-0,spdx,y +nrl,NRL License,,,all,https://spdx.org/licenses/NRL,spdx, +ntp,NTP License,,,"all,software",https://opensource.org/license/ntp-license-php,spdx,y +ntp-0,NTP No Attribution,,,"all,software",https://spdx.org/licenses/NTP-0,spdx, +naumen,Naumen Public License,,,"all,software",https://opensource.org/license/naumen-php,spdx,y +net-snmp,Net-SNMP License,,,all,https://spdx.org/licenses/Net-SNMP,spdx, +netcdf,NetCDF license,,,all,https://spdx.org/licenses/NetCDF,spdx, +newsletr,Newsletr License,,,all,https://spdx.org/licenses/Newsletr,spdx, +nokia,Nokia Open Source License,,,"all,software",https://opensource.org/license/nokia,spdx,y +noweb,Noweb License,,,all,https://spdx.org/licenses/Noweb,spdx, +o-uda-1.0,Open Use of Data Agreement v1.0,,,all,https://spdx.org/licenses/O-UDA-1.0,spdx, +occt-pl,Open CASCADE Technology Public License,,,all,https://spdx.org/licenses/OCCT-PL,spdx, +oclc-2.0,OCLC Research Public License 2.0,,,"all,software",https://opensource.org/license/oclc2-php,spdx,y +odc-by-1.0,Open Data Commons Attribution License v1.0,,,"all,data",https://spdx.org/licenses/ODC-By-1.0,spdx, +odbl-1.0,ODC Open Database License v1.0,,,"all,data",https://spdx.org/licenses/ODbL-1.0,spdx, +ofl-1.0,SIL Open Font License 1.0,,,"all,software",https://spdx.org/licenses/OFL-1.0,spdx, +ofl-1.0-rfn,SIL Open Font License 1.0 with Reserved Font Name,,,"all,software",https://spdx.org/licenses/OFL-1.0-RFN,spdx, +ofl-1.0-no-rfn,SIL Open Font License 1.0 with no Reserved Font Name,,,"all,software",https://spdx.org/licenses/OFL-1.0-no-RFN,spdx, +ofl-1.1,SIL Open Font License 1.1,,,"all,software",https://opensource.org/license/ofl-1-1,spdx,y +ofl-1.1-rfn,SIL Open Font License 1.1 with Reserved Font Name,,,"all,software",https://spdx.org/licenses/OFL-1.1-RFN,spdx,y +ofl-1.1-no-rfn,SIL Open Font License 1.1 with no Reserved Font Name,,,"all,software",https://spdx.org/licenses/OFL-1.1-no-RFN,spdx,y +ogc-1.0,"OGC Software License, Version 1.0",,,"all,software",https://spdx.org/licenses/OGC-1.0,spdx, +ogl-canada-2.0,Open Government Licence - Canada,,,"all,data",https://spdx.org/licenses/OGL-Canada-2.0,spdx, +ogl-uk-1.0,Open Government Licence v1.0,,,"all,data,software",https://spdx.org/licenses/OGL-UK-1.0,spdx, +ogl-uk-2.0,Open Government Licence v2.0,,,"all,data,software",https://spdx.org/licenses/OGL-UK-2.0,spdx, +ogl-uk-3.0,Open Government Licence v3.0,,,"all,data,software",https://spdx.org/licenses/OGL-UK-3.0,spdx, +ogtsl,Open Group Test Suite License,,,"all,software",https://opensource.org/license/opengroup-php,spdx,y +oldap-1.1,Open LDAP Public License v1.1,,,all,https://spdx.org/licenses/OLDAP-1.1,spdx, +oldap-1.2,Open LDAP Public License v1.2,,,all,https://spdx.org/licenses/OLDAP-1.2,spdx, +oldap-1.3,Open LDAP Public License v1.3,,,all,https://spdx.org/licenses/OLDAP-1.3,spdx, +oldap-1.4,Open LDAP Public License v1.4,,,all,https://spdx.org/licenses/OLDAP-1.4,spdx, +oldap-2.0,Open LDAP Public License v2.0 (or possibly 2.0A and 2.0B),,,all,https://spdx.org/licenses/OLDAP-2.0,spdx, +oldap-2.0.1,Open LDAP Public License v2.0.1,,,all,https://spdx.org/licenses/OLDAP-2.0.1,spdx, +oldap-2.1,Open LDAP Public License v2.1,,,all,https://spdx.org/licenses/OLDAP-2.1,spdx, +oldap-2.2,Open LDAP Public License v2.2,,,all,https://spdx.org/licenses/OLDAP-2.2,spdx, +oldap-2.2.1,Open LDAP Public License v2.2.1,,,all,https://spdx.org/licenses/OLDAP-2.2.1,spdx, +oldap-2.2.2,Open LDAP Public License 2.2.2,,,all,https://spdx.org/licenses/OLDAP-2.2.2,spdx, +oldap-2.3,Open LDAP Public License v2.3,,,all,https://spdx.org/licenses/OLDAP-2.3,spdx, +oldap-2.4,Open LDAP Public License v2.4,,,all,https://spdx.org/licenses/OLDAP-2.4,spdx, +oldap-2.5,Open LDAP Public License v2.5,,,all,https://spdx.org/licenses/OLDAP-2.5,spdx, +oldap-2.6,Open LDAP Public License v2.6,,,all,https://spdx.org/licenses/OLDAP-2.6,spdx, +oldap-2.7,Open LDAP Public License v2.7,,,all,https://spdx.org/licenses/OLDAP-2.7,spdx, +oldap-2.8,Open LDAP Public License v2.8,,,all,https://opensource.org/license/oldap-2-8,spdx,y +oml,Open Market License,,,all,https://spdx.org/licenses/OML,spdx, +opl-1.0,Open Public License v1.0,,,all,https://spdx.org/licenses/OPL-1.0,spdx, +oset-pl-2.1,OSET Public License version 2.1,,,all,https://opensource.org/license/opl-2-1,spdx,y +osl-1.0,Open Software License 1.0,,,"all,software",https://opensource.org/license/osl-1-0,spdx,y +osl-1.1,Open Software License 1.1,,,"all,software",https://spdx.org/licenses/OSL-1.1,spdx, +osl-2.0,Open Software License 2.0,,,"all,software",https://spdx.org/licenses/OSL-2.0,spdx,y +osl-2.1,Open Software License 2.1,,,"all,software",https://opensource.org/license/osl-2-1,spdx,y +osl-3.0,Open Software License 3.0,,,"all,software",https://opensource.org/license/osl-3-0-php,spdx,y +openssl,OpenSSL License,,,all,https://spdx.org/licenses/OpenSSL,spdx, +pddl-1.0,ODC Public Domain Dedication & License 1.0,,,"all,data",https://spdx.org/licenses/PDDL-1.0,spdx, +php-3.0,PHP License v3.0,,,"all,software",https://opensource.org/license/php-3-0,spdx,y +php-3.01,PHP License v3.01,,,"all,software",https://opensource.org/license/php-3-01,spdx,y +psf-2.0,Python Software Foundation License 2.0,,,"all,software",https://spdx.org/licenses/PSF-2.0,spdx, +parity-6.0.0,The Parity Public License 6.0.0,,,all,https://spdx.org/licenses/Parity-6.0.0,spdx, +parity-7.0.0,The Parity Public License 7.0.0,,,all,https://spdx.org/licenses/Parity-7.0.0,spdx, +plexus,Plexus Classworlds License,,,all,https://spdx.org/licenses/Plexus,spdx, +polyform-noncommercial-1.0.0,PolyForm Noncommercial License 1.0.0,,,all,https://spdx.org/licenses/PolyForm-Noncommercial-1.0.0,spdx, +polyform-small-business-1.0.0,PolyForm Small Business License 1.0.0,,,all,https://spdx.org/licenses/PolyForm-Small-Business-1.0.0,spdx, +postgresql,PostgreSQL License,,,"all,software",https://opensource.org/license/postgresql,spdx,y +python-2.0,Python License 2.0,,,"all,software",https://opensource.org/license/python-2.0,spdx,y +qpl-1.0,Q Public License 1.0,,,"all,software",https://opensource.org/license/qpl-1-0,spdx,y +qhull,Qhull License,,,all,https://spdx.org/licenses/Qhull,spdx, +rhecos-1.1,Red Hat eCos Public License v1.1,,,all,https://spdx.org/licenses/RHeCos-1.1,spdx, +rpl-1.1,Reciprocal Public License 1.1,,,"all,software",https://opensource.org/license/rpl-1-1,spdx,y +rpl-1.5,Reciprocal Public License 1.5,,,"all,software",https://opensource.org/license/rpl-1-5,spdx,y +rpsl-1.0,RealNetworks Public Source License v1.0,,,"all,software",https://opensource.org/license/real-php,spdx,y +rsa-md,RSA Message-Digest License,,,all,https://spdx.org/licenses/RSA-MD,spdx, +rscpl,Ricoh Source Code Public License,,,"all,software",https://opensource.org/license/ricohpl-php,spdx,y +rdisc,Rdisc License,,,all,https://spdx.org/licenses/Rdisc,spdx, +ruby,Ruby License,,,all,https://spdx.org/licenses/Ruby,spdx, +sax-pd,Sax Public Domain Notice,,,all,https://spdx.org/licenses/SAX-PD,spdx, +scea,SCEA Shared Source License,,,all,https://spdx.org/licenses/SCEA,spdx, +sgi-b-1.0,SGI Free Software License B v1.0,,,all,https://spdx.org/licenses/SGI-B-1.0,spdx, +sgi-b-1.1,SGI Free Software License B v1.1,,,all,https://spdx.org/licenses/SGI-B-1.1,spdx, +sgi-b-2.0,SGI Free Software License B v2.0,,,all,https://spdx.org/licenses/SGI-B-2.0,spdx, +shl-0.5,Solderpad Hardware License v0.5,,,all,https://spdx.org/licenses/SHL-0.5,spdx, +shl-0.51,"Solderpad Hardware License, Version 0.51",,,all,https://spdx.org/licenses/SHL-0.51,spdx, +sissl,Sun Industry Standards Source License v1.1,,,"all,software",https://opensource.org/license/sissl,spdx,y +sissl-1.2,Sun Industry Standards Source License v1.2,,,"all,software",https://spdx.org/licenses/SISSL-1.2,spdx, +smlnj,Standard ML of New Jersey License,,,all,https://spdx.org/licenses/SMLNJ,spdx, +smppl,Secure Messaging Protocol Public License,,,all,https://spdx.org/licenses/SMPPL,spdx, +snia,SNIA Public License 1.1,,,all,https://spdx.org/licenses/SNIA,spdx, +spl-1.0,Sun Public License v1.0,,,"all,software",https://opensource.org/license/sunpublic-php,spdx,y +ssh-openssh,SSH OpenSSH license,,,all,https://spdx.org/licenses/SSH-OpenSSH,spdx, +ssh-short,SSH short notice,,,all,https://spdx.org/licenses/SSH-short,spdx, +sspl-1.0,"Server Side Public License, v 1",,,all,https://spdx.org/licenses/SSPL-1.0,spdx, +swl,Scheme Widget Library (SWL) Software License Agreement,,,all,https://spdx.org/licenses/SWL,spdx, +saxpath,Saxpath License,,,all,https://spdx.org/licenses/Saxpath,spdx, +sendmail,Sendmail License,,,all,https://spdx.org/licenses/Sendmail,spdx, +sendmail-8.23,Sendmail License 8.23,,,all,https://spdx.org/licenses/Sendmail-8.23,spdx, +simpl-2.0,Simple Public License 2.0,,,"all,software",https://opensource.org/license/simpl-2-0-html,spdx,y +sleepycat,Sleepycat License,,,"all,software",https://opensource.org/license/sleepycat-php,spdx,y +spencer-86,Spencer License 86,,,all,https://spdx.org/licenses/Spencer-86,spdx, +spencer-94,Spencer License 94,,,all,https://spdx.org/licenses/Spencer-94,spdx, +spencer-99,Spencer License 99,,,all,https://spdx.org/licenses/Spencer-99,spdx, +sugarcrm-1.1.3,SugarCRM Public License v1.1.3,,,all,https://spdx.org/licenses/SugarCRM-1.1.3,spdx, +tapr-ohl-1.0,TAPR Open Hardware License v1.0,,,all,https://spdx.org/licenses/TAPR-OHL-1.0,spdx, +tcl,TCL/TK License,,,all,https://spdx.org/licenses/TCL,spdx, +tcp-wrappers,TCP Wrappers License,,,all,https://spdx.org/licenses/TCP-wrappers,spdx, +tmate,TMate Open Source License,,,all,https://spdx.org/licenses/TMate,spdx, +torque-1.1,TORQUE v2.5+ Software License v1.1,,,all,https://spdx.org/licenses/TORQUE-1.1,spdx, +tosl,Trusster Open Source License,,,all,https://spdx.org/licenses/TOSL,spdx, +tu-berlin-1.0,Technische Universitaet Berlin License 1.0,,,all,https://spdx.org/licenses/TU-Berlin-1.0,spdx, +tu-berlin-2.0,Technische Universitaet Berlin License 2.0,,,all,https://spdx.org/licenses/TU-Berlin-2.0,spdx, +ucl-1.0,Upstream Compatibility License v1.0,,,all,https://opensource.org/license/ucl-1-0,spdx,y +upl-1.0,Universal Permissive License v1.0,,,all,https://opensource.org/license/upl,spdx,y +unicode-dfs-2015,Unicode License Agreement - Data Files and Software (2015),,,all,https://spdx.org/licenses/Unicode-DFS-2015,spdx, +unicode-dfs-2016,Unicode License Agreement - Data Files and Software (2016),,,all,https://opensource.org/license/unicode-inc-license-agreement-data-files-and-software,spdx,y +unicode-tou,Unicode Terms of Use,,,all,https://spdx.org/licenses/Unicode-TOU,spdx, +unlicense,The Unlicense,,,all,https://opensource.org/license/unlicense,spdx,y +vostrom,VOSTROM Public License for Open Source,,,all,https://spdx.org/licenses/VOSTROM,spdx, +vsl-1.0,Vovida Software License v1.0,,,"all,software",https://opensource.org/license/vovidapl-php,spdx,y +vim,Vim License,,,all,https://spdx.org/licenses/Vim,spdx, +w3c,W3C Software Notice and License (2002-12-31),,,"all,software",https://opensource.org/license/w3c,spdx,y +w3c-19980720,W3C Software Notice and License (1998-07-20),,,"all,software",https://spdx.org/licenses/W3C-19980720,spdx, +w3c-20150513,W3C Software Notice and Document License (2015-05-13),,,"all,software",https://spdx.org/licenses/W3C-20150513,spdx, +wtfpl,Do What The F*ck You Want To Public License,,,all,https://spdx.org/licenses/WTFPL,spdx, +watcom-1.0,Sybase Open Watcom Public License 1.0,,,"all,software",https://opensource.org/license/sybase-php,spdx,y +wsuipa,Wsuipa License,,,all,https://spdx.org/licenses/Wsuipa,spdx, +x11,X11 License,,,all,https://spdx.org/licenses/X11,spdx, +xfree86-1.1,XFree86 License 1.1,,,all,https://spdx.org/licenses/XFree86-1.1,spdx, +xskat,XSkat License,,,all,https://spdx.org/licenses/XSkat,spdx, +xerox,Xerox License,,,all,https://spdx.org/licenses/Xerox,spdx, +xnet,X.Net License,,,"all,software",https://opensource.org/license/xnet,spdx,y +ypl-1.0,Yahoo! Public License v1.0,,,all,https://spdx.org/licenses/YPL-1.0,spdx, +ypl-1.1,Yahoo! Public License v1.1,,,all,https://spdx.org/licenses/YPL-1.1,spdx, +zpl-1.1,Zope Public License 1.1,,,"all,software",https://spdx.org/licenses/ZPL-1.1,spdx, +zpl-2.0,Zope Public License 2.0,,,"all,software",https://opensource.org/license/zpl-2-0,spdx,y +zpl-2.1,Zope Public License 2.1,,,"all,software",https://opensource.org/license/zpl-2-1,spdx,y +zed,Zed License,,,all,https://spdx.org/licenses/Zed,spdx, +zend-2.0,Zend License v2.0,,,all,https://spdx.org/licenses/Zend-2.0,spdx, +zimbra-1.3,Zimbra Public License v1.3,,,all,https://spdx.org/licenses/Zimbra-1.3,spdx, +zimbra-1.4,Zimbra Public License v1.4,,,all,https://spdx.org/licenses/Zimbra-1.4,spdx, +zlib,zlib License,,,"all,software",https://opensource.org/license/zlib,spdx,y +blessing,SQLite Blessing,,,all,https://spdx.org/licenses/blessing,spdx, +bzip2-1.0.5,bzip2 and libbzip2 License v1.0.5,,,all,https://spdx.org/licenses/bzip2-1.0.5,spdx, +bzip2-1.0.6,bzip2 and libbzip2 License v1.0.6,,,all,https://spdx.org/licenses/bzip2-1.0.6,spdx, +copyleft-next-0.3.0,copyleft-next 0.3.0,,,all,https://spdx.org/licenses/copyleft-next-0.3.0,spdx, +copyleft-next-0.3.1,copyleft-next 0.3.1,,,all,https://spdx.org/licenses/copyleft-next-0.3.1,spdx, +curl,curl License,,,all,https://spdx.org/licenses/curl,spdx, +diffmark,diffmark license,,,all,https://spdx.org/licenses/diffmark,spdx, +dvipdfm,dvipdfm License,,,all,https://spdx.org/licenses/dvipdfm,spdx, +egenix,eGenix.com Public License 1.1.0,,,all,https://spdx.org/licenses/eGenix,spdx, +etalab-2.0,Etalab Open License 2.0,,,"all,data",https://spdx.org/licenses/etalab-2.0,spdx, +gsoap-1.3b,gSOAP Public License v1.3b,,,all,https://spdx.org/licenses/gSOAP-1.3b,spdx, +gnuplot,gnuplot License,,,all,https://spdx.org/licenses/gnuplot,spdx, +imatix,iMatix Standard Function Library Agreement,,,all,https://spdx.org/licenses/iMatix,spdx, +libpng-2.0,PNG Reference Library version 2,,,"all,software",https://spdx.org/licenses/libpng-2.0,spdx, +libselinux-1.0,libselinux public domain notice,,,all,https://spdx.org/licenses/libselinux-1.0,spdx, +libtiff,libtiff License,,,all,https://spdx.org/licenses/libtiff,spdx, +mpich2,mpich2 License,,,all,https://spdx.org/licenses/mpich2,spdx, +psfrag,psfrag License,,,all,https://spdx.org/licenses/psfrag,spdx, +psutils,psutils License,,,all,https://spdx.org/licenses/psutils,spdx, +xinetd,xinetd License,,,all,https://spdx.org/licenses/xinetd,spdx, +xpp,XPP License,,,all,https://spdx.org/licenses/xpp,spdx, +zlib-acknowledgement,zlib/libpng License with Acknowledgement,,,"all,software",https://spdx.org/licenses/zlib-acknowledgement,spdx, diff --git a/invenio_rdm_records/fixtures/data/vocabularies/names_orcid.yaml b/invenio_rdm_records/fixtures/data/vocabularies/names_orcid.yaml index 9d10b6570..68665cc58 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/names_orcid.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/names_orcid.yaml @@ -2,618 +2,705 @@ - name: Northwestern University family_name: Riesbeck given_name: Christopher + id: 0000-0001-7673-1000 identifiers: - - identifier: https://orcid.org/0000-0001-7673-1000 + - identifier: 0000-0001-7673-1000 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Hauser given_name: Sandra + id: 0000-0001-8206-6000 identifiers: - - identifier: https://orcid.org/0000-0001-8206-6000 + - identifier: 0000-0001-8206-6000 scheme: orcid - affiliations: - name: Northwestern University family_name: Findler given_name: Robby + id: 0000-0002-4245-2000 identifiers: - - identifier: https://orcid.org/0000-0002-4245-2000 + - identifier: 0000-0002-4245-2000 scheme: orcid - affiliations: - name: TU Wien family_name: Kau given_name: Daniela + id: 0000-0002-7583-6000 identifiers: - - identifier: https://orcid.org/0000-0002-7583-6000 + - identifier: 0000-0002-7583-6000 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "\xC7ak\u0131r" given_name: Can + id: 0000-0001-5331-4001 identifiers: - - identifier: https://orcid.org/0000-0001-5331-4001 + - identifier: 0000-0001-5331-4001 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: "\xD6ZT\xDCRK" given_name: HANDE + id: 0000-0002-1010-4001 identifiers: - - identifier: https://orcid.org/0000-0002-1010-4001 + - identifier: 0000-0002-1010-4001 scheme: orcid - affiliations: - name: University of Fribourg family_name: Curty given_name: Simon + id: 0000-0002-2868-9001 identifiers: - - identifier: https://orcid.org/0000-0002-2868-9001 + - identifier: 0000-0002-2868-9001 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Wallner given_name: Tanja + id: 0000-0002-3326-9001 identifiers: - - identifier: https://orcid.org/0000-0002-3326-9001 + - identifier: 0000-0002-3326-9001 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Reichl given_name: Daniela + id: 0000-0002-4696-7001 identifiers: - - identifier: https://orcid.org/0000-0002-4696-7001 + - identifier: 0000-0002-4696-7001 scheme: orcid - affiliations: - name: University of Chicago - name: Northwestern University family_name: Shiu given_name: Eva + id: 0000-0002-7316-4001 identifiers: - - identifier: https://orcid.org/0000-0002-7316-4001 + - identifier: 0000-0002-7316-4001 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Yang + id: 0000-0003-1011-3001 identifiers: - - identifier: https://orcid.org/0000-0003-1011-3001 + - identifier: 0000-0003-1011-3001 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Of given_name: "G\xFCnther" + id: 0000-0003-2258-7001 identifiers: - - identifier: https://orcid.org/0000-0003-2258-7001 + - identifier: 0000-0003-2258-7001 scheme: orcid - affiliations: - name: Deutsches Krebsforschungszentrum - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Skripcak given_name: Tomas + id: 0000-0003-4064-6001 identifiers: - - identifier: https://orcid.org/0000-0003-4064-6001 + - identifier: 0000-0003-4064-6001 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: stora given_name: thierry + id: 0000-0002-4308-1002 identifiers: - - identifier: https://orcid.org/0000-0002-4308-1002 + - identifier: 0000-0002-4308-1002 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Loya Villalpando given_name: Alvaro + id: 0000-0002-8654-0002 identifiers: - - identifier: https://orcid.org/0000-0002-8654-0002 + - identifier: 0000-0002-8654-0002 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Lausanne family_name: Duchen given_name: Pablo + id: 0000-0002-9318-5002 identifiers: - - identifier: https://orcid.org/0000-0002-9318-5002 + - identifier: 0000-0002-9318-5002 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Rodriguez Rodriguez given_name: Diego + id: 0000-0003-0649-2002 identifiers: - - identifier: https://orcid.org/0000-0003-0649-2002 + - identifier: 0000-0003-0649-2002 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: Bundesdenkmalamt (Federal Monuments Authority Austria) family_name: Doubrawa given_name: Irene + id: 0000-0003-3589-1002 identifiers: - - identifier: https://orcid.org/0000-0003-3589-1002 + - identifier: 0000-0003-3589-1002 scheme: orcid - affiliations: - name: Northwestern University family_name: Kim given_name: Edward + id: 0000-0003-4098-1002 identifiers: - - identifier: https://orcid.org/0000-0003-4098-1002 + - identifier: 0000-0003-4098-1002 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Alisauskas given_name: Skirmantas + id: 0000-0001-8618-0003 identifiers: - - identifier: https://orcid.org/0000-0001-8618-0003 + - identifier: 0000-0001-8618-0003 scheme: orcid - affiliations: - name: University of Bamberg family_name: Scheuring given_name: Sonja + id: 0000-0001-9948-3003 identifiers: - - identifier: https://orcid.org/0000-0001-9948-3003 + - identifier: 0000-0001-9948-3003 scheme: orcid - affiliations: - name: TU Wien family_name: Fruzsa given_name: Krisztina + id: 0000-0002-2013-1003 identifiers: - - identifier: https://orcid.org/0000-0002-2013-1003 + - identifier: 0000-0002-2013-1003 scheme: orcid - affiliations: - name: TU Wien family_name: Wobrauschek given_name: Peter + id: 0000-0002-3699-3003 identifiers: - - identifier: https://orcid.org/0000-0002-3699-3003 + - identifier: 0000-0002-3699-3003 scheme: orcid - affiliations: - name: Northwestern University family_name: Malkani given_name: Roneil + id: 0000-0002-6712-4003 identifiers: - - identifier: https://orcid.org/0000-0002-6712-4003 + - identifier: 0000-0002-6712-4003 scheme: orcid - affiliations: - name: AVL List GmbH - name: "Technische Universit\xE4t Graz" family_name: Steiner given_name: Gerald + id: 0000-0003-0491-7003 identifiers: - - identifier: https://orcid.org/0000-0003-0491-7003 + - identifier: 0000-0003-0491-7003 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Lappe given_name: Jannik + id: 0000-0001-6508-4004 identifiers: - - identifier: https://orcid.org/0000-0001-6508-4004 + - identifier: 0000-0001-6508-4004 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Flexas given_name: Mar + id: 0000-0002-0617-3004 identifiers: - - identifier: https://orcid.org/0000-0002-0617-3004 + - identifier: 0000-0002-0617-3004 scheme: orcid - affiliations: - name: TU Wien family_name: Davoli given_name: Elisa + id: 0000-0002-1715-5004 identifiers: - - identifier: https://orcid.org/0000-0002-1715-5004 + - identifier: 0000-0002-1715-5004 scheme: orcid - affiliations: - name: CERN family_name: Kain given_name: Verena + id: 0000-0002-3135-2004 identifiers: - - identifier: https://orcid.org/0000-0002-3135-2004 + - identifier: 0000-0002-3135-2004 scheme: orcid - affiliations: - name: Northwestern University family_name: Kreutzer given_name: Evelyn + id: 0000-0002-3541-7004 identifiers: - - identifier: https://orcid.org/0000-0002-3541-7004 + - identifier: 0000-0002-3541-7004 scheme: orcid - affiliations: - name: TU Wien family_name: Konrad given_name: Gertrud + id: 0000-0002-5973-4004 identifiers: - - identifier: https://orcid.org/0000-0002-5973-4004 + - identifier: 0000-0002-5973-4004 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Iurchuk given_name: Vadym + id: 0000-0002-8553-7004 identifiers: - - identifier: https://orcid.org/0000-0002-8553-7004 + - identifier: 0000-0002-8553-7004 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Unterrainer given_name: Raphael + id: 0000-0002-8720-9004 identifiers: - - identifier: https://orcid.org/0000-0002-8720-9004 + - identifier: 0000-0002-8720-9004 scheme: orcid - affiliations: - name: TU Wien family_name: Jantsch given_name: Axel + id: 0000-0003-2251-0004 identifiers: - - identifier: https://orcid.org/0000-0003-2251-0004 + - identifier: 0000-0003-2251-0004 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Michaelis given_name: Kent + id: 0000-0001-7790-0005 identifiers: - - identifier: https://orcid.org/0000-0001-7790-0005 + - identifier: 0000-0001-7790-0005 scheme: orcid - affiliations: - name: CERN family_name: Coelingh given_name: Gert Jan + id: 0000-0001-9917-3005 identifiers: - - identifier: https://orcid.org/0000-0001-9917-3005 + - identifier: 0000-0001-9917-3005 scheme: orcid - affiliations: - name: University of Fribourg family_name: Schoenhagen given_name: Philomen + id: 0000-0003-3574-5005 identifiers: - - identifier: https://orcid.org/0000-0003-3574-5005 + - identifier: 0000-0003-3574-5005 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Kozlowski given_name: Gregor + id: 0000-0003-4856-2005 identifiers: - - identifier: https://orcid.org/0000-0003-4856-2005 + - identifier: 0000-0003-4856-2005 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Thomas given_name: Anita + id: 0000-0001-6777-3006 identifiers: - - identifier: https://orcid.org/0000-0001-6777-3006 + - identifier: 0000-0001-6777-3006 scheme: orcid - affiliations: - name: Northwestern University family_name: Burridge given_name: Paul + id: 0000-0001-9616-0006 identifiers: - - identifier: https://orcid.org/0000-0001-9616-0006 + - identifier: 0000-0001-9616-0006 scheme: orcid - affiliations: - name: Northwestern University family_name: Rosen given_name: Andrew + id: 0000-0002-0141-7006 identifiers: - - identifier: https://orcid.org/0000-0002-0141-7006 + - identifier: 0000-0002-0141-7006 scheme: orcid - affiliations: - name: Northwestern University family_name: Rose-Lefmann given_name: Deborah + id: 0000-0002-1313-5006 identifiers: - - identifier: https://orcid.org/0000-0002-1313-5006 + - identifier: 0000-0002-1313-5006 scheme: orcid - affiliations: - name: TU Wien family_name: Kerndler given_name: Martin + id: 0000-0002-1683-8006 identifiers: - - identifier: https://orcid.org/0000-0002-1683-8006 + - identifier: 0000-0002-1683-8006 scheme: orcid - affiliations: - name: University of Bamberg family_name: Asdecker given_name: "Bj\xF6rn" + id: 0000-0002-4027-2006 identifiers: - - identifier: https://orcid.org/0000-0002-4027-2006 + - identifier: 0000-0002-4027-2006 scheme: orcid - affiliations: - name: TU Wien family_name: Wendt given_name: Alexander + id: 0000-0002-4909-0006 identifiers: - - identifier: https://orcid.org/0000-0002-4909-0006 + - identifier: 0000-0002-4909-0006 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Waadt given_name: Rainer + id: 0000-0002-6772-3006 identifiers: - - identifier: https://orcid.org/0000-0002-6772-3006 + - identifier: 0000-0002-6772-3006 scheme: orcid - affiliations: - name: CERN family_name: Laurent given_name: Jean-Michel + id: 0000-0003-3224-9006 identifiers: - - identifier: https://orcid.org/0000-0003-3224-9006 + - identifier: 0000-0003-3224-9006 scheme: orcid - affiliations: - name: CERN family_name: "Tomk\xF3w" given_name: "\u0141ukasz" + id: 0000-0001-5278-6007 identifiers: - - identifier: https://orcid.org/0000-0001-5278-6007 + - identifier: 0000-0001-5278-6007 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Albach given_name: Daniel Peter Konrad + id: 0000-0001-5602-3007 identifiers: - - identifier: https://orcid.org/0000-0001-5602-3007 + - identifier: 0000-0001-5602-3007 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Betz given_name: Tina + id: 0000-0001-9152-3007 identifiers: - - identifier: https://orcid.org/0000-0001-9152-3007 + - identifier: 0000-0001-9152-3007 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Berducci given_name: Luigi + id: 0000-0002-3497-6007 identifiers: - - identifier: https://orcid.org/0000-0002-3497-6007 + - identifier: 0000-0002-3497-6007 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Sormann given_name: Christian + id: 0000-0002-6824-4007 identifiers: - - identifier: https://orcid.org/0000-0002-6824-4007 + - identifier: 0000-0002-6824-4007 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Meurer given_name: Jonas + id: 0000-0003-2327-4007 identifiers: - - identifier: https://orcid.org/0000-0003-2327-4007 + - identifier: 0000-0003-2327-4007 scheme: orcid - affiliations: - name: Northwestern University family_name: Morgun given_name: Eva + id: 0000-0003-2386-4007 identifiers: - - identifier: https://orcid.org/0000-0003-2386-4007 + - identifier: 0000-0003-2386-4007 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Gandini given_name: Paolo + id: 0000-0001-7267-6008 identifiers: - - identifier: https://orcid.org/0000-0001-7267-6008 + - identifier: 0000-0001-7267-6008 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Stankus given_name: Paul + id: 0000-0002-2834-2008 identifiers: - - identifier: https://orcid.org/0000-0002-2834-2008 + - identifier: 0000-0002-2834-2008 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Mukherjee given_name: Swagato + id: 0000-0002-3824-1008 identifiers: - - identifier: https://orcid.org/0000-0002-3824-1008 + - identifier: 0000-0002-3824-1008 scheme: orcid - affiliations: - name: CERN family_name: Gnecchi given_name: Alessandra + id: 0000-0002-4925-8008 identifiers: - - identifier: https://orcid.org/0000-0002-4925-8008 + - identifier: 0000-0002-4925-8008 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Polyanskiy given_name: Mikhail + id: 0000-0002-6043-0008 identifiers: - - identifier: https://orcid.org/0000-0002-6043-0008 + - identifier: 0000-0002-6043-0008 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Chen given_name: Guozhang + id: 0000-0002-6171-6008 identifiers: - - identifier: https://orcid.org/0000-0002-6171-6008 + - identifier: 0000-0002-6171-6008 scheme: orcid - affiliations: - name: University of Fribourg family_name: Chardonnens given_name: Patrick + id: 0000-0003-2693-8008 identifiers: - - identifier: https://orcid.org/0000-0003-2693-8008 + - identifier: 0000-0003-2693-8008 scheme: orcid - affiliations: - name: TU Wien family_name: Stifter given_name: Matthias + id: 0000-0002-3726-9009 identifiers: - - identifier: https://orcid.org/0000-0002-3726-9009 + - identifier: 0000-0002-3726-9009 scheme: orcid - affiliations: - name: University of Western Ontario Faculty of Health Sciences - name: Northwestern University family_name: Roberts given_name: Angela + id: 0000-0002-9226-8009 identifiers: - - identifier: https://orcid.org/0000-0002-9226-8009 + - identifier: 0000-0002-9226-8009 scheme: orcid - affiliations: - name: California Institute of Technology - name: Toyohashi University of Technology family_name: Shehata given_name: Mohammad + id: 0000-0003-1710-3009 identifiers: - - identifier: https://orcid.org/0000-0003-1710-3009 + - identifier: 0000-0003-1710-3009 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Dresden" - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Cowan given_name: Thomas + id: 0000-0002-5845-000X identifiers: - - identifier: https://orcid.org/0000-0002-5845-000X + - identifier: 0000-0002-5845-000X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zuev given_name: Konstantin + id: 0000-0003-2174-700X identifiers: - - identifier: https://orcid.org/0000-0003-2174-700X + - identifier: 0000-0003-2174-700X scheme: orcid - affiliations: - name: Northwestern University family_name: Xu given_name: Yiming + id: 0000-0003-3011-700X identifiers: - - identifier: https://orcid.org/0000-0003-3011-700X + - identifier: 0000-0003-3011-700X scheme: orcid - affiliations: - name: CERN family_name: Prousalidi given_name: Thenia + id: 0000-0003-3192-900X identifiers: - - identifier: https://orcid.org/0000-0003-3192-900X + - identifier: 0000-0003-3192-900X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Tywoniuk given_name: Konrad + id: 0000-0001-5677-0010 identifiers: - - identifier: https://orcid.org/0000-0001-5677-0010 + - identifier: 0000-0001-5677-0010 scheme: orcid - affiliations: - name: University of Bamberg family_name: Nicklas given_name: Daniela + id: 0000-0001-7012-6010 identifiers: - - identifier: https://orcid.org/0000-0001-7012-6010 + - identifier: 0000-0001-7012-6010 scheme: orcid - affiliations: - name: "Universit\xE4t Freiburg" family_name: Schmidt given_name: Thorsten + id: 0000-0001-9254-4010 identifiers: - - identifier: https://orcid.org/0000-0001-9254-4010 + - identifier: 0000-0001-9254-4010 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shen given_name: Binglin + id: 0000-0001-9687-9010 identifiers: - - identifier: https://orcid.org/0000-0001-9687-9010 + - identifier: 0000-0001-9687-9010 scheme: orcid - affiliations: - name: TU Wien family_name: Niyazi given_name: Abuduaini + id: 0000-0002-0418-9010 identifiers: - - identifier: https://orcid.org/0000-0002-0418-9010 + - identifier: 0000-0002-0418-9010 scheme: orcid - affiliations: - name: Northwestern University family_name: Jeong given_name: Jihoon + id: 0000-0002-2427-8010 identifiers: - - identifier: https://orcid.org/0000-0002-2427-8010 + - identifier: 0000-0002-2427-8010 scheme: orcid - affiliations: - name: University of Fribourg family_name: Rathgeb given_name: Ursina + id: 0000-0002-2762-0010 identifiers: - - identifier: https://orcid.org/0000-0002-2762-0010 + - identifier: 0000-0002-2762-0010 scheme: orcid - affiliations: - name: CERN family_name: Lin given_name: Ling + id: 0000-0002-8499-1010 identifiers: - - identifier: https://orcid.org/0000-0002-8499-1010 + - identifier: 0000-0002-8499-1010 scheme: orcid - affiliations: - name: TU Wien family_name: WU given_name: Hsiang-Yun + id: 0000-0003-1028-0010 identifiers: - - identifier: https://orcid.org/0000-0003-1028-0010 + - identifier: 0000-0003-1028-0010 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Newhouse given_name: Paul + id: 0000-0003-2032-3010 identifiers: - - identifier: https://orcid.org/0000-0003-2032-3010 + - identifier: 0000-0003-2032-3010 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Blatnik given_name: Marie + id: 0000-0003-3496-0010 identifiers: - - identifier: https://orcid.org/0000-0003-3496-0010 + - identifier: 0000-0003-3496-0010 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yang given_name: Moon Young + id: 0000-0003-4436-8010 identifiers: - - identifier: https://orcid.org/0000-0003-4436-8010 + - identifier: 0000-0003-4436-8010 scheme: orcid - affiliations: - name: CERN family_name: Velotti given_name: Francesco Maria + id: 0000-0001-7815-6011 identifiers: - - identifier: https://orcid.org/0000-0001-7815-6011 + - identifier: 0000-0001-7815-6011 scheme: orcid - affiliations: - name: TU Wien family_name: Schneider given_name: Ulrike + id: 0000-0002-3759-0011 identifiers: - - identifier: https://orcid.org/0000-0002-3759-0011 + - identifier: 0000-0002-3759-0011 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mirzoyan given_name: Ruben + id: 0000-0002-2334-4012 identifiers: - - identifier: https://orcid.org/0000-0002-2334-4012 + - identifier: 0000-0002-2334-4012 scheme: orcid - affiliations: - name: Northwestern University family_name: Bao given_name: Xiaomin + id: 0000-0002-8845-5012 identifiers: - - identifier: https://orcid.org/0000-0002-8845-5012 + - identifier: 0000-0002-8845-5012 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Nembrini given_name: Julien + id: 0000-0003-0663-3012 identifiers: - - identifier: https://orcid.org/0000-0003-0663-3012 + - identifier: 0000-0003-0663-3012 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ahmadi given_name: Mohamadreza + id: 0000-0003-1447-3012 identifiers: - - identifier: https://orcid.org/0000-0003-1447-3012 + - identifier: 0000-0003-1447-3012 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Osipenko given_name: Mikhail + id: 0000-0001-9618-3013 identifiers: - - identifier: https://orcid.org/0000-0001-9618-3013 + - identifier: 0000-0001-9618-3013 scheme: orcid - affiliations: - name: California Institute of Technology @@ -621,412 +708,470 @@ - name: New York University family_name: MacFadyen given_name: Andrew + id: 0000-0002-0106-9013 identifiers: - - identifier: https://orcid.org/0000-0002-0106-9013 + - identifier: 0000-0002-0106-9013 scheme: orcid - affiliations: - name: Northwestern University family_name: Troemner given_name: Matthew + id: 0000-0002-3338-6013 identifiers: - - identifier: https://orcid.org/0000-0002-3338-6013 + - identifier: 0000-0002-3338-6013 scheme: orcid - affiliations: - name: TU Wien family_name: Pietschnig given_name: Christopher + id: 0000-0001-6511-0014 identifiers: - - identifier: https://orcid.org/0000-0001-6511-0014 + - identifier: 0000-0001-6511-0014 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Tyszka given_name: Mike + id: 0000-0001-9342-9014 identifiers: - - identifier: https://orcid.org/0000-0001-9342-9014 + - identifier: 0000-0001-9342-9014 scheme: orcid - affiliations: - name: Northwestern University family_name: Hartmann given_name: Erica + id: 0000-0002-0966-2014 identifiers: - - identifier: https://orcid.org/0000-0002-0966-2014 + - identifier: 0000-0002-0966-2014 scheme: orcid - affiliations: - name: TU Wien family_name: Jaidl given_name: Michael + id: 0000-0002-1806-7014 identifiers: - - identifier: https://orcid.org/0000-0002-1806-7014 + - identifier: 0000-0002-1806-7014 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Rybakova given_name: Daria + id: 0000-0002-1756-6014 identifiers: - - identifier: https://orcid.org/0000-0002-1756-6014 + - identifier: 0000-0002-1756-6014 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Siebold given_name: Mathias + id: 0000-0002-4697-3014 identifiers: - - identifier: https://orcid.org/0000-0002-4697-3014 + - identifier: 0000-0002-4697-3014 scheme: orcid - affiliations: - name: Northwestern University family_name: Mishory given_name: Abby + id: 0000-0002-6484-8014 identifiers: - - identifier: https://orcid.org/0000-0002-6484-8014 + - identifier: 0000-0002-6484-8014 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Du given_name: Song Ming + id: 0000-0003-0083-7014 identifiers: - - identifier: https://orcid.org/0000-0003-0083-7014 + - identifier: 0000-0003-0083-7014 scheme: orcid - affiliations: - name: Northwestern University family_name: Shu given_name: Shipeng + id: 0000-0003-3859-5014 identifiers: - - identifier: https://orcid.org/0000-0003-3859-5014 + - identifier: 0000-0003-3859-5014 scheme: orcid - affiliations: - name: CERN family_name: lombardi given_name: alessandra + id: 0000-0001-6448-8015 identifiers: - - identifier: https://orcid.org/0000-0001-6448-8015 + - identifier: 0000-0001-6448-8015 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Houle given_name: Michael + id: 0000-0001-8486-8015 identifiers: - - identifier: https://orcid.org/0000-0001-8486-8015 + - identifier: 0000-0001-8486-8015 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Efthymiopoulos given_name: Ilias + id: 0000-0001-9237-4015 identifiers: - - identifier: https://orcid.org/0000-0001-9237-4015 + - identifier: 0000-0001-9237-4015 scheme: orcid - affiliations: - name: Northwestern University family_name: Page given_name: Benjamin + id: 0000-0002-0889-0015 identifiers: - - identifier: https://orcid.org/0000-0002-0889-0015 + - identifier: 0000-0002-0889-0015 scheme: orcid - affiliations: - name: University of Fribourg family_name: Knoll given_name: Alex + id: 0000-0002-3884-6015 identifiers: - - identifier: https://orcid.org/0000-0002-3884-6015 + - identifier: 0000-0002-3884-6015 scheme: orcid - affiliations: - name: Northwestern University family_name: Bernat given_name: Alex + id: 0000-0002-5955-9015 identifiers: - - identifier: https://orcid.org/0000-0002-5955-9015 + - identifier: 0000-0002-5955-9015 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mukherjee given_name: Arnab + id: 0000-0003-3571-8015 identifiers: - - identifier: https://orcid.org/0000-0003-3571-8015 + - identifier: 0000-0003-3571-8015 scheme: orcid - affiliations: - name: Northwestern University family_name: Campanoni given_name: Simone + id: 0000-0001-9806-7016 identifiers: - - identifier: https://orcid.org/0000-0001-9806-7016 + - identifier: 0000-0001-9806-7016 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Rocchi given_name: Alessio + id: 0000-0002-1382-9016 identifiers: - - identifier: https://orcid.org/0000-0002-1382-9016 + - identifier: 0000-0002-1382-9016 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kovalev given_name: Sergey + id: 0000-0002-2290-1016 identifiers: - - identifier: https://orcid.org/0000-0002-2290-1016 + - identifier: 0000-0002-2290-1016 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Petit given_name: Valentine + id: 0000-0002-6179-1016 identifiers: - - identifier: https://orcid.org/0000-0002-6179-1016 + - identifier: 0000-0002-6179-1016 scheme: orcid - affiliations: - name: TU Wien family_name: Summerer given_name: Harald + id: 0000-0002-9188-6016 identifiers: - - identifier: https://orcid.org/0000-0002-9188-6016 + - identifier: 0000-0002-9188-6016 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Aretxabaleta given_name: Maite + id: 0000-0002-9618-5016 identifiers: - - identifier: https://orcid.org/0000-0002-9618-5016 + - identifier: 0000-0002-9618-5016 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Siemko given_name: Andrzej + id: 0000-0001-7336-5017 identifiers: - - identifier: https://orcid.org/0000-0001-7336-5017 + - identifier: 0000-0001-7336-5017 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Cichocki given_name: Max + id: 0000-0002-1454-2017 identifiers: - - identifier: https://orcid.org/0000-0002-1454-2017 + - identifier: 0000-0002-1454-2017 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Moggi given_name: Andrea + id: 0000-0002-2323-8017 identifiers: - - identifier: https://orcid.org/0000-0002-2323-8017 + - identifier: 0000-0002-2323-8017 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Ziegler given_name: Tim + id: 0000-0002-3727-7017 identifiers: - - identifier: https://orcid.org/0000-0002-3727-7017 + - identifier: 0000-0002-3727-7017 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Oh given_name: Jun + id: 0000-0002-5158-9017 identifiers: - - identifier: https://orcid.org/0000-0002-5158-9017 + - identifier: 0000-0002-5158-9017 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schloer given_name: Sebastian + id: 0000-0002-9944-3017 identifiers: - - identifier: https://orcid.org/0000-0002-9944-3017 + - identifier: 0000-0002-9944-3017 scheme: orcid - affiliations: - name: Northwestern University - name: Penn State Milton S Hershey Medical Center family_name: Xu given_name: Jie + id: 0000-0003-0020-5017 identifiers: - - identifier: https://orcid.org/0000-0003-0020-5017 + - identifier: 0000-0003-0020-5017 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Markus given_name: Charles + id: 0000-0003-2656-0017 identifiers: - - identifier: https://orcid.org/0000-0003-2656-0017 + - identifier: 0000-0003-2656-0017 scheme: orcid - affiliations: - name: CERN family_name: Tolk given_name: Siim + id: 0000-0001-5523-2018 identifiers: - - identifier: https://orcid.org/0000-0001-5523-2018 + - identifier: 0000-0001-5523-2018 scheme: orcid - affiliations: - name: Northwestern University family_name: Brunzelle given_name: Joseph + id: 0000-0001-9197-0018 identifiers: - - identifier: https://orcid.org/0000-0001-9197-0018 + - identifier: 0000-0001-9197-0018 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Weger given_name: Benedikt + id: 0000-0002-0008-0018 identifiers: - - identifier: https://orcid.org/0000-0002-0008-0018 + - identifier: 0000-0002-0008-0018 scheme: orcid - affiliations: - name: University of Fribourg family_name: Delaloye given_name: Reynald + id: 0000-0002-2037-2018 identifiers: - - identifier: https://orcid.org/0000-0002-2037-2018 + - identifier: 0000-0002-2037-2018 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mayo given_name: Stephen + id: 0000-0002-9785-5018 identifiers: - - identifier: https://orcid.org/0000-0002-9785-5018 + - identifier: 0000-0002-9785-5018 scheme: orcid - affiliations: - name: TU Wien - name: Fachhochschule Campus Wien family_name: Santana Sosa given_name: "A\xEDda" + id: 0000-0003-2647-6018 identifiers: - - identifier: https://orcid.org/0000-0003-2647-6018 + - identifier: 0000-0003-2647-6018 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Stein given_name: Armin + id: 0000-0003-2854-3018 identifiers: - - identifier: https://orcid.org/0000-0003-2854-3018 + - identifier: 0000-0003-2854-3018 scheme: orcid - affiliations: - name: Northwestern University family_name: Russell given_name: Susan + id: 0000-0003-3006-1018 identifiers: - - identifier: https://orcid.org/0000-0003-3006-1018 + - identifier: 0000-0003-3006-1018 scheme: orcid - affiliations: - name: TU Wien family_name: Maestri given_name: Luca + id: 0000-0001-5268-4019 identifiers: - - identifier: https://orcid.org/0000-0001-5268-4019 + - identifier: 0000-0001-5268-4019 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Muralter given_name: Fabian + id: 0000-0001-8038-6019 identifiers: - - identifier: https://orcid.org/0000-0001-8038-6019 + - identifier: 0000-0001-8038-6019 scheme: orcid - affiliations: - name: TU Wien - name: "T\xDCV (Austria)" family_name: Hollerer given_name: Siegfried + id: 0000-0002-3814-6019 identifiers: - - identifier: https://orcid.org/0000-0002-3814-6019 + - identifier: 0000-0002-3814-6019 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kanwal given_name: Jess + id: 0000-0002-4596-0019 identifiers: - - identifier: https://orcid.org/0000-0002-4596-0019 + - identifier: 0000-0002-4596-0019 scheme: orcid - affiliations: - name: CERN family_name: Stagni given_name: Federico + id: 0000-0002-7576-4019 identifiers: - - identifier: https://orcid.org/0000-0002-7576-4019 + - identifier: 0000-0002-7576-4019 scheme: orcid - affiliations: - name: TU Wien - name: Harvard University family_name: Schwarz given_name: Benedikt + id: 0000-0002-9513-2019 identifiers: - - identifier: https://orcid.org/0000-0002-9513-2019 + - identifier: 0000-0002-9513-2019 scheme: orcid - affiliations: - name: University of Fribourg family_name: Rouiller given_name: Eric + id: 0000-0003-1355-6019 identifiers: - - identifier: https://orcid.org/0000-0003-1355-6019 + - identifier: 0000-0003-1355-6019 scheme: orcid - affiliations: - name: Northwestern University family_name: Kuzmanovic given_name: Aleksandar + id: 0000-0003-2622-6019 identifiers: - - identifier: https://orcid.org/0000-0003-2622-6019 + - identifier: 0000-0003-2622-6019 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bieberle given_name: "Andr\xE9" + id: 0000-0003-3428-5019 identifiers: - - identifier: https://orcid.org/0000-0003-3428-5019 + - identifier: 0000-0003-3428-5019 scheme: orcid - affiliations: - name: CERN family_name: Kugathasan given_name: Thanushan + id: 0000-0003-4631-5019 identifiers: - - identifier: https://orcid.org/0000-0003-4631-5019 + - identifier: 0000-0003-4631-5019 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Sukhanov given_name: Andrei + id: 0000-0001-5470-401X identifiers: - - identifier: https://orcid.org/0000-0001-5470-401X + - identifier: 0000-0001-5470-401X scheme: orcid - affiliations: - name: TU Wien family_name: Nandan given_name: Sreejith P + id: 0000-0002-1605-501X identifiers: - - identifier: https://orcid.org/0000-0002-1605-501X + - identifier: 0000-0002-1605-501X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ely given_name: Kim + id: 0000-0002-3915-001X identifiers: - - identifier: https://orcid.org/0000-0002-3915-001X + - identifier: 0000-0002-3915-001X scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Yoshida given_name: Hiroshi + id: 0000-0002-8389-901X identifiers: - - identifier: https://orcid.org/0000-0002-8389-901X + - identifier: 0000-0002-8389-901X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wise given_name: Mark + id: 0000-0002-9125-801X identifiers: - - identifier: https://orcid.org/0000-0002-9125-801X + - identifier: 0000-0002-9125-801X scheme: orcid - affiliations: - name: California Institute of Technology family_name: vlimant given_name: jean-roch + id: 0000-0002-9705-101X identifiers: - - identifier: https://orcid.org/0000-0002-9705-101X + - identifier: 0000-0002-9705-101X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Willers given_name: Bernd + id: 0000-0003-0255-101X identifiers: - - identifier: https://orcid.org/0000-0003-0255-101X + - identifier: 0000-0003-0255-101X scheme: orcid - affiliations: - name: Deutsches Elektronen-Synchrotron DESY - name: European Organization for Nuclear Research family_name: Grech given_name: Christian + id: 0000-0003-3046-401X identifiers: - - identifier: https://orcid.org/0000-0003-3046-401X + - identifier: 0000-0003-3046-401X scheme: orcid - affiliations: - name: University of Helsinki @@ -1034,791 +1179,902 @@ - name: Helsinki Region Environmental Services Authority HSY family_name: Manninen given_name: Hanna E. + id: 0000-0002-0419-4020 identifiers: - - identifier: https://orcid.org/0000-0002-0419-4020 + - identifier: 0000-0002-0419-4020 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hubert given_name: Mario + id: 0000-0002-1170-6020 identifiers: - - identifier: https://orcid.org/0000-0002-1170-6020 + - identifier: 0000-0002-1170-6020 scheme: orcid - affiliations: - name: CERN family_name: Ravat given_name: Sylvain + id: 0000-0002-9548-7020 identifiers: - - identifier: https://orcid.org/0000-0002-9548-7020 + - identifier: 0000-0002-9548-7020 scheme: orcid - affiliations: - name: TU Wien family_name: Gaertner given_name: Peter + id: 0000-0003-1569-5020 identifiers: - - identifier: https://orcid.org/0000-0003-1569-5020 + - identifier: 0000-0003-1569-5020 scheme: orcid - affiliations: - name: Northwestern University family_name: Williams given_name: Trevor + id: 0000-0003-2202-7020 identifiers: - - identifier: https://orcid.org/0000-0003-2202-7020 + - identifier: 0000-0003-2202-7020 scheme: orcid - affiliations: - name: Northwestern University family_name: Sun given_name: Hao + id: 0000-0001-9153-4021 identifiers: - - identifier: https://orcid.org/0000-0001-9153-4021 + - identifier: 0000-0001-9153-4021 scheme: orcid - affiliations: - name: TU Wien family_name: Kasper given_name: Lukas + id: 0000-0001-9474-3021 identifiers: - - identifier: https://orcid.org/0000-0001-9474-3021 + - identifier: 0000-0001-9474-3021 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Sch\xFCtt" given_name: Julian + id: 0000-0002-2593-3021 identifiers: - - identifier: https://orcid.org/0000-0002-2593-3021 + - identifier: 0000-0002-2593-3021 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Panuganti given_name: Harsha + id: 0000-0002-9325-8021 identifiers: - - identifier: https://orcid.org/0000-0002-9325-8021 + - identifier: 0000-0002-9325-8021 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Motrunich given_name: Olexei I. + id: 0000-0001-8031-0022 identifiers: - - identifier: https://orcid.org/0000-0001-8031-0022 + - identifier: 0000-0001-8031-0022 scheme: orcid - affiliations: - name: CERN family_name: Attems given_name: Maximilian + id: 0000-0001-8764-3022 identifiers: - - identifier: https://orcid.org/0000-0001-8764-3022 + - identifier: 0000-0001-8764-3022 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: D'Avino given_name: Vittoria + id: 0000-0001-8925-1022 identifiers: - - identifier: https://orcid.org/0000-0001-8925-1022 + - identifier: 0000-0001-8925-1022 scheme: orcid - affiliations: - name: CERN family_name: CHARITONIDIS given_name: Nikolaos + id: 0000-0001-9506-1022 identifiers: - - identifier: https://orcid.org/0000-0001-9506-1022 + - identifier: 0000-0001-9506-1022 scheme: orcid - affiliations: - name: University of Fribourg family_name: Calonne given_name: Julie + id: 0000-0002-6613-0022 identifiers: - - identifier: https://orcid.org/0000-0002-6613-0022 + - identifier: 0000-0002-6613-0022 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Singh given_name: Rashi + id: 0000-0002-7872-1022 identifiers: - - identifier: https://orcid.org/0000-0002-7872-1022 + - identifier: 0000-0002-7872-1022 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Maier given_name: Oliver + id: 0000-0002-7800-0022 identifiers: - - identifier: https://orcid.org/0000-0002-7800-0022 + - identifier: 0000-0002-7800-0022 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Sober given_name: Michael + id: 0000-0002-9612-9022 identifiers: - - identifier: https://orcid.org/0000-0002-9612-9022 + - identifier: 0000-0002-9612-9022 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Pasquini given_name: Miriam + id: 0000-0003-4687-8022 identifiers: - - identifier: https://orcid.org/0000-0003-4687-8022 + - identifier: 0000-0003-4687-8022 scheme: orcid - affiliations: - name: Northwestern University family_name: Helmer given_name: Christine + id: 0000-0003-4849-4022 identifiers: - - identifier: https://orcid.org/0000-0003-4849-4022 + - identifier: 0000-0003-4849-4022 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yu given_name: You + id: 0000-0001-7059-7023 identifiers: - - identifier: https://orcid.org/0000-0001-7059-7023 + - identifier: 0000-0001-7059-7023 scheme: orcid - affiliations: - name: TU Wien family_name: Cignarale given_name: Giorgio + id: 0000-0002-6779-4023 identifiers: - - identifier: https://orcid.org/0000-0002-6779-4023 + - identifier: 0000-0002-6779-4023 scheme: orcid - affiliations: - name: Northwestern University family_name: Ding given_name: Fenghua + id: 0000-0002-9529-3023 identifiers: - - identifier: https://orcid.org/0000-0002-9529-3023 + - identifier: 0000-0002-9529-3023 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Martin-Soelch given_name: Chantal + id: 0000-0003-3859-9023 identifiers: - - identifier: https://orcid.org/0000-0003-3859-9023 + - identifier: 0000-0003-3859-9023 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Schweighofer given_name: Bernhard + id: 0000-0001-8091-6024 identifiers: - - identifier: https://orcid.org/0000-0001-8091-6024 + - identifier: 0000-0001-8091-6024 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cunha given_name: Alexandre + id: 0000-0002-2541-6024 identifiers: - - identifier: https://orcid.org/0000-0002-2541-6024 + - identifier: 0000-0002-2541-6024 scheme: orcid - affiliations: - name: Northwestern University family_name: Rosensweig given_name: Clark + id: 0000-0001-6364-2025 identifiers: - - identifier: https://orcid.org/0000-0001-6364-2025 + - identifier: 0000-0001-6364-2025 scheme: orcid - affiliations: - name: TU Wien family_name: Bors given_name: Christian + id: 0000-0001-8119-7025 identifiers: - - identifier: https://orcid.org/0000-0001-8119-7025 + - identifier: 0000-0001-8119-7025 scheme: orcid - affiliations: - name: Northwestern University family_name: Chang given_name: Yau Ming + id: 0000-0003-1087-6025 identifiers: - - identifier: https://orcid.org/0000-0003-1087-6025 + - identifier: 0000-0003-1087-6025 scheme: orcid - affiliations: - name: Northwestern University family_name: Takahashi given_name: Momoko + id: 0000-0003-3816-6025 identifiers: - - identifier: https://orcid.org/0000-0003-3816-6025 + - identifier: 0000-0003-3816-6025 scheme: orcid - affiliations: - name: TU Wien family_name: Prell given_name: Silvia + id: 0000-0001-7797-6026 identifiers: - - identifier: https://orcid.org/0000-0001-7797-6026 + - identifier: 0000-0001-7797-6026 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shi given_name: Yaozhong + id: 0000-0001-8863-2026 identifiers: - - identifier: https://orcid.org/0000-0001-8863-2026 + - identifier: 0000-0001-8863-2026 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Bonnat given_name: Catherine + id: 0000-0002-2820-0026 identifiers: - - identifier: https://orcid.org/0000-0002-2820-0026 + - identifier: 0000-0002-2820-0026 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Roukes given_name: Michael + id: 0000-0002-2916-6026 identifiers: - - identifier: https://orcid.org/0000-0002-2916-6026 + - identifier: 0000-0002-2916-6026 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ma given_name: Rongrong + id: 0000-0002-3834-5026 identifiers: - - identifier: https://orcid.org/0000-0002-3834-5026 + - identifier: 0000-0002-3834-5026 scheme: orcid - affiliations: - name: Northwestern University family_name: Burgess given_name: Eleanor + id: 0000-0002-8229-0026 identifiers: - - identifier: https://orcid.org/0000-0002-8229-0026 + - identifier: 0000-0002-8229-0026 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Stavric given_name: Milena + id: 0000-0002-8682-2026 identifiers: - - identifier: https://orcid.org/0000-0002-8682-2026 + - identifier: 0000-0002-8682-2026 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: Max Planck Institute for Plant Breeding Research family_name: Finkemeier given_name: Iris + id: 0000-0002-8972-4026 identifiers: - - identifier: https://orcid.org/0000-0002-8972-4026 + - identifier: 0000-0002-8972-4026 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Dresden" family_name: Kevdzija given_name: Maja + id: 0000-0003-2120-2026 identifiers: - - identifier: https://orcid.org/0000-0003-2120-2026 + - identifier: 0000-0003-2120-2026 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Soliman given_name: Yousuf + id: 0000-0003-4023-5026 identifiers: - - identifier: https://orcid.org/0000-0003-4023-5026 + - identifier: 0000-0003-4023-5026 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Ryzhov given_name: Anton + id: 0000-0002-4965-4027 identifiers: - - identifier: https://orcid.org/0000-0002-4965-4027 + - identifier: 0000-0002-4965-4027 scheme: orcid - affiliations: - name: TU Wien family_name: Kozeschnik given_name: Ernst + id: 0000-0003-4733-4027 identifiers: - - identifier: https://orcid.org/0000-0003-4733-4027 + - identifier: 0000-0003-4733-4027 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Tomassini given_name: Sandro + id: 0000-0001-7290-2028 identifiers: - - identifier: https://orcid.org/0000-0001-7290-2028 + - identifier: 0000-0001-7290-2028 scheme: orcid - affiliations: - name: Graz University of Technology family_name: KHAN given_name: SAMI ULLAH + id: 0000-0001-7402-7028 identifiers: - - identifier: https://orcid.org/0000-0001-7402-7028 + - identifier: 0000-0001-7402-7028 scheme: orcid - affiliations: - name: "K\xF8benhavns Universitet" - name: University of Fribourg family_name: Bluwstein given_name: Jevgeniy + id: 0000-0002-1162-5028 identifiers: - - identifier: https://orcid.org/0000-0002-1162-5028 + - identifier: 0000-0002-1162-5028 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Bradu given_name: Benjamin + id: 0000-0002-2245-5028 identifiers: - - identifier: https://orcid.org/0000-0002-2245-5028 + - identifier: 0000-0002-2245-5028 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Wieser given_name: Sandro + id: 0000-0002-2701-0028 identifiers: - - identifier: https://orcid.org/0000-0002-2701-0028 + - identifier: 0000-0002-2701-0028 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Soritz given_name: Sebastian + id: 0000-0002-3408-5028 identifiers: - - identifier: https://orcid.org/0000-0002-3408-5028 + - identifier: 0000-0002-3408-5028 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Knopper given_name: Sabrina + id: 0000-0002-4086-4028 identifiers: - - identifier: https://orcid.org/0000-0002-4086-4028 + - identifier: 0000-0002-4086-4028 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Gush given_name: Rose-Anne + id: 0000-0003-3508-9028 identifiers: - - identifier: https://orcid.org/0000-0003-3508-9028 + - identifier: 0000-0003-3508-9028 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Menzel given_name: Peter + id: 0000-0001-7016-9029 identifiers: - - identifier: https://orcid.org/0000-0001-7016-9029 + - identifier: 0000-0001-7016-9029 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Wallner given_name: Silvia + id: 0000-0002-3608-4029 identifiers: - - identifier: https://orcid.org/0000-0002-3608-4029 + - identifier: 0000-0002-3608-4029 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Fedotov given_name: Alexei + id: 0000-0002-8480-1029 identifiers: - - identifier: https://orcid.org/0000-0002-8480-1029 + - identifier: 0000-0002-8480-1029 scheme: orcid - affiliations: - name: Northwestern University family_name: Mihailovic given_name: Marko + id: 0000-0002-9962-4029 identifiers: - - identifier: https://orcid.org/0000-0002-9962-4029 + - identifier: 0000-0002-9962-4029 scheme: orcid - affiliations: - name: Indian Institute of Science Education and Research Bhopal - name: California Institute of Technology family_name: Saraogi given_name: Ishu + id: 0000-0003-0567-6029 identifiers: - - identifier: https://orcid.org/0000-0003-0567-6029 + - identifier: 0000-0003-0567-6029 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hulbert given_name: Steven + id: 0000-0003-3127-6029 identifiers: - - identifier: https://orcid.org/0000-0003-3127-6029 + - identifier: 0000-0003-3127-6029 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Klikovits given_name: Stefan + id: 0000-0003-4212-7029 identifiers: - - identifier: https://orcid.org/0000-0003-4212-7029 + - identifier: 0000-0003-4212-7029 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Schumm given_name: Thorsten + id: 0000-0002-1066-202X identifiers: - - identifier: https://orcid.org/0000-0002-1066-202X + - identifier: 0000-0002-1066-202X scheme: orcid - affiliations: - name: Northwestern University family_name: Crofts given_name: Terence + id: 0000-0002-2302-502X identifiers: - - identifier: https://orcid.org/0000-0002-2302-502X + - identifier: 0000-0002-2302-502X scheme: orcid - affiliations: - name: University of Bamberg family_name: Zyberaj given_name: Jetmir + id: 0000-0002-3871-002X identifiers: - - identifier: https://orcid.org/0000-0002-3871-002X + - identifier: 0000-0002-3871-002X scheme: orcid - affiliations: - name: "\u56FD\u7ACB\u60C5\u5831\u5B66\u7814\u7A76\u6240" family_name: Uemura given_name: Jun'ichi + id: 0000-0003-1061-202X identifiers: - - identifier: https://orcid.org/0000-0003-1061-202X + - identifier: 0000-0003-1061-202X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Taheriniya given_name: Shabnam + id: 0000-0003-2524-002X identifiers: - - identifier: https://orcid.org/0000-0003-2524-002X + - identifier: 0000-0003-2524-002X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Narasimhan given_name: Vinayak + id: 0000-0003-4165-402X identifiers: - - identifier: https://orcid.org/0000-0003-4165-402X + - identifier: 0000-0003-4165-402X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kishi given_name: Yuriko + id: 0000-0002-1005-7030 identifiers: - - identifier: https://orcid.org/0000-0002-1005-7030 + - identifier: 0000-0002-1005-7030 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Pepe Altarelli given_name: Monica + id: 0000-0002-1642-4030 identifiers: - - identifier: https://orcid.org/0000-0002-1642-4030 + - identifier: 0000-0002-1642-4030 scheme: orcid - affiliations: - name: University of Fribourg family_name: Frey given_name: Timotheos + id: 0000-0002-2395-8030 identifiers: - - identifier: https://orcid.org/0000-0002-2395-8030 + - identifier: 0000-0002-2395-8030 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Rienaecker given_name: Benjamin + id: 0000-0002-3836-7030 identifiers: - - identifier: https://orcid.org/0000-0002-3836-7030 + - identifier: 0000-0002-3836-7030 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Stegger given_name: Lars + id: 0000-0002-8333-6030 identifiers: - - identifier: https://orcid.org/0000-0002-8333-6030 + - identifier: 0000-0002-8333-6030 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Nakato given_name: Sarah + id: 0000-0002-8676-4030 identifiers: - - identifier: https://orcid.org/0000-0002-8676-4030 + - identifier: 0000-0002-8676-4030 scheme: orcid - affiliations: - name: Northwestern University family_name: O'Donnell given_name: Allison + id: 0000-0003-1411-2030 identifiers: - - identifier: https://orcid.org/0000-0003-1411-2030 + - identifier: 0000-0003-1411-2030 scheme: orcid - affiliations: - name: Shannxi University of Technology - name: Northwestern University family_name: Wang given_name: Shanshan + id: 0000-0003-1849-8030 identifiers: - - identifier: https://orcid.org/0000-0003-1849-8030 + - identifier: 0000-0003-1849-8030 scheme: orcid - affiliations: - name: "Alma Mater Studiorum - Universit\xE0 di Bologna" - name: Istituto Nazionale di Fisica Nucleare family_name: Galli given_name: Domenico + id: 0000-0003-2375-6030 identifiers: - - identifier: https://orcid.org/0000-0003-2375-6030 + - identifier: 0000-0003-2375-6030 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: Bulgarian Academy of Sciences family_name: Georgiev given_name: Yordan M. + id: 0000-0002-3146-8031 identifiers: - - identifier: https://orcid.org/0000-0002-3146-8031 + - identifier: 0000-0002-3146-8031 scheme: orcid - affiliations: - name: California Institute of Technology - name: American University family_name: Macmillan given_name: Ian + id: 0000-0002-6927-1031 identifiers: - - identifier: https://orcid.org/0000-0002-6927-1031 + - identifier: 0000-0002-6927-1031 scheme: orcid - affiliations: - name: "K\xF8benhavns Universitet" - name: California Institute of Technology family_name: van Nieuwenburg given_name: Evert + id: 0000-0003-0323-0031 identifiers: - - identifier: https://orcid.org/0000-0003-0323-0031 + - identifier: 0000-0003-0323-0031 scheme: orcid - affiliations: - name: University of Bamberg family_name: Urbanski given_name: Kevin + id: 0000-0003-0327-3031 identifiers: - - identifier: https://orcid.org/0000-0003-0327-3031 + - identifier: 0000-0003-0327-3031 scheme: orcid - affiliations: - name: University of Fribourg family_name: WADJI given_name: DANY LAURE + id: 0000-0001-5864-7032 identifiers: - - identifier: https://orcid.org/0000-0001-5864-7032 + - identifier: 0000-0001-5864-7032 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bersier given_name: "Louis-F\xE9lix" + id: 0000-0001-9552-8032 identifiers: - - identifier: https://orcid.org/0000-0001-9552-8032 + - identifier: 0000-0001-9552-8032 scheme: orcid - affiliations: - name: CERN family_name: Pons given_name: Xavier + id: 0000-0002-4745-5032 identifiers: - - identifier: https://orcid.org/0000-0002-4745-5032 + - identifier: 0000-0002-4745-5032 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Phinney given_name: Sterl + id: 0000-0002-9656-4032 identifiers: - - identifier: https://orcid.org/0000-0002-9656-4032 + - identifier: 0000-0002-9656-4032 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Maurer given_name: Hermann + id: 0000-0002-9956-2032 identifiers: - - identifier: https://orcid.org/0000-0002-9956-2032 + - identifier: 0000-0002-9956-2032 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Lanza given_name: Agostino + id: 0000-0003-4980-6032 identifiers: - - identifier: https://orcid.org/0000-0003-4980-6032 + - identifier: 0000-0003-4980-6032 scheme: orcid - affiliations: - name: CERN family_name: Couturier given_name: Benjamin + id: 0000-0001-6749-1033 identifiers: - - identifier: https://orcid.org/0000-0001-6749-1033 + - identifier: 0000-0001-6749-1033 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Singh given_name: Chanpreet + id: 0000-0002-2697-3033 identifiers: - - identifier: https://orcid.org/0000-0002-2697-3033 + - identifier: 0000-0002-2697-3033 scheme: orcid - affiliations: - name: TU Wien family_name: Stevenson given_name: Margaret Ellen + id: 0000-0002-4259-4033 identifiers: - - identifier: https://orcid.org/0000-0002-4259-4033 + - identifier: 0000-0002-4259-4033 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Sonzogni given_name: Alejandro + id: 0000-0002-9438-6033 identifiers: - - identifier: https://orcid.org/0000-0002-9438-6033 + - identifier: 0000-0002-9438-6033 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Maliyov given_name: Ivan + id: 0000-0003-4130-6033 identifiers: - - identifier: https://orcid.org/0000-0003-4130-6033 + - identifier: 0000-0003-4130-6033 scheme: orcid - affiliations: - name: Claude Bernard University Lyon 1 - name: CERN family_name: Ericson given_name: Magda + id: 0000-0003-4525-1033 identifiers: - - identifier: https://orcid.org/0000-0003-4525-1033 + - identifier: 0000-0003-4525-1033 scheme: orcid - affiliations: - name: TU Wien family_name: Sadeghi given_name: Pedram + id: 0000-0001-9508-2034 identifiers: - - identifier: https://orcid.org/0000-0001-9508-2034 + - identifier: 0000-0001-9508-2034 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Veas given_name: Eduardo + id: 0000-0002-0356-4034 identifiers: - - identifier: https://orcid.org/0000-0002-0356-4034 + - identifier: 0000-0002-0356-4034 scheme: orcid - affiliations: - name: CERN family_name: Denz given_name: Reiner + id: 0000-0002-2389-9034 identifiers: - - identifier: https://orcid.org/0000-0002-2389-9034 + - identifier: 0000-0002-2389-9034 scheme: orcid - affiliations: - name: Northwestern University family_name: Hampu given_name: Nicholas + id: 0000-0002-8127-1034 identifiers: - - identifier: https://orcid.org/0000-0002-8127-1034 + - identifier: 0000-0002-8127-1034 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yang given_name: Frank + id: 0000-0001-5591-4035 identifiers: - - identifier: https://orcid.org/0000-0001-5591-4035 + - identifier: 0000-0001-5591-4035 scheme: orcid - affiliations: - name: Northwestern University family_name: Yuan given_name: Weizi + id: 0000-0002-5604-5035 identifiers: - - identifier: https://orcid.org/0000-0002-5604-5035 + - identifier: 0000-0002-5604-5035 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Fiedler given_name: Maik + id: 0000-0003-3669-4035 identifiers: - - identifier: https://orcid.org/0000-0003-3669-4035 + - identifier: 0000-0003-3669-4035 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Fournier given_name: Annick + id: 0000-0003-4384-3035 identifiers: - - identifier: https://orcid.org/0000-0003-4384-3035 + - identifier: 0000-0003-4384-3035 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schmidt given_name: Konrad + id: 0000-0001-7311-2036 identifiers: - - identifier: https://orcid.org/0000-0001-7311-2036 + - identifier: 0000-0001-7311-2036 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Bartoschek given_name: Thomas + id: 0000-0002-0882-1036 identifiers: - - identifier: https://orcid.org/0000-0002-0882-1036 + - identifier: 0000-0002-0882-1036 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Bl\xF6mer" given_name: Michael + id: 0000-0002-3921-4036 identifiers: - - identifier: https://orcid.org/0000-0002-3921-4036 + - identifier: 0000-0002-3921-4036 scheme: orcid - affiliations: - name: Northwestern University family_name: Feng given_name: Shuchen + id: 0000-0002-8878-8036 identifiers: - - identifier: https://orcid.org/0000-0002-8878-8036 + - identifier: 0000-0002-8878-8036 scheme: orcid - affiliations: - name: TU Wien - name: TU Wien Vienna family_name: Schindelegger given_name: Arthur + id: 0000-0003-0157-5036 identifiers: - - identifier: https://orcid.org/0000-0003-0157-5036 + - identifier: 0000-0003-0157-5036 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Savage given_name: Richard + id: 0000-0003-3317-1036 identifiers: - - identifier: https://orcid.org/0000-0003-3317-1036 + - identifier: 0000-0003-3317-1036 scheme: orcid - affiliations: - name: CERN family_name: Rafique given_name: Haroon + id: 0000-0002-0140-4037 identifiers: - - identifier: https://orcid.org/0000-0002-0140-4037 + - identifier: 0000-0002-0140-4037 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Theios given_name: Rachel + id: 0000-0002-4236-1037 identifiers: - - identifier: https://orcid.org/0000-0002-4236-1037 + - identifier: 0000-0002-4236-1037 scheme: orcid - affiliations: - name: Northwestern University family_name: Schwandt given_name: Hannes + id: 0000-0003-0298-5037 identifiers: - - identifier: https://orcid.org/0000-0003-0298-5037 + - identifier: 0000-0003-0298-5037 scheme: orcid - affiliations: - name: TU Wien family_name: Pichler given_name: Vanessa + id: 0000-0003-1704-4037 identifiers: - - identifier: https://orcid.org/0000-0003-1704-4037 + - identifier: 0000-0003-1704-4037 scheme: orcid - affiliations: - name: Northwestern University family_name: Collins given_name: Shalean + id: 0000-0003-2991-8037 identifiers: - - identifier: https://orcid.org/0000-0003-2991-8037 + - identifier: 0000-0003-2991-8037 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Garvey given_name: Patricia + id: 0000-0001-6056-2038 identifiers: - - identifier: https://orcid.org/0000-0001-6056-2038 + - identifier: 0000-0001-6056-2038 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Stryeck given_name: Sarah + id: 0000-0001-7524-6038 identifiers: - - identifier: https://orcid.org/0000-0001-7524-6038 + - identifier: 0000-0001-7524-6038 scheme: orcid - affiliations: - name: CERN family_name: Fernandes given_name: "Jo\xE3o" + id: 0000-0002-0445-7038 identifiers: - - identifier: https://orcid.org/0000-0002-0445-7038 + - identifier: 0000-0002-0445-7038 scheme: orcid - affiliations: - name: Northwestern University family_name: Jiao given_name: Yang + id: 0000-0002-8437-0038 identifiers: - - identifier: https://orcid.org/0000-0002-8437-0038 + - identifier: 0000-0002-8437-0038 scheme: orcid - affiliations: - name: University of Basel - name: "Universit\xE9 de Fribourg" family_name: Aceti given_name: Monica + id: 0000-0002-9614-4038 identifiers: - - identifier: https://orcid.org/0000-0002-9614-4038 + - identifier: 0000-0002-9614-4038 scheme: orcid - affiliations: - name: Perelman School of Medicine @@ -1826,149 +2082,170 @@ - name: Northwestern University family_name: Hu given_name: Fengling + id: 0000-0003-1081-5038 identifiers: - - identifier: https://orcid.org/0000-0003-1081-5038 + - identifier: 0000-0003-1081-5038 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Moure given_name: Adrian + id: 0000-0001-9807-0039 identifiers: - - identifier: https://orcid.org/0000-0001-9807-0039 + - identifier: 0000-0001-9807-0039 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Smaluk given_name: Victor + id: 0000-0002-7962-0039 identifiers: - - identifier: https://orcid.org/0000-0002-7962-0039 + - identifier: 0000-0002-7962-0039 scheme: orcid - affiliations: - name: TU Wien family_name: "K\xF6nig" given_name: Matthias + id: 0000-0003-0205-0039 identifiers: - - identifier: https://orcid.org/0000-0003-0205-0039 + - identifier: 0000-0003-0205-0039 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Zeidler given_name: Rudolf + id: 0000-0001-6102-803X identifiers: - - identifier: https://orcid.org/0000-0001-6102-803X + - identifier: 0000-0001-6102-803X scheme: orcid - affiliations: - name: CERN family_name: Rosa given_name: Tiago + id: 0000-0001-6274-103X identifiers: - - identifier: https://orcid.org/0000-0001-6274-103X + - identifier: 0000-0001-6274-103X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Denny given_name: Sarah + id: 0000-0001-8753-6040 identifiers: - - identifier: https://orcid.org/0000-0001-8753-6040 + - identifier: 0000-0001-8753-6040 scheme: orcid - affiliations: - name: CERN family_name: Valuch given_name: Daniel + id: 0000-0002-3317-6040 identifiers: - - identifier: https://orcid.org/0000-0002-3317-6040 + - identifier: 0000-0002-3317-6040 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Lujic given_name: Ivan + id: 0000-0002-8564-6040 identifiers: - - identifier: https://orcid.org/0000-0002-8564-6040 + - identifier: 0000-0002-8564-6040 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Harnack given_name: Klaus + id: 0000-0003-1711-8040 identifiers: - - identifier: https://orcid.org/0000-0003-1711-8040 + - identifier: 0000-0003-1711-8040 scheme: orcid - affiliations: - name: TU Wien family_name: Rausch given_name: Thomas + id: 0000-0001-5988-9041 identifiers: - - identifier: https://orcid.org/0000-0001-5988-9041 + - identifier: 0000-0001-5988-9041 scheme: orcid - affiliations: - name: TU Wien family_name: Thurner given_name: Philipp + id: 0000-0001-7588-9041 identifiers: - - identifier: https://orcid.org/0000-0001-7588-9041 + - identifier: 0000-0001-7588-9041 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Mangard given_name: Stefan + id: 0000-0001-9650-8041 identifiers: - - identifier: https://orcid.org/0000-0001-9650-8041 + - identifier: 0000-0001-9650-8041 scheme: orcid - affiliations: - name: TU Wien - name: Environment Agency Austria family_name: Goldfarb given_name: Doron + id: 0000-0003-1183-6041 identifiers: - - identifier: https://orcid.org/0000-0003-1183-6041 + - identifier: 0000-0003-1183-6041 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cameron given_name: R. Andrew + id: 0000-0003-3947-6041 identifiers: - - identifier: https://orcid.org/0000-0003-3947-6041 + - identifier: 0000-0003-3947-6041 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kan given_name: Jennifer + id: 0000-0001-6371-8042 identifiers: - - identifier: https://orcid.org/0000-0001-6371-8042 + - identifier: 0000-0001-6371-8042 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Pradier given_name: Bruno + id: 0000-0001-9792-6042 identifiers: - - identifier: https://orcid.org/0000-0001-9792-6042 + - identifier: 0000-0001-9792-6042 scheme: orcid - affiliations: - name: TU Wien family_name: Szeles given_name: Borbala + id: 0000-0002-2006-5042 identifiers: - - identifier: https://orcid.org/0000-0002-2006-5042 + - identifier: 0000-0002-2006-5042 scheme: orcid - affiliations: - name: TU Wien family_name: Steindl given_name: Bernhard + id: 0000-0002-8525-6042 identifiers: - - identifier: https://orcid.org/0000-0002-8525-6042 + - identifier: 0000-0002-8525-6042 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Beniamini given_name: Paz + id: 0000-0001-7833-1043 identifiers: - - identifier: https://orcid.org/0000-0001-7833-1043 + - identifier: 0000-0001-7833-1043 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Saribatur given_name: Zeynep + id: 0000-0001-8690-5043 identifiers: - - identifier: https://orcid.org/0000-0001-8690-5043 + - identifier: 0000-0001-8690-5043 scheme: orcid - affiliations: - name: "Universit\xE0 degli Studi di Padova Dipartimento di Fisica e Astronomia\ @@ -1976,391 +2253,446 @@ - name: Istituto Nazionale di Fisica Nucleare family_name: Mazzocco given_name: Marco + id: 0000-0002-0341-0043 identifiers: - - identifier: https://orcid.org/0000-0002-0341-0043 + - identifier: 0000-0002-0341-0043 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Treib given_name: Oliver + id: 0000-0002-2273-4043 identifiers: - - identifier: https://orcid.org/0000-0002-2273-4043 + - identifier: 0000-0002-2273-4043 scheme: orcid - affiliations: - name: CERN family_name: Longo given_name: Luigi + id: 0000-0002-2357-7043 identifiers: - - identifier: https://orcid.org/0000-0002-2357-7043 + - identifier: 0000-0002-2357-7043 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: McMonagle given_name: Gerard + id: 0000-0002-4893-4043 identifiers: - - identifier: https://orcid.org/0000-0002-4893-4043 + - identifier: 0000-0002-4893-4043 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Weser given_name: Stephan + id: 0000-0002-7032-2043 identifiers: - - identifier: https://orcid.org/0000-0002-7032-2043 + - identifier: 0000-0002-7032-2043 scheme: orcid - affiliations: - name: TU Wien family_name: Kadi given_name: Justin + id: 0000-0003-0363-0043 identifiers: - - identifier: https://orcid.org/0000-0003-0363-0043 + - identifier: 0000-0003-0363-0043 scheme: orcid - affiliations: - name: Northwestern University family_name: Grayson given_name: Matthew + id: 0000-0003-4914-5043 identifiers: - - identifier: https://orcid.org/0000-0003-4914-5043 + - identifier: 0000-0003-4914-5043 scheme: orcid - affiliations: - name: Northwestern University - name: Stantec family_name: Huang given_name: Joseph Chuenhuei + id: 0000-0002-3677-7044 identifiers: - - identifier: https://orcid.org/0000-0002-3677-7044 + - identifier: 0000-0002-3677-7044 scheme: orcid - affiliations: - name: Northwestern University family_name: Reese given_name: Patricia + id: 0000-0002-3836-9044 identifiers: - - identifier: https://orcid.org/0000-0002-3836-9044 + - identifier: 0000-0002-3836-9044 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bergner given_name: Frank + id: 0000-0002-4058-1044 identifiers: - - identifier: https://orcid.org/0000-0002-4058-1044 + - identifier: 0000-0002-4058-1044 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Moen given_name: Erick + id: 0000-0002-5947-7044 identifiers: - - identifier: https://orcid.org/0000-0002-5947-7044 + - identifier: 0000-0002-5947-7044 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "Bo\xDF" given_name: Jonathan + id: 0000-0002-6827-7044 identifiers: - - identifier: https://orcid.org/0000-0002-6827-7044 + - identifier: 0000-0002-6827-7044 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Heiser given_name: John + id: 0000-0001-7444-2045 identifiers: - - identifier: https://orcid.org/0000-0001-7444-2045 + - identifier: 0000-0001-7444-2045 scheme: orcid - affiliations: - name: Northwestern University family_name: CINO given_name: DAVIDE + id: 0000-0001-9182-4045 identifiers: - - identifier: https://orcid.org/0000-0001-9182-4045 + - identifier: 0000-0001-9182-4045 scheme: orcid - affiliations: - name: Northwestern University family_name: Gibson given_name: Sophia + id: 0000-0001-9839-9045 identifiers: - - identifier: https://orcid.org/0000-0001-9839-9045 + - identifier: 0000-0001-9839-9045 scheme: orcid - affiliations: - name: TU Wien family_name: Sponar given_name: Stephan + id: 0000-0002-6568-6045 identifiers: - - identifier: https://orcid.org/0000-0002-6568-6045 + - identifier: 0000-0002-6568-6045 scheme: orcid - affiliations: - name: University of Fribourg family_name: Fahr given_name: Andreas + id: 0000-0002-8455-3045 identifiers: - - identifier: https://orcid.org/0000-0002-8455-3045 + - identifier: 0000-0002-8455-3045 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Luke given_name: Edward + id: 0000-0002-1606-0046 identifiers: - - identifier: https://orcid.org/0000-0002-1606-0046 + - identifier: 0000-0002-1606-0046 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Mychajliw given_name: Christian + id: 0000-0002-9234-6046 identifiers: - - identifier: https://orcid.org/0000-0002-9234-6046 + - identifier: 0000-0002-9234-6046 scheme: orcid - affiliations: - name: TU Wien family_name: MOHAMEDOU given_name: MOHAMED + id: 0000-0001-6862-1047 identifiers: - - identifier: https://orcid.org/0000-0001-6862-1047 + - identifier: 0000-0001-6862-1047 scheme: orcid - affiliations: - name: TU Wien family_name: Wutte given_name: Raphaela + id: 0000-0002-1346-1047 identifiers: - - identifier: https://orcid.org/0000-0002-1346-1047 + - identifier: 0000-0002-1346-1047 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hallgrimsdottir given_name: Ingileif + id: 0000-0002-4710-0047 identifiers: - - identifier: https://orcid.org/0000-0002-4710-0047 + - identifier: 0000-0002-4710-0047 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ciardi given_name: David + id: 0000-0002-5741-3047 identifiers: - - identifier: https://orcid.org/0000-0002-5741-3047 + - identifier: 0000-0002-5741-3047 scheme: orcid - affiliations: - name: CERN family_name: Cavallero given_name: Giovanni + id: 0000-0002-8342-7047 identifiers: - - identifier: https://orcid.org/0000-0002-8342-7047 + - identifier: 0000-0002-8342-7047 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Berk given_name: Katrin + id: 0000-0002-8734-8047 identifiers: - - identifier: https://orcid.org/0000-0002-8734-8047 + - identifier: 0000-0002-8734-8047 scheme: orcid - affiliations: - name: Northwestern University family_name: Hochberg given_name: Marcy + id: 0000-0003-4564-0047 identifiers: - - identifier: https://orcid.org/0000-0003-4564-0047 + - identifier: 0000-0003-4564-0047 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Dilger given_name: Alexander + id: 0000-0003-4659-8047 identifiers: - - identifier: https://orcid.org/0000-0003-4659-8047 + - identifier: 0000-0003-4659-8047 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Jimenez given_name: Juan + id: 0000-0003-4710-1047 identifiers: - - identifier: https://orcid.org/0000-0003-4710-1047 + - identifier: 0000-0003-4710-1047 scheme: orcid - affiliations: - name: TU Wien family_name: Gassner given_name: Andreas + id: 0000-0002-8848-3048 identifiers: - - identifier: https://orcid.org/0000-0002-8848-3048 + - identifier: 0000-0002-8848-3048 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Tomsk Polytechnic University family_name: Okhotnikov given_name: Vitalii + id: 0000-0003-3088-0048 identifiers: - - identifier: https://orcid.org/0000-0003-3088-0048 + - identifier: 0000-0003-3088-0048 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Miah given_name: Mohammad Shamim + id: 0000-0001-9112-4049 identifiers: - - identifier: https://orcid.org/0000-0001-9112-4049 + - identifier: 0000-0001-9112-4049 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Jangir given_name: Yamini + id: 0000-0002-2779-9049 identifiers: - - identifier: https://orcid.org/0000-0002-2779-9049 + - identifier: 0000-0002-2779-9049 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Melito given_name: Gian Marco + id: 0000-0002-3521-1049 identifiers: - - identifier: https://orcid.org/0000-0002-3521-1049 + - identifier: 0000-0002-3521-1049 scheme: orcid - affiliations: - name: Northwestern University family_name: Rasmussen given_name: Luke + id: 0000-0002-4497-8049 identifiers: - - identifier: https://orcid.org/0000-0002-4497-8049 + - identifier: 0000-0002-4497-8049 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Corsi given_name: Esther Anna + id: 0000-0002-4586-6049 identifiers: - - identifier: https://orcid.org/0000-0002-4586-6049 + - identifier: 0000-0002-4586-6049 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Puccio given_name: Maximiliano + id: 0000-0002-8118-9049 identifiers: - - identifier: https://orcid.org/0000-0002-8118-9049 + - identifier: 0000-0002-8118-9049 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "\xD6ZSUNAR" given_name: Erdal + id: 0000-0003-3625-8049 identifiers: - - identifier: https://orcid.org/0000-0003-3625-8049 + - identifier: 0000-0003-3625-8049 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Kastner given_name: Wolfgang + id: 0000-0001-5420-404X identifiers: - - identifier: https://orcid.org/0000-0001-5420-404X + - identifier: 0000-0001-5420-404X scheme: orcid - affiliations: - name: University of Malta - name: European Organization for Nuclear Research family_name: Sammut given_name: Nicholas + id: 0000-0001-7679-604X identifiers: - - identifier: https://orcid.org/0000-0001-7679-604X + - identifier: 0000-0001-7679-604X scheme: orcid - affiliations: - name: Cardiff University - name: "Technische Universit\xE4t Wien" family_name: Ibanez Garcia given_name: Yazmin Angelica + id: 0000-0002-1276-904X identifiers: - - identifier: https://orcid.org/0000-0002-1276-904X + - identifier: 0000-0002-1276-904X scheme: orcid - affiliations: - name: Northwestern University family_name: Leonard given_name: William + id: 0000-0002-6233-604X identifiers: - - identifier: https://orcid.org/0000-0002-6233-604X + - identifier: 0000-0002-6233-604X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: "Universit\xE4tsklinikum Carl Gustav Carus" family_name: Troost given_name: Esther + id: 0000-0001-9550-9050 identifiers: - - identifier: https://orcid.org/0000-0001-9550-9050 + - identifier: 0000-0001-9550-9050 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Marandi given_name: Alireza + id: 0000-0002-0470-0050 identifiers: - - identifier: https://orcid.org/0000-0002-0470-0050 + - identifier: 0000-0002-0470-0050 scheme: orcid - affiliations: - name: Northwestern University family_name: Logan given_name: Amanda + id: 0000-0002-0682-9050 identifiers: - - identifier: https://orcid.org/0000-0002-0682-9050 + - identifier: 0000-0002-0682-9050 scheme: orcid - affiliations: - name: Northwestern University family_name: Norton given_name: Elizabeth + id: 0000-0002-4023-8051 identifiers: - - identifier: https://orcid.org/0000-0002-4023-8051 + - identifier: 0000-0002-4023-8051 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Abele given_name: Hartmut + id: 0000-0002-6832-9051 identifiers: - - identifier: https://orcid.org/0000-0002-6832-9051 + - identifier: 0000-0002-6832-9051 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hauksson given_name: Egill + id: 0000-0002-6834-5051 identifiers: - - identifier: https://orcid.org/0000-0002-6834-5051 + - identifier: 0000-0002-6834-5051 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Kubin given_name: Gernot + id: 0000-0002-8420-6051 identifiers: - - identifier: https://orcid.org/0000-0002-8420-6051 + - identifier: 0000-0002-8420-6051 scheme: orcid - affiliations: - name: University of Bamberg family_name: Scheltjens given_name: Werner + id: 0000-0002-5209-9052 identifiers: - - identifier: https://orcid.org/0000-0002-5209-9052 + - identifier: 0000-0002-5209-9052 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Mohrschladt given_name: Hannes + id: 0000-0002-5861-8052 identifiers: - - identifier: https://orcid.org/0000-0002-5861-8052 + - identifier: 0000-0002-5861-8052 scheme: orcid - affiliations: - name: Northwestern University family_name: Bell given_name: Arielle + id: 0000-0002-6973-9052 identifiers: - - identifier: https://orcid.org/0000-0002-6973-9052 + - identifier: 0000-0002-6973-9052 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Rachamin given_name: Reuven + id: 0000-0002-9260-5052 identifiers: - - identifier: https://orcid.org/0000-0002-9260-5052 + - identifier: 0000-0002-9260-5052 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hanlon given_name: Andrew + id: 0000-0001-8786-8053 identifiers: - - identifier: https://orcid.org/0000-0001-8786-8053 + - identifier: 0000-0001-8786-8053 scheme: orcid - affiliations: - name: Northwestern University family_name: Ranjan given_name: Sukrit + id: 0000-0002-5147-9053 identifiers: - - identifier: https://orcid.org/0000-0002-5147-9053 + - identifier: 0000-0002-5147-9053 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Aquino given_name: Tomas + id: 0000-0002-6944-1053 identifiers: - - identifier: https://orcid.org/0000-0002-6944-1053 + - identifier: 0000-0002-6944-1053 scheme: orcid - affiliations: - name: Lunds Universitet @@ -2368,293 +2700,334 @@ - name: European Organization for Nuclear Research family_name: Lindroos given_name: Mats + id: 0000-0002-7015-1053 identifiers: - - identifier: https://orcid.org/0000-0002-7015-1053 + - identifier: 0000-0002-7015-1053 scheme: orcid - affiliations: - name: University of Fribourg family_name: Sommet given_name: Moritz + id: 0000-0003-0415-5053 identifiers: - - identifier: https://orcid.org/0000-0003-0415-5053 + - identifier: 0000-0003-0415-5053 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kumagai given_name: Akiko + id: 0000-0003-2422-8053 identifiers: - - identifier: https://orcid.org/0000-0003-2422-8053 + - identifier: 0000-0003-2422-8053 scheme: orcid - affiliations: - name: Northwestern University family_name: McCoy given_name: Laura + id: 0000-0003-2404-1053 identifiers: - - identifier: https://orcid.org/0000-0003-2404-1053 + - identifier: 0000-0003-2404-1053 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schaber given_name: Jana + id: 0000-0002-1848-8054 identifiers: - - identifier: https://orcid.org/0000-0002-1848-8054 + - identifier: 0000-0002-1848-8054 scheme: orcid - affiliations: - name: TU Wien family_name: Heitzinger given_name: Thomas + id: 0000-0002-3129-5054 identifiers: - - identifier: https://orcid.org/0000-0002-3129-5054 + - identifier: 0000-0002-3129-5054 scheme: orcid - affiliations: - name: Northwestern University family_name: Wu given_name: Ying + id: 0000-0002-3523-7054 identifiers: - - identifier: https://orcid.org/0000-0002-3523-7054 + - identifier: 0000-0002-3523-7054 scheme: orcid - affiliations: - name: CERN - name: Universidade do Minho Escola de Psicologia family_name: Dantas Velho given_name: Mariana + id: 0000-0002-7872-0054 identifiers: - - identifier: https://orcid.org/0000-0002-7872-0054 + - identifier: 0000-0002-7872-0054 scheme: orcid - affiliations: - name: TU Wien family_name: Ramos Vieira given_name: Ariane Neale + id: 0000-0003-0249-5054 identifiers: - - identifier: https://orcid.org/0000-0003-0249-5054 + - identifier: 0000-0003-0249-5054 scheme: orcid - affiliations: - name: Northwestern University family_name: Waters given_name: Emily + id: 0000-0003-3479-6054 identifiers: - - identifier: https://orcid.org/0000-0003-3479-6054 + - identifier: 0000-0003-3479-6054 scheme: orcid - affiliations: - name: Northwestern University - name: New York University family_name: Zhao given_name: Yueming + id: 0000-0003-4968-0054 identifiers: - - identifier: https://orcid.org/0000-0003-4968-0054 + - identifier: 0000-0003-4968-0054 scheme: orcid - affiliations: - name: TU Wien family_name: Balajka given_name: Jan + id: 0000-0001-7101-1055 identifiers: - - identifier: https://orcid.org/0000-0001-7101-1055 + - identifier: 0000-0001-7101-1055 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Voena given_name: Cecilia + id: 0000-0001-8938-5055 identifiers: - - identifier: https://orcid.org/0000-0001-8938-5055 + - identifier: 0000-0001-8938-5055 scheme: orcid - affiliations: - name: University of Fribourg family_name: Debelyy given_name: Mykhaylo + id: 0000-0001-9746-5055 identifiers: - - identifier: https://orcid.org/0000-0001-9746-5055 + - identifier: 0000-0001-9746-5055 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Bussweiler given_name: Yannick + id: 0000-0002-8107-7055 identifiers: - - identifier: https://orcid.org/0000-0002-8107-7055 + - identifier: 0000-0002-8107-7055 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: "Universit\xE9 de Gen\xE8ve" family_name: Bouvier given_name: Paul + id: 0000-0001-5198-9056 identifiers: - - identifier: https://orcid.org/0000-0001-5198-9056 + - identifier: 0000-0001-5198-9056 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schlummer given_name: Paul + id: 0000-0001-8749-8056 identifiers: - - identifier: https://orcid.org/0000-0001-8749-8056 + - identifier: 0000-0001-8749-8056 scheme: orcid - affiliations: - name: TU Wien family_name: Levajkovic given_name: Tijana + id: 0000-0002-1491-9056 identifiers: - - identifier: https://orcid.org/0000-0002-1491-9056 + - identifier: 0000-0002-1491-9056 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Leitz given_name: Barnaby + id: 0000-0002-5789-8056 identifiers: - - identifier: https://orcid.org/0000-0002-5789-8056 + - identifier: 0000-0002-5789-8056 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Barra given_name: Valeria + id: 0000-0003-1129-2056 identifiers: - - identifier: https://orcid.org/0000-0003-1129-2056 + - identifier: 0000-0003-1129-2056 scheme: orcid - affiliations: - name: Northwestern University family_name: Tiede given_name: Marcia + id: 0000-0003-1655-2056 identifiers: - - identifier: https://orcid.org/0000-0003-1655-2056 + - identifier: 0000-0003-1655-2056 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Zhang given_name: Xiao-Yi + id: 0000-0001-7414-8057 identifiers: - - identifier: https://orcid.org/0000-0001-7414-8057 + - identifier: 0000-0001-7414-8057 scheme: orcid - affiliations: - name: University of Fribourg family_name: Stalin given_name: Jimmy + id: 0000-0001-8092-7057 identifiers: - - identifier: https://orcid.org/0000-0001-8092-7057 + - identifier: 0000-0001-8092-7057 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Thomas given_name: Ioannis + id: 0000-0002-2822-2057 identifiers: - - identifier: https://orcid.org/0000-0002-2822-2057 + - identifier: 0000-0002-2822-2057 scheme: orcid - affiliations: - name: Northwestern University family_name: Liu given_name: Yuchen + id: 0000-0002-4281-7057 identifiers: - - identifier: https://orcid.org/0000-0002-4281-7057 + - identifier: 0000-0002-4281-7057 scheme: orcid - affiliations: - name: TU Wien family_name: Handelshauser given_name: Martin + id: 0000-0002-4456-4057 identifiers: - - identifier: https://orcid.org/0000-0002-4456-4057 + - identifier: 0000-0002-4456-4057 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wu given_name: Lue + id: 0000-0002-7503-7057 identifiers: - - identifier: https://orcid.org/0000-0002-7503-7057 + - identifier: 0000-0002-7503-7057 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Pock given_name: Thomas + id: 0000-0001-6120-1058 identifiers: - - identifier: https://orcid.org/0000-0001-6120-1058 + - identifier: 0000-0001-6120-1058 scheme: orcid - affiliations: - name: TU Wien family_name: Nixdorf given_name: Steffen + id: 0000-0001-9407-0058 identifiers: - - identifier: https://orcid.org/0000-0001-9407-0058 + - identifier: 0000-0001-9407-0058 scheme: orcid - affiliations: - name: Northwestern University family_name: Kim given_name: Mansu + id: 0000-0002-0173-6058 identifiers: - - identifier: https://orcid.org/0000-0002-0173-6058 + - identifier: 0000-0002-0173-6058 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "Spr\xFCssel" given_name: Philipp + id: 0000-0002-3010-7058 identifiers: - - identifier: https://orcid.org/0000-0002-3010-7058 + - identifier: 0000-0002-3010-7058 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Sgobba given_name: Stefano + id: 0000-0002-4473-6058 identifiers: - - identifier: https://orcid.org/0000-0002-4473-6058 + - identifier: 0000-0002-4473-6058 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Christmann given_name: Bernd + id: 0000-0002-5071-4058 identifiers: - - identifier: https://orcid.org/0000-0002-5071-4058 + - identifier: 0000-0002-5071-4058 scheme: orcid - affiliations: - name: Keck School of Medicine of USC - name: California Institute of Technology family_name: Kellis given_name: Spencer + id: 0000-0002-5158-1058 identifiers: - - identifier: https://orcid.org/0000-0002-5158-1058 + - identifier: 0000-0002-5158-1058 scheme: orcid - affiliations: - name: Northwestern University - name: Shirley Ryan AbilityLab family_name: Son given_name: Jongsang + id: 0000-0002-6132-5058 identifiers: - - identifier: https://orcid.org/0000-0002-6132-5058 + - identifier: 0000-0002-6132-5058 scheme: orcid - affiliations: - name: TU Wien family_name: Brumovska given_name: Veronika + id: 0000-0002-6606-2058 identifiers: - - identifier: https://orcid.org/0000-0002-6606-2058 + - identifier: 0000-0002-6606-2058 scheme: orcid - affiliations: - name: TU Wien family_name: Schmidbauer given_name: Christina + id: 0000-0002-9761-9058 identifiers: - - identifier: https://orcid.org/0000-0002-9761-9058 + - identifier: 0000-0002-9761-9058 scheme: orcid - affiliations: - name: Northwestern University family_name: Bradlow given_name: Ann + id: 0000-0001-5560-6059 identifiers: - - identifier: https://orcid.org/0000-0001-5560-6059 + - identifier: 0000-0001-5560-6059 scheme: orcid - affiliations: - name: TU Wien family_name: Fazekas given_name: Katalin + id: 0000-0002-0497-3059 identifiers: - - identifier: https://orcid.org/0000-0002-0497-3059 + - identifier: 0000-0002-0497-3059 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Jahn given_name: Alexander + id: 0000-0002-7142-0059 identifiers: - - identifier: https://orcid.org/0000-0002-7142-0059 + - identifier: 0000-0002-7142-0059 scheme: orcid - affiliations: - name: Northwestern University family_name: Mroczek given_name: Daniel + id: 0000-0003-3748-5059 identifiers: - - identifier: https://orcid.org/0000-0003-3748-5059 + - identifier: 0000-0003-3748-5059 scheme: orcid - affiliations: - name: TU Wien @@ -2662,80 +3035,91 @@ - name: Robert Bosch family_name: "Be\u0161i\u0107" given_name: Hajrudin + id: 0000-0001-5057-705X identifiers: - - identifier: https://orcid.org/0000-0001-5057-705X + - identifier: 0000-0001-5057-705X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Tomasch given_name: Ernst + id: 0000-0001-5291-905X identifiers: - - identifier: https://orcid.org/0000-0001-5291-905X + - identifier: 0000-0001-5291-905X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Nobre given_name: Gustavo + id: 0000-0001-7589-705X identifiers: - - identifier: https://orcid.org/0000-0001-7589-705X + - identifier: 0000-0001-7589-705X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare - name: "Universit\xE0 degli Studi di Camerino" family_name: Pieri given_name: Pierbiagio + id: 0000-0001-8295-805X identifiers: - - identifier: https://orcid.org/0000-0001-8295-805X + - identifier: 0000-0001-8295-805X scheme: orcid - affiliations: - name: Harbin Institute of Technology - name: National Institute of Informatics family_name: Jiang given_name: Junjun + id: 0000-0002-5694-505X identifiers: - - identifier: https://orcid.org/0000-0002-5694-505X + - identifier: 0000-0002-5694-505X scheme: orcid - affiliations: - name: Northwestern University family_name: gao given_name: yanshan + id: 0000-0003-0329-705X identifiers: - - identifier: https://orcid.org/0000-0003-0329-705X + - identifier: 0000-0003-0329-705X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Dai given_name: Zhongwei + id: 0000-0001-5450-1060 identifiers: - - identifier: https://orcid.org/0000-0001-5450-1060 + - identifier: 0000-0001-5450-1060 scheme: orcid - affiliations: - name: Northwestern University family_name: Weitz given_name: Eric + id: 0000-0002-7447-4060 identifiers: - - identifier: https://orcid.org/0000-0002-7447-4060 + - identifier: 0000-0002-7447-4060 scheme: orcid - affiliations: - name: CERN family_name: Sukhonos given_name: Daniil + id: 0000-0003-2143-7060 identifiers: - - identifier: https://orcid.org/0000-0003-2143-7060 + - identifier: 0000-0003-2143-7060 scheme: orcid - affiliations: - name: TU Wien family_name: Spreicer given_name: Wolfgang + id: 0000-0002-0934-2061 identifiers: - - identifier: https://orcid.org/0000-0002-0934-2061 + - identifier: 0000-0002-0934-2061 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ciobotaru given_name: Corina + id: 0000-0002-1596-1061 identifiers: - - identifier: https://orcid.org/0000-0002-1596-1061 + - identifier: 0000-0002-1596-1061 scheme: orcid - affiliations: - name: European Organization for Nuclear Research @@ -2743,57 +3127,65 @@ - name: Scuola Normale Superiore family_name: CALZOLARI given_name: FEDERICO + id: 0000-0002-5510-3061 identifiers: - - identifier: https://orcid.org/0000-0002-5510-3061 + - identifier: 0000-0002-5510-3061 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Horn given_name: Martin + id: 0000-0002-5845-1061 identifiers: - - identifier: https://orcid.org/0000-0002-5845-1061 + - identifier: 0000-0002-5845-1061 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ermakov given_name: Anton + id: 0000-0002-7020-7061 identifiers: - - identifier: https://orcid.org/0000-0002-7020-7061 + - identifier: 0000-0002-7020-7061 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Zevi Della Porta given_name: Giovanni + id: 0000-0003-0495-6061 identifiers: - - identifier: https://orcid.org/0000-0003-0495-6061 + - identifier: 0000-0003-0495-6061 scheme: orcid - affiliations: - name: TU Wien family_name: Konegger given_name: Thomas + id: 0000-0002-0454-5062 identifiers: - - identifier: https://orcid.org/0000-0002-0454-5062 + - identifier: 0000-0002-0454-5062 scheme: orcid - affiliations: - name: Northwestern University family_name: Cox given_name: Erin + id: 0000-0002-5216-8062 identifiers: - - identifier: https://orcid.org/0000-0002-5216-8062 + - identifier: 0000-0002-5216-8062 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Arcaini given_name: Paolo + id: 0000-0002-6253-4062 identifiers: - - identifier: https://orcid.org/0000-0002-6253-4062 + - identifier: 0000-0002-6253-4062 scheme: orcid - affiliations: - name: Northwestern University family_name: Schofer given_name: Joseph + id: 0000-0002-7617-8062 identifiers: - - identifier: https://orcid.org/0000-0002-7617-8062 + - identifier: 0000-0002-7617-8062 scheme: orcid - affiliations: - name: Electronic Company MELZ @@ -2801,1834 +3193,2090 @@ - name: N.N. Semenov Institute of Chemical Physics Russian Academy of Scinces family_name: Peskov given_name: Vladimir + id: 0000-0003-0594-4062 identifiers: - - identifier: https://orcid.org/0000-0003-0594-4062 + - identifier: 0000-0003-0594-4062 scheme: orcid - affiliations: - name: TU Wien family_name: Ballester given_name: Irene + id: 0000-0002-0219-9063 identifiers: - - identifier: https://orcid.org/0000-0002-0219-9063 + - identifier: 0000-0002-0219-9063 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: SERRA given_name: Marco + id: 0000-0002-6093-8063 identifiers: - - identifier: https://orcid.org/0000-0002-6093-8063 + - identifier: 0000-0002-6093-8063 scheme: orcid - affiliations: - name: CERN family_name: Mikhasenko given_name: Mikhail + id: 0000-0002-6969-2063 identifiers: - - identifier: https://orcid.org/0000-0002-6969-2063 + - identifier: 0000-0002-6969-2063 scheme: orcid - affiliations: - name: Stony Brook University - name: Brookhaven National Laboratory family_name: Nam given_name: Chang-Yong + id: 0000-0002-9093-4063 identifiers: - - identifier: https://orcid.org/0000-0002-9093-4063 + - identifier: 0000-0002-9093-4063 scheme: orcid - affiliations: - name: Northwestern University - name: Tianjin University family_name: Olson given_name: Mark + id: 0000-0003-0398-5063 identifiers: - - identifier: https://orcid.org/0000-0003-0398-5063 + - identifier: 0000-0003-0398-5063 scheme: orcid - affiliations: - name: Northwestern University family_name: Hartzler given_name: Rob + id: 0000-0003-1968-8063 identifiers: - - identifier: https://orcid.org/0000-0003-1968-8063 + - identifier: 0000-0003-1968-8063 scheme: orcid - affiliations: - name: Northwestern University family_name: Wytock given_name: Thomas + id: 0000-0001-5204-1064 identifiers: - - identifier: https://orcid.org/0000-0001-5204-1064 + - identifier: 0000-0001-5204-1064 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kang given_name: Monica Jinwoo + id: 0000-0002-0454-2064 identifiers: - - identifier: https://orcid.org/0000-0002-0454-2064 + - identifier: 0000-0002-0454-2064 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Vigolo given_name: Federico + id: 0000-0002-9712-8064 identifiers: - - identifier: https://orcid.org/0000-0002-9712-8064 + - identifier: 0000-0002-9712-8064 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Reichmann given_name: Stefan + id: 0000-0003-1544-5064 identifiers: - - identifier: https://orcid.org/0000-0003-1544-5064 + - identifier: 0000-0003-1544-5064 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Werner given_name: Benjamin + id: 0000-0003-2633-9064 identifiers: - - identifier: https://orcid.org/0000-0003-2633-9064 + - identifier: 0000-0003-2633-9064 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Gruber given_name: Thomas + id: 0000-0001-6940-2065 identifiers: - - identifier: https://orcid.org/0000-0001-6940-2065 + - identifier: 0000-0001-6940-2065 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Dubut given_name: "J\xE9r\xE9my" + id: 0000-0002-2640-3065 identifiers: - - identifier: https://orcid.org/0000-0002-2640-3065 + - identifier: 0000-0002-2640-3065 scheme: orcid - affiliations: - name: University of Fribourg family_name: Lenkaityte Ostermann given_name: Mante Margarita + id: 0000-0002-3538-5065 identifiers: - - identifier: https://orcid.org/0000-0002-3538-5065 + - identifier: 0000-0002-3538-5065 scheme: orcid - affiliations: - name: Northwestern University family_name: Horton given_name: Teresa + id: 0000-0002-3734-8065 identifiers: - - identifier: https://orcid.org/0000-0002-3734-8065 + - identifier: 0000-0002-3734-8065 scheme: orcid - affiliations: - name: CERN family_name: uysal given_name: zekeriya + id: 0000-0002-7110-8065 identifiers: - - identifier: https://orcid.org/0000-0002-7110-8065 + - identifier: 0000-0002-7110-8065 scheme: orcid - affiliations: - name: Northwestern University family_name: Singh given_name: Amit + id: 0000-0002-7086-9065 identifiers: - - identifier: https://orcid.org/0000-0002-7086-9065 + - identifier: 0000-0002-7086-9065 scheme: orcid - affiliations: - name: TU Wien - name: University of Groningen family_name: Ramanayake given_name: Revantha + id: 0000-0002-7940-9065 identifiers: - - identifier: https://orcid.org/0000-0002-7940-9065 + - identifier: 0000-0002-7940-9065 scheme: orcid - affiliations: - name: University of Fribourg family_name: Taube given_name: Wolfgang + id: 0000-0002-8802-2065 identifiers: - - identifier: https://orcid.org/0000-0002-8802-2065 + - identifier: 0000-0002-8802-2065 scheme: orcid - affiliations: - name: TU Wien family_name: Kleber given_name: Florian + id: 0000-0001-8351-5066 identifiers: - - identifier: https://orcid.org/0000-0001-8351-5066 + - identifier: 0000-0001-8351-5066 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kasday given_name: Jacob + id: 0000-0002-2795-2066 identifiers: - - identifier: https://orcid.org/0000-0002-2795-2066 + - identifier: 0000-0002-2795-2066 scheme: orcid - affiliations: - name: CERN family_name: Attard given_name: Leanne + id: 0000-0002-6513-1066 identifiers: - - identifier: https://orcid.org/0000-0002-6513-1066 + - identifier: 0000-0002-6513-1066 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Romera-Branchat given_name: Maida + id: 0000-0002-6685-5066 identifiers: - - identifier: https://orcid.org/0000-0002-6685-5066 + - identifier: 0000-0002-6685-5066 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Petreczky given_name: Peter + id: 0000-0003-0285-2066 identifiers: - - identifier: https://orcid.org/0000-0003-0285-2066 + - identifier: 0000-0003-0285-2066 scheme: orcid - affiliations: - name: CERN family_name: Snoeys given_name: Walter + id: 0000-0003-3541-9066 identifiers: - - identifier: https://orcid.org/0000-0003-3541-9066 + - identifier: 0000-0003-3541-9066 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: chavan given_name: vinayak + id: 0000-0001-5240-5067 identifiers: - - identifier: https://orcid.org/0000-0001-5240-5067 + - identifier: 0000-0001-5240-5067 scheme: orcid - affiliations: - name: Northwestern University - name: Northwestern University Feinberg School of Medicine family_name: Wertheim given_name: Jason + id: 0000-0001-5680-1067 identifiers: - - identifier: https://orcid.org/0000-0001-5680-1067 + - identifier: 0000-0001-5680-1067 scheme: orcid - affiliations: - name: CERN family_name: Dalla Brida given_name: Mattia + id: 0000-0001-7583-4067 identifiers: - - identifier: https://orcid.org/0000-0001-7583-4067 + - identifier: 0000-0001-7583-4067 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Dordei given_name: Francesca + id: 0000-0002-2571-5067 identifiers: - - identifier: https://orcid.org/0000-0002-2571-5067 + - identifier: 0000-0002-2571-5067 scheme: orcid - affiliations: - name: TU Wien family_name: Steinacher given_name: Michael + id: 0000-0002-4065-9067 identifiers: - - identifier: https://orcid.org/0000-0002-4065-9067 + - identifier: 0000-0002-4065-9067 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Xu + id: 0000-0002-9887-7067 identifiers: - - identifier: https://orcid.org/0000-0002-9887-7067 + - identifier: 0000-0002-9887-7067 scheme: orcid - affiliations: - name: Northwestern University family_name: Boyk given_name: David + id: 0000-0003-1645-7067 identifiers: - - identifier: https://orcid.org/0000-0003-1645-7067 + - identifier: 0000-0003-1645-7067 scheme: orcid - affiliations: - name: Northwestern University family_name: Ghaffari given_name: Roozbeh + id: 0000-0003-3369-5067 identifiers: - - identifier: https://orcid.org/0000-0003-3369-5067 + - identifier: 0000-0003-3369-5067 scheme: orcid - affiliations: - name: TU Wien family_name: Morichetta given_name: Andrea + id: 0000-0003-3765-3067 identifiers: - - identifier: https://orcid.org/0000-0003-3765-3067 + - identifier: 0000-0003-3765-3067 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: "Verd\xFA-Andr\xE9s" given_name: Silvia + id: 0000-0001-9162-7068 identifiers: - - identifier: https://orcid.org/0000-0001-9162-7068 + - identifier: 0000-0001-9162-7068 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Weinheimer given_name: Christian + id: 0000-0002-4083-9068 identifiers: - - identifier: https://orcid.org/0000-0002-4083-9068 + - identifier: 0000-0002-4083-9068 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Valente given_name: Paolo + id: 0000-0002-5413-0068 identifiers: - - identifier: https://orcid.org/0000-0002-5413-0068 + - identifier: 0000-0002-5413-0068 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Seinfeld given_name: John + id: 0000-0003-1344-4068 identifiers: - - identifier: https://orcid.org/0000-0003-1344-4068 + - identifier: 0000-0003-1344-4068 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Sulk given_name: Mathias + id: 0000-0002-5188-1069 identifiers: - - identifier: https://orcid.org/0000-0002-5188-1069 + - identifier: 0000-0002-5188-1069 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Calchi Novati given_name: Sebastiano + id: 0000-0002-7669-1069 identifiers: - - identifier: https://orcid.org/0000-0002-7669-1069 + - identifier: 0000-0002-7669-1069 scheme: orcid - affiliations: - name: Cedars-Sinai Medical Center - name: California Institute of Technology family_name: Rutishauser given_name: Ueli + id: 0000-0002-9207-7069 identifiers: - - identifier: https://orcid.org/0000-0002-9207-7069 + - identifier: 0000-0002-9207-7069 scheme: orcid - affiliations: - name: "Goethe-Universit\xE4t Frankfurt am Main" - name: CERN family_name: Kirkby given_name: Jasper + id: 0000-0003-2341-9069 identifiers: - - identifier: https://orcid.org/0000-0003-2341-9069 + - identifier: 0000-0003-2341-9069 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Wallek given_name: Thomas + id: 0000-0001-9687-106X identifiers: - - identifier: https://orcid.org/0000-0001-9687-106X + - identifier: 0000-0001-9687-106X scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Cracow University of Technology family_name: "Szczepanik-\u015Acis\u0142o" given_name: Nina + id: 0000-0002-1473-406X identifiers: - - identifier: https://orcid.org/0000-0002-1473-406X + - identifier: 0000-0002-1473-406X scheme: orcid - affiliations: - name: TU Wien family_name: Reisinger given_name: Julia + id: 0000-0002-2316-306X identifiers: - - identifier: https://orcid.org/0000-0002-2316-306X + - identifier: 0000-0002-2316-306X scheme: orcid - affiliations: - name: Northwestern University family_name: Griffith given_name: Kent J. + id: 0000-0002-8096-906X identifiers: - - identifier: https://orcid.org/0000-0002-8096-906X + - identifier: 0000-0002-8096-906X scheme: orcid - affiliations: - name: TU Wien - name: ULB family_name: "K\xF6nigsberger" given_name: Markus + id: 0000-0003-1445-206X identifiers: - - identifier: https://orcid.org/0000-0003-1445-206X + - identifier: 0000-0003-1445-206X scheme: orcid - affiliations: - name: TU Wien family_name: Matz given_name: Gerald + id: 0000-0003-1784-806X identifiers: - - identifier: https://orcid.org/0000-0003-1784-806X + - identifier: 0000-0003-1784-806X scheme: orcid - affiliations: - name: University of Fribourg family_name: Hase given_name: Adrian + id: 0000-0003-3072-706X identifiers: - - identifier: https://orcid.org/0000-0003-3072-706X + - identifier: 0000-0003-3072-706X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Amaya Garc\xEDa" given_name: "Fabi\xE1n" + id: 0000-0002-1321-4070 identifiers: - - identifier: https://orcid.org/0000-0002-1321-4070 + - identifier: 0000-0002-1321-4070 scheme: orcid - affiliations: - name: Northwestern University family_name: shah given_name: surendra + id: 0000-0002-1364-4070 identifiers: - - identifier: https://orcid.org/0000-0002-1364-4070 + - identifier: 0000-0002-1364-4070 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Stony Brook University family_name: Li given_name: Ruoshui + id: 0000-0002-7903-7070 identifiers: - - identifier: https://orcid.org/0000-0002-7903-7070 + - identifier: 0000-0002-7903-7070 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: "M\xFCller" given_name: Matthias + id: 0000-0002-9177-3070 identifiers: - - identifier: https://orcid.org/0000-0002-9177-3070 + - identifier: 0000-0002-9177-3070 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: "Leibniz-Institut f\xFCr Bildungsverl\xE4ufe" family_name: Kleinert given_name: Corinna + id: 0000-0002-9285-6070 identifiers: - - identifier: https://orcid.org/0000-0002-9285-6070 + - identifier: 0000-0002-9285-6070 scheme: orcid - affiliations: - name: Northwestern University family_name: Katsaggelos given_name: Aggelos + id: 0000-0003-4554-0070 identifiers: - - identifier: https://orcid.org/0000-0003-4554-0070 + - identifier: 0000-0003-4554-0070 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Mussa given_name: Roberto + id: 0000-0002-0294-9071 identifiers: - - identifier: https://orcid.org/0000-0002-0294-9071 + - identifier: 0000-0002-0294-9071 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: "Institut de F\xEDsica d'Altes Energies" family_name: Gkougkousis given_name: Evangelos - Leonidas + id: 0000-0002-2132-2071 identifiers: - - identifier: https://orcid.org/0000-0002-2132-2071 + - identifier: 0000-0002-2132-2071 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Herty given_name: Andreas + id: 0000-0002-6074-3071 identifiers: - - identifier: https://orcid.org/0000-0002-6074-3071 + - identifier: 0000-0002-6074-3071 scheme: orcid - affiliations: - name: TU Wien family_name: Donta given_name: Praveen Kumar + id: 0000-0002-8233-6071 identifiers: - - identifier: https://orcid.org/0000-0002-8233-6071 + - identifier: 0000-0002-8233-6071 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: McCorkle given_name: Sean + id: 0000-0003-1126-4071 identifiers: - - identifier: https://orcid.org/0000-0003-1126-4071 + - identifier: 0000-0003-1126-4071 scheme: orcid - affiliations: - name: Northwestern University family_name: Arling given_name: Adam + id: 0000-0003-1355-0071 identifiers: - - identifier: https://orcid.org/0000-0003-1355-0071 + - identifier: 0000-0003-1355-0071 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Unterrainer given_name: Karl + id: 0000-0003-1970-9071 identifiers: - - identifier: https://orcid.org/0000-0003-1970-9071 + - identifier: 0000-0003-1970-9071 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhong given_name: Ding + id: 0000-0003-3149-2071 identifiers: - - identifier: https://orcid.org/0000-0003-3149-2071 + - identifier: 0000-0003-3149-2071 scheme: orcid - affiliations: - name: TU Wien family_name: Hofbauer given_name: Hermann + id: 0000-0001-6318-9072 identifiers: - - identifier: https://orcid.org/0000-0001-6318-9072 + - identifier: 0000-0001-6318-9072 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Vivo-Vilches given_name: Carlos + id: 0000-0002-4972-4072 identifiers: - - identifier: https://orcid.org/0000-0002-4972-4072 + - identifier: 0000-0002-4972-4072 scheme: orcid - affiliations: - name: Northwestern University family_name: Macauley given_name: Melissa + id: 0000-0002-8035-0072 identifiers: - - identifier: https://orcid.org/0000-0002-8035-0072 + - identifier: 0000-0002-8035-0072 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Lausanne family_name: De Gasperin given_name: Ornela + id: 0000-0003-3415-2072 identifiers: - - identifier: https://orcid.org/0000-0003-3415-2072 + - identifier: 0000-0003-3415-2072 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Pagliarin given_name: Sofia + id: 0000-0003-4846-6072 identifiers: - - identifier: https://orcid.org/0000-0003-4846-6072 + - identifier: 0000-0003-4846-6072 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Groll given_name: Daniel + id: 0000-0001-5588-7073 identifiers: - - identifier: https://orcid.org/0000-0001-5588-7073 + - identifier: 0000-0001-5588-7073 scheme: orcid - affiliations: - name: Northwestern University family_name: Meuser given_name: Denise + id: 0000-0001-8152-4073 identifiers: - - identifier: https://orcid.org/0000-0001-8152-4073 + - identifier: 0000-0001-8152-4073 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien Fakult\xE4t f\xFCr Technische Chemie" family_name: "Pfl\xFCgl" given_name: Stefan + id: 0000-0001-8472-5073 identifiers: - - identifier: https://orcid.org/0000-0001-8472-5073 + - identifier: 0000-0001-8472-5073 scheme: orcid - affiliations: - name: CERN family_name: Belin given_name: Alexandre + id: 0000-0002-0746-4073 identifiers: - - identifier: https://orcid.org/0000-0002-0746-4073 + - identifier: 0000-0002-0746-4073 scheme: orcid - affiliations: - name: Northwestern University family_name: Fuentes given_name: Marcela + id: 0000-0002-4094-2073 identifiers: - - identifier: https://orcid.org/0000-0002-4094-2073 + - identifier: 0000-0002-4094-2073 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Subramanian given_name: Madhumalar + id: 0000-0002-7433-3073 identifiers: - - identifier: https://orcid.org/0000-0002-7433-3073 + - identifier: 0000-0002-7433-3073 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sagman given_name: Nathaniel + id: 0000-0002-8485-7073 identifiers: - - identifier: https://orcid.org/0000-0002-8485-7073 + - identifier: 0000-0002-8485-7073 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Nowak given_name: Sascha + id: 0000-0003-1508-6073 identifiers: - - identifier: https://orcid.org/0000-0003-1508-6073 + - identifier: 0000-0003-1508-6073 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Schachner given_name: Martin + id: 0000-0001-6597-4074 identifiers: - - identifier: https://orcid.org/0000-0001-6597-4074 + - identifier: 0000-0001-6597-4074 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Segalin given_name: Cristina + id: 0000-0001-7219-7074 identifiers: - - identifier: https://orcid.org/0000-0001-7219-7074 + - identifier: 0000-0001-7219-7074 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gholamin given_name: Sharareh + id: 0000-0001-7425-6074 identifiers: - - identifier: https://orcid.org/0000-0001-7425-6074 + - identifier: 0000-0001-7425-6074 scheme: orcid - affiliations: - name: University of Fribourg family_name: "V\xF6gtlin" given_name: Lars + id: 0000-0002-2543-9074 identifiers: - - identifier: https://orcid.org/0000-0002-2543-9074 + - identifier: 0000-0002-2543-9074 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Herbig given_name: Ulrike + id: 0000-0002-3619-7074 identifiers: - - identifier: https://orcid.org/0000-0002-3619-7074 + - identifier: 0000-0002-3619-7074 scheme: orcid - affiliations: - name: CERN family_name: Samsonyan given_name: Marine + id: 0000-0002-5771-3074 identifiers: - - identifier: https://orcid.org/0000-0002-5771-3074 + - identifier: 0000-0002-5771-3074 scheme: orcid - affiliations: - name: CERN family_name: Perillo-Marcone given_name: Antonio + id: 0000-0002-5826-5074 identifiers: - - identifier: https://orcid.org/0000-0002-5826-5074 + - identifier: 0000-0002-5826-5074 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Oliveira Damazio given_name: Denis + id: 0000-0002-8601-2074 identifiers: - - identifier: https://orcid.org/0000-0002-8601-2074 + - identifier: 0000-0002-8601-2074 scheme: orcid - affiliations: - name: University of Fribourg family_name: Alloa given_name: Emmanuel + id: 0000-0003-1919-5074 identifiers: - - identifier: https://orcid.org/0000-0003-1919-5074 + - identifier: 0000-0003-1919-5074 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Osmic given_name: Ena + id: 0000-0003-2513-0074 identifiers: - - identifier: https://orcid.org/0000-0003-2513-0074 + - identifier: 0000-0003-2513-0074 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Rui given_name: Ning + id: 0000-0001-6234-7075 identifiers: - - identifier: https://orcid.org/0000-0001-6234-7075 + - identifier: 0000-0001-6234-7075 scheme: orcid - affiliations: - name: Northwestern University family_name: Distler given_name: Max + id: 0000-0002-3750-5075 identifiers: - - identifier: https://orcid.org/0000-0002-3750-5075 + - identifier: 0000-0002-3750-5075 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Paul given_name: Richard + id: 0000-0002-7433-0075 identifiers: - - identifier: https://orcid.org/0000-0002-7433-0075 + - identifier: 0000-0002-7433-0075 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Black given_name: Charles + id: 0000-0002-5157-0076 identifiers: - - identifier: https://orcid.org/0000-0002-5157-0076 + - identifier: 0000-0002-5157-0076 scheme: orcid - affiliations: - name: CERN family_name: Gargiulo given_name: Federico + id: 0000-0003-1162-5076 identifiers: - - identifier: https://orcid.org/0000-0003-1162-5076 + - identifier: 0000-0003-1162-5076 scheme: orcid - affiliations: - name: Northwestern University family_name: Kim given_name: Joon-Il + id: 0000-0001-6496-4077 identifiers: - - identifier: https://orcid.org/0000-0001-6496-4077 + - identifier: 0000-0001-6496-4077 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Espinet Gonzalez given_name: Pilar + id: 0000-0002-7656-0077 identifiers: - - identifier: https://orcid.org/0000-0002-7656-0077 + - identifier: 0000-0002-7656-0077 scheme: orcid - affiliations: - name: University of Bamberg family_name: Berger given_name: Valentin T. Z. + id: 0000-0002-8306-6077 identifiers: - - identifier: https://orcid.org/0000-0002-8306-6077 + - identifier: 0000-0002-8306-6077 scheme: orcid - affiliations: - name: TU Wien family_name: Weber given_name: Nikolaus + id: 0000-0003-0633-6077 identifiers: - - identifier: https://orcid.org/0000-0003-0633-6077 + - identifier: 0000-0003-0633-6077 scheme: orcid - affiliations: - name: Northwestern University family_name: Morton given_name: David + id: 0000-0001-6001-9078 identifiers: - - identifier: https://orcid.org/0000-0001-6001-9078 + - identifier: 0000-0001-6001-9078 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Tazhigulov given_name: Ruslan + id: 0000-0002-0679-3078 identifiers: - - identifier: https://orcid.org/0000-0002-0679-3078 + - identifier: 0000-0002-0679-3078 scheme: orcid - affiliations: - name: Northwestern University family_name: dos Reis given_name: Roberto + id: 0000-0002-6011-6078 identifiers: - - identifier: https://orcid.org/0000-0002-6011-6078 + - identifier: 0000-0002-6011-6078 scheme: orcid - affiliations: - name: TU Wien family_name: Wagner given_name: Marlene + id: 0000-0002-0550-8079 identifiers: - - identifier: https://orcid.org/0000-0002-0550-8079 + - identifier: 0000-0002-0550-8079 scheme: orcid - affiliations: - name: TU Wien family_name: Lindenthal given_name: Lorenz + id: 0000-0002-2768-6079 identifiers: - - identifier: https://orcid.org/0000-0002-2768-6079 + - identifier: 0000-0002-2768-6079 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Terzano given_name: Michele + id: 0000-0002-3467-5079 identifiers: - - identifier: https://orcid.org/0000-0002-3467-5079 + - identifier: 0000-0002-3467-5079 scheme: orcid - affiliations: - name: CERN family_name: Peszka given_name: Joanna + id: 0000-0002-5140-8079 identifiers: - - identifier: https://orcid.org/0000-0002-5140-8079 + - identifier: 0000-0002-5140-8079 scheme: orcid - affiliations: - name: Stony Brook University - name: Brookhaven National Laboratory family_name: Boscoboinik given_name: J. Anibal + id: 0000-0002-5090-7079 identifiers: - - identifier: https://orcid.org/0000-0002-5090-7079 + - identifier: 0000-0002-5090-7079 scheme: orcid - affiliations: - name: "Inria Saclay - \xCEle-de-France Research Centre" - name: California Institute of Technology family_name: Desbrun given_name: Mathieu + id: 0000-0003-3424-6079 identifiers: - - identifier: https://orcid.org/0000-0003-3424-6079 + - identifier: 0000-0003-3424-6079 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: De Pietro given_name: Giacomo + id: 0000-0001-8442-107X identifiers: - - identifier: https://orcid.org/0000-0001-8442-107X + - identifier: 0000-0001-8442-107X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Mayerhoffer given_name: Daniel + id: 0000-0001-8841-407X identifiers: - - identifier: https://orcid.org/0000-0001-8841-407X + - identifier: 0000-0001-8841-407X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Sangroula given_name: Medani + id: 0000-0002-0026-807X identifiers: - - identifier: https://orcid.org/0000-0002-0026-807X + - identifier: 0000-0002-0026-807X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: LAMOUR given_name: Julien + id: 0000-0002-4410-507X identifiers: - - identifier: https://orcid.org/0000-0002-4410-507X + - identifier: 0000-0002-4410-507X scheme: orcid - affiliations: - name: TU Wien family_name: Cvitkovich given_name: Lukas + id: 0000-0003-2453-507X identifiers: - - identifier: https://orcid.org/0000-0003-2453-507X + - identifier: 0000-0003-2453-507X scheme: orcid - affiliations: - name: Northwestern University family_name: Moazzen given_name: Elahe + id: 0000-0003-3189-007X identifiers: - - identifier: https://orcid.org/0000-0003-3189-007X + - identifier: 0000-0003-3189-007X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Elsas given_name: Susanne + id: 0000-0001-5255-1080 identifiers: - - identifier: https://orcid.org/0000-0001-5255-1080 + - identifier: 0000-0001-5255-1080 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lenz given_name: Kilian + id: 0000-0001-5528-5080 identifiers: - - identifier: https://orcid.org/0000-0001-5528-5080 + - identifier: 0000-0001-5528-5080 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Cernava given_name: Tomislav + id: 0000-0001-7772-4080 identifiers: - - identifier: https://orcid.org/0000-0001-7772-4080 + - identifier: 0000-0001-7772-4080 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tanabe given_name: Toshiya + id: 0000-0002-7188-4080 identifiers: - - identifier: https://orcid.org/0000-0002-7188-4080 + - identifier: 0000-0002-7188-4080 scheme: orcid - affiliations: - name: Northwestern University family_name: Vasal given_name: Deepanshu + id: 0000-0003-1089-8080 identifiers: - - identifier: https://orcid.org/0000-0003-1089-8080 + - identifier: 0000-0003-1089-8080 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Ruggi given_name: Albert + id: 0000-0003-2860-9080 identifiers: - - identifier: https://orcid.org/0000-0003-2860-9080 + - identifier: 0000-0003-2860-9080 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Camarca given_name: Maria + id: 0000-0003-3887-4080 identifiers: - - identifier: https://orcid.org/0000-0003-3887-4080 + - identifier: 0000-0003-3887-4080 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Cantone given_name: Claudio + id: 0000-0001-9934-5081 identifiers: - - identifier: https://orcid.org/0000-0001-9934-5081 + - identifier: 0000-0001-9934-5081 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yunjun given_name: Zhang + id: 0000-0001-9441-7082 identifiers: - - identifier: https://orcid.org/0000-0001-9441-7082 + - identifier: 0000-0001-9441-7082 scheme: orcid - affiliations: - name: University of Vienna - name: "Technische Universit\xE4t Wien" family_name: Poecze given_name: Flora + id: 0000-0002-1273-4082 identifiers: - - identifier: https://orcid.org/0000-0002-1273-4082 + - identifier: 0000-0002-1273-4082 scheme: orcid - affiliations: - name: TU Wien - name: Karl Landsteiner University of Health Sciences family_name: Pahr given_name: Dieter + id: 0000-0002-5822-2082 identifiers: - - identifier: https://orcid.org/0000-0002-5822-2082 + - identifier: 0000-0002-5822-2082 scheme: orcid - affiliations: - name: Northwestern University family_name: Fouda given_name: Abdurrahman + id: 0000-0002-6375-0082 identifiers: - - identifier: https://orcid.org/0000-0002-6375-0082 + - identifier: 0000-0002-6375-0082 scheme: orcid - affiliations: - name: Northwestern University family_name: Schauer given_name: Jacob + id: 0000-0002-9041-7082 identifiers: - - identifier: https://orcid.org/0000-0002-9041-7082 + - identifier: 0000-0002-9041-7082 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Chiggiato given_name: Paolo + id: 0000-0003-3301-8082 identifiers: - - identifier: https://orcid.org/0000-0003-3301-8082 + - identifier: 0000-0003-3301-8082 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hossain given_name: Asik + id: 0000-0001-8731-7083 identifiers: - - identifier: https://orcid.org/0000-0001-8731-7083 + - identifier: 0000-0001-8731-7083 scheme: orcid - affiliations: - name: "Leibniz-Institut f\xFCr Analytische Wissenschaften \u2013 ISAS eV" - name: "University of M\xFCnster" family_name: Knitsch given_name: Robert + id: 0000-0001-9248-2083 identifiers: - - identifier: https://orcid.org/0000-0001-9248-2083 + - identifier: 0000-0001-9248-2083 scheme: orcid - affiliations: - name: TU Wien family_name: Pustogow given_name: Andrej + id: 0000-0001-9428-5083 identifiers: - - identifier: https://orcid.org/0000-0001-9428-5083 + - identifier: 0000-0001-9428-5083 scheme: orcid - affiliations: - name: TU Wien family_name: Dumke given_name: Hartmut + id: 0000-0002-8111-9083 identifiers: - - identifier: https://orcid.org/0000-0002-8111-9083 + - identifier: 0000-0002-8111-9083 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Herrmann given_name: Eric + id: 0000-0003-0499-0083 identifiers: - - identifier: https://orcid.org/0000-0003-0499-0083 + - identifier: 0000-0003-0499-0083 scheme: orcid - affiliations: - name: Northwestern University family_name: Sebo given_name: Zachary + id: 0000-0003-2495-9083 identifiers: - - identifier: https://orcid.org/0000-0003-2495-9083 + - identifier: 0000-0003-2495-9083 scheme: orcid - affiliations: - name: Technical University of Denmark - name: Graz University of Technology family_name: Parada given_name: Irene + id: 0000-0003-3147-0083 identifiers: - - identifier: https://orcid.org/0000-0003-3147-0083 + - identifier: 0000-0003-3147-0083 scheme: orcid - affiliations: - name: TU Wien family_name: Zerobin given_name: Elise + id: 0000-0003-3937-6083 identifiers: - - identifier: https://orcid.org/0000-0003-3937-6083 + - identifier: 0000-0003-3937-6083 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: "F\xF6rster" given_name: Christian + id: 0000-0001-7068-2084 identifiers: - - identifier: https://orcid.org/0000-0001-7068-2084 + - identifier: 0000-0001-7068-2084 scheme: orcid - affiliations: - name: University of Fribourg family_name: Sarkar given_name: Subhrangsu + id: 0000-0002-0935-6084 identifiers: - - identifier: https://orcid.org/0000-0002-0935-6084 + - identifier: 0000-0002-0935-6084 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Praetorius given_name: Teresa + id: 0000-0002-3270-8084 identifiers: - - identifier: https://orcid.org/0000-0002-3270-8084 + - identifier: 0000-0002-3270-8084 scheme: orcid - affiliations: - name: TU Wien family_name: Geerits given_name: Niels + id: 0000-0002-4807-2084 identifiers: - - identifier: https://orcid.org/0000-0002-4807-2084 + - identifier: 0000-0002-4807-2084 scheme: orcid - affiliations: - name: Northwestern University family_name: Su given_name: Sarena + id: 0000-0002-7164-3084 identifiers: - - identifier: https://orcid.org/0000-0002-7164-3084 + - identifier: 0000-0002-7164-3084 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Eichler-Volf given_name: Anna + id: 0000-0003-1424-4084 identifiers: - - identifier: https://orcid.org/0000-0003-1424-4084 + - identifier: 0000-0003-1424-4084 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Vogl given_name: Richard + id: 0000-0003-2488-0084 identifiers: - - identifier: https://orcid.org/0000-0003-2488-0084 + - identifier: 0000-0003-2488-0084 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: Merck Serono SA family_name: Bernacchi given_name: "S\xE9bastien" + id: 0000-0001-5627-8085 identifiers: - - identifier: https://orcid.org/0000-0001-5627-8085 + - identifier: 0000-0001-5627-8085 scheme: orcid - affiliations: - name: Northwestern University family_name: Spillane given_name: James + id: 0000-0001-5744-9085 identifiers: - - identifier: https://orcid.org/0000-0001-5744-9085 + - identifier: 0000-0001-5744-9085 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Eichberger given_name: Arno + id: 0000-0001-8246-8085 identifiers: - - identifier: https://orcid.org/0000-0001-8246-8085 + - identifier: 0000-0001-8246-8085 scheme: orcid - affiliations: - name: Institute of Radiation Physics - name: CERN family_name: Straub given_name: Marietta + id: 0000-0002-1156-4085 identifiers: - - identifier: https://orcid.org/0000-0002-1156-4085 + - identifier: 0000-0002-1156-4085 scheme: orcid - affiliations: - name: TU Wien family_name: P R given_name: Vaidyanathan + id: 0000-0002-3101-2085 identifiers: - - identifier: https://orcid.org/0000-0002-3101-2085 + - identifier: 0000-0002-3101-2085 scheme: orcid - affiliations: - name: TU Wien family_name: Bayr given_name: Andreas + id: 0000-0002-8032-4085 identifiers: - - identifier: https://orcid.org/0000-0002-8032-4085 + - identifier: 0000-0002-8032-4085 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien Fakult\xE4t f\xFCr Mathematik und Geoinformation" family_name: Behrisch given_name: Mike + id: 0000-0003-0050-8085 identifiers: - - identifier: https://orcid.org/0000-0003-0050-8085 + - identifier: 0000-0003-0050-8085 scheme: orcid - affiliations: - name: University of Fribourg family_name: Song given_name: KyungSeob + id: 0000-0003-0961-7085 identifiers: - - identifier: https://orcid.org/0000-0003-0961-7085 + - identifier: 0000-0003-0961-7085 scheme: orcid - affiliations: - name: TU Wien family_name: "Mei\xDFner" given_name: Janis + id: 0000-0003-2014-6085 identifiers: - - identifier: https://orcid.org/0000-0003-2014-6085 + - identifier: 0000-0003-2014-6085 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Drakuli\u0107" given_name: Sanda + id: 0000-0003-3705-2085 identifiers: - - identifier: https://orcid.org/0000-0003-3705-2085 + - identifier: 0000-0003-3705-2085 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Borst given_name: Oliver + id: 0000-0003-4002-4085 identifiers: - - identifier: https://orcid.org/0000-0003-4002-4085 + - identifier: 0000-0003-4002-4085 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Lu given_name: Deyu + id: 0000-0003-4351-6085 identifiers: - - identifier: https://orcid.org/0000-0003-4351-6085 + - identifier: 0000-0003-4351-6085 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Solans Sanchez given_name: Carlos Antonio + id: 0000-0002-0518-4086 identifiers: - - identifier: https://orcid.org/0000-0002-0518-4086 + - identifier: 0000-0002-0518-4086 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Paolucci given_name: Pier Stanislao + id: 0000-0003-1937-6086 identifiers: - - identifier: https://orcid.org/0000-0003-1937-6086 + - identifier: 0000-0003-1937-6086 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Challis given_name: Collin + id: 0000-0003-4716-6086 identifiers: - - identifier: https://orcid.org/0000-0003-4716-6086 + - identifier: 0000-0003-4716-6086 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Furuhashi given_name: Hanae + id: 0000-0001-6224-5087 identifiers: - - identifier: https://orcid.org/0000-0001-6224-5087 + - identifier: 0000-0001-6224-5087 scheme: orcid - affiliations: - name: TU Wien family_name: Knaack given_name: Patrick + id: 0000-0001-9984-9087 identifiers: - - identifier: https://orcid.org/0000-0001-9984-9087 + - identifier: 0000-0001-9984-9087 scheme: orcid - affiliations: - name: TU Wien family_name: Novak given_name: Katharina + id: 0000-0002-7095-9087 identifiers: - - identifier: https://orcid.org/0000-0002-7095-9087 + - identifier: 0000-0002-7095-9087 scheme: orcid - affiliations: - name: Northwestern University family_name: Turner given_name: Daniel + id: 0000-0002-7476-5087 identifiers: - - identifier: https://orcid.org/0000-0002-7476-5087 + - identifier: 0000-0002-7476-5087 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Rott given_name: David + id: 0000-0001-8234-6088 identifiers: - - identifier: https://orcid.org/0000-0001-8234-6088 + - identifier: 0000-0001-8234-6088 scheme: orcid - affiliations: - name: University of Fribourg family_name: Vimercati given_name: Giovanni + id: 0000-0002-2419-8088 identifiers: - - identifier: https://orcid.org/0000-0002-2419-8088 + - identifier: 0000-0002-2419-8088 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Asimaki given_name: Domniki + id: 0000-0002-3008-8088 identifiers: - - identifier: https://orcid.org/0000-0002-3008-8088 + - identifier: 0000-0002-3008-8088 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Klasen given_name: Michael + id: 0000-0002-4665-3088 identifiers: - - identifier: https://orcid.org/0000-0002-4665-3088 + - identifier: 0000-0002-4665-3088 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Martinez given_name: Kristina + id: 0000-0002-9654-6088 identifiers: - - identifier: https://orcid.org/0000-0002-9654-6088 + - identifier: 0000-0002-9654-6088 scheme: orcid - affiliations: - name: CERN family_name: Stewart given_name: Graeme + id: 0000-0003-0182-7088 identifiers: - - identifier: https://orcid.org/0000-0003-0182-7088 + - identifier: 0000-0003-0182-7088 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Kurzbach given_name: Anica + id: 0000-0003-1531-3088 identifiers: - - identifier: https://orcid.org/0000-0003-1531-3088 + - identifier: 0000-0003-1531-3088 scheme: orcid - affiliations: - name: Northwestern University family_name: MATIAS given_name: AGUSTINA + id: 0000-0003-3762-7088 identifiers: - - identifier: https://orcid.org/0000-0003-3762-7088 + - identifier: 0000-0003-3762-7088 scheme: orcid - affiliations: - name: "Universit\xE9 de Tunis El Manar Facult\xE9 des Sciences de Tunis" - name: European Organization for Nuclear Research family_name: Trabelsi given_name: A. + id: 0000-0002-2020-3089 identifiers: - - identifier: https://orcid.org/0000-0002-2020-3089 + - identifier: 0000-0002-2020-3089 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Schuetz given_name: Gerhard + id: 0000-0003-1542-1089 identifiers: - - identifier: https://orcid.org/0000-0003-1542-1089 + - identifier: 0000-0003-1542-1089 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Acevedo-Esteves given_name: Raul + id: 0000-0003-3668-7089 identifiers: - - identifier: https://orcid.org/0000-0003-3668-7089 + - identifier: 0000-0003-3668-7089 scheme: orcid - affiliations: - name: California Institute of Technology - name: Helmholtz Zentrum family_name: Remedios given_name: Ryan + id: 0000-0001-6004-808X identifiers: - - identifier: https://orcid.org/0000-0001-6004-808X + - identifier: 0000-0001-6004-808X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Lunemann given_name: Jan + id: 0000-0002-3007-708X identifiers: - - identifier: https://orcid.org/0000-0002-3007-708X + - identifier: 0000-0002-3007-708X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Hengge given_name: Elisabeth + id: 0000-0002-7954-008X identifiers: - - identifier: https://orcid.org/0000-0002-7954-008X + - identifier: 0000-0002-7954-008X scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: University of the Free State family_name: Delgado Luchner given_name: Carmen Maria + id: 0000-0003-4212-408X identifiers: - - identifier: https://orcid.org/0000-0003-4212-408X + - identifier: 0000-0003-4212-408X scheme: orcid - affiliations: - name: Northwestern University family_name: SHANG given_name: NA + id: 0000-0003-4506-908X identifiers: - - identifier: https://orcid.org/0000-0003-4506-908X + - identifier: 0000-0003-4506-908X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Caswell given_name: Thomas + id: 0000-0003-4692-608X identifiers: - - identifier: https://orcid.org/0000-0003-4692-608X + - identifier: 0000-0003-4692-608X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kaever given_name: Peter + id: 0000-0001-5791-5090 identifiers: - - identifier: https://orcid.org/0000-0001-5791-5090 + - identifier: 0000-0001-5791-5090 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Huolei + id: 0000-0001-6245-8090 identifiers: - - identifier: https://orcid.org/0000-0001-6245-8090 + - identifier: 0000-0001-6245-8090 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Cheng given_name: Lap-Yan + id: 0000-0001-6280-2090 identifiers: - - identifier: https://orcid.org/0000-0001-6280-2090 + - identifier: 0000-0001-6280-2090 scheme: orcid - affiliations: - name: University of Fribourg family_name: Missonier-Piera given_name: Franck + id: 0000-0001-8905-2090 identifiers: - - identifier: https://orcid.org/0000-0001-8905-2090 + - identifier: 0000-0001-8905-2090 scheme: orcid - affiliations: - name: University of Fribourg family_name: Qu given_name: Bingqing + id: 0000-0002-2000-5090 identifiers: - - identifier: https://orcid.org/0000-0002-2000-5090 + - identifier: 0000-0002-2000-5090 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Booysen given_name: "Ren\xE9" + id: 0000-0002-5549-4090 identifiers: - - identifier: https://orcid.org/0000-0002-5549-4090 + - identifier: 0000-0002-5549-4090 scheme: orcid - affiliations: - name: TU Wien family_name: Suitner given_name: Johannes + id: 0000-0002-9415-1090 identifiers: - - identifier: https://orcid.org/0000-0002-9415-1090 + - identifier: 0000-0002-9415-1090 scheme: orcid - affiliations: - name: Northwestern University family_name: Pfammatter given_name: Angela + id: 0000-0003-0081-4090 identifiers: - - identifier: https://orcid.org/0000-0003-0081-4090 + - identifier: 0000-0003-0081-4090 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Guardia-Valenzuela given_name: Jorge + id: 0000-0001-6222-4091 identifiers: - - identifier: https://orcid.org/0000-0001-6222-4091 + - identifier: 0000-0001-6222-4091 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Ando given_name: Ryoichi + id: 0000-0002-7899-9091 identifiers: - - identifier: https://orcid.org/0000-0002-7899-9091 + - identifier: 0000-0002-7899-9091 scheme: orcid - affiliations: - name: Northwestern University family_name: Nikiforidis given_name: Georgios + id: 0000-0002-8754-5091 identifiers: - - identifier: https://orcid.org/0000-0002-8754-5091 + - identifier: 0000-0002-8754-5091 scheme: orcid - affiliations: - name: University of Fribourg - name: Osun State University Osogbo NG family_name: Fajemila given_name: Olugbenga Temitope + id: 0000-0002-9949-0091 identifiers: - - identifier: https://orcid.org/0000-0002-9949-0091 + - identifier: 0000-0002-9949-0091 scheme: orcid - affiliations: - name: University of Fribourg family_name: Hernandez-Lopez given_name: Ana + id: 0000-0001-6009-7092 identifiers: - - identifier: https://orcid.org/0000-0001-6009-7092 + - identifier: 0000-0001-6009-7092 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Pestana Puerta given_name: "Jes\xFAs" + id: 0000-0002-0093-3092 identifiers: - - identifier: https://orcid.org/0000-0002-0093-3092 + - identifier: 0000-0002-0093-3092 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: bosi given_name: filippo + id: 0000-0002-1922-0092 identifiers: - - identifier: https://orcid.org/0000-0002-1922-0092 + - identifier: 0000-0002-1922-0092 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: "University of Osnabr\xFCck" family_name: "Sch\xE4fer" given_name: Armin + id: 0000-0002-2538-0092 identifiers: - - identifier: https://orcid.org/0000-0002-2538-0092 + - identifier: 0000-0002-2538-0092 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Miltner given_name: Martin + id: 0000-0002-3766-4092 identifiers: - - identifier: https://orcid.org/0000-0002-3766-4092 + - identifier: 0000-0002-3766-4092 scheme: orcid - affiliations: - name: Delft University of Technology - name: Istituto Nazionale di Fisica Nucleare family_name: Serra given_name: Enrico + id: 0000-0002-5120-4092 identifiers: - - identifier: https://orcid.org/0000-0002-5120-4092 + - identifier: 0000-0002-5120-4092 scheme: orcid - affiliations: - name: TU Wien family_name: Winkler given_name: Philipp + id: 0000-0002-8244-9092 identifiers: - - identifier: https://orcid.org/0000-0002-8244-9092 + - identifier: 0000-0002-8244-9092 scheme: orcid - affiliations: - name: Bamberg Graduate School of Social Sciences - name: University of Bamberg family_name: Bergmann given_name: Henning + id: 0000-0003-1197-5092 identifiers: - - identifier: https://orcid.org/0000-0003-1197-5092 + - identifier: 0000-0003-1197-5092 scheme: orcid - affiliations: - name: Northwestern University family_name: Vitaterna given_name: Martha + id: 0000-0001-6243-2093 identifiers: - - identifier: https://orcid.org/0000-0001-6243-2093 + - identifier: 0000-0001-6243-2093 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Windscheid given_name: Eike Christoph + id: 0000-0001-6201-0093 identifiers: - - identifier: https://orcid.org/0000-0001-6201-0093 + - identifier: 0000-0001-6201-0093 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Chiu given_name: Mickey + id: 0000-0001-9382-9093 identifiers: - - identifier: https://orcid.org/0000-0001-9382-9093 + - identifier: 0000-0001-9382-9093 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: Austrian Academy of Sciences family_name: Schieck given_name: Jochen + id: 0000-0002-1058-8093 identifiers: - - identifier: https://orcid.org/0000-0002-1058-8093 + - identifier: 0000-0002-1058-8093 scheme: orcid - affiliations: - name: Northwestern University family_name: DIALLO given_name: Ousmane + id: 0000-0003-1218-9093 identifiers: - - identifier: https://orcid.org/0000-0003-1218-9093 + - identifier: 0000-0003-1218-9093 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kerp given_name: Hans + id: 0000-0003-3683-4093 identifiers: - - identifier: https://orcid.org/0000-0003-3683-4093 + - identifier: 0000-0003-3683-4093 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Radatz given_name: Hans-Ingo + id: 0000-0001-7220-4094 identifiers: - - identifier: https://orcid.org/0000-0001-7220-4094 + - identifier: 0000-0001-7220-4094 scheme: orcid - affiliations: - name: Northwestern University family_name: Taflove given_name: Allen + id: 0000-0002-1742-5094 identifiers: - - identifier: https://orcid.org/0000-0002-1742-5094 + - identifier: 0000-0002-1742-5094 scheme: orcid - affiliations: - name: CERN family_name: Burr given_name: Chris + id: 0000-0002-5155-1094 identifiers: - - identifier: https://orcid.org/0000-0002-5155-1094 + - identifier: 0000-0002-5155-1094 scheme: orcid - affiliations: - name: Pohang University of Science and Technology - name: Northwestern University family_name: Park given_name: Sarah + id: 0000-0002-8770-6094 identifiers: - - identifier: https://orcid.org/0000-0002-8770-6094 + - identifier: 0000-0002-8770-6094 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Pinegger given_name: Andreas + id: 0000-0002-9553-8094 identifiers: - - identifier: https://orcid.org/0000-0002-9553-8094 + - identifier: 0000-0002-9553-8094 scheme: orcid - affiliations: - name: CERN family_name: Ormancey given_name: Emmanuel + id: 0000-0003-0776-2094 identifiers: - - identifier: https://orcid.org/0000-0003-0776-2094 + - identifier: 0000-0003-0776-2094 scheme: orcid - affiliations: - name: Graz University of Technology - name: Know Center family_name: Sousa given_name: Samuel + id: 0000-0001-7196-9095 identifiers: - - identifier: https://orcid.org/0000-0001-7196-9095 + - identifier: 0000-0001-7196-9095 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Rufin given_name: Manuel + id: 0000-0003-0322-0095 identifiers: - - identifier: https://orcid.org/0000-0003-0322-0095 + - identifier: 0000-0003-0322-0095 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yashiro given_name: Hanako + id: 0000-0001-5414-2096 identifiers: - - identifier: https://orcid.org/0000-0001-5414-2096 + - identifier: 0000-0001-5414-2096 scheme: orcid - affiliations: - name: CERN family_name: Giudice given_name: Gian Francesco + id: 0000-0002-0247-4096 identifiers: - - identifier: https://orcid.org/0000-0002-0247-4096 + - identifier: 0000-0002-0247-4096 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Hentrich given_name: Thomas + id: 0000-0002-1488-9096 identifiers: - - identifier: https://orcid.org/0000-0002-1488-9096 + - identifier: 0000-0002-1488-9096 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Bammer given_name: Ferdinand + id: 0000-0002-4037-4096 identifiers: - - identifier: https://orcid.org/0000-0002-4037-4096 + - identifier: 0000-0002-4037-4096 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Masana Castrillo given_name: Marc + id: 0000-0003-3254-3096 identifiers: - - identifier: https://orcid.org/0000-0003-3254-3096 + - identifier: 0000-0003-3254-3096 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Laa given_name: Barbara + id: 0000-0001-5053-2097 identifiers: - - identifier: https://orcid.org/0000-0001-5053-2097 + - identifier: 0000-0001-5053-2097 scheme: orcid - affiliations: - name: Northwestern University family_name: Noham given_name: Reut + id: 0000-0002-0462-5097 identifiers: - - identifier: https://orcid.org/0000-0002-0462-5097 + - identifier: 0000-0002-0462-5097 scheme: orcid - affiliations: - name: University of Bamberg family_name: Marx given_name: Johannes + id: 0000-0003-3090-4097 identifiers: - - identifier: https://orcid.org/0000-0003-3090-4097 + - identifier: 0000-0003-3090-4097 scheme: orcid - affiliations: - name: TU Wien family_name: Eder given_name: Wolfgang + id: 0000-0001-7494-1098 identifiers: - - identifier: https://orcid.org/0000-0001-7494-1098 + - identifier: 0000-0001-7494-1098 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bastrakova given_name: Kseniia + id: 0000-0001-8970-5098 identifiers: - - identifier: https://orcid.org/0000-0001-8970-5098 + - identifier: 0000-0001-8970-5098 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Bitenc given_name: Maja + id: 0000-0002-2651-0098 identifiers: - - identifier: https://orcid.org/0000-0002-2651-0098 + - identifier: 0000-0002-2651-0098 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schultheiss given_name: Helmut + id: 0000-0002-6727-5098 identifiers: - - identifier: https://orcid.org/0000-0002-6727-5098 + - identifier: 0000-0002-6727-5098 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhu given_name: Jennifer + id: 0000-0002-8367-0098 identifiers: - - identifier: https://orcid.org/0000-0002-8367-0098 + - identifier: 0000-0002-8367-0098 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Nieder given_name: Christina + id: 0000-0003-0319-2098 identifiers: - - identifier: https://orcid.org/0000-0003-0319-2098 + - identifier: 0000-0003-0319-2098 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Carrete Monta\xF1a" given_name: "Jes\xFAs" + id: 0000-0003-0971-1098 identifiers: - - identifier: https://orcid.org/0000-0003-0971-1098 + - identifier: 0000-0003-0971-1098 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Nicotri given_name: Stefano + id: 0000-0003-2707-1098 identifiers: - - identifier: https://orcid.org/0000-0003-2707-1098 + - identifier: 0000-0003-2707-1098 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Voelcker-Rehage given_name: Claudia + id: 0000-0001-5398-4099 identifiers: - - identifier: https://orcid.org/0000-0001-5398-4099 + - identifier: 0000-0001-5398-4099 scheme: orcid - affiliations: - name: TU Wien family_name: Brenner given_name: Simon + id: 0000-0001-6909-7099 identifiers: - - identifier: https://orcid.org/0000-0001-6909-7099 + - identifier: 0000-0001-6909-7099 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Vetyukov given_name: Yury + id: 0000-0001-6931-0099 identifiers: - - identifier: https://orcid.org/0000-0001-6931-0099 + - identifier: 0000-0001-6931-0099 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Volkov given_name: Oleksii + id: 0000-0001-7246-4099 identifiers: - - identifier: https://orcid.org/0000-0001-7246-4099 + - identifier: 0000-0001-7246-4099 scheme: orcid - affiliations: - name: Northwestern University Feinberg School of Medicine - name: Northwestern University family_name: Ji given_name: Zhe + id: 0000-0002-1809-8099 identifiers: - - identifier: https://orcid.org/0000-0002-1809-8099 + - identifier: 0000-0002-1809-8099 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Greenberg given_name: Matthew + id: 0000-0002-5081-3099 identifiers: - - identifier: https://orcid.org/0000-0002-5081-3099 + - identifier: 0000-0002-5081-3099 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhu given_name: Qi + id: 0000-0002-7700-4099 identifiers: - - identifier: https://orcid.org/0000-0002-7700-4099 + - identifier: 0000-0002-7700-4099 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Kramer given_name: Thomas + id: 0000-0002-8545-0099 identifiers: - - identifier: https://orcid.org/0000-0002-8545-0099 + - identifier: 0000-0002-8545-0099 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Chelstowska given_name: Magda Anna + id: 0000-0003-1030-2099 identifiers: - - identifier: https://orcid.org/0000-0003-1030-2099 + - identifier: 0000-0003-1030-2099 scheme: orcid - affiliations: - name: Northwestern University family_name: Du given_name: Xiumin + id: 0000-0003-4774-6099 identifiers: - - identifier: https://orcid.org/0000-0003-4774-6099 + - identifier: 0000-0003-4774-6099 scheme: orcid - affiliations: - name: Northwestern University family_name: Davies given_name: Evan + id: 0000-0001-6107-209X identifiers: - - identifier: https://orcid.org/0000-0001-6107-209X + - identifier: 0000-0001-6107-209X scheme: orcid - affiliations: - name: Northwestern University family_name: Marechal given_name: Patricia + id: 0000-0002-0670-109X identifiers: - - identifier: https://orcid.org/0000-0002-0670-109X + - identifier: 0000-0002-0670-109X scheme: orcid - affiliations: - name: TU Wien family_name: "G\xF6nd\xF6r" given_name: Aron + id: 0000-0002-7193-309X identifiers: - - identifier: https://orcid.org/0000-0002-7193-309X + - identifier: 0000-0002-7193-309X scheme: orcid - affiliations: - name: CERN family_name: Huss given_name: Alexander + id: 0000-0002-7799-909X identifiers: - - identifier: https://orcid.org/0000-0002-7799-909X + - identifier: 0000-0002-7799-909X scheme: orcid - affiliations: - name: University of Fribourg family_name: "Mart\xEDnez-Mart\xEDnez" given_name: Esther + id: 0000-0003-1016-209X identifiers: - - identifier: https://orcid.org/0000-0003-1016-209X + - identifier: 0000-0003-1016-209X scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: UniDistance family_name: Roulin given_name: "St\xE9phanie" + id: 0000-0003-1220-509X identifiers: - - identifier: https://orcid.org/0000-0003-1220-509X + - identifier: 0000-0003-1220-509X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Zeil given_name: Karl + id: 0000-0003-3926-409X identifiers: - - identifier: https://orcid.org/0000-0003-3926-409X + - identifier: 0000-0003-3926-409X scheme: orcid - affiliations: - name: TU Wien family_name: Recski given_name: Gabor + id: 0000-0001-5551-3100 identifiers: - - identifier: https://orcid.org/0000-0001-5551-3100 + - identifier: 0000-0001-5551-3100 scheme: orcid - affiliations: - name: University of Fribourg family_name: Harvey given_name: Michael + id: 0000-0002-0477-6100 identifiers: - - identifier: https://orcid.org/0000-0002-0477-6100 + - identifier: 0000-0002-0477-6100 scheme: orcid - affiliations: - name: TU Wien family_name: Gospodaric given_name: Jan + id: 0000-0002-3532-9100 identifiers: - - identifier: https://orcid.org/0000-0002-3532-9100 + - identifier: 0000-0002-3532-9100 scheme: orcid - affiliations: - name: Northwestern University family_name: Qu given_name: Yang + id: 0000-0002-6173-8100 identifiers: - - identifier: https://orcid.org/0000-0002-6173-8100 + - identifier: 0000-0002-6173-8100 scheme: orcid - affiliations: - name: TU Wien family_name: Derntl given_name: Christian + id: 0000-0002-6440-2100 identifiers: - - identifier: https://orcid.org/0000-0002-6440-2100 + - identifier: 0000-0002-6440-2100 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yan given_name: Shan + id: 0000-0002-9715-9100 identifiers: - - identifier: https://orcid.org/0000-0002-9715-9100 + - identifier: 0000-0002-9715-9100 scheme: orcid - affiliations: - name: Know Center - name: Graz University of Technology family_name: Kern given_name: Roman + id: 0000-0003-0202-6100 identifiers: - - identifier: https://orcid.org/0000-0003-0202-6100 + - identifier: 0000-0003-0202-6100 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mualem given_name: Leon + id: 0000-0003-3716-5100 identifiers: - - identifier: https://orcid.org/0000-0003-3716-5100 + - identifier: 0000-0003-3716-5100 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mazza given_name: Michael + id: 0000-0003-3995-3100 identifiers: - - identifier: https://orcid.org/0000-0003-3995-3100 + - identifier: 0000-0003-3995-3100 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Willis given_name: Peter + id: 0000-0001-5394-1101 identifiers: - - identifier: https://orcid.org/0000-0001-5394-1101 + - identifier: 0000-0001-5394-1101 scheme: orcid - affiliations: - name: Northwestern University family_name: Carr given_name: Stephen + id: 0000-0001-7540-3101 identifiers: - - identifier: https://orcid.org/0000-0001-7540-3101 + - identifier: 0000-0001-7540-3101 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Langbauer given_name: Raphael + id: 0000-0001-7824-1101 identifiers: - - identifier: https://orcid.org/0000-0001-7824-1101 + - identifier: 0000-0001-7824-1101 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Texas A&M University family_name: Yoon given_name: Byung-Jun + id: 0000-0001-9328-1101 identifiers: - - identifier: https://orcid.org/0000-0001-9328-1101 + - identifier: 0000-0001-9328-1101 scheme: orcid - affiliations: - name: Northwestern University @@ -4636,549 +5284,626 @@ - name: Northwestern Argonne Institute of Science and Engineering family_name: Gursoy given_name: Doga + id: 0000-0002-0080-8101 identifiers: - - identifier: https://orcid.org/0000-0002-0080-8101 + - identifier: 0000-0002-0080-8101 scheme: orcid - affiliations: - name: TU Wien family_name: Hobler given_name: Gerhard + id: 0000-0002-2140-6101 identifiers: - - identifier: https://orcid.org/0000-0002-2140-6101 + - identifier: 0000-0002-2140-6101 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Colussi given_name: Agustin J. + id: 0000-0002-3400-4101 identifiers: - - identifier: https://orcid.org/0000-0002-3400-4101 + - identifier: 0000-0002-3400-4101 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shu given_name: Shibo + id: 0000-0002-6370-2101 identifiers: - - identifier: https://orcid.org/0000-0002-6370-2101 + - identifier: 0000-0002-6370-2101 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Koch given_name: Robert + id: 0000-0003-4995-2101 identifiers: - - identifier: https://orcid.org/0000-0003-4995-2101 + - identifier: 0000-0003-4995-2101 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "M\xFCller" given_name: Stefan E. + id: 0000-0001-6273-7102 identifiers: - - identifier: https://orcid.org/0000-0001-6273-7102 + - identifier: 0000-0001-6273-7102 scheme: orcid - affiliations: - name: Northwestern University family_name: Montgomery given_name: Anastasia + id: 0000-0001-7742-9102 identifiers: - - identifier: https://orcid.org/0000-0001-7742-9102 + - identifier: 0000-0001-7742-9102 scheme: orcid - affiliations: - name: University of Fribourg family_name: Mouthon given_name: "Micha\xEBl" + id: 0000-0002-2557-4102 identifiers: - - identifier: https://orcid.org/0000-0002-2557-4102 + - identifier: 0000-0002-2557-4102 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "K\xFChtreiber" given_name: Norbert + id: 0000-0002-8324-8102 identifiers: - - identifier: https://orcid.org/0000-0002-8324-8102 + - identifier: 0000-0002-8324-8102 scheme: orcid - affiliations: - name: University of Fribourg family_name: Huyghe given_name: Richard + id: 0000-0002-9494-0102 identifiers: - - identifier: https://orcid.org/0000-0002-9494-0102 + - identifier: 0000-0002-9494-0102 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Sanelli given_name: Claudio + id: 0000-0003-1938-6102 identifiers: - - identifier: https://orcid.org/0000-0003-1938-6102 + - identifier: 0000-0003-1938-6102 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Joliet given_name: Emmanuel + id: 0000-0003-4824-0102 identifiers: - - identifier: https://orcid.org/0000-0003-4824-0102 + - identifier: 0000-0003-4824-0102 scheme: orcid - affiliations: - name: University of Nebraska-Lincoln - name: California Institute of Technology family_name: Zhang given_name: Limei + id: 0000-0001-6807-5103 identifiers: - - identifier: https://orcid.org/0000-0001-6807-5103 + - identifier: 0000-0001-6807-5103 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Braun given_name: Stefan + id: 0000-0002-7145-1103 identifiers: - - identifier: https://orcid.org/0000-0002-7145-1103 + - identifier: 0000-0002-7145-1103 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fiorese given_name: Christopher + id: 0000-0002-7521-7103 identifiers: - - identifier: https://orcid.org/0000-0002-7521-7103 + - identifier: 0000-0002-7521-7103 scheme: orcid - affiliations: - name: Northwestern University family_name: Bledsoe given_name: Caroline + id: 0000-0002-7855-7103 identifiers: - - identifier: https://orcid.org/0000-0002-7855-7103 + - identifier: 0000-0002-7855-7103 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Osteria given_name: Giuseppe + id: 0000-0002-9871-8103 identifiers: - - identifier: https://orcid.org/0000-0002-9871-8103 + - identifier: 0000-0002-9871-8103 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Gippert given_name: Christina + id: 0000-0003-0706-3103 identifiers: - - identifier: https://orcid.org/0000-0003-0706-3103 + - identifier: 0000-0003-0706-3103 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yoon given_name: Ki-Young + id: 0000-0003-3257-6103 identifiers: - - identifier: https://orcid.org/0000-0003-3257-6103 + - identifier: 0000-0003-3257-6103 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Xie given_name: Xin + id: 0000-0003-4575-6103 identifiers: - - identifier: https://orcid.org/0000-0003-4575-6103 + - identifier: 0000-0003-4575-6103 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pushpawela given_name: Buddhi + id: 0000-0002-3633-4104 identifiers: - - identifier: https://orcid.org/0000-0002-3633-4104 + - identifier: 0000-0002-3633-4104 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Williams given_name: Ethan + id: 0000-0002-7917-4104 identifiers: - - identifier: https://orcid.org/0000-0002-7917-4104 + - identifier: 0000-0002-7917-4104 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Brnic given_name: Maxim + id: 0000-0003-2316-3104 identifiers: - - identifier: https://orcid.org/0000-0003-2316-3104 + - identifier: 0000-0003-2316-3104 scheme: orcid - affiliations: - name: University of Fribourg family_name: Surdez given_name: Muriel + id: 0000-0002-1774-3105 identifiers: - - identifier: https://orcid.org/0000-0002-1774-3105 + - identifier: 0000-0002-1774-3105 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ben-Zvi given_name: Ilan + id: 0000-0001-5583-0106 identifiers: - - identifier: https://orcid.org/0000-0001-5583-0106 + - identifier: 0000-0001-5583-0106 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Hauser given_name: Andreas + id: 0000-0001-6918-3106 identifiers: - - identifier: https://orcid.org/0000-0001-6918-3106 + - identifier: 0000-0001-6918-3106 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Hofstaetter given_name: Georg C. + id: 0000-0001-9199-7106 identifiers: - - identifier: https://orcid.org/0000-0001-9199-7106 + - identifier: 0000-0001-9199-7106 scheme: orcid - affiliations: - name: Northwestern University family_name: Kamat given_name: Neha + id: 0000-0001-9362-6106 identifiers: - - identifier: https://orcid.org/0000-0001-9362-6106 + - identifier: 0000-0001-9362-6106 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Elder given_name: Clayton + id: 0000-0001-9831-2106 identifiers: - - identifier: https://orcid.org/0000-0001-9831-2106 + - identifier: 0000-0001-9831-2106 scheme: orcid - affiliations: - name: CERN family_name: Baskys given_name: Algirdas + id: 0000-0002-1875-8106 identifiers: - - identifier: https://orcid.org/0000-0002-1875-8106 + - identifier: 0000-0002-1875-8106 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Pansi given_name: Christopher + id: 0000-0002-5251-8106 identifiers: - - identifier: https://orcid.org/0000-0002-5251-8106 + - identifier: 0000-0002-5251-8106 scheme: orcid - affiliations: - name: TU Wien family_name: "Flei\xDF" given_name: Benjamin + id: 0000-0002-9172-8106 identifiers: - - identifier: https://orcid.org/0000-0002-9172-8106 + - identifier: 0000-0002-9172-8106 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Bangerl given_name: Mia Magdalena + id: 0000-0002-9401-3106 identifiers: - - identifier: https://orcid.org/0000-0002-9401-3106 + - identifier: 0000-0002-9401-3106 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Mayer given_name: Christoph + id: 0000-0003-1577-7106 identifiers: - - identifier: https://orcid.org/0000-0003-1577-7106 + - identifier: 0000-0003-1577-7106 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Mayer given_name: Florian + id: 0000-0003-3390-8106 identifiers: - - identifier: https://orcid.org/0000-0003-3390-8106 + - identifier: 0000-0003-3390-8106 scheme: orcid - affiliations: - name: CERN family_name: Scibile given_name: Luigi + id: 0000-0003-4396-2106 identifiers: - - identifier: https://orcid.org/0000-0003-4396-2106 + - identifier: 0000-0003-4396-2106 scheme: orcid - affiliations: - name: Northwestern University family_name: Micari given_name: Marina + id: 0000-0001-7968-4107 identifiers: - - identifier: https://orcid.org/0000-0001-7968-4107 + - identifier: 0000-0001-7968-4107 scheme: orcid - affiliations: - name: TU Wien family_name: Eberhardsteiner given_name: Josef + id: 0000-0001-9030-6107 identifiers: - - identifier: https://orcid.org/0000-0001-9030-6107 + - identifier: 0000-0001-9030-6107 scheme: orcid - affiliations: - name: Northwestern University family_name: Carruthers given_name: Bruce + id: 0000-0002-2703-3107 identifiers: - - identifier: https://orcid.org/0000-0002-2703-3107 + - identifier: 0000-0002-2703-3107 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Berchio given_name: Giulia + id: 0000-0003-0957-3107 identifiers: - - identifier: https://orcid.org/0000-0003-0957-3107 + - identifier: 0000-0003-0957-3107 scheme: orcid - affiliations: - name: CERN family_name: Baglio given_name: Julien + id: 0000-0001-6691-6108 identifiers: - - identifier: https://orcid.org/0000-0001-6691-6108 + - identifier: 0000-0001-6691-6108 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tiwale given_name: Nikhil + id: 0000-0001-8229-7108 identifiers: - - identifier: https://orcid.org/0000-0001-8229-7108 + - identifier: 0000-0001-8229-7108 scheme: orcid - affiliations: - name: University of Bamberg family_name: Peters given_name: Jan + id: 0000-0001-9184-7108 identifiers: - - identifier: https://orcid.org/0000-0001-9184-7108 + - identifier: 0000-0001-9184-7108 scheme: orcid - affiliations: - name: TU Wien family_name: Kuriatnikov given_name: Yevhenii + id: 0000-0002-2087-1108 identifiers: - - identifier: https://orcid.org/0000-0002-2087-1108 + - identifier: 0000-0002-2087-1108 scheme: orcid - affiliations: - name: TU Wien family_name: Neusser given_name: Maximilian + id: 0000-0002-3714-7108 identifiers: - - identifier: https://orcid.org/0000-0002-3714-7108 + - identifier: 0000-0002-3714-7108 scheme: orcid - affiliations: - name: TU Wien family_name: Hahn given_name: Rainer + id: 0000-0002-7322-8108 identifiers: - - identifier: https://orcid.org/0000-0002-7322-8108 + - identifier: 0000-0002-7322-8108 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Makvandi given_name: Ardavan + id: 0000-0002-8360-2108 identifiers: - - identifier: https://orcid.org/0000-0002-8360-2108 + - identifier: 0000-0002-8360-2108 scheme: orcid - affiliations: - name: Northwestern University family_name: Luan given_name: Haiwen + id: 0000-0003-0722-1108 identifiers: - - identifier: https://orcid.org/0000-0003-0722-1108 + - identifier: 0000-0003-0722-1108 scheme: orcid - affiliations: - name: Northwestern University family_name: Wilensky given_name: Uri + id: 0000-0001-9591-3109 identifiers: - - identifier: https://orcid.org/0000-0001-9591-3109 + - identifier: 0000-0001-9591-3109 scheme: orcid - affiliations: - name: TU Wien family_name: Jones given_name: Mitchell P. + id: 0000-0002-0251-1109 identifiers: - - identifier: https://orcid.org/0000-0002-0251-1109 + - identifier: 0000-0002-0251-1109 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Schwartz given_name: Stephen E. + id: 0000-0001-6288-310X identifiers: - - identifier: https://orcid.org/0000-0001-6288-310X + - identifier: 0000-0001-6288-310X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Jung given_name: Kyu Hyun + id: 0000-0001-8631-610X identifiers: - - identifier: https://orcid.org/0000-0001-8631-610X + - identifier: 0000-0001-8631-610X scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Haller given_name: Kevin + id: 0000-0001-8949-610X identifiers: - - identifier: https://orcid.org/0000-0001-8949-610X + - identifier: 0000-0001-8949-610X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: University of Bremen family_name: Oettmeier given_name: Christina + id: 0000-0002-6977-910X identifiers: - - identifier: https://orcid.org/0000-0002-6977-910X + - identifier: 0000-0002-6977-910X scheme: orcid - affiliations: - name: Northwestern University family_name: Urbanek given_name: Margrit + id: 0000-0001-6994-7110 identifiers: - - identifier: https://orcid.org/0000-0001-6994-7110 + - identifier: 0000-0001-6994-7110 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: V. Rodriguez given_name: Liss + id: 0000-0002-0093-2110 identifiers: - - identifier: https://orcid.org/0000-0002-0093-2110 + - identifier: 0000-0002-0093-2110 scheme: orcid - affiliations: - name: Northwestern University family_name: Jing given_name: Lu + id: 0000-0002-1876-1110 identifiers: - - identifier: https://orcid.org/0000-0002-1876-1110 + - identifier: 0000-0002-1876-1110 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cherchia given_name: Lynne + id: 0000-0002-7079-7110 identifiers: - - identifier: https://orcid.org/0000-0002-7079-7110 + - identifier: 0000-0002-7079-7110 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Sahovic given_name: Benjamin + id: 0000-0002-7624-0110 identifiers: - - identifier: https://orcid.org/0000-0002-7624-0110 + - identifier: 0000-0002-7624-0110 scheme: orcid - affiliations: - name: Northwestern University family_name: "\u0110or\u0111evi\u0107" given_name: Luka + id: 0000-0002-8346-7110 identifiers: - - identifier: https://orcid.org/0000-0002-8346-7110 + - identifier: 0000-0002-8346-7110 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Stapper given_name: Manuel + id: 0000-0002-8762-8110 identifiers: - - identifier: https://orcid.org/0000-0002-8762-8110 + - identifier: 0000-0002-8762-8110 scheme: orcid - affiliations: - name: Northwestern University - name: Northwestern Memorial HealthCare Corp family_name: Lloyd-Jones given_name: Donald + id: 0000-0003-0847-6110 identifiers: - - identifier: https://orcid.org/0000-0003-0847-6110 + - identifier: 0000-0003-0847-6110 scheme: orcid - affiliations: - name: Northwestern University family_name: Wu given_name: Ruiheng + id: 0000-0003-2666-6110 identifiers: - - identifier: https://orcid.org/0000-0003-2666-6110 + - identifier: 0000-0003-2666-6110 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Glavini\u0107" given_name: Ivan + id: 0000-0001-5912-8111 identifiers: - - identifier: https://orcid.org/0000-0001-5912-8111 + - identifier: 0000-0001-5912-8111 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Wodtke given_name: Robert + id: 0000-0001-7462-7111 identifiers: - - identifier: https://orcid.org/0000-0001-7462-7111 + - identifier: 0000-0001-7462-7111 scheme: orcid - affiliations: - name: University of Fribourg family_name: borderie given_name: sandra + id: 0000-0002-3885-4111 identifiers: - - identifier: https://orcid.org/0000-0002-3885-4111 + - identifier: 0000-0002-3885-4111 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Herr given_name: Marius + id: 0000-0002-6018-9111 identifiers: - - identifier: https://orcid.org/0000-0002-6018-9111 + - identifier: 0000-0002-6018-9111 scheme: orcid - affiliations: - name: Northwestern University family_name: Mendoza given_name: Annette + id: 0000-0002-6532-6111 identifiers: - - identifier: https://orcid.org/0000-0002-6532-6111 + - identifier: 0000-0002-6532-6111 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Greefrath given_name: Gilbert + id: 0000-0002-8322-5111 identifiers: - - identifier: https://orcid.org/0000-0002-8322-5111 + - identifier: 0000-0002-8322-5111 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mewaldt given_name: Richard + id: 0000-0003-2178-9111 identifiers: - - identifier: https://orcid.org/0000-0003-2178-9111 + - identifier: 0000-0003-2178-9111 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" - name: Graz University of Technology family_name: Leitner given_name: Erich + id: 0000-0003-2520-2111 identifiers: - - identifier: https://orcid.org/0000-0003-2520-2111 + - identifier: 0000-0003-2520-2111 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Ernsting given_name: Jan + id: 0000-0003-4649-2111 identifiers: - - identifier: https://orcid.org/0000-0003-4649-2111 + - identifier: 0000-0003-4649-2111 scheme: orcid - affiliations: - name: Northwestern University - name: Haigazian University Faculty of Sciences family_name: Hamadeh given_name: Sima + id: 0000-0001-5523-5112 identifiers: - - identifier: https://orcid.org/0000-0001-5523-5112 + - identifier: 0000-0001-5523-5112 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Rothe given_name: Rebecca + id: 0000-0002-0615-1112 identifiers: - - identifier: https://orcid.org/0000-0002-0615-1112 + - identifier: 0000-0002-0615-1112 scheme: orcid - affiliations: - name: Northwestern University family_name: DeRocher given_name: Karen + id: 0000-0002-0953-9112 identifiers: - - identifier: https://orcid.org/0000-0002-0953-9112 + - identifier: 0000-0002-0953-9112 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Pandey given_name: Parul + id: 0000-0002-8863-6112 identifiers: - - identifier: https://orcid.org/0000-0002-8863-6112 + - identifier: 0000-0002-8863-6112 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: "Universitat Aut\xF2noma de Barcelona" family_name: Blas given_name: Diego + id: 0000-0003-2646-0112 identifiers: - - identifier: https://orcid.org/0000-0003-2646-0112 + - identifier: 0000-0003-2646-0112 scheme: orcid - affiliations: - name: National Institute of Informatics @@ -5188,143 +5913,163 @@ - name: Senshu University family_name: UEMATSU given_name: Hiroki + id: 0000-0003-4215-3112 identifiers: - - identifier: https://orcid.org/0000-0003-4215-3112 + - identifier: 0000-0003-4215-3112 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Olds given_name: Daniel + id: 0000-0002-4611-4113 identifiers: - - identifier: https://orcid.org/0000-0002-4611-4113 + - identifier: 0000-0002-4611-4113 scheme: orcid - affiliations: - name: "Universit\xE4t Z\xFCrich" - name: Northwestern University family_name: Meier given_name: Tabea + id: 0000-0003-2902-4113 identifiers: - - identifier: https://orcid.org/0000-0003-2902-4113 + - identifier: 0000-0003-2902-4113 scheme: orcid - affiliations: - name: K1-MET GmbH - name: TU Wien family_name: "B\xF6senhofer" given_name: Markus + id: 0000-0003-3412-2113 identifiers: - - identifier: https://orcid.org/0000-0003-3412-2113 + - identifier: 0000-0003-3412-2113 scheme: orcid - affiliations: - name: Northwestern University family_name: Tommasini Ghelfi given_name: Serena + id: 0000-0001-5516-0114 identifiers: - - identifier: https://orcid.org/0000-0001-5516-0114 + - identifier: 0000-0001-5516-0114 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Zhen-Gang + id: 0000-0002-3361-6114 identifiers: - - identifier: https://orcid.org/0000-0002-3361-6114 + - identifier: 0000-0002-3361-6114 scheme: orcid - affiliations: - name: Northwestern University family_name: Franklin given_name: Daniel + id: 0000-0002-6453-5114 identifiers: - - identifier: https://orcid.org/0000-0002-6453-5114 + - identifier: 0000-0002-6453-5114 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Dunn given_name: Alexander + id: 0000-0003-1665-7114 identifiers: - - identifier: https://orcid.org/0000-0003-1665-7114 + - identifier: 0000-0003-1665-7114 scheme: orcid - affiliations: - name: Northwestern University family_name: Kosmala given_name: Kinga + id: 0000-0003-3124-0114 identifiers: - - identifier: https://orcid.org/0000-0003-3124-0114 + - identifier: 0000-0003-3124-0114 scheme: orcid - affiliations: - name: TU Wien family_name: Schwendinger given_name: Benjamin + id: 0000-0003-3315-8114 identifiers: - - identifier: https://orcid.org/0000-0003-3315-8114 + - identifier: 0000-0003-3315-8114 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Cykowska given_name: Anna + id: 0000-0001-6638-1115 identifiers: - - identifier: https://orcid.org/0000-0001-6638-1115 + - identifier: 0000-0001-6638-1115 scheme: orcid - affiliations: - name: CERN family_name: LECOQ given_name: Paul + id: 0000-0002-3198-0115 identifiers: - - identifier: https://orcid.org/0000-0002-3198-0115 + - identifier: 0000-0002-3198-0115 scheme: orcid - affiliations: - name: Northwestern University family_name: Yu given_name: Jing + id: 0000-0002-5570-4115 identifiers: - - identifier: https://orcid.org/0000-0002-5570-4115 + - identifier: 0000-0002-5570-4115 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Barrabes given_name: Noelia + id: 0000-0002-6018-3115 identifiers: - - identifier: https://orcid.org/0000-0002-6018-3115 + - identifier: 0000-0002-6018-3115 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Heindl given_name: Simon Franz + id: 0000-0003-0687-4115 identifiers: - - identifier: https://orcid.org/0000-0003-0687-4115 + - identifier: 0000-0003-0687-4115 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wilson given_name: Earle + id: 0000-0003-2329-5115 identifiers: - - identifier: https://orcid.org/0000-0003-2329-5115 + - identifier: 0000-0003-2329-5115 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Deppe given_name: Nils + id: 0000-0003-4557-4115 identifiers: - - identifier: https://orcid.org/0000-0003-4557-4115 + - identifier: 0000-0003-4557-4115 scheme: orcid - affiliations: - name: CERN family_name: Hauschild given_name: Michael + id: 0000-0001-6283-5116 identifiers: - - identifier: https://orcid.org/0000-0001-6283-5116 + - identifier: 0000-0001-6283-5116 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Throwe given_name: Thomas + id: 0000-0002-0178-5116 identifiers: - - identifier: https://orcid.org/0000-0002-0178-5116 + - identifier: 0000-0002-0178-5116 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Jauk given_name: Benjamin + id: 0000-0002-0604-1116 identifiers: - - identifier: https://orcid.org/0000-0002-0604-1116 + - identifier: 0000-0002-0604-1116 scheme: orcid - affiliations: - name: University of Tsukuba @@ -5333,15 +6078,17 @@ - name: TechTech Inc. family_name: Yoshida given_name: Mitsuo + id: 0000-0002-0735-1116 identifiers: - - identifier: https://orcid.org/0000-0002-0735-1116 + - identifier: 0000-0002-0735-1116 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Smith given_name: Tim + id: 0000-0002-1567-7116 identifiers: - - identifier: https://orcid.org/0000-0002-1567-7116 + - identifier: 0000-0002-1567-7116 scheme: orcid - affiliations: - name: Johns Hopkins University @@ -5350,266 +6097,303 @@ - name: Jet Propulsion Laboratory family_name: Ardila given_name: David + id: 0000-0002-2564-8116 identifiers: - - identifier: https://orcid.org/0000-0002-2564-8116 + - identifier: 0000-0002-2564-8116 scheme: orcid - affiliations: - name: Northwestern University family_name: Ansori given_name: Sofyan + id: 0000-0002-5532-9116 identifiers: - - identifier: https://orcid.org/0000-0002-5532-9116 + - identifier: 0000-0002-5532-9116 scheme: orcid - affiliations: - name: TU Wien family_name: Pimenov given_name: Andrei + id: 0000-0001-6911-7117 identifiers: - - identifier: https://orcid.org/0000-0001-6911-7117 + - identifier: 0000-0001-6911-7117 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" - name: Know-Center GmbH family_name: Leitner given_name: Helmut + id: 0000-0001-7142-8117 identifiers: - - identifier: https://orcid.org/0000-0001-7142-8117 + - identifier: 0000-0001-7142-8117 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Qian + id: 0000-0001-7412-7117 identifiers: - - identifier: https://orcid.org/0000-0001-7412-7117 + - identifier: 0000-0001-7412-7117 scheme: orcid - affiliations: - name: TU Wien family_name: Hasani given_name: Jeton + id: 0000-0002-4757-6117 identifiers: - - identifier: https://orcid.org/0000-0002-4757-6117 + - identifier: 0000-0002-4757-6117 scheme: orcid - affiliations: - name: TU Wien family_name: Maggio given_name: Emanuele + id: 0000-0002-5528-5117 identifiers: - - identifier: https://orcid.org/0000-0002-5528-5117 + - identifier: 0000-0002-5528-5117 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Hanzu given_name: Ilie + id: 0000-0002-9260-9117 identifiers: - - identifier: https://orcid.org/0000-0002-9260-9117 + - identifier: 0000-0002-9260-9117 scheme: orcid - affiliations: - name: Northwestern University family_name: Lorenzoni given_name: Guido + id: 0000-0001-6762-5118 identifiers: - - identifier: https://orcid.org/0000-0001-6762-5118 + - identifier: 0000-0001-6762-5118 scheme: orcid - affiliations: - name: NASA Jet Propulsion Laboratory - name: California Institute of Technology family_name: Hofmann given_name: Amy E. + id: 0000-0001-6869-5118 identifiers: - - identifier: https://orcid.org/0000-0001-6869-5118 + - identifier: 0000-0001-6869-5118 scheme: orcid - affiliations: - name: CERN family_name: Nessi given_name: Marzio + id: 0000-0001-7316-0118 identifiers: - - identifier: https://orcid.org/0000-0001-7316-0118 + - identifier: 0000-0001-7316-0118 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Prediger given_name: "Ang\xE9lica" + id: 0000-0001-7436-6118 identifiers: - - identifier: https://orcid.org/0000-0001-7436-6118 + - identifier: 0000-0001-7436-6118 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Draw given_name: Mazen + id: 0000-0002-0268-9118 identifiers: - - identifier: https://orcid.org/0000-0002-0268-9118 + - identifier: 0000-0002-0268-9118 scheme: orcid - affiliations: - name: TU Wien family_name: Nalbach given_name: Mathis + id: 0000-0002-1768-8118 identifiers: - - identifier: https://orcid.org/0000-0002-1768-8118 + - identifier: 0000-0002-1768-8118 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Pacheco given_name: Douglas + id: 0000-0002-3494-7118 identifiers: - - identifier: https://orcid.org/0000-0002-3494-7118 + - identifier: 0000-0002-3494-7118 scheme: orcid - affiliations: - name: Northwestern University family_name: Hu given_name: Xiaobing + id: 0000-0002-9233-8118 identifiers: - - identifier: https://orcid.org/0000-0002-9233-8118 + - identifier: 0000-0002-9233-8118 scheme: orcid - affiliations: - name: University of Colorado Boulder - name: Northwestern University family_name: MITTAL given_name: VIJAY + id: 0000-0001-9017-5119 identifiers: - - identifier: https://orcid.org/0000-0001-9017-5119 + - identifier: 0000-0001-9017-5119 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Neill given_name: James + id: 0000-0002-0466-1119 identifiers: - - identifier: https://orcid.org/0000-0002-0466-1119 + - identifier: 0000-0002-0466-1119 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: He given_name: An + id: 0000-0002-0525-0119 identifiers: - - identifier: https://orcid.org/0000-0002-0525-0119 + - identifier: 0000-0002-0525-0119 scheme: orcid - affiliations: - name: Northwestern University family_name: Dichtel given_name: William + id: 0000-0002-3635-6119 identifiers: - - identifier: https://orcid.org/0000-0002-3635-6119 + - identifier: 0000-0002-3635-6119 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Stecchi given_name: Alessandro + id: 0000-0002-7408-8119 identifiers: - - identifier: https://orcid.org/0000-0002-7408-8119 + - identifier: 0000-0002-7408-8119 scheme: orcid - affiliations: - name: Graz University of Technology - name: AVL List GmbH family_name: Scheipel given_name: Tobias + id: 0000-0003-0691-6119 identifiers: - - identifier: https://orcid.org/0000-0003-0691-6119 + - identifier: 0000-0003-0691-6119 scheme: orcid - affiliations: - name: University of Fribourg family_name: "Ter\xE1n" given_name: Luis + id: 0000-0002-0503-511X identifiers: - - identifier: https://orcid.org/0000-0002-0503-511X + - identifier: 0000-0002-0503-511X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Battistin given_name: Michele + id: 0000-0002-2403-311X identifiers: - - identifier: https://orcid.org/0000-0002-2403-311X + - identifier: 0000-0002-2403-311X scheme: orcid - affiliations: - name: University College Dublin - name: Graz University of Technology family_name: Chim given_name: Kwok Chi + id: 0000-0002-9065-511X identifiers: - - identifier: https://orcid.org/0000-0002-9065-511X + - identifier: 0000-0002-9065-511X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Widder given_name: Josef + id: 0000-0003-2795-611X identifiers: - - identifier: https://orcid.org/0000-0003-2795-611X + - identifier: 0000-0003-2795-611X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Archer given_name: Gregory + id: 0000-0003-3076-811X identifiers: - - identifier: https://orcid.org/0000-0003-3076-811X + - identifier: 0000-0003-3076-811X scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Villavicencio given_name: Fernando + id: 0000-0002-1216-4120 identifiers: - - identifier: https://orcid.org/0000-0002-1216-4120 + - identifier: 0000-0002-1216-4120 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hagan given_name: Cindy + id: 0000-0002-4576-7120 identifiers: - - identifier: https://orcid.org/0000-0002-4576-7120 + - identifier: 0000-0002-4576-7120 scheme: orcid - affiliations: - name: Northwestern University family_name: Smeets given_name: Paul + id: 0000-0002-7281-0120 identifiers: - - identifier: https://orcid.org/0000-0002-7281-0120 + - identifier: 0000-0002-7281-0120 scheme: orcid - affiliations: - name: California Institute of Technology family_name: shia given_name: rl + id: 0000-0003-1911-3120 identifiers: - - identifier: https://orcid.org/0000-0003-1911-3120 + - identifier: 0000-0003-1911-3120 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Columbia University family_name: Gang given_name: Oleg + id: 0000-0001-5534-3121 identifiers: - - identifier: https://orcid.org/0000-0001-5534-3121 + - identifier: 0000-0001-5534-3121 scheme: orcid - affiliations: - name: TU Wien family_name: Polly given_name: Denis + id: 0000-0002-6396-9121 identifiers: - - identifier: https://orcid.org/0000-0002-6396-9121 + - identifier: 0000-0002-6396-9121 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: De Graaf given_name: Myriam + id: 0000-0002-9216-1121 identifiers: - - identifier: https://orcid.org/0000-0002-9216-1121 + - identifier: 0000-0002-9216-1121 scheme: orcid - affiliations: - name: Northwestern University family_name: Yoshida given_name: Masaya + id: 0000-0003-2857-4121 identifiers: - - identifier: https://orcid.org/0000-0003-2857-4121 + - identifier: 0000-0003-2857-4121 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pandola given_name: Luciano + id: 0000-0003-2867-0121 identifiers: - - identifier: https://orcid.org/0000-0003-2867-0121 + - identifier: 0000-0003-2867-0121 scheme: orcid - affiliations: - name: TU Wien family_name: Czerny given_name: Bernhard + id: 0000-0001-8147-3122 identifiers: - - identifier: https://orcid.org/0000-0001-8147-3122 + - identifier: 0000-0001-8147-3122 scheme: orcid - affiliations: - name: INFN Sezione di Bologna @@ -5617,188 +6401,214 @@ - name: Universita degli Studi di Bologna family_name: Perazzini given_name: Stefano + id: 0000-0002-1862-7122 identifiers: - - identifier: https://orcid.org/0000-0002-1862-7122 + - identifier: 0000-0002-1862-7122 scheme: orcid - affiliations: - name: The Graduate University For Advanced Studies, SOKENDAI - name: National Institute of Informatics family_name: Inoue given_name: Katsumi + id: 0000-0002-2717-9122 identifiers: - - identifier: https://orcid.org/0000-0002-2717-9122 + - identifier: 0000-0002-2717-9122 scheme: orcid - affiliations: - name: TU Wien family_name: Zambanini given_name: Sebastian + id: 0000-0002-3459-8122 identifiers: - - identifier: https://orcid.org/0000-0002-3459-8122 + - identifier: 0000-0002-3459-8122 scheme: orcid - affiliations: - name: Northwestern University family_name: Kiser given_name: Patrick + id: 0000-0002-3868-7122 identifiers: - - identifier: https://orcid.org/0000-0002-3868-7122 + - identifier: 0000-0002-3868-7122 scheme: orcid - affiliations: - name: TU Wien family_name: Honic given_name: Meliha + id: 0000-0002-8466-7122 identifiers: - - identifier: https://orcid.org/0000-0002-8466-7122 + - identifier: 0000-0002-8466-7122 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hu given_name: Hefei + id: 0000-0003-1216-2122 identifiers: - - identifier: https://orcid.org/0000-0003-1216-2122 + - identifier: 0000-0003-1216-2122 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wallace given_name: Anya + id: 0000-0003-3123-2122 identifiers: - - identifier: https://orcid.org/0000-0003-3123-2122 + - identifier: 0000-0003-3123-2122 scheme: orcid - affiliations: - name: Northwestern University family_name: Chaudhuri given_name: Subhajyoti + id: 0000-0001-8297-1123 identifiers: - - identifier: https://orcid.org/0000-0001-8297-1123 + - identifier: 0000-0001-8297-1123 scheme: orcid - affiliations: - name: University of Fribourg family_name: Fromm given_name: Katharina M. + id: 0000-0002-1168-0123 identifiers: - - identifier: https://orcid.org/0000-0002-1168-0123 + - identifier: 0000-0002-1168-0123 scheme: orcid - affiliations: - name: California Institute of Technology family_name: "Osorio Rodr\xEDguez" given_name: Daniela + id: 0000-0001-6676-4124 identifiers: - - identifier: https://orcid.org/0000-0001-6676-4124 + - identifier: 0000-0001-6676-4124 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Motta given_name: Uberto + id: 0000-0002-3539-5124 identifiers: - - identifier: https://orcid.org/0000-0002-3539-5124 + - identifier: 0000-0002-3539-5124 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Winkler given_name: Dietmar + id: 0000-0002-4743-3124 identifiers: - - identifier: https://orcid.org/0000-0002-4743-3124 + - identifier: 0000-0002-4743-3124 scheme: orcid - affiliations: - name: University of Fribourg family_name: Khayati given_name: Mourad + id: 0000-0002-7512-7124 identifiers: - - identifier: https://orcid.org/0000-0002-7512-7124 + - identifier: 0000-0002-7512-7124 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Bogner-Strauss given_name: Juliane + id: 0000-0003-2459-0124 identifiers: - - identifier: https://orcid.org/0000-0003-2459-0124 + - identifier: 0000-0003-2459-0124 scheme: orcid - affiliations: - name: CERN family_name: Kessler given_name: Kevin Timo + id: 0000-0001-7156-7125 identifiers: - - identifier: https://orcid.org/0000-0001-7156-7125 + - identifier: 0000-0001-7156-7125 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Schwartz given_name: Morgan + id: 0000-0001-8131-9125 identifiers: - - identifier: https://orcid.org/0000-0001-8131-9125 + - identifier: 0000-0001-8131-9125 scheme: orcid - affiliations: - name: Northwestern University family_name: Perry given_name: Sylvia + id: 0000-0002-3435-3125 identifiers: - - identifier: https://orcid.org/0000-0002-3435-3125 + - identifier: 0000-0002-3435-3125 scheme: orcid - affiliations: - name: CERN family_name: Bakker given_name: Pepijn + id: 0000-0002-3479-1125 identifiers: - - identifier: https://orcid.org/0000-0002-3479-1125 + - identifier: 0000-0002-3479-1125 scheme: orcid - affiliations: - name: "Universit\xE0 degli Studi di Roma La Sapienza" - name: Graz University of Technology family_name: Di Cataldo given_name: Simone + id: 0000-0002-8902-0125 identifiers: - - identifier: https://orcid.org/0000-0002-8902-0125 + - identifier: 0000-0002-8902-0125 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: Fondazione Giorgio Cini family_name: Usula given_name: Nicola + id: 0000-0001-5531-7126 identifiers: - - identifier: https://orcid.org/0000-0001-5531-7126 + - identifier: 0000-0001-5531-7126 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: TU Wien family_name: Grafinger given_name: Manfred + id: 0000-0001-6596-1126 identifiers: - - identifier: https://orcid.org/0000-0001-6596-1126 + - identifier: 0000-0001-6596-1126 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Park given_name: Jungmin + id: 0000-0001-9380-7126 identifiers: - - identifier: https://orcid.org/0000-0001-9380-7126 + - identifier: 0000-0001-9380-7126 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Bauer given_name: Jochen + id: 0000-0001-9345-2126 identifiers: - - identifier: https://orcid.org/0000-0001-9345-2126 + - identifier: 0000-0001-9345-2126 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Gonzalez Lopez given_name: Jose Benito + id: 0000-0002-0816-7126 identifiers: - - identifier: https://orcid.org/0000-0002-0816-7126 + - identifier: 0000-0002-0816-7126 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Gozzelino given_name: Andrea + id: 0000-0002-6284-1126 identifiers: - - identifier: https://orcid.org/0000-0002-6284-1126 + - identifier: 0000-0002-6284-1126 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Kaitovic given_name: Jelena + id: 0000-0002-9820-3126 identifiers: - - identifier: https://orcid.org/0000-0002-9820-3126 + - identifier: 0000-0002-9820-3126 scheme: orcid - affiliations: - name: California Institute of Technology @@ -5806,22 +6616,25 @@ - name: Cleveland Clinic family_name: Bae given_name: Eunnyung + id: 0000-0003-0653-3126 identifiers: - - identifier: https://orcid.org/0000-0003-0653-3126 + - identifier: 0000-0003-0653-3126 scheme: orcid - affiliations: - name: Northwestern University family_name: Sherin given_name: Bruce + id: 0000-0003-3299-3126 identifiers: - - identifier: https://orcid.org/0000-0003-3299-3126 + - identifier: 0000-0003-3299-3126 scheme: orcid - affiliations: - name: Northwestern University family_name: Leonard given_name: Joshua + id: 0000-0003-4359-6126 identifiers: - - identifier: https://orcid.org/0000-0003-4359-6126 + - identifier: 0000-0003-4359-6126 scheme: orcid - affiliations: - name: Austrian Pavillion, Biennale Archittetura 2021 @@ -5829,31 +6642,35 @@ - name: GILT Collective and Magazine family_name: Hines given_name: Carmen + id: 0000-0002-5625-0127 identifiers: - - identifier: https://orcid.org/0000-0002-5625-0127 + - identifier: 0000-0002-5625-0127 scheme: orcid - affiliations: - name: HZDR Innovation GmbH - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Voitsekhivska given_name: Tetiana + id: 0000-0002-6406-6127 identifiers: - - identifier: https://orcid.org/0000-0002-6406-6127 + - identifier: 0000-0002-6406-6127 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Besau given_name: Florian + id: 0000-0002-6596-6127 identifiers: - - identifier: https://orcid.org/0000-0002-6596-6127 + - identifier: 0000-0002-6596-6127 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Aegerter given_name: Tanja + id: 0000-0002-6782-2127 identifiers: - - identifier: https://orcid.org/0000-0002-6782-2127 + - identifier: 0000-0002-6782-2127 scheme: orcid - affiliations: - name: University of Turin @@ -5861,15 +6678,17 @@ - name: CERN family_name: Maggiora given_name: Marco + id: 0000-0003-4143-9127 identifiers: - - identifier: https://orcid.org/0000-0003-4143-9127 + - identifier: 0000-0003-4143-9127 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: COLLAMATI given_name: FRANCESCO + id: 0000-0001-6341-0128 identifiers: - - identifier: https://orcid.org/0000-0001-6341-0128 + - identifier: 0000-0001-6341-0128 scheme: orcid - affiliations: - name: National Louis University @@ -5878,120 +6697,137 @@ - name: Universal Travel Systems LTD family_name: Tsarenko given_name: Anastasiia + id: 0000-0001-8826-3128 identifiers: - - identifier: https://orcid.org/0000-0001-8826-3128 + - identifier: 0000-0001-8826-3128 scheme: orcid - affiliations: - name: CERN family_name: Brischetto given_name: Ylenia + id: 0000-0002-0284-6128 identifiers: - - identifier: https://orcid.org/0000-0002-0284-6128 + - identifier: 0000-0002-0284-6128 scheme: orcid - affiliations: - name: CERN family_name: Garion given_name: Cedric + id: 0000-0002-3147-9128 identifiers: - - identifier: https://orcid.org/0000-0002-3147-9128 + - identifier: 0000-0002-3147-9128 scheme: orcid - affiliations: - name: Northwestern University family_name: Savage given_name: Ian + id: 0000-0002-3742-4128 identifiers: - - identifier: https://orcid.org/0000-0002-3742-4128 + - identifier: 0000-0002-3742-4128 scheme: orcid - affiliations: - name: CERN family_name: "M\xF8lholt" given_name: Torben Esmann + id: 0000-0002-4288-0128 identifiers: - - identifier: https://orcid.org/0000-0002-4288-0128 + - identifier: 0000-0002-4288-0128 scheme: orcid - affiliations: - name: CERN family_name: Kaplon given_name: Jan + id: 0000-0002-7528-7128 identifiers: - - identifier: https://orcid.org/0000-0002-7528-7128 + - identifier: 0000-0002-7528-7128 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: De Santis given_name: Antonio + id: 0000-0002-8613-8128 identifiers: - - identifier: https://orcid.org/0000-0002-8613-8128 + - identifier: 0000-0002-8613-8128 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Criado-Hidalgo given_name: Ernesto + id: 0000-0001-9086-9129 identifiers: - - identifier: https://orcid.org/0000-0001-9086-9129 + - identifier: 0000-0001-9086-9129 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Tas-Koehler given_name: Sibel + id: 0000-0001-9264-5129 identifiers: - - identifier: https://orcid.org/0000-0001-9264-5129 + - identifier: 0000-0001-9264-5129 scheme: orcid - affiliations: - name: University of Bamberg family_name: Volodina given_name: Anna + id: 0000-0002-2611-2129 identifiers: - - identifier: https://orcid.org/0000-0002-2611-2129 + - identifier: 0000-0002-2611-2129 scheme: orcid - affiliations: - name: CERN family_name: Amoedo given_name: Carolina + id: 0000-0002-4257-7129 identifiers: - - identifier: https://orcid.org/0000-0002-4257-7129 + - identifier: 0000-0002-4257-7129 scheme: orcid - affiliations: - name: Northwestern University family_name: Parent given_name: Lucas + id: 0000-0002-5963-5129 identifiers: - - identifier: https://orcid.org/0000-0002-5963-5129 + - identifier: 0000-0002-5963-5129 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Render given_name: Jan + id: 0000-0002-6534-9129 identifiers: - - identifier: https://orcid.org/0000-0002-6534-9129 + - identifier: 0000-0002-6534-9129 scheme: orcid - affiliations: - name: Northwestern University family_name: Ayon given_name: Navid Jubaer + id: 0000-0001-5546-912X identifiers: - - identifier: https://orcid.org/0000-0001-5546-912X + - identifier: 0000-0001-5546-912X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Corvino given_name: Michele + id: 0000-0002-2401-412X identifiers: - - identifier: https://orcid.org/0000-0002-2401-412X + - identifier: 0000-0002-2401-412X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Minutolo given_name: Lorenzo + id: 0000-0002-4876-112X identifiers: - - identifier: https://orcid.org/0000-0002-4876-112X + - identifier: 0000-0002-4876-112X scheme: orcid - affiliations: - name: Northwestern University family_name: Drown given_name: Bryon + id: 0000-0002-5631-512X identifiers: - - identifier: https://orcid.org/0000-0002-5631-512X + - identifier: 0000-0002-5631-512X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare @@ -5999,208 +6835,237 @@ Fermi", Rome, Italy family_name: Boi given_name: Stefano + id: 0000-0002-5942-812X identifiers: - - identifier: https://orcid.org/0000-0002-5942-812X + - identifier: 0000-0002-5942-812X scheme: orcid - affiliations: - name: Northwestern University family_name: Pankow given_name: Robert + id: 0000-0003-2856-912X identifiers: - - identifier: https://orcid.org/0000-0003-2856-912X + - identifier: 0000-0003-2856-912X scheme: orcid - affiliations: - name: Westlake University - name: Northwestern University family_name: Liu given_name: Zhichang + id: 0000-0003-3412-512X identifiers: - - identifier: https://orcid.org/0000-0003-3412-512X + - identifier: 0000-0003-3412-512X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Alsmeyer given_name: Gerold + id: 0000-0001-7843-4130 identifiers: - - identifier: https://orcid.org/0000-0001-7843-4130 + - identifier: 0000-0001-7843-4130 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Closier given_name: Joel + id: 0000-0002-0228-9130 identifiers: - - identifier: https://orcid.org/0000-0002-0228-9130 + - identifier: 0000-0002-0228-9130 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Shevchenko given_name: Natalia + id: 0000-0002-6177-2130 identifiers: - - identifier: https://orcid.org/0000-0002-6177-2130 + - identifier: 0000-0002-6177-2130 scheme: orcid - affiliations: - name: TU Wien family_name: Ramsebner given_name: Jasmine + id: 0000-0002-4154-8131 identifiers: - - identifier: https://orcid.org/0000-0002-4154-8131 + - identifier: 0000-0002-4154-8131 scheme: orcid - affiliations: - name: TU Wien family_name: "W\xF6rg\xF6tter" given_name: Andreas + id: 0000-0002-7588-7131 identifiers: - - identifier: https://orcid.org/0000-0002-7588-7131 + - identifier: 0000-0002-7588-7131 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "\xD6ZER" given_name: FATMA ECE + id: 0000-0002-8627-9131 identifiers: - - identifier: https://orcid.org/0000-0002-8627-9131 + - identifier: 0000-0002-8627-9131 scheme: orcid - affiliations: - name: The Graduate University for Advanced Studies, SOKENDAI - name: National Institute of Informatics family_name: Takefusa given_name: Atsuko + id: 0000-0003-0785-0131 identifiers: - - identifier: https://orcid.org/0000-0003-0785-0131 + - identifier: 0000-0003-0785-0131 scheme: orcid - affiliations: - name: University of Fribourg - name: Unidistance Suisse, Switzerland family_name: Samson given_name: Andrea + id: 0000-0001-6807-3132 identifiers: - - identifier: https://orcid.org/0000-0001-6807-3132 + - identifier: 0000-0001-6807-3132 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cabrera given_name: Maria + id: 0000-0001-7026-1132 identifiers: - - identifier: https://orcid.org/0000-0001-7026-1132 + - identifier: 0000-0001-7026-1132 scheme: orcid - affiliations: - name: University of Fribourg family_name: Pilo-Pais given_name: Mauricio + id: 0000-0001-9803-7132 identifiers: - - identifier: https://orcid.org/0000-0001-9803-7132 + - identifier: 0000-0001-9803-7132 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Schneider given_name: Michael + id: 0000-0001-9846-7132 identifiers: - - identifier: https://orcid.org/0000-0001-9846-7132 + - identifier: 0000-0001-9846-7132 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Tichy given_name: Robert + id: 0000-0002-8577-1132 identifiers: - - identifier: https://orcid.org/0000-0002-8577-1132 + - identifier: 0000-0002-8577-1132 scheme: orcid - affiliations: - name: TU Wien family_name: Waldner given_name: Manuela + id: 0000-0003-1387-5132 identifiers: - - identifier: https://orcid.org/0000-0003-1387-5132 + - identifier: 0000-0003-1387-5132 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Raudaschl given_name: Matthias + id: 0000-0001-6000-8133 identifiers: - - identifier: https://orcid.org/0000-0001-6000-8133 + - identifier: 0000-0001-6000-8133 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hou given_name: Thomas + id: 0000-0001-6287-1133 identifiers: - - identifier: https://orcid.org/0000-0001-6287-1133 + - identifier: 0000-0001-6287-1133 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Salter given_name: Gerard + id: 0000-0001-6426-0133 identifiers: - - identifier: https://orcid.org/0000-0001-6426-0133 + - identifier: 0000-0001-6426-0133 scheme: orcid - affiliations: - name: University of Bamberg family_name: Schlauderer given_name: Sebastian + id: 0000-0002-2118-1133 identifiers: - - identifier: https://orcid.org/0000-0002-2118-1133 + - identifier: 0000-0002-2118-1133 scheme: orcid - affiliations: - name: TU Wien family_name: Shabestani Monfared given_name: Ghazal + id: 0000-0002-2547-3133 identifiers: - - identifier: https://orcid.org/0000-0002-2547-3133 + - identifier: 0000-0002-2547-3133 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hummels given_name: Cameron + id: 0000-0002-3817-8133 identifiers: - - identifier: https://orcid.org/0000-0002-3817-8133 + - identifier: 0000-0002-3817-8133 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Allen given_name: Hannah M. + id: 0000-0002-4218-5133 identifiers: - - identifier: https://orcid.org/0000-0002-4218-5133 + - identifier: 0000-0002-4218-5133 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Ginzel given_name: Marco + id: 0000-0002-4439-1133 identifiers: - - identifier: https://orcid.org/0000-0002-4439-1133 + - identifier: 0000-0002-4439-1133 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kretzschmar given_name: Jerome + id: 0000-0001-5042-8134 identifiers: - - identifier: https://orcid.org/0000-0001-5042-8134 + - identifier: 0000-0001-5042-8134 scheme: orcid - affiliations: - name: Northwestern University family_name: Shen given_name: Bo + id: 0000-0001-8011-7134 identifiers: - - identifier: https://orcid.org/0000-0001-8011-7134 + - identifier: 0000-0001-8011-7134 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tu given_name: Zhoudunming + id: 0000-0001-8784-5134 identifiers: - - identifier: https://orcid.org/0000-0001-8784-5134 + - identifier: 0000-0001-8784-5134 scheme: orcid - affiliations: - name: Northwestern University - name: University of Illinois at Chicago family_name: Hollas given_name: Michael + id: 0000-0002-0797-3134 identifiers: - - identifier: https://orcid.org/0000-0002-0797-3134 + - identifier: 0000-0002-0797-3134 scheme: orcid - affiliations: - name: Northwestern University family_name: Kouchaki given_name: Maryam + id: 0000-0003-1292-5134 identifiers: - - identifier: https://orcid.org/0000-0003-1292-5134 + - identifier: 0000-0003-1292-5134 scheme: orcid - affiliations: - name: "Fachhochschule Wiener Neustadt f\xFCr Wirtschaft und Technik GmbH - Campus\ @@ -6208,156 +7073,178 @@ - name: TU Wien family_name: Kranzl given_name: Lukas + id: 0000-0003-3350-7134 identifiers: - - identifier: https://orcid.org/0000-0003-3350-7134 + - identifier: 0000-0003-3350-7134 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Moncada given_name: Jorge + id: 0000-0001-9960-4135 identifiers: - - identifier: https://orcid.org/0000-0001-9960-4135 + - identifier: 0000-0001-9960-4135 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Mahjoory given_name: Keyvan + id: 0000-0002-0386-1135 identifiers: - - identifier: https://orcid.org/0000-0002-0386-1135 + - identifier: 0000-0002-0386-1135 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Rudolph given_name: Martin + id: 0000-0002-5374-6135 identifiers: - - identifier: https://orcid.org/0000-0002-5374-6135 + - identifier: 0000-0002-5374-6135 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Roode-Gutzmer given_name: Quirina + id: 0000-0002-6889-2135 identifiers: - - identifier: https://orcid.org/0000-0002-6889-2135 + - identifier: 0000-0002-6889-2135 scheme: orcid - affiliations: - name: Northwestern University family_name: Guo given_name: Hexia + id: 0000-0002-7904-9135 identifiers: - - identifier: https://orcid.org/0000-0002-7904-9135 + - identifier: 0000-0002-7904-9135 scheme: orcid - affiliations: - name: TU Wien family_name: Mitteregger given_name: Mathias + id: 0000-0002-9836-2135 identifiers: - - identifier: https://orcid.org/0000-0002-9836-2135 + - identifier: 0000-0002-9836-2135 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: "Universit\xE4t Z\xFCrich" family_name: Neuhold given_name: David + id: 0000-0001-5016-9136 identifiers: - - identifier: https://orcid.org/0000-0001-5016-9136 + - identifier: 0000-0001-5016-9136 scheme: orcid - affiliations: - name: University of Fribourg family_name: Drasler given_name: Barbara + id: 0000-0001-5206-8136 identifiers: - - identifier: https://orcid.org/0000-0001-5206-8136 + - identifier: 0000-0001-5206-8136 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Rodriguez Alonso given_name: Manuel Jesus + id: 0000-0002-3845-1136 identifiers: - - identifier: https://orcid.org/0000-0002-3845-1136 + - identifier: 0000-0002-3845-1136 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Pinetz given_name: Thomas + id: 0000-0002-6100-2136 identifiers: - - identifier: https://orcid.org/0000-0002-6100-2136 + - identifier: 0000-0002-6100-2136 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kwon given_name: Gihan + id: 0000-0002-7963-2136 identifiers: - - identifier: https://orcid.org/0000-0002-7963-2136 + - identifier: 0000-0002-7963-2136 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kuc given_name: Agnieszka + id: 0000-0002-9458-4136 identifiers: - - identifier: https://orcid.org/0000-0002-9458-4136 + - identifier: 0000-0002-9458-4136 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Takayama given_name: Kenshi + id: 0000-0003-0156-1136 identifiers: - - identifier: https://orcid.org/0000-0003-0156-1136 + - identifier: 0000-0003-0156-1136 scheme: orcid - affiliations: - name: University of Fribourg family_name: Gontsarik given_name: Mark + id: 0000-0001-7613-5137 identifiers: - - identifier: https://orcid.org/0000-0001-7613-5137 + - identifier: 0000-0001-7613-5137 scheme: orcid - affiliations: - name: TU Wien family_name: Rasoulzadeh given_name: Shervin + id: 0000-0002-0019-0137 identifiers: - - identifier: https://orcid.org/0000-0002-0019-0137 + - identifier: 0000-0002-0019-0137 scheme: orcid - affiliations: - name: Northwestern University family_name: Montaser given_name: Rana + id: 0000-0002-5811-4137 identifiers: - - identifier: https://orcid.org/0000-0002-5811-4137 + - identifier: 0000-0002-5811-4137 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Maier given_name: Clemens + id: 0000-0003-2652-7137 identifiers: - - identifier: https://orcid.org/0000-0003-2652-7137 + - identifier: 0000-0003-2652-7137 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Schmid given_name: Silvan + id: 0000-0003-3778-7137 identifiers: - - identifier: https://orcid.org/0000-0003-3778-7137 + - identifier: 0000-0003-3778-7137 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Ghardashkhani given_name: Goulia + id: 0000-0003-4814-4137 identifiers: - - identifier: https://orcid.org/0000-0003-4814-4137 + - identifier: 0000-0003-4814-4137 scheme: orcid - affiliations: - name: California Institute of Technology family_name: McMahan given_name: Connor + id: 0000-0001-5024-6138 identifiers: - - identifier: https://orcid.org/0000-0001-5024-6138 + - identifier: 0000-0001-5024-6138 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Vivace given_name: Antonio + id: 0000-0002-1057-9138 identifiers: - - identifier: https://orcid.org/0000-0002-1057-9138 + - identifier: 0000-0002-1057-9138 scheme: orcid - affiliations: - name: Third Rock Ventures LLC @@ -6366,159 +7253,181 @@ - name: Constellation Pharmaceuticals family_name: Audia given_name: James + id: 0000-0003-2501-8138 identifiers: - - identifier: https://orcid.org/0000-0003-2501-8138 + - identifier: 0000-0003-2501-8138 scheme: orcid - affiliations: - name: University of Fribourg family_name: Portmann given_name: Edy + id: 0000-0001-6448-1139 identifiers: - - identifier: https://orcid.org/0000-0001-6448-1139 + - identifier: 0000-0001-6448-1139 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Chattopadhyay given_name: Sumanta + id: 0000-0001-9061-2139 identifiers: - - identifier: https://orcid.org/0000-0001-9061-2139 + - identifier: 0000-0001-9061-2139 scheme: orcid - affiliations: - name: Argonne National Lab - name: Northwestern University family_name: Paul given_name: Joshua + id: 0000-0002-1455-7139 identifiers: - - identifier: https://orcid.org/0000-0002-1455-7139 + - identifier: 0000-0002-1455-7139 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Peters given_name: Aileen + id: 0000-0002-5836-5139 identifiers: - - identifier: https://orcid.org/0000-0002-5836-5139 + - identifier: 0000-0002-5836-5139 scheme: orcid - affiliations: - name: Northwestern University family_name: Shah given_name: Phalguni + id: 0000-0003-1385-4139 identifiers: - - identifier: https://orcid.org/0000-0003-1385-4139 + - identifier: 0000-0003-1385-4139 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kitchen given_name: Sheila + id: 0000-0003-4402-8139 identifiers: - - identifier: https://orcid.org/0000-0003-4402-8139 + - identifier: 0000-0003-4402-8139 scheme: orcid - affiliations: - name: University of Fribourg family_name: Lardani given_name: Davide + id: 0000-0001-5733-013X identifiers: - - identifier: https://orcid.org/0000-0001-5733-013X + - identifier: 0000-0001-5733-013X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Palmai given_name: Tamas + id: 0000-0001-8911-313X identifiers: - - identifier: https://orcid.org/0000-0001-8911-313X + - identifier: 0000-0001-8911-313X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Ernst given_name: Simon + id: 0000-0002-4794-213X identifiers: - - identifier: https://orcid.org/0000-0002-4794-213X + - identifier: 0000-0002-4794-213X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Ellermann given_name: Katrin + id: 0000-0002-5683-013X identifiers: - - identifier: https://orcid.org/0000-0002-5683-013X + - identifier: 0000-0002-5683-013X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gandhi given_name: Vatsa + id: 0000-0002-6752-113X identifiers: - - identifier: https://orcid.org/0000-0002-6752-113X + - identifier: 0000-0002-6752-113X scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Guillaume given_name: Olivier + id: 0000-0003-0735-113X identifiers: - - identifier: https://orcid.org/0000-0003-0735-113X + - identifier: 0000-0003-0735-113X scheme: orcid - affiliations: - name: University of Fribourg family_name: Egger given_name: Boris + id: 0000-0001-8551-9140 identifiers: - - identifier: https://orcid.org/0000-0001-8551-9140 + - identifier: 0000-0001-8551-9140 scheme: orcid - affiliations: - name: Northwestern University - name: Northwestern University Feinberg School of Medicine family_name: Miller given_name: Lee + id: 0000-0001-8675-7140 identifiers: - - identifier: https://orcid.org/0000-0001-8675-7140 + - identifier: 0000-0001-8675-7140 scheme: orcid - affiliations: - name: University of Bamberg family_name: Schmitt given_name: Mirjam + id: 0000-0001-9130-2140 identifiers: - - identifier: https://orcid.org/0000-0001-9130-2140 + - identifier: 0000-0001-9130-2140 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Morina given_name: Nexhmedin + id: 0000-0002-2331-9140 identifiers: - - identifier: https://orcid.org/0000-0002-2331-9140 + - identifier: 0000-0002-2331-9140 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Henning given_name: Lena + id: 0000-0002-3035-9140 identifiers: - - identifier: https://orcid.org/0000-0002-3035-9140 + - identifier: 0000-0002-3035-9140 scheme: orcid - affiliations: - name: Northwestern University family_name: Dahal given_name: Yuba Raj + id: 0000-0002-5226-7140 identifiers: - - identifier: https://orcid.org/0000-0002-5226-7140 + - identifier: 0000-0002-5226-7140 scheme: orcid - affiliations: - name: Aspire to Inspire Behavioral Health and Addiction Services, LLC - name: Northwestern University family_name: Mika-Lude given_name: Kari + id: 0000-0002-6117-1140 identifiers: - - identifier: https://orcid.org/0000-0002-6117-1140 + - identifier: 0000-0002-6117-1140 scheme: orcid - affiliations: - name: TU Wien family_name: Astrauskas given_name: Ignas + id: 0000-0002-8173-8140 identifiers: - - identifier: https://orcid.org/0000-0002-8173-8140 + - identifier: 0000-0002-8173-8140 scheme: orcid - affiliations: - name: Northwestern University family_name: Hadavi given_name: Ahmad + id: 0000-0003-3136-0140 identifiers: - - identifier: https://orcid.org/0000-0003-3136-0140 + - identifier: 0000-0003-3136-0140 scheme: orcid - affiliations: - name: University of Southern Mississippi @@ -6526,36 +7435,41 @@ - name: Northwestern University family_name: Clemons given_name: Tristan + id: 0000-0001-8042-0141 identifiers: - - identifier: https://orcid.org/0000-0001-8042-0141 + - identifier: 0000-0001-8042-0141 scheme: orcid - affiliations: - name: Northwestern University family_name: Lee given_name: Changmin + id: 0000-0001-9676-4141 identifiers: - - identifier: https://orcid.org/0000-0001-9676-4141 + - identifier: 0000-0001-9676-4141 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Vnuchenko given_name: Anna + id: 0000-0002-1987-4141 identifiers: - - identifier: https://orcid.org/0000-0002-1987-4141 + - identifier: 0000-0002-1987-4141 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Buttschardt given_name: Tillmann + id: 0000-0002-2453-4141 identifiers: - - identifier: https://orcid.org/0000-0002-2453-4141 + - identifier: 0000-0002-2453-4141 scheme: orcid - affiliations: - name: TU Wien family_name: Pfeil given_name: Isabella + id: 0000-0002-7893-8141 identifiers: - - identifier: https://orcid.org/0000-0002-7893-8141 + - identifier: 0000-0002-7893-8141 scheme: orcid - affiliations: - name: CERN @@ -6563,1211 +7477,1381 @@ - name: Fermi National Accelerator Laboratory family_name: Rontsch given_name: Raoul + id: 0000-0002-8605-7141 identifiers: - - identifier: https://orcid.org/0000-0002-8605-7141 + - identifier: 0000-0002-8605-7141 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hayes given_name: Adam + id: 0000-0003-3739-5141 identifiers: - - identifier: https://orcid.org/0000-0003-3739-5141 + - identifier: 0000-0003-3739-5141 scheme: orcid - affiliations: - name: Northwestern University family_name: Meyer given_name: David + id: 0000-0002-0275-0142 identifiers: - - identifier: https://orcid.org/0000-0002-0275-0142 + - identifier: 0000-0002-0275-0142 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Holl\xE4nder" given_name: Olivia + id: 0000-0002-5088-3142 identifiers: - - identifier: https://orcid.org/0000-0002-5088-3142 + - identifier: 0000-0002-5088-3142 scheme: orcid - affiliations: - name: TU Wien family_name: Otto given_name: Andreas + id: 0000-0002-5642-5142 identifiers: - - identifier: https://orcid.org/0000-0002-5642-5142 + - identifier: 0000-0002-5642-5142 scheme: orcid - affiliations: - name: Northwestern University family_name: Cai given_name: Kang + id: 0000-0002-8883-0142 identifiers: - - identifier: https://orcid.org/0000-0002-8883-0142 + - identifier: 0000-0002-8883-0142 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Dorn given_name: Katharina + id: 0000-0001-5454-5143 identifiers: - - identifier: https://orcid.org/0000-0001-5454-5143 + - identifier: 0000-0001-5454-5143 scheme: orcid - affiliations: - name: University of Fribourg family_name: Serneels given_name: Vincent + id: 0000-0001-6922-9143 identifiers: - - identifier: https://orcid.org/0000-0001-6922-9143 + - identifier: 0000-0001-6922-9143 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: El Khechen given_name: Dima + id: 0000-0002-0453-0143 identifiers: - - identifier: https://orcid.org/0000-0002-0453-0143 + - identifier: 0000-0002-0453-0143 scheme: orcid - affiliations: - name: "Universit\xE0 degli Studi di Trieste" - name: Istituto Nazionale di Fisica Nucleare family_name: Martin given_name: Anna + id: 0000-0002-1333-0143 identifiers: - - identifier: https://orcid.org/0000-0002-1333-0143 + - identifier: 0000-0002-1333-0143 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Urton given_name: Karolina + id: 0000-0002-5912-8143 identifiers: - - identifier: https://orcid.org/0000-0002-5912-8143 + - identifier: 0000-0002-5912-8143 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Keller given_name: Fabian + id: 0000-0002-6537-6143 identifiers: - - identifier: https://orcid.org/0000-0002-6537-6143 + - identifier: 0000-0002-6537-6143 scheme: orcid - affiliations: - name: Northwestern University family_name: Paller given_name: Ken + id: 0000-0003-4415-4143 identifiers: - - identifier: https://orcid.org/0000-0003-4415-4143 + - identifier: 0000-0003-4415-4143 scheme: orcid - affiliations: - name: TU Wien - name: Budapest University of Technology and Economics family_name: "Kov\xE1cs" given_name: "\xC1d\xE1m" + id: 0000-0001-6132-7144 identifiers: - - identifier: https://orcid.org/0000-0001-6132-7144 + - identifier: 0000-0001-6132-7144 scheme: orcid - affiliations: - name: Northwestern University family_name: Nguyen given_name: Thao + id: 0000-0001-9802-3144 identifiers: - - identifier: https://orcid.org/0000-0001-9802-3144 + - identifier: 0000-0001-9802-3144 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: "Universidad Carlos III de Madrid Escuela Polit\xE9cnica Superior" family_name: Key given_name: "Ra\xFAl" + id: 0000-0002-0490-5144 identifiers: - - identifier: https://orcid.org/0000-0002-0490-5144 + - identifier: 0000-0002-0490-5144 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Winter given_name: Simon + id: 0000-0002-2715-4144 identifiers: - - identifier: https://orcid.org/0000-0002-2715-4144 + - identifier: 0000-0002-2715-4144 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Madsen given_name: Georg Kent Hellerup + id: 0000-0001-9844-9145 identifiers: - - identifier: https://orcid.org/0000-0001-9844-9145 + - identifier: 0000-0001-9844-9145 scheme: orcid - affiliations: - name: Northwestern University family_name: Burt given_name: Richard K + id: 0000-0002-0922-4145 identifiers: - - identifier: https://orcid.org/0000-0002-0922-4145 + - identifier: 0000-0002-0922-4145 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Sattelkow given_name: "J\xFCrgen" + id: 0000-0002-2767-6145 identifiers: - - identifier: https://orcid.org/0000-0002-2767-6145 + - identifier: 0000-0002-2767-6145 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Stelljes given_name: Matthias + id: 0000-0002-9331-5145 identifiers: - - identifier: https://orcid.org/0000-0002-9331-5145 + - identifier: 0000-0002-9331-5145 scheme: orcid - affiliations: - name: TU Wien family_name: Edlinger given_name: Stefan + id: 0000-0003-1138-4145 identifiers: - - identifier: https://orcid.org/0000-0003-1138-4145 + - identifier: 0000-0003-1138-4145 scheme: orcid - affiliations: - name: University of Fribourg family_name: Yesodha Subramanian given_name: Bibin + id: 0000-0003-1386-5145 identifiers: - - identifier: https://orcid.org/0000-0003-1386-5145 + - identifier: 0000-0003-1386-5145 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Morrell given_name: Thomas + id: 0000-0001-9266-5146 identifiers: - - identifier: https://orcid.org/0000-0001-9266-5146 + - identifier: 0000-0001-9266-5146 scheme: orcid - affiliations: - name: Northwestern University family_name: Gingrich given_name: Todd + id: 0000-0003-4617-7146 identifiers: - - identifier: https://orcid.org/0000-0003-4617-7146 + - identifier: 0000-0003-4617-7146 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Morlok given_name: Andreas + id: 0000-0001-6290-2147 identifiers: - - identifier: https://orcid.org/0000-0001-6290-2147 + - identifier: 0000-0001-6290-2147 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lal given_name: Ravi + id: 0000-0001-6943-4147 identifiers: - - identifier: https://orcid.org/0000-0001-6943-4147 + - identifier: 0000-0001-6943-4147 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Rentmeister given_name: Andrea + id: 0000-0002-3107-4147 identifiers: - - identifier: https://orcid.org/0000-0002-3107-4147 + - identifier: 0000-0002-3107-4147 scheme: orcid - affiliations: - name: Northwestern University family_name: Zajac given_name: Edward + id: 0000-0002-4453-7147 identifiers: - - identifier: https://orcid.org/0000-0002-4453-7147 + - identifier: 0000-0002-4453-7147 scheme: orcid - affiliations: - name: Tokyo Institute of Technology - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Tsushima given_name: Satoru + id: 0000-0002-4520-6147 identifiers: - - identifier: https://orcid.org/0000-0002-4520-6147 + - identifier: 0000-0002-4520-6147 scheme: orcid - affiliations: - name: TU Wien family_name: Rameshan given_name: Christoph + id: 0000-0002-6340-4147 identifiers: - - identifier: https://orcid.org/0000-0002-6340-4147 + - identifier: 0000-0002-6340-4147 scheme: orcid - affiliations: - name: TU Wien - name: Universita degli Studi di Udine family_name: Soldati given_name: Alfredo + id: 0000-0002-7515-7147 identifiers: - - identifier: https://orcid.org/0000-0002-7515-7147 + - identifier: 0000-0002-7515-7147 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Wahl given_name: Andreas + id: 0000-0003-2752-7147 identifiers: - - identifier: https://orcid.org/0000-0003-2752-7147 + - identifier: 0000-0003-2752-7147 scheme: orcid - affiliations: - name: TU Wien - name: Sigmund Freud University family_name: Salamon given_name: Gudrun + id: 0000-0003-4249-5147 identifiers: - - identifier: https://orcid.org/0000-0003-4249-5147 + - identifier: 0000-0003-4249-5147 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Mannel given_name: Eric + id: 0000-0001-9474-8148 identifiers: - - identifier: https://orcid.org/0000-0001-9474-8148 + - identifier: 0000-0001-9474-8148 scheme: orcid - affiliations: - name: Northwestern University family_name: Sai given_name: Hiroaki + id: 0000-0002-4268-2148 identifiers: - - identifier: https://orcid.org/0000-0002-4268-2148 + - identifier: 0000-0002-4268-2148 scheme: orcid - affiliations: - name: Northwestern University family_name: Khatri given_name: Shweta + id: 0000-0002-6047-7148 identifiers: - - identifier: https://orcid.org/0000-0002-6047-7148 + - identifier: 0000-0002-6047-7148 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhang given_name: Ashlee + id: 0000-0003-0265-7148 identifiers: - - identifier: https://orcid.org/0000-0003-0265-7148 + - identifier: 0000-0003-0265-7148 scheme: orcid - affiliations: - name: University of Fribourg family_name: Teufel given_name: Stephanie + id: 0000-0003-0427-3148 identifiers: - - identifier: https://orcid.org/0000-0003-0427-3148 + - identifier: 0000-0003-0427-3148 scheme: orcid - affiliations: - name: Northwestern University family_name: Ispa-Landa given_name: Simone + id: 0000-0001-8856-0149 identifiers: - - identifier: https://orcid.org/0000-0001-8856-0149 + - identifier: 0000-0001-8856-0149 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Steiniger given_name: Klaus + id: 0000-0001-8965-1149 identifiers: - - identifier: https://orcid.org/0000-0001-8965-1149 + - identifier: 0000-0001-8965-1149 scheme: orcid - affiliations: - name: California Institute of Technology - name: Shanxi University family_name: Qin given_name: Zhongzhong + id: 0000-0002-1592-8149 identifiers: - - identifier: https://orcid.org/0000-0002-1592-8149 + - identifier: 0000-0002-1592-8149 scheme: orcid - affiliations: - name: University of Geneva - name: CERN family_name: Mikulec given_name: Bettina + id: 0000-0002-5436-1149 identifiers: - - identifier: https://orcid.org/0000-0002-5436-1149 + - identifier: 0000-0002-5436-1149 scheme: orcid - affiliations: - name: TU Wien family_name: Groeller given_name: Eduard + id: 0000-0002-8569-4149 identifiers: - - identifier: https://orcid.org/0000-0002-8569-4149 + - identifier: 0000-0002-8569-4149 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Kraushofer given_name: Florian + id: 0000-0003-1314-9149 identifiers: - - identifier: https://orcid.org/0000-0003-1314-9149 + - identifier: 0000-0003-1314-9149 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Keller given_name: Andrew + id: 0000-0003-3030-1149 identifiers: - - identifier: https://orcid.org/0000-0003-3030-1149 + - identifier: 0000-0003-3030-1149 scheme: orcid - affiliations: - name: University of Bamberg family_name: Hsu given_name: Chen-Hao + id: 0000-0002-0182-914X identifiers: - - identifier: https://orcid.org/0000-0002-0182-914X + - identifier: 0000-0002-0182-914X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Konjer given_name: Mara Verena + id: 0000-0002-2276-914X identifiers: - - identifier: https://orcid.org/0000-0002-2276-914X + - identifier: 0000-0002-2276-914X scheme: orcid - affiliations: - name: MediClin Robert Janker Klinik - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Haddad given_name: Hathal + id: 0000-0002-5413-814X identifiers: - - identifier: https://orcid.org/0000-0002-5413-814X + - identifier: 0000-0002-5413-814X scheme: orcid - affiliations: - name: Northwestern University family_name: Qin given_name: Shiyi + id: 0000-0002-8811-914X identifiers: - - identifier: https://orcid.org/0000-0002-8811-914X + - identifier: 0000-0002-8811-914X scheme: orcid - affiliations: - name: TU Wien family_name: Taupin given_name: Mathieu + id: 0000-0003-1770-914X identifiers: - - identifier: https://orcid.org/0000-0003-1770-914X + - identifier: 0000-0003-1770-914X scheme: orcid - affiliations: - name: Northwestern University family_name: Sharma given_name: Isha + id: 0000-0003-3936-914X identifiers: - - identifier: https://orcid.org/0000-0003-3936-914X + - identifier: 0000-0003-3936-914X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Meng given_name: Xing + id: 0000-0001-6154-9150 identifiers: - - identifier: https://orcid.org/0000-0001-6154-9150 + - identifier: 0000-0001-6154-9150 scheme: orcid - affiliations: - name: TU Wien family_name: Vignolle given_name: Gabriel Alexander + id: 0000-0002-1369-5150 identifiers: - - identifier: https://orcid.org/0000-0002-1369-5150 + - identifier: 0000-0002-1369-5150 scheme: orcid - affiliations: - name: University of Bamberg - name: Leibniz Institute for Educational Trajectories family_name: "A\xDFmann" given_name: Christian + id: 0000-0002-4827-3150 identifiers: - - identifier: https://orcid.org/0000-0002-4827-3150 + - identifier: 0000-0002-4827-3150 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Hatab given_name: Ziad + id: 0000-0002-5667-9150 identifiers: - - identifier: https://orcid.org/0000-0002-5667-9150 + - identifier: 0000-0002-5667-9150 scheme: orcid - affiliations: - name: Northwestern University family_name: Garton given_name: Scott + id: 0000-0003-1502-6150 identifiers: - - identifier: https://orcid.org/0000-0003-1502-6150 + - identifier: 0000-0003-1502-6150 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Ruede given_name: Alexander + id: 0000-0003-2294-7150 identifiers: - - identifier: https://orcid.org/0000-0003-2294-7150 + - identifier: 0000-0003-2294-7150 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: "Gesellschaft f\xFCr Wissenschaftliche Datenverarbeitung mbH" family_name: Kaklamanos given_name: Georgios + id: 0000-0003-3854-3150 identifiers: - - identifier: https://orcid.org/0000-0003-3854-3150 + - identifier: 0000-0003-3854-3150 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Schneuwly Purdie given_name: Mallory + id: 0000-0003-4769-3150 identifiers: - - identifier: https://orcid.org/0000-0003-4769-3150 + - identifier: 0000-0003-4769-3150 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: "Otto-Friedrich-Universit\xE4t Bamberg Fakult\xE4t Humanwissenschaften" family_name: Seiferth given_name: Caroline + id: 0000-0001-7534-6151 identifiers: - - identifier: https://orcid.org/0000-0001-7534-6151 + - identifier: 0000-0001-7534-6151 scheme: orcid - affiliations: - name: Northwestern University family_name: Edgerly given_name: Stephanie + id: 0000-0002-2934-0151 identifiers: - - identifier: https://orcid.org/0000-0002-2934-0151 + - identifier: 0000-0002-2934-0151 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Finocchiaro given_name: Giuseppe + id: 0000-0002-3936-2151 identifiers: - - identifier: https://orcid.org/0000-0002-3936-2151 + - identifier: 0000-0002-3936-2151 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Meschi given_name: Emilio + id: 0000-0003-4502-6151 identifiers: - - identifier: https://orcid.org/0000-0003-4502-6151 + - identifier: 0000-0003-4502-6151 scheme: orcid - affiliations: - name: Northwestern University family_name: Kang given_name: Raymond + id: 0000-0001-7762-8152 identifiers: - - identifier: https://orcid.org/0000-0001-7762-8152 + - identifier: 0000-0001-7762-8152 scheme: orcid - affiliations: - name: Northwestern University - name: Hohai University family_name: Lu given_name: Zhiyong + id: 0000-0001-8263-8152 identifiers: - - identifier: https://orcid.org/0000-0001-8263-8152 + - identifier: 0000-0001-8263-8152 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Hache given_name: Toni + id: 0000-0001-8245-5153 identifiers: - - identifier: https://orcid.org/0000-0001-8245-5153 + - identifier: 0000-0001-8245-5153 scheme: orcid - affiliations: - name: Northwestern University family_name: Shepard given_name: Cassandra + id: 0000-0002-1137-5153 identifiers: - - identifier: https://orcid.org/0000-0002-1137-5153 + - identifier: 0000-0002-1137-5153 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kim given_name: Jaejoong + id: 0000-0002-2666-5153 identifiers: - - identifier: https://orcid.org/0000-0002-2666-5153 + - identifier: 0000-0002-2666-5153 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Crameri given_name: Fabrizio Emanuele + id: 0000-0002-4425-7153 identifiers: - - identifier: https://orcid.org/0000-0002-4425-7153 + - identifier: 0000-0002-4425-7153 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Haggerty given_name: John + id: 0000-0002-4806-3153 identifiers: - - identifier: https://orcid.org/0000-0002-4806-3153 + - identifier: 0000-0002-4806-3153 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Korneck given_name: Milena + id: 0000-0002-6106-5153 identifiers: - - identifier: https://orcid.org/0000-0002-6106-5153 + - identifier: 0000-0002-6106-5153 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Windholz given_name: Laurentius + id: 0000-0001-6078-6154 identifiers: - - identifier: https://orcid.org/0000-0001-6078-6154 + - identifier: 0000-0001-6078-6154 scheme: orcid - affiliations: - name: University of Fribourg family_name: Zhou given_name: Jianwen + id: 0000-0001-6729-1154 identifiers: - - identifier: https://orcid.org/0000-0001-6729-1154 + - identifier: 0000-0001-6729-1154 scheme: orcid - affiliations: - name: University of Fribourg family_name: Blanchoud given_name: Simon + id: 0000-0001-6903-5154 identifiers: - - identifier: https://orcid.org/0000-0001-6903-5154 + - identifier: 0000-0001-6903-5154 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chan given_name: David + id: 0000-0002-0191-2154 identifiers: - - identifier: https://orcid.org/0000-0002-0191-2154 + - identifier: 0000-0002-0191-2154 scheme: orcid - affiliations: - name: California Institute of Technology family_name: ewald given_name: shawn + id: 0000-0002-1567-9154 identifiers: - - identifier: https://orcid.org/0000-0002-1567-9154 + - identifier: 0000-0002-1567-9154 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Bandemer given_name: Jan + id: 0000-0002-2524-4154 identifiers: - - identifier: https://orcid.org/0000-0002-2524-4154 + - identifier: 0000-0002-2524-4154 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Pixa given_name: Nils Henrik + id: 0000-0002-4269-3154 identifiers: - - identifier: https://orcid.org/0000-0002-4269-3154 + - identifier: 0000-0002-4269-3154 scheme: orcid - affiliations: - name: Northwestern University family_name: Crombie given_name: Timothy + id: 0000-0002-5645-4154 identifiers: - - identifier: https://orcid.org/0000-0002-5645-4154 + - identifier: 0000-0002-5645-4154 scheme: orcid - affiliations: - name: University of Bamberg family_name: Overhage given_name: Sven + id: 0000-0002-6061-3154 identifiers: - - identifier: https://orcid.org/0000-0002-6061-3154 + - identifier: 0000-0002-6061-3154 scheme: orcid - affiliations: - name: Northwestern University family_name: Bozza given_name: Thomas + id: 0000-0002-6574-8154 identifiers: - - identifier: https://orcid.org/0000-0002-6574-8154 + - identifier: 0000-0002-6574-8154 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Truttmann given_name: Vera + id: 0000-0002-9266-6154 identifiers: - - identifier: https://orcid.org/0000-0002-9266-6154 + - identifier: 0000-0002-9266-6154 scheme: orcid - affiliations: - name: Northwestern University family_name: Ewan given_name: John + id: 0000-0002-9470-9154 identifiers: - - identifier: https://orcid.org/0000-0002-9470-9154 + - identifier: 0000-0002-9470-9154 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Lombardi given_name: Paolo + id: 0000-0003-0853-3154 identifiers: - - identifier: https://orcid.org/0000-0003-0853-3154 + - identifier: 0000-0003-0853-3154 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Bern family_name: Potenza given_name: Duilio Michele + id: 0000-0003-2442-9154 identifiers: - - identifier: https://orcid.org/0000-0003-2442-9154 + - identifier: 0000-0003-2442-9154 scheme: orcid - affiliations: - name: Northwestern University family_name: Meade given_name: Thomas J. + id: 0000-0001-6202-1155 identifiers: - - identifier: https://orcid.org/0000-0001-6202-1155 + - identifier: 0000-0001-6202-1155 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Schreiner given_name: Till + id: 0000-0002-4217-9155 identifiers: - - identifier: https://orcid.org/0000-0002-4217-9155 + - identifier: 0000-0002-4217-9155 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Henkel given_name: Thomas + id: 0000-0002-7925-4155 identifiers: - - identifier: https://orcid.org/0000-0002-7925-4155 + - identifier: 0000-0002-7925-4155 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Dietel given_name: Fanny Alexandra + id: 0000-0002-9911-6155 identifiers: - - identifier: https://orcid.org/0000-0002-9911-6155 + - identifier: 0000-0002-9911-6155 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nguyen given_name: Kien + id: 0000-0001-5761-3156 identifiers: - - identifier: https://orcid.org/0000-0001-5761-3156 + - identifier: 0000-0001-5761-3156 scheme: orcid - affiliations: - name: University of Bamberg family_name: Gehring given_name: Thomas + id: 0000-0001-6284-2156 identifiers: - - identifier: https://orcid.org/0000-0001-6284-2156 + - identifier: 0000-0001-6284-2156 scheme: orcid - affiliations: - name: CERN family_name: Arduini given_name: Gianluigi + id: 0000-0002-5790-5156 identifiers: - - identifier: https://orcid.org/0000-0002-5790-5156 + - identifier: 0000-0002-5790-5156 scheme: orcid - affiliations: - name: TU Wien family_name: Thanheiser given_name: Stefan + id: 0000-0003-2765-1156 identifiers: - - identifier: https://orcid.org/0000-0003-2765-1156 + - identifier: 0000-0003-2765-1156 scheme: orcid - affiliations: - name: TU Wien - name: Institute of High Performance Computing family_name: Genest given_name: Alexander + id: 0000-0003-3968-7156 identifiers: - - identifier: https://orcid.org/0000-0003-3968-7156 + - identifier: 0000-0003-3968-7156 scheme: orcid - affiliations: - name: Northwestern University family_name: Press given_name: David + id: 0000-0003-3898-3156 identifiers: - - identifier: https://orcid.org/0000-0003-3898-3156 + - identifier: 0000-0003-3898-3156 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Michalakis given_name: Spyridon + id: 0000-0003-4963-1156 identifiers: - - identifier: https://orcid.org/0000-0003-4963-1156 + - identifier: 0000-0003-4963-1156 scheme: orcid - affiliations: - name: University of Bamberg family_name: Fuchs given_name: Stephan + id: 0000-0002-9156-8157 identifiers: - - identifier: https://orcid.org/0000-0002-9156-8157 + - identifier: 0000-0002-9156-8157 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mayalu given_name: Michaelle + id: 0000-0002-9678-0157 identifiers: - - identifier: https://orcid.org/0000-0002-9678-0157 + - identifier: 0000-0002-9678-0157 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Datlinger given_name: Christoph + id: 0000-0003-1535-5157 identifiers: - - identifier: https://orcid.org/0000-0003-1535-5157 + - identifier: 0000-0003-1535-5157 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Deinert given_name: Jan-Christoph + id: 0000-0001-6211-0158 identifiers: - - identifier: https://orcid.org/0000-0001-6211-0158 + - identifier: 0000-0001-6211-0158 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Grills given_name: David + id: 0000-0001-8349-9158 identifiers: - - identifier: https://orcid.org/0000-0001-8349-9158 + - identifier: 0000-0001-8349-9158 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Steinbrink given_name: Kerstin + id: 0000-0002-0500-2158 identifiers: - - identifier: https://orcid.org/0000-0002-0500-2158 + - identifier: 0000-0002-0500-2158 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Guareschi given_name: Matteo Michele + id: 0000-0002-5197-3158 identifiers: - - identifier: https://orcid.org/0000-0002-5197-3158 + - identifier: 0000-0002-5197-3158 scheme: orcid - affiliations: - name: Northwestern University family_name: Minkowicz given_name: Samuel + id: 0000-0003-1555-1158 identifiers: - - identifier: https://orcid.org/0000-0003-1555-1158 + - identifier: 0000-0003-1555-1158 scheme: orcid - affiliations: - name: Northwestern University family_name: Islamoglu given_name: Timur + id: 0000-0003-3688-9158 identifiers: - - identifier: https://orcid.org/0000-0003-3688-9158 + - identifier: 0000-0003-3688-9158 scheme: orcid - affiliations: - name: University of Fribourg family_name: Maitra given_name: Julian + id: 0000-0003-3989-5158 identifiers: - - identifier: https://orcid.org/0000-0003-3989-5158 + - identifier: 0000-0003-3989-5158 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Brun\xDFen" given_name: Alicia + id: 0000-0001-8993-1159 identifiers: - - identifier: https://orcid.org/0000-0001-8993-1159 + - identifier: 0000-0001-8993-1159 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Joshi given_name: Piyush + id: 0000-0002-3087-7159 identifiers: - - identifier: https://orcid.org/0000-0002-3087-7159 + - identifier: 0000-0002-3087-7159 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Chen + id: 0000-0002-3579-0159 identifiers: - - identifier: https://orcid.org/0000-0002-3579-0159 + - identifier: 0000-0002-3579-0159 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cooper given_name: Matthew + id: 0000-0002-5868-5159 identifiers: - - identifier: https://orcid.org/0000-0002-5868-5159 + - identifier: 0000-0002-5868-5159 scheme: orcid - affiliations: - name: Northwestern University family_name: Peres Guimaraes given_name: Julia + id: 0000-0002-9206-6159 identifiers: - - identifier: https://orcid.org/0000-0002-9206-6159 + - identifier: 0000-0002-9206-6159 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Kirchner given_name: Karl + id: 0000-0003-0872-6159 identifiers: - - identifier: https://orcid.org/0000-0003-0872-6159 + - identifier: 0000-0003-0872-6159 scheme: orcid - affiliations: - name: Northwestern University family_name: Vieira given_name: Rodolfo + id: 0000-0001-8516-815X identifiers: - - identifier: https://orcid.org/0000-0001-8516-815X + - identifier: 0000-0001-8516-815X scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Mizuchi given_name: Yoshiaki + id: 0000-0002-2830-815X identifiers: - - identifier: https://orcid.org/0000-0002-2830-815X + - identifier: 0000-0002-2830-815X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Zonta given_name: Francesco + id: 0000-0002-3849-315X identifiers: - - identifier: https://orcid.org/0000-0002-3849-315X + - identifier: 0000-0002-3849-315X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Selgrad given_name: Peter + id: 0000-0002-9018-715X identifiers: - - identifier: https://orcid.org/0000-0002-9018-715X + - identifier: 0000-0002-9018-715X scheme: orcid - affiliations: - name: CERN family_name: Queitsch-Maitland given_name: Michaela + id: 0000-0003-4643-515X identifiers: - - identifier: https://orcid.org/0000-0003-4643-515X + - identifier: 0000-0003-4643-515X scheme: orcid - affiliations: - name: Northwestern University family_name: Mohan given_name: Sandesh + id: 0000-0003-4694-515X identifiers: - - identifier: https://orcid.org/0000-0003-4694-515X + - identifier: 0000-0003-4694-515X scheme: orcid - affiliations: - name: Northwestern University family_name: Hunter given_name: Andrew + id: 0000-0001-7621-1160 identifiers: - - identifier: https://orcid.org/0000-0001-7621-1160 + - identifier: 0000-0001-7621-1160 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Tan given_name: Chieh-Hsiang + id: 0000-0002-5432-0160 identifiers: - - identifier: https://orcid.org/0000-0002-5432-0160 + - identifier: 0000-0002-5432-0160 scheme: orcid - affiliations: - name: National Institute for Nuclear Physics family_name: Ruberto given_name: Chiara + id: 0000-0003-0321-7160 identifiers: - - identifier: https://orcid.org/0000-0003-0321-7160 + - identifier: 0000-0003-0321-7160 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Schichler given_name: Uwe + id: 0000-0003-2246-9160 identifiers: - - identifier: https://orcid.org/0000-0003-2246-9160 + - identifier: 0000-0003-2246-9160 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kutz given_name: Dieter + id: 0000-0003-3264-0160 identifiers: - - identifier: https://orcid.org/0000-0003-3264-0160 + - identifier: 0000-0003-3264-0160 scheme: orcid - affiliations: - name: Northwestern University family_name: Leveton given_name: Jacob + id: 0000-0003-4376-1160 identifiers: - - identifier: https://orcid.org/0000-0003-4376-1160 + - identifier: 0000-0003-4376-1160 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Gallo given_name: Alejandro + id: 0000-0002-3744-4161 identifiers: - - identifier: https://orcid.org/0000-0002-3744-4161 + - identifier: 0000-0002-3744-4161 scheme: orcid - affiliations: - name: TU Wien family_name: Binder given_name: Stefan + id: 0000-0003-1121-0161 identifiers: - - identifier: https://orcid.org/0000-0003-1121-0161 + - identifier: 0000-0003-1121-0161 scheme: orcid - affiliations: - name: University of Fribourg family_name: CARBONNEL given_name: Samy + id: 0000-0003-2564-7161 identifiers: - - identifier: https://orcid.org/0000-0003-2564-7161 + - identifier: 0000-0003-2564-7161 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Schliep given_name: Klaus + id: 0000-0003-2941-0161 identifiers: - - identifier: https://orcid.org/0000-0003-2941-0161 + - identifier: 0000-0003-2941-0161 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kirby given_name: Evan + id: 0000-0001-6196-5162 identifiers: - - identifier: https://orcid.org/0000-0001-6196-5162 + - identifier: 0000-0001-6196-5162 scheme: orcid - affiliations: - name: TU Wien family_name: Geibinger given_name: Tobias + id: 0000-0002-0856-7162 identifiers: - - identifier: https://orcid.org/0000-0002-0856-7162 + - identifier: 0000-0002-0856-7162 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Lehner given_name: Erich + id: 0000-0002-6812-1162 identifiers: - - identifier: https://orcid.org/0000-0002-6812-1162 + - identifier: 0000-0002-6812-1162 scheme: orcid - affiliations: - name: CERN family_name: Monni given_name: Pier Francesco + id: 0000-0002-8154-5162 identifiers: - - identifier: https://orcid.org/0000-0002-8154-5162 + - identifier: 0000-0002-8154-5162 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Dudarev given_name: Alexey + id: 0000-0002-8713-8162 identifiers: - - identifier: https://orcid.org/0000-0002-8713-8162 + - identifier: 0000-0002-8713-8162 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hester given_name: Sarah + id: 0000-0003-2238-6162 identifiers: - - identifier: https://orcid.org/0000-0003-2238-6162 + - identifier: 0000-0003-2238-6162 scheme: orcid - affiliations: - name: California Institute of Technology - name: King Abdullah University of Science and Technology family_name: Cheng given_name: Wan + id: 0000-0003-3960-4162 identifiers: - - identifier: https://orcid.org/0000-0003-3960-4162 + - identifier: 0000-0003-3960-4162 scheme: orcid - affiliations: - name: Lurie Children's Hospital - name: Northwestern University family_name: Siebert given_name: Aisha + id: 0000-0001-6954-9163 identifiers: - - identifier: https://orcid.org/0000-0001-6954-9163 + - identifier: 0000-0001-6954-9163 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Trimmel given_name: Gregor + id: 0000-0001-8922-4163 identifiers: - - identifier: https://orcid.org/0000-0001-8922-4163 + - identifier: 0000-0001-8922-4163 scheme: orcid - affiliations: - name: TU Wien family_name: Giffinger given_name: Rudolf + id: 0000-0002-2414-9163 identifiers: - - identifier: https://orcid.org/0000-0002-2414-9163 + - identifier: 0000-0002-2414-9163 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Takeda given_name: Hideaki + id: 0000-0002-2909-7163 identifiers: - - identifier: https://orcid.org/0000-0002-2909-7163 + - identifier: 0000-0002-2909-7163 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Vielmetter given_name: Jost + id: 0000-0002-4314-7163 identifiers: - - identifier: https://orcid.org/0000-0002-4314-7163 + - identifier: 0000-0002-4314-7163 scheme: orcid - affiliations: - name: TU Wien family_name: Krampe given_name: Joerg + id: 0000-0002-7757-4163 identifiers: - - identifier: https://orcid.org/0000-0002-7757-4163 + - identifier: 0000-0002-7757-4163 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Pichler given_name: Markus + id: 0000-0002-8101-2163 identifiers: - - identifier: https://orcid.org/0000-0002-8101-2163 + - identifier: 0000-0002-8101-2163 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Giorgi given_name: Filippo Maria + id: 0000-0003-1589-2163 identifiers: - - identifier: https://orcid.org/0000-0003-1589-2163 + - identifier: 0000-0003-1589-2163 scheme: orcid - affiliations: - name: University of Bamberg family_name: Schreiber given_name: Laurentia + id: 0000-0002-0051-1164 identifiers: - - identifier: https://orcid.org/0000-0002-0051-1164 + - identifier: 0000-0002-0051-1164 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Aistleitner given_name: Christoph + id: 0000-0002-1460-6164 identifiers: - - identifier: https://orcid.org/0000-0002-1460-6164 + - identifier: 0000-0002-1460-6164 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bacher given_name: Sven + id: 0000-0001-5147-7165 identifiers: - - identifier: https://orcid.org/0000-0001-5147-7165 + - identifier: 0000-0001-5147-7165 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Henschel given_name: Jonas + id: 0000-0001-7073-1165 identifiers: - - identifier: https://orcid.org/0000-0001-7073-1165 + - identifier: 0000-0001-7073-1165 scheme: orcid - affiliations: - name: TU Wien family_name: Klimashin given_name: Fedor F. + id: 0000-0002-2152-7165 identifiers: - - identifier: https://orcid.org/0000-0002-2152-7165 + - identifier: 0000-0002-2152-7165 scheme: orcid - affiliations: - name: Northwestern University family_name: Alba given_name: Vasyl + id: 0000-0001-6534-6166 identifiers: - - identifier: https://orcid.org/0000-0001-6534-6166 + - identifier: 0000-0001-6534-6166 scheme: orcid - affiliations: - name: CERN family_name: Mulder given_name: Mick + id: 0000-0001-6867-8166 identifiers: - - identifier: https://orcid.org/0000-0001-6867-8166 + - identifier: 0000-0001-6867-8166 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Koehler given_name: Alexander + id: 0000-0001-9759-1166 identifiers: - - identifier: https://orcid.org/0000-0001-9759-1166 + - identifier: 0000-0001-9759-1166 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Giesecke given_name: Andre + id: 0000-0002-2009-3166 identifiers: - - identifier: https://orcid.org/0000-0002-2009-3166 + - identifier: 0000-0002-2009-3166 scheme: orcid - affiliations: - name: University of Fribourg family_name: Magno given_name: Cathryn + id: 0000-0002-6187-2166 identifiers: - - identifier: https://orcid.org/0000-0002-6187-2166 + - identifier: 0000-0002-6187-2166 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Thielmann given_name: Cornelia + id: 0000-0002-6283-2166 identifiers: - - identifier: https://orcid.org/0000-0002-6283-2166 + - identifier: 0000-0002-6283-2166 scheme: orcid - affiliations: - name: Northwestern University family_name: Shah given_name: Sahil + id: 0000-0002-7644-1166 identifiers: - - identifier: https://orcid.org/0000-0002-7644-1166 + - identifier: 0000-0002-7644-1166 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Yokoyama given_name: Shigetoshi + id: 0000-0003-0060-8166 identifiers: - - identifier: https://orcid.org/0000-0003-0060-8166 + - identifier: 0000-0003-0060-8166 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Raccanelli given_name: Alvise + id: 0000-0003-1447-9166 identifiers: - - identifier: https://orcid.org/0000-0003-1447-9166 + - identifier: 0000-0003-1447-9166 scheme: orcid - affiliations: - name: "Universit\xE0 del Salento" - name: Istituto Nazionale di Fisica Nucleare family_name: D'Amico given_name: Stefano + id: 0000-0003-2886-2166 identifiers: - - identifier: https://orcid.org/0000-0003-2886-2166 + - identifier: 0000-0003-2886-2166 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: HU given_name: Hongtao + id: 0000-0001-7563-6167 identifiers: - - identifier: https://orcid.org/0000-0001-7563-6167 + - identifier: 0000-0001-7563-6167 scheme: orcid - affiliations: - name: TU Wien family_name: Pavlova given_name: Alexandra + id: 0000-0002-1877-1167 identifiers: - - identifier: https://orcid.org/0000-0002-1877-1167 + - identifier: 0000-0002-1877-1167 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Herberichs given_name: Cornelia + id: 0000-0002-4831-3167 identifiers: - - identifier: https://orcid.org/0000-0002-4831-3167 + - identifier: 0000-0002-4831-3167 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Karavakis given_name: Edward + id: 0000-0002-5729-5167 identifiers: - - identifier: https://orcid.org/0000-0002-5729-5167 + - identifier: 0000-0002-5729-5167 scheme: orcid - affiliations: - name: Northwestern University family_name: Mani given_name: Madhav + id: 0000-0002-5812-4167 identifiers: - - identifier: https://orcid.org/0000-0002-5812-4167 + - identifier: 0000-0002-5812-4167 scheme: orcid - affiliations: - name: Northwestern University family_name: Baumgartner given_name: Daniel + id: 0000-0002-7210-2167 identifiers: - - identifier: https://orcid.org/0000-0002-7210-2167 + - identifier: 0000-0002-7210-2167 scheme: orcid - affiliations: - name: "Universit\xE4t Freiburg" family_name: Hasskarl given_name: Jens + id: 0000-0001-5796-8168 identifiers: - - identifier: https://orcid.org/0000-0001-5796-8168 + - identifier: 0000-0001-5796-8168 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schulte given_name: Johanna + id: 0000-0001-9795-1168 identifiers: - - identifier: https://orcid.org/0000-0001-9795-1168 + - identifier: 0000-0001-9795-1168 scheme: orcid - affiliations: - name: University of Fribourg family_name: Zhong given_name: Sailin + id: 0000-0002-1694-8168 identifiers: - - identifier: https://orcid.org/0000-0002-1694-8168 + - identifier: 0000-0002-1694-8168 scheme: orcid - affiliations: - name: Northwestern University family_name: Knutson given_name: Kristen + id: 0000-0002-2751-6168 identifiers: - - identifier: https://orcid.org/0000-0002-2751-6168 + - identifier: 0000-0002-2751-6168 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: lombardi given_name: augusto + id: 0000-0002-4044-6168 identifiers: - - identifier: https://orcid.org/0000-0002-4044-6168 + - identifier: 0000-0002-4044-6168 scheme: orcid - affiliations: - name: European Organization for Nuclear Research @@ -7776,226 +8860,258 @@ - name: AECOM Ltd family_name: Heitel given_name: Iria + id: 0000-0002-6710-4168 identifiers: - - identifier: https://orcid.org/0000-0002-6710-4168 + - identifier: 0000-0002-6710-4168 scheme: orcid - affiliations: - name: Northwestern University family_name: Palmer given_name: Liam + id: 0000-0003-0804-1168 identifiers: - - identifier: https://orcid.org/0000-0003-0804-1168 + - identifier: 0000-0003-0804-1168 scheme: orcid - affiliations: - name: Northwestern University family_name: Kanatzidis given_name: Mercouri + id: 0000-0003-2037-4168 identifiers: - - identifier: https://orcid.org/0000-0003-2037-4168 + - identifier: 0000-0003-2037-4168 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Morrison given_name: David + id: 0000-0003-2723-4168 identifiers: - - identifier: https://orcid.org/0000-0003-2723-4168 + - identifier: 0000-0003-2723-4168 scheme: orcid - affiliations: - name: Northwestern University family_name: Moffitt given_name: Ursula + id: 0000-0003-4790-5168 identifiers: - - identifier: https://orcid.org/0000-0003-4790-5168 + - identifier: 0000-0003-4790-5168 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Sonnabend given_name: Michael + id: 0000-0001-5373-3169 identifiers: - - identifier: https://orcid.org/0000-0001-5373-3169 + - identifier: 0000-0001-5373-3169 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shan given_name: Jun-Yi + id: 0000-0001-7665-2169 identifiers: - - identifier: https://orcid.org/0000-0001-7665-2169 + - identifier: 0000-0001-7665-2169 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Gottschall given_name: Tino + id: 0000-0002-4117-8169 identifiers: - - identifier: https://orcid.org/0000-0002-4117-8169 + - identifier: 0000-0002-4117-8169 scheme: orcid - affiliations: - name: Northwestern University family_name: Kniss given_name: Jason + id: 0000-0002-8813-6169 identifiers: - - identifier: https://orcid.org/0000-0002-8813-6169 + - identifier: 0000-0002-8813-6169 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Perez given_name: Aleida + id: 0000-0003-2508-0169 identifiers: - - identifier: https://orcid.org/0000-0003-2508-0169 + - identifier: 0000-0003-2508-0169 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Hlawacek given_name: Gregor + id: 0000-0001-7192-716X identifiers: - - identifier: https://orcid.org/0000-0001-7192-716X + - identifier: 0000-0001-7192-716X scheme: orcid - affiliations: - name: Northwestern University family_name: Hinrichs given_name: Thomas + id: 0000-0002-0368-516X identifiers: - - identifier: https://orcid.org/0000-0002-0368-516X + - identifier: 0000-0002-0368-516X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Fischer given_name: Wolfram + id: 0000-0001-9668-2170 identifiers: - - identifier: https://orcid.org/0000-0001-9668-2170 + - identifier: 0000-0001-9668-2170 scheme: orcid - affiliations: - name: CERN family_name: Hoch given_name: Michael + id: 0000-0002-8773-6170 identifiers: - - identifier: https://orcid.org/0000-0002-8773-6170 + - identifier: 0000-0002-8773-6170 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Gantner given_name: Franziska + id: 0000-0001-7161-4171 identifiers: - - identifier: https://orcid.org/0000-0001-7161-4171 + - identifier: 0000-0001-7161-4171 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Thomas given_name: Kevin + id: 0000-0002-3010-0171 identifiers: - - identifier: https://orcid.org/0000-0002-3010-0171 + - identifier: 0000-0002-3010-0171 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Hagedorn given_name: Thomas + id: 0000-0002-4612-9171 identifiers: - - identifier: https://orcid.org/0000-0002-4612-9171 + - identifier: 0000-0002-4612-9171 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Pashkin given_name: Alexej + id: 0000-0003-1309-6171 identifiers: - - identifier: https://orcid.org/0000-0003-1309-6171 + - identifier: 0000-0003-1309-6171 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Schwender given_name: Jorg + id: 0000-0003-1350-4171 identifiers: - - identifier: https://orcid.org/0000-0003-1350-4171 + - identifier: 0000-0003-1350-4171 scheme: orcid - affiliations: - name: Northwestern University family_name: Malthouse given_name: Edward + id: 0000-0001-7077-0172 identifiers: - - identifier: https://orcid.org/0000-0001-7077-0172 + - identifier: 0000-0001-7077-0172 scheme: orcid - affiliations: - name: Northwestern University family_name: Tahlyan given_name: Divyakant + id: 0000-0002-1129-6172 identifiers: - - identifier: https://orcid.org/0000-0002-1129-6172 + - identifier: 0000-0002-1129-6172 scheme: orcid - affiliations: - name: TU Wien family_name: Wernisch given_name: Diana + id: 0000-0002-4251-9172 identifiers: - - identifier: https://orcid.org/0000-0002-4251-9172 + - identifier: 0000-0002-4251-9172 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Huang given_name: Jin + id: 0000-0002-6261-6172 identifiers: - - identifier: https://orcid.org/0000-0002-6261-6172 + - identifier: 0000-0002-6261-6172 scheme: orcid - affiliations: - name: Northwestern University family_name: Botura Scariot given_name: "D\xE9bora" + id: 0000-0002-8681-0172 identifiers: - - identifier: https://orcid.org/0000-0002-8681-0172 + - identifier: 0000-0002-8681-0172 scheme: orcid - affiliations: - name: Northwestern University family_name: Manning given_name: Brittany + id: 0000-0002-8751-4172 identifiers: - - identifier: https://orcid.org/0000-0002-8751-4172 + - identifier: 0000-0002-8751-4172 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ripperger given_name: "J\xFCrgen" + id: 0000-0002-9345-5172 identifiers: - - identifier: https://orcid.org/0000-0002-9345-5172 + - identifier: 0000-0002-9345-5172 scheme: orcid - affiliations: - name: Northwestern University family_name: Braverman given_name: Anton + id: 0000-0003-4030-3172 identifiers: - - identifier: https://orcid.org/0000-0003-4030-3172 + - identifier: 0000-0003-4030-3172 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Bieberstein given_name: Klaus + id: 0000-0003-4221-0172 identifiers: - - identifier: https://orcid.org/0000-0003-4221-0172 + - identifier: 0000-0003-4221-0172 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Harris given_name: Alexander + id: 0000-0001-7712-4173 identifiers: - - identifier: https://orcid.org/0000-0001-7712-4173 + - identifier: 0000-0001-7712-4173 scheme: orcid - affiliations: - name: University of Fribourg family_name: zhang given_name: Lu + id: 0000-0002-2757-4173 identifiers: - - identifier: https://orcid.org/0000-0002-2757-4173 + - identifier: 0000-0002-2757-4173 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Maurer given_name: Jennifer + id: 0000-0002-4539-3173 identifiers: - - identifier: https://orcid.org/0000-0002-4539-3173 + - identifier: 0000-0002-4539-3173 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: HUANG given_name: Lei + id: 0000-0002-5645-5173 identifiers: - - identifier: https://orcid.org/0000-0002-5645-5173 + - identifier: 0000-0002-5645-5173 scheme: orcid - affiliations: - name: "Universit\xE4t Innsbruck" @@ -8003,151 +9119,172 @@ - name: Shiraz University family_name: Etemadi given_name: Mohammad + id: 0000-0003-2093-9173 identifiers: - - identifier: https://orcid.org/0000-0003-2093-9173 + - identifier: 0000-0003-2093-9173 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Amidani given_name: Lucia + id: 0000-0003-2234-4173 identifiers: - - identifier: https://orcid.org/0000-0003-2234-4173 + - identifier: 0000-0003-2234-4173 scheme: orcid - affiliations: - name: Northwestern University family_name: Acosta given_name: Juan Jobelle + id: 0000-0002-0015-6174 identifiers: - - identifier: https://orcid.org/0000-0002-0015-6174 + - identifier: 0000-0002-0015-6174 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Golwala given_name: Sunil + id: 0000-0002-1098-7174 identifiers: - - identifier: https://orcid.org/0000-0002-1098-7174 + - identifier: 0000-0002-1098-7174 scheme: orcid - affiliations: - name: Northwestern University family_name: Troy given_name: John + id: 0000-0002-2504-6174 identifiers: - - identifier: https://orcid.org/0000-0002-2504-6174 + - identifier: 0000-0002-2504-6174 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "K\xF6hler" given_name: Eva + id: 0000-0002-4025-4174 identifiers: - - identifier: https://orcid.org/0000-0002-4025-4174 + - identifier: 0000-0002-4025-4174 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Present given_name: Theodore + id: 0000-0002-4747-2174 identifiers: - - identifier: https://orcid.org/0000-0002-4747-2174 + - identifier: 0000-0002-4747-2174 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Yang + id: 0000-0002-4939-8174 identifiers: - - identifier: https://orcid.org/0000-0002-4939-8174 + - identifier: 0000-0002-4939-8174 scheme: orcid - affiliations: - name: TU Wien - name: SBA Research family_name: Tsepelakis given_name: Sotirios + id: 0000-0003-0644-4174 identifiers: - - identifier: https://orcid.org/0000-0003-0644-4174 + - identifier: 0000-0003-0644-4174 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: University of Bamberg family_name: Kristen given_name: Cornelia + id: 0000-0003-3426-9174 identifiers: - - identifier: https://orcid.org/0000-0003-3426-9174 + - identifier: 0000-0003-3426-9174 scheme: orcid - affiliations: - name: Northwestern University family_name: Compton given_name: Philip + id: 0000-0001-5212-7175 identifiers: - - identifier: https://orcid.org/0000-0001-5212-7175 + - identifier: 0000-0001-5212-7175 scheme: orcid - affiliations: - name: University of Fribourg family_name: Luggen given_name: Michael + id: 0000-0001-7914-3175 identifiers: - - identifier: https://orcid.org/0000-0001-7914-3175 + - identifier: 0000-0001-7914-3175 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kagawa given_name: Ai + id: 0000-0001-8339-6175 identifiers: - - identifier: https://orcid.org/0000-0001-8339-6175 + - identifier: 0000-0001-8339-6175 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Robisson given_name: Agathe + id: 0000-0002-2434-6175 identifiers: - - identifier: https://orcid.org/0000-0002-2434-6175 + - identifier: 0000-0002-2434-6175 scheme: orcid - affiliations: - name: Northwestern University - name: Northwestern Medicine family_name: Kern given_name: Robert + id: 0000-0002-8995-9175 identifiers: - - identifier: https://orcid.org/0000-0002-8995-9175 + - identifier: 0000-0002-8995-9175 scheme: orcid - affiliations: - name: Northwestern University family_name: Gharib given_name: Mennat + id: 0000-0002-9536-3175 identifiers: - - identifier: https://orcid.org/0000-0002-9536-3175 + - identifier: 0000-0002-9536-3175 scheme: orcid - affiliations: - name: University of Fribourg family_name: Wicky given_name: Jonas + id: 0000-0003-0435-4175 identifiers: - - identifier: https://orcid.org/0000-0003-0435-4175 + - identifier: 0000-0003-0435-4175 scheme: orcid - affiliations: - name: Northwestern University family_name: Rondinelli given_name: James + id: 0000-0003-0508-2175 identifiers: - - identifier: https://orcid.org/0000-0003-0508-2175 + - identifier: 0000-0003-0508-2175 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Renggli given_name: Christian + id: 0000-0001-8913-4176 identifiers: - - identifier: https://orcid.org/0000-0001-8913-4176 + - identifier: 0000-0001-8913-4176 scheme: orcid - affiliations: - name: California Institute of Technology family_name: McRose given_name: Darcy + id: 0000-0001-9637-7176 identifiers: - - identifier: https://orcid.org/0000-0001-9637-7176 + - identifier: 0000-0001-9637-7176 scheme: orcid - affiliations: - name: Northwestern University family_name: Garci given_name: Amine + id: 0000-0002-1273-6176 identifiers: - - identifier: https://orcid.org/0000-0002-1273-6176 + - identifier: 0000-0002-1273-6176 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare @@ -8155,481 +9292,548 @@ \ Civile e Industriale" family_name: Sciubba given_name: Adalberto + id: 0000-0002-3301-9176 identifiers: - - identifier: https://orcid.org/0000-0002-3301-9176 + - identifier: 0000-0002-3301-9176 scheme: orcid - affiliations: - name: Northwestern University family_name: "K\u0131ro\u011Flu" given_name: Fulya + id: 0000-0003-4412-2176 identifiers: - - identifier: https://orcid.org/0000-0003-4412-2176 + - identifier: 0000-0003-4412-2176 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "L\xF6ffler" given_name: Verena + id: 0000-0001-7878-9177 identifiers: - - identifier: https://orcid.org/0000-0001-7878-9177 + - identifier: 0000-0001-7878-9177 scheme: orcid - affiliations: - name: "University of M\xFCnster" - name: Studies in Communication and Media (SCM) family_name: Scheu given_name: Andreas + id: 0000-0001-9423-6177 identifiers: - - identifier: https://orcid.org/0000-0001-9423-6177 + - identifier: 0000-0001-9423-6177 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Jang given_name: Min Jee + id: 0000-0002-1536-7177 identifiers: - - identifier: https://orcid.org/0000-0002-1536-7177 + - identifier: 0000-0002-1536-7177 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Binder given_name: Annette + id: 0000-0002-4253-3177 identifiers: - - identifier: https://orcid.org/0000-0002-4253-3177 + - identifier: 0000-0002-4253-3177 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Streli given_name: Christina + id: 0000-0002-5141-3177 identifiers: - - identifier: https://orcid.org/0000-0002-5141-3177 + - identifier: 0000-0002-5141-3177 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Sharma given_name: Abhishek + id: 0000-0002-5211-7177 identifiers: - - identifier: https://orcid.org/0000-0002-5211-7177 + - identifier: 0000-0002-5211-7177 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Selberherr given_name: Siegfried + id: 0000-0002-5583-6177 identifiers: - - identifier: https://orcid.org/0000-0002-5583-6177 + - identifier: 0000-0002-5583-6177 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ames given_name: Aaron + id: 0000-0003-0848-3177 identifiers: - - identifier: https://orcid.org/0000-0003-0848-3177 + - identifier: 0000-0003-0848-3177 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Anzellotti given_name: Daniela + id: 0000-0003-2657-7177 identifiers: - - identifier: https://orcid.org/0000-0003-2657-7177 + - identifier: 0000-0003-2657-7177 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Orphan given_name: Victoria + id: 0000-0002-5374-6178 identifiers: - - identifier: https://orcid.org/0000-0002-5374-6178 + - identifier: 0000-0002-5374-6178 scheme: orcid - affiliations: - name: Northwestern University family_name: Xie given_name: Yingying + id: 0000-0002-7759-6178 identifiers: - - identifier: https://orcid.org/0000-0002-7759-6178 + - identifier: 0000-0002-7759-6178 scheme: orcid - affiliations: - name: TU Wien - name: TU Wien Vienna AT family_name: Krisch given_name: Astrid + id: 0000-0002-9720-4178 identifiers: - - identifier: https://orcid.org/0000-0002-9720-4178 + - identifier: 0000-0002-9720-4178 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Siegel given_name: Alexander + id: 0000-0003-3601-5178 identifiers: - - identifier: https://orcid.org/0000-0003-3601-5178 + - identifier: 0000-0003-3601-5178 scheme: orcid - affiliations: - name: Northwestern University family_name: LaBonne given_name: Carole + id: 0000-0001-6001-7179 identifiers: - - identifier: https://orcid.org/0000-0001-6001-7179 + - identifier: 0000-0001-6001-7179 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Littenberg given_name: Laurence + id: 0000-0001-8373-7179 identifiers: - - identifier: https://orcid.org/0000-0001-8373-7179 + - identifier: 0000-0001-8373-7179 scheme: orcid - affiliations: - name: TU Wien family_name: Filipov given_name: Velitchko + id: 0000-0001-9592-2179 identifiers: - - identifier: https://orcid.org/0000-0001-9592-2179 + - identifier: 0000-0001-9592-2179 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Oestmann given_name: Peter + id: 0000-0001-9703-9179 identifiers: - - identifier: https://orcid.org/0000-0001-9703-9179 + - identifier: 0000-0001-9703-9179 scheme: orcid - affiliations: - name: TU Wien family_name: Glaner given_name: Marcus Franz + id: 0000-0002-2351-6179 identifiers: - - identifier: https://orcid.org/0000-0002-2351-6179 + - identifier: 0000-0002-2351-6179 scheme: orcid - affiliations: - name: Northwestern University family_name: Lee given_name: Angela Y. + id: 0000-0002-3316-7179 identifiers: - - identifier: https://orcid.org/0000-0002-3316-7179 + - identifier: 0000-0002-3316-7179 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pavia given_name: Frank + id: 0000-0003-3627-0179 identifiers: - - identifier: https://orcid.org/0000-0003-3627-0179 + - identifier: 0000-0003-3627-0179 scheme: orcid - affiliations: - name: Northwestern University family_name: Codding given_name: Diane + id: 0000-0001-8107-317X identifiers: - - identifier: https://orcid.org/0000-0001-8107-317X + - identifier: 0000-0001-8107-317X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Koch given_name: Oliver + id: 0000-0001-9228-217X identifiers: - - identifier: https://orcid.org/0000-0001-9228-217X + - identifier: 0000-0001-9228-217X scheme: orcid - affiliations: - name: University of Fribourg family_name: Holzheu given_name: Anja + id: 0000-0002-2308-517X identifiers: - - identifier: https://orcid.org/0000-0002-2308-517X + - identifier: 0000-0002-2308-517X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Teofili given_name: Lorenzo + id: 0000-0002-3297-717X identifiers: - - identifier: https://orcid.org/0000-0002-3297-717X + - identifier: 0000-0002-3297-717X scheme: orcid - affiliations: - name: Northwestern University family_name: Sarkar given_name: Sumanta + id: 0000-0002-6303-617X identifiers: - - identifier: https://orcid.org/0000-0002-6303-617X + - identifier: 0000-0002-6303-617X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zheng given_name: Yang + id: 0000-0002-7656-617X identifiers: - - identifier: https://orcid.org/0000-0002-7656-617X + - identifier: 0000-0002-7656-617X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Mohn given_name: Peter + id: 0000-0003-2258-517X identifiers: - - identifier: https://orcid.org/0000-0003-2258-517X + - identifier: 0000-0003-2258-517X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Weber given_name: Patrick + id: 0000-0001-7892-4180 identifiers: - - identifier: https://orcid.org/0000-0001-7892-4180 + - identifier: 0000-0001-7892-4180 scheme: orcid - affiliations: - name: TU Wien family_name: "H\xF6lzl" given_name: Dominik + id: 0000-0001-8092-8180 identifiers: - - identifier: https://orcid.org/0000-0001-8092-8180 + - identifier: 0000-0001-8092-8180 scheme: orcid - affiliations: - name: Northwestern University family_name: White given_name: Stephen + id: 0000-0001-9489-5180 identifiers: - - identifier: https://orcid.org/0000-0001-9489-5180 + - identifier: 0000-0001-9489-5180 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Coles given_name: Amber + id: 0000-0002-1169-1180 identifiers: - - identifier: https://orcid.org/0000-0002-1169-1180 + - identifier: 0000-0002-1169-1180 scheme: orcid - affiliations: - name: Northwestern University family_name: Anderson given_name: Eric + id: 0000-0002-4981-7180 identifiers: - - identifier: https://orcid.org/0000-0002-4981-7180 + - identifier: 0000-0002-4981-7180 scheme: orcid - affiliations: - name: EPFL Ecole Polytechnique Federale de Lausanne - name: CERN family_name: Furci given_name: "Hern\xE1n" + id: 0000-0003-0595-4180 identifiers: - - identifier: https://orcid.org/0000-0003-0595-4180 + - identifier: 0000-0003-0595-4180 scheme: orcid - affiliations: - name: USC - name: University of Fribourg family_name: Link given_name: Vivian + id: 0000-0003-2677-1180 identifiers: - - identifier: https://orcid.org/0000-0003-2677-1180 + - identifier: 0000-0003-2677-1180 scheme: orcid - affiliations: - name: California Institute of Technology - name: Howard Hughes Medical Institute family_name: Zipursky given_name: Stephen + id: 0000-0001-5630-7181 identifiers: - - identifier: https://orcid.org/0000-0001-5630-7181 + - identifier: 0000-0001-5630-7181 scheme: orcid - affiliations: - name: TU Wien family_name: Gasteiger given_name: Emanuel + id: 0000-0001-6043-7181 identifiers: - - identifier: https://orcid.org/0000-0001-6043-7181 + - identifier: 0000-0001-6043-7181 scheme: orcid - affiliations: - name: TU Wien family_name: Parajka given_name: Juraj + id: 0000-0002-1177-5181 identifiers: - - identifier: https://orcid.org/0000-0002-1177-5181 + - identifier: 0000-0002-1177-5181 scheme: orcid - affiliations: - name: Deutsches Elektronen-Synchrotron - name: Istituto Nazionale di Fisica Nucleare family_name: Pierini given_name: Paolo + id: 0000-0002-3062-6181 identifiers: - - identifier: https://orcid.org/0000-0002-3062-6181 + - identifier: 0000-0002-3062-6181 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yui given_name: Mary + id: 0000-0002-3136-2181 identifiers: - - identifier: https://orcid.org/0000-0002-3136-2181 + - identifier: 0000-0002-3136-2181 scheme: orcid - affiliations: - name: Northwestern University family_name: Krekeler given_name: Brittany + id: 0000-0003-0469-9181 identifiers: - - identifier: https://orcid.org/0000-0003-0469-9181 + - identifier: 0000-0003-0469-9181 scheme: orcid - affiliations: - name: National Institute for Nuclear Physics family_name: Giordanengo given_name: Simona + id: 0000-0001-6347-1182 identifiers: - - identifier: https://orcid.org/0000-0001-6347-1182 + - identifier: 0000-0001-6347-1182 scheme: orcid - affiliations: - name: National Technical University of Athens - name: CERN family_name: Paraskevopoulos given_name: Christos + id: 0000-0002-2858-9182 identifiers: - - identifier: https://orcid.org/0000-0002-2858-9182 + - identifier: 0000-0002-2858-9182 scheme: orcid - affiliations: - name: University of Fribourg family_name: Lannes given_name: Nils + id: 0000-0002-2926-6182 identifiers: - - identifier: https://orcid.org/0000-0002-2926-6182 + - identifier: 0000-0002-2926-6182 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Roth given_name: Florian + id: 0000-0002-8589-0182 identifiers: - - identifier: https://orcid.org/0000-0002-8589-0182 + - identifier: 0000-0002-8589-0182 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Greifenhagen given_name: Robert + id: 0000-0003-0591-9182 identifiers: - - identifier: https://orcid.org/0000-0003-0591-9182 + - identifier: 0000-0003-0591-9182 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Calderini given_name: Elia + id: 0000-0003-3991-6182 identifiers: - - identifier: https://orcid.org/0000-0003-3991-6182 + - identifier: 0000-0003-3991-6182 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wagener given_name: Richard + id: 0000-0003-3892-1182 identifiers: - - identifier: https://orcid.org/0000-0003-3892-1182 + - identifier: 0000-0003-3892-1182 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Heil given_name: Christoph + id: 0000-0001-9693-9183 identifiers: - - identifier: https://orcid.org/0000-0001-9693-9183 + - identifier: 0000-0001-9693-9183 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Kobayashi given_name: Tsutomu + id: 0000-0002-8795-3183 identifiers: - - identifier: https://orcid.org/0000-0002-8795-3183 + - identifier: 0000-0002-8795-3183 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Mayer given_name: Kurt + id: 0000-0003-2017-8183 identifiers: - - identifier: https://orcid.org/0000-0003-2017-8183 + - identifier: 0000-0003-2017-8183 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wheeler given_name: Garrett + id: 0000-0003-3097-4183 identifiers: - - identifier: https://orcid.org/0000-0003-3097-4183 + - identifier: 0000-0003-3097-4183 scheme: orcid - affiliations: - name: TU Wien family_name: Hasengst given_name: Florian + id: 0000-0002-5369-3184 identifiers: - - identifier: https://orcid.org/0000-0002-5369-3184 + - identifier: 0000-0002-5369-3184 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Genske given_name: Felix + id: 0000-0002-7520-0184 identifiers: - - identifier: https://orcid.org/0000-0002-7520-0184 + - identifier: 0000-0002-7520-0184 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Zobi given_name: Fabio + id: 0000-0002-9077-7184 identifiers: - - identifier: https://orcid.org/0000-0002-9077-7184 + - identifier: 0000-0002-9077-7184 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Briney given_name: Kristin + id: 0000-0003-1802-0184 identifiers: - - identifier: https://orcid.org/0000-0003-1802-0184 + - identifier: 0000-0003-1802-0184 scheme: orcid - affiliations: - name: Northwestern University family_name: Satut given_name: Michael + id: 0000-0003-2543-1184 identifiers: - - identifier: https://orcid.org/0000-0003-2543-1184 + - identifier: 0000-0003-2543-1184 scheme: orcid - affiliations: - name: Northwestern University family_name: Butun given_name: Serkan + id: 0000-0001-6349-9185 identifiers: - - identifier: https://orcid.org/0000-0001-6349-9185 + - identifier: 0000-0001-6349-9185 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Lalovic given_name: Milana + id: 0000-0001-9280-4185 identifiers: - - identifier: https://orcid.org/0000-0001-9280-4185 + - identifier: 0000-0001-9280-4185 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: DE PAOLI given_name: Marco + id: 0000-0002-4709-4185 identifiers: - - identifier: https://orcid.org/0000-0002-4709-4185 + - identifier: 0000-0002-4709-4185 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Takei given_name: Yodai + id: 0000-0002-7226-5185 identifiers: - - identifier: https://orcid.org/0000-0002-7226-5185 + - identifier: 0000-0002-7226-5185 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Riedl given_name: Helmut + id: 0000-0002-8108-1185 identifiers: - - identifier: https://orcid.org/0000-0002-8108-1185 + - identifier: 0000-0002-8108-1185 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Pizzi given_name: Federico + id: 0000-0003-2018-3185 identifiers: - - identifier: https://orcid.org/0000-0003-2018-3185 + - identifier: 0000-0003-2018-3185 scheme: orcid - affiliations: - name: Northwestern University family_name: van der Lee given_name: Suzan + id: 0000-0003-1884-1185 identifiers: - - identifier: https://orcid.org/0000-0003-1884-1185 + - identifier: 0000-0003-1884-1185 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Servoli given_name: Leonello + id: 0000-0003-1725-9185 identifiers: - - identifier: https://orcid.org/0000-0003-1725-9185 + - identifier: 0000-0003-1725-9185 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhou given_name: Jin-Jian + id: 0000-0002-1182-9186 identifiers: - - identifier: https://orcid.org/0000-0002-1182-9186 + - identifier: 0000-0002-1182-9186 scheme: orcid - affiliations: - name: Princeton University @@ -8637,336 +9841,383 @@ - name: University of Chicago family_name: Kite given_name: Edwin + id: 0000-0002-1426-1186 identifiers: - - identifier: https://orcid.org/0000-0002-1426-1186 + - identifier: 0000-0002-1426-1186 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Antoshechkina given_name: Paula + id: 0000-0002-3358-5186 identifiers: - - identifier: https://orcid.org/0000-0002-3358-5186 + - identifier: 0000-0002-3358-5186 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Dresden" - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Mamat given_name: Constantin + id: 0000-0003-1906-3186 identifiers: - - identifier: https://orcid.org/0000-0003-1906-3186 + - identifier: 0000-0003-1906-3186 scheme: orcid - affiliations: - name: CERN family_name: Martin-Marquez given_name: Manuel + id: 0000-0003-2359-9186 identifiers: - - identifier: https://orcid.org/0000-0003-2359-9186 + - identifier: 0000-0003-2359-9186 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chou given_name: Tsui-Fen + id: 0000-0003-2410-2186 identifiers: - - identifier: https://orcid.org/0000-0003-2410-2186 + - identifier: 0000-0003-2410-2186 scheme: orcid - affiliations: - name: Northwestern University family_name: Gordiichuk given_name: Pavlo + id: 0000-0003-4152-7186 identifiers: - - identifier: https://orcid.org/0000-0003-4152-7186 + - identifier: 0000-0003-4152-7186 scheme: orcid - affiliations: - name: Northwestern University family_name: Peng given_name: Anyang + id: 0000-0002-0630-2187 identifiers: - - identifier: https://orcid.org/0000-0002-0630-2187 + - identifier: 0000-0002-0630-2187 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Friesl given_name: Martin + id: 0000-0002-2189-5187 identifiers: - - identifier: https://orcid.org/0000-0002-2189-5187 + - identifier: 0000-0002-2189-5187 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Scheuerlein given_name: Christian + id: 0000-0002-8512-7187 identifiers: - - identifier: https://orcid.org/0000-0002-8512-7187 + - identifier: 0000-0002-8512-7187 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Aichhorn given_name: Markus + id: 0000-0003-1034-5187 identifiers: - - identifier: https://orcid.org/0000-0003-1034-5187 + - identifier: 0000-0003-1034-5187 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: "Gr\xFCnert" given_name: Matthias + id: 0000-0003-4029-6187 identifiers: - - identifier: https://orcid.org/0000-0003-4029-6187 + - identifier: 0000-0003-4029-6187 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Ghigo given_name: Andrea + id: 0000-0001-6527-6188 identifiers: - - identifier: https://orcid.org/0000-0001-6527-6188 + - identifier: 0000-0001-6527-6188 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ha given_name: Sungsoo + id: 0000-0002-5768-0188 identifiers: - - identifier: https://orcid.org/0000-0002-5768-0188 + - identifier: 0000-0002-5768-0188 scheme: orcid - affiliations: - name: CERN family_name: SERMEUS given_name: LUC + id: 0000-0002-5955-5188 identifiers: - - identifier: https://orcid.org/0000-0002-5955-5188 + - identifier: 0000-0002-5955-5188 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "K\xE4mpfer" given_name: Christine + id: 0000-0002-8196-3188 identifiers: - - identifier: https://orcid.org/0000-0002-8196-3188 + - identifier: 0000-0002-8196-3188 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ince given_name: Michaela + id: 0000-0002-8997-3188 identifiers: - - identifier: https://orcid.org/0000-0002-8997-3188 + - identifier: 0000-0002-8997-3188 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Katayev given_name: Dmitry + id: 0000-0003-0131-1188 identifiers: - - identifier: https://orcid.org/0000-0003-0131-1188 + - identifier: 0000-0003-0131-1188 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kelly given_name: Norman + id: 0000-0001-9950-9189 identifiers: - - identifier: https://orcid.org/0000-0001-9950-9189 + - identifier: 0000-0001-9950-9189 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "R\xF6sner" given_name: Harald + id: 0000-0002-2533-2189 identifiers: - - identifier: https://orcid.org/0000-0002-2533-2189 + - identifier: 0000-0002-2533-2189 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Brown given_name: Kevin + id: 0000-0002-6891-4189 identifiers: - - identifier: https://orcid.org/0000-0002-6891-4189 + - identifier: 0000-0002-6891-4189 scheme: orcid - affiliations: - name: Northwestern University family_name: MacAyeal given_name: Greg + id: 0000-0003-3862-8189 identifiers: - - identifier: https://orcid.org/0000-0003-3862-8189 + - identifier: 0000-0003-3862-8189 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Cardani given_name: Laura + id: 0000-0001-5410-118X identifiers: - - identifier: https://orcid.org/0000-0001-5410-118X + - identifier: 0000-0001-5410-118X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Schaffernak given_name: Harald + id: 0000-0002-6673-618X identifiers: - - identifier: https://orcid.org/0000-0002-6673-618X + - identifier: 0000-0002-6673-618X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Arkhipkin given_name: Dmitry + id: 0000-0002-7952-918X identifiers: - - identifier: https://orcid.org/0000-0002-7952-918X + - identifier: 0000-0002-7952-918X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kellersztein given_name: Israel + id: 0000-0002-8838-818X identifiers: - - identifier: https://orcid.org/0000-0002-8838-818X + - identifier: 0000-0002-8838-818X scheme: orcid - affiliations: - name: "Universit\xE0 degli Studi di Roma La Sapienza Dipartimento di Fisica" - name: Istituto Nazionale di Fisica Nucleare family_name: Cavoto given_name: Gianluca + id: 0000-0003-2161-918X identifiers: - - identifier: https://orcid.org/0000-0003-2161-918X + - identifier: 0000-0003-2161-918X scheme: orcid - affiliations: - name: TU Wien family_name: Szaller given_name: David + id: 0000-0003-4451-118X identifiers: - - identifier: https://orcid.org/0000-0003-4451-118X + - identifier: 0000-0003-4451-118X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Panning given_name: Mark + id: 0000-0002-2041-3190 identifiers: - - identifier: https://orcid.org/0000-0002-2041-3190 + - identifier: 0000-0002-2041-3190 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Adkins given_name: Jess + id: 0000-0002-3174-5190 identifiers: - - identifier: https://orcid.org/0000-0002-3174-5190 + - identifier: 0000-0002-3174-5190 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kalyanaraman given_name: Dhevi + id: 0000-0002-5781-4190 identifiers: - - identifier: https://orcid.org/0000-0002-5781-4190 + - identifier: 0000-0002-5781-4190 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yu given_name: Hang + id: 0000-0002-6011-6190 identifiers: - - identifier: https://orcid.org/0000-0002-6011-6190 + - identifier: 0000-0002-6011-6190 scheme: orcid - affiliations: - name: CERN family_name: Alimena given_name: Juliette + id: 0000-0001-6030-3191 identifiers: - - identifier: https://orcid.org/0000-0001-6030-3191 + - identifier: 0000-0001-6030-3191 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Irgen-Gioro given_name: Shawn + id: 0000-0001-8638-6191 identifiers: - - identifier: https://orcid.org/0000-0001-8638-6191 + - identifier: 0000-0001-8638-6191 scheme: orcid - affiliations: - name: "Leibniz-Zentrum f\xFCr Europ\xE4ische Wirtschaftsforschung" - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Werthschulte given_name: Madeline + id: 0000-0002-1696-0191 identifiers: - - identifier: https://orcid.org/0000-0002-1696-0191 + - identifier: 0000-0002-1696-0191 scheme: orcid - affiliations: - name: Northwestern University family_name: Puggioni given_name: Danilo + id: 0000-0002-2128-4191 identifiers: - - identifier: https://orcid.org/0000-0002-2128-4191 + - identifier: 0000-0002-2128-4191 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Tagliente given_name: Giuseppe + id: 0000-0003-1665-4191 identifiers: - - identifier: https://orcid.org/0000-0003-1665-4191 + - identifier: 0000-0003-1665-4191 scheme: orcid - affiliations: - name: Northwestern University family_name: Courtney given_name: Connor D. + id: 0000-0003-1872-1191 identifiers: - - identifier: https://orcid.org/0000-0003-1872-1191 + - identifier: 0000-0003-1872-1191 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Geneva family_name: Allard given_name: Pierre-Marie + id: 0000-0003-3389-2191 identifiers: - - identifier: https://orcid.org/0000-0003-3389-2191 + - identifier: 0000-0003-3389-2191 scheme: orcid - affiliations: - name: Northwestern University family_name: Des Soye given_name: Benjamin + id: 0000-0001-5480-4192 identifiers: - - identifier: https://orcid.org/0000-0001-5480-4192 + - identifier: 0000-0001-5480-4192 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Vorberger given_name: Jan + id: 0000-0001-5926-9192 identifiers: - - identifier: https://orcid.org/0000-0001-5926-9192 + - identifier: 0000-0001-5926-9192 scheme: orcid - affiliations: - name: University of Fribourg family_name: Almeida given_name: Mauro + id: 0000-0001-7314-0192 identifiers: - - identifier: https://orcid.org/0000-0001-7314-0192 + - identifier: 0000-0001-7314-0192 scheme: orcid - affiliations: - name: JAMA Network Open - name: Northwestern University family_name: Trueger given_name: N. Seth + id: 0000-0001-8797-2192 identifiers: - - identifier: https://orcid.org/0000-0001-8797-2192 + - identifier: 0000-0001-8797-2192 scheme: orcid - affiliations: - name: Northwestern University family_name: Miksis given_name: Michael + id: 0000-0002-4048-9192 identifiers: - - identifier: https://orcid.org/0000-0002-4048-9192 + - identifier: 0000-0002-4048-9192 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Fischer given_name: Katharina + id: 0000-0002-6366-4192 identifiers: - - identifier: https://orcid.org/0000-0002-6366-4192 + - identifier: 0000-0002-6366-4192 scheme: orcid - affiliations: - name: University of Fribourg family_name: Hinni given_name: Chantal + id: 0000-0002-7671-3192 identifiers: - - identifier: https://orcid.org/0000-0002-7671-3192 + - identifier: 0000-0002-7671-3192 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Watrin given_name: Christoph + id: 0000-0003-0161-6192 identifiers: - - identifier: https://orcid.org/0000-0003-0161-6192 + - identifier: 0000-0003-0161-6192 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: Hoffmann Consult e.U. family_name: Hoffmann given_name: Markus + id: 0000-0003-2690-1192 identifiers: - - identifier: https://orcid.org/0000-0003-2690-1192 + - identifier: 0000-0003-2690-1192 scheme: orcid - affiliations: - name: TU Wien @@ -8974,66 +10225,75 @@ - name: Sobolev Institute of Mathematics SB RAS family_name: Molchanova given_name: Anastasia + id: 0000-0003-4121-2192 identifiers: - - identifier: https://orcid.org/0000-0003-4121-2192 + - identifier: 0000-0003-4121-2192 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" - name: "Zentrum f\xFCr Elektronenmikroskopie Graz" family_name: Hofer given_name: Ferdinand + id: 0000-0001-9986-2193 identifiers: - - identifier: https://orcid.org/0000-0001-9986-2193 + - identifier: 0000-0001-9986-2193 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Placke given_name: Tobias + id: 0000-0002-2097-5193 identifiers: - - identifier: https://orcid.org/0000-0002-2097-5193 + - identifier: 0000-0002-2097-5193 scheme: orcid - affiliations: - name: University of Fribourg family_name: Suter given_name: Peter + id: 0000-0002-6968-0193 identifiers: - - identifier: https://orcid.org/0000-0002-6968-0193 + - identifier: 0000-0002-6968-0193 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gharib given_name: Morteza + id: 0000-0003-0754-4193 identifiers: - - identifier: https://orcid.org/0000-0003-0754-4193 + - identifier: 0000-0003-0754-4193 scheme: orcid - affiliations: - name: Northwestern University family_name: Jung given_name: Dahee + id: 0000-0003-1863-0193 identifiers: - - identifier: https://orcid.org/0000-0003-1863-0193 + - identifier: 0000-0003-1863-0193 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Saf given_name: Robert + id: 0000-0003-3858-6193 identifiers: - - identifier: https://orcid.org/0000-0003-3858-6193 + - identifier: 0000-0003-3858-6193 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Weinberger given_name: Peter + id: 0000-0003-4172-6193 identifiers: - - identifier: https://orcid.org/0000-0003-4172-6193 + - identifier: 0000-0003-4172-6193 scheme: orcid - affiliations: - name: TU Wien family_name: Rasoulzadeh given_name: Arvin + id: 0000-0002-5739-2194 identifiers: - - identifier: https://orcid.org/0000-0002-5739-2194 + - identifier: 0000-0002-5739-2194 scheme: orcid - affiliations: - name: Alberta Machine Intelligence Institute @@ -9042,65 +10302,74 @@ - name: Technische Universitat Graz family_name: HOLZINGER given_name: Andreas + id: 0000-0002-6786-5194 identifiers: - - identifier: https://orcid.org/0000-0002-6786-5194 + - identifier: 0000-0002-6786-5194 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Drozdov given_name: Ilya + id: 0000-0002-8185-1194 identifiers: - - identifier: https://orcid.org/0000-0002-8185-1194 + - identifier: 0000-0002-8185-1194 scheme: orcid - affiliations: - name: Northwestern University - name: University of Chicago family_name: Simms given_name: Nina + id: 0000-0003-0830-5194 identifiers: - - identifier: https://orcid.org/0000-0003-0830-5194 + - identifier: 0000-0003-0830-5194 scheme: orcid - affiliations: - name: University of Fribourg family_name: Marques given_name: Filipe + id: 0000-0003-0757-2194 identifiers: - - identifier: https://orcid.org/0000-0003-0757-2194 + - identifier: 0000-0003-0757-2194 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yang given_name: Lin + id: 0000-0003-1057-9194 identifiers: - - identifier: https://orcid.org/0000-0003-1057-9194 + - identifier: 0000-0003-1057-9194 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Baumgartner given_name: Christian + id: 0000-0002-3763-5195 identifiers: - - identifier: https://orcid.org/0000-0002-3763-5195 + - identifier: 0000-0002-3763-5195 scheme: orcid - affiliations: - name: California Institute of Technology family_name: GOENTORO given_name: LEA + id: 0000-0002-3904-0195 identifiers: - - identifier: https://orcid.org/0000-0002-3904-0195 + - identifier: 0000-0002-3904-0195 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Guevarra given_name: Dan + id: 0000-0002-9592-3195 identifiers: - - identifier: https://orcid.org/0000-0002-9592-3195 + - identifier: 0000-0002-9592-3195 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Paoletti given_name: Antonello + id: 0000-0003-3409-9195 identifiers: - - identifier: https://orcid.org/0000-0003-3409-9195 + - identifier: 0000-0003-3409-9195 scheme: orcid - affiliations: - name: Northwestern University @@ -9108,30 +10377,34 @@ - name: The Nature Conservancy family_name: Trihadmojo given_name: Bambang + id: 0000-0003-4711-3195 identifiers: - - identifier: https://orcid.org/0000-0003-4711-3195 + - identifier: 0000-0003-4711-3195 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Hao F + id: 0000-0001-5089-1196 identifiers: - - identifier: https://orcid.org/0000-0001-5089-1196 + - identifier: 0000-0001-5089-1196 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Felcini given_name: Enrico + id: 0000-0001-8965-7196 identifiers: - - identifier: https://orcid.org/0000-0001-8965-7196 + - identifier: 0000-0001-8965-7196 scheme: orcid - affiliations: - name: Westlake University - name: California Institute of Technology family_name: liu given_name: kai + id: 0000-0002-2109-8196 identifiers: - - identifier: https://orcid.org/0000-0002-2109-8196 + - identifier: 0000-0002-2109-8196 scheme: orcid - affiliations: - name: University of Vienna @@ -9139,376 +10412,428 @@ - name: "Technische Universit\xE4t Wien" family_name: Backhoff Veraguas given_name: Julio Daniel + id: 0000-0002-8521-9196 identifiers: - - identifier: https://orcid.org/0000-0002-8521-9196 + - identifier: 0000-0002-8521-9196 scheme: orcid - affiliations: - name: TU Wien family_name: Klebel-Knobloch given_name: Benjamin + id: 0000-0002-9871-4196 identifiers: - - identifier: https://orcid.org/0000-0002-9871-4196 + - identifier: 0000-0002-9871-4196 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kelly given_name: Christopher + id: 0000-0003-3033-1196 identifiers: - - identifier: https://orcid.org/0000-0003-3033-1196 + - identifier: 0000-0003-3033-1196 scheme: orcid - affiliations: - name: Northwestern University family_name: Lian given_name: Yanping + id: 0000-0003-3666-1196 identifiers: - - identifier: https://orcid.org/0000-0003-3666-1196 + - identifier: 0000-0003-3666-1196 scheme: orcid - affiliations: - name: Universitat Bern - name: University of Fribourg family_name: Kartashyan given_name: Mariam + id: 0000-0003-3768-0196 identifiers: - - identifier: https://orcid.org/0000-0003-3768-0196 + - identifier: 0000-0003-3768-0196 scheme: orcid - affiliations: - name: CERN - name: "Centro Brasileiro de Pesquisas F\xEDsicas" family_name: Silva Junior given_name: Eraldo + id: 0000-0001-7760-9197 identifiers: - - identifier: https://orcid.org/0000-0001-7760-9197 + - identifier: 0000-0001-7760-9197 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Schmidt given_name: Stephan + id: 0000-0001-8787-4197 identifiers: - - identifier: https://orcid.org/0000-0001-8787-4197 + - identifier: 0000-0001-8787-4197 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Knight given_name: Anders + id: 0000-0001-9665-8197 identifiers: - - identifier: https://orcid.org/0000-0001-9665-8197 + - identifier: 0000-0001-9665-8197 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Sourmelidis given_name: Athanasios + id: 0000-0002-0153-3197 identifiers: - - identifier: https://orcid.org/0000-0002-0153-3197 + - identifier: 0000-0002-0153-3197 scheme: orcid - affiliations: - name: University of Fribourg family_name: Schmidlin given_name: Regula + id: 0000-0002-2317-7197 identifiers: - - identifier: https://orcid.org/0000-0002-2317-7197 + - identifier: 0000-0002-2317-7197 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Wogrin given_name: Sonja + id: 0000-0002-3889-7197 identifiers: - - identifier: https://orcid.org/0000-0002-3889-7197 + - identifier: 0000-0002-3889-7197 scheme: orcid - affiliations: - name: Northwestern University family_name: Pappas given_name: Thrasyvoulos N. + id: 0000-0002-4598-2197 identifiers: - - identifier: https://orcid.org/0000-0002-4598-2197 + - identifier: 0000-0002-4598-2197 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Rodrigues-Moura given_name: Enrique + id: 0000-0002-7204-0197 identifiers: - - identifier: https://orcid.org/0000-0002-7204-0197 + - identifier: 0000-0002-7204-0197 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Darienzo given_name: Richard + id: 0000-0003-0908-5197 identifiers: - - identifier: https://orcid.org/0000-0003-0908-5197 + - identifier: 0000-0003-0908-5197 scheme: orcid - affiliations: - name: Northwestern University family_name: Soria given_name: Jason + id: 0000-0003-1319-9197 identifiers: - - identifier: https://orcid.org/0000-0003-1319-9197 + - identifier: 0000-0003-1319-9197 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Heaton given_name: Thomas + id: 0000-0003-3363-2197 identifiers: - - identifier: https://orcid.org/0000-0003-3363-2197 + - identifier: 0000-0003-3363-2197 scheme: orcid - affiliations: - name: TU Wien - name: "TU Wien (Technische Universit\xE4t Wien)" family_name: Ovsianikov given_name: Aleksandr + id: 0000-0001-5846-0198 identifiers: - - identifier: https://orcid.org/0000-0001-5846-0198 + - identifier: 0000-0001-5846-0198 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Krause given_name: Maurice + id: 0000-0001-7391-9198 identifiers: - - identifier: https://orcid.org/0000-0001-7391-9198 + - identifier: 0000-0001-7391-9198 scheme: orcid - affiliations: - name: TU Wien family_name: Ruh given_name: Thomas + id: 0000-0001-7577-0198 identifiers: - - identifier: https://orcid.org/0000-0001-7577-0198 + - identifier: 0000-0001-7577-0198 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Dylla given_name: Kristina + id: 0000-0001-7869-9198 identifiers: - - identifier: https://orcid.org/0000-0001-7869-9198 + - identifier: 0000-0001-7869-9198 scheme: orcid - affiliations: - name: Northwestern University family_name: Khuder given_name: Basil + id: 0000-0002-1012-6198 identifiers: - - identifier: https://orcid.org/0000-0002-1012-6198 + - identifier: 0000-0002-1012-6198 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Kriechbaum given_name: Manfred + id: 0000-0002-3852-4198 identifiers: - - identifier: https://orcid.org/0000-0002-3852-4198 + - identifier: 0000-0002-3852-4198 scheme: orcid - affiliations: - name: California Institute of Technology - name: University of California Berkeley family_name: Jorgensen given_name: Victoria + id: 0000-0002-4205-6198 identifiers: - - identifier: https://orcid.org/0000-0002-4205-6198 + - identifier: 0000-0002-4205-6198 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Renner given_name: Herwig + id: 0000-0002-5471-9198 identifiers: - - identifier: https://orcid.org/0000-0002-5471-9198 + - identifier: 0000-0002-5471-9198 scheme: orcid - affiliations: - name: Northwestern University family_name: Cozza given_name: Eugene + id: 0000-0002-8015-9198 identifiers: - - identifier: https://orcid.org/0000-0002-8015-9198 + - identifier: 0000-0002-8015-9198 scheme: orcid - affiliations: - name: California Institute of Technology - name: National Taiwan University family_name: Tseng given_name: Wei-Shiuan + id: 0000-0001-8594-8199 identifiers: - - identifier: https://orcid.org/0000-0001-8594-8199 + - identifier: 0000-0001-8594-8199 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kotik given_name: Daniel + id: 0000-0001-8735-3199 identifiers: - - identifier: https://orcid.org/0000-0001-8735-3199 + - identifier: 0000-0001-8735-3199 scheme: orcid - affiliations: - name: CERN family_name: Corsini given_name: Roberto + id: 0000-0002-0934-8199 identifiers: - - identifier: https://orcid.org/0000-0002-0934-8199 + - identifier: 0000-0002-0934-8199 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Navaratne given_name: Primali + id: 0000-0002-2679-7199 identifiers: - - identifier: https://orcid.org/0000-0002-2679-7199 + - identifier: 0000-0002-2679-7199 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhao given_name: Chonghang + id: 0000-0002-3538-6199 identifiers: - - identifier: https://orcid.org/0000-0002-3538-6199 + - identifier: 0000-0002-3538-6199 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" - name: National Research Centre family_name: Elaily given_name: Wael + id: 0000-0003-4169-9199 identifiers: - - identifier: https://orcid.org/0000-0003-4169-9199 + - identifier: 0000-0003-4169-9199 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cardenas given_name: Benjamin + id: 0000-0001-7246-219X identifiers: - - identifier: https://orcid.org/0000-0001-7246-219X + - identifier: 0000-0001-7246-219X scheme: orcid - affiliations: - name: CERN family_name: Cass given_name: Tony + id: 0000-0001-9637-619X identifiers: - - identifier: https://orcid.org/0000-0001-9637-619X + - identifier: 0000-0001-9637-619X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yeh given_name: Nai-Chang + id: 0000-0002-1826-419X identifiers: - - identifier: https://orcid.org/0000-0002-1826-419X + - identifier: 0000-0002-1826-419X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Reinbacher given_name: Christian + id: 0000-0002-2399-519X identifiers: - - identifier: https://orcid.org/0000-0002-2399-519X + - identifier: 0000-0002-2399-519X scheme: orcid - affiliations: - name: Northwestern University family_name: "Freire Fern\xE1ndez" given_name: Francisco + id: 0000-0002-6539-419X identifiers: - - identifier: https://orcid.org/0000-0002-6539-419X + - identifier: 0000-0002-6539-419X scheme: orcid - affiliations: - name: Northwestern University family_name: List given_name: Cara + id: 0000-0002-6861-619X identifiers: - - identifier: https://orcid.org/0000-0002-6861-619X + - identifier: 0000-0002-6861-619X scheme: orcid - affiliations: - name: University of Bamberg family_name: "Lichtenth\xE4ler" given_name: Robin + id: 0000-0002-9608-619X identifiers: - - identifier: https://orcid.org/0000-0002-9608-619X + - identifier: 0000-0002-9608-619X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Gordon given_name: Howard + id: 0000-0003-4362-019X identifiers: - - identifier: https://orcid.org/0000-0003-4362-019X + - identifier: 0000-0003-4362-019X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Citek given_name: Cooper + id: 0000-0001-9376-8200 identifiers: - - identifier: https://orcid.org/0000-0001-9376-8200 + - identifier: 0000-0001-9376-8200 scheme: orcid - affiliations: - name: Northwestern University family_name: Parisiadou given_name: Loukia + id: 0000-0002-2569-4200 identifiers: - - identifier: https://orcid.org/0000-0002-2569-4200 + - identifier: 0000-0002-2569-4200 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Rudroff given_name: Florian + id: 0000-0002-6680-8200 identifiers: - - identifier: https://orcid.org/0000-0002-6680-8200 + - identifier: 0000-0002-6680-8200 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Vakalopoulou given_name: Efthymia + id: 0000-0002-9319-5200 identifiers: - - identifier: https://orcid.org/0000-0002-9319-5200 + - identifier: 0000-0002-9319-5200 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Davison given_name: Stephen + id: 0000-0003-0102-8200 identifiers: - - identifier: https://orcid.org/0000-0003-0102-8200 + - identifier: 0000-0003-0102-8200 scheme: orcid - affiliations: - name: Northwestern University - name: Bangladesh University of Engineering and Technology family_name: Saha given_name: Sourav + id: 0000-0003-0237-0200 identifiers: - - identifier: https://orcid.org/0000-0003-0237-0200 + - identifier: 0000-0003-0237-0200 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Slugovc given_name: Christian + id: 0000-0003-1873-5200 identifiers: - - identifier: https://orcid.org/0000-0003-1873-5200 + - identifier: 0000-0003-1873-5200 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Atwater given_name: Harry + id: 0000-0001-9435-0201 identifiers: - - identifier: https://orcid.org/0000-0001-9435-0201 + - identifier: 0000-0001-9435-0201 scheme: orcid - affiliations: - name: TU Wien family_name: "Steinr\xFCck" given_name: Herbert + id: 0000-0003-2303-6201 identifiers: - - identifier: https://orcid.org/0000-0003-2303-6201 + - identifier: 0000-0003-2303-6201 scheme: orcid - affiliations: - name: Graz University of Technology - name: Joanneum Research Forschungsgesellschaft mbH family_name: Perko given_name: Roland + id: 0000-0003-3374-4201 identifiers: - - identifier: https://orcid.org/0000-0003-3374-4201 + - identifier: 0000-0003-3374-4201 scheme: orcid - affiliations: - name: Center for Electrochemical Surface Technology - name: "Technische Universit\xE4t Wien" family_name: Fruhmann given_name: Philipp + id: 0000-0001-9165-5202 identifiers: - - identifier: https://orcid.org/0000-0001-9165-5202 + - identifier: 0000-0001-9165-5202 scheme: orcid - affiliations: - name: CERN family_name: James given_name: Tom + id: 0000-0002-3727-0202 identifiers: - - identifier: https://orcid.org/0000-0002-3727-0202 + - identifier: 0000-0002-3727-0202 scheme: orcid - affiliations: - name: CERN family_name: Datta given_name: Shouvik + id: 0000-0002-6425-2202 identifiers: - - identifier: https://orcid.org/0000-0002-6425-2202 + - identifier: 0000-0002-6425-2202 scheme: orcid - affiliations: - name: University of Bamberg @@ -9516,94 +10841,107 @@ \ f\xFCr Politikwissenschaft" family_name: Benoit given_name: Verena + id: 0000-0002-8596-9202 identifiers: - - identifier: https://orcid.org/0000-0002-8596-9202 + - identifier: 0000-0002-8596-9202 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Rivera-Dotson given_name: Leilani + id: 0000-0002-9784-7202 identifiers: - - identifier: https://orcid.org/0000-0002-9784-7202 + - identifier: 0000-0002-9784-7202 scheme: orcid - affiliations: - name: Beijing University of Posts and Telecommunications - name: University of Fribourg family_name: Kong given_name: Yixiu + id: 0000-0003-1877-5202 identifiers: - - identifier: https://orcid.org/0000-0003-1877-5202 + - identifier: 0000-0003-1877-5202 scheme: orcid - affiliations: - name: TU Wien family_name: Wurzer given_name: Gabriel + id: 0000-0002-5687-0203 identifiers: - - identifier: https://orcid.org/0000-0002-5687-0203 + - identifier: 0000-0002-5687-0203 scheme: orcid - affiliations: - name: UCLA - name: Northwestern University family_name: Levin given_name: Ayala + id: 0000-0002-6508-0203 identifiers: - - identifier: https://orcid.org/0000-0002-6508-0203 + - identifier: 0000-0002-6508-0203 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Guo given_name: Haoyue + id: 0000-0003-3477-9203 identifiers: - - identifier: https://orcid.org/0000-0003-3477-9203 + - identifier: 0000-0003-3477-9203 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Wang given_name: Mao + id: 0000-0003-4606-7203 identifiers: - - identifier: https://orcid.org/0000-0003-4606-7203 + - identifier: 0000-0003-4606-7203 scheme: orcid - affiliations: - name: Northwestern University family_name: Rao given_name: Leela + id: 0000-0002-3946-8204 identifiers: - - identifier: https://orcid.org/0000-0002-3946-8204 + - identifier: 0000-0002-3946-8204 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Patzek given_name: Markus + id: 0000-0002-7301-7204 identifiers: - - identifier: https://orcid.org/0000-0002-7301-7204 + - identifier: 0000-0002-7301-7204 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Reinhold given_name: Jens + id: 0000-0002-7445-8204 identifiers: - - identifier: https://orcid.org/0000-0002-7445-8204 + - identifier: 0000-0002-7445-8204 scheme: orcid - affiliations: - name: Northwestern University family_name: Richards given_name: Jeffrey + id: 0000-0003-2173-6204 identifiers: - - identifier: https://orcid.org/0000-0003-2173-6204 + - identifier: 0000-0003-2173-6204 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Stacchiola given_name: Dario + id: 0000-0001-5494-3205 identifiers: - - identifier: https://orcid.org/0000-0001-5494-3205 + - identifier: 0000-0001-5494-3205 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Mougeot given_name: Maxime + id: 0000-0003-1372-1205 identifiers: - - identifier: https://orcid.org/0000-0003-1372-1205 + - identifier: 0000-0003-1372-1205 scheme: orcid - affiliations: - name: National Research Nuclear University MEPhI @@ -9611,201 +10949,229 @@ - name: PN Lebedev Physical Institute family_name: Dabagov given_name: Sultan + id: 0000-0003-3087-1205 identifiers: - - identifier: https://orcid.org/0000-0003-3087-1205 + - identifier: 0000-0003-3087-1205 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Reiter-Haas given_name: Markus + id: 0000-0001-9852-8206 identifiers: - - identifier: https://orcid.org/0000-0001-9852-8206 + - identifier: 0000-0001-9852-8206 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Steindl given_name: Gernot + id: 0000-0002-9035-9206 identifiers: - - identifier: https://orcid.org/0000-0002-9035-9206 + - identifier: 0000-0002-9035-9206 scheme: orcid - affiliations: - name: Northwestern University family_name: Starkenburg given_name: Tjitske + id: 0000-0003-2539-8206 identifiers: - - identifier: https://orcid.org/0000-0003-2539-8206 + - identifier: 0000-0003-2539-8206 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Gericke given_name: Robert + id: 0000-0003-4669-0206 identifiers: - - identifier: https://orcid.org/0000-0003-4669-0206 + - identifier: 0000-0003-4669-0206 scheme: orcid - affiliations: - name: Northwestern University family_name: Blagojevic given_name: Voislav + id: 0000-0001-7344-7207 identifiers: - - identifier: https://orcid.org/0000-0001-7344-7207 + - identifier: 0000-0001-7344-7207 scheme: orcid - affiliations: - name: University of Fribourg family_name: ORTIZ DE LA ROSA given_name: JOSE MANUEL + id: 0000-0002-2899-7207 identifiers: - - identifier: https://orcid.org/0000-0002-2899-7207 + - identifier: 0000-0002-2899-7207 scheme: orcid - affiliations: - name: University of Fribourg family_name: Lorusso given_name: Girieca + id: 0000-0002-2807-3207 identifiers: - - identifier: https://orcid.org/0000-0002-2807-3207 + - identifier: 0000-0002-2807-3207 scheme: orcid - affiliations: - name: Silicon Austria Labs GmbH - name: Graz University of Technology family_name: Bainschab given_name: Markus + id: 0000-0002-3820-4207 identifiers: - - identifier: https://orcid.org/0000-0002-3820-4207 + - identifier: 0000-0002-3820-4207 scheme: orcid - affiliations: - name: University of Bamberg family_name: Hasenkopf given_name: Andrea + id: 0000-0002-4777-6207 identifiers: - - identifier: https://orcid.org/0000-0002-4777-6207 + - identifier: 0000-0002-4777-6207 scheme: orcid - affiliations: - name: Northwestern University family_name: Vasileiadou given_name: Eugenia S. + id: 0000-0002-5714-9207 identifiers: - - identifier: https://orcid.org/0000-0002-5714-9207 + - identifier: 0000-0002-5714-9207 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Qu given_name: Zijie + id: 0000-0003-1500-3207 identifiers: - - identifier: https://orcid.org/0000-0003-1500-3207 + - identifier: 0000-0003-1500-3207 scheme: orcid - affiliations: - name: Northwestern University family_name: Roy given_name: Indranil + id: 0000-0003-3288-2207 identifiers: - - identifier: https://orcid.org/0000-0003-3288-2207 + - identifier: 0000-0003-3288-2207 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Berenc\xE9n" given_name: Yonder + id: 0000-0003-3529-0207 identifiers: - - identifier: https://orcid.org/0000-0003-3529-0207 + - identifier: 0000-0003-3529-0207 scheme: orcid - affiliations: - name: American Medical Association - name: Northwestern University family_name: Wozniak given_name: Gregory + id: 0000-0003-4245-8207 identifiers: - - identifier: https://orcid.org/0000-0003-4245-8207 + - identifier: 0000-0003-4245-8207 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Couperus Cabada\u011F" given_name: Jurjen Pieter + id: 0000-0001-9129-4208 identifiers: - - identifier: https://orcid.org/0000-0001-9129-4208 + - identifier: 0000-0001-9129-4208 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: DOUJAK given_name: Eduard + id: 0000-0001-9250-2208 identifiers: - - identifier: https://orcid.org/0000-0001-9250-2208 + - identifier: 0000-0001-9250-2208 scheme: orcid - affiliations: - name: Northwestern University family_name: Sachdeva given_name: Natasha + id: 0000-0001-9305-4208 identifiers: - - identifier: https://orcid.org/0000-0001-9305-4208 + - identifier: 0000-0001-9305-4208 scheme: orcid - affiliations: - name: University of Fribourg family_name: Baumgartner given_name: Antonia + id: 0000-0002-0113-0208 identifiers: - - identifier: https://orcid.org/0000-0002-0113-0208 + - identifier: 0000-0002-0113-0208 scheme: orcid - affiliations: - name: European Research Center for Information Systems - name: "University of M\xFCnster" family_name: Bergener given_name: Katrin + id: 0000-0002-1193-7208 identifiers: - - identifier: https://orcid.org/0000-0002-1193-7208 + - identifier: 0000-0002-1193-7208 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Lijie + id: 0000-0002-7988-6208 identifiers: - - identifier: https://orcid.org/0000-0002-7988-6208 + - identifier: 0000-0002-7988-6208 scheme: orcid - affiliations: - name: CERN family_name: Kouskoura given_name: Vasiliki + id: 0000-0002-8987-3208 identifiers: - - identifier: https://orcid.org/0000-0002-8987-3208 + - identifier: 0000-0002-8987-3208 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Nguyen given_name: Thu Trang + id: 0000-0002-9280-2208 identifiers: - - identifier: https://orcid.org/0000-0002-9280-2208 + - identifier: 0000-0002-9280-2208 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Schinagl given_name: Maximilian + id: 0000-0003-1009-7208 identifiers: - - identifier: https://orcid.org/0000-0003-1009-7208 + - identifier: 0000-0003-1009-7208 scheme: orcid - affiliations: - name: TU Wien family_name: Weisgrab given_name: Gregor + id: 0000-0003-4856-2208 identifiers: - - identifier: https://orcid.org/0000-0003-4856-2208 + - identifier: 0000-0003-4856-2208 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bae given_name: Jane + id: 0000-0001-6789-6209 identifiers: - - identifier: https://orcid.org/0000-0001-6789-6209 + - identifier: 0000-0001-6789-6209 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Painter given_name: Oskar + id: 0000-0002-1581-9209 identifiers: - - identifier: https://orcid.org/0000-0002-1581-9209 + - identifier: 0000-0002-1581-9209 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Tsaousidis given_name: Christos + id: 0000-0002-3115-7209 identifiers: - - identifier: https://orcid.org/0000-0002-3115-7209 + - identifier: 0000-0002-3115-7209 scheme: orcid - affiliations: - name: European Organization for Nuclear Research @@ -9813,51 +11179,58 @@ \ a Experiment\xE1ln\xED Fyziky" family_name: "M\xE1nek" given_name: Petr + id: 0000-0003-4306-0209 identifiers: - - identifier: https://orcid.org/0000-0003-4306-0209 + - identifier: 0000-0003-4306-0209 scheme: orcid - affiliations: - name: TU Wien family_name: Birkelbach given_name: Felix + id: 0000-0003-4928-6209 identifiers: - - identifier: https://orcid.org/0000-0003-4928-6209 + - identifier: 0000-0003-4928-6209 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Poletti given_name: Maria Cecilia + id: 0000-0002-4776-920X identifiers: - - identifier: https://orcid.org/0000-0002-4776-920X + - identifier: 0000-0002-4776-920X scheme: orcid - affiliations: - name: Northwestern University family_name: Enteen given_name: Jillana + id: 0000-0002-7767-720X identifiers: - - identifier: https://orcid.org/0000-0002-7767-720X + - identifier: 0000-0002-7767-720X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: TARPARA given_name: EAGLEKUMAR + id: 0000-0003-0668-520X identifiers: - - identifier: https://orcid.org/0000-0003-0668-520X + - identifier: 0000-0003-0668-520X scheme: orcid - affiliations: - name: Northwestern University family_name: Teplensky given_name: Michelle + id: 0000-0003-4664-420X identifiers: - - identifier: https://orcid.org/0000-0003-4664-420X + - identifier: 0000-0003-4664-420X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Swaminathan given_name: Subramanyam + id: 0000-0002-3550-7210 identifiers: - - identifier: https://orcid.org/0000-0002-3550-7210 + - identifier: 0000-0002-3550-7210 scheme: orcid - affiliations: - name: Fachhochschule Salzburg GmbH @@ -9867,230 +11240,262 @@ - name: Friedrich-Alexander-University Erlangen-Nuremberg (FAU) family_name: Herberger given_name: Tim + id: 0000-0002-9028-2210 identifiers: - - identifier: https://orcid.org/0000-0002-9028-2210 + - identifier: 0000-0002-9028-2210 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Meyer given_name: Hanna + id: 0000-0003-0556-0210 identifiers: - - identifier: https://orcid.org/0000-0003-0556-0210 + - identifier: 0000-0003-0556-0210 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Doering given_name: Lutz + id: 0000-0001-5053-1211 identifiers: - - identifier: https://orcid.org/0000-0001-5053-1211 + - identifier: 0000-0001-5053-1211 scheme: orcid - affiliations: - name: University of Fribourg family_name: Charlier given_name: Bernadette + id: 0000-0001-6040-6211 identifiers: - - identifier: https://orcid.org/0000-0001-6040-6211 + - identifier: 0000-0001-6040-6211 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Parker given_name: Carl + id: 0000-0001-9795-4211 identifiers: - - identifier: https://orcid.org/0000-0001-9795-4211 + - identifier: 0000-0001-9795-4211 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Larson given_name: Simon + id: 0000-0002-0057-8211 identifiers: - - identifier: https://orcid.org/0000-0002-0057-8211 + - identifier: 0000-0002-0057-8211 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bruno given_name: ASDOURIAN + id: 0000-0002-5331-1211 identifiers: - - identifier: https://orcid.org/0000-0002-5331-1211 + - identifier: 0000-0002-5331-1211 scheme: orcid - affiliations: - name: University of Fribourg family_name: Medinger given_name: Joelle + id: 0000-0003-0540-9211 identifiers: - - identifier: https://orcid.org/0000-0003-0540-9211 + - identifier: 0000-0003-0540-9211 scheme: orcid - affiliations: - name: Northwestern University - name: Northwestern Argonne Institute for Science and Engineering family_name: Jewett given_name: Michael + id: 0000-0003-2948-6211 identifiers: - - identifier: https://orcid.org/0000-0003-2948-6211 + - identifier: 0000-0003-2948-6211 scheme: orcid - affiliations: - name: TU Wien family_name: Fleischner given_name: Herbert + id: 0000-0001-8588-5212 identifiers: - - identifier: https://orcid.org/0000-0001-8588-5212 + - identifier: 0000-0001-8588-5212 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: "Otto-Friedrich-Universit\xE4t" family_name: Ivens given_name: Bjoern + id: 0000-0001-8510-5212 identifiers: - - identifier: https://orcid.org/0000-0001-8510-5212 + - identifier: 0000-0001-8510-5212 scheme: orcid - affiliations: - name: TU Wien family_name: Glatz given_name: Bernhard + id: 0000-0002-2158-3212 identifiers: - - identifier: https://orcid.org/0000-0002-2158-3212 + - identifier: 0000-0002-2158-3212 scheme: orcid - affiliations: - name: University of Bamberg family_name: Sailer given_name: Sabrina + id: 0000-0002-2519-7212 identifiers: - - identifier: https://orcid.org/0000-0002-2519-7212 + - identifier: 0000-0002-2519-7212 scheme: orcid - affiliations: - name: California Institute of Technology - name: NASA Jet Propulsion Laboratory family_name: Bock given_name: James + id: 0000-0002-5710-5212 identifiers: - - identifier: https://orcid.org/0000-0002-5710-5212 + - identifier: 0000-0002-5710-5212 scheme: orcid - affiliations: - name: University of Bamberg family_name: Beimborn given_name: Daniel + id: 0000-0002-6294-0212 identifiers: - - identifier: https://orcid.org/0000-0002-6294-0212 + - identifier: 0000-0002-6294-0212 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Cudre-Mauroux given_name: Philippe + id: 0000-0003-2588-4212 identifiers: - - identifier: https://orcid.org/0000-0003-2588-4212 + - identifier: 0000-0003-2588-4212 scheme: orcid - affiliations: - name: TU Wien family_name: "G\xE4rtner" given_name: Thomas + id: 0000-0001-5985-9213 identifiers: - - identifier: https://orcid.org/0000-0001-5985-9213 + - identifier: 0000-0001-5985-9213 scheme: orcid - affiliations: - name: Northwestern University family_name: Kim given_name: J Julie + id: 0000-0001-9834-8213 identifiers: - - identifier: https://orcid.org/0000-0001-9834-8213 + - identifier: 0000-0001-9834-8213 scheme: orcid - affiliations: - name: Northwestern University family_name: Nyaanga given_name: Joy + id: 0000-0002-1402-9213 identifiers: - - identifier: https://orcid.org/0000-0002-1402-9213 + - identifier: 0000-0002-1402-9213 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Missinne given_name: Lut + id: 0000-0002-2827-9213 identifiers: - - identifier: https://orcid.org/0000-0002-2827-9213 + - identifier: 0000-0002-2827-9213 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Oh given_name: Seokjoon + id: 0000-0002-8980-5213 identifiers: - - identifier: https://orcid.org/0000-0002-8980-5213 + - identifier: 0000-0002-8980-5213 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Scharfetter given_name: Hermann + id: 0000-0003-2534-3213 identifiers: - - identifier: https://orcid.org/0000-0003-2534-3213 + - identifier: 0000-0003-2534-3213 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Zabara given_name: Tatiana + id: 0000-0001-5744-3214 identifiers: - - identifier: https://orcid.org/0000-0001-5744-3214 + - identifier: 0000-0001-5744-3214 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Saha given_name: Santanu + id: 0000-0001-7334-7214 identifiers: - - identifier: https://orcid.org/0000-0001-7334-7214 + - identifier: 0000-0001-7334-7214 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Liu given_name: Mingzhao + id: 0000-0002-0999-5214 identifiers: - - identifier: https://orcid.org/0000-0002-0999-5214 + - identifier: 0000-0002-0999-5214 scheme: orcid - affiliations: - name: TU Wien - name: University of Oxford family_name: Kratena given_name: Nicolas + id: 0000-0002-3080-7214 identifiers: - - identifier: https://orcid.org/0000-0002-3080-7214 + - identifier: 0000-0002-3080-7214 scheme: orcid - affiliations: - name: State University of New York - name: Brookhaven National Laboratory family_name: Rodriguez given_name: Jose + id: 0000-0002-5680-4214 identifiers: - - identifier: https://orcid.org/0000-0002-5680-4214 + - identifier: 0000-0002-5680-4214 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hirth given_name: Steffen + id: 0000-0002-6719-1214 identifiers: - - identifier: https://orcid.org/0000-0002-6719-1214 + - identifier: 0000-0002-6719-1214 scheme: orcid - affiliations: - name: CERN family_name: Sailer given_name: Andre + id: 0000-0002-9897-5214 identifiers: - - identifier: https://orcid.org/0000-0002-9897-5214 + - identifier: 0000-0002-9897-5214 scheme: orcid - affiliations: - name: TU Wien family_name: Mayer given_name: Peter + id: 0000-0003-3520-3214 identifiers: - - identifier: https://orcid.org/0000-0003-3520-3214 + - identifier: 0000-0003-3520-3214 scheme: orcid - affiliations: - name: Northwestern University family_name: Gergle given_name: Darren + id: 0000-0003-4052-0214 identifiers: - - identifier: https://orcid.org/0000-0003-4052-0214 + - identifier: 0000-0003-4052-0214 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Knorr given_name: Klaus-Holger + id: 0000-0003-4175-0214 identifiers: - - identifier: https://orcid.org/0000-0003-4175-0214 + - identifier: 0000-0003-4175-0214 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum Carl Gustav Carus" @@ -10098,71 +11503,81 @@ - name: OncoRay - National Center for Radiation Research in Oncolgogy family_name: Richter given_name: Christian + id: 0000-0003-4261-4214 identifiers: - - identifier: https://orcid.org/0000-0003-4261-4214 + - identifier: 0000-0003-4261-4214 scheme: orcid - affiliations: - name: TU Wien family_name: Wojcik given_name: Tomasz + id: 0000-0001-5091-5215 identifiers: - - identifier: https://orcid.org/0000-0001-5091-5215 + - identifier: 0000-0001-5091-5215 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shapiro given_name: Mikhail + id: 0000-0002-0291-4215 identifiers: - - identifier: https://orcid.org/0000-0002-0291-4215 + - identifier: 0000-0002-0291-4215 scheme: orcid - affiliations: - name: CERN family_name: Blanco Vinuela given_name: Enrique + id: 0000-0002-1450-1215 identifiers: - - identifier: https://orcid.org/0000-0002-1450-1215 + - identifier: 0000-0002-1450-1215 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Kando given_name: Noriko + id: 0000-0002-2133-0215 identifiers: - - identifier: https://orcid.org/0000-0002-2133-0215 + - identifier: 0000-0002-2133-0215 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Rabut given_name: Claire + id: 0000-0002-4571-1215 identifiers: - - identifier: https://orcid.org/0000-0002-4571-1215 + - identifier: 0000-0002-4571-1215 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wade given_name: Andrew + id: 0000-0002-5360-7215 identifiers: - - identifier: https://orcid.org/0000-0002-5360-7215 + - identifier: 0000-0002-5360-7215 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Messner given_name: Roman + id: 0000-0002-5710-6215 identifiers: - - identifier: https://orcid.org/0000-0002-5710-6215 + - identifier: 0000-0002-5710-6215 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Giovannella given_name: Simona + id: 0000-0002-6243-1215 identifiers: - - identifier: https://orcid.org/0000-0002-6243-1215 + - identifier: 0000-0002-6243-1215 scheme: orcid - affiliations: - name: TU Wien family_name: Halmschlager given_name: Daniel + id: 0000-0002-8863-1215 identifiers: - - identifier: https://orcid.org/0000-0002-8863-1215 + - identifier: 0000-0002-8863-1215 scheme: orcid - affiliations: - name: Forum Neue Medien Austria @@ -10170,187 +11585,213 @@ - name: Universitas Negeri Malang family_name: "Sch\xF6n" given_name: Sandra + id: 0000-0003-0267-5215 identifiers: - - identifier: https://orcid.org/0000-0003-0267-5215 + - identifier: 0000-0003-0267-5215 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Husinsky given_name: Wolfgang + id: 0000-0001-6287-2216 identifiers: - - identifier: https://orcid.org/0000-0001-6287-2216 + - identifier: 0000-0001-6287-2216 scheme: orcid - affiliations: - name: Northwestern University family_name: Smith given_name: John + id: 0000-0002-1809-8216 identifiers: - - identifier: https://orcid.org/0000-0002-1809-8216 + - identifier: 0000-0002-1809-8216 scheme: orcid - affiliations: - name: Northwestern University family_name: Aydin given_name: Koray + id: 0000-0002-3268-2216 identifiers: - - identifier: https://orcid.org/0000-0002-3268-2216 + - identifier: 0000-0002-3268-2216 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Reitinger given_name: Patrick + id: 0000-0002-6778-9216 identifiers: - - identifier: https://orcid.org/0000-0002-6778-9216 + - identifier: 0000-0002-6778-9216 scheme: orcid - affiliations: - name: University of Southern California - name: California Institute of Technology family_name: Garza given_name: Emmanuel + id: 0000-0003-1687-8216 identifiers: - - identifier: https://orcid.org/0000-0003-1687-8216 + - identifier: 0000-0003-1687-8216 scheme: orcid - affiliations: - name: Columbia College Chicago - name: Northwestern University family_name: Kannenberg, Jr. given_name: Gene + id: 0000-0001-5425-1217 identifiers: - - identifier: https://orcid.org/0000-0001-5425-1217 + - identifier: 0000-0001-5425-1217 scheme: orcid - affiliations: - name: CERN family_name: Ouharou given_name: Karam + id: 0000-0001-6248-9217 identifiers: - - identifier: https://orcid.org/0000-0001-6248-9217 + - identifier: 0000-0001-6248-9217 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kuenzer given_name: Thomas + id: 0000-0001-6882-1217 identifiers: - - identifier: https://orcid.org/0000-0001-6882-1217 + - identifier: 0000-0001-6882-1217 scheme: orcid - affiliations: - name: Northwestern University family_name: Adam given_name: Emma + id: 0000-0001-9940-9217 identifiers: - - identifier: https://orcid.org/0000-0001-9940-9217 + - identifier: 0000-0001-9940-9217 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhu given_name: Yimei + id: 0000-0002-1638-7217 identifiers: - - identifier: https://orcid.org/0000-0002-1638-7217 + - identifier: 0000-0002-1638-7217 scheme: orcid - affiliations: - name: CERN family_name: Aleksa given_name: Martin + id: 0000-0002-1936-9217 identifiers: - - identifier: https://orcid.org/0000-0002-1936-9217 + - identifier: 0000-0002-1936-9217 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Lammegger given_name: Roland + id: 0000-0002-8524-3217 identifiers: - - identifier: https://orcid.org/0000-0002-8524-3217 + - identifier: 0000-0002-8524-3217 scheme: orcid - affiliations: - name: TU Wien - name: University of Natural Resources and Life Sciences family_name: Freitag given_name: Stephan + id: 0000-0003-0179-2217 identifiers: - - identifier: https://orcid.org/0000-0003-0179-2217 + - identifier: 0000-0003-0179-2217 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Steinberger given_name: Stephanie + id: 0000-0003-0375-5217 identifiers: - - identifier: https://orcid.org/0000-0003-0375-5217 + - identifier: 0000-0003-0375-5217 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Jaikar given_name: Amol + id: 0000-0003-3204-6217 identifiers: - - identifier: https://orcid.org/0000-0003-3204-6217 + - identifier: 0000-0003-3204-6217 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Sim\xF5es" given_name: "M\xF3nica" + id: 0000-0003-3465-8217 identifiers: - - identifier: https://orcid.org/0000-0003-3465-8217 + - identifier: 0000-0003-3465-8217 scheme: orcid - affiliations: - name: Cornell University - name: Northwestern University family_name: Young given_name: Sera + id: 0000-0002-1763-1218 identifiers: - - identifier: https://orcid.org/0000-0002-1763-1218 + - identifier: 0000-0002-1763-1218 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Kreuzinger given_name: Norbert + id: 0000-0002-6400-8218 identifiers: - - identifier: https://orcid.org/0000-0002-6400-8218 + - identifier: 0000-0002-6400-8218 scheme: orcid - affiliations: - name: TU Wien family_name: Podewitz given_name: Maren + id: 0000-0001-7256-1219 identifiers: - - identifier: https://orcid.org/0000-0001-7256-1219 + - identifier: 0000-0001-7256-1219 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Luo given_name: Kaiwen + id: 0000-0002-1597-1219 identifiers: - - identifier: https://orcid.org/0000-0002-1597-1219 + - identifier: 0000-0002-1597-1219 scheme: orcid - affiliations: - name: Northwestern University family_name: Launay given_name: Robert + id: 0000-0002-6916-0219 identifiers: - - identifier: https://orcid.org/0000-0002-6916-0219 + - identifier: 0000-0002-6916-0219 scheme: orcid - affiliations: - name: Northwestern University family_name: Austin given_name: Makeda + id: 0000-0002-9027-7219 identifiers: - - identifier: https://orcid.org/0000-0002-9027-7219 + - identifier: 0000-0002-9027-7219 scheme: orcid - affiliations: - name: Northwestern University family_name: Ward given_name: Gregory + id: 0000-0002-9635-3219 identifiers: - - identifier: https://orcid.org/0000-0002-9635-3219 + - identifier: 0000-0002-9635-3219 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hammann given_name: Marcus + id: 0000-0003-4820-5219 identifiers: - - identifier: https://orcid.org/0000-0003-4820-5219 + - identifier: 0000-0003-4820-5219 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Gangl given_name: Peter + id: 0000-0001-8906-821X identifiers: - - identifier: https://orcid.org/0000-0001-8906-821X + - identifier: 0000-0001-8906-821X scheme: orcid - affiliations: - name: "Instituto de Investigaci\xF3n Sanitaria de la Fundaci\xF3n Jim\xE9nez D\xED\ @@ -10359,280 +11800,319 @@ - name: "Technische Universit\xE4t Wien" family_name: Alvarez-Llamas given_name: Gloria + id: 0000-0002-3313-721X identifiers: - - identifier: https://orcid.org/0000-0002-3313-721X + - identifier: 0000-0002-3313-721X scheme: orcid - affiliations: - name: Northwestern University - name: Edward Hines Jr. VA Medical Center family_name: Murray given_name: Wendy + id: 0000-0002-7547-621X identifiers: - - identifier: https://orcid.org/0000-0002-7547-621X + - identifier: 0000-0002-7547-621X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gomez given_name: Salvador + id: 0000-0002-7568-721X identifiers: - - identifier: https://orcid.org/0000-0002-7568-721X + - identifier: 0000-0002-7568-721X scheme: orcid - affiliations: - name: Northwestern University family_name: Kumar given_name: Manish + id: 0000-0003-1514-021X identifiers: - - identifier: https://orcid.org/0000-0003-1514-021X + - identifier: 0000-0003-1514-021X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hormozi given_name: Layla + id: 0000-0003-2119-621X identifiers: - - identifier: https://orcid.org/0000-0003-2119-621X + - identifier: 0000-0003-2119-621X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Monteverde given_name: Danielle + id: 0000-0002-0198-8220 identifiers: - - identifier: https://orcid.org/0000-0002-0198-8220 + - identifier: 0000-0002-0198-8220 scheme: orcid - affiliations: - name: University of Bamberg family_name: Jegan given_name: Robin + id: 0000-0002-0388-7220 identifiers: - - identifier: https://orcid.org/0000-0002-0388-7220 + - identifier: 0000-0002-0388-7220 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Gurtner given_name: Jean-Luc + id: 0000-0002-2580-8220 identifiers: - - identifier: https://orcid.org/0000-0002-2580-8220 + - identifier: 0000-0002-2580-8220 scheme: orcid - affiliations: - name: Northwestern University family_name: Yang given_name: Haiwang + id: 0000-0002-3568-6220 identifiers: - - identifier: https://orcid.org/0000-0002-3568-6220 + - identifier: 0000-0002-3568-6220 scheme: orcid - affiliations: - name: University of Fribourg - name: "\xC9cole Polytechnique F\xE9d\xE9rale de Lausanne" family_name: Rainer given_name: Gregor + id: 0000-0002-5805-2220 identifiers: - - identifier: https://orcid.org/0000-0002-5805-2220 + - identifier: 0000-0002-5805-2220 scheme: orcid - affiliations: - name: Northwestern University - name: Northwestern University Feinberg School of Medicine family_name: Etemadi given_name: Mozziyar + id: 0000-0002-6324-9220 identifiers: - - identifier: https://orcid.org/0000-0002-6324-9220 + - identifier: 0000-0002-6324-9220 scheme: orcid - affiliations: - name: CERN family_name: Satterthwaite given_name: Thomas + id: 0000-0002-6452-4220 identifiers: - - identifier: https://orcid.org/0000-0002-6452-4220 + - identifier: 0000-0002-6452-4220 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Pacher given_name: Corina + id: 0000-0002-6700-4220 identifiers: - - identifier: https://orcid.org/0000-0002-6700-4220 + - identifier: 0000-0002-6700-4220 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ma given_name: Hong + id: 0000-0002-8916-6220 identifiers: - - identifier: https://orcid.org/0000-0002-8916-6220 + - identifier: 0000-0002-8916-6220 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Giacomelli given_name: Paolo + id: 0000-0002-6368-7220 identifiers: - - identifier: https://orcid.org/0000-0002-6368-7220 + - identifier: 0000-0002-6368-7220 scheme: orcid - affiliations: - name: Northwestern University family_name: Orloff given_name: Ann + id: 0000-0002-9170-9220 identifiers: - - identifier: https://orcid.org/0000-0002-9170-9220 + - identifier: 0000-0002-9170-9220 scheme: orcid - affiliations: - name: TU Wien family_name: Mortezapoor given_name: Soroosh + id: 0000-0003-4941-3220 identifiers: - - identifier: https://orcid.org/0000-0003-4941-3220 + - identifier: 0000-0003-4941-3220 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Callegari given_name: Simone + id: 0000-0002-3773-0221 identifiers: - - identifier: https://orcid.org/0000-0002-3773-0221 + - identifier: 0000-0002-3773-0221 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Kreidenweiss given_name: Andrea + id: 0000-0002-5025-7221 identifiers: - - identifier: https://orcid.org/0000-0002-5025-7221 + - identifier: 0000-0002-5025-7221 scheme: orcid - affiliations: - name: Northwestern University family_name: Walter given_name: Nathan + id: 0000-0002-8122-1221 identifiers: - - identifier: https://orcid.org/0000-0002-8122-1221 + - identifier: 0000-0002-8122-1221 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Gierling given_name: Markus + id: 0000-0003-1374-8221 identifiers: - - identifier: https://orcid.org/0000-0003-1374-8221 + - identifier: 0000-0003-1374-8221 scheme: orcid - affiliations: - name: University College London - name: Brookhaven National Laboratory family_name: Robinson given_name: Ian + id: 0000-0003-4897-5221 identifiers: - - identifier: https://orcid.org/0000-0003-4897-5221 + - identifier: 0000-0003-4897-5221 scheme: orcid - affiliations: - name: University of Bamberg family_name: Hakimov given_name: Nikolay + id: 0000-0001-6063-4222 identifiers: - - identifier: https://orcid.org/0000-0001-6063-4222 + - identifier: 0000-0001-6063-4222 scheme: orcid - affiliations: - name: CERN family_name: Vanat given_name: Tomas + id: 0000-0002-1777-6222 identifiers: - - identifier: https://orcid.org/0000-0002-1777-6222 + - identifier: 0000-0002-1777-6222 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Joseph given_name: Thomas + id: 0000-0002-1985-1222 identifiers: - - identifier: https://orcid.org/0000-0002-1985-1222 + - identifier: 0000-0002-1985-1222 scheme: orcid - affiliations: - name: University of Bamberg family_name: Werner given_name: Christoph U. + id: 0000-0002-2408-7222 identifiers: - - identifier: https://orcid.org/0000-0002-2408-7222 + - identifier: 0000-0002-2408-7222 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Coyne given_name: Dennis + id: 0000-0002-6427-3222 identifiers: - - identifier: https://orcid.org/0000-0002-6427-3222 + - identifier: 0000-0002-6427-3222 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Jones given_name: Jeff + id: 0000-0002-7142-2222 identifiers: - - identifier: https://orcid.org/0000-0002-7142-2222 + - identifier: 0000-0002-7142-2222 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kranz given_name: Julian + id: 0000-0002-8580-8222 identifiers: - - identifier: https://orcid.org/0000-0002-8580-8222 + - identifier: 0000-0002-8580-8222 scheme: orcid - affiliations: - name: TU Wien - name: Massachusetts Institute of Technology family_name: Hasani given_name: Ramin + id: 0000-0002-9889-5222 identifiers: - - identifier: https://orcid.org/0000-0002-9889-5222 + - identifier: 0000-0002-9889-5222 scheme: orcid - affiliations: - name: University of Fribourg family_name: "G\xF3mez" given_name: Georgina + id: 0000-0003-3264-3222 identifiers: - - identifier: https://orcid.org/0000-0003-3264-3222 + - identifier: 0000-0003-3264-3222 scheme: orcid - affiliations: - name: Northwestern University family_name: Angeloni given_name: Nicholas + id: 0000-0002-0840-0223 identifiers: - - identifier: https://orcid.org/0000-0002-0840-0223 + - identifier: 0000-0002-0840-0223 scheme: orcid - affiliations: - name: CERN family_name: Cerutti given_name: Francesco + id: 0000-0002-9236-6223 identifiers: - - identifier: https://orcid.org/0000-0002-9236-6223 + - identifier: 0000-0002-9236-6223 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Krammer given_name: Gernot + id: 0000-0002-9557-5223 identifiers: - - identifier: https://orcid.org/0000-0002-9557-5223 + - identifier: 0000-0002-9557-5223 scheme: orcid - affiliations: - name: Northwestern University - name: American Bar Foundation family_name: Nielsen given_name: Laura Beth + id: 0000-0003-4802-4223 identifiers: - - identifier: https://orcid.org/0000-0003-4802-4223 + - identifier: 0000-0003-4802-4223 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chen given_name: Tracy Xi + id: 0000-0001-9152-6224 identifiers: - - identifier: https://orcid.org/0000-0001-9152-6224 + - identifier: 0000-0001-9152-6224 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Gerrits given_name: Tim + id: 0000-0001-9296-7224 identifiers: - - identifier: https://orcid.org/0000-0001-9296-7224 + - identifier: 0000-0001-9296-7224 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Tamt\xF6gl" given_name: Anton + id: 0000-0001-9590-6224 identifiers: - - identifier: https://orcid.org/0000-0001-9590-6224 + - identifier: 0000-0001-9590-6224 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bergamin given_name: Florian + id: 0000-0001-6436-1225 identifiers: - - identifier: https://orcid.org/0000-0001-6436-1225 + - identifier: 0000-0001-6436-1225 scheme: orcid - affiliations: - name: University of California San Francisco @@ -10640,465 +12120,530 @@ - name: California Institute of Technology family_name: Sabes given_name: Philip + id: 0000-0001-8397-6225 identifiers: - - identifier: https://orcid.org/0000-0001-8397-6225 + - identifier: 0000-0001-8397-6225 scheme: orcid - affiliations: - name: Northwestern University family_name: Surmeier given_name: D. James + id: 0000-0002-6376-5225 identifiers: - - identifier: https://orcid.org/0000-0002-6376-5225 + - identifier: 0000-0002-6376-5225 scheme: orcid - affiliations: - name: National Institute of Standards and Technology - name: Northwestern University family_name: Mukherjee given_name: Arnab + id: 0000-0002-6783-8225 identifiers: - - identifier: https://orcid.org/0000-0002-6783-8225 + - identifier: 0000-0002-6783-8225 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Willis given_name: Joshua + id: 0000-0002-9929-0225 identifiers: - - identifier: https://orcid.org/0000-0002-9929-0225 + - identifier: 0000-0002-9929-0225 scheme: orcid - affiliations: - name: University of Fribourg family_name: Abdul Hameed given_name: Owais + id: 0000-0003-1037-3225 identifiers: - - identifier: https://orcid.org/0000-0003-1037-3225 + - identifier: 0000-0003-1037-3225 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Anderson given_name: Jeremiah + id: 0000-0001-8925-5226 identifiers: - - identifier: https://orcid.org/0000-0001-8925-5226 + - identifier: 0000-0001-8925-5226 scheme: orcid - affiliations: - name: University of California San Diego - name: TU Wien family_name: Popmintchev given_name: Tenio + id: 0000-0002-2023-2226 identifiers: - - identifier: https://orcid.org/0000-0002-2023-2226 + - identifier: 0000-0002-2023-2226 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Tr\xE4ff" given_name: Jesper Larsson + id: 0000-0002-4864-9226 identifiers: - - identifier: https://orcid.org/0000-0002-4864-9226 + - identifier: 0000-0002-4864-9226 scheme: orcid - affiliations: - name: University of Fribourg family_name: Nador given_name: Jeffrey + id: 0000-0002-6502-7226 identifiers: - - identifier: https://orcid.org/0000-0002-6502-7226 + - identifier: 0000-0002-6502-7226 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Unverf\xE4rth" given_name: Jan + id: 0000-0002-8046-2226 identifiers: - - identifier: https://orcid.org/0000-0002-8046-2226 + - identifier: 0000-0002-8046-2226 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Flint given_name: Claas + id: 0000-0001-5164-8227 identifiers: - - identifier: https://orcid.org/0000-0001-5164-8227 + - identifier: 0000-0001-5164-8227 scheme: orcid - affiliations: - name: California Institute of Technology - name: NG Next, Northrop Grumman family_name: Fountaine given_name: Katherine + id: 0000-0002-0414-8227 identifiers: - - identifier: https://orcid.org/0000-0002-0414-8227 + - identifier: 0000-0002-0414-8227 scheme: orcid - affiliations: - name: TU Wien family_name: Gittenberger given_name: Bernhard + id: 0000-0002-2639-8227 identifiers: - - identifier: https://orcid.org/0000-0002-2639-8227 + - identifier: 0000-0002-2639-8227 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Eckstein given_name: Claudia + id: 0000-0002-4261-1227 identifiers: - - identifier: https://orcid.org/0000-0002-4261-1227 + - identifier: 0000-0002-4261-1227 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Rui + id: 0000-0003-0286-4227 identifiers: - - identifier: https://orcid.org/0000-0003-0286-4227 + - identifier: 0000-0003-0286-4227 scheme: orcid - affiliations: - name: Northwestern University family_name: Wu given_name: Yong + id: 0000-0003-3350-5227 identifiers: - - identifier: https://orcid.org/0000-0003-3350-5227 + - identifier: 0000-0003-3350-5227 scheme: orcid - affiliations: - name: Northwestern University family_name: Van Duyne given_name: Richard P + id: 0000-0001-8861-2228 identifiers: - - identifier: https://orcid.org/0000-0001-8861-2228 + - identifier: 0000-0001-8861-2228 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Abadeer given_name: Mina Nashaat Demian + id: 0000-0002-1088-3228 identifiers: - - identifier: https://orcid.org/0000-0002-1088-3228 + - identifier: 0000-0002-1088-3228 scheme: orcid - affiliations: - name: University of Fribourg family_name: Nicastro given_name: Raffaele + id: 0000-0002-5420-2228 identifiers: - - identifier: https://orcid.org/0000-0002-5420-2228 + - identifier: 0000-0002-5420-2228 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Deustua given_name: J. Emiliano + id: 0000-0001-8193-2229 identifiers: - - identifier: https://orcid.org/0000-0001-8193-2229 + - identifier: 0000-0001-8193-2229 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Richter given_name: Elisabeth-Marie + id: 0000-0002-0553-5229 identifiers: - - identifier: https://orcid.org/0000-0002-0553-5229 + - identifier: 0000-0002-0553-5229 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Malacrin\xF2" given_name: Antonino + id: 0000-0002-0811-1229 identifiers: - - identifier: https://orcid.org/0000-0002-0811-1229 + - identifier: 0000-0002-0811-1229 scheme: orcid - affiliations: - name: CERN family_name: Tarocco given_name: Nicola + id: 0000-0002-2227-1229 identifiers: - - identifier: https://orcid.org/0000-0002-2227-1229 + - identifier: 0000-0002-2227-1229 scheme: orcid - affiliations: - name: CERN - name: "ETH Z\xFCrich" family_name: Chernyavskaya given_name: Nadezda + id: 0000-0002-2264-2229 identifiers: - - identifier: https://orcid.org/0000-0002-2264-2229 + - identifier: 0000-0002-2264-2229 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Radic given_name: Drazen + id: 0000-0002-6901-0229 identifiers: - - identifier: https://orcid.org/0000-0002-6901-0229 + - identifier: 0000-0002-6901-0229 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Betzwieser given_name: Joseph + id: 0000-0003-1533-9229 identifiers: - - identifier: https://orcid.org/0000-0003-1533-9229 + - identifier: 0000-0003-1533-9229 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Deistler given_name: Manfred + id: 0000-0003-3949-6229 identifiers: - - identifier: https://orcid.org/0000-0003-3949-6229 + - identifier: 0000-0003-3949-6229 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Nunes given_name: Ana Sofia + id: 0000-0001-8361-622X identifiers: - - identifier: https://orcid.org/0000-0001-8361-622X + - identifier: 0000-0001-8361-622X scheme: orcid - affiliations: - name: Northwestern University family_name: Sapienza given_name: Paola + id: 0000-0002-3663-422X identifiers: - - identifier: https://orcid.org/0000-0002-3663-422X + - identifier: 0000-0002-3663-422X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gatkine given_name: Pradip + id: 0000-0002-1955-2230 identifiers: - - identifier: https://orcid.org/0000-0002-1955-2230 + - identifier: 0000-0002-1955-2230 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Giannopoulos given_name: Ioannis + id: 0000-0002-2556-5230 identifiers: - - identifier: https://orcid.org/0000-0002-2556-5230 + - identifier: 0000-0002-2556-5230 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Pichler given_name: Peter + id: 0000-0002-8671-2230 identifiers: - - identifier: https://orcid.org/0000-0002-8671-2230 + - identifier: 0000-0002-8671-2230 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Karpov given_name: Ivan + id: 0000-0002-9484-3230 identifiers: - - identifier: https://orcid.org/0000-0002-9484-3230 + - identifier: 0000-0002-9484-3230 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pearson given_name: Timothy + id: 0000-0001-5213-6231 identifiers: - - identifier: https://orcid.org/0000-0001-5213-6231 + - identifier: 0000-0001-5213-6231 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "M\xFCller" given_name: Bernhard + id: 0000-0001-5711-3231 identifiers: - - identifier: https://orcid.org/0000-0001-5711-3231 + - identifier: 0000-0001-5711-3231 scheme: orcid - affiliations: - name: Northwestern University family_name: Slater given_name: Jessica + id: 0000-0001-7281-5231 identifiers: - - identifier: https://orcid.org/0000-0001-7281-5231 + - identifier: 0000-0001-7281-5231 scheme: orcid - affiliations: - name: Northwestern University family_name: Chadwick given_name: Alexander + id: 0000-0001-9328-8231 identifiers: - - identifier: https://orcid.org/0000-0001-9328-8231 + - identifier: 0000-0001-9328-8231 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Xiang given_name: Rong + id: 0000-0002-0106-5231 identifiers: - - identifier: https://orcid.org/0000-0002-0106-5231 + - identifier: 0000-0002-0106-5231 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pachter given_name: Lior + id: 0000-0002-9164-6231 identifiers: - - identifier: https://orcid.org/0000-0002-9164-6231 + - identifier: 0000-0002-9164-6231 scheme: orcid - affiliations: - name: TU Wien family_name: Steinbauer given_name: Patrick + id: 0000-0003-3398-1231 identifiers: - - identifier: https://orcid.org/0000-0003-3398-1231 + - identifier: 0000-0003-3398-1231 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Lin given_name: Ruoqian + id: 0000-0003-3907-2231 identifiers: - - identifier: https://orcid.org/0000-0003-3907-2231 + - identifier: 0000-0003-3907-2231 scheme: orcid - affiliations: - name: Northwestern University family_name: Kumari given_name: Pushpa + id: 0000-0001-6610-1232 identifiers: - - identifier: https://orcid.org/0000-0001-6610-1232 + - identifier: 0000-0001-6610-1232 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Horstmann given_name: Jan + id: 0000-0001-8047-2232 identifiers: - - identifier: https://orcid.org/0000-0001-8047-2232 + - identifier: 0000-0001-8047-2232 scheme: orcid - affiliations: - name: Chuo University - name: National Institute of Informatics family_name: Tsunekawa given_name: Mao + id: 0000-0002-2132-6232 identifiers: - - identifier: https://orcid.org/0000-0002-2132-6232 + - identifier: 0000-0002-2132-6232 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Baikowski given_name: Martin + id: 0000-0002-4736-6232 identifiers: - - identifier: https://orcid.org/0000-0002-4736-6232 + - identifier: 0000-0002-4736-6232 scheme: orcid - affiliations: - name: CERN family_name: Jurik given_name: Nathan + id: 0000-0002-6066-7232 identifiers: - - identifier: https://orcid.org/0000-0002-6066-7232 + - identifier: 0000-0002-6066-7232 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Boychenko given_name: Serhiy + id: 0000-0002-6990-1232 identifiers: - - identifier: https://orcid.org/0000-0002-6990-1232 + - identifier: 0000-0002-6990-1232 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Dong given_name: Qiuyan + id: 0000-0002-6915-1232 identifiers: - - identifier: https://orcid.org/0000-0002-6915-1232 + - identifier: 0000-0002-6915-1232 scheme: orcid - affiliations: - name: Northwestern University family_name: Brown given_name: Robert + id: 0000-0002-9890-5232 identifiers: - - identifier: https://orcid.org/0000-0002-9890-5232 + - identifier: 0000-0002-9890-5232 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pastorelli given_name: Elena + id: 0000-0003-0682-1232 identifiers: - - identifier: https://orcid.org/0000-0003-0682-1232 + - identifier: 0000-0003-0682-1232 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Willeke given_name: Ferdinand + id: 0000-0003-3021-5232 identifiers: - - identifier: https://orcid.org/0000-0003-3021-5232 + - identifier: 0000-0003-3021-5232 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Senanayake given_name: Sanjaya + id: 0000-0003-3991-4232 identifiers: - - identifier: https://orcid.org/0000-0003-3991-4232 + - identifier: 0000-0003-3991-4232 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Tazl given_name: Oliver + id: 0000-0002-3251-2233 identifiers: - - identifier: https://orcid.org/0000-0002-3251-2233 + - identifier: 0000-0002-3251-2233 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Watson given_name: Thomas + id: 0000-0002-5921-3233 identifiers: - - identifier: https://orcid.org/0000-0002-5921-3233 + - identifier: 0000-0002-5921-3233 scheme: orcid - affiliations: - name: The University of Arizona - name: California Institute of Technology family_name: Roche given_name: Anna + id: 0000-0002-8481-4233 identifiers: - - identifier: https://orcid.org/0000-0002-8481-4233 + - identifier: 0000-0002-8481-4233 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Mach given_name: Iris + id: 0000-0003-2830-3233 identifiers: - - identifier: https://orcid.org/0000-0003-2830-3233 + - identifier: 0000-0003-2830-3233 scheme: orcid - affiliations: - name: Northwestern University family_name: Owen given_name: Benjamin + id: 0000-0002-4342-6234 identifiers: - - identifier: https://orcid.org/0000-0002-4342-6234 + - identifier: 0000-0002-4342-6234 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Pittet given_name: Serge + id: 0000-0002-6352-3234 identifiers: - - identifier: https://orcid.org/0000-0002-6352-3234 + - identifier: 0000-0002-6352-3234 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Borel given_name: Marine + id: 0000-0002-0306-5235 identifiers: - - identifier: https://orcid.org/0000-0002-0306-5235 + - identifier: 0000-0002-0306-5235 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare - name: Centro fermi family_name: Antonini given_name: Piergiorgio + id: 0000-0002-6784-3235 identifiers: - - identifier: https://orcid.org/0000-0002-6784-3235 + - identifier: 0000-0002-6784-3235 scheme: orcid - affiliations: - name: TU Wien family_name: Sulz given_name: Clemens + id: 0000-0002-8117-8235 identifiers: - - identifier: https://orcid.org/0000-0002-8117-8235 + - identifier: 0000-0002-8117-8235 scheme: orcid - affiliations: - name: CERN family_name: Au given_name: Mia + id: 0000-0002-8358-7235 identifiers: - - identifier: https://orcid.org/0000-0002-8358-7235 + - identifier: 0000-0002-8358-7235 scheme: orcid - affiliations: - name: CERN family_name: Haranko given_name: Mykyta + id: 0000-0002-9376-9235 identifiers: - - identifier: https://orcid.org/0000-0002-9376-9235 + - identifier: 0000-0002-9376-9235 scheme: orcid - affiliations: - name: University of Texas Medical Branch - name: University of Fribourg family_name: Szabo given_name: Csaba + id: 0000-0003-3110-4235 identifiers: - - identifier: https://orcid.org/0000-0003-3110-4235 + - identifier: 0000-0003-3110-4235 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Wied given_name: Peter + id: 0000-0003-3254-5235 identifiers: - - identifier: https://orcid.org/0000-0003-3254-5235 + - identifier: 0000-0003-3254-5235 scheme: orcid - affiliations: - name: Erste Group Bank AG @@ -11107,178 +12652,203 @@ - name: "Alpen-Adria-Universit\xE4t Klagenfurt" family_name: Kazianka given_name: Hannes + id: 0000-0003-3280-1235 identifiers: - - identifier: https://orcid.org/0000-0003-3280-1235 + - identifier: 0000-0003-3280-1235 scheme: orcid - affiliations: - name: TU Wien family_name: Popmintchev given_name: Dimitar + id: 0000-0003-4330-8235 identifiers: - - identifier: https://orcid.org/0000-0003-4330-8235 + - identifier: 0000-0003-4330-8235 scheme: orcid - affiliations: - name: Northwestern University family_name: Riedl given_name: Rachel Beatty + id: 0000-0001-8961-5236 identifiers: - - identifier: https://orcid.org/0000-0001-8961-5236 + - identifier: 0000-0001-8961-5236 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Enekwizu given_name: Ogochukwu + id: 0000-0001-9797-3236 identifiers: - - identifier: https://orcid.org/0000-0001-9797-3236 + - identifier: 0000-0001-9797-3236 scheme: orcid - affiliations: - name: Northwestern University - name: University of California Los Angeles family_name: Mackey given_name: Scott + id: 0000-0002-1414-7236 identifiers: - - identifier: https://orcid.org/0000-0002-1414-7236 + - identifier: 0000-0002-1414-7236 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Fischer given_name: Lisa Susanna + id: 0000-0002-3113-1236 identifiers: - - identifier: https://orcid.org/0000-0002-3113-1236 + - identifier: 0000-0002-3113-1236 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Peters given_name: Antje + id: 0000-0002-3602-0236 identifiers: - - identifier: https://orcid.org/0000-0002-3602-0236 + - identifier: 0000-0002-3602-0236 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wu given_name: Xiuqin + id: 0000-0002-4788-9236 identifiers: - - identifier: https://orcid.org/0000-0002-4788-9236 + - identifier: 0000-0002-4788-9236 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Leitner given_name: Christoph + id: 0000-0002-7058-7236 identifiers: - - identifier: https://orcid.org/0000-0002-7058-7236 + - identifier: 0000-0002-7058-7236 scheme: orcid - affiliations: - name: CERN family_name: Dutheil given_name: Yann + id: 0000-0002-8300-3236 identifiers: - - identifier: https://orcid.org/0000-0002-8300-3236 + - identifier: 0000-0002-8300-3236 scheme: orcid - affiliations: - name: Northwestern University family_name: yang given_name: tianrang + id: 0000-0003-0843-4236 identifiers: - - identifier: https://orcid.org/0000-0003-0843-4236 + - identifier: 0000-0003-0843-4236 scheme: orcid - affiliations: - name: Vrije Universiteit Amsterdam - name: Graz University of Technology family_name: "Drienovsk\xE1" given_name: Ivana + id: 0000-0003-1715-4236 identifiers: - - identifier: https://orcid.org/0000-0003-1715-4236 + - identifier: 0000-0003-1715-4236 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kusche given_name: Karl + id: 0000-0001-8697-9237 identifiers: - - identifier: https://orcid.org/0000-0001-8697-9237 + - identifier: 0000-0001-8697-9237 scheme: orcid - affiliations: - name: University of Fribourg family_name: "Besen\xE7on" given_name: Sylvain + id: 0000-0001-9321-2237 identifiers: - - identifier: https://orcid.org/0000-0001-9321-2237 + - identifier: 0000-0001-9321-2237 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Skowronski given_name: Piotr + id: 0000-0002-4753-2237 identifiers: - - identifier: https://orcid.org/0000-0002-4753-2237 + - identifier: 0000-0002-4753-2237 scheme: orcid - affiliations: - name: Northwestern University family_name: Evmenenko given_name: Guennadi + id: 0000-0002-6580-2237 identifiers: - - identifier: https://orcid.org/0000-0002-6580-2237 + - identifier: 0000-0002-6580-2237 scheme: orcid - affiliations: - name: Northwestern University family_name: Richards given_name: Jennifer + id: 0000-0003-1122-3237 identifiers: - - identifier: https://orcid.org/0000-0003-1122-3237 + - identifier: 0000-0003-1122-3237 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Czuppon given_name: Peter + id: 0000-0003-1462-7237 identifiers: - - identifier: https://orcid.org/0000-0003-1462-7237 + - identifier: 0000-0003-1462-7237 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Hamann given_name: Sandra + id: 0000-0001-5796-0238 identifiers: - - identifier: https://orcid.org/0000-0001-5796-0238 + - identifier: 0000-0001-5796-0238 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Phillips given_name: Alexandra + id: 0000-0001-5959-5238 identifiers: - - identifier: https://orcid.org/0000-0001-5959-5238 + - identifier: 0000-0001-5959-5238 scheme: orcid - affiliations: - name: TU Wien family_name: Grasser given_name: Tibor + id: 0000-0001-6536-2238 identifiers: - - identifier: https://orcid.org/0000-0001-6536-2238 + - identifier: 0000-0001-6536-2238 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hatta given_name: Yoshitaka + id: 0000-0001-6880-3238 identifiers: - - identifier: https://orcid.org/0000-0001-6880-3238 + - identifier: 0000-0001-6880-3238 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Vorabbi given_name: Matteo + id: 0000-0002-1012-7238 identifiers: - - identifier: https://orcid.org/0000-0002-1012-7238 + - identifier: 0000-0002-1012-7238 scheme: orcid - affiliations: - name: TU Wien family_name: Schuss given_name: Matthias + id: 0000-0002-6651-8238 identifiers: - - identifier: https://orcid.org/0000-0002-6651-8238 + - identifier: 0000-0002-6651-8238 scheme: orcid - affiliations: - name: University of Fribourg family_name: Carraro given_name: Katia + id: 0000-0002-7465-7238 identifiers: - - identifier: https://orcid.org/0000-0002-7465-7238 + - identifier: 0000-0002-7465-7238 scheme: orcid - affiliations: - name: TU Wien @@ -11286,107 +12856,122 @@ Foundation Ltd family_name: Arav given_name: Reuma + id: 0000-0003-1785-6238 identifiers: - - identifier: https://orcid.org/0000-0003-1785-6238 + - identifier: 0000-0003-1785-6238 scheme: orcid - affiliations: - name: CERN family_name: Eric given_name: Grancher + id: 0000-0003-2142-5238 identifiers: - - identifier: https://orcid.org/0000-0003-2142-5238 + - identifier: 0000-0003-2142-5238 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Tomico Cuenca given_name: Irene + id: 0000-0003-2171-6238 identifiers: - - identifier: https://orcid.org/0000-0003-2171-6238 + - identifier: 0000-0003-2171-6238 scheme: orcid - affiliations: - name: California Institute of Technology family_name: TANIKER given_name: Semih + id: 0000-0003-2423-9238 identifiers: - - identifier: https://orcid.org/0000-0003-2423-9238 + - identifier: 0000-0003-2423-9238 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Linares Moreau given_name: Mercedes + id: 0000-0003-3027-6238 identifiers: - - identifier: https://orcid.org/0000-0003-3027-6238 + - identifier: 0000-0003-3027-6238 scheme: orcid - affiliations: - name: TU Wien family_name: Hollaus given_name: Markus + id: 0000-0001-6063-7239 identifiers: - - identifier: https://orcid.org/0000-0001-6063-7239 + - identifier: 0000-0001-6063-7239 scheme: orcid - affiliations: - name: TU Wien family_name: Siassi given_name: Nawid + id: 0000-0001-6347-5239 identifiers: - - identifier: https://orcid.org/0000-0001-6347-5239 + - identifier: 0000-0001-6347-5239 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Siebenhofer given_name: Matthaeus + id: 0000-0002-0766-9239 identifiers: - - identifier: https://orcid.org/0000-0002-0766-9239 + - identifier: 0000-0002-0766-9239 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Strempel given_name: Lina + id: 0000-0002-1812-2239 identifiers: - - identifier: https://orcid.org/0000-0002-1812-2239 + - identifier: 0000-0002-1812-2239 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Constable given_name: Evan + id: 0000-0002-3047-1239 identifiers: - - identifier: https://orcid.org/0000-0002-3047-1239 + - identifier: 0000-0002-3047-1239 scheme: orcid - affiliations: - name: University of Fribourg family_name: Dumas given_name: Christelle + id: 0000-0002-6034-7239 identifiers: - - identifier: https://orcid.org/0000-0002-6034-7239 + - identifier: 0000-0002-6034-7239 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Hermes given_name: Klara + id: 0000-0002-6338-8239 identifiers: - - identifier: https://orcid.org/0000-0002-6338-8239 + - identifier: 0000-0002-6338-8239 scheme: orcid - affiliations: - name: CERN family_name: Rehm given_name: Florian + id: 0000-0002-8337-0239 identifiers: - - identifier: https://orcid.org/0000-0002-8337-0239 + - identifier: 0000-0002-8337-0239 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kaden given_name: Cornelia + id: 0000-0002-8891-3239 identifiers: - - identifier: https://orcid.org/0000-0002-8891-3239 + - identifier: 0000-0002-8891-3239 scheme: orcid - affiliations: - name: Know Center - name: "Technische Universit\xE4t Graz" family_name: Hussain given_name: Hussain + id: 0000-0002-0959-623X identifiers: - - identifier: https://orcid.org/0000-0002-0959-623X + - identifier: 0000-0002-0959-623X scheme: orcid - affiliations: - name: Graz University of Technology (90000) @@ -11395,36 +12980,41 @@ - name: Politechnika Krakowska im Tadeusza Kosciuszki family_name: "Ska\u0142o\u0144" given_name: Mateusz + id: 0000-0002-2747-923X identifiers: - - identifier: https://orcid.org/0000-0002-2747-923X + - identifier: 0000-0002-2747-923X scheme: orcid - affiliations: - name: University of Fribourg family_name: Hakala given_name: Sanja Maria + id: 0000-0002-3762-623X identifiers: - - identifier: https://orcid.org/0000-0002-3762-623X + - identifier: 0000-0002-3762-623X scheme: orcid - affiliations: - name: Northwestern University family_name: Thompson given_name: William + id: 0000-0002-5603-423X identifiers: - - identifier: https://orcid.org/0000-0002-5603-423X + - identifier: 0000-0002-5603-423X scheme: orcid - affiliations: - name: TU Wien family_name: Oswald given_name: Ralf + id: 0000-0002-6581-123X identifiers: - - identifier: https://orcid.org/0000-0002-6581-123X + - identifier: 0000-0002-6581-123X scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Nguyen given_name: Phuc + id: 0000-0003-1679-723X identifiers: - - identifier: https://orcid.org/0000-0003-1679-723X + - identifier: 0000-0003-1679-723X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" @@ -11432,172 +13022,196 @@ \ f\xFCr Mathematik" family_name: Leucht given_name: Anne + id: 0000-0003-3295-723X identifiers: - - identifier: https://orcid.org/0000-0003-3295-723X + - identifier: 0000-0003-3295-723X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: "Hern\xE1ndez Prieto" given_name: "\xC1lvaro" + id: 0000-0002-0340-0240 identifiers: - - identifier: https://orcid.org/0000-0002-0340-0240 + - identifier: 0000-0002-0340-0240 scheme: orcid - affiliations: - name: "Hubatka M\xFCller Vetter Rechtsanw\xE4lte" - name: University of Fribourg family_name: Cardinaux given_name: Basile + id: 0000-0002-3920-0240 identifiers: - - identifier: https://orcid.org/0000-0002-3920-0240 + - identifier: 0000-0002-3920-0240 scheme: orcid - affiliations: - name: Northwestern University family_name: Haddadi given_name: Abbas + id: 0000-0003-0514-0240 identifiers: - - identifier: https://orcid.org/0000-0003-0514-0240 + - identifier: 0000-0003-0514-0240 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Comeau given_name: Matthew Joseph + id: 0000-0003-0807-7240 identifiers: - - identifier: https://orcid.org/0000-0003-0807-7240 + - identifier: 0000-0003-0807-7240 scheme: orcid - affiliations: - name: Northwestern University family_name: Callmann given_name: Cassandra + id: 0000-0003-1561-3240 identifiers: - - identifier: https://orcid.org/0000-0003-1561-3240 + - identifier: 0000-0003-1561-3240 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kamencek given_name: Tomas + id: 0000-0001-5654-8241 identifiers: - - identifier: https://orcid.org/0000-0001-5654-8241 + - identifier: 0000-0001-5654-8241 scheme: orcid - affiliations: - name: TU Wien family_name: Cech given_name: Florian + id: 0000-0001-6725-5241 identifiers: - - identifier: https://orcid.org/0000-0001-6725-5241 + - identifier: 0000-0001-6725-5241 scheme: orcid - affiliations: - name: University of Bamberg family_name: Oehlhorn given_name: Caroline + id: 0000-0001-7218-5241 identifiers: - - identifier: https://orcid.org/0000-0001-7218-5241 + - identifier: 0000-0001-7218-5241 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Rao given_name: Arjun + id: 0000-0002-4810-0241 identifiers: - - identifier: https://orcid.org/0000-0002-4810-0241 + - identifier: 0000-0002-4810-0241 scheme: orcid - affiliations: - name: Northwestern University family_name: Arcudi given_name: Francesca + id: 0000-0003-1909-5241 identifiers: - - identifier: https://orcid.org/0000-0003-1909-5241 + - identifier: 0000-0003-1909-5241 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: "Ba\u015Far" given_name: Mustafa + id: 0000-0003-4828-3241 identifiers: - - identifier: https://orcid.org/0000-0003-4828-3241 + - identifier: 0000-0003-4828-3241 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Timmel given_name: Klaus + id: 0000-0003-4785-4241 identifiers: - - identifier: https://orcid.org/0000-0003-4785-4241 + - identifier: 0000-0003-4785-4241 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Protopopescu given_name: Serban + id: 0000-0001-7432-8242 identifiers: - - identifier: https://orcid.org/0000-0001-7432-8242 + - identifier: 0000-0001-7432-8242 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Grasso given_name: Dario + id: 0000-0001-7761-7242 identifiers: - - identifier: https://orcid.org/0000-0001-7761-7242 + - identifier: 0000-0001-7761-7242 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lederer given_name: Franziska + id: 0000-0002-0452-3242 identifiers: - - identifier: https://orcid.org/0000-0002-0452-3242 + - identifier: 0000-0002-0452-3242 scheme: orcid - affiliations: - name: Northwestern University family_name: Nishikawa given_name: Takashi + id: 0000-0002-2147-0242 identifiers: - - identifier: https://orcid.org/0000-0002-2147-0242 + - identifier: 0000-0002-2147-0242 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Porcelli given_name: Luca + id: 0000-0002-2153-4242 identifiers: - - identifier: https://orcid.org/0000-0002-2153-4242 + - identifier: 0000-0002-2153-4242 scheme: orcid - affiliations: - name: TU Wien family_name: Fabian given_name: Thomas + id: 0000-0002-4350-6242 identifiers: - - identifier: https://orcid.org/0000-0002-4350-6242 + - identifier: 0000-0002-4350-6242 scheme: orcid - affiliations: - name: Oak Ridge National Laboratory - name: Brookhaven National Laboratory family_name: Vetter given_name: Kurt + id: 0000-0002-7262-2242 identifiers: - - identifier: https://orcid.org/0000-0002-7262-2242 + - identifier: 0000-0002-7262-2242 scheme: orcid - affiliations: - name: Graz University of Technology - name: University of Maribor, Faculty of Electrical Engineering and Computer Science family_name: Stana Kleinschek given_name: Karin + id: 0000-0002-9189-0242 identifiers: - - identifier: https://orcid.org/0000-0002-9189-0242 + - identifier: 0000-0002-9189-0242 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Muthmann given_name: Nils + id: 0000-0003-0313-4242 identifiers: - - identifier: https://orcid.org/0000-0003-0313-4242 + - identifier: 0000-0003-0313-4242 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Wu given_name: Haosheng + id: 0000-0001-6979-2243 identifiers: - - identifier: https://orcid.org/0000-0001-6979-2243 + - identifier: 0000-0001-6979-2243 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nagpal given_name: Arun + id: 0000-0002-3862-0243 identifiers: - - identifier: https://orcid.org/0000-0002-3862-0243 + - identifier: 0000-0002-3862-0243 scheme: orcid - affiliations: - name: Zoologisches Forschungsinstitut und Museum Alexander Koenig @@ -11605,350 +13219,399 @@ - name: "Georg-August-Universit\xE4t G\xF6ttingen" family_name: Reininghaus given_name: Hannah + id: 0000-0002-4929-0243 identifiers: - - identifier: https://orcid.org/0000-0002-4929-0243 + - identifier: 0000-0002-4929-0243 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: Swiss Institute of Comparative Law family_name: Heckendorn Urscheler given_name: Lukas + id: 0000-0002-8747-3243 identifiers: - - identifier: https://orcid.org/0000-0002-8747-3243 + - identifier: 0000-0002-8747-3243 scheme: orcid - affiliations: - name: TU Wien family_name: "Pichlh\xF6fer" given_name: Alexander + id: 0000-0003-2497-5243 identifiers: - - identifier: https://orcid.org/0000-0003-2497-5243 + - identifier: 0000-0003-2497-5243 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Testa given_name: Adriano + id: 0000-0003-4423-9243 identifiers: - - identifier: https://orcid.org/0000-0003-4423-9243 + - identifier: 0000-0003-4423-9243 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Bacher given_name: Bettina + id: 0000-0001-7067-4244 identifiers: - - identifier: https://orcid.org/0000-0001-7067-4244 + - identifier: 0000-0001-7067-4244 scheme: orcid - affiliations: - name: CERN family_name: Okraska given_name: Jan + id: 0000-0002-1416-3244 identifiers: - - identifier: https://orcid.org/0000-0002-1416-3244 + - identifier: 0000-0002-1416-3244 scheme: orcid - affiliations: - name: Northwestern University family_name: Abdella given_name: Ryan + id: 0000-0002-6129-3244 identifiers: - - identifier: https://orcid.org/0000-0002-6129-3244 + - identifier: 0000-0002-6129-3244 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Macabenta given_name: Frank + id: 0000-0002-6583-3244 identifiers: - - identifier: https://orcid.org/0000-0002-6583-3244 + - identifier: 0000-0002-6583-3244 scheme: orcid - affiliations: - name: Northwestern University family_name: Rodriguez given_name: Michael + id: 0000-0002-7004-2244 identifiers: - - identifier: https://orcid.org/0000-0002-7004-2244 + - identifier: 0000-0002-7004-2244 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chen given_name: Natalie + id: 0000-0002-8961-6244 identifiers: - - identifier: https://orcid.org/0000-0002-8961-6244 + - identifier: 0000-0002-8961-6244 scheme: orcid - affiliations: - name: Northwestern University family_name: Cao given_name: Jian + id: 0000-0003-1023-5244 identifiers: - - identifier: https://orcid.org/0000-0003-1023-5244 + - identifier: 0000-0003-1023-5244 scheme: orcid - affiliations: - name: California Institute of Technology family_name: mahabal given_name: ashish + id: 0000-0003-2242-0244 identifiers: - - identifier: https://orcid.org/0000-0003-2242-0244 + - identifier: 0000-0003-2242-0244 scheme: orcid - affiliations: - name: University of Bamberg family_name: "Gr\xFCter" given_name: Thomas + id: 0000-0003-3529-9244 identifiers: - - identifier: https://orcid.org/0000-0003-3529-9244 + - identifier: 0000-0003-3529-9244 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Signorelli given_name: Giovanni + id: 0000-0001-8262-8245 identifiers: - - identifier: https://orcid.org/0000-0001-8262-8245 + - identifier: 0000-0001-8262-8245 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Treffkorn given_name: Jonathan + id: 0000-0002-4953-8245 identifiers: - - identifier: https://orcid.org/0000-0002-4953-8245 + - identifier: 0000-0002-4953-8245 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bilodid given_name: Yurii + id: 0000-0002-7810-1245 identifiers: - - identifier: https://orcid.org/0000-0002-7810-1245 + - identifier: 0000-0002-7810-1245 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Praetzel given_name: Leandra + id: 0000-0003-0401-5245 identifiers: - - identifier: https://orcid.org/0000-0003-0401-5245 + - identifier: 0000-0003-0401-5245 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Michl given_name: Jakob + id: 0000-0003-2539-3245 identifiers: - - identifier: https://orcid.org/0000-0003-2539-3245 + - identifier: 0000-0003-2539-3245 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schreiber given_name: Torben + id: 0000-0003-4837-6245 identifiers: - - identifier: https://orcid.org/0000-0003-4837-6245 + - identifier: 0000-0003-4837-6245 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: ABOU MANSOUR given_name: Eliane + id: 0000-0001-7792-9246 identifiers: - - identifier: https://orcid.org/0000-0001-7792-9246 + - identifier: 0000-0001-7792-9246 scheme: orcid - affiliations: - name: Montessorischule Forchheim - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Vollmer given_name: Barbara + id: 0000-0001-8513-6246 identifiers: - - identifier: https://orcid.org/0000-0001-8513-6246 + - identifier: 0000-0001-8513-6246 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Bernardi given_name: Johannes + id: 0000-0002-4626-9246 identifiers: - - identifier: https://orcid.org/0000-0002-4626-9246 + - identifier: 0000-0002-4626-9246 scheme: orcid - affiliations: - name: CERN family_name: Huschauer given_name: Alexander + id: 0000-0002-5255-4246 identifiers: - - identifier: https://orcid.org/0000-0002-5255-4246 + - identifier: 0000-0002-5255-4246 scheme: orcid - affiliations: - name: Northwestern University family_name: Ray given_name: Angela + id: 0000-0002-6430-1246 identifiers: - - identifier: https://orcid.org/0000-0002-6430-1246 + - identifier: 0000-0002-6430-1246 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Gruss given_name: Daniel + id: 0000-0002-7977-3246 identifiers: - - identifier: https://orcid.org/0000-0002-7977-3246 + - identifier: 0000-0002-7977-3246 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Koenig given_name: Simone + id: 0000-0003-0672-7246 identifiers: - - identifier: https://orcid.org/0000-0003-0672-7246 + - identifier: 0000-0003-0672-7246 scheme: orcid - affiliations: - name: Northwestern University family_name: Utama given_name: Rahardhika Arista + id: 0000-0001-7664-7247 identifiers: - - identifier: https://orcid.org/0000-0001-7664-7247 + - identifier: 0000-0001-7664-7247 scheme: orcid - affiliations: - name: Northwestern University family_name: Melkonyan given_name: Ferdinand + id: 0000-0001-8228-9247 identifiers: - - identifier: https://orcid.org/0000-0001-8228-9247 + - identifier: 0000-0001-8228-9247 scheme: orcid - affiliations: - name: TU Wien family_name: Hanna given_name: Natalia + id: 0000-0002-6792-8247 identifiers: - - identifier: https://orcid.org/0000-0002-6792-8247 + - identifier: 0000-0002-6792-8247 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Kratzer given_name: Regina + id: 0000-0002-9318-1247 identifiers: - - identifier: https://orcid.org/0000-0002-9318-1247 + - identifier: 0000-0002-9318-1247 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Zoll given_name: "Fryderyk Stanis\u0142aw" + id: 0000-0003-0405-5247 identifiers: - - identifier: https://orcid.org/0000-0003-0405-5247 + - identifier: 0000-0003-0405-5247 scheme: orcid - affiliations: - name: AIP Publishing LLC - name: CERN family_name: Beev given_name: Nikolai + id: 0000-0001-6963-5248 identifiers: - - identifier: https://orcid.org/0000-0001-6963-5248 + - identifier: 0000-0001-6963-5248 scheme: orcid - affiliations: - name: Northwestern University family_name: Ghena given_name: Branden + id: 0000-0001-8035-9248 identifiers: - - identifier: https://orcid.org/0000-0001-8035-9248 + - identifier: 0000-0001-8035-9248 scheme: orcid - affiliations: - name: Northwestern University family_name: Lee given_name: Si Eun + id: 0000-0002-6835-0248 identifiers: - - identifier: https://orcid.org/0000-0002-6835-0248 + - identifier: 0000-0002-6835-0248 scheme: orcid - affiliations: - name: TU Wien family_name: Milosevic given_name: Jelena + id: 0000-0001-5284-5249 identifiers: - - identifier: https://orcid.org/0000-0001-5284-5249 + - identifier: 0000-0001-5284-5249 scheme: orcid - affiliations: - name: Northwestern University family_name: Syed given_name: Furqan + id: 0000-0001-6266-4249 identifiers: - - identifier: https://orcid.org/0000-0001-6266-4249 + - identifier: 0000-0001-6266-4249 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Schmock given_name: Uwe + id: 0000-0001-9588-8249 identifiers: - - identifier: https://orcid.org/0000-0001-9588-8249 + - identifier: 0000-0001-9588-8249 scheme: orcid - affiliations: - name: Northwestern University family_name: Nap given_name: Rikkert + id: 0000-0002-1809-0249 identifiers: - - identifier: https://orcid.org/0000-0002-1809-0249 + - identifier: 0000-0002-1809-0249 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Fotev given_name: Ivan + id: 0000-0002-7762-1249 identifiers: - - identifier: https://orcid.org/0000-0002-7762-1249 + - identifier: 0000-0002-7762-1249 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Getzinger given_name: "G\xFCnter" + id: 0000-0002-9386-7249 identifiers: - - identifier: https://orcid.org/0000-0002-9386-7249 + - identifier: 0000-0002-9386-7249 scheme: orcid - affiliations: - name: CERN family_name: Krupa given_name: Michal + id: 0000-0003-0093-2249 identifiers: - - identifier: https://orcid.org/0000-0003-0093-2249 + - identifier: 0000-0003-0093-2249 scheme: orcid - affiliations: - name: Northwestern University family_name: Wallace given_name: Samuel + id: 0000-0001-5681-524X identifiers: - - identifier: https://orcid.org/0000-0001-5681-524X + - identifier: 0000-0001-5681-524X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: McGrath given_name: William + id: 0000-0002-9375-624X identifiers: - - identifier: https://orcid.org/0000-0002-9375-624X + - identifier: 0000-0002-9375-624X scheme: orcid - affiliations: - name: Northwestern University family_name: El-Zaatari given_name: Bassil + id: 0000-0002-2447-9250 identifiers: - - identifier: https://orcid.org/0000-0002-2447-9250 + - identifier: 0000-0002-2447-9250 scheme: orcid - affiliations: - name: Northwestern University family_name: Kahrilas given_name: Peter + id: 0000-0002-8260-1250 identifiers: - - identifier: https://orcid.org/0000-0002-8260-1250 + - identifier: 0000-0002-8260-1250 scheme: orcid - affiliations: - name: Northwestern University family_name: Sufrin given_name: Claire + id: 0000-0003-4922-0250 identifiers: - - identifier: https://orcid.org/0000-0003-4922-0250 + - identifier: 0000-0003-4922-0250 scheme: orcid - affiliations: - name: Stony Brook University - name: European Organization for Nuclear Research family_name: Buat given_name: Quentin + id: 0000-0001-7318-5251 identifiers: - - identifier: https://orcid.org/0000-0001-7318-5251 + - identifier: 0000-0001-7318-5251 scheme: orcid - affiliations: - name: Northwestern University family_name: SriBala given_name: Gorugantu + id: 0000-0001-8624-2251 identifiers: - - identifier: https://orcid.org/0000-0001-8624-2251 + - identifier: 0000-0001-8624-2251 scheme: orcid - affiliations: - name: University of Fribourg family_name: Xu given_name: Bing + id: 0000-0002-6449-0251 identifiers: - - identifier: https://orcid.org/0000-0002-6449-0251 + - identifier: 0000-0002-6449-0251 scheme: orcid - affiliations: - name: Yonsei University @@ -11956,29 +13619,33 @@ - name: "Technische Universit\xE4t Dresden" family_name: Heine given_name: Thomas + id: 0000-0003-2379-6251 identifiers: - - identifier: https://orcid.org/0000-0003-2379-6251 + - identifier: 0000-0003-2379-6251 scheme: orcid - affiliations: - name: TU Wien family_name: Nagaraju myakala given_name: Stephen + id: 0000-0001-7234-6252 identifiers: - - identifier: https://orcid.org/0000-0001-7234-6252 + - identifier: 0000-0001-7234-6252 scheme: orcid - affiliations: - name: TU Wien family_name: Peer given_name: Sandra + id: 0000-0002-1658-0252 identifiers: - - identifier: https://orcid.org/0000-0002-1658-0252 + - identifier: 0000-0002-1658-0252 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Baran given_name: Utku + id: 0000-0002-7740-4252 identifiers: - - identifier: https://orcid.org/0000-0002-7740-4252 + - identifier: 0000-0002-7740-4252 scheme: orcid - affiliations: - name: TU Wien @@ -11986,260 +13653,296 @@ - name: Secure Business Austria family_name: Tjoa given_name: A Min + id: 0000-0002-8295-9252 identifiers: - - identifier: https://orcid.org/0000-0002-8295-9252 + - identifier: 0000-0002-8295-9252 scheme: orcid - affiliations: - name: Northwestern University family_name: Bivens given_name: Jennifer + id: 0000-0002-8399-4252 identifiers: - - identifier: https://orcid.org/0000-0002-8399-4252 + - identifier: 0000-0002-8399-4252 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Poteat given_name: Christopher + id: 0000-0003-3859-6252 identifiers: - - identifier: https://orcid.org/0000-0003-3859-6252 + - identifier: 0000-0003-3859-6252 scheme: orcid - affiliations: - name: CERN family_name: Franzoni given_name: Giovanni + id: 0000-0001-9179-4253 identifiers: - - identifier: https://orcid.org/0000-0001-9179-4253 + - identifier: 0000-0001-9179-4253 scheme: orcid - affiliations: - name: TU Wien family_name: Hably given_name: Dora + id: 0000-0002-1541-8253 identifiers: - - identifier: https://orcid.org/0000-0002-1541-8253 + - identifier: 0000-0002-1541-8253 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lyu given_name: Ke + id: 0000-0002-2483-2253 identifiers: - - identifier: https://orcid.org/0000-0002-2483-2253 + - identifier: 0000-0002-2483-2253 scheme: orcid - affiliations: - name: TU Wien - name: TU-Wien family_name: Zessner given_name: Matthias + id: 0000-0003-1231-4253 identifiers: - - identifier: https://orcid.org/0000-0003-1231-4253 + - identifier: 0000-0003-1231-4253 scheme: orcid - affiliations: - name: TU Wien family_name: Vrecar given_name: Rafael + id: 0000-0001-6572-5254 identifiers: - - identifier: https://orcid.org/0000-0001-6572-5254 + - identifier: 0000-0001-6572-5254 scheme: orcid - affiliations: - name: "Laboratoire Souterrain \xE0 Bas Bruit" - name: CERN family_name: "L\xE1zaro Roche" given_name: Ignacio + id: 0000-0001-6769-1254 identifiers: - - identifier: https://orcid.org/0000-0001-6769-1254 + - identifier: 0000-0001-6769-1254 scheme: orcid - affiliations: - name: CERN family_name: Musa given_name: Luciano + id: 0000-0001-8814-2254 identifiers: - - identifier: https://orcid.org/0000-0001-8814-2254 + - identifier: 0000-0001-8814-2254 scheme: orcid - affiliations: - name: University of Bamberg family_name: Finzel given_name: Bettina + id: 0000-0002-9415-6254 identifiers: - - identifier: https://orcid.org/0000-0002-9415-6254 + - identifier: 0000-0002-9415-6254 scheme: orcid - affiliations: - name: Northwestern University family_name: R. Farkoosh given_name: Amir + id: 0000-0001-6210-6255 identifiers: - - identifier: https://orcid.org/0000-0001-6210-6255 + - identifier: 0000-0001-6210-6255 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Atalay given_name: Nejla Melike + id: 0000-0001-6355-5255 identifiers: - - identifier: https://orcid.org/0000-0001-6355-5255 + - identifier: 0000-0001-6355-5255 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Brameshuber given_name: Mario + id: 0000-0001-8672-2255 identifiers: - - identifier: https://orcid.org/0000-0001-8672-2255 + - identifier: 0000-0001-8672-2255 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Goraczek given_name: Malgorzata Zofia + id: 0000-0001-9347-1255 identifiers: - - identifier: https://orcid.org/0000-0001-9347-1255 + - identifier: 0000-0001-9347-1255 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: "Bi\u0142ko" given_name: Kacper + id: 0000-0002-0825-8255 identifiers: - - identifier: https://orcid.org/0000-0002-0825-8255 + - identifier: 0000-0002-0825-8255 scheme: orcid - affiliations: - name: Fraunhofer Austria - name: TU Wien family_name: Schlund given_name: Sebastian + id: 0000-0002-8142-0255 identifiers: - - identifier: https://orcid.org/0000-0002-8142-0255 + - identifier: 0000-0002-8142-0255 scheme: orcid - affiliations: - name: Northwestern University family_name: Fouda given_name: Mohamed + id: 0000-0002-9064-2255 identifiers: - - identifier: https://orcid.org/0000-0002-9064-2255 + - identifier: 0000-0002-9064-2255 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Collazo given_name: Andres + id: 0000-0003-2274-7255 identifiers: - - identifier: https://orcid.org/0000-0003-2274-7255 + - identifier: 0000-0003-2274-7255 scheme: orcid - affiliations: - name: Graz University of Technology - name: Know-Center family_name: Lindstaedt given_name: Stefanie + id: 0000-0003-3039-2255 identifiers: - - identifier: https://orcid.org/0000-0003-3039-2255 + - identifier: 0000-0003-3039-2255 scheme: orcid - affiliations: - name: TU Wien family_name: Hengl given_name: Ingeborg + id: 0000-0003-3259-0255 identifiers: - - identifier: https://orcid.org/0000-0003-3259-0255 + - identifier: 0000-0003-3259-0255 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Wang given_name: Xu + id: 0000-0001-9529-4256 identifiers: - - identifier: https://orcid.org/0000-0001-9529-4256 + - identifier: 0000-0001-9529-4256 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Song given_name: Yu + id: 0000-0002-4185-2256 identifiers: - - identifier: https://orcid.org/0000-0002-4185-2256 + - identifier: 0000-0002-4185-2256 scheme: orcid - affiliations: - name: TU Wien family_name: Weiss given_name: Maximilian + id: 0000-0002-4312-9256 identifiers: - - identifier: https://orcid.org/0000-0002-4312-9256 + - identifier: 0000-0002-4312-9256 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shi given_name: Xichen + id: 0000-0002-5366-9256 identifiers: - - identifier: https://orcid.org/0000-0002-5366-9256 + - identifier: 0000-0002-5366-9256 scheme: orcid - affiliations: - name: Northwestern University - name: Johns Hopkins University family_name: Dalrymple given_name: Robert + id: 0000-0002-7915-6256 identifiers: - - identifier: https://orcid.org/0000-0002-7915-6256 + - identifier: 0000-0002-7915-6256 scheme: orcid - affiliations: - name: Northwestern University family_name: Maltenfort given_name: Michael + id: 0000-0002-9039-8256 identifiers: - - identifier: https://orcid.org/0000-0002-9039-8256 + - identifier: 0000-0002-9039-8256 scheme: orcid - affiliations: - name: CERN family_name: Di Girolamo given_name: Alessandro + id: 0000-0002-9508-4256 identifiers: - - identifier: https://orcid.org/0000-0002-9508-4256 + - identifier: 0000-0002-9508-4256 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Diebold given_name: Ulrike + id: 0000-0003-0319-5256 identifiers: - - identifier: https://orcid.org/0000-0003-0319-5256 + - identifier: 0000-0003-0319-5256 scheme: orcid - affiliations: - name: Northwestern University family_name: Nicolaou given_name: Zachary + id: 0000-0003-4542-4256 identifiers: - - identifier: https://orcid.org/0000-0003-4542-4256 + - identifier: 0000-0003-4542-4256 scheme: orcid - affiliations: - name: Northwestern University family_name: Liu given_name: Xiaolong + id: 0000-0002-6186-5257 identifiers: - - identifier: https://orcid.org/0000-0002-6186-5257 + - identifier: 0000-0002-6186-5257 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Gauthier given_name: "Fran\xE7ois" + id: 0000-0003-4186-5257 identifiers: - - identifier: https://orcid.org/0000-0003-4186-5257 + - identifier: 0000-0003-4186-5257 scheme: orcid - affiliations: - name: TU Wien family_name: Winter given_name: Felix + id: 0000-0002-1012-1258 identifiers: - - identifier: https://orcid.org/0000-0002-1012-1258 + - identifier: 0000-0002-1012-1258 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Hegselmann given_name: Stefan + id: 0000-0002-2145-3258 identifiers: - - identifier: https://orcid.org/0000-0002-2145-3258 + - identifier: 0000-0002-2145-3258 scheme: orcid - affiliations: - name: CERN family_name: Touranakou given_name: Mary + id: 0000-0002-3682-3258 identifiers: - - identifier: https://orcid.org/0000-0002-3682-3258 + - identifier: 0000-0002-3682-3258 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Yanyang + id: 0000-0003-1144-0258 identifiers: - - identifier: https://orcid.org/0000-0003-1144-0258 + - identifier: 0000-0003-1144-0258 scheme: orcid - affiliations: - name: National Institute of Neurological Disorders and Stroke @@ -12248,613 +13951,699 @@ - name: California Institute of Technology family_name: min given_name: kyung-tai + id: 0000-0003-0983-4258 identifiers: - - identifier: https://orcid.org/0000-0003-0983-4258 + - identifier: 0000-0003-0983-4258 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Mancini-Terracciano given_name: Carlo + id: 0000-0001-8849-0259 identifiers: - - identifier: https://orcid.org/0000-0001-8849-0259 + - identifier: 0000-0001-8849-0259 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Goldshmid given_name: Roni H. + id: 0000-0001-9095-3259 identifiers: - - identifier: https://orcid.org/0000-0001-9095-3259 + - identifier: 0000-0001-9095-3259 scheme: orcid - affiliations: - name: CERN family_name: Schumacher given_name: "J\xF6rn" + id: 0000-0002-2185-2259 identifiers: - - identifier: https://orcid.org/0000-0002-2185-2259 + - identifier: 0000-0002-2185-2259 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Hofmann given_name: Oliver + id: 0000-0002-2120-3259 identifiers: - - identifier: https://orcid.org/0000-0002-2120-3259 + - identifier: 0000-0002-2120-3259 scheme: orcid - affiliations: - name: TU Wien family_name: Petrinas given_name: Valentinas + id: 0000-0002-9275-7259 identifiers: - - identifier: https://orcid.org/0000-0002-9275-7259 + - identifier: 0000-0002-9275-7259 scheme: orcid - affiliations: - name: California Institute of Technology - name: Pacific Integrated Energy family_name: Cushing given_name: Scott + id: 0000-0003-3538-2259 identifiers: - - identifier: https://orcid.org/0000-0003-3538-2259 + - identifier: 0000-0003-3538-2259 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Reitemeyer-Witt given_name: Ursula + id: 0000-0002-1399-525X identifiers: - - identifier: https://orcid.org/0000-0002-1399-525X + - identifier: 0000-0002-1399-525X scheme: orcid - affiliations: - name: Dominican School of Philosophy and Theology - name: University of Fribourg family_name: Sherwin given_name: Michael S. + id: 0000-0002-1520-225X identifiers: - - identifier: https://orcid.org/0000-0002-1520-225X + - identifier: 0000-0002-1520-225X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hepp given_name: Alexander + id: 0000-0003-1288-925X identifiers: - - identifier: https://orcid.org/0000-0003-1288-925X + - identifier: 0000-0003-1288-925X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Andersson given_name: Jan + id: 0000-0003-1857-825X identifiers: - - identifier: https://orcid.org/0000-0003-1857-825X + - identifier: 0000-0003-1857-825X scheme: orcid - affiliations: - name: Northwestern University family_name: fanton given_name: michael + id: 0000-0001-8566-5260 identifiers: - - identifier: https://orcid.org/0000-0001-8566-5260 + - identifier: 0000-0001-8566-5260 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Laschat given_name: Dirk + id: 0000-0002-4577-9260 identifiers: - - identifier: https://orcid.org/0000-0002-4577-9260 + - identifier: 0000-0002-4577-9260 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Bodlos given_name: Wolfgang + id: 0000-0002-6187-5260 identifiers: - - identifier: https://orcid.org/0000-0002-6187-5260 + - identifier: 0000-0002-6187-5260 scheme: orcid - affiliations: - name: TU Wien family_name: Palma given_name: Marco + id: 0000-0002-7631-3260 identifiers: - - identifier: https://orcid.org/0000-0002-7631-3260 + - identifier: 0000-0002-7631-3260 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Das given_name: Aniruddh + id: 0000-0002-2094-6261 identifiers: - - identifier: https://orcid.org/0000-0002-2094-6261 + - identifier: 0000-0002-2094-6261 scheme: orcid - affiliations: - name: Institute for Sustainability and Energy at Northwestern - name: Northwestern University family_name: Young given_name: Ryan + id: 0000-0002-5108-0261 identifiers: - - identifier: https://orcid.org/0000-0002-5108-0261 + - identifier: 0000-0002-5108-0261 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Siebenhofer given_name: "Matth\xE4us" + id: 0000-0002-6450-0261 identifiers: - - identifier: https://orcid.org/0000-0002-6450-0261 + - identifier: 0000-0002-6450-0261 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fukumori given_name: Rikuto + id: 0000-0003-0896-4261 identifiers: - - identifier: https://orcid.org/0000-0003-0896-4261 + - identifier: 0000-0003-0896-4261 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Greenberger given_name: Rebecca + id: 0000-0003-1583-0261 identifiers: - - identifier: https://orcid.org/0000-0003-1583-0261 + - identifier: 0000-0003-1583-0261 scheme: orcid - affiliations: - name: Northwestern University family_name: Hurst given_name: William + id: 0000-0001-5072-6262 identifiers: - - identifier: https://orcid.org/0000-0001-5072-6262 + - identifier: 0000-0001-5072-6262 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Merinov given_name: Boris + id: 0000-0002-2783-4262 identifiers: - - identifier: https://orcid.org/0000-0002-2783-4262 + - identifier: 0000-0002-2783-4262 scheme: orcid - affiliations: - name: "Universit\xE0 di Pisa" - name: "Universit\xE9 de Fribourg" family_name: Pallier given_name: Gabriel + id: 0000-0002-6219-7262 identifiers: - - identifier: https://orcid.org/0000-0002-6219-7262 + - identifier: 0000-0002-6219-7262 scheme: orcid - affiliations: - name: Northwestern University family_name: Adams given_name: Lauren + id: 0000-0002-6970-0262 identifiers: - - identifier: https://orcid.org/0000-0002-6970-0262 + - identifier: 0000-0002-6970-0262 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Hellwege given_name: Rubi Stephani + id: 0000-0002-5826-3263 identifiers: - - identifier: https://orcid.org/0000-0002-5826-3263 + - identifier: 0000-0002-5826-3263 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Palmer given_name: Levi + id: 0000-0002-7228-4263 identifiers: - - identifier: https://orcid.org/0000-0002-7228-4263 + - identifier: 0000-0002-7228-4263 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kleinman given_name: Lawrence + id: 0000-0003-1009-2263 identifiers: - - identifier: https://orcid.org/0000-0003-1009-2263 + - identifier: 0000-0003-1009-2263 scheme: orcid - affiliations: - name: Northwestern University family_name: Fong given_name: Ka-wing + id: 0000-0001-6995-0264 identifiers: - - identifier: https://orcid.org/0000-0001-6995-0264 + - identifier: 0000-0001-6995-0264 scheme: orcid - affiliations: - name: TU Wien family_name: "pf\xFCtzner" given_name: helmut + id: 0000-0001-8627-5264 identifiers: - - identifier: https://orcid.org/0000-0001-8627-5264 + - identifier: 0000-0001-8627-5264 scheme: orcid - affiliations: - name: CERN family_name: Peluaga Lozada given_name: Ignacio + id: 0000-0001-8759-3264 identifiers: - - identifier: https://orcid.org/0000-0001-8759-3264 + - identifier: 0000-0001-8759-3264 scheme: orcid - affiliations: - name: Northwestern University family_name: Bennett given_name: Jabbar + id: 0000-0001-9840-1264 identifiers: - - identifier: https://orcid.org/0000-0001-9840-1264 + - identifier: 0000-0001-9840-1264 scheme: orcid - affiliations: - name: University of Fribourg family_name: Durmaz given_name: Esra + id: 0000-0002-4345-2264 identifiers: - - identifier: https://orcid.org/0000-0002-4345-2264 + - identifier: 0000-0002-4345-2264 scheme: orcid - affiliations: - name: California Institute of Technology - name: Oak Ridge National Laboratory family_name: Ghosh given_name: Swarnava + id: 0000-0003-3800-5264 identifiers: - - identifier: https://orcid.org/0000-0003-3800-5264 + - identifier: 0000-0003-3800-5264 scheme: orcid - affiliations: - name: Northwestern University family_name: Taher given_name: Mariam + id: 0000-0001-6356-0265 identifiers: - - identifier: https://orcid.org/0000-0001-6356-0265 + - identifier: 0000-0001-6356-0265 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Franke given_name: Fabian + id: 0000-0001-8210-4265 identifiers: - - identifier: https://orcid.org/0000-0001-8210-4265 + - identifier: 0000-0001-8210-4265 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Xuan + id: 0000-0001-8214-7265 identifiers: - - identifier: https://orcid.org/0000-0001-8214-7265 + - identifier: 0000-0001-8214-7265 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Holtstiege given_name: Florian + id: 0000-0001-9381-5265 identifiers: - - identifier: https://orcid.org/0000-0001-9381-5265 + - identifier: 0000-0001-9381-5265 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gregoire given_name: John + id: 0000-0002-2863-5265 identifiers: - - identifier: https://orcid.org/0000-0002-2863-5265 + - identifier: 0000-0002-2863-5265 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Englert given_name: Julia + id: 0000-0002-5974-9265 identifiers: - - identifier: https://orcid.org/0000-0002-5974-9265 + - identifier: 0000-0002-5974-9265 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cleary given_name: Kieran + id: 0000-0002-8214-8265 identifiers: - - identifier: https://orcid.org/0000-0002-8214-8265 + - identifier: 0000-0002-8214-8265 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Url given_name: Philipp + id: 0000-0002-9126-3265 identifiers: - - identifier: https://orcid.org/0000-0002-9126-3265 + - identifier: 0000-0002-9126-3265 scheme: orcid - affiliations: - name: Brown University - name: California Institute of Technology family_name: Rodriguez given_name: Mauro + id: 0000-0003-0545-0265 identifiers: - - identifier: https://orcid.org/0000-0003-0545-0265 + - identifier: 0000-0003-0545-0265 scheme: orcid - affiliations: - name: Northwestern University family_name: ZHANG given_name: YAMIN + id: 0000-0003-4890-1265 identifiers: - - identifier: https://orcid.org/0000-0003-4890-1265 + - identifier: 0000-0003-4890-1265 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Stuart given_name: Andrew + id: 0000-0001-9091-7266 identifiers: - - identifier: https://orcid.org/0000-0001-9091-7266 + - identifier: 0000-0001-9091-7266 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Hoxha given_name: Endrit + id: 0000-0002-1510-9266 identifiers: - - identifier: https://orcid.org/0000-0002-1510-9266 + - identifier: 0000-0002-1510-9266 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Tropea given_name: Paola + id: 0000-0003-1899-2266 identifiers: - - identifier: https://orcid.org/0000-0003-1899-2266 + - identifier: 0000-0003-1899-2266 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Sabdyusheva Litschauer given_name: Inna + id: 0000-0001-5989-2267 identifiers: - - identifier: https://orcid.org/0000-0001-5989-2267 + - identifier: 0000-0001-5989-2267 scheme: orcid - affiliations: - name: Northwestern University family_name: Dong given_name: Dong + id: 0000-0002-3287-7267 identifiers: - - identifier: https://orcid.org/0000-0002-3287-7267 + - identifier: 0000-0002-3287-7267 scheme: orcid - affiliations: - name: Northwestern University family_name: Mitchell given_name: Jocelyn + id: 0000-0002-3374-9267 identifiers: - - identifier: https://orcid.org/0000-0002-3374-9267 + - identifier: 0000-0002-3374-9267 scheme: orcid - affiliations: - name: TU Wien family_name: "B\xFChler" given_name: Maximilian + id: 0000-0002-4382-4267 identifiers: - - identifier: https://orcid.org/0000-0002-4382-4267 + - identifier: 0000-0002-4382-4267 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Rosenberger given_name: Patrick + id: 0000-0002-5504-0267 identifiers: - - identifier: https://orcid.org/0000-0002-5504-0267 + - identifier: 0000-0002-5504-0267 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: N. IVAKI given_name: MOHAMMAD + id: 0000-0001-7540-7268 identifiers: - - identifier: https://orcid.org/0000-0001-7540-7268 + - identifier: 0000-0001-7540-7268 scheme: orcid - affiliations: - name: Northwestern University family_name: sharma given_name: andy + id: 0000-0002-2133-8268 identifiers: - - identifier: https://orcid.org/0000-0002-2133-8268 + - identifier: 0000-0002-2133-8268 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Davidoff given_name: Scott + id: 0000-0002-4417-7268 identifiers: - - identifier: https://orcid.org/0000-0002-4417-7268 + - identifier: 0000-0002-4417-7268 scheme: orcid - affiliations: - name: CERN family_name: Pierini given_name: Maurizio + id: 0000-0003-1939-4268 identifiers: - - identifier: https://orcid.org/0000-0003-1939-4268 + - identifier: 0000-0003-1939-4268 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Anaokar given_name: Sanket + id: 0000-0003-3228-1268 identifiers: - - identifier: https://orcid.org/0000-0003-3228-1268 + - identifier: 0000-0003-3228-1268 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Millar given_name: Lee + id: 0000-0003-1536-2269 identifiers: - - identifier: https://orcid.org/0000-0003-1536-2269 + - identifier: 0000-0003-1536-2269 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Mei given_name: Yuan + id: 0000-0003-2841-1269 identifiers: - - identifier: https://orcid.org/0000-0003-2841-1269 + - identifier: 0000-0003-2841-1269 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lee given_name: Yu + id: 0000-0001-5989-326X identifiers: - - identifier: https://orcid.org/0000-0001-5989-326X + - identifier: 0000-0001-5989-326X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Sch\xFCller" given_name: Peter + id: 0000-0002-1837-126X identifiers: - - identifier: https://orcid.org/0000-0002-1837-126X + - identifier: 0000-0002-1837-126X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Feist given_name: Florian + id: 0000-0003-4384-226X identifiers: - - identifier: https://orcid.org/0000-0003-4384-226X + - identifier: 0000-0003-4384-226X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Deile given_name: Mario + id: 0000-0001-5085-7270 identifiers: - - identifier: https://orcid.org/0000-0001-5085-7270 + - identifier: 0000-0001-5085-7270 scheme: orcid - affiliations: - name: University of Fribourg family_name: "Sch\xFCbel" given_name: Hanna + id: 0000-0001-5279-9270 identifiers: - - identifier: https://orcid.org/0000-0001-5279-9270 + - identifier: 0000-0001-5279-9270 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Dorfer given_name: Gerhard + id: 0000-0001-8844-1270 identifiers: - - identifier: https://orcid.org/0000-0001-8844-1270 + - identifier: 0000-0001-8844-1270 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Creutzburg given_name: Sascha + id: 0000-0002-4391-4270 identifiers: - - identifier: https://orcid.org/0000-0002-4391-4270 + - identifier: 0000-0002-4391-4270 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Gorji given_name: Ali + id: 0000-0002-4557-3270 identifiers: - - identifier: https://orcid.org/0000-0002-4557-3270 + - identifier: 0000-0002-4557-3270 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Le given_name: Tianhao + id: 0000-0002-6600-8270 identifiers: - - identifier: https://orcid.org/0000-0002-6600-8270 + - identifier: 0000-0002-6600-8270 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Poblaguev given_name: Andrei + id: 0000-0003-3755-8270 identifiers: - - identifier: https://orcid.org/0000-0003-3755-8270 + - identifier: 0000-0003-3755-8270 scheme: orcid - affiliations: - name: University of Bamberg family_name: Eismann given_name: Kathrin + id: 0000-0001-5925-7271 identifiers: - - identifier: https://orcid.org/0000-0001-5925-7271 + - identifier: 0000-0001-5925-7271 scheme: orcid - affiliations: - name: University of Fribourg family_name: "M\xFCller" given_name: Verena + id: 0000-0001-6039-7271 identifiers: - - identifier: https://orcid.org/0000-0001-6039-7271 + - identifier: 0000-0001-6039-7271 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Miles given_name: Timothy + id: 0000-0001-6591-3271 identifiers: - - identifier: https://orcid.org/0000-0001-6591-3271 + - identifier: 0000-0001-6591-3271 scheme: orcid - affiliations: - name: Northwestern University family_name: Lukas given_name: Thomas + id: 0000-0002-1920-5271 identifiers: - - identifier: https://orcid.org/0000-0002-1920-5271 + - identifier: 0000-0002-1920-5271 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Effertz given_name: Pedro + id: 0000-0002-7141-7271 identifiers: - - identifier: https://orcid.org/0000-0002-7141-7271 + - identifier: 0000-0002-7141-7271 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kopka given_name: Klaus + id: 0000-0003-4846-1271 identifiers: - - identifier: https://orcid.org/0000-0003-4846-1271 + - identifier: 0000-0003-4846-1271 scheme: orcid - affiliations: - name: CERN family_name: Janot given_name: Patrick + id: 0000-0001-7339-4272 identifiers: - - identifier: https://orcid.org/0000-0001-7339-4272 + - identifier: 0000-0001-7339-4272 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Freiman given_name: Robert + id: 0000-0001-8251-4272 identifiers: - - identifier: https://orcid.org/0000-0001-8251-4272 + - identifier: 0000-0001-8251-4272 scheme: orcid - affiliations: - name: Northwestern University family_name: Melix given_name: Patrick + id: 0000-0002-1027-1272 identifiers: - - identifier: https://orcid.org/0000-0002-1027-1272 + - identifier: 0000-0002-1027-1272 scheme: orcid - affiliations: - name: Cantonal Police Basel-Stadt - name: University of Fribourg family_name: Staubli given_name: Silvia + id: 0000-0002-4733-0272 identifiers: - - identifier: https://orcid.org/0000-0002-4733-0272 + - identifier: 0000-0002-4733-0272 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hanwell given_name: Marcus + id: 0000-0002-5851-5272 identifiers: - - identifier: https://orcid.org/0000-0002-5851-5272 + - identifier: 0000-0002-5851-5272 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Yi-Hua + id: 0000-0002-9615-9272 identifiers: - - identifier: https://orcid.org/0000-0002-9615-9272 + - identifier: 0000-0002-9615-9272 scheme: orcid - affiliations: - name: TU Wien family_name: Rosecker given_name: Veronika + id: 0000-0003-0772-7272 identifiers: - - identifier: https://orcid.org/0000-0003-0772-7272 + - identifier: 0000-0003-0772-7272 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhang given_name: Chao + id: 0000-0003-2298-6272 identifiers: - - identifier: https://orcid.org/0000-0003-2298-6272 + - identifier: 0000-0003-2298-6272 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: "Universit\xE4t f\xFCr Bodenkultur Wien" family_name: Maringer given_name: Franz Josef + id: 0000-0003-2492-2272 identifiers: - - identifier: https://orcid.org/0000-0003-2492-2272 + - identifier: 0000-0003-2492-2272 scheme: orcid - affiliations: - name: Northwestern University family_name: Stickland given_name: Rachael + id: 0000-0003-3398-4272 identifiers: - - identifier: https://orcid.org/0000-0003-3398-4272 + - identifier: 0000-0003-3398-4272 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Reichmann given_name: Klaus + id: 0000-0001-7970-6273 identifiers: - - identifier: https://orcid.org/0000-0001-7970-6273 + - identifier: 0000-0001-7970-6273 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: Borisov given_name: Sergey + id: 0000-0001-9318-8273 identifiers: - - identifier: https://orcid.org/0000-0001-9318-8273 + - identifier: 0000-0001-9318-8273 scheme: orcid - affiliations: - name: Advocate Medical Group @@ -12862,24 +14651,27 @@ - name: University of Chicago family_name: Pan given_name: Vivian + id: 0000-0002-1666-9273 identifiers: - - identifier: https://orcid.org/0000-0002-1666-9273 + - identifier: 0000-0002-1666-9273 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: "B\xD6HM" given_name: Helmut + id: 0000-0002-2023-8273 identifiers: - - identifier: https://orcid.org/0000-0002-2023-8273 + - identifier: 0000-0002-2023-8273 scheme: orcid - affiliations: - name: Xi'an Jiaotong University - name: Northwestern University family_name: Peng given_name: Jun + id: 0000-0002-2337-5273 identifiers: - - identifier: https://orcid.org/0000-0002-2337-5273 + - identifier: 0000-0002-2337-5273 scheme: orcid - affiliations: - name: European Organization for Nuclear Research @@ -12887,51 +14679,58 @@ - name: "Universit\xE0 degli Studi di Milano" family_name: Lazzaroni given_name: Massimo + id: 0000-0002-4094-1273 identifiers: - - identifier: https://orcid.org/0000-0002-4094-1273 + - identifier: 0000-0002-4094-1273 scheme: orcid - affiliations: - name: TU Wien family_name: Hahn given_name: Sebastian + id: 0000-0002-4855-6273 identifiers: - - identifier: https://orcid.org/0000-0002-4855-6273 + - identifier: 0000-0002-4855-6273 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Li given_name: Chen + id: 0000-0003-3436-6273 identifiers: - - identifier: https://orcid.org/0000-0003-3436-6273 + - identifier: 0000-0003-3436-6273 scheme: orcid - affiliations: - name: University of Fribourg family_name: Akrap given_name: Ana + id: 0000-0003-4493-5273 identifiers: - - identifier: https://orcid.org/0000-0003-4493-5273 + - identifier: 0000-0003-4493-5273 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Frenken given_name: Lena + id: 0000-0001-6198-0274 identifiers: - - identifier: https://orcid.org/0000-0001-6198-0274 + - identifier: 0000-0001-6198-0274 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Scekic given_name: Ognjen + id: 0000-0001-6573-8274 identifiers: - - identifier: https://orcid.org/0000-0001-6573-8274 + - identifier: 0000-0001-6573-8274 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Podlipec given_name: Rok + id: 0000-0001-8584-3274 identifiers: - - identifier: https://orcid.org/0000-0001-8584-3274 + - identifier: 0000-0001-8584-3274 scheme: orcid - affiliations: - name: CERN @@ -12939,130 +14738,148 @@ - name: IBM family_name: Muten given_name: Eraraya Ricardo + id: 0000-0002-6224-7274 identifiers: - - identifier: https://orcid.org/0000-0002-6224-7274 + - identifier: 0000-0002-6224-7274 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Yu + id: 0000-0003-3589-9274 identifiers: - - identifier: https://orcid.org/0000-0003-3589-9274 + - identifier: 0000-0003-3589-9274 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: Pepe given_name: Antonio + id: 0000-0002-5843-6275 identifiers: - - identifier: https://orcid.org/0000-0002-5843-6275 + - identifier: 0000-0002-5843-6275 scheme: orcid - affiliations: - name: CERN family_name: biagi given_name: stephen + id: 0000-0002-7085-7275 identifiers: - - identifier: https://orcid.org/0000-0002-7085-7275 + - identifier: 0000-0002-7085-7275 scheme: orcid - affiliations: - name: CERN family_name: Mornacchi given_name: Giuseppe + id: 0000-0002-7866-4275 identifiers: - - identifier: https://orcid.org/0000-0002-7866-4275 + - identifier: 0000-0002-7866-4275 scheme: orcid - affiliations: - name: TU Wien family_name: Rincon Galeana given_name: Hugo + id: 0000-0002-8152-1275 identifiers: - - identifier: https://orcid.org/0000-0002-8152-1275 + - identifier: 0000-0002-8152-1275 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Teacher Education HEP-BEJUNE family_name: "Bo\xE9chat-Heer" given_name: "St\xE9phanie" + id: 0000-0003-1967-3275 identifiers: - - identifier: https://orcid.org/0000-0003-1967-3275 + - identifier: 0000-0003-1967-3275 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Menegazzo given_name: Roberto + id: 0000-0002-3060-5276 identifiers: - - identifier: https://orcid.org/0000-0002-3060-5276 + - identifier: 0000-0002-3060-5276 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: Bremen International Graduate School of Social Science family_name: Latner given_name: Jonathan + id: 0000-0002-9771-1276 identifiers: - - identifier: https://orcid.org/0000-0002-9771-1276 + - identifier: 0000-0002-9771-1276 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Jahani given_name: Saman + id: 0000-0003-4831-2276 identifiers: - - identifier: https://orcid.org/0000-0003-4831-2276 + - identifier: 0000-0003-4831-2276 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Ranocha given_name: Hendrik + id: 0000-0002-3456-2277 identifiers: - - identifier: https://orcid.org/0000-0002-3456-2277 + - identifier: 0000-0002-3456-2277 scheme: orcid - affiliations: - name: Northwestern University family_name: Kovacs given_name: Istvan + id: 0000-0002-6890-6277 identifiers: - - identifier: https://orcid.org/0000-0002-6890-6277 + - identifier: 0000-0002-6890-6277 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Hlukhovych given_name: Adrianna + id: 0000-0002-4575-9278 identifiers: - - identifier: https://orcid.org/0000-0002-4575-9278 + - identifier: 0000-0002-4575-9278 scheme: orcid - affiliations: - name: Northwestern University family_name: Stoeger given_name: Thomas + id: 0000-0002-5540-4278 identifiers: - - identifier: https://orcid.org/0000-0002-5540-4278 + - identifier: 0000-0002-5540-4278 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Brown given_name: David + id: 0000-0002-9869-0278 identifiers: - - identifier: https://orcid.org/0000-0002-9869-0278 + - identifier: 0000-0002-9869-0278 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lucas given_name: Dirk + id: 0000-0003-0463-2278 identifiers: - - identifier: https://orcid.org/0000-0003-0463-2278 + - identifier: 0000-0003-0463-2278 scheme: orcid - affiliations: - name: Northwestern University family_name: Billard given_name: Thomas + id: 0000-0003-0641-9278 identifiers: - - identifier: https://orcid.org/0000-0003-0641-9278 + - identifier: 0000-0003-0641-9278 scheme: orcid - affiliations: - name: TU Wien family_name: Ali given_name: Syed Juned + id: 0000-0003-1221-0278 identifiers: - - identifier: https://orcid.org/0000-0003-1221-0278 + - identifier: 0000-0003-1221-0278 scheme: orcid - affiliations: - name: Centre for Maritime Research and Experimentation @@ -13070,727 +14887,829 @@ - name: "Universit\xE0 degli Studi di Enna Kore" family_name: Viola given_name: Salvatore + id: 0000-0001-9511-8279 identifiers: - - identifier: https://orcid.org/0000-0001-9511-8279 + - identifier: 0000-0001-9511-8279 scheme: orcid - affiliations: - name: Northwestern University family_name: Ma given_name: Junye + id: 0000-0002-1353-1279 identifiers: - - identifier: https://orcid.org/0000-0002-1353-1279 + - identifier: 0000-0002-1353-1279 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Vorraber given_name: Wolfgang + id: 0000-0002-1550-2279 identifiers: - - identifier: https://orcid.org/0000-0002-1550-2279 + - identifier: 0000-0002-1550-2279 scheme: orcid - affiliations: - name: TU Wien family_name: Erler given_name: Philipp + id: 0000-0002-2790-9279 identifiers: - - identifier: https://orcid.org/0000-0002-2790-9279 + - identifier: 0000-0002-2790-9279 scheme: orcid - affiliations: - name: CERN family_name: Mingrone given_name: Federica + id: 0000-0002-3710-3279 identifiers: - - identifier: https://orcid.org/0000-0002-3710-3279 + - identifier: 0000-0002-3710-3279 scheme: orcid - affiliations: - name: Northwestern University family_name: Pattabiraman given_name: Goutham + id: 0000-0002-5196-8279 identifiers: - - identifier: https://orcid.org/0000-0002-5196-8279 + - identifier: 0000-0002-5196-8279 scheme: orcid - affiliations: - name: California Institute of Technology family_name: fu given_name: donglong + id: 0000-0002-5680-6279 identifiers: - - identifier: https://orcid.org/0000-0002-5680-6279 + - identifier: 0000-0002-5680-6279 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Platz given_name: Daniel + id: 0000-0002-5923-0279 identifiers: - - identifier: https://orcid.org/0000-0002-5923-0279 + - identifier: 0000-0002-5923-0279 scheme: orcid - affiliations: - name: National Oceanic and Atmospheric Administration - name: California Institute of Technology family_name: Mullin given_name: Sean + id: 0000-0002-6225-3279 identifiers: - - identifier: https://orcid.org/0000-0002-6225-3279 + - identifier: 0000-0002-6225-3279 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "D\xF6bler" given_name: Niklas A. + id: 0000-0001-7935-727X identifiers: - - identifier: https://orcid.org/0000-0001-7935-727X + - identifier: 0000-0001-7935-727X scheme: orcid - affiliations: - name: Northwestern University family_name: Jacoby given_name: Sarah + id: 0000-0001-8377-827X identifiers: - - identifier: https://orcid.org/0000-0001-8377-827X + - identifier: 0000-0001-8377-827X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Redondo de Campos given_name: Laura + id: 0000-0002-1345-527X identifiers: - - identifier: https://orcid.org/0000-0002-1345-527X + - identifier: 0000-0002-1345-527X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Buchinger given_name: Julian + id: 0000-0002-4288-927X identifiers: - - identifier: https://orcid.org/0000-0002-4288-927X + - identifier: 0000-0002-4288-927X scheme: orcid - affiliations: - name: University of Bamberg family_name: "M\xFCnderlein" given_name: Kerstin-Anja + id: 0000-0002-6239-627X identifiers: - - identifier: https://orcid.org/0000-0002-6239-627X + - identifier: 0000-0002-6239-627X scheme: orcid - affiliations: - name: Northwestern University family_name: Fragione given_name: Giacomo + id: 0000-0002-7330-027X identifiers: - - identifier: https://orcid.org/0000-0002-7330-027X + - identifier: 0000-0002-7330-027X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Elcess given_name: Kimberley + id: 0000-0002-8012-127X identifiers: - - identifier: https://orcid.org/0000-0002-8012-127X + - identifier: 0000-0002-8012-127X scheme: orcid - affiliations: - name: CERN family_name: Wenninger given_name: Jorg + id: 0000-0002-9612-327X identifiers: - - identifier: https://orcid.org/0000-0002-9612-327X + - identifier: 0000-0002-9612-327X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Dumschat-Rehfeldt given_name: Denise + id: 0000-0002-6652-3280 identifiers: - - identifier: https://orcid.org/0000-0002-6652-3280 + - identifier: 0000-0002-6652-3280 scheme: orcid - affiliations: - name: "Coll\xE8ge de France" - name: University of Fribourg family_name: Besson given_name: Samantha + id: 0000-0002-8666-3280 identifiers: - - identifier: https://orcid.org/0000-0002-8666-3280 + - identifier: 0000-0002-8666-3280 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Pradana given_name: Yuga Riespa + id: 0000-0003-0713-7280 identifiers: - - identifier: https://orcid.org/0000-0003-0713-7280 + - identifier: 0000-0003-0713-7280 scheme: orcid - affiliations: - name: Northwestern University family_name: Jung given_name: Insub + id: 0000-0003-0827-9280 identifiers: - - identifier: https://orcid.org/0000-0003-0827-9280 + - identifier: 0000-0003-0827-9280 scheme: orcid - affiliations: - name: Northwestern University family_name: Partridge given_name: Benjamin + id: 0000-0003-2359-1280 identifiers: - - identifier: https://orcid.org/0000-0003-2359-1280 + - identifier: 0000-0003-2359-1280 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Lechtenberg given_name: Matthias + id: 0000-0003-3127-6280 identifiers: - - identifier: https://orcid.org/0000-0003-3127-6280 + - identifier: 0000-0003-3127-6280 scheme: orcid - affiliations: - name: Northwestern University family_name: Kenawas given_name: Yoes + id: 0000-0001-8456-4281 identifiers: - - identifier: https://orcid.org/0000-0001-8456-4281 + - identifier: 0000-0001-8456-4281 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: De Donato given_name: Cinzia + id: 0000-0002-9725-1281 identifiers: - - identifier: https://orcid.org/0000-0002-9725-1281 + - identifier: 0000-0002-9725-1281 scheme: orcid - affiliations: - name: Northwestern University family_name: Klabjan given_name: Diego + id: 0000-0003-4213-9281 identifiers: - - identifier: https://orcid.org/0000-0003-4213-9281 + - identifier: 0000-0003-4213-9281 scheme: orcid - affiliations: - name: Northwestern University family_name: Tipton given_name: Elizabeth + id: 0000-0001-5608-1282 identifiers: - - identifier: https://orcid.org/0000-0001-5608-1282 + - identifier: 0000-0001-5608-1282 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare - name: University of Trento family_name: Dalla Betta given_name: Gian-Franco + id: 0000-0001-5516-9282 identifiers: - - identifier: https://orcid.org/0000-0001-5516-9282 + - identifier: 0000-0001-5516-9282 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Castro given_name: Giuseppe + id: 0000-0002-4223-8282 identifiers: - - identifier: https://orcid.org/0000-0002-4223-8282 + - identifier: 0000-0002-4223-8282 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Locatelli given_name: Emanuele + id: 0000-0002-5507-1282 identifiers: - - identifier: https://orcid.org/0000-0002-5507-1282 + - identifier: 0000-0002-5507-1282 scheme: orcid - affiliations: - name: University of Twente - name: "University of M\xFCnster" family_name: Trautmann given_name: Heike + id: 0000-0002-9788-8282 identifiers: - - identifier: https://orcid.org/0000-0002-9788-8282 + - identifier: 0000-0002-9788-8282 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Quandt given_name: Thorsten + id: 0000-0003-1937-0282 identifiers: - - identifier: https://orcid.org/0000-0003-1937-0282 + - identifier: 0000-0003-1937-0282 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Sonnemann given_name: Till + id: 0000-0003-2632-7282 identifiers: - - identifier: https://orcid.org/0000-0003-2632-7282 + - identifier: 0000-0003-2632-7282 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shin given_name: Jieun + id: 0000-0003-3817-6282 identifiers: - - identifier: https://orcid.org/0000-0003-3817-6282 + - identifier: 0000-0003-3817-6282 scheme: orcid - affiliations: - name: University of Fribourg family_name: Schindler given_name: Kevin + id: 0000-0001-5487-2283 identifiers: - - identifier: https://orcid.org/0000-0001-5487-2283 + - identifier: 0000-0001-5487-2283 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wei given_name: Lu + id: 0000-0001-9170-2283 identifiers: - - identifier: https://orcid.org/0000-0001-9170-2283 + - identifier: 0000-0001-9170-2283 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Wotawa given_name: Franz + id: 0000-0002-0462-2283 identifiers: - - identifier: https://orcid.org/0000-0002-0462-2283 + - identifier: 0000-0002-0462-2283 scheme: orcid - affiliations: - name: University of Fribourg family_name: Anker given_name: Daniela + id: 0000-0002-0607-0283 identifiers: - - identifier: https://orcid.org/0000-0002-0607-0283 + - identifier: 0000-0002-0607-0283 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Jaeger given_name: Ralf Martin + id: 0000-0002-2628-2283 identifiers: - - identifier: https://orcid.org/0000-0002-2628-2283 + - identifier: 0000-0002-2628-2283 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Janeczek given_name: Christoph + id: 0000-0003-2313-8283 identifiers: - - identifier: https://orcid.org/0000-0003-2313-8283 + - identifier: 0000-0003-2313-8283 scheme: orcid - affiliations: - name: TU Wien family_name: Kovacic given_name: Iva + id: 0000-0002-0303-3284 identifiers: - - identifier: https://orcid.org/0000-0002-0303-3284 + - identifier: 0000-0002-0303-3284 scheme: orcid - affiliations: - name: University of Fribourg family_name: Loiero given_name: Salvatore + id: 0000-0002-5299-4284 identifiers: - - identifier: https://orcid.org/0000-0002-5299-4284 + - identifier: 0000-0002-5299-4284 scheme: orcid - affiliations: - name: Northwestern University family_name: fatima given_name: anees + id: 0000-0003-3329-2284 identifiers: - - identifier: https://orcid.org/0000-0003-3329-2284 + - identifier: 0000-0003-3329-2284 scheme: orcid - affiliations: - name: Universita degli Studi di Napoli Parthenope Dipartimento di Ingegneria - name: Istituto Nazionale di Fisica Nucleare family_name: Di Donato given_name: Camilla + id: 0000-0003-2213-9284 identifiers: - - identifier: https://orcid.org/0000-0003-2213-9284 + - identifier: 0000-0003-2213-9284 scheme: orcid - affiliations: - name: University of Fribourg family_name: Jazwinska given_name: Anna + id: 0000-0003-3881-9284 identifiers: - - identifier: https://orcid.org/0000-0003-3881-9284 + - identifier: 0000-0003-3881-9284 scheme: orcid - affiliations: - name: Johnson and Johnson Vision Care Inc - name: Northwestern University family_name: Nalluri given_name: Siva Krishna Mohan + id: 0000-0001-6955-3285 identifiers: - - identifier: https://orcid.org/0000-0001-6955-3285 + - identifier: 0000-0001-6955-3285 scheme: orcid - affiliations: - name: TU Wien - name: "Vienna University of Technology | Technische Universit\xE4t Wien" family_name: Fadai given_name: Alireza + id: 0000-0002-2829-3285 identifiers: - - identifier: https://orcid.org/0000-0002-2829-3285 + - identifier: 0000-0002-2829-3285 scheme: orcid - affiliations: - name: Northwestern University family_name: Sangwan given_name: Vinod + id: 0000-0002-5623-5285 identifiers: - - identifier: https://orcid.org/0000-0002-5623-5285 + - identifier: 0000-0002-5623-5285 scheme: orcid - affiliations: - name: Northwestern University family_name: Chiesa given_name: Morgane + id: 0000-0003-1500-4285 identifiers: - - identifier: https://orcid.org/0000-0003-1500-4285 + - identifier: 0000-0003-1500-4285 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Kempf given_name: Christian + id: 0000-0001-9238-6286 identifiers: - - identifier: https://orcid.org/0000-0001-9238-6286 + - identifier: 0000-0001-9238-6286 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Groh given_name: Michael + id: 0000-0001-9721-6286 identifiers: - - identifier: https://orcid.org/0000-0001-9721-6286 + - identifier: 0000-0001-9721-6286 scheme: orcid - affiliations: - name: Northwestern University family_name: Bothfeld given_name: William + id: 0000-0002-7329-0286 identifiers: - - identifier: https://orcid.org/0000-0002-7329-0286 + - identifier: 0000-0002-7329-0286 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Lee given_name: Shannon + id: 0000-0002-7541-3286 identifiers: - - identifier: https://orcid.org/0000-0002-7541-3286 + - identifier: 0000-0002-7541-3286 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Schneider given_name: Tapio + id: 0000-0001-5687-2287 identifiers: - - identifier: https://orcid.org/0000-0001-5687-2287 + - identifier: 0000-0001-5687-2287 scheme: orcid - affiliations: - name: TU Wien family_name: Vesely given_name: Ewa + id: 0000-0001-9962-9287 identifiers: - - identifier: https://orcid.org/0000-0001-9962-9287 + - identifier: 0000-0001-9962-9287 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Oliveros Mata given_name: Eduardo Sergio + id: 0000-0002-7277-7287 identifiers: - - identifier: https://orcid.org/0000-0002-7277-7287 + - identifier: 0000-0002-7277-7287 scheme: orcid - affiliations: - name: University of Fribourg family_name: Fiolka given_name: Gerhard + id: 0000-0002-7778-9287 identifiers: - - identifier: https://orcid.org/0000-0002-7778-9287 + - identifier: 0000-0002-7778-9287 scheme: orcid - affiliations: - name: Northwestern University family_name: Akbari given_name: Narges + id: 0000-0003-0819-4287 identifiers: - - identifier: https://orcid.org/0000-0003-0819-4287 + - identifier: 0000-0003-0819-4287 scheme: orcid - affiliations: - name: Northwestern University family_name: Gopakumar given_name: Abhijith + id: 0000-0001-5792-8289 identifiers: - - identifier: https://orcid.org/0000-0001-5792-8289 + - identifier: 0000-0001-5792-8289 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Keereetaweep given_name: Jantana + id: 0000-0001-8314-9289 identifiers: - - identifier: https://orcid.org/0000-0001-8314-9289 + - identifier: 0000-0001-8314-9289 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Henke given_name: Sebastian + id: 0000-0002-3431-3289 identifiers: - - identifier: https://orcid.org/0000-0002-3431-3289 + - identifier: 0000-0002-3431-3289 scheme: orcid - affiliations: - name: CERN family_name: Kousidis given_name: Konstantinos + id: 0000-0002-4914-4289 identifiers: - - identifier: https://orcid.org/0000-0002-4914-4289 + - identifier: 0000-0002-4914-4289 scheme: orcid - affiliations: - name: Northwestern University family_name: Evangelopoulos given_name: Michael + id: 0000-0002-5300-4289 identifiers: - - identifier: https://orcid.org/0000-0002-5300-4289 + - identifier: 0000-0002-5300-4289 scheme: orcid - affiliations: - name: New York University - name: Northwestern University family_name: Burbano Lombana given_name: Daniel Alberto + id: 0000-0002-7708-1289 identifiers: - - identifier: https://orcid.org/0000-0002-7708-1289 + - identifier: 0000-0002-7708-1289 scheme: orcid - affiliations: - name: CERN family_name: Almeida given_name: "Jo\xE3o Pedro" + id: 0000-0003-1198-0289 identifiers: - - identifier: https://orcid.org/0000-0003-1198-0289 + - identifier: 0000-0003-1198-0289 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Rosaz given_name: Guillaume + id: 0000-0001-5987-128X identifiers: - - identifier: https://orcid.org/0000-0001-5987-128X + - identifier: 0000-0001-5987-128X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: capasso given_name: luciano + id: 0000-0001-6434-728X identifiers: - - identifier: https://orcid.org/0000-0001-6434-728X + - identifier: 0000-0001-6434-728X scheme: orcid - affiliations: - name: Northwestern University family_name: Carlstone given_name: Jamie + id: 0000-0002-9288-328X identifiers: - - identifier: https://orcid.org/0000-0002-9288-328X + - identifier: 0000-0002-9288-328X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Windbacher given_name: Thomas + id: 0000-0001-6175-3290 identifiers: - - identifier: https://orcid.org/0000-0001-6175-3290 + - identifier: 0000-0001-6175-3290 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Hawkings given_name: Richard + id: 0000-0001-9719-0290 identifiers: - - identifier: https://orcid.org/0000-0001-9719-0290 + - identifier: 0000-0001-9719-0290 scheme: orcid - affiliations: - name: TU Wien family_name: Raab given_name: Maximilian + id: 0000-0002-5390-6290 identifiers: - - identifier: https://orcid.org/0000-0002-5390-6290 + - identifier: 0000-0002-5390-6290 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bley given_name: Christopher + id: 0000-0003-2301-1290 identifiers: - - identifier: https://orcid.org/0000-0003-2301-1290 + - identifier: 0000-0003-2301-1290 scheme: orcid - affiliations: - name: University of Fribourg family_name: Walch given_name: Michael + id: 0000-0001-7284-3291 identifiers: - - identifier: https://orcid.org/0000-0001-7284-3291 + - identifier: 0000-0001-7284-3291 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Rainer given_name: Robert + id: 0000-0002-0576-4291 identifiers: - - identifier: https://orcid.org/0000-0002-0576-4291 + - identifier: 0000-0002-0576-4291 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Helmer given_name: Patrick + id: 0000-0002-1199-6291 identifiers: - - identifier: https://orcid.org/0000-0002-1199-6291 + - identifier: 0000-0002-1199-6291 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Blaby given_name: Crysten + id: 0000-0002-1583-1291 identifiers: - - identifier: https://orcid.org/0000-0002-1583-1291 + - identifier: 0000-0002-1583-1291 scheme: orcid - affiliations: - name: CERN family_name: Grosso given_name: Gaia + id: 0000-0002-8303-3291 identifiers: - - identifier: https://orcid.org/0000-0002-8303-3291 + - identifier: 0000-0002-8303-3291 scheme: orcid - affiliations: - name: Institute of Physics - name: "Technische Universit\xE4t Wien" family_name: Chogondahalli Muniraju given_name: Naveen Kumar + id: 0000-0002-8867-8291 identifiers: - - identifier: https://orcid.org/0000-0002-8867-8291 + - identifier: 0000-0002-8867-8291 scheme: orcid - affiliations: - name: CERN family_name: Mrnjavac given_name: Teo + id: 0000-0003-1281-8291 identifiers: - - identifier: https://orcid.org/0000-0003-1281-8291 + - identifier: 0000-0003-1281-8291 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ke given_name: Hongwei + id: 0000-0003-1463-7291 identifiers: - - identifier: https://orcid.org/0000-0003-1463-7291 + - identifier: 0000-0003-1463-7291 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Coulinge given_name: Emilien + id: 0000-0003-3004-7291 identifiers: - - identifier: https://orcid.org/0000-0003-3004-7291 + - identifier: 0000-0003-3004-7291 scheme: orcid - affiliations: - name: Northwestern University family_name: rogers given_name: leoandra onnie + id: 0000-0001-5526-2292 identifiers: - - identifier: https://orcid.org/0000-0001-5526-2292 + - identifier: 0000-0001-5526-2292 scheme: orcid - affiliations: - name: SLAC National Accelerator Laboratory - name: Brookhaven National Laboratory family_name: Joshi given_name: Jyoti + id: 0000-0001-7045-4292 identifiers: - - identifier: https://orcid.org/0000-0001-7045-4292 + - identifier: 0000-0001-7045-4292 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kudruk given_name: Sergej + id: 0000-0002-6402-0292 identifiers: - - identifier: https://orcid.org/0000-0002-6402-0292 + - identifier: 0000-0002-6402-0292 scheme: orcid - affiliations: - name: University of Fribourg family_name: Feddersen given_name: Alexandra + id: 0000-0003-1669-5292 identifiers: - - identifier: https://orcid.org/0000-0003-1669-5292 + - identifier: 0000-0003-1669-5292 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Huang given_name: Bo-Shun + id: 0000-0003-2394-0292 identifiers: - - identifier: https://orcid.org/0000-0003-2394-0292 + - identifier: 0000-0003-2394-0292 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Knees given_name: Peter + id: 0000-0003-3906-1292 identifiers: - - identifier: https://orcid.org/0000-0003-3906-1292 + - identifier: 0000-0003-3906-1292 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Catholic University of America family_name: uniyal given_name: Rishabh + id: 0000-0001-7345-6293 identifiers: - - identifier: https://orcid.org/0000-0001-7345-6293 + - identifier: 0000-0001-7345-6293 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Jammoul given_name: Fatima + id: 0000-0001-9223-5293 identifiers: - - identifier: https://orcid.org/0000-0001-9223-5293 + - identifier: 0000-0001-9223-5293 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Nisati given_name: Aleandro + id: 0000-0002-5080-2293 identifiers: - - identifier: https://orcid.org/0000-0002-5080-2293 + - identifier: 0000-0002-5080-2293 scheme: orcid - affiliations: - name: University of Bamberg family_name: Sinz given_name: Elmar J. + id: 0000-0002-5552-3293 identifiers: - - identifier: https://orcid.org/0000-0002-5552-3293 + - identifier: 0000-0002-5552-3293 scheme: orcid - affiliations: - name: California Institute of Technology family_name: VOORHEES given_name: REBECCA + id: 0000-0003-1640-2293 identifiers: - - identifier: https://orcid.org/0000-0003-1640-2293 + - identifier: 0000-0003-1640-2293 scheme: orcid - affiliations: - name: TU Wien family_name: Pacher given_name: Andreas + id: 0000-0001-5149-6294 identifiers: - - identifier: https://orcid.org/0000-0001-5149-6294 + - identifier: 0000-0001-5149-6294 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhao given_name: Manhong + id: 0000-0002-7443-7294 identifiers: - - identifier: https://orcid.org/0000-0002-7443-7294 + - identifier: 0000-0002-7443-7294 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Illing given_name: Rico + id: 0000-0002-8089-6294 identifiers: - - identifier: https://orcid.org/0000-0002-8089-6294 + - identifier: 0000-0002-8089-6294 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Nagele given_name: Stefan + id: 0000-0003-1213-0294 identifiers: - - identifier: https://orcid.org/0000-0003-1213-0294 + - identifier: 0000-0003-1213-0294 scheme: orcid - affiliations: - name: Northwestern University family_name: Roche given_name: Kevin + id: 0000-0003-1730-2294 identifiers: - - identifier: https://orcid.org/0000-0003-1730-2294 + - identifier: 0000-0003-1730-2294 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: "Schn\xFCrch" given_name: Michael + id: 0000-0003-2946-9294 identifiers: - - identifier: https://orcid.org/0000-0003-2946-9294 + - identifier: 0000-0003-2946-9294 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Serna-Higuita given_name: Lina Maria + id: 0000-0001-5182-8295 identifiers: - - identifier: https://orcid.org/0000-0001-5182-8295 + - identifier: 0000-0001-5182-8295 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Johnson given_name: Andrew + id: 0000-0001-6917-1295 identifiers: - - identifier: https://orcid.org/0000-0001-6917-1295 + - identifier: 0000-0001-6917-1295 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yueh given_name: Simon + id: 0000-0001-7061-5295 identifiers: - - identifier: https://orcid.org/0000-0001-7061-5295 + - identifier: 0000-0001-7061-5295 scheme: orcid - affiliations: - name: CERN family_name: Massri given_name: Karim + id: 0000-0001-7533-6295 identifiers: - - identifier: https://orcid.org/0000-0001-7533-6295 + - identifier: 0000-0001-7533-6295 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" @@ -13798,458 +15717,522 @@ - name: Young Researchers and Elite Club family_name: Lohrasbi given_name: Sina + id: 0000-0001-9659-1295 identifiers: - - identifier: https://orcid.org/0000-0001-9659-1295 + - identifier: 0000-0001-9659-1295 scheme: orcid - affiliations: - name: University of California Irvine - name: CERN family_name: Guest given_name: Daniel + id: 0000-0002-4305-2295 identifiers: - - identifier: https://orcid.org/0000-0002-4305-2295 + - identifier: 0000-0002-4305-2295 scheme: orcid - affiliations: - name: Northwestern University family_name: Rapp given_name: David + id: 0000-0003-4515-5295 identifiers: - - identifier: https://orcid.org/0000-0003-4515-5295 + - identifier: 0000-0003-4515-5295 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Tioukov given_name: Valeri + id: 0000-0001-5981-5296 identifiers: - - identifier: https://orcid.org/0000-0001-5981-5296 + - identifier: 0000-0001-5981-5296 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Polyansky given_name: Dmitry + id: 0000-0002-0824-2296 identifiers: - - identifier: https://orcid.org/0000-0002-0824-2296 + - identifier: 0000-0002-0824-2296 scheme: orcid - affiliations: - name: Northwestern University family_name: Tropp given_name: Joshua + id: 0000-0002-1427-1296 identifiers: - - identifier: https://orcid.org/0000-0002-1427-1296 + - identifier: 0000-0002-1427-1296 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Defrance given_name: Fabien + id: 0000-0002-3746-5296 identifiers: - - identifier: https://orcid.org/0000-0002-3746-5296 + - identifier: 0000-0002-3746-5296 scheme: orcid - affiliations: - name: CERN - name: Bogazici University family_name: OZBOZDUMAN given_name: KAAN + id: 0000-0002-4713-7296 identifiers: - - identifier: https://orcid.org/0000-0002-4713-7296 + - identifier: 0000-0002-4713-7296 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Baldauf-Sommerbauer given_name: Georg + id: 0000-0002-6879-8296 identifiers: - - identifier: https://orcid.org/0000-0002-6879-8296 + - identifier: 0000-0002-6879-8296 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: "Haute \xE9cole p\xE9dagogique de Fribourg" family_name: Humbert given_name: Philippe + id: 0000-0003-2949-0296 identifiers: - - identifier: https://orcid.org/0000-0003-2949-0296 + - identifier: 0000-0003-2949-0296 scheme: orcid - affiliations: - name: Northwestern University family_name: Singh given_name: Udayan + id: 0000-0003-3359-6296 identifiers: - - identifier: https://orcid.org/0000-0003-3359-6296 + - identifier: 0000-0003-3359-6296 scheme: orcid - affiliations: - name: Northwestern University family_name: Wu given_name: Mingzheng + id: 0000-0003-4415-6296 identifiers: - - identifier: https://orcid.org/0000-0003-4415-6296 + - identifier: 0000-0003-4415-6296 scheme: orcid - affiliations: - name: TU Wien family_name: Bork given_name: Dominik + id: 0000-0001-8259-2297 identifiers: - - identifier: https://orcid.org/0000-0001-8259-2297 + - identifier: 0000-0001-8259-2297 scheme: orcid - affiliations: - name: Northwestern University family_name: Maimone given_name: Christina + id: 0000-0002-0402-6297 identifiers: - - identifier: https://orcid.org/0000-0002-0402-6297 + - identifier: 0000-0002-0402-6297 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Lengers given_name: Frank + id: 0000-0002-9571-4297 identifiers: - - identifier: https://orcid.org/0000-0002-9571-4297 + - identifier: 0000-0002-9571-4297 scheme: orcid - affiliations: - name: Northwestern University family_name: Peterson given_name: Aaron + id: 0000-0001-5809-4298 identifiers: - - identifier: https://orcid.org/0000-0001-5809-4298 + - identifier: 0000-0001-5809-4298 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Roth given_name: Peter M. + id: 0000-0001-9566-1298 identifiers: - - identifier: https://orcid.org/0000-0001-9566-1298 + - identifier: 0000-0001-9566-1298 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Cardini given_name: Alessandro + id: 0000-0002-6649-0298 identifiers: - - identifier: https://orcid.org/0000-0002-6649-0298 + - identifier: 0000-0002-6649-0298 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Kupper given_name: Martin + id: 0000-0003-4760-2298 identifiers: - - identifier: https://orcid.org/0000-0003-4760-2298 + - identifier: 0000-0003-4760-2298 scheme: orcid - affiliations: - name: Northwestern University family_name: Jurdy given_name: Donna + id: 0000-0001-6255-6299 identifiers: - - identifier: https://orcid.org/0000-0001-6255-6299 + - identifier: 0000-0001-6255-6299 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shukla given_name: Anil + id: 0000-0001-7797-7299 identifiers: - - identifier: https://orcid.org/0000-0001-7797-7299 + - identifier: 0000-0001-7797-7299 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Sachs given_name: Susanne + id: 0000-0001-9097-9299 identifiers: - - identifier: https://orcid.org/0000-0001-9097-9299 + - identifier: 0000-0001-9097-9299 scheme: orcid - affiliations: - name: Northwestern University family_name: Wakschlag given_name: Lauren + id: 0000-0001-9511-2299 identifiers: - - identifier: https://orcid.org/0000-0001-9511-2299 + - identifier: 0000-0001-9511-2299 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Kerber given_name: Michael + id: 0000-0002-8030-9299 identifiers: - - identifier: https://orcid.org/0000-0002-8030-9299 + - identifier: 0000-0002-8030-9299 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: University of Washington family_name: Mao given_name: Zhongtian + id: 0000-0003-3621-0299 identifiers: - - identifier: https://orcid.org/0000-0003-3621-0299 + - identifier: 0000-0003-3621-0299 scheme: orcid - affiliations: - name: Northwestern University family_name: Sala given_name: Ambre + id: 0000-0001-5185-029X identifiers: - - identifier: https://orcid.org/0000-0001-5185-029X + - identifier: 0000-0001-5185-029X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lim given_name: Sujung + id: 0000-0001-6040-729X identifiers: - - identifier: https://orcid.org/0000-0001-6040-729X + - identifier: 0000-0001-6040-729X scheme: orcid - affiliations: - name: Northwestern University family_name: Lee given_name: Hojoon + id: 0000-0001-6214-629X identifiers: - - identifier: https://orcid.org/0000-0001-6214-629X + - identifier: 0000-0001-6214-629X scheme: orcid - affiliations: - name: TU Wien family_name: "M\xFCller" given_name: Stefan + id: 0000-0001-8878-429X identifiers: - - identifier: https://orcid.org/0000-0001-8878-429X + - identifier: 0000-0001-8878-429X scheme: orcid - affiliations: - name: Northwestern University family_name: Hosseini given_name: Moein + id: 0000-0001-9523-929X identifiers: - - identifier: https://orcid.org/0000-0001-9523-929X + - identifier: 0000-0001-9523-929X scheme: orcid - affiliations: - name: TU Wien family_name: Hollaus given_name: Karl + id: 0000-0002-0395-629X identifiers: - - identifier: https://orcid.org/0000-0002-0395-629X + - identifier: 0000-0002-0395-629X scheme: orcid - affiliations: - name: Northwestern University family_name: Faerberg given_name: Denis + id: 0000-0003-2047-429X identifiers: - - identifier: https://orcid.org/0000-0003-2047-429X + - identifier: 0000-0003-2047-429X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Samantaray given_name: Paresh Kumar + id: 0000-0003-2533-929X identifiers: - - identifier: https://orcid.org/0000-0003-2533-929X + - identifier: 0000-0003-2533-929X scheme: orcid - affiliations: - name: Northwestern University family_name: Smith given_name: Jacob + id: 0000-0003-2719-029X identifiers: - - identifier: https://orcid.org/0000-0003-2719-029X + - identifier: 0000-0003-2719-029X scheme: orcid - affiliations: - name: National Cheng Kung University College of Medicine - name: European Organization for Nuclear Research family_name: Chen given_name: Yu-Hung + id: 0000-0003-3524-629X identifiers: - - identifier: https://orcid.org/0000-0003-3524-629X + - identifier: 0000-0003-3524-629X scheme: orcid - affiliations: - name: Northwestern University family_name: Onay given_name: Tuncer + id: 0000-0001-8891-2300 identifiers: - - identifier: https://orcid.org/0000-0001-8891-2300 + - identifier: 0000-0001-8891-2300 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: ROY CHOWDHURY given_name: SOMENATH + id: 0000-0001-9926-7300 identifiers: - - identifier: https://orcid.org/0000-0001-9926-7300 + - identifier: 0000-0001-9926-7300 scheme: orcid - affiliations: - name: Northwestern University family_name: Xiao given_name: Song + id: 0000-0002-3171-4300 identifiers: - - identifier: https://orcid.org/0000-0002-3171-4300 + - identifier: 0000-0002-3171-4300 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum M\xFCnster" - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Deuster given_name: Dirk + id: 0000-0002-3476-3300 identifiers: - - identifier: https://orcid.org/0000-0002-3476-3300 + - identifier: 0000-0002-3476-3300 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Granitzer given_name: Andreas-Nizar + id: 0000-0002-5839-4300 identifiers: - - identifier: https://orcid.org/0000-0002-5839-4300 + - identifier: 0000-0002-5839-4300 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Wilmes given_name: Stephan + id: 0000-0003-1084-2300 identifiers: - - identifier: https://orcid.org/0000-0003-1084-2300 + - identifier: 0000-0003-1084-2300 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Frischlich given_name: Lena + id: 0000-0001-5039-5301 identifiers: - - identifier: https://orcid.org/0000-0001-5039-5301 + - identifier: 0000-0001-5039-5301 scheme: orcid - affiliations: - name: TU Wien family_name: Kalasek given_name: Robert + id: 0000-0001-6189-5301 identifiers: - - identifier: https://orcid.org/0000-0001-6189-5301 + - identifier: 0000-0001-6189-5301 scheme: orcid - affiliations: - name: Northwestern University family_name: McLean given_name: David + id: 0000-0001-6337-2301 identifiers: - - identifier: https://orcid.org/0000-0001-6337-2301 + - identifier: 0000-0001-6337-2301 scheme: orcid - affiliations: - name: University of Bamberg family_name: Illies given_name: Christian F. R. + id: 0000-0002-1344-8301 identifiers: - - identifier: https://orcid.org/0000-0002-1344-8301 + - identifier: 0000-0002-1344-8301 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bauser given_name: Haley + id: 0000-0002-9677-3301 identifiers: - - identifier: https://orcid.org/0000-0002-9677-3301 + - identifier: 0000-0002-9677-3301 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Seewald given_name: Lukas + id: 0000-0001-7250-4302 identifiers: - - identifier: https://orcid.org/0000-0001-7250-4302 + - identifier: 0000-0001-7250-4302 scheme: orcid - affiliations: - name: University of Fribourg family_name: Britz given_name: Juliane + id: 0000-0001-8042-4302 identifiers: - - identifier: https://orcid.org/0000-0001-8042-4302 + - identifier: 0000-0001-8042-4302 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Grabner given_name: Peter + id: 0000-0002-0012-2302 identifiers: - - identifier: https://orcid.org/0000-0002-0012-2302 + - identifier: 0000-0002-0012-2302 scheme: orcid - affiliations: - name: Northwestern University family_name: Bartolo given_name: Laura + id: 0000-0002-2093-2302 identifiers: - - identifier: https://orcid.org/0000-0002-2093-2302 + - identifier: 0000-0002-2093-2302 scheme: orcid - affiliations: - name: Northwestern University family_name: Agrawal given_name: Ankit + id: 0000-0002-5519-0302 identifiers: - - identifier: https://orcid.org/0000-0002-5519-0302 + - identifier: 0000-0002-5519-0302 scheme: orcid - affiliations: - name: Northwestern University family_name: Chung-Fat-Yim given_name: Ashley + id: 0000-0002-6905-8302 identifiers: - - identifier: https://orcid.org/0000-0002-6905-8302 + - identifier: 0000-0002-6905-8302 scheme: orcid - affiliations: - name: CERN family_name: d'Enterria given_name: David + id: 0000-0002-5754-4303 identifiers: - - identifier: https://orcid.org/0000-0002-5754-4303 + - identifier: 0000-0002-5754-4303 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Stanford University family_name: Granados given_name: Eduardo + id: 0000-0002-6549-9303 identifiers: - - identifier: https://orcid.org/0000-0002-6549-9303 + - identifier: 0000-0002-6549-9303 scheme: orcid - affiliations: - name: Northwestern University family_name: Dembele given_name: Etienne + id: 0000-0002-7841-7303 identifiers: - - identifier: https://orcid.org/0000-0002-7841-7303 + - identifier: 0000-0002-7841-7303 scheme: orcid - affiliations: - name: CERN - name: Tufts University family_name: Kaya given_name: Fikriye Idil + id: 0000-0002-9775-7303 identifiers: - - identifier: https://orcid.org/0000-0002-9775-7303 + - identifier: 0000-0002-9775-7303 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "S\xE4nger" given_name: Patrick + id: 0000-0003-1840-7303 identifiers: - - identifier: https://orcid.org/0000-0003-1840-7303 + - identifier: 0000-0003-1840-7303 scheme: orcid - affiliations: - name: University of Fribourg - name: Nnamdi Azikiwe University Faculty of Basic Medical Sciences family_name: Mbagwu given_name: Smart + id: 0000-0003-4297-6303 identifiers: - - identifier: https://orcid.org/0000-0003-4297-6303 + - identifier: 0000-0003-4297-6303 scheme: orcid - affiliations: - name: Northwestern University family_name: Lauhon given_name: Lincoln + id: 0000-0001-6046-3304 identifiers: - - identifier: https://orcid.org/0000-0001-6046-3304 + - identifier: 0000-0001-6046-3304 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Bader given_name: Katharina + id: 0000-0002-0599-1304 identifiers: - - identifier: https://orcid.org/0000-0002-0599-1304 + - identifier: 0000-0002-0599-1304 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "Br\xFCndl" given_name: "J\xFCrgen" + id: 0000-0002-1338-5304 identifiers: - - identifier: https://orcid.org/0000-0002-1338-5304 + - identifier: 0000-0002-1338-5304 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Koglbauer given_name: Ioana + id: 0000-0002-1682-6304 identifiers: - - identifier: https://orcid.org/0000-0002-1682-6304 + - identifier: 0000-0002-1682-6304 scheme: orcid - affiliations: - name: University of Fribourg family_name: Glauser given_name: Dominique + id: 0000-0002-3228-7304 identifiers: - - identifier: https://orcid.org/0000-0002-3228-7304 + - identifier: 0000-0002-3228-7304 scheme: orcid - affiliations: - name: TU Wien family_name: Suter given_name: Georg + id: 0000-0002-8329-5304 identifiers: - - identifier: https://orcid.org/0000-0002-8329-5304 + - identifier: 0000-0002-8329-5304 scheme: orcid - affiliations: - name: TU Wien @@ -14257,36 +16240,41 @@ - name: "Bundesamt f\xFCr Wasserwirtschaft" family_name: Strauss given_name: Peter + id: 0000-0002-8693-9304 identifiers: - - identifier: https://orcid.org/0000-0002-8693-9304 + - identifier: 0000-0002-8693-9304 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Baglin given_name: Vincent + id: 0000-0003-3336-0304 identifiers: - - identifier: https://orcid.org/0000-0003-3336-0304 + - identifier: 0000-0003-3336-0304 scheme: orcid - affiliations: - name: Northwestern University family_name: Schad given_name: Erik + id: 0000-0001-7285-5305 identifiers: - - identifier: https://orcid.org/0000-0001-7285-5305 + - identifier: 0000-0001-7285-5305 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cutri given_name: Roc + id: 0000-0002-0077-2305 identifiers: - - identifier: https://orcid.org/0000-0002-0077-2305 + - identifier: 0000-0002-0077-2305 scheme: orcid - affiliations: - name: TU Wien family_name: Liu given_name: Meiqi + id: 0000-0002-0894-2305 identifiers: - - identifier: https://orcid.org/0000-0002-0894-2305 + - identifier: 0000-0002-0894-2305 scheme: orcid - affiliations: - name: "Kantonale Pr\xFCfungskommission Fachmittelschulen" @@ -14294,66 +16282,75 @@ - name: Kollegium Spiritus Sanctus Brig family_name: Keller given_name: Franziska + id: 0000-0002-6411-9305 identifiers: - - identifier: https://orcid.org/0000-0002-6411-9305 + - identifier: 0000-0002-6411-9305 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yao given_name: Shanshan + id: 0000-0003-2261-4305 identifiers: - - identifier: https://orcid.org/0000-0003-2261-4305 + - identifier: 0000-0003-2261-4305 scheme: orcid - affiliations: - name: TU Wien family_name: Stork given_name: Christiane + id: 0000-0003-3176-4305 identifiers: - - identifier: https://orcid.org/0000-0003-3176-4305 + - identifier: 0000-0003-3176-4305 scheme: orcid - affiliations: - name: Northwestern University family_name: Destin given_name: Mesmin + id: 0000-0001-5091-6306 identifiers: - - identifier: https://orcid.org/0000-0001-5091-6306 + - identifier: 0000-0001-5091-6306 scheme: orcid - affiliations: - name: Northwestern University - name: University of Chicago family_name: Nalabothu given_name: Siva + id: 0000-0001-6545-6306 identifiers: - - identifier: https://orcid.org/0000-0001-6545-6306 + - identifier: 0000-0001-6545-6306 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: WANG given_name: "Di\xE9" + id: 0000-0002-4175-4306 identifiers: - - identifier: https://orcid.org/0000-0002-4175-4306 + - identifier: 0000-0002-4175-4306 scheme: orcid - affiliations: - name: Northwestern University - name: Ann and Robert H Lurie Children's Hospital of Chicago family_name: Kan given_name: Kristin + id: 0000-0002-5739-3306 identifiers: - - identifier: https://orcid.org/0000-0002-5739-3306 + - identifier: 0000-0002-5739-3306 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Shaikh given_name: Mohd Saif + id: 0000-0002-7958-4306 identifiers: - - identifier: https://orcid.org/0000-0002-7958-4306 + - identifier: 0000-0002-7958-4306 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "J\xE4schke" given_name: Astrid + id: 0000-0003-0622-0306 identifiers: - - identifier: https://orcid.org/0000-0003-0622-0306 + - identifier: 0000-0003-0622-0306 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" @@ -14361,219 +16358,249 @@ - name: "Haute \xC9cole P\xE9dagogique de Fribourg" family_name: Coen given_name: "Pierre-Fran\xE7ois" + id: 0000-0003-1758-7306 identifiers: - - identifier: https://orcid.org/0000-0003-1758-7306 + - identifier: 0000-0003-1758-7306 scheme: orcid - affiliations: - name: California Institute of Technology - name: AbbVie Inc family_name: Hartung given_name: John + id: 0000-0001-5379-0307 identifiers: - - identifier: https://orcid.org/0000-0001-5379-0307 + - identifier: 0000-0001-5379-0307 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Fujita given_name: Etsuko + id: 0000-0002-0407-6307 identifiers: - - identifier: https://orcid.org/0000-0002-0407-6307 + - identifier: 0000-0002-0407-6307 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Schindler given_name: Christian + id: 0000-0002-6451-1307 identifiers: - - identifier: https://orcid.org/0000-0002-6451-1307 + - identifier: 0000-0002-6451-1307 scheme: orcid - affiliations: - name: HES-SO Valais Wallis - name: University of Fribourg family_name: Jacquemet given_name: Matthieu + id: 0000-0002-6942-7307 identifiers: - - identifier: https://orcid.org/0000-0002-6942-7307 + - identifier: 0000-0002-6942-7307 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Bolwin given_name: Konstantin + id: 0000-0001-7967-9308 identifiers: - - identifier: https://orcid.org/0000-0001-7967-9308 + - identifier: 0000-0001-7967-9308 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Yu + id: 0000-0002-0085-3308 identifiers: - - identifier: https://orcid.org/0000-0002-0085-3308 + - identifier: 0000-0002-0085-3308 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bragagnolo given_name: Dario + id: 0000-0002-0324-5308 identifiers: - - identifier: https://orcid.org/0000-0002-0324-5308 + - identifier: 0000-0002-0324-5308 scheme: orcid - affiliations: - name: HZDR Innovation GmbH - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Makarov given_name: Denys + id: 0000-0002-7177-4308 identifiers: - - identifier: https://orcid.org/0000-0002-7177-4308 + - identifier: 0000-0002-7177-4308 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: GRAND-CLEMENT given_name: Ludovic + id: 0000-0003-4384-6308 identifiers: - - identifier: https://orcid.org/0000-0003-4384-6308 + - identifier: 0000-0003-4384-6308 scheme: orcid - affiliations: - name: Northwestern University family_name: Newstead given_name: Clive + id: 0000-0001-6892-2309 identifiers: - - identifier: https://orcid.org/0000-0001-6892-2309 + - identifier: 0000-0001-6892-2309 scheme: orcid - affiliations: - name: Karolinska Institutet - name: University of Fribourg family_name: Mantel given_name: Pierre-Yves + id: 0000-0001-9526-9309 identifiers: - - identifier: https://orcid.org/0000-0001-9526-9309 + - identifier: 0000-0001-9526-9309 scheme: orcid - affiliations: - name: Northwestern University family_name: Joester given_name: Derk + id: 0000-0002-9663-3309 identifiers: - - identifier: https://orcid.org/0000-0002-9663-3309 + - identifier: 0000-0002-9663-3309 scheme: orcid - affiliations: - name: CERN family_name: Sarosi given_name: Gabor + id: 0000-0003-1468-6309 identifiers: - - identifier: https://orcid.org/0000-0003-1468-6309 + - identifier: 0000-0003-1468-6309 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Brossmann given_name: Ulrich + id: 0000-0001-5021-630X identifiers: - - identifier: https://orcid.org/0000-0001-5021-630X + - identifier: 0000-0001-5021-630X scheme: orcid - affiliations: - name: Northwestern University family_name: Vlahovska given_name: Petia + id: 0000-0001-7549-930X identifiers: - - identifier: https://orcid.org/0000-0001-7549-930X + - identifier: 0000-0001-7549-930X scheme: orcid - affiliations: - name: TU Wien family_name: Keck given_name: Sarah + id: 0000-0001-8541-930X identifiers: - - identifier: https://orcid.org/0000-0001-8541-930X + - identifier: 0000-0001-8541-930X scheme: orcid - affiliations: - name: Northwestern University - name: National Institutes of Health family_name: Arango given_name: Daniel + id: 0000-0001-9523-830X identifiers: - - identifier: https://orcid.org/0000-0001-9523-830X + - identifier: 0000-0001-9523-830X scheme: orcid - affiliations: - name: University of Fribourg - name: Newcastle University family_name: Schmid given_name: Michael + id: 0000-0003-1424-130X identifiers: - - identifier: https://orcid.org/0000-0003-1424-130X + - identifier: 0000-0003-1424-130X scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Shuo + id: 0000-0003-4913-730X identifiers: - - identifier: https://orcid.org/0000-0003-4913-730X + - identifier: 0000-0003-4913-730X scheme: orcid - affiliations: - name: TU Wien family_name: "Sch\xFCttelkopf" given_name: Philipp + id: 0000-0001-8449-2310 identifiers: - - identifier: https://orcid.org/0000-0001-8449-2310 + - identifier: 0000-0001-8449-2310 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Valette given_name: Matthieu + id: 0000-0002-8212-1310 identifiers: - - identifier: https://orcid.org/0000-0002-8212-1310 + - identifier: 0000-0002-8212-1310 scheme: orcid - affiliations: - name: University of Fribourg - name: "Haute Ecole P\xE9dagogique Fribourg" family_name: Geoffre given_name: Thierry + id: 0000-0003-0237-2310 identifiers: - - identifier: https://orcid.org/0000-0003-0237-2310 + - identifier: 0000-0003-0237-2310 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kotov given_name: Ivan + id: 0000-0003-2891-9310 identifiers: - - identifier: https://orcid.org/0000-0003-2891-9310 + - identifier: 0000-0003-2891-9310 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shepherd given_name: Joseph + id: 0000-0003-3181-9310 identifiers: - - identifier: https://orcid.org/0000-0003-3181-9310 + - identifier: 0000-0003-3181-9310 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Wenz given_name: Dr. Mark + id: 0000-0001-7839-5311 identifiers: - - identifier: https://orcid.org/0000-0001-7839-5311 + - identifier: 0000-0001-7839-5311 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Andriot given_name: David + id: 0000-0002-4552-7311 identifiers: - - identifier: https://orcid.org/0000-0002-4552-7311 + - identifier: 0000-0002-4552-7311 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Yorov given_name: Tsvetan + id: 0000-0002-4954-8312 identifiers: - - identifier: https://orcid.org/0000-0002-4954-8312 + - identifier: 0000-0002-4954-8312 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Mori given_name: Shohei + id: 0000-0003-0540-7312 identifiers: - - identifier: https://orcid.org/0000-0003-0540-7312 + - identifier: 0000-0003-0540-7312 scheme: orcid - affiliations: - name: TU Wien - name: "Medizinische Universit\xE4t Graz" family_name: Birner-Gruenberger given_name: Ruth + id: 0000-0003-3950-0312 identifiers: - - identifier: https://orcid.org/0000-0003-3950-0312 + - identifier: 0000-0003-3950-0312 scheme: orcid - affiliations: - name: ICOMOS Austria @@ -14583,358 +16610,408 @@ - name: Journal of Comparative Cultural Studies in Architecture (jccs-a) family_name: Bornberg given_name: Renate + id: 0000-0001-6954-1313 identifiers: - - identifier: https://orcid.org/0000-0001-6954-1313 + - identifier: 0000-0001-6954-1313 scheme: orcid - affiliations: - name: L.K. Paul & Associates, Psychological Services Inc. - name: California Institute of Technology family_name: Paul given_name: Lynn + id: 0000-0002-3128-8313 identifiers: - - identifier: https://orcid.org/0000-0002-3128-8313 + - identifier: 0000-0002-3128-8313 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Ravaioli given_name: Emmanuele + id: 0000-0002-7651-5313 identifiers: - - identifier: https://orcid.org/0000-0002-7651-5313 + - identifier: 0000-0002-7651-5313 scheme: orcid - affiliations: - name: TU Wien family_name: Reif given_name: Daniela + id: 0000-0002-8089-9313 identifiers: - - identifier: https://orcid.org/0000-0002-8089-9313 + - identifier: 0000-0002-8089-9313 scheme: orcid - affiliations: - name: University of Fribourg family_name: MA given_name: Tianji + id: 0000-0003-0875-9313 identifiers: - - identifier: https://orcid.org/0000-0003-0875-9313 + - identifier: 0000-0003-0875-9313 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Miyata given_name: Atsuhiko + id: 0000-0002-1726-0314 identifiers: - - identifier: https://orcid.org/0000-0002-1726-0314 + - identifier: 0000-0002-1726-0314 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nakamura given_name: Cecilia + id: 0000-0002-4689-7314 identifiers: - - identifier: https://orcid.org/0000-0002-4689-7314 + - identifier: 0000-0002-4689-7314 scheme: orcid - affiliations: - name: University of Fribourg family_name: Grigoryan Savary given_name: Gohar + id: 0000-0002-4996-7314 identifiers: - - identifier: https://orcid.org/0000-0002-4996-7314 + - identifier: 0000-0002-4996-7314 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gibilisco given_name: Michael + id: 0000-0002-6484-1314 identifiers: - - identifier: https://orcid.org/0000-0002-6484-1314 + - identifier: 0000-0002-6484-1314 scheme: orcid - affiliations: - name: Northwestern University family_name: Miller given_name: William + id: 0000-0003-0750-6314 identifiers: - - identifier: https://orcid.org/0000-0003-0750-6314 + - identifier: 0000-0003-0750-6314 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Capobianco-Hogan given_name: Kyle + id: 0000-0003-3046-6314 identifiers: - - identifier: https://orcid.org/0000-0003-3046-6314 + - identifier: 0000-0003-3046-6314 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pleiner given_name: Tino + id: 0000-0002-5104-0315 identifiers: - - identifier: https://orcid.org/0000-0002-5104-0315 + - identifier: 0000-0002-5104-0315 scheme: orcid - affiliations: - name: TU Wien family_name: Freygner given_name: Petra + id: 0000-0002-6211-0315 identifiers: - - identifier: https://orcid.org/0000-0002-6211-0315 + - identifier: 0000-0002-6211-0315 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Attallah given_name: Ahmed G. + id: 0000-0002-7759-0315 identifiers: - - identifier: https://orcid.org/0000-0002-7759-0315 + - identifier: 0000-0002-7759-0315 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Eberhardsteiner given_name: Lukas + id: 0000-0003-2153-9315 identifiers: - - identifier: https://orcid.org/0000-0003-2153-9315 + - identifier: 0000-0003-2153-9315 scheme: orcid - affiliations: - name: University of Fribourg family_name: Busto given_name: David + id: 0000-0003-4311-3315 identifiers: - - identifier: https://orcid.org/0000-0003-4311-3315 + - identifier: 0000-0003-4311-3315 scheme: orcid - affiliations: - name: TU Wien - name: Medical University of Graz family_name: Tomin given_name: Tamara + id: 0000-0002-7071-2316 identifiers: - - identifier: https://orcid.org/0000-0002-7071-2316 + - identifier: 0000-0002-7071-2316 scheme: orcid - affiliations: - name: NASA Exoplanet Science Institute - name: California Institute of Technology family_name: Fulton given_name: Benjamin + id: 0000-0003-3504-5316 identifiers: - - identifier: https://orcid.org/0000-0003-3504-5316 + - identifier: 0000-0003-3504-5316 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Pr\xFC\xDFing" given_name: Jan Kristen + id: 0000-0001-9216-4317 identifiers: - - identifier: https://orcid.org/0000-0001-9216-4317 + - identifier: 0000-0001-9216-4317 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Leitner given_name: Thomas + id: 0000-0002-2438-1317 identifiers: - - identifier: https://orcid.org/0000-0002-2438-1317 + - identifier: 0000-0002-2438-1317 scheme: orcid - affiliations: - name: University of Bamberg family_name: Wolf given_name: Daniel + id: 0000-0002-3473-1317 identifiers: - - identifier: https://orcid.org/0000-0002-3473-1317 + - identifier: 0000-0002-3473-1317 scheme: orcid - affiliations: - name: Northwestern University family_name: Strand given_name: Nils + id: 0000-0002-4183-5317 identifiers: - - identifier: https://orcid.org/0000-0002-4183-5317 + - identifier: 0000-0002-4183-5317 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Robert-Demolaize given_name: Guillaume + id: 0000-0002-4660-1317 identifiers: - - identifier: https://orcid.org/0000-0002-4660-1317 + - identifier: 0000-0002-4660-1317 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Ogueta given_name: Maite + id: 0000-0002-4777-8317 identifiers: - - identifier: https://orcid.org/0000-0002-4777-8317 + - identifier: 0000-0002-4777-8317 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tsai given_name: Esther + id: 0000-0002-5885-6317 identifiers: - - identifier: https://orcid.org/0000-0002-5885-6317 + - identifier: 0000-0002-5885-6317 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Nikolitsas given_name: Konstantinos + id: 0000-0002-6142-2317 identifiers: - - identifier: https://orcid.org/0000-0002-6142-2317 + - identifier: 0000-0002-6142-2317 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Foerstendorf given_name: Harald + id: 0000-0002-8334-9317 identifiers: - - identifier: https://orcid.org/0000-0002-8334-9317 + - identifier: 0000-0002-8334-9317 scheme: orcid - affiliations: - name: Graz University of Technology - name: Freelance family_name: Sailer given_name: Christian + id: 0000-0003-0070-0317 identifiers: - - identifier: https://orcid.org/0000-0003-0070-0317 + - identifier: 0000-0003-0070-0317 scheme: orcid - affiliations: - name: Northwestern University family_name: Finkel given_name: Eli + id: 0000-0002-0213-5318 identifiers: - - identifier: https://orcid.org/0000-0002-0213-5318 + - identifier: 0000-0002-0213-5318 scheme: orcid - affiliations: - name: University of Fribourg family_name: Zimmermann given_name: Petra + id: 0000-0002-2388-4318 identifiers: - - identifier: https://orcid.org/0000-0002-2388-4318 + - identifier: 0000-0002-2388-4318 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Yang given_name: Daodao + id: 0000-0002-5964-1318 identifiers: - - identifier: https://orcid.org/0000-0002-5964-1318 + - identifier: 0000-0002-5964-1318 scheme: orcid - affiliations: - name: California Institute of Technology family_name: "K\xF6hler" given_name: Philipp + id: 0000-0002-7820-1318 identifiers: - - identifier: https://orcid.org/0000-0002-7820-1318 + - identifier: 0000-0002-7820-1318 scheme: orcid - affiliations: - name: TU Wien family_name: Strenge given_name: Eva + id: 0000-0003-4999-7318 identifiers: - - identifier: https://orcid.org/0000-0003-4999-7318 + - identifier: 0000-0003-4999-7318 scheme: orcid - affiliations: - name: TU Wien family_name: Wukovits given_name: Walter + id: 0000-0001-6381-1319 identifiers: - - identifier: https://orcid.org/0000-0001-6381-1319 + - identifier: 0000-0001-6381-1319 scheme: orcid - affiliations: - name: TU Wien family_name: Bauer given_name: Dominik + id: 0000-0002-1260-1319 identifiers: - - identifier: https://orcid.org/0000-0002-1260-1319 + - identifier: 0000-0002-1260-1319 scheme: orcid - affiliations: - name: Northwestern University family_name: Huang given_name: Sui + id: 0000-0002-2400-4319 identifiers: - - identifier: https://orcid.org/0000-0002-2400-4319 + - identifier: 0000-0002-2400-4319 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kutepov given_name: Andrey + id: 0000-0002-2965-7319 identifiers: - - identifier: https://orcid.org/0000-0002-2965-7319 + - identifier: 0000-0002-2965-7319 scheme: orcid - affiliations: - name: CERN family_name: Schacher given_name: juerg + id: 0000-0002-8637-9319 identifiers: - - identifier: https://orcid.org/0000-0002-8637-9319 + - identifier: 0000-0002-8637-9319 scheme: orcid - affiliations: - name: TU Wien family_name: Plank given_name: Leonhard + id: 0000-0002-4754-131X identifiers: - - identifier: https://orcid.org/0000-0002-4754-131X + - identifier: 0000-0002-4754-131X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Piacentino given_name: Michael L + id: 0000-0003-1773-031X identifiers: - - identifier: https://orcid.org/0000-0003-1773-031X + - identifier: 0000-0003-1773-031X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Fischer given_name: Wolfgang Johann + id: 0000-0003-3377-331X identifiers: - - identifier: https://orcid.org/0000-0003-3377-331X + - identifier: 0000-0003-3377-331X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Vedovato given_name: Gabriele + id: 0000-0001-7226-1320 identifiers: - - identifier: https://orcid.org/0000-0001-7226-1320 + - identifier: 0000-0001-7226-1320 scheme: orcid - affiliations: - name: University of Fribourg family_name: Coiro given_name: Mario + id: 0000-0002-0113-0320 identifiers: - - identifier: https://orcid.org/0000-0002-0113-0320 + - identifier: 0000-0002-0113-0320 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Szmolyan given_name: Peter + id: 0000-0002-0595-9320 identifiers: - - identifier: https://orcid.org/0000-0002-0595-9320 + - identifier: 0000-0002-0595-9320 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Wimmer given_name: Andreas + id: 0000-0002-1368-4320 identifiers: - - identifier: https://orcid.org/0000-0002-1368-4320 + - identifier: 0000-0002-1368-4320 scheme: orcid - affiliations: - name: Northwestern University family_name: Feinstein given_name: Brian + id: 0000-0002-1360-9320 identifiers: - - identifier: https://orcid.org/0000-0002-1360-9320 + - identifier: 0000-0002-1360-9320 scheme: orcid - affiliations: - name: Northwestern University family_name: Zheng given_name: Yinan + id: 0000-0002-2006-7320 identifiers: - - identifier: https://orcid.org/0000-0002-2006-7320 + - identifier: 0000-0002-2006-7320 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Pakistan Institute of Nuclear Science and Technology family_name: Hassan given_name: Sohaib + id: 0000-0002-5027-4320 identifiers: - - identifier: https://orcid.org/0000-0002-5027-4320 + - identifier: 0000-0002-5027-4320 scheme: orcid - affiliations: - name: Northwestern University family_name: Papachristos given_name: Andrew + id: 0000-0003-0975-8320 identifiers: - - identifier: https://orcid.org/0000-0003-0975-8320 + - identifier: 0000-0003-0975-8320 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: George Washington University family_name: Bura given_name: Efstathia + id: 0000-0003-4972-5320 identifiers: - - identifier: https://orcid.org/0000-0003-4972-5320 + - identifier: 0000-0003-4972-5320 scheme: orcid - affiliations: - name: Brookhaven National Laboratory @@ -14943,391 +17020,446 @@ - name: University of California Irvine family_name: SUTHERLAND given_name: JOHN + id: 0000-0002-3527-0321 identifiers: - - identifier: https://orcid.org/0000-0002-3527-0321 + - identifier: 0000-0002-3527-0321 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Wehden given_name: Lars-Ole + id: 0000-0002-6365-0321 identifiers: - - identifier: https://orcid.org/0000-0002-6365-0321 + - identifier: 0000-0002-6365-0321 scheme: orcid - affiliations: - name: California Institute of Technology family_name: "Guerrero Pe\xF1a" given_name: Fidel Alejandro + id: 0000-0002-9999-5321 identifiers: - - identifier: https://orcid.org/0000-0002-9999-5321 + - identifier: 0000-0002-9999-5321 scheme: orcid - affiliations: - name: University of Fribourg family_name: "M\xFCller" given_name: Christoph + id: 0000-0001-6921-1322 identifiers: - - identifier: https://orcid.org/0000-0001-6921-1322 + - identifier: 0000-0001-6921-1322 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Schenke given_name: Bjoern + id: 0000-0001-7908-1322 identifiers: - - identifier: https://orcid.org/0000-0001-7908-1322 + - identifier: 0000-0001-7908-1322 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lu given_name: Chun-I + id: 0000-0002-7735-1322 identifiers: - - identifier: https://orcid.org/0000-0002-7735-1322 + - identifier: 0000-0002-7735-1322 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Reinke given_name: Hannes + id: 0000-0003-4822-8322 identifiers: - - identifier: https://orcid.org/0000-0003-4822-8322 + - identifier: 0000-0003-4822-8322 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kulesza given_name: Anna + id: 0000-0001-8309-2323 identifiers: - - identifier: https://orcid.org/0000-0001-8309-2323 + - identifier: 0000-0001-8309-2323 scheme: orcid - affiliations: - name: University of Fribourg family_name: De Virgilio given_name: Claudio + id: 0000-0001-8826-4323 identifiers: - - identifier: https://orcid.org/0000-0001-8826-4323 + - identifier: 0000-0001-8826-4323 scheme: orcid - affiliations: - name: Northwestern University family_name: Krzyaniak given_name: Matthew + id: 0000-0002-8761-7323 identifiers: - - identifier: https://orcid.org/0000-0002-8761-7323 + - identifier: 0000-0002-8761-7323 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Giouroudi given_name: Ioanna + id: 0000-0002-8655-0323 identifiers: - - identifier: https://orcid.org/0000-0002-8655-0323 + - identifier: 0000-0002-8655-0323 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: de la Cruz given_name: Gonzalo + id: 0000-0003-1151-7323 identifiers: - - identifier: https://orcid.org/0000-0003-1151-7323 + - identifier: 0000-0003-1151-7323 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gonzalez given_name: Walter + id: 0000-0003-1310-9323 identifiers: - - identifier: https://orcid.org/0000-0003-1310-9323 + - identifier: 0000-0003-1310-9323 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Monetti given_name: Alberto + id: 0000-0001-5916-8324 identifiers: - - identifier: https://orcid.org/0000-0001-5916-8324 + - identifier: 0000-0001-5916-8324 scheme: orcid - affiliations: - name: University of Fribourg family_name: Guillod given_name: Matthias + id: 0000-0001-6058-0324 identifiers: - - identifier: https://orcid.org/0000-0001-6058-0324 + - identifier: 0000-0001-6058-0324 scheme: orcid - affiliations: - name: Northwestern University family_name: Smith given_name: Elizabeth + id: 0000-0002-3919-2324 identifiers: - - identifier: https://orcid.org/0000-0002-3919-2324 + - identifier: 0000-0002-3919-2324 scheme: orcid - affiliations: - name: Northwestern University family_name: Korajczyk given_name: Robert + id: 0000-0003-2436-2324 identifiers: - - identifier: https://orcid.org/0000-0003-2436-2324 + - identifier: 0000-0003-2436-2324 scheme: orcid - affiliations: - name: Northwestern University family_name: Beitel given_name: Greg + id: 0000-0003-4413-6324 identifiers: - - identifier: https://orcid.org/0000-0003-4413-6324 + - identifier: 0000-0003-4413-6324 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Marsik given_name: Premysl + id: 0000-0001-9759-8325 identifiers: - - identifier: https://orcid.org/0000-0001-9759-8325 + - identifier: 0000-0001-9759-8325 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Mlakar given_name: Daniel + id: 0000-0002-4500-0325 identifiers: - - identifier: https://orcid.org/0000-0002-4500-0325 + - identifier: 0000-0002-4500-0325 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Stockmann given_name: Madlen + id: 0000-0003-0280-2325 identifiers: - - identifier: https://orcid.org/0000-0003-0280-2325 + - identifier: 0000-0003-0280-2325 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kim given_name: Tae Hyun + id: 0000-0003-3856-5325 identifiers: - - identifier: https://orcid.org/0000-0003-3856-5325 + - identifier: 0000-0003-3856-5325 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Marussig given_name: Benjamin + id: 0000-0001-6076-4326 identifiers: - - identifier: https://orcid.org/0000-0001-6076-4326 + - identifier: 0000-0001-6076-4326 scheme: orcid - affiliations: - name: TU Wien family_name: Vasilev given_name: Aleksandr + id: 0000-0001-6550-6326 identifiers: - - identifier: https://orcid.org/0000-0001-6550-6326 + - identifier: 0000-0001-6550-6326 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kottlan given_name: Andreas + id: 0000-0001-7196-5326 identifiers: - - identifier: https://orcid.org/0000-0001-7196-5326 + - identifier: 0000-0001-7196-5326 scheme: orcid - affiliations: - name: Northwestern University family_name: Hassan given_name: Fouad + id: 0000-0001-7589-4326 identifiers: - - identifier: https://orcid.org/0000-0001-7589-4326 + - identifier: 0000-0001-7589-4326 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Buchert given_name: Rebecca + id: 0000-0001-7576-3326 identifiers: - - identifier: https://orcid.org/0000-0001-7576-3326 + - identifier: 0000-0001-7576-3326 scheme: orcid - affiliations: - name: University of Bamberg family_name: Schmid given_name: Ute + id: 0000-0002-1301-0326 identifiers: - - identifier: https://orcid.org/0000-0002-1301-0326 + - identifier: 0000-0002-1301-0326 scheme: orcid - affiliations: - name: University of Bamberg family_name: Reinwald given_name: Simon + id: 0000-0002-3218-2326 identifiers: - - identifier: https://orcid.org/0000-0002-3218-2326 + - identifier: 0000-0002-3218-2326 scheme: orcid - affiliations: - name: Northwestern University family_name: Stout given_name: Kristen + id: 0000-0002-3641-5326 identifiers: - - identifier: https://orcid.org/0000-0002-3641-5326 + - identifier: 0000-0002-3641-5326 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Reschke given_name: Edith + id: 0000-0002-9112-3326 identifiers: - - identifier: https://orcid.org/0000-0002-9112-3326 + - identifier: 0000-0002-9112-3326 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Runyan given_name: Chris + id: 0000-0003-0501-1326 identifiers: - - identifier: https://orcid.org/0000-0003-0501-1326 + - identifier: 0000-0003-0501-1326 scheme: orcid - affiliations: - name: TU Wien family_name: Tsiourti given_name: Christiana + id: 0000-0003-3104-1326 identifiers: - - identifier: https://orcid.org/0000-0003-3104-1326 + - identifier: 0000-0003-3104-1326 scheme: orcid - affiliations: - name: California Institute of Technology - name: Institute of Engineering Thermophysics Chinese Academy of Sciences family_name: Hao given_name: Yong + id: 0000-0001-7487-9327 identifiers: - - identifier: https://orcid.org/0000-0001-7487-9327 + - identifier: 0000-0001-7487-9327 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Emberger given_name: Guenter + id: 0000-0002-4703-8327 identifiers: - - identifier: https://orcid.org/0000-0002-4703-8327 + - identifier: 0000-0002-4703-8327 scheme: orcid - affiliations: - name: Proman Management GmbH - name: TU Wien family_name: Tanzer given_name: Julia + id: 0000-0002-8027-6327 identifiers: - - identifier: https://orcid.org/0000-0002-8027-6327 + - identifier: 0000-0002-8027-6327 scheme: orcid - affiliations: - name: TU Wien family_name: Chen given_name: Jiehua + id: 0000-0002-8163-1327 identifiers: - - identifier: https://orcid.org/0000-0002-8163-1327 + - identifier: 0000-0002-8163-1327 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Best given_name: Alexander + id: 0000-0002-3374-8328 identifiers: - - identifier: https://orcid.org/0000-0002-3374-8328 + - identifier: 0000-0002-3374-8328 scheme: orcid - affiliations: - name: TU Wien family_name: Masseron given_name: Amandine + id: 0000-0001-5990-8329 identifiers: - - identifier: https://orcid.org/0000-0001-5990-8329 + - identifier: 0000-0001-5990-8329 scheme: orcid - affiliations: - name: TU Wien family_name: Caviezel given_name: Not + id: 0000-0001-7158-7329 identifiers: - - identifier: https://orcid.org/0000-0001-7158-7329 + - identifier: 0000-0001-7158-7329 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Holland given_name: Jocelyn + id: 0000-0001-7812-1329 identifiers: - - identifier: https://orcid.org/0000-0001-7812-1329 + - identifier: 0000-0001-7812-1329 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Zimmermann given_name: Martin + id: 0000-0002-1459-1329 identifiers: - - identifier: https://orcid.org/0000-0002-1459-1329 + - identifier: 0000-0002-1459-1329 scheme: orcid - affiliations: - name: Northwestern University family_name: Nugent given_name: Anya + id: 0000-0002-2028-9329 identifiers: - - identifier: https://orcid.org/0000-0002-2028-9329 + - identifier: 0000-0002-2028-9329 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Fuchs given_name: Alexander + id: 0000-0002-2070-5329 identifiers: - - identifier: https://orcid.org/0000-0002-2070-5329 + - identifier: 0000-0002-2070-5329 scheme: orcid - affiliations: - name: TU Wien family_name: Kender given_name: Kay + id: 0000-0002-3733-9329 identifiers: - - identifier: https://orcid.org/0000-0002-3733-9329 + - identifier: 0000-0002-3733-9329 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yin given_name: Weiguo + id: 0000-0002-4965-5329 identifiers: - - identifier: https://orcid.org/0000-0002-4965-5329 + - identifier: 0000-0002-4965-5329 scheme: orcid - affiliations: - name: Northwestern University family_name: Beddows given_name: Patricia A. + id: 0000-0002-5482-5329 identifiers: - - identifier: https://orcid.org/0000-0002-5482-5329 + - identifier: 0000-0002-5482-5329 scheme: orcid - affiliations: - name: Northwestern University - name: Shirley Ryan AbilityLab family_name: Simon given_name: Ann + id: 0000-0002-6431-0329 identifiers: - - identifier: https://orcid.org/0000-0002-6431-0329 + - identifier: 0000-0002-6431-0329 scheme: orcid - affiliations: - name: "Universit\xE0 degli Studi di Milano" - name: Istituto Nazionale di Fisica Nucleare family_name: Stabile given_name: Alberto + id: 0000-0002-6868-8329 identifiers: - - identifier: https://orcid.org/0000-0002-6868-8329 + - identifier: 0000-0002-6868-8329 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Chu given_name: Yong + id: 0000-0002-8624-5329 identifiers: - - identifier: https://orcid.org/0000-0002-8624-5329 + - identifier: 0000-0002-8624-5329 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Hollier given_name: Anita + id: 0000-0003-0909-9329 identifiers: - - identifier: https://orcid.org/0000-0003-0909-9329 + - identifier: 0000-0003-0909-9329 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Levis given_name: Aviad + id: 0000-0001-7307-632X identifiers: - - identifier: https://orcid.org/0000-0001-7307-632X + - identifier: 0000-0001-7307-632X scheme: orcid - affiliations: - name: TU Wien family_name: Weissenbacher given_name: Georg + id: 0000-0002-0143-632X identifiers: - - identifier: https://orcid.org/0000-0002-0143-632X + - identifier: 0000-0002-0143-632X scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Steidle given_name: Guenter + id: 0000-0002-0976-132X identifiers: - - identifier: https://orcid.org/0000-0002-0976-132X + - identifier: 0000-0002-0976-132X scheme: orcid - affiliations: - name: CERN family_name: Wolf given_name: Felix + id: 0000-0002-1149-032X identifiers: - - identifier: https://orcid.org/0000-0002-1149-032X + - identifier: 0000-0002-1149-032X scheme: orcid - affiliations: - name: National University of Ireland Galway @@ -15335,494 +17467,563 @@ - name: Northwestern University family_name: Bohle Carbonell given_name: Katerina + id: 0000-0002-4275-632X identifiers: - - identifier: https://orcid.org/0000-0002-4275-632X + - identifier: 0000-0002-4275-632X scheme: orcid - affiliations: - name: Northwestern University family_name: Lascar given_name: Daniel + id: 0000-0002-4763-732X identifiers: - - identifier: https://orcid.org/0000-0002-4763-732X + - identifier: 0000-0002-4763-732X scheme: orcid - affiliations: - name: University of Fribourg - name: University of Bern family_name: Del Giovane given_name: Cinzia + id: 0000-0002-5028-932X identifiers: - - identifier: https://orcid.org/0000-0002-5028-932X + - identifier: 0000-0002-5028-932X scheme: orcid - affiliations: - name: University of Bamberg family_name: Hartlieb given_name: Sven + id: 0000-0002-9567-132X identifiers: - - identifier: https://orcid.org/0000-0002-9567-132X + - identifier: 0000-0002-9567-132X scheme: orcid - affiliations: - name: California Institute of Technology family_name: AATI given_name: SAIF + id: 0000-0003-1087-832X identifiers: - - identifier: https://orcid.org/0000-0003-1087-832X + - identifier: 0000-0003-1087-832X scheme: orcid - affiliations: - name: Northwestern University family_name: Hong given_name: Junsung + id: 0000-0003-2238-532X identifiers: - - identifier: https://orcid.org/0000-0003-2238-532X + - identifier: 0000-0003-2238-532X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Zeif given_name: Reinhard + id: 0000-0003-3547-732X identifiers: - - identifier: https://orcid.org/0000-0003-3547-732X + - identifier: 0000-0003-3547-732X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: Nokia family_name: Federico given_name: Paolo + id: 0000-0002-1830-0330 identifiers: - - identifier: https://orcid.org/0000-0002-1830-0330 + - identifier: 0000-0002-1830-0330 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Torvisco given_name: Ana + id: 0000-0002-6203-7330 identifiers: - - identifier: https://orcid.org/0000-0002-6203-7330 + - identifier: 0000-0002-6203-7330 scheme: orcid - affiliations: - name: Northwestern University family_name: Hespos given_name: Susan + id: 0000-0002-7970-1330 identifiers: - - identifier: https://orcid.org/0000-0002-7970-1330 + - identifier: 0000-0002-7970-1330 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Svensson given_name: Valentine + id: 0000-0002-9217-2330 identifiers: - - identifier: https://orcid.org/0000-0002-9217-2330 + - identifier: 0000-0002-9217-2330 scheme: orcid - affiliations: - name: University of Fribourg family_name: Hazak given_name: Ora + id: 0000-0002-9182-3330 identifiers: - - identifier: https://orcid.org/0000-0002-9182-3330 + - identifier: 0000-0002-9182-3330 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Stadlbauer given_name: Sven + id: 0000-0003-2276-5330 identifiers: - - identifier: https://orcid.org/0000-0003-2276-5330 + - identifier: 0000-0003-2276-5330 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Fiz given_name: Francesco + id: 0000-0003-3932-1330 identifiers: - - identifier: https://orcid.org/0000-0003-3932-1330 + - identifier: 0000-0003-3932-1330 scheme: orcid - affiliations: - name: TU Wien family_name: Eisterer given_name: Michael + id: 0000-0002-7160-7331 identifiers: - - identifier: https://orcid.org/0000-0002-7160-7331 + - identifier: 0000-0002-7160-7331 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Tzanidakis given_name: Anastasios + id: 0000-0003-0484-3331 identifiers: - - identifier: https://orcid.org/0000-0003-0484-3331 + - identifier: 0000-0003-0484-3331 scheme: orcid - affiliations: - name: TU Wien family_name: Rohatschek given_name: Andreas + id: 0000-0003-2214-4331 identifiers: - - identifier: https://orcid.org/0000-0003-2214-4331 + - identifier: 0000-0003-2214-4331 scheme: orcid - affiliations: - name: University of Bamberg family_name: Heineck given_name: Guido + id: 0000-0001-5164-1332 identifiers: - - identifier: https://orcid.org/0000-0001-5164-1332 + - identifier: 0000-0001-5164-1332 scheme: orcid - affiliations: - name: TU Wien family_name: Taherinejad given_name: Nima + id: 0000-0002-1295-0332 identifiers: - - identifier: https://orcid.org/0000-0002-1295-0332 + - identifier: 0000-0002-1295-0332 scheme: orcid - affiliations: - name: Northwestern University family_name: wu given_name: donghai + id: 0000-0003-0327-0332 identifiers: - - identifier: https://orcid.org/0000-0003-0327-0332 + - identifier: 0000-0003-0327-0332 scheme: orcid - affiliations: - name: TU Wien family_name: Reimer given_name: Ferdinand + id: 0000-0003-2515-4332 identifiers: - - identifier: https://orcid.org/0000-0003-2515-4332 + - identifier: 0000-0003-2515-4332 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Mayrhofer given_name: Paul + id: 0000-0001-7328-9333 identifiers: - - identifier: https://orcid.org/0000-0001-7328-9333 + - identifier: 0000-0001-7328-9333 scheme: orcid - affiliations: - name: Northwestern University family_name: Whittenburg given_name: Laura + id: 0000-0001-8048-9333 identifiers: - - identifier: https://orcid.org/0000-0001-8048-9333 + - identifier: 0000-0001-8048-9333 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Luque Consuegra given_name: Guillermo + id: 0000-0002-5137-1333 identifiers: - - identifier: https://orcid.org/0000-0002-5137-1333 + - identifier: 0000-0002-5137-1333 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Tseng given_name: Shih-Hao + id: 0000-0003-2376-9333 identifiers: - - identifier: https://orcid.org/0000-0003-2376-9333 + - identifier: 0000-0003-2376-9333 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Liu given_name: Ke + id: 0000-0001-9081-6334 identifiers: - - identifier: https://orcid.org/0000-0001-9081-6334 + - identifier: 0000-0001-9081-6334 scheme: orcid - affiliations: - name: Northwestern University family_name: Nelson given_name: Benjamin + id: 0000-0003-3010-2334 identifiers: - - identifier: https://orcid.org/0000-0003-3010-2334 + - identifier: 0000-0003-3010-2334 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Cao given_name: Chuntian + id: 0000-0003-4753-7334 identifiers: - - identifier: https://orcid.org/0000-0003-4753-7334 + - identifier: 0000-0003-4753-7334 scheme: orcid - affiliations: - name: TU Wien - name: Technical University Wien family_name: Blieberger given_name: Johann + id: 0000-0001-5810-7335 identifiers: - - identifier: https://orcid.org/0000-0001-5810-7335 + - identifier: 0000-0001-5810-7335 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wu given_name: Dien + id: 0000-0002-2915-5335 identifiers: - - identifier: https://orcid.org/0000-0002-2915-5335 + - identifier: 0000-0002-2915-5335 scheme: orcid - affiliations: - name: California Institute of Technology family_name: O'Reilly given_name: Brian + id: 0000-0002-3874-8335 identifiers: - - identifier: https://orcid.org/0000-0002-3874-8335 + - identifier: 0000-0002-3874-8335 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Hellerschmied given_name: Andreas + id: 0000-0002-7301-7335 identifiers: - - identifier: https://orcid.org/0000-0002-7301-7335 + - identifier: 0000-0002-7301-7335 scheme: orcid - affiliations: - name: Northwestern University family_name: Szleifer given_name: Igal + id: 0000-0002-8708-0335 identifiers: - - identifier: https://orcid.org/0000-0002-8708-0335 + - identifier: 0000-0002-8708-0335 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Capuani given_name: Fabrizio + id: 0000-0003-2026-6335 identifiers: - - identifier: https://orcid.org/0000-0003-2026-6335 + - identifier: 0000-0003-2026-6335 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Zurich family_name: schwab given_name: sandra + id: 0000-0003-4485-8335 identifiers: - - identifier: https://orcid.org/0000-0003-4485-8335 + - identifier: 0000-0003-4485-8335 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Laggner given_name: Thomas Markus + id: 0000-0003-4528-7335 identifiers: - - identifier: https://orcid.org/0000-0003-4528-7335 + - identifier: 0000-0003-4528-7335 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Amenitsch given_name: Heinz + id: 0000-0002-0788-1336 identifiers: - - identifier: https://orcid.org/0000-0002-0788-1336 + - identifier: 0000-0002-0788-1336 scheme: orcid - affiliations: - name: Northwestern University family_name: Curk given_name: Tine + id: 0000-0002-2167-5336 identifiers: - - identifier: https://orcid.org/0000-0002-2167-5336 + - identifier: 0000-0002-2167-5336 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Melnick given_name: Corey + id: 0000-0003-1105-6336 identifiers: - - identifier: https://orcid.org/0000-0003-1105-6336 + - identifier: 0000-0003-1105-6336 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Topaloudis given_name: Athanasios + id: 0000-0001-6073-0337 identifiers: - - identifier: https://orcid.org/0000-0001-6073-0337 + - identifier: 0000-0001-6073-0337 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Mandal given_name: Soumyajit + id: 0000-0001-9070-2337 identifiers: - - identifier: https://orcid.org/0000-0001-9070-2337 + - identifier: 0000-0001-9070-2337 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: gescheidt given_name: georg + id: 0000-0002-6827-4337 identifiers: - - identifier: https://orcid.org/0000-0002-6827-4337 + - identifier: 0000-0002-6827-4337 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Becker given_name: Valeska + id: 0000-0002-9166-9337 identifiers: - - identifier: https://orcid.org/0000-0002-9166-9337 + - identifier: 0000-0002-9166-9337 scheme: orcid - affiliations: - name: Northwestern University family_name: Case given_name: Daniel + id: 0000-0003-4278-8337 identifiers: - - identifier: https://orcid.org/0000-0003-4278-8337 + - identifier: 0000-0003-4278-8337 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Gsellmann given_name: Peter + id: 0000-0002-2274-7338 identifiers: - - identifier: https://orcid.org/0000-0002-2274-7338 + - identifier: 0000-0002-2274-7338 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: benzoni given_name: giovanna + id: 0000-0002-7938-0338 identifiers: - - identifier: https://orcid.org/0000-0002-7938-0338 + - identifier: 0000-0002-7938-0338 scheme: orcid - affiliations: - name: CERN family_name: Caratelli given_name: Alessandro + id: 0000-0002-4203-9339 identifiers: - - identifier: https://orcid.org/0000-0002-4203-9339 + - identifier: 0000-0002-4203-9339 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Mack given_name: Melanie + id: 0000-0002-5512-0339 identifiers: - - identifier: https://orcid.org/0000-0002-5512-0339 + - identifier: 0000-0002-5512-0339 scheme: orcid - affiliations: - name: Northwestern University family_name: Christodoulides given_name: Phedias + id: 0000-0002-8664-8339 identifiers: - - identifier: https://orcid.org/0000-0002-8664-8339 + - identifier: 0000-0002-8664-8339 scheme: orcid - affiliations: - name: TU Wien family_name: Bergen given_name: Lorenz + id: 0000-0002-8534-6339 identifiers: - - identifier: https://orcid.org/0000-0002-8534-6339 + - identifier: 0000-0002-8534-6339 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Pahl given_name: Hannes + id: 0000-0003-0498-1339 identifiers: - - identifier: https://orcid.org/0000-0003-0498-1339 + - identifier: 0000-0003-0498-1339 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yan given_name: Lin + id: 0000-0003-1710-9339 identifiers: - - identifier: https://orcid.org/0000-0003-1710-9339 + - identifier: 0000-0003-1710-9339 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Gartner given_name: Georg + id: 0000-0003-2002-5339 identifiers: - - identifier: https://orcid.org/0000-0003-2002-5339 + - identifier: 0000-0003-2002-5339 scheme: orcid - affiliations: - name: Northwestern University family_name: Lungeanu given_name: Alina + id: 0000-0003-3368-6339 identifiers: - - identifier: https://orcid.org/0000-0003-3368-6339 + - identifier: 0000-0003-3368-6339 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "K\xE4rtner" given_name: Joscha + id: 0000-0003-4139-5339 identifiers: - - identifier: https://orcid.org/0000-0003-4139-5339 + - identifier: 0000-0003-4139-5339 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ingold given_name: Rolf + id: 0000-0001-7738-133X identifiers: - - identifier: https://orcid.org/0000-0001-7738-133X + - identifier: 0000-0001-7738-133X scheme: orcid - affiliations: - name: TU Wien family_name: Goldstern given_name: Martin + id: 0000-0002-0438-633X identifiers: - - identifier: https://orcid.org/0000-0002-0438-633X + - identifier: 0000-0002-0438-633X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Scholz given_name: Marcel + id: 0000-0002-2428-033X identifiers: - - identifier: https://orcid.org/0000-0002-2428-033X + - identifier: 0000-0002-2428-033X scheme: orcid - affiliations: - name: Know-Center GmbH - name: "Technische Universit\xE4t Graz" family_name: Cole given_name: Nicki Lisa + id: 0000-0002-6034-533X identifiers: - - identifier: https://orcid.org/0000-0002-6034-533X + - identifier: 0000-0002-6034-533X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Reinbacher-K\xF6stinger" given_name: Alice + id: 0000-0002-9829-833X identifiers: - - identifier: https://orcid.org/0000-0002-9829-833X + - identifier: 0000-0002-9829-833X scheme: orcid - affiliations: - name: Northwestern University family_name: Lineback given_name: Christina M + id: 0000-0003-2048-333X identifiers: - - identifier: https://orcid.org/0000-0003-2048-333X + - identifier: 0000-0003-2048-333X scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Herlth given_name: Jens + id: 0000-0003-4613-033X identifiers: - - identifier: https://orcid.org/0000-0003-4613-033X + - identifier: 0000-0003-4613-033X scheme: orcid - affiliations: - name: CERN family_name: nordberg given_name: markus + id: 0000-0001-5187-9340 identifiers: - - identifier: https://orcid.org/0000-0001-5187-9340 + - identifier: 0000-0001-5187-9340 scheme: orcid - affiliations: - name: University of Fribourg family_name: Wallimann-Helmer given_name: Ivo + id: 0000-0002-0548-6340 identifiers: - - identifier: https://orcid.org/0000-0002-0548-6340 + - identifier: 0000-0002-0548-6340 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Pielhoff given_name: Simon + id: 0000-0002-2394-0340 identifiers: - - identifier: https://orcid.org/0000-0002-2394-0340 + - identifier: 0000-0002-2394-0340 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Le Garrec given_name: "Ma\xEBl" + id: 0000-0002-8146-2340 identifiers: - - identifier: https://orcid.org/0000-0002-8146-2340 + - identifier: 0000-0002-8146-2340 scheme: orcid - affiliations: - name: TU Wien family_name: de Pagter given_name: Jesse + id: 0000-0003-0454-8340 identifiers: - - identifier: https://orcid.org/0000-0003-0454-8340 + - identifier: 0000-0003-0454-8340 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Sofia family_name: Nedyalkova given_name: Miroslava + id: 0000-0003-0793-3340 identifiers: - - identifier: https://orcid.org/0000-0003-0793-3340 + - identifier: 0000-0003-0793-3340 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Vienna family_name: Fill given_name: Hans-Georg + id: 0000-0001-5076-5341 identifiers: - - identifier: https://orcid.org/0000-0001-5076-5341 + - identifier: 0000-0001-5076-5341 scheme: orcid - affiliations: - name: TU Wien @@ -15830,502 +18031,572 @@ - name: Kyushu University family_name: Huber given_name: Tobias + id: 0000-0001-6339-8341 identifiers: - - identifier: https://orcid.org/0000-0001-6339-8341 + - identifier: 0000-0001-6339-8341 scheme: orcid - affiliations: - name: Northwestern University family_name: Lear given_name: Bridget + id: 0000-0001-7741-5341 identifiers: - - identifier: https://orcid.org/0000-0001-7741-5341 + - identifier: 0000-0001-7741-5341 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bagley given_name: Jacob + id: 0000-0001-9490-1341 identifiers: - - identifier: https://orcid.org/0000-0001-9490-1341 + - identifier: 0000-0001-9490-1341 scheme: orcid - affiliations: - name: Northwestern University family_name: Mangan given_name: Niall + id: 0000-0002-3491-8341 identifiers: - - identifier: https://orcid.org/0000-0002-3491-8341 + - identifier: 0000-0002-3491-8341 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Barbanera given_name: Mattia + id: 0000-0002-3616-3341 identifiers: - - identifier: https://orcid.org/0000-0002-3616-3341 + - identifier: 0000-0002-3616-3341 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Xu given_name: Jin + id: 0000-0002-5342-2341 identifiers: - - identifier: https://orcid.org/0000-0002-5342-2341 + - identifier: 0000-0002-5342-2341 scheme: orcid - affiliations: - name: California Institute of Technology family_name: WANG given_name: MINQIANG + id: 0000-0002-7775-8341 identifiers: - - identifier: https://orcid.org/0000-0002-7775-8341 + - identifier: 0000-0002-7775-8341 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Gupta given_name: Ramesh + id: 0000-0002-9450-7341 identifiers: - - identifier: https://orcid.org/0000-0002-9450-7341 + - identifier: 0000-0002-9450-7341 scheme: orcid - affiliations: - name: University of Fribourg family_name: Carrillo given_name: Juan D. + id: 0000-0003-2475-3341 identifiers: - - identifier: https://orcid.org/0000-0003-2475-3341 + - identifier: 0000-0003-2475-3341 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Aida given_name: Kento + id: 0000-0003-3339-3341 identifiers: - - identifier: https://orcid.org/0000-0003-3339-3341 + - identifier: 0000-0003-3339-3341 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Louis + id: 0000-0003-4046-2341 identifiers: - - identifier: https://orcid.org/0000-0003-4046-2341 + - identifier: 0000-0003-4046-2341 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bruisson given_name: "S\xE9bastien" + id: 0000-0001-5711-9342 identifiers: - - identifier: https://orcid.org/0000-0001-5711-9342 + - identifier: 0000-0001-5711-9342 scheme: orcid - affiliations: - name: University of Fribourg family_name: Gorodecki given_name: Barbara + id: 0000-0001-7743-5342 identifiers: - - identifier: https://orcid.org/0000-0001-7743-5342 + - identifier: 0000-0001-7743-5342 scheme: orcid - affiliations: - name: Northwestern University family_name: Diamond given_name: Michael + id: 0000-0001-9616-9342 identifiers: - - identifier: https://orcid.org/0000-0001-9616-9342 + - identifier: 0000-0001-9616-9342 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: "H\xE4rer" given_name: Felix + id: 0000-0002-2768-2342 identifiers: - - identifier: https://orcid.org/0000-0002-2768-2342 + - identifier: 0000-0002-2768-2342 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Minamiyama given_name: Yasuyuki + id: 0000-0002-7280-3342 identifiers: - - identifier: https://orcid.org/0000-0002-7280-3342 + - identifier: 0000-0002-7280-3342 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Keppel given_name: Giorgio + id: 0000-0003-4579-3342 identifiers: - - identifier: https://orcid.org/0000-0003-4579-3342 + - identifier: 0000-0003-4579-3342 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Mautner given_name: Franz A. + id: 0000-0002-8627-2343 identifiers: - - identifier: https://orcid.org/0000-0002-8627-2343 + - identifier: 0000-0002-8627-2343 scheme: orcid - affiliations: - name: TU Wien family_name: Steiger given_name: Matthias + id: 0000-0002-8985-2343 identifiers: - - identifier: https://orcid.org/0000-0002-8985-2343 + - identifier: 0000-0002-8985-2343 scheme: orcid - affiliations: - name: Northwestern University family_name: David given_name: Arthur H. G. + id: 0000-0002-9275-2343 identifiers: - - identifier: https://orcid.org/0000-0002-9275-2343 + - identifier: 0000-0002-9275-2343 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Butin given_name: Francois + id: 0000-0003-3068-3343 identifiers: - - identifier: https://orcid.org/0000-0003-3068-3343 + - identifier: 0000-0003-3068-3343 scheme: orcid - affiliations: - name: University of Oregon - name: European Organization for Nuclear Research family_name: Bielski given_name: Rafal + id: 0000-0002-2079-5344 identifiers: - - identifier: https://orcid.org/0000-0002-2079-5344 + - identifier: 0000-0002-2079-5344 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hetzel given_name: Ralf + id: 0000-0002-3412-6344 identifiers: - - identifier: https://orcid.org/0000-0002-3412-6344 + - identifier: 0000-0002-3412-6344 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Moulin given_name: Marie + id: 0000-0002-4014-7344 identifiers: - - identifier: https://orcid.org/0000-0002-4014-7344 + - identifier: 0000-0002-4014-7344 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wang given_name: Lei + id: 0000-0002-6348-8344 identifiers: - - identifier: https://orcid.org/0000-0002-6348-8344 + - identifier: 0000-0002-6348-8344 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Cheng given_name: Shaobo + id: 0000-0002-8515-0344 identifiers: - - identifier: https://orcid.org/0000-0002-8515-0344 + - identifier: 0000-0002-8515-0344 scheme: orcid - affiliations: - name: TU Wien family_name: Bucher given_name: Barbara + id: 0000-0002-8787-7344 identifiers: - - identifier: https://orcid.org/0000-0002-8787-7344 + - identifier: 0000-0002-8787-7344 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Klein-Raufhake given_name: Theresa + id: 0000-0003-3869-7344 identifiers: - - identifier: https://orcid.org/0000-0003-3869-7344 + - identifier: 0000-0003-3869-7344 scheme: orcid - affiliations: - name: TU Wien family_name: Eiter given_name: Thomas + id: 0000-0001-6003-6345 identifiers: - - identifier: https://orcid.org/0000-0001-6003-6345 + - identifier: 0000-0001-6003-6345 scheme: orcid - affiliations: - name: CERN family_name: Wuensch given_name: Walter + id: 0000-0001-7378-5345 identifiers: - - identifier: https://orcid.org/0000-0001-7378-5345 + - identifier: 0000-0001-7378-5345 scheme: orcid - affiliations: - name: TU Wien family_name: Grimaud given_name: Alex + id: 0000-0002-3103-3345 identifiers: - - identifier: https://orcid.org/0000-0002-3103-3345 + - identifier: 0000-0002-3103-3345 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Sorokin given_name: Serhii + id: 0000-0002-7557-0345 identifiers: - - identifier: https://orcid.org/0000-0002-7557-0345 + - identifier: 0000-0002-7557-0345 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Dworak given_name: Claudia + id: 0000-0002-7638-9345 identifiers: - - identifier: https://orcid.org/0000-0002-7638-9345 + - identifier: 0000-0002-7638-9345 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mobbs given_name: George + id: 0000-0003-2405-3345 identifiers: - - identifier: https://orcid.org/0000-0003-2405-3345 + - identifier: 0000-0003-2405-3345 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Stony Brook University family_name: Vilela given_name: Cristovao + id: 0000-0002-2088-0346 identifiers: - - identifier: https://orcid.org/0000-0002-2088-0346 + - identifier: 0000-0002-2088-0346 scheme: orcid - affiliations: - name: Fermi National Accelerator Laboratory - name: Northwestern University family_name: Dahl given_name: Carl Eric + id: 0000-0003-1637-2346 identifiers: - - identifier: https://orcid.org/0000-0003-1637-2346 + - identifier: 0000-0003-1637-2346 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Morley given_name: Anthony + id: 0000-0003-0373-1346 identifiers: - - identifier: https://orcid.org/0000-0003-0373-1346 + - identifier: 0000-0003-0373-1346 scheme: orcid - affiliations: - name: TU Wien family_name: Haddadi given_name: Bahram + id: 0000-0003-3403-6346 identifiers: - - identifier: https://orcid.org/0000-0003-3403-6346 + - identifier: 0000-0003-3403-6346 scheme: orcid - affiliations: - name: TU Wien family_name: Villedieu given_name: "Ana\xEFs" + id: 0000-0001-6196-8347 identifiers: - - identifier: https://orcid.org/0000-0001-6196-8347 + - identifier: 0000-0001-6196-8347 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Reuter given_name: Stefan Johannes + id: 0000-0002-3011-8347 identifiers: - - identifier: https://orcid.org/0000-0002-3011-8347 + - identifier: 0000-0002-3011-8347 scheme: orcid - affiliations: - name: University of Bamberg family_name: Carbon given_name: Claus-Christian + id: 0000-0002-3446-9347 identifiers: - - identifier: https://orcid.org/0000-0002-3446-9347 + - identifier: 0000-0002-3446-9347 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Stony Brook University family_name: David given_name: Gabor + id: 0000-0003-4958-1347 identifiers: - - identifier: https://orcid.org/0000-0003-4958-1347 + - identifier: 0000-0003-4958-1347 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Tholan given_name: Vaishakh + id: 0000-0002-0385-0348 identifiers: - - identifier: https://orcid.org/0000-0002-0385-0348 + - identifier: 0000-0002-0385-0348 scheme: orcid - affiliations: - name: Northwestern University family_name: Utama given_name: Iqbal + id: 0000-0002-4454-8348 identifiers: - - identifier: https://orcid.org/0000-0002-4454-8348 + - identifier: 0000-0002-4454-8348 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Dallmeier-Tiessen given_name: Suenje + id: 0000-0002-6137-2348 identifiers: - - identifier: https://orcid.org/0000-0002-6137-2348 + - identifier: 0000-0002-6137-2348 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Sreejith given_name: Sreevarsha + id: 0000-0002-6423-1348 identifiers: - - identifier: https://orcid.org/0000-0002-6423-1348 + - identifier: 0000-0002-6423-1348 scheme: orcid - affiliations: - name: TU Wien family_name: Berger given_name: Martin + id: 0000-0001-8296-9349 identifiers: - - identifier: https://orcid.org/0000-0001-8296-9349 + - identifier: 0000-0001-8296-9349 scheme: orcid - affiliations: - name: University of Fribourg family_name: Pellet given_name: "C\xE9cile" + id: 0000-0001-8810-5349 identifiers: - - identifier: https://orcid.org/0000-0001-8810-5349 + - identifier: 0000-0001-8810-5349 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: T. Amancio-Filho given_name: Sergio + id: 0000-0002-1886-1349 identifiers: - - identifier: https://orcid.org/0000-0002-1886-1349 + - identifier: 0000-0002-1886-1349 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Dhani given_name: Prasanna Kumar + id: 0000-0002-2072-6349 identifiers: - - identifier: https://orcid.org/0000-0002-2072-6349 + - identifier: 0000-0002-2072-6349 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Rieger-Jandl given_name: Andrea + id: 0000-0002-4465-6349 identifiers: - - identifier: https://orcid.org/0000-0002-4465-6349 + - identifier: 0000-0002-4465-6349 scheme: orcid - affiliations: - name: Northwestern University family_name: Melo-Cardenas given_name: Johanna + id: 0000-0002-5122-3349 identifiers: - - identifier: https://orcid.org/0000-0002-5122-3349 + - identifier: 0000-0002-5122-3349 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Sistani given_name: Masiar + id: 0000-0001-5730-234X identifiers: - - identifier: https://orcid.org/0000-0001-5730-234X + - identifier: 0000-0001-5730-234X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: University of Bamberg family_name: Grbanovic given_name: Ana Marija + id: 0000-0001-7709-834X identifiers: - - identifier: https://orcid.org/0000-0001-7709-834X + - identifier: 0000-0001-7709-834X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Berriman given_name: Bruce + id: 0000-0001-8388-534X identifiers: - - identifier: https://orcid.org/0000-0001-8388-534X + - identifier: 0000-0001-8388-534X scheme: orcid - affiliations: - name: Northwestern University family_name: Rupich given_name: Sara + id: 0000-0002-1608-534X identifiers: - - identifier: https://orcid.org/0000-0002-1608-534X + - identifier: 0000-0002-1608-534X scheme: orcid - affiliations: - name: CERN - name: EPFL Swiss Finance Institute family_name: Pimentel Das Neves given_name: Tiago Filipe + id: 0000-0002-3706-234X identifiers: - - identifier: https://orcid.org/0000-0002-3706-234X + - identifier: 0000-0002-3706-234X scheme: orcid - affiliations: - name: University of Arizona - name: California Institute of Technology family_name: Hassan given_name: Mohammed + id: 0000-0002-9669-534X identifiers: - - identifier: https://orcid.org/0000-0002-9669-534X + - identifier: 0000-0002-9669-534X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Swinson given_name: Christina + id: 0000-0003-1192-034X identifiers: - - identifier: https://orcid.org/0000-0003-1192-034X + - identifier: 0000-0003-1192-034X scheme: orcid - affiliations: - name: Northwestern University family_name: Munoz given_name: Diego + id: 0000-0003-2186-234X identifiers: - - identifier: https://orcid.org/0000-0003-2186-234X + - identifier: 0000-0003-2186-234X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Ferrari given_name: Luigi + id: 0000-0001-8406-1350 identifiers: - - identifier: https://orcid.org/0000-0001-8406-1350 + - identifier: 0000-0001-8406-1350 scheme: orcid - affiliations: - name: CERN family_name: Sidiropoulou given_name: Ourania + id: 0000-0002-1285-1350 identifiers: - - identifier: https://orcid.org/0000-0002-1285-1350 + - identifier: 0000-0002-1285-1350 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Loretan given_name: Morgane + id: 0000-0002-9920-5350 identifiers: - - identifier: https://orcid.org/0000-0002-9920-5350 + - identifier: 0000-0002-9920-5350 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wilkins given_name: Stuart + id: 0000-0003-1191-3350 identifiers: - - identifier: https://orcid.org/0000-0003-1191-3350 + - identifier: 0000-0003-1191-3350 scheme: orcid - affiliations: - name: University of Trento - name: California Institute of Technology family_name: Bordoni given_name: Simona + id: 0000-0003-4771-3350 identifiers: - - identifier: https://orcid.org/0000-0003-4771-3350 + - identifier: 0000-0003-4771-3350 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Reisswig given_name: Christian + id: 0000-0001-6855-9351 identifiers: - - identifier: https://orcid.org/0000-0001-6855-9351 + - identifier: 0000-0001-6855-9351 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Seidlhofer given_name: Tristan + id: 0000-0002-4848-7351 identifiers: - - identifier: https://orcid.org/0000-0002-4848-7351 + - identifier: 0000-0002-4848-7351 scheme: orcid - affiliations: - name: Perimeter Institute for Theoretical Physics - name: TU Wien family_name: Zwikel given_name: "C\xE9line" + id: 0000-0002-6582-6351 identifiers: - - identifier: https://orcid.org/0000-0002-6582-6351 + - identifier: 0000-0002-6582-6351 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Hoermann given_name: Siegfried + id: 0000-0003-0888-1351 identifiers: - - identifier: https://orcid.org/0000-0003-0888-1351 + - identifier: 0000-0003-0888-1351 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Howard + id: 0000-0003-1995-1351 identifiers: - - identifier: https://orcid.org/0000-0003-1995-1351 + - identifier: 0000-0003-1995-1351 scheme: orcid - affiliations: - name: Northwestern University @@ -16338,465 +18609,530 @@ - name: Department of Justice family_name: Caywood given_name: Clarke + id: 0000-0003-2379-0351 identifiers: - - identifier: https://orcid.org/0000-0003-2379-0351 + - identifier: 0000-0003-2379-0351 scheme: orcid - affiliations: - name: CERN family_name: Marzin given_name: Antoine + id: 0000-0003-4364-4351 identifiers: - - identifier: https://orcid.org/0000-0003-4364-4351 + - identifier: 0000-0003-4364-4351 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Uhlig given_name: Marion + id: 0000-0002-3105-6352 identifiers: - - identifier: https://orcid.org/0000-0002-3105-6352 + - identifier: 0000-0002-3105-6352 scheme: orcid - affiliations: - name: California Institute of Technology - name: ASTRON / University of Amsterdam family_name: Connor given_name: Liam + id: 0000-0002-7587-6352 identifiers: - - identifier: https://orcid.org/0000-0002-7587-6352 + - identifier: 0000-0002-7587-6352 scheme: orcid - affiliations: - name: Northwestern University family_name: Barse given_name: Levi + id: 0000-0002-9832-2352 identifiers: - - identifier: https://orcid.org/0000-0002-9832-2352 + - identifier: 0000-0002-9832-2352 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Vidnyanszky given_name: Zoltan + id: 0000-0001-8168-9353 identifiers: - - identifier: https://orcid.org/0000-0001-8168-9353 + - identifier: 0000-0001-8168-9353 scheme: orcid - affiliations: - name: Argonne National Laboratory - name: Northwestern University family_name: Jacobsen given_name: Chris + id: 0000-0001-8562-0353 identifiers: - - identifier: https://orcid.org/0000-0001-8562-0353 + - identifier: 0000-0001-8562-0353 scheme: orcid - affiliations: - name: Northwestern University family_name: Brown given_name: Owen + id: 0000-0001-9083-3353 identifiers: - - identifier: https://orcid.org/0000-0001-9083-3353 + - identifier: 0000-0001-9083-3353 scheme: orcid - affiliations: - name: TU Wien family_name: Schneider given_name: Magdalena C. + id: 0000-0002-3771-8353 identifiers: - - identifier: https://orcid.org/0000-0002-3771-8353 + - identifier: 0000-0002-3771-8353 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schacht given_name: Wilhelm + id: 0000-0002-5191-5353 identifiers: - - identifier: https://orcid.org/0000-0002-5191-5353 + - identifier: 0000-0002-5191-5353 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Cazier given_name: Nicolas + id: 0000-0002-9412-2353 identifiers: - - identifier: https://orcid.org/0000-0002-9412-2353 + - identifier: 0000-0002-9412-2353 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Maier given_name: Manuel + id: 0000-0003-4441-7353 identifiers: - - identifier: https://orcid.org/0000-0003-4441-7353 + - identifier: 0000-0003-4441-7353 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Jansen given_name: Christian + id: 0000-0001-6750-6354 identifiers: - - identifier: https://orcid.org/0000-0001-6750-6354 + - identifier: 0000-0001-6750-6354 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Keshet given_name: Alex + id: 0000-0003-4520-2354 identifiers: - - identifier: https://orcid.org/0000-0003-4520-2354 + - identifier: 0000-0003-4520-2354 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Su given_name: Sylvie + id: 0000-0002-1794-1355 identifiers: - - identifier: https://orcid.org/0000-0002-1794-1355 + - identifier: 0000-0002-1794-1355 scheme: orcid - affiliations: - name: Northwestern University family_name: Dhar given_name: Sumitrajit + id: 0000-0002-4496-6355 identifiers: - - identifier: https://orcid.org/0000-0002-4496-6355 + - identifier: 0000-0002-4496-6355 scheme: orcid - affiliations: - name: BEST - Bioenergy and Sustainable Technologies - name: "Technische Universit\xE4t Graz" family_name: Kaisermayer given_name: Valentin + id: 0000-0002-5551-8355 identifiers: - - identifier: https://orcid.org/0000-0002-5551-8355 + - identifier: 0000-0002-5551-8355 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Perz given_name: Daniel + id: 0000-0002-6557-2355 identifiers: - - identifier: https://orcid.org/0000-0002-6557-2355 + - identifier: 0000-0002-6557-2355 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Louvel given_name: Marion + id: 0000-0003-1438-9355 identifiers: - - identifier: https://orcid.org/0000-0003-1438-9355 + - identifier: 0000-0003-1438-9355 scheme: orcid - affiliations: - name: Northwestern University family_name: Kilbourn-Ceron given_name: Oriana + id: 0000-0003-4020-2355 identifiers: - - identifier: https://orcid.org/0000-0003-4020-2355 + - identifier: 0000-0003-4020-2355 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Drago given_name: Alessandro + id: 0000-0002-4117-9356 identifiers: - - identifier: https://orcid.org/0000-0002-4117-9356 + - identifier: 0000-0002-4117-9356 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Sieger given_name: Max + id: 0000-0002-9112-5356 identifiers: - - identifier: https://orcid.org/0000-0002-9112-5356 + - identifier: 0000-0002-9112-5356 scheme: orcid - affiliations: - name: CERN - name: Imperial College London family_name: Wardle given_name: Nicholas + id: 0000-0003-1344-3356 identifiers: - - identifier: https://orcid.org/0000-0003-1344-3356 + - identifier: 0000-0003-1344-3356 scheme: orcid - affiliations: - name: Northwestern University family_name: Notestein given_name: Justin + id: 0000-0003-1780-7356 identifiers: - - identifier: https://orcid.org/0000-0003-1780-7356 + - identifier: 0000-0003-1780-7356 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Costa Lopez given_name: Xurxo-Breogan + id: 0000-0003-4054-8356 identifiers: - - identifier: https://orcid.org/0000-0003-4054-8356 + - identifier: 0000-0003-4054-8356 scheme: orcid - affiliations: - name: Northwestern University family_name: Murphy given_name: James + id: 0000-0001-5250-8357 identifiers: - - identifier: https://orcid.org/0000-0001-5250-8357 + - identifier: 0000-0001-5250-8357 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Camincher given_name: "Cl\xE9ment" + id: 0000-0001-5929-1357 identifiers: - - identifier: https://orcid.org/0000-0001-5929-1357 + - identifier: 0000-0001-5929-1357 scheme: orcid - affiliations: - name: CERN family_name: Pots given_name: Rosalinde + id: 0000-0002-5286-7357 identifiers: - - identifier: https://orcid.org/0000-0002-5286-7357 + - identifier: 0000-0002-5286-7357 scheme: orcid - affiliations: - name: Northwestern University family_name: Kandela given_name: Irawati + id: 0000-0002-8646-9357 identifiers: - - identifier: https://orcid.org/0000-0002-8646-9357 + - identifier: 0000-0002-8646-9357 scheme: orcid - affiliations: - name: TU Wien family_name: Kellner given_name: Jakob + id: 0000-0002-8815-7357 identifiers: - - identifier: https://orcid.org/0000-0002-8815-7357 + - identifier: 0000-0002-8815-7357 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Pantaleo given_name: Felice + id: 0000-0003-3266-4357 identifiers: - - identifier: https://orcid.org/0000-0003-3266-4357 + - identifier: 0000-0003-3266-4357 scheme: orcid - affiliations: - name: TU Wien family_name: Schmid given_name: Michael + id: 0000-0003-3373-9357 identifiers: - - identifier: https://orcid.org/0000-0003-3373-9357 + - identifier: 0000-0003-3373-9357 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wernicke given_name: Brian + id: 0000-0002-7659-8358 identifiers: - - identifier: https://orcid.org/0000-0002-7659-8358 + - identifier: 0000-0002-7659-8358 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Calviani given_name: Marco + id: 0000-0002-8213-8358 identifiers: - - identifier: https://orcid.org/0000-0002-8213-8358 + - identifier: 0000-0002-8213-8358 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Engels given_name: Christian + id: 0000-0003-4378-9358 identifiers: - - identifier: https://orcid.org/0000-0003-4378-9358 + - identifier: 0000-0003-4378-9358 scheme: orcid - affiliations: - name: Cedars-Sinai Medical Center - name: California Institute of Technology family_name: Xu given_name: Alexander + id: 0000-0003-4877-4358 identifiers: - - identifier: https://orcid.org/0000-0003-4877-4358 + - identifier: 0000-0003-4877-4358 scheme: orcid - affiliations: - name: Northwestern University family_name: Huang given_name: Yonggang + id: 0000-0002-0483-8359 identifiers: - - identifier: https://orcid.org/0000-0002-0483-8359 + - identifier: 0000-0002-0483-8359 scheme: orcid - affiliations: - name: Northwestern University family_name: Williams given_name: Janna + id: 0000-0002-2433-7359 identifiers: - - identifier: https://orcid.org/0000-0002-2433-7359 + - identifier: 0000-0002-2433-7359 scheme: orcid - affiliations: - name: Northwestern University family_name: Hazen given_name: Gordon + id: 0000-0002-4435-4359 identifiers: - - identifier: https://orcid.org/0000-0002-4435-4359 + - identifier: 0000-0002-4435-4359 scheme: orcid - affiliations: - name: Northwestern University family_name: Swisher given_name: Jordan + id: 0000-0002-4999-9359 identifiers: - - identifier: https://orcid.org/0000-0002-4999-9359 + - identifier: 0000-0002-4999-9359 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Mazzitelli given_name: Giovanni + id: 0000-0003-2830-4359 identifiers: - - identifier: https://orcid.org/0000-0003-2830-4359 + - identifier: 0000-0003-2830-4359 scheme: orcid - affiliations: - name: Northwestern University family_name: Chu given_name: Jianchun + id: 0000-0003-3527-2359 identifiers: - - identifier: https://orcid.org/0000-0003-3527-2359 + - identifier: 0000-0003-3527-2359 scheme: orcid - affiliations: - name: Northwestern University family_name: Melani given_name: Rafael + id: 0000-0002-0349-235X identifiers: - - identifier: https://orcid.org/0000-0002-0349-235X + - identifier: 0000-0002-0349-235X scheme: orcid - affiliations: - name: California Institute of Technology - name: California States University Los Angeles family_name: Cid given_name: Clement + id: 0000-0002-7293-035X identifiers: - - identifier: https://orcid.org/0000-0002-7293-035X + - identifier: 0000-0002-7293-035X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Menichelli given_name: Mauro + id: 0000-0002-9004-735X identifiers: - - identifier: https://orcid.org/0000-0002-9004-735X + - identifier: 0000-0002-9004-735X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Arnold given_name: "Andr\xE9" + id: 0000-0003-1046-635X identifiers: - - identifier: https://orcid.org/0000-0003-1046-635X + - identifier: 0000-0003-1046-635X scheme: orcid - affiliations: - name: CERN family_name: Baccigalupi given_name: Carlo + id: 0000-0001-7154-0360 identifiers: - - identifier: https://orcid.org/0000-0001-7154-0360 + - identifier: 0000-0001-7154-0360 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Strasser given_name: Sebastian + id: 0000-0001-8045-5360 identifiers: - - identifier: https://orcid.org/0000-0001-8045-5360 + - identifier: 0000-0001-8045-5360 scheme: orcid - affiliations: - name: TU Wien family_name: Tyc given_name: Jakub + id: 0000-0002-3841-8360 identifiers: - - identifier: https://orcid.org/0000-0002-3841-8360 + - identifier: 0000-0002-3841-8360 scheme: orcid - affiliations: - name: CERN family_name: Assel given_name: Benjamin + id: 0000-0003-0902-8360 identifiers: - - identifier: https://orcid.org/0000-0003-0902-8360 + - identifier: 0000-0003-0902-8360 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Barroso given_name: Vasco + id: 0000-0001-6837-3362 identifiers: - - identifier: https://orcid.org/0000-0001-6837-3362 + - identifier: 0000-0001-6837-3362 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Sturm given_name: Marc + id: 0000-0002-6552-8362 identifiers: - - identifier: https://orcid.org/0000-0002-6552-8362 + - identifier: 0000-0002-6552-8362 scheme: orcid - affiliations: - name: Northwestern University family_name: Cai given_name: Songting + id: 0000-0003-2203-5362 identifiers: - - identifier: https://orcid.org/0000-0003-2203-5362 + - identifier: 0000-0003-2203-5362 scheme: orcid - affiliations: - name: University of Pittsburgh - name: Northwestern University family_name: Kostetskyy given_name: Pavlo + id: 0000-0003-2796-0362 identifiers: - - identifier: https://orcid.org/0000-0003-2796-0362 + - identifier: 0000-0003-2796-0362 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Zettl given_name: Roman + id: 0000-0003-2832-2362 identifiers: - - identifier: https://orcid.org/0000-0003-2832-2362 + - identifier: 0000-0003-2832-2362 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Oe given_name: Kazuichi + id: 0000-0003-3386-9362 identifiers: - - identifier: https://orcid.org/0000-0003-3386-9362 + - identifier: 0000-0003-3386-9362 scheme: orcid - affiliations: - name: TU Wien family_name: Breiling given_name: Meinhard + id: 0000-0001-8354-2363 identifiers: - - identifier: https://orcid.org/0000-0001-8354-2363 + - identifier: 0000-0001-8354-2363 scheme: orcid - affiliations: - name: Northwestern University family_name: Dorr given_name: John + id: 0000-0002-1444-1363 identifiers: - - identifier: https://orcid.org/0000-0002-1444-1363 + - identifier: 0000-0002-1444-1363 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Raparia given_name: Deepak + id: 0000-0002-5149-6363 identifiers: - - identifier: https://orcid.org/0000-0002-5149-6363 + - identifier: 0000-0002-5149-6363 scheme: orcid - affiliations: - name: California Institute of Technology - name: Harvard University family_name: Cao given_name: Hao + id: 0000-0002-6917-8363 identifiers: - - identifier: https://orcid.org/0000-0002-6917-8363 + - identifier: 0000-0002-6917-8363 scheme: orcid - affiliations: - name: Northwestern University family_name: Riggs given_name: Jamie + id: 0000-0002-8220-9363 identifiers: - - identifier: https://orcid.org/0000-0002-8220-9363 + - identifier: 0000-0002-8220-9363 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Li given_name: Jin + id: 0000-0001-5897-3364 identifiers: - - identifier: https://orcid.org/0000-0001-5897-3364 + - identifier: 0000-0001-5897-3364 scheme: orcid - affiliations: - name: Northwestern University family_name: Judge given_name: Sheila + id: 0000-0002-1668-6364 identifiers: - - identifier: https://orcid.org/0000-0002-1668-6364 + - identifier: 0000-0002-1668-6364 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Coles given_name: Rebecca + id: 0000-0002-4774-9364 identifiers: - - identifier: https://orcid.org/0000-0002-4774-9364 + - identifier: 0000-0002-4774-9364 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schmiegel given_name: Jan-Patrick + id: 0000-0002-9624-1364 identifiers: - - identifier: https://orcid.org/0000-0002-9624-1364 + - identifier: 0000-0002-9624-1364 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" @@ -16804,175 +19140,199 @@ - name: "P\xE4dagogische Hochschule Graub\xFCnden" family_name: Cathomas given_name: Rico + id: 0000-0001-5563-7365 identifiers: - - identifier: https://orcid.org/0000-0001-5563-7365 + - identifier: 0000-0001-5563-7365 scheme: orcid - affiliations: - name: TU Wien - name: "Johannes Kepler Universit\xE4t Linz" family_name: Oborin given_name: Evgenii + id: 0000-0001-6425-0365 identifiers: - - identifier: https://orcid.org/0000-0001-6425-0365 + - identifier: 0000-0001-6425-0365 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Fall given_name: Aminata + id: 0000-0001-6384-8365 identifiers: - - identifier: https://orcid.org/0000-0001-6384-8365 + - identifier: 0000-0001-6384-8365 scheme: orcid - affiliations: - name: CERN family_name: D'Alessandro given_name: Gian Luigi + id: 0000-0001-8435-8365 identifiers: - - identifier: https://orcid.org/0000-0001-8435-8365 + - identifier: 0000-0001-8435-8365 scheme: orcid - affiliations: - name: CERN family_name: Ferrari given_name: Matteo + id: 0000-0002-2447-9365 identifiers: - - identifier: https://orcid.org/0000-0002-2447-9365 + - identifier: 0000-0002-2447-9365 scheme: orcid - affiliations: - name: Georgia Institute of Technology - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Bellissard given_name: Jean V + id: 0000-0002-3766-7365 identifiers: - - identifier: https://orcid.org/0000-0002-3766-7365 + - identifier: 0000-0002-3766-7365 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Bozin given_name: Emil + id: 0000-0002-6682-0365 identifiers: - - identifier: https://orcid.org/0000-0002-6682-0365 + - identifier: 0000-0002-6682-0365 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: Bamberg University family_name: Struck given_name: Olaf + id: 0000-0002-7631-6365 identifiers: - - identifier: https://orcid.org/0000-0002-7631-6365 + - identifier: 0000-0002-7631-6365 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "B\xF6ck" given_name: Ingrid + id: 0000-0003-2508-5365 identifiers: - - identifier: https://orcid.org/0000-0003-2508-5365 + - identifier: 0000-0003-2508-5365 scheme: orcid - affiliations: - name: CERN - name: "Alma Mater Studiorum - Universit\xE0 di Bologna" family_name: Capoani given_name: Federico + id: 0000-0001-9732-0366 identifiers: - - identifier: https://orcid.org/0000-0001-9732-0366 + - identifier: 0000-0001-9732-0366 scheme: orcid - affiliations: - name: Northwestern University family_name: Sullivan` given_name: Noelle + id: 0000-0002-0888-6366 identifiers: - - identifier: https://orcid.org/0000-0002-0888-6366 + - identifier: 0000-0002-0888-6366 scheme: orcid - affiliations: - name: California Institute of Technology family_name: VanderVelde given_name: David + id: 0000-0002-2907-0366 identifiers: - - identifier: https://orcid.org/0000-0002-2907-0366 + - identifier: 0000-0002-2907-0366 scheme: orcid - affiliations: - name: Northwestern University family_name: Myers given_name: Ethan + id: 0000-0002-4814-0366 identifiers: - - identifier: https://orcid.org/0000-0002-4814-0366 + - identifier: 0000-0002-4814-0366 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schmeide given_name: Katja + id: 0000-0002-6859-8366 identifiers: - - identifier: https://orcid.org/0000-0002-6859-8366 + - identifier: 0000-0002-6859-8366 scheme: orcid - affiliations: - name: TU Wien family_name: Walter given_name: Thomas + id: 0000-0002-8252-5366 identifiers: - - identifier: https://orcid.org/0000-0002-8252-5366 + - identifier: 0000-0002-8252-5366 scheme: orcid - affiliations: - name: Northwestern University family_name: Arpaci given_name: Sevde Nur + id: 0000-0001-6008-9367 identifiers: - - identifier: https://orcid.org/0000-0001-6008-9367 + - identifier: 0000-0001-6008-9367 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: Ludwig-Maximilians-Universitat Munchen family_name: Nolde given_name: Michael + id: 0000-0001-6893-7367 identifiers: - - identifier: https://orcid.org/0000-0001-6893-7367 + - identifier: 0000-0001-6893-7367 scheme: orcid - affiliations: - name: University of Fribourg - name: "HFR Fribourg H\xF4pital cantonal" family_name: Egger given_name: Bernhard + id: 0000-0002-2099-3367 identifiers: - - identifier: https://orcid.org/0000-0002-2099-3367 + - identifier: 0000-0002-2099-3367 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Teichert given_name: Jochen + id: 0000-0002-9114-2367 identifiers: - - identifier: https://orcid.org/0000-0002-9114-2367 + - identifier: 0000-0002-9114-2367 scheme: orcid - affiliations: - name: University of Fribourg family_name: "Superbia-Guimar\xE3es" given_name: "Lu\xEDsa" + id: 0000-0003-0310-7367 identifiers: - - identifier: https://orcid.org/0000-0003-0310-7367 + - identifier: 0000-0003-0310-7367 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bemmerer given_name: Daniel + id: 0000-0003-0470-8367 identifiers: - - identifier: https://orcid.org/0000-0003-0470-8367 + - identifier: 0000-0003-0470-8367 scheme: orcid - affiliations: - name: University of Fribourg family_name: Kurth given_name: Salome + id: 0000-0003-1432-4367 identifiers: - - identifier: https://orcid.org/0000-0003-1432-4367 + - identifier: 0000-0003-1432-4367 scheme: orcid - affiliations: - name: Northwestern University family_name: Alvares given_name: Keith + id: 0000-0003-3710-4367 identifiers: - - identifier: https://orcid.org/0000-0003-3710-4367 + - identifier: 0000-0003-3710-4367 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Saukh given_name: Olga + id: 0000-0001-7849-3368 identifiers: - - identifier: https://orcid.org/0000-0001-7849-3368 + - identifier: 0000-0001-7849-3368 scheme: orcid - affiliations: - name: Fermilab @@ -16980,141 +19340,161 @@ - name: CERN family_name: Ruiz Jimeno given_name: Alberto + id: 0000-0002-3639-0368 identifiers: - - identifier: https://orcid.org/0000-0002-3639-0368 + - identifier: 0000-0002-3639-0368 scheme: orcid - affiliations: - name: TU Wien family_name: Mihovilovic given_name: Marko D. + id: 0000-0002-5438-8368 identifiers: - - identifier: https://orcid.org/0000-0002-5438-8368 + - identifier: 0000-0002-5438-8368 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ullrich given_name: Thomas + id: 0000-0002-6196-7368 identifiers: - - identifier: https://orcid.org/0000-0002-6196-7368 + - identifier: 0000-0002-6196-7368 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Liu given_name: Burigede + id: 0000-0002-6518-3368 identifiers: - - identifier: https://orcid.org/0000-0002-6518-3368 + - identifier: 0000-0002-6518-3368 scheme: orcid - affiliations: - name: Northwestern University family_name: McGill given_name: Tara + id: 0000-0002-7129-2368 identifiers: - - identifier: https://orcid.org/0000-0002-7129-2368 + - identifier: 0000-0002-7129-2368 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Bellucci given_name: Stefano + id: 0000-0003-0326-6368 identifiers: - - identifier: https://orcid.org/0000-0003-0326-6368 + - identifier: 0000-0003-0326-6368 scheme: orcid - affiliations: - name: Northwestern University family_name: Helweh given_name: Waleed + id: 0000-0003-4620-7368 identifiers: - - identifier: https://orcid.org/0000-0003-4620-7368 + - identifier: 0000-0003-4620-7368 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Koromila given_name: Theodora + id: 0000-0001-5504-1369 identifiers: - - identifier: https://orcid.org/0000-0001-5504-1369 + - identifier: 0000-0001-5504-1369 scheme: orcid - affiliations: - name: University of Fribourg family_name: Meyenhofer given_name: Felix + id: 0000-0001-8870-8369 identifiers: - - identifier: https://orcid.org/0000-0001-8870-8369 + - identifier: 0000-0001-8870-8369 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kahn given_name: David + id: 0000-0002-0157-0369 identifiers: - - identifier: https://orcid.org/0000-0002-0157-0369 + - identifier: 0000-0002-0157-0369 scheme: orcid - affiliations: - name: CERN family_name: Jones given_name: Owain Rhodri + id: 0000-0002-0130-0369 identifiers: - - identifier: https://orcid.org/0000-0002-0130-0369 + - identifier: 0000-0002-0130-0369 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mohan given_name: Krithika + id: 0000-0002-0453-6369 identifiers: - - identifier: https://orcid.org/0000-0002-0453-6369 + - identifier: 0000-0002-0453-6369 scheme: orcid - affiliations: - name: TU Wien family_name: Redlein given_name: Alex + id: 0000-0002-1659-6369 identifiers: - - identifier: https://orcid.org/0000-0002-1659-6369 + - identifier: 0000-0002-1659-6369 scheme: orcid - affiliations: - name: Northwestern University family_name: Albaugh given_name: Alex + id: 0000-0002-3091-0369 identifiers: - - identifier: https://orcid.org/0000-0002-3091-0369 + - identifier: 0000-0002-3091-0369 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Fujii given_name: Kaito + id: 0000-0002-4315-6369 identifiers: - - identifier: https://orcid.org/0000-0002-4315-6369 + - identifier: 0000-0002-4315-6369 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Shupeng + id: 0000-0002-8723-9369 identifiers: - - identifier: https://orcid.org/0000-0002-8723-9369 + - identifier: 0000-0002-8723-9369 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Ghorbani Asl given_name: Mahdi + id: 0000-0003-3060-4369 identifiers: - - identifier: https://orcid.org/0000-0003-3060-4369 + - identifier: 0000-0003-3060-4369 scheme: orcid - affiliations: - name: University of Fribourg family_name: Furrer given_name: Olivier + id: 0000-0003-3618-4369 identifiers: - - identifier: https://orcid.org/0000-0003-3618-4369 + - identifier: 0000-0003-3618-4369 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wu given_name: Daw-An + id: 0000-0003-4296-3369 identifiers: - - identifier: https://orcid.org/0000-0003-4296-3369 + - identifier: 0000-0003-4296-3369 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Stefan given_name: Martin + id: 0000-0002-0106-436X identifiers: - - identifier: https://orcid.org/0000-0002-0106-436X + - identifier: 0000-0002-0106-436X scheme: orcid - affiliations: - name: Swiss Institute of Comparative Law @@ -17122,123 +19502,140 @@ - name: UniFr LLM Alumni Association family_name: "G\xFCrsel" given_name: Yaman + id: 0000-0002-2121-736X identifiers: - - identifier: https://orcid.org/0000-0002-2121-736X + - identifier: 0000-0002-2121-736X scheme: orcid - affiliations: - name: CERN family_name: Forthomme given_name: Laurent + id: 0000-0002-3302-336X identifiers: - - identifier: https://orcid.org/0000-0002-3302-336X + - identifier: 0000-0002-3302-336X scheme: orcid - affiliations: - name: TU Wien family_name: Mauro given_name: David + id: 0000-0003-3695-436X identifiers: - - identifier: https://orcid.org/0000-0003-3695-436X + - identifier: 0000-0003-3695-436X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Ogbonna given_name: Jude + id: 0000-0002-2596-4370 identifiers: - - identifier: https://orcid.org/0000-0002-2596-4370 + - identifier: 0000-0002-2596-4370 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Steinberg given_name: Peter + id: 0000-0002-5349-8370 identifiers: - - identifier: https://orcid.org/0000-0002-5349-8370 + - identifier: 0000-0002-5349-8370 scheme: orcid - affiliations: - name: TU Wien family_name: Loimer given_name: Thomas + id: 0000-0002-5442-3370 identifiers: - - identifier: https://orcid.org/0000-0002-5442-3370 + - identifier: 0000-0002-5442-3370 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lehnigk given_name: Ronald + id: 0000-0002-5408-7370 identifiers: - - identifier: https://orcid.org/0000-0002-5408-7370 + - identifier: 0000-0002-5408-7370 scheme: orcid - affiliations: - name: TU Wien family_name: Steinbach given_name: Johannes + id: 0000-0003-1479-9370 identifiers: - - identifier: https://orcid.org/0000-0003-1479-9370 + - identifier: 0000-0003-1479-9370 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Neubacher given_name: Daniela + id: 0000-0003-3458-9370 identifiers: - - identifier: https://orcid.org/0000-0003-3458-9370 + - identifier: 0000-0003-3458-9370 scheme: orcid - affiliations: - name: University of California Riverside - name: California Institute of Technology family_name: Barish given_name: Barry + id: 0000-0001-6386-7371 identifiers: - - identifier: https://orcid.org/0000-0001-6386-7371 + - identifier: 0000-0001-6386-7371 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Cherevan given_name: Alexey + id: 0000-0001-8934-6371 identifiers: - - identifier: https://orcid.org/0000-0001-8934-6371 + - identifier: 0000-0001-8934-6371 scheme: orcid - affiliations: - name: Victoria University of Wellington - name: Northwestern University family_name: Liu given_name: Lujia (Luke) + id: 0000-0001-9452-4371 identifiers: - - identifier: https://orcid.org/0000-0001-9452-4371 + - identifier: 0000-0001-9452-4371 scheme: orcid - affiliations: - name: Northwestern University family_name: Blair given_name: Neal + id: 0000-0002-3449-3371 identifiers: - - identifier: https://orcid.org/0000-0002-3449-3371 + - identifier: 0000-0002-3449-3371 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Bodner given_name: Merit + id: 0000-0002-4728-6371 identifiers: - - identifier: https://orcid.org/0000-0002-4728-6371 + - identifier: 0000-0002-4728-6371 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Plomp given_name: Gijs + id: 0000-0002-9883-3371 identifiers: - - identifier: https://orcid.org/0000-0002-9883-3371 + - identifier: 0000-0002-9883-3371 scheme: orcid - affiliations: - name: Northwestern University family_name: Roesner given_name: Emily + id: 0000-0003-0583-7371 identifiers: - - identifier: https://orcid.org/0000-0003-0583-7371 + - identifier: 0000-0003-0583-7371 scheme: orcid - affiliations: - name: Northwestern University family_name: Kelleher given_name: Neil + id: 0000-0002-8815-3372 identifiers: - - identifier: https://orcid.org/0000-0002-8815-3372 + - identifier: 0000-0002-8815-3372 scheme: orcid - affiliations: - name: Uppsala University @@ -17246,529 +19643,603 @@ - name: Uppsala Universitet family_name: Cedernaes given_name: Jonathan + id: 0000-0002-9052-8372 identifiers: - - identifier: https://orcid.org/0000-0002-9052-8372 + - identifier: 0000-0002-9052-8372 scheme: orcid - affiliations: - name: Northwestern University family_name: Deshpande given_name: Tejas + id: 0000-0003-0326-1372 identifiers: - - identifier: https://orcid.org/0000-0003-0326-1372 + - identifier: 0000-0003-0326-1372 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yao given_name: Yuxing + id: 0000-0003-0337-6372 identifiers: - - identifier: https://orcid.org/0000-0003-0337-6372 + - identifier: 0000-0003-0337-6372 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kabluchko given_name: Zakhar + id: 0000-0001-8483-3373 identifiers: - - identifier: https://orcid.org/0000-0001-8483-3373 + - identifier: 0000-0001-8483-3373 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhang given_name: Jiayong + id: 0000-0001-9080-3373 identifiers: - - identifier: https://orcid.org/0000-0001-9080-3373 + - identifier: 0000-0001-9080-3373 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: GRUBER given_name: "G\xFCnter" + id: 0000-0001-9153-1373 identifiers: - - identifier: https://orcid.org/0000-0001-9153-1373 + - identifier: 0000-0001-9153-1373 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Neugebauer given_name: Matthias + id: 0000-0002-1363-0373 identifiers: - - identifier: https://orcid.org/0000-0002-1363-0373 + - identifier: 0000-0002-1363-0373 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Hannen given_name: Volker Michael + id: 0000-0002-2944-8373 identifiers: - - identifier: https://orcid.org/0000-0002-2944-8373 + - identifier: 0000-0002-2944-8373 scheme: orcid - affiliations: - name: CERN family_name: Kieffer given_name: Robert + id: 0000-0002-6678-3373 identifiers: - - identifier: https://orcid.org/0000-0002-6678-3373 + - identifier: 0000-0002-6678-3373 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schatto-Eckrodt given_name: Tim + id: 0000-0003-1658-4373 identifiers: - - identifier: https://orcid.org/0000-0003-1658-4373 + - identifier: 0000-0003-1658-4373 scheme: orcid - affiliations: - name: CERN family_name: Lichard given_name: Peter + id: 0000-0003-2223-9373 identifiers: - - identifier: https://orcid.org/0000-0003-2223-9373 + - identifier: 0000-0003-2223-9373 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" - name: "Universit\xE4tsklinikum Carl Gustav Carus" family_name: Riedel given_name: Andreas + id: 0000-0003-3091-7373 identifiers: - - identifier: https://orcid.org/0000-0003-3091-7373 + - identifier: 0000-0003-3091-7373 scheme: orcid - affiliations: - name: California Institute of Technology - name: Istituto di Informatica e Telematica Consiglio Nazionale delle Ricerche family_name: Arnaboldi given_name: Valerio + id: 0000-0002-2563-5374 identifiers: - - identifier: https://orcid.org/0000-0002-2563-5374 + - identifier: 0000-0002-2563-5374 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Gschwandtner given_name: Theresia + id: 0000-0002-9555-3374 identifiers: - - identifier: https://orcid.org/0000-0002-9555-3374 + - identifier: 0000-0002-9555-3374 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: OLAVE given_name: ELIAS JONHATAN + id: 0000-0003-0567-8374 identifiers: - - identifier: https://orcid.org/0000-0003-0567-8374 + - identifier: 0000-0003-0567-8374 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: University of Bamberg family_name: Vinken given_name: Gerhard + id: 0000-0003-3550-0374 identifiers: - - identifier: https://orcid.org/0000-0003-3550-0374 + - identifier: 0000-0003-3550-0374 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: vanderbruggen given_name: Anna + id: 0000-0003-4092-4374 identifiers: - - identifier: https://orcid.org/0000-0003-4092-4374 + - identifier: 0000-0003-4092-4374 scheme: orcid - affiliations: - name: TU Wien family_name: Preinstorfer given_name: Philipp + id: 0000-0001-5189-5375 identifiers: - - identifier: https://orcid.org/0000-0001-5189-5375 + - identifier: 0000-0001-5189-5375 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Carpeggiani given_name: Paolo Antonio + id: 0000-0002-6875-1375 identifiers: - - identifier: https://orcid.org/0000-0002-6875-1375 + - identifier: 0000-0002-6875-1375 scheme: orcid - affiliations: - name: TU Wien family_name: Benedikt given_name: Florian + id: 0000-0002-8600-1375 identifiers: - - identifier: https://orcid.org/0000-0002-8600-1375 + - identifier: 0000-0002-8600-1375 scheme: orcid - affiliations: - name: CERN family_name: Lillestol given_name: Egil + id: 0000-0002-0963-2376 identifiers: - - identifier: https://orcid.org/0000-0002-0963-2376 + - identifier: 0000-0002-0963-2376 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "B\xFCltmann" given_name: Helga + id: 0000-0002-1948-6376 identifiers: - - identifier: https://orcid.org/0000-0002-1948-6376 + - identifier: 0000-0002-1948-6376 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Maroun given_name: Emad Jacob + id: 0000-0002-3675-3376 identifiers: - - identifier: https://orcid.org/0000-0002-3675-3376 + - identifier: 0000-0002-3675-3376 scheme: orcid - affiliations: - name: University of Bamberg family_name: Pourjavady given_name: Reza + id: 0000-0002-6989-7376 identifiers: - - identifier: https://orcid.org/0000-0002-6989-7376 + - identifier: 0000-0002-6989-7376 scheme: orcid - affiliations: - name: TU Wien family_name: Otepka given_name: Johannes + id: 0000-0003-4203-8376 identifiers: - - identifier: https://orcid.org/0000-0003-4203-8376 + - identifier: 0000-0003-4203-8376 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bambauer-Sachse given_name: Silke + id: 0000-0001-5151-8377 identifiers: - - identifier: https://orcid.org/0000-0001-5151-8377 + - identifier: 0000-0001-5151-8377 scheme: orcid - affiliations: - name: TU Wien family_name: Toschi given_name: Alessandro + id: 0000-0001-5669-3377 identifiers: - - identifier: https://orcid.org/0000-0001-5669-3377 + - identifier: 0000-0001-5669-3377 scheme: orcid - affiliations: - name: University of Fribourg family_name: Trucco given_name: Noemi + id: 0000-0001-6611-1377 identifiers: - - identifier: https://orcid.org/0000-0001-6611-1377 + - identifier: 0000-0001-6611-1377 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Chuxuan + id: 0000-0001-7759-0377 identifiers: - - identifier: https://orcid.org/0000-0001-7759-0377 + - identifier: 0000-0001-7759-0377 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Fisyak given_name: Yuri + id: 0000-0002-3151-8377 identifiers: - - identifier: https://orcid.org/0000-0002-3151-8377 + - identifier: 0000-0002-3151-8377 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Aviles Santillana given_name: Ignacio + id: 0000-0002-3768-8377 identifiers: - - identifier: https://orcid.org/0000-0002-3768-8377 + - identifier: 0000-0002-3768-8377 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ludi given_name: Regula + id: 0000-0002-5216-7377 identifiers: - - identifier: https://orcid.org/0000-0002-5216-7377 + - identifier: 0000-0002-5216-7377 scheme: orcid - affiliations: - name: Northwestern university center for atom probe tomography (NUCAPT) - name: Northwestern University family_name: Baik given_name: Sung-Il + id: 0000-0002-9787-5377 identifiers: - - identifier: https://orcid.org/0000-0002-9787-5377 + - identifier: 0000-0002-9787-5377 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Pikin given_name: Alexander + id: 0000-0001-9344-7378 identifiers: - - identifier: https://orcid.org/0000-0001-9344-7378 + - identifier: 0000-0001-9344-7378 scheme: orcid - affiliations: - name: Northwestern University family_name: "Sim\xF5es" given_name: "Jos\xE9 Miguel" + id: 0000-0001-9808-8378 identifiers: - - identifier: https://orcid.org/0000-0001-9808-8378 + - identifier: 0000-0001-9808-8378 scheme: orcid - affiliations: - name: Northwestern University family_name: Patterson given_name: Jacqueline + id: 0000-0002-0653-5378 identifiers: - - identifier: https://orcid.org/0000-0002-0653-5378 + - identifier: 0000-0002-0653-5378 scheme: orcid - affiliations: - name: TU Wien - name: "G\xFCttel Management Consulting, Research, & Training" family_name: Guettel given_name: Wolfgang + id: 0000-0002-0957-6378 identifiers: - - identifier: https://orcid.org/0000-0002-0957-6378 + - identifier: 0000-0002-0957-6378 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Svoboda given_name: Philipp + id: 0000-0002-2277-0378 identifiers: - - identifier: https://orcid.org/0000-0002-2277-0378 + - identifier: 0000-0002-2277-0378 scheme: orcid - affiliations: - name: California Institute of Technology family_name: "\u0160tundl" given_name: Jan + id: 0000-0002-3740-3378 identifiers: - - identifier: https://orcid.org/0000-0002-3740-3378 + - identifier: 0000-0002-3740-3378 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Espinoza Garrido given_name: Felipe + id: 0000-0002-4765-2378 identifiers: - - identifier: https://orcid.org/0000-0002-4765-2378 + - identifier: 0000-0002-4765-2378 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cho given_name: Inha + id: 0000-0002-7564-5378 identifiers: - - identifier: https://orcid.org/0000-0002-7564-5378 + - identifier: 0000-0002-7564-5378 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Fedi given_name: Mariaelena + id: 0000-0003-2658-8378 identifiers: - - identifier: https://orcid.org/0000-0003-2658-8378 + - identifier: 0000-0003-2658-8378 scheme: orcid - affiliations: - name: Northwestern University family_name: Dunand given_name: David + id: 0000-0001-5476-7379 identifiers: - - identifier: https://orcid.org/0000-0001-5476-7379 + - identifier: 0000-0001-5476-7379 scheme: orcid - affiliations: - name: TU Wien family_name: "Mecklenbr\xE4uker" given_name: Christoph + id: 0000-0001-9571-0379 identifiers: - - identifier: https://orcid.org/0000-0001-9571-0379 + - identifier: 0000-0001-9571-0379 scheme: orcid - affiliations: - name: University of Fribourg family_name: Janett given_name: Elia + id: 0000-0002-6417-3379 identifiers: - - identifier: https://orcid.org/0000-0002-6417-3379 + - identifier: 0000-0002-6417-3379 scheme: orcid - affiliations: - name: CERN family_name: Santos given_name: Alejandro + id: 0000-0002-7161-3379 identifiers: - - identifier: https://orcid.org/0000-0002-7161-3379 + - identifier: 0000-0002-7161-3379 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Bakalis given_name: Christos + id: 0000-0002-9931-7379 identifiers: - - identifier: https://orcid.org/0000-0002-9931-7379 + - identifier: 0000-0002-9931-7379 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Gadau given_name: "J\xFCrgen" + id: 0000-0003-1258-5379 identifiers: - - identifier: https://orcid.org/0000-0003-1258-5379 + - identifier: 0000-0003-1258-5379 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: Hiroshima - Higashihiroshima Campus family_name: "Trindade Gon\xE7alves" given_name: "Francisco Jos\xE9" + id: 0000-0002-1671-437X identifiers: - - identifier: https://orcid.org/0000-0002-1671-437X + - identifier: 0000-0002-1671-437X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Turrisi given_name: Rosario + id: 0000-0002-5272-337X identifiers: - - identifier: https://orcid.org/0000-0002-5272-337X + - identifier: 0000-0002-5272-337X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Sitko given_name: Monika + id: 0000-0002-9434-137X identifiers: - - identifier: https://orcid.org/0000-0002-9434-137X + - identifier: 0000-0002-9434-137X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Bird given_name: Matthew + id: 0000-0002-6819-5380 identifiers: - - identifier: https://orcid.org/0000-0002-6819-5380 + - identifier: 0000-0002-6819-5380 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Grancagnolo given_name: Francesco + id: 0000-0002-9367-3380 identifiers: - - identifier: https://orcid.org/0000-0002-9367-3380 + - identifier: 0000-0002-9367-3380 scheme: orcid - affiliations: - name: TU Wien - name: Wolfgang Pauli Institute family_name: Kazakov given_name: Georgy + id: 0000-0003-4110-2380 identifiers: - - identifier: https://orcid.org/0000-0003-4110-2380 + - identifier: 0000-0003-4110-2380 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Han given_name: Lihao + id: 0000-0002-0452-3381 identifiers: - - identifier: https://orcid.org/0000-0002-0452-3381 + - identifier: 0000-0002-0452-3381 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Morris given_name: Patrick + id: 0000-0002-5186-4381 identifiers: - - identifier: https://orcid.org/0000-0002-5186-4381 + - identifier: 0000-0002-5186-4381 scheme: orcid - affiliations: - name: CERN family_name: Krasznahorkay given_name: Attila + id: 0000-0002-6468-1381 identifiers: - - identifier: https://orcid.org/0000-0002-6468-1381 + - identifier: 0000-0002-6468-1381 scheme: orcid - affiliations: - name: Graz University of Technology - name: Know Center GmbH family_name: Dennerlein given_name: Sebastian + id: 0000-0001-6011-4382 identifiers: - - identifier: https://orcid.org/0000-0001-6011-4382 + - identifier: 0000-0001-6011-4382 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Zhijie + id: 0000-0001-9232-7382 identifiers: - - identifier: https://orcid.org/0000-0001-9232-7382 + - identifier: 0000-0001-9232-7382 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Yamada given_name: Seiji + id: 0000-0002-5907-7382 identifiers: - - identifier: https://orcid.org/0000-0002-5907-7382 + - identifier: 0000-0002-5907-7382 scheme: orcid - affiliations: - name: Northwestern University family_name: Weber given_name: Jacob + id: 0000-0002-7756-6382 identifiers: - - identifier: https://orcid.org/0000-0002-7756-6382 + - identifier: 0000-0002-7756-6382 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Wienken given_name: Carina + id: 0000-0002-7681-1382 identifiers: - - identifier: https://orcid.org/0000-0002-7681-1382 + - identifier: 0000-0002-7681-1382 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Titov given_name: Mikhail + id: 0000-0003-2357-7382 identifiers: - - identifier: https://orcid.org/0000-0003-2357-7382 + - identifier: 0000-0003-2357-7382 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Kathrein given_name: Lukas + id: 0000-0001-5523-9383 identifiers: - - identifier: https://orcid.org/0000-0001-5523-9383 + - identifier: 0000-0001-5523-9383 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Riva given_name: Michele + id: 0000-0001-8303-7383 identifiers: - - identifier: https://orcid.org/0000-0001-8303-7383 + - identifier: 0000-0001-8303-7383 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Lihong + id: 0000-0001-9783-4383 identifiers: - - identifier: https://orcid.org/0000-0001-9783-4383 + - identifier: 0000-0001-9783-4383 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Morris given_name: John + id: 0000-0002-6027-4383 identifiers: - - identifier: https://orcid.org/0000-0002-6027-4383 + - identifier: 0000-0002-6027-4383 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Gaikwad given_name: Avinash + id: 0000-0002-7379-6383 identifiers: - - identifier: https://orcid.org/0000-0002-7379-6383 + - identifier: 0000-0002-7379-6383 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Zvyagin given_name: Sergei + id: 0000-0003-0994-7383 identifiers: - - identifier: https://orcid.org/0000-0003-0994-7383 + - identifier: 0000-0003-0994-7383 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Zimmermann given_name: Patrick + id: 0000-0003-3078-9383 identifiers: - - identifier: https://orcid.org/0000-0003-3078-9383 + - identifier: 0000-0003-3078-9383 scheme: orcid - affiliations: - name: TU Wien family_name: Hammer given_name: Bernhard + id: 0000-0003-3082-6383 identifiers: - - identifier: https://orcid.org/0000-0003-3082-6383 + - identifier: 0000-0003-3082-6383 scheme: orcid - affiliations: - name: Northwestern University family_name: Rollo given_name: Dylan + id: 0000-0003-3503-7383 identifiers: - - identifier: https://orcid.org/0000-0003-3503-7383 + - identifier: 0000-0003-3503-7383 scheme: orcid - affiliations: - name: University of Chicago - name: Northwestern University family_name: Nitzany given_name: Eyal + id: 0000-0001-7702-8384 identifiers: - - identifier: https://orcid.org/0000-0001-7702-8384 + - identifier: 0000-0001-7702-8384 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kayran given_name: Dmitry + id: 0000-0002-1156-4384 identifiers: - - identifier: https://orcid.org/0000-0002-1156-4384 + - identifier: 0000-0002-1156-4384 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" @@ -17776,128 +20247,146 @@ - name: Universidade Federal do Estado do Rio de Janeiro family_name: Sichel given_name: Ricardo + id: 0000-0002-8055-1384 identifiers: - - identifier: https://orcid.org/0000-0002-8055-1384 + - identifier: 0000-0002-8055-1384 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Heath given_name: James + id: 0000-0001-5356-4385 identifiers: - - identifier: https://orcid.org/0000-0001-5356-4385 + - identifier: 0000-0001-5356-4385 scheme: orcid - affiliations: - name: Northwestern University family_name: Reiser given_name: Brian + id: 0000-0002-2961-0385 identifiers: - - identifier: https://orcid.org/0000-0002-2961-0385 + - identifier: 0000-0002-2961-0385 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Brooks given_name: Stephen + id: 0000-0002-4754-4385 identifiers: - - identifier: https://orcid.org/0000-0002-4754-4385 + - identifier: 0000-0002-4754-4385 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Thomas given_name: Christine + id: 0000-0002-7845-5385 identifiers: - - identifier: https://orcid.org/0000-0002-7845-5385 + - identifier: 0000-0002-7845-5385 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hightower given_name: Adrian + id: 0000-0003-0805-2385 identifiers: - - identifier: https://orcid.org/0000-0003-0805-2385 + - identifier: 0000-0003-0805-2385 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Bauer given_name: Jens + id: 0000-0003-3731-2385 identifiers: - - identifier: https://orcid.org/0000-0003-3731-2385 + - identifier: 0000-0003-3731-2385 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "G\xF6sweiner" given_name: Christian + id: 0000-0003-4453-9385 identifiers: - - identifier: https://orcid.org/0000-0003-4453-9385 + - identifier: 0000-0003-4453-9385 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Garrido Barros given_name: Pablo + id: 0000-0002-1489-3386 identifiers: - - identifier: https://orcid.org/0000-0002-1489-3386 + - identifier: 0000-0002-1489-3386 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nguyen given_name: Vy + id: 0000-0002-7563-7386 identifiers: - - identifier: https://orcid.org/0000-0002-7563-7386 + - identifier: 0000-0002-7563-7386 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "R\xF6hner" given_name: Jessica + id: 0000-0003-0633-3386 identifiers: - - identifier: https://orcid.org/0000-0003-0633-3386 + - identifier: 0000-0003-0633-3386 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lam given_name: Ka Chun + id: 0000-0003-2131-4386 identifiers: - - identifier: https://orcid.org/0000-0003-2131-4386 + - identifier: 0000-0003-2131-4386 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Mora given_name: Maximilian + id: 0000-0001-6297-8387 identifiers: - - identifier: https://orcid.org/0000-0001-6297-8387 + - identifier: 0000-0001-6297-8387 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fattahi given_name: Heresh + id: 0000-0001-6926-4387 identifiers: - - identifier: https://orcid.org/0000-0001-6926-4387 + - identifier: 0000-0001-6926-4387 scheme: orcid - affiliations: - name: Northwestern University - name: "Institut de physique th\xE9orique" family_name: Lewandowski given_name: Matthew + id: 0000-0001-7825-9387 identifiers: - - identifier: https://orcid.org/0000-0001-7825-9387 + - identifier: 0000-0001-7825-9387 scheme: orcid - affiliations: - name: Northwestern University family_name: Ratner given_name: Mark + id: 0000-0001-7983-3387 identifiers: - - identifier: https://orcid.org/0000-0001-7983-3387 + - identifier: 0000-0001-7983-3387 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: "Gon\xE7alves" given_name: Artur + id: 0000-0001-8765-7387 identifiers: - - identifier: https://orcid.org/0000-0001-8765-7387 + - identifier: 0000-0001-8765-7387 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: "M\xF6ri" given_name: Michelle + id: 0000-0002-2419-8387 identifiers: - - identifier: https://orcid.org/0000-0002-2419-8387 + - identifier: 0000-0002-2419-8387 scheme: orcid - affiliations: - name: Beijing Normal University @@ -17905,44 +20394,50 @@ - name: CHuepe Labs Inc. family_name: Huepe given_name: Cristian + id: 0000-0002-6495-8387 identifiers: - - identifier: https://orcid.org/0000-0002-6495-8387 + - identifier: 0000-0002-6495-8387 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: Hamburg University of Applied Sciences family_name: "G\xFCntner" given_name: Simon + id: 0000-0002-8142-4387 identifiers: - - identifier: https://orcid.org/0000-0002-8142-4387 + - identifier: 0000-0002-8142-4387 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Liu given_name: Hong + id: 0000-0001-5318-6388 identifiers: - - identifier: https://orcid.org/0000-0001-5318-6388 + - identifier: 0000-0001-5318-6388 scheme: orcid - affiliations: - name: University of Bamberg family_name: Gross given_name: Tom + id: 0000-0001-8353-7388 identifiers: - - identifier: https://orcid.org/0000-0001-8353-7388 + - identifier: 0000-0001-8353-7388 scheme: orcid - affiliations: - name: Northwestern University family_name: Jones given_name: Benjamin + id: 0000-0001-9697-9388 identifiers: - - identifier: https://orcid.org/0000-0001-9697-9388 + - identifier: 0000-0001-9697-9388 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Caiazzo given_name: Ilaria + id: 0000-0002-4770-5388 identifiers: - - identifier: https://orcid.org/0000-0002-4770-5388 + - identifier: 0000-0002-4770-5388 scheme: orcid - affiliations: - name: Zeppelin University @@ -17950,340 +20445,387 @@ - name: "Universit\xE9 de Fribourg" family_name: Scholtz given_name: Hanno + id: 0000-0003-3930-0388 identifiers: - - identifier: https://orcid.org/0000-0003-3930-0388 + - identifier: 0000-0003-3930-0388 scheme: orcid - affiliations: - name: Northwestern University family_name: Carballo Molina given_name: Oscar Alejandro + id: 0000-0001-5471-3389 identifiers: - - identifier: https://orcid.org/0000-0001-5471-3389 + - identifier: 0000-0001-5471-3389 scheme: orcid - affiliations: - name: University of Vienna - name: TU Wien family_name: Inwinkl given_name: Petra + id: 0000-0001-8681-1389 identifiers: - - identifier: https://orcid.org/0000-0001-8681-1389 + - identifier: 0000-0001-8681-1389 scheme: orcid - affiliations: - name: CERN family_name: Malgeri given_name: Luca + id: 0000-0002-0113-7389 identifiers: - - identifier: https://orcid.org/0000-0002-0113-7389 + - identifier: 0000-0002-0113-7389 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Tsushima given_name: Kanae + id: 0000-0002-3383-3389 identifiers: - - identifier: https://orcid.org/0000-0002-3383-3389 + - identifier: 0000-0002-3383-3389 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Wachter given_name: Philipp + id: 0000-0002-9707-9389 identifiers: - - identifier: https://orcid.org/0000-0002-9707-9389 + - identifier: 0000-0002-9707-9389 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Sinha Roy given_name: Sujoy + id: 0000-0002-9805-5389 identifiers: - - identifier: https://orcid.org/0000-0002-9805-5389 + - identifier: 0000-0002-9805-5389 scheme: orcid - affiliations: - name: Scuola Superiore Sant'Anna - name: Graz University of Technology family_name: Greco given_name: Francesco + id: 0000-0003-2899-8389 identifiers: - - identifier: https://orcid.org/0000-0003-2899-8389 + - identifier: 0000-0003-2899-8389 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Nasta given_name: Kathleen + id: 0000-0001-6560-038X identifiers: - - identifier: https://orcid.org/0000-0001-6560-038X + - identifier: 0000-0001-6560-038X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Palla given_name: Fabrizio + id: 0000-0002-6361-438X identifiers: - - identifier: https://orcid.org/0000-0002-6361-438X + - identifier: 0000-0002-6361-438X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Porter given_name: George + id: 0000-0002-6539-638X identifiers: - - identifier: https://orcid.org/0000-0002-6539-638X + - identifier: 0000-0002-6539-638X scheme: orcid - affiliations: - name: ShanghaiTech University - name: Northwestern University family_name: Li given_name: Jian + id: 0000-0003-2359-238X identifiers: - - identifier: https://orcid.org/0000-0003-2359-238X + - identifier: 0000-0003-2359-238X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Dallinger given_name: Alexander + id: 0000-0001-9320-7390 identifiers: - - identifier: https://orcid.org/0000-0001-9320-7390 + - identifier: 0000-0001-9320-7390 scheme: orcid - affiliations: - name: TU Wien family_name: Pfeiffer given_name: Stephan + id: 0000-0002-2085-0390 identifiers: - - identifier: https://orcid.org/0000-0002-2085-0390 + - identifier: 0000-0002-2085-0390 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schrinner given_name: Philip P. J. + id: 0000-0002-5291-6390 identifiers: - - identifier: https://orcid.org/0000-0002-5291-6390 + - identifier: 0000-0002-5291-6390 scheme: orcid - affiliations: - name: University of Bristol - name: European Organization for Nuclear Research family_name: Agarwal given_name: Sharad + id: 0000-0002-6492-5390 identifiers: - - identifier: https://orcid.org/0000-0002-6492-5390 + - identifier: 0000-0002-6492-5390 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Andreev given_name: Andrey + id: 0000-0002-7833-1390 identifiers: - - identifier: https://orcid.org/0000-0002-7833-1390 + - identifier: 0000-0002-7833-1390 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Mazzoni given_name: Stefano + id: 0000-0001-5176-4391 identifiers: - - identifier: https://orcid.org/0000-0001-5176-4391 + - identifier: 0000-0001-5176-4391 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Dumont given_name: Gerald + id: 0000-0001-8114-6391 identifiers: - - identifier: https://orcid.org/0000-0001-8114-6391 + - identifier: 0000-0001-8114-6391 scheme: orcid - affiliations: - name: University of California Berkeley - name: California Institute of Technology family_name: Jha given_name: Pankaj + id: 0000-0002-5839-3391 identifiers: - - identifier: https://orcid.org/0000-0002-5839-3391 + - identifier: 0000-0002-5839-3391 scheme: orcid - affiliations: - name: California Institute of Technology - name: Jet Propulsion Laboratory family_name: Halverson given_name: Samuel + id: 0000-0003-1312-9391 identifiers: - - identifier: https://orcid.org/0000-0003-1312-9391 + - identifier: 0000-0003-1312-9391 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bonvin given_name: Audrey + id: 0000-0003-4132-2391 identifiers: - - identifier: https://orcid.org/0000-0003-4132-2391 + - identifier: 0000-0003-4132-2391 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: Massachusetts Institute of Technology family_name: Errando-Herranz given_name: Carlos + id: 0000-0001-7249-7392 identifiers: - - identifier: https://orcid.org/0000-0001-7249-7392 + - identifier: 0000-0001-7249-7392 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Rebohle given_name: Lars + id: 0000-0002-8066-6392 identifiers: - - identifier: https://orcid.org/0000-0002-8066-6392 + - identifier: 0000-0002-8066-6392 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Stirner given_name: Philipp + id: 0000-0003-1971-9392 identifiers: - - identifier: https://orcid.org/0000-0003-1971-9392 + - identifier: 0000-0003-1971-9392 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kim given_name: Seong Shik + id: 0000-0003-2604-6392 identifiers: - - identifier: https://orcid.org/0000-0003-2604-6392 + - identifier: 0000-0003-2604-6392 scheme: orcid - affiliations: - name: TU Wien family_name: Meixner given_name: Kristof + id: 0000-0001-7286-1393 identifiers: - - identifier: https://orcid.org/0000-0001-7286-1393 + - identifier: 0000-0001-7286-1393 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Shawrav given_name: Mostafa Moonir + id: 0000-0001-8639-0393 identifiers: - - identifier: https://orcid.org/0000-0001-8639-0393 + - identifier: 0000-0001-8639-0393 scheme: orcid - affiliations: - name: TU Wien family_name: "M\xF8ller" given_name: Frederik + id: 0000-0002-5095-4393 identifiers: - - identifier: https://orcid.org/0000-0002-5095-4393 + - identifier: 0000-0002-5095-4393 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Dao given_name: Valerio + id: 0000-0003-1645-8393 identifiers: - - identifier: https://orcid.org/0000-0003-1645-8393 + - identifier: 0000-0003-1645-8393 scheme: orcid - affiliations: - name: University of Bamberg family_name: Sieberer given_name: Ulrich + id: 0000-0003-4027-1393 identifiers: - - identifier: https://orcid.org/0000-0003-4027-1393 + - identifier: 0000-0003-4027-1393 scheme: orcid - affiliations: - name: Northwestern University family_name: Donahue given_name: Patrick + id: 0000-0001-6052-2394 identifiers: - - identifier: https://orcid.org/0000-0001-6052-2394 + - identifier: 0000-0001-6052-2394 scheme: orcid - affiliations: - name: Northwestern University family_name: Bhattacharya given_name: Vivek + id: 0000-0001-6524-3394 identifiers: - - identifier: https://orcid.org/0000-0001-6524-3394 + - identifier: 0000-0001-6524-3394 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Grumiller given_name: Daniel + id: 0000-0001-7980-5394 identifiers: - - identifier: https://orcid.org/0000-0001-7980-5394 + - identifier: 0000-0001-7980-5394 scheme: orcid - affiliations: - name: TU Wien family_name: WEI given_name: WENWEN + id: 0000-0001-8610-8394 identifiers: - - identifier: https://orcid.org/0000-0001-8610-8394 + - identifier: 0000-0001-8610-8394 scheme: orcid - affiliations: - name: Institute of Chemistry Chinese Academy of Sciences - name: Northwestern University family_name: Zhang given_name: Jinyuan + id: 0000-0002-0176-9394 identifiers: - - identifier: https://orcid.org/0000-0002-0176-9394 + - identifier: 0000-0002-0176-9394 scheme: orcid - affiliations: - name: Northwestern University family_name: Duncan given_name: Francesca + id: 0000-0002-3756-9394 identifiers: - - identifier: https://orcid.org/0000-0002-3756-9394 + - identifier: 0000-0002-3756-9394 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Muenster given_name: Till + id: 0000-0002-5575-9394 identifiers: - - identifier: https://orcid.org/0000-0002-5575-9394 + - identifier: 0000-0002-5575-9394 scheme: orcid - affiliations: - name: CERN family_name: Simoniello given_name: Rosa + id: 0000-0003-2042-6394 identifiers: - - identifier: https://orcid.org/0000-0003-2042-6394 + - identifier: 0000-0003-2042-6394 scheme: orcid - affiliations: - name: KAIST - name: California Institute of Technology family_name: Jung given_name: Yousung + id: 0000-0003-2615-8394 identifiers: - - identifier: https://orcid.org/0000-0003-2615-8394 + - identifier: 0000-0003-2615-8394 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Eibinger given_name: Manuel + id: 0000-0003-3139-5394 identifiers: - - identifier: https://orcid.org/0000-0003-3139-5394 + - identifier: 0000-0003-3139-5394 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Giovannozzi given_name: Massimo + id: 0000-0002-2093-9395 identifiers: - - identifier: https://orcid.org/0000-0002-2093-9395 + - identifier: 0000-0002-2093-9395 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kupka given_name: Nathalie + id: 0000-0002-5051-3395 identifiers: - - identifier: https://orcid.org/0000-0002-5051-3395 + - identifier: 0000-0002-5051-3395 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Gargano given_name: Fabio + id: 0000-0002-5055-6395 identifiers: - - identifier: https://orcid.org/0000-0002-5055-6395 + - identifier: 0000-0002-5055-6395 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Simons given_name: Mark + id: 0000-0003-1412-6395 identifiers: - - identifier: https://orcid.org/0000-0003-1412-6395 + - identifier: 0000-0003-1412-6395 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chen given_name: Yuguang + id: 0000-0003-4520-5395 identifiers: - - identifier: https://orcid.org/0000-0003-4520-5395 + - identifier: 0000-0003-4520-5395 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Westmattelmann given_name: Daniel + id: 0000-0002-0278-5396 identifiers: - - identifier: https://orcid.org/0000-0002-0278-5396 + - identifier: 0000-0002-0278-5396 scheme: orcid - affiliations: - name: TU Wien @@ -18291,86 +20833,98 @@ - name: Fraunhofer Austria Research GmbH family_name: Ansari given_name: Fazel + id: 0000-0002-2705-0396 identifiers: - - identifier: https://orcid.org/0000-0002-2705-0396 + - identifier: 0000-0002-2705-0396 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Kan-sheng + id: 0000-0002-6094-2396 identifiers: - - identifier: https://orcid.org/0000-0002-6094-2396 + - identifier: 0000-0002-6094-2396 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Tran given_name: Hung Nghiep + id: 0000-0002-8989-2396 identifiers: - - identifier: https://orcid.org/0000-0002-8989-2396 + - identifier: 0000-0002-8989-2396 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Kirchberger given_name: Christoph + id: 0000-0003-0163-6396 identifiers: - - identifier: https://orcid.org/0000-0003-0163-6396 + - identifier: 0000-0003-0163-6396 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Andreini given_name: Marco + id: 0000-0001-8474-4397 identifiers: - - identifier: https://orcid.org/0000-0001-8474-4397 + - identifier: 0000-0001-8474-4397 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zweizig given_name: John + id: 0000-0002-1521-3397 identifiers: - - identifier: https://orcid.org/0000-0002-1521-3397 + - identifier: 0000-0002-1521-3397 scheme: orcid - affiliations: - name: TU Wien family_name: "Reu\xDF" given_name: Felix + id: 0000-0002-3867-7397 identifiers: - - identifier: https://orcid.org/0000-0002-3867-7397 + - identifier: 0000-0002-3867-7397 scheme: orcid - affiliations: - name: Northwestern University family_name: Shen given_name: Shu-En + id: 0000-0002-7578-5397 identifiers: - - identifier: https://orcid.org/0000-0002-7578-5397 + - identifier: 0000-0002-7578-5397 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kemper given_name: "Bj\xF6rn" + id: 0000-0003-3693-9397 identifiers: - - identifier: https://orcid.org/0000-0003-3693-9397 + - identifier: 0000-0003-3693-9397 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Zuleger given_name: Florian + id: 0000-0003-1468-8398 identifiers: - - identifier: https://orcid.org/0000-0003-1468-8398 + - identifier: 0000-0003-1468-8398 scheme: orcid - affiliations: - name: iMotions A/S - name: Northwestern University family_name: Wilson given_name: Jessica + id: 0000-0003-2966-0398 identifiers: - - identifier: https://orcid.org/0000-0003-2966-0398 + - identifier: 0000-0003-2966-0398 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Hertrich-Jeromin given_name: Udo + id: 0000-0001-6773-0399 identifiers: - - identifier: https://orcid.org/0000-0001-6773-0399 + - identifier: 0000-0001-6773-0399 scheme: orcid - affiliations: - name: Northwestern University Feinberg School of Medicine @@ -18378,163 +20932,186 @@ - name: Oregon National Primate Research Center family_name: Woodruff given_name: Teresa + id: 0000-0002-1197-3399 identifiers: - - identifier: https://orcid.org/0000-0002-1197-3399 + - identifier: 0000-0002-1197-3399 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Begel given_name: Michael + id: 0000-0002-1634-4399 identifiers: - - identifier: https://orcid.org/0000-0002-1634-4399 + - identifier: 0000-0002-1634-4399 scheme: orcid - affiliations: - name: Northwestern University family_name: Hornick given_name: Jessica + id: 0000-0002-2180-5399 identifiers: - - identifier: https://orcid.org/0000-0002-2180-5399 + - identifier: 0000-0002-2180-5399 scheme: orcid - affiliations: - name: University of Illinois at Chicago - name: Northwestern University family_name: Cielo given_name: Karen Lapidos + id: 0000-0002-2211-1399 identifiers: - - identifier: https://orcid.org/0000-0002-2211-1399 + - identifier: 0000-0002-2211-1399 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ismagilov given_name: Rustem + id: 0000-0002-3680-4399 identifiers: - - identifier: https://orcid.org/0000-0002-3680-4399 + - identifier: 0000-0002-3680-4399 scheme: orcid - affiliations: - name: TU Wien family_name: Franceschi given_name: Giada + id: 0000-0003-3525-5399 identifiers: - - identifier: https://orcid.org/0000-0003-3525-5399 + - identifier: 0000-0003-3525-5399 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Ricci given_name: Ruggero + id: 0000-0003-4832-0399 identifiers: - - identifier: https://orcid.org/0000-0003-4832-0399 + - identifier: 0000-0003-4832-0399 scheme: orcid - affiliations: - name: TU Wien family_name: Halwidl given_name: Daniel + id: 0000-0001-5601-539X identifiers: - - identifier: https://orcid.org/0000-0001-5601-539X + - identifier: 0000-0001-5601-539X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Becker given_name: "J\xF6rg" + id: 0000-0001-5690-439X identifiers: - - identifier: https://orcid.org/0000-0001-5690-439X + - identifier: 0000-0001-5690-439X scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: "Seifried-D\xFCbon" given_name: Tanja + id: 0000-0001-5935-539X identifiers: - - identifier: https://orcid.org/0000-0001-5935-539X + - identifier: 0000-0001-5935-539X scheme: orcid - affiliations: - name: TU Wien family_name: Zhang given_name: Yide + id: 0000-0002-2675-739X identifiers: - - identifier: https://orcid.org/0000-0002-2675-739X + - identifier: 0000-0002-2675-739X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Venus given_name: Alexander + id: 0000-0002-4315-139X identifiers: - - identifier: https://orcid.org/0000-0002-4315-139X + - identifier: 0000-0002-4315-139X scheme: orcid - affiliations: - name: CERN family_name: KOUKOVINI PLATIA given_name: EIRINI + id: 0000-0002-8342-839X identifiers: - - identifier: https://orcid.org/0000-0002-8342-839X + - identifier: 0000-0002-8342-839X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ludlam given_name: Renee + id: 0000-0002-8961-939X identifiers: - - identifier: https://orcid.org/0000-0002-8961-939X + - identifier: 0000-0002-8961-939X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Chowdhury given_name: Touhid Ahmed + id: 0000-0002-9425-839X identifiers: - - identifier: https://orcid.org/0000-0002-9425-839X + - identifier: 0000-0002-9425-839X scheme: orcid - affiliations: - name: TU Wien family_name: Li given_name: Xia + id: 0000-0003-2504-239X identifiers: - - identifier: https://orcid.org/0000-0003-2504-239X + - identifier: 0000-0003-2504-239X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Huggins given_name: Benedikt + id: 0000-0001-5092-7400 identifiers: - - identifier: https://orcid.org/0000-0001-5092-7400 + - identifier: 0000-0001-5092-7400 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Coronetti given_name: Andrea + id: 0000-0001-8840-7400 identifiers: - - identifier: https://orcid.org/0000-0001-8840-7400 + - identifier: 0000-0001-8840-7400 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ross given_name: Zachary + id: 0000-0002-6343-8400 identifiers: - - identifier: https://orcid.org/0000-0002-6343-8400 + - identifier: 0000-0002-6343-8400 scheme: orcid - affiliations: - name: CERN family_name: Boukabache given_name: Hamza + id: 0000-0001-6243-8401 identifiers: - - identifier: https://orcid.org/0000-0001-6243-8401 + - identifier: 0000-0001-6243-8401 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Rebhan given_name: Anton + id: 0000-0001-6836-2401 identifiers: - - identifier: https://orcid.org/0000-0001-6836-2401 + - identifier: 0000-0001-6836-2401 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cao given_name: Mengyi + id: 0000-0002-3117-3401 identifiers: - - identifier: https://orcid.org/0000-0002-3117-3401 + - identifier: 0000-0002-3117-3401 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Lezama Valdes given_name: Lilian-Maite + id: 0000-0002-3489-2401 identifiers: - - identifier: https://orcid.org/0000-0002-3489-2401 + - identifier: 0000-0002-3489-2401 scheme: orcid - affiliations: - name: Radboudumc @@ -18542,8 +21119,9 @@ - name: "Centre de Recherches M\xE9dicales de Lambar\xE9n\xE9" family_name: McCall given_name: Matthew + id: 0000-0002-5738-1401 identifiers: - - identifier: https://orcid.org/0000-0002-5738-1401 + - identifier: 0000-0002-5738-1401 scheme: orcid - affiliations: - name: University of Chicago @@ -18551,50 +21129,57 @@ - name: Argonne National Laboratory family_name: Miceli given_name: Antonino + id: 0000-0001-5994-5402 identifiers: - - identifier: https://orcid.org/0000-0001-5994-5402 + - identifier: 0000-0001-5994-5402 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gao given_name: Fan + id: 0000-0001-6832-3402 identifiers: - - identifier: https://orcid.org/0000-0001-6832-3402 + - identifier: 0000-0001-6832-3402 scheme: orcid - affiliations: - name: Northwestern University family_name: Zee given_name: David + id: 0000-0002-0693-2402 identifiers: - - identifier: https://orcid.org/0000-0002-0693-2402 + - identifier: 0000-0002-0693-2402 scheme: orcid - affiliations: - name: Northwestern University family_name: Jain given_name: Ankit + id: 0000-0002-5899-4402 identifiers: - - identifier: https://orcid.org/0000-0002-5899-4402 + - identifier: 0000-0002-5899-4402 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Malesevic given_name: Filip + id: 0000-0003-3463-5402 identifiers: - - identifier: https://orcid.org/0000-0003-3463-5402 + - identifier: 0000-0003-3463-5402 scheme: orcid - affiliations: - name: TU Wien family_name: Asamer given_name: Eva-Maria + id: 0000-0001-5134-9403 identifiers: - - identifier: https://orcid.org/0000-0001-5134-9403 + - identifier: 0000-0001-5134-9403 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Lang given_name: Konrad + id: 0000-0001-6176-6403 identifiers: - - identifier: https://orcid.org/0000-0001-6176-6403 + - identifier: 0000-0001-6176-6403 scheme: orcid - affiliations: - name: TU Wien @@ -18602,43 +21187,49 @@ - name: "Technische Universit\xE4t Wien" family_name: Kohl given_name: Linus + id: 0000-0002-3019-4403 identifiers: - - identifier: https://orcid.org/0000-0002-3019-4403 + - identifier: 0000-0002-3019-4403 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Schlenker given_name: Noah + id: 0000-0002-8581-4403 identifiers: - - identifier: https://orcid.org/0000-0002-8581-4403 + - identifier: 0000-0002-8581-4403 scheme: orcid - affiliations: - name: Northwestern University family_name: Temkin given_name: Lou Ann + id: 0000-0001-9720-1404 identifiers: - - identifier: https://orcid.org/0000-0001-9720-1404 + - identifier: 0000-0001-9720-1404 scheme: orcid - affiliations: - name: TU Wien family_name: Zoratto given_name: Samuele + id: 0000-0002-1491-3404 identifiers: - - identifier: https://orcid.org/0000-0002-1491-3404 + - identifier: 0000-0002-1491-3404 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Thallinger given_name: Gerhard G. + id: 0000-0002-2864-5404 identifiers: - - identifier: https://orcid.org/0000-0002-2864-5404 + - identifier: 0000-0002-2864-5404 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Wolz given_name: Tim + id: 0000-0002-6810-2404 identifiers: - - identifier: https://orcid.org/0000-0002-6810-2404 + - identifier: 0000-0002-6810-2404 scheme: orcid - affiliations: - name: University of Bergen @@ -18646,102 +21237,116 @@ - name: "Technische Universit\xE4t Graz" family_name: Khalil given_name: Mohammad + id: 0000-0002-6860-4404 identifiers: - - identifier: https://orcid.org/0000-0002-6860-4404 + - identifier: 0000-0002-6860-4404 scheme: orcid - affiliations: - name: TU Wien - name: "Universit\xE4t f\xFCr angewandte Kunst Wien" family_name: Lehner given_name: Judith M. + id: 0000-0002-7712-1404 identifiers: - - identifier: https://orcid.org/0000-0002-7712-1404 + - identifier: 0000-0002-7712-1404 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: de Assis Dias given_name: Felipe + id: 0000-0002-8001-3404 identifiers: - - identifier: https://orcid.org/0000-0002-8001-3404 + - identifier: 0000-0002-8001-3404 scheme: orcid - affiliations: - name: TU Wien family_name: Tsigkanos given_name: Christos + id: 0000-0002-9493-3404 identifiers: - - identifier: https://orcid.org/0000-0002-9493-3404 + - identifier: 0000-0002-9493-3404 scheme: orcid - affiliations: - name: Northwestern University family_name: Dragunas given_name: Andrew + id: 0000-0003-1864-0404 identifiers: - - identifier: https://orcid.org/0000-0003-1864-0404 + - identifier: 0000-0003-1864-0404 scheme: orcid - affiliations: - name: CERN family_name: Richter given_name: Sebastian + id: 0000-0003-2149-5404 identifiers: - - identifier: https://orcid.org/0000-0003-2149-5404 + - identifier: 0000-0003-2149-5404 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Qu given_name: Xiaohui + id: 0000-0001-5651-8405 identifiers: - - identifier: https://orcid.org/0000-0001-5651-8405 + - identifier: 0000-0001-5651-8405 scheme: orcid - affiliations: - name: Northwestern University family_name: Fenton given_name: Julie + id: 0000-0002-6485-0405 identifiers: - - identifier: https://orcid.org/0000-0002-6485-0405 + - identifier: 0000-0002-6485-0405 scheme: orcid - affiliations: - name: TU Wien - name: University of Applied Arts Vienna family_name: Lorbek given_name: Maja + id: 0000-0003-3417-7405 identifiers: - - identifier: https://orcid.org/0000-0003-3417-7405 + - identifier: 0000-0003-3417-7405 scheme: orcid - affiliations: - name: University of Fribourg family_name: "K\xDCNZLER" given_name: Daniel + id: 0000-0001-5437-2406 identifiers: - - identifier: https://orcid.org/0000-0001-5437-2406 + - identifier: 0000-0001-5437-2406 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Rehwald given_name: Martin + id: 0000-0001-6200-6406 identifiers: - - identifier: https://orcid.org/0000-0001-6200-6406 + - identifier: 0000-0001-6200-6406 scheme: orcid - affiliations: - name: Northwestern University family_name: Hayakawa given_name: Sayuri + id: 0000-0001-9863-1406 identifiers: - - identifier: https://orcid.org/0000-0001-9863-1406 + - identifier: 0000-0001-9863-1406 scheme: orcid - affiliations: - name: Northwestern University family_name: Larson given_name: Andrew + id: 0000-0002-1223-7406 identifiers: - - identifier: https://orcid.org/0000-0002-1223-7406 + - identifier: 0000-0002-1223-7406 scheme: orcid - affiliations: - name: Delft University of Technology - name: California Institute of Technology family_name: Maresca given_name: David + id: 0000-0002-4921-6406 identifiers: - - identifier: https://orcid.org/0000-0002-4921-6406 + - identifier: 0000-0002-4921-6406 scheme: orcid - affiliations: - name: Old Dominion University @@ -18750,1377 +21355,1570 @@ - name: Brookhaven National Laboratory family_name: Wang given_name: Guimei + id: 0000-0002-6890-0406 identifiers: - - identifier: https://orcid.org/0000-0002-6890-0406 + - identifier: 0000-0002-6890-0406 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Rossi given_name: Carlo + id: 0000-0002-9105-1406 identifiers: - - identifier: https://orcid.org/0000-0002-9105-1406 + - identifier: 0000-0002-9105-1406 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pierce given_name: Niles + id: 0000-0003-2367-4406 identifiers: - - identifier: https://orcid.org/0000-0003-2367-4406 + - identifier: 0000-0003-2367-4406 scheme: orcid - affiliations: - name: TU Wien family_name: Simaan given_name: Marwan + id: 0000-0003-2598-7406 identifiers: - - identifier: https://orcid.org/0000-0003-2598-7406 + - identifier: 0000-0003-2598-7406 scheme: orcid - affiliations: - name: National Institute for Nuclear Physics family_name: TORTORA given_name: LUCA + id: 0000-0003-3053-2406 identifiers: - - identifier: https://orcid.org/0000-0003-3053-2406 + - identifier: 0000-0003-3053-2406 scheme: orcid - affiliations: - name: Temple University - name: Brookhaven National Laboratory family_name: Qiao given_name: Qiao + id: 0000-0002-0229-4407 identifiers: - - identifier: https://orcid.org/0000-0002-0229-4407 + - identifier: 0000-0002-0229-4407 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Skoff given_name: Sarah + id: 0000-0002-2601-8407 identifiers: - - identifier: https://orcid.org/0000-0002-2601-8407 + - identifier: 0000-0002-2601-8407 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Travaglini given_name: Riccardo + id: 0000-0002-5288-1407 identifiers: - - identifier: https://orcid.org/0000-0002-5288-1407 + - identifier: 0000-0002-5288-1407 scheme: orcid - affiliations: - name: Northwestern Memorial HealthCare Corp - name: Northwestern University family_name: Barnard given_name: Cynthia + id: 0000-0002-5522-2407 identifiers: - - identifier: https://orcid.org/0000-0002-5522-2407 + - identifier: 0000-0002-5522-2407 scheme: orcid - affiliations: - name: Northwestern University family_name: Cummings given_name: Mark + id: 0000-0002-6218-2407 identifiers: - - identifier: https://orcid.org/0000-0002-6218-2407 + - identifier: 0000-0002-6218-2407 scheme: orcid - affiliations: - name: University of South Florida - name: Northwestern University family_name: Spanopoulos given_name: Ioannis + id: 0000-0003-0861-1407 identifiers: - - identifier: https://orcid.org/0000-0003-0861-1407 + - identifier: 0000-0003-0861-1407 scheme: orcid - affiliations: - name: TU Wien family_name: Zanetti given_name: Cristian + id: 0000-0001-5019-2408 identifiers: - - identifier: https://orcid.org/0000-0001-5019-2408 + - identifier: 0000-0001-5019-2408 scheme: orcid - affiliations: - name: Northwestern University family_name: Vickman given_name: Oliver + id: 0000-0002-1221-8408 identifiers: - - identifier: https://orcid.org/0000-0002-1221-8408 + - identifier: 0000-0002-1221-8408 scheme: orcid - affiliations: - name: University of Fribourg family_name: Rosset given_name: Matthieu + id: 0000-0002-8215-2408 identifiers: - - identifier: https://orcid.org/0000-0002-8215-2408 + - identifier: 0000-0002-8215-2408 scheme: orcid - affiliations: - name: Northwestern University family_name: Zakhlebin given_name: Igor + id: 0000-0002-9248-1408 identifiers: - - identifier: https://orcid.org/0000-0002-9248-1408 + - identifier: 0000-0002-9248-1408 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Brack given_name: Florian-Emanuel + id: 0000-0002-9859-2408 identifiers: - - identifier: https://orcid.org/0000-0002-9859-2408 + - identifier: 0000-0002-9859-2408 scheme: orcid - affiliations: - name: TU Wien family_name: Amann given_name: Arabel + id: 0000-0002-9901-8408 identifiers: - - identifier: https://orcid.org/0000-0002-9901-8408 + - identifier: 0000-0002-9901-8408 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Bauer given_name: Wolfgang + id: 0000-0003-0908-7408 identifiers: - - identifier: https://orcid.org/0000-0003-0908-7408 + - identifier: 0000-0003-0908-7408 scheme: orcid - affiliations: - name: University of Fribourg family_name: Spierer given_name: Lucas + id: 0000-0003-3558-4408 identifiers: - - identifier: https://orcid.org/0000-0003-3558-4408 + - identifier: 0000-0003-3558-4408 scheme: orcid - affiliations: - name: The University of Adelaide - name: "Technische Universit\xE4t Graz" family_name: Falcaro given_name: Paolo + id: 0000-0001-5935-0409 identifiers: - - identifier: https://orcid.org/0000-0001-5935-0409 + - identifier: 0000-0001-5935-0409 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Xu given_name: Zhangbu + id: 0000-0001-8853-0409 identifiers: - - identifier: https://orcid.org/0000-0001-8853-0409 + - identifier: 0000-0001-8853-0409 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Croese given_name: Jared + id: 0000-0002-0660-4409 identifiers: - - identifier: https://orcid.org/0000-0002-0660-4409 + - identifier: 0000-0002-0660-4409 scheme: orcid - affiliations: - name: CERN family_name: Papastergiou given_name: Konstantinos + id: 0000-0002-2223-3409 identifiers: - - identifier: https://orcid.org/0000-0002-2223-3409 + - identifier: 0000-0002-2223-3409 scheme: orcid - affiliations: - name: Northwestern University family_name: Mohebi Moghadam given_name: Mahyar + id: 0000-0002-3354-9409 identifiers: - - identifier: https://orcid.org/0000-0002-3354-9409 + - identifier: 0000-0002-3354-9409 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Styhler-Aydin given_name: Gudrun + id: 0000-0003-4144-3409 identifiers: - - identifier: https://orcid.org/0000-0003-4144-3409 + - identifier: 0000-0003-4144-3409 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Qian given_name: Lulu + id: 0000-0003-4115-2409 identifiers: - - identifier: https://orcid.org/0000-0003-4115-2409 + - identifier: 0000-0003-4115-2409 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Tao given_name: Yujia + id: 0000-0003-4615-6409 identifiers: - - identifier: https://orcid.org/0000-0003-4615-6409 + - identifier: 0000-0003-4615-6409 scheme: orcid - affiliations: - name: Northwestern University family_name: Jackson given_name: C. Kirabo + id: 0000-0001-5322-740X identifiers: - - identifier: https://orcid.org/0000-0001-5322-740X + - identifier: 0000-0001-5322-740X scheme: orcid - affiliations: - name: TU Wien family_name: Schwenzfeier given_name: Kai + id: 0000-0002-1176-540X identifiers: - - identifier: https://orcid.org/0000-0002-1176-540X + - identifier: 0000-0002-1176-540X scheme: orcid - affiliations: - name: TU Wien family_name: Tauboeck given_name: Shabnam + id: 0000-0002-2535-840X identifiers: - - identifier: https://orcid.org/0000-0002-2535-840X + - identifier: 0000-0002-2535-840X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Amrhein given_name: Henry + id: 0000-0002-4264-140X identifiers: - - identifier: https://orcid.org/0000-0002-4264-140X + - identifier: 0000-0002-4264-140X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kleiner given_name: Karin + id: 0000-0003-0203-440X identifiers: - - identifier: https://orcid.org/0000-0003-0203-440X + - identifier: 0000-0003-0203-440X scheme: orcid - affiliations: - name: TU Wien family_name: Zhou given_name: Weifeng + id: 0000-0003-1593-540X identifiers: - - identifier: https://orcid.org/0000-0003-1593-540X + - identifier: 0000-0003-1593-540X scheme: orcid - affiliations: - name: University of Fribourg family_name: "Chenevi\xE8re" given_name: Xavier + id: 0000-0003-4755-840X identifiers: - - identifier: https://orcid.org/0000-0003-4755-840X + - identifier: 0000-0003-4755-840X scheme: orcid - affiliations: - name: CERN family_name: Vandelli given_name: Wainer + id: 0000-0001-6581-9410 identifiers: - - identifier: https://orcid.org/0000-0001-6581-9410 + - identifier: 0000-0001-6581-9410 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Binnewies given_name: Carmen + id: 0000-0001-7687-6410 identifiers: - - identifier: https://orcid.org/0000-0001-7687-6410 + - identifier: 0000-0001-7687-6410 scheme: orcid - affiliations: - name: Northwestern University family_name: Scherr given_name: Courtney + id: 0000-0001-9362-5410 identifiers: - - identifier: https://orcid.org/0000-0001-9362-5410 + - identifier: 0000-0001-9362-5410 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Rabasco given_name: Asier + id: 0000-0002-1508-9410 identifiers: - - identifier: https://orcid.org/0000-0002-1508-9410 + - identifier: 0000-0002-1508-9410 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Dabrowski given_name: Mietek + id: 0000-0002-2770-9410 identifiers: - - identifier: https://orcid.org/0000-0002-2770-9410 + - identifier: 0000-0002-2770-9410 scheme: orcid - affiliations: - name: TU Wien family_name: Pop given_name: Diana V. + id: 0000-0002-8316-1410 identifiers: - - identifier: https://orcid.org/0000-0002-8316-1410 + - identifier: 0000-0002-8316-1410 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Scovel given_name: Clint + id: 0000-0001-7757-3411 identifiers: - - identifier: https://orcid.org/0000-0001-7757-3411 + - identifier: 0000-0001-7757-3411 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Konrad given_name: Uwe + id: 0000-0001-8167-9411 identifiers: - - identifier: https://orcid.org/0000-0001-8167-9411 + - identifier: 0000-0001-8167-9411 scheme: orcid - affiliations: - name: Northwestern University family_name: Yadamsuren given_name: Borchuluun + id: 0000-0001-8420-4411 identifiers: - - identifier: https://orcid.org/0000-0001-8420-4411 + - identifier: 0000-0001-8420-4411 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Dongping + id: 0000-0001-9825-1411 identifiers: - - identifier: https://orcid.org/0000-0001-9825-1411 + - identifier: 0000-0001-9825-1411 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lai given_name: Jeffrey + id: 0000-0003-2863-4411 identifiers: - - identifier: https://orcid.org/0000-0003-2863-4411 + - identifier: 0000-0003-2863-4411 scheme: orcid - affiliations: - name: TU Wien family_name: Maschauer given_name: Daniel + id: 0000-0003-4076-4411 identifiers: - - identifier: https://orcid.org/0000-0003-4076-4411 + - identifier: 0000-0003-4076-4411 scheme: orcid - affiliations: - name: Northwestern University family_name: Youn given_name: Hyejin + id: 0000-0002-6190-4412 identifiers: - - identifier: https://orcid.org/0000-0002-6190-4412 + - identifier: 0000-0002-6190-4412 scheme: orcid - affiliations: - name: TU Wien family_name: Weiss given_name: Astrid + id: 0000-0001-7803-9413 identifiers: - - identifier: https://orcid.org/0000-0001-7803-9413 + - identifier: 0000-0001-7803-9413 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Fujita given_name: Kazuhiro + id: 0000-0001-8274-0413 identifiers: - - identifier: https://orcid.org/0000-0001-8274-0413 + - identifier: 0000-0001-8274-0413 scheme: orcid - affiliations: - name: Northwestern University family_name: MEHEDI given_name: MD SHAFAAT AL + id: 0000-0002-1242-8413 identifiers: - - identifier: https://orcid.org/0000-0002-1242-8413 + - identifier: 0000-0002-1242-8413 scheme: orcid - affiliations: - name: TU Wien family_name: Wallinger given_name: Markus + id: 0000-0002-2191-4413 identifiers: - - identifier: https://orcid.org/0000-0002-2191-4413 + - identifier: 0000-0002-2191-4413 scheme: orcid - affiliations: - name: Northwestern University family_name: Carroll given_name: Peter + id: 0000-0002-5991-2413 identifiers: - - identifier: https://orcid.org/0000-0002-5991-2413 + - identifier: 0000-0002-5991-2413 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Galante given_name: Bruno + id: 0000-0002-6718-9413 identifiers: - - identifier: https://orcid.org/0000-0002-6718-9413 + - identifier: 0000-0002-6718-9413 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yang given_name: Jiani + id: 0000-0003-0037-2413 identifiers: - - identifier: https://orcid.org/0000-0003-0037-2413 + - identifier: 0000-0003-0037-2413 scheme: orcid - affiliations: - name: TU Wien family_name: Kirnbauer given_name: Alexander + id: 0000-0001-9751-6414 identifiers: - - identifier: https://orcid.org/0000-0001-9751-6414 + - identifier: 0000-0001-9751-6414 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Das given_name: Anuvab + id: 0000-0002-9344-4414 identifiers: - - identifier: https://orcid.org/0000-0002-9344-4414 + - identifier: 0000-0002-9344-4414 scheme: orcid - affiliations: - name: CERN family_name: "Riihim\xE4ki" given_name: Ari + id: 0000-0002-9784-0414 identifiers: - - identifier: https://orcid.org/0000-0002-9784-0414 + - identifier: 0000-0002-9784-0414 scheme: orcid - affiliations: - name: CERN family_name: Hristov given_name: Peter + id: 0000-0003-1477-8414 identifiers: - - identifier: https://orcid.org/0000-0003-1477-8414 + - identifier: 0000-0003-1477-8414 scheme: orcid - affiliations: - name: Observatories of the Carnegie Institution of Washington - name: California Institute of Technology family_name: Necib given_name: Lina + id: 0000-0003-2806-1414 identifiers: - - identifier: https://orcid.org/0000-0003-2806-1414 + - identifier: 0000-0003-2806-1414 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Zhu + id: 0000-0001-5889-5415 identifiers: - - identifier: https://orcid.org/0000-0001-5889-5415 + - identifier: 0000-0001-5889-5415 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kreiner given_name: Christian + id: 0000-0001-8354-8415 identifiers: - - identifier: https://orcid.org/0000-0001-8354-8415 + - identifier: 0000-0001-8354-8415 scheme: orcid - affiliations: - name: "Eberhard Karls Universit\xE4t T\xFCbingen" - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Fuhr given_name: Kristina + id: 0000-0002-0451-3415 identifiers: - - identifier: https://orcid.org/0000-0002-0451-3415 + - identifier: 0000-0002-0451-3415 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Chass\xE9" given_name: Walter + id: 0000-0002-6079-3415 identifiers: - - identifier: https://orcid.org/0000-0002-6079-3415 + - identifier: 0000-0002-6079-3415 scheme: orcid - affiliations: - name: Northwestern University family_name: Bursztyn given_name: Victor + id: 0000-0002-6187-6415 identifiers: - - identifier: https://orcid.org/0000-0002-6187-6415 + - identifier: 0000-0002-6187-6415 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ray given_name: Melissa C. + id: 0000-0002-9664-9415 identifiers: - - identifier: https://orcid.org/0000-0002-9664-9415 + - identifier: 0000-0002-9664-9415 scheme: orcid - affiliations: - name: Northwestern University - name: LanzaTech family_name: "K\xF6pke" given_name: Michael + id: 0000-0003-0642-1415 identifiers: - - identifier: https://orcid.org/0000-0003-0642-1415 + - identifier: 0000-0003-0642-1415 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Helou given_name: George + id: 0000-0003-3367-3415 identifiers: - - identifier: https://orcid.org/0000-0003-3367-3415 + - identifier: 0000-0003-3367-3415 scheme: orcid - affiliations: - name: University of Fribourg family_name: Mandal given_name: Indradip + id: 0000-0003-4552-7415 identifiers: - - identifier: https://orcid.org/0000-0003-4552-7415 + - identifier: 0000-0003-4552-7415 scheme: orcid - affiliations: - name: Paul Scherrer Institut - name: CERN family_name: Sprung given_name: Peter + id: 0000-0003-4862-1415 identifiers: - - identifier: https://orcid.org/0000-0003-4862-1415 + - identifier: 0000-0003-4862-1415 scheme: orcid - affiliations: - name: TU Wien - name: Austrian Research Institute for Artificial Intelligence family_name: Dobrosovestnova given_name: Anna + id: 0000-0001-6863-2416 identifiers: - - identifier: https://orcid.org/0000-0001-6863-2416 + - identifier: 0000-0001-6863-2416 scheme: orcid - affiliations: - name: CERN family_name: Rattinger given_name: Andre + id: 0000-0002-0459-2416 identifiers: - - identifier: https://orcid.org/0000-0002-0459-2416 + - identifier: 0000-0002-0459-2416 scheme: orcid - affiliations: - name: Northwestern University family_name: Rubanovich given_name: Caryn + id: 0000-0002-0975-6416 identifiers: - - identifier: https://orcid.org/0000-0002-0975-6416 + - identifier: 0000-0002-0975-6416 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: BAUDIN given_name: Lucie + id: 0000-0002-1847-6416 identifiers: - - identifier: https://orcid.org/0000-0002-1847-6416 + - identifier: 0000-0002-1847-6416 scheme: orcid - affiliations: - name: Northwestern University family_name: Hurtado Jr given_name: Manuel + id: 0000-0002-7843-6416 identifiers: - - identifier: https://orcid.org/0000-0002-7843-6416 + - identifier: 0000-0002-7843-6416 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Garcia Rey given_name: Natalia + id: 0000-0002-9175-3416 identifiers: - - identifier: https://orcid.org/0000-0002-9175-3416 + - identifier: 0000-0002-9175-3416 scheme: orcid - affiliations: - name: Northwestern University family_name: Henry given_name: Anne-Isabelle + id: 0000-0003-1900-7416 identifiers: - - identifier: https://orcid.org/0000-0003-1900-7416 + - identifier: 0000-0003-1900-7416 scheme: orcid - affiliations: - name: University of Fribourg family_name: Lalanne given_name: Denis + id: 0000-0001-7834-0417 identifiers: - - identifier: https://orcid.org/0000-0001-7834-0417 + - identifier: 0000-0001-7834-0417 scheme: orcid - affiliations: - name: CERN family_name: Gessinger given_name: Paul + id: 0000-0002-3056-7417 identifiers: - - identifier: https://orcid.org/0000-0002-3056-7417 + - identifier: 0000-0002-3056-7417 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Fritz given_name: Fritz + id: 0000-0002-3275-7417 identifiers: - - identifier: https://orcid.org/0000-0002-3275-7417 + - identifier: 0000-0002-3275-7417 scheme: orcid - affiliations: - name: University of Bamberg family_name: Sheridan given_name: Nicole + id: 0000-0003-1894-8417 identifiers: - - identifier: https://orcid.org/0000-0003-1894-8417 + - identifier: 0000-0003-1894-8417 scheme: orcid - affiliations: - name: Cornell University - name: California Institute of Technology family_name: MacMartin given_name: Douglas + id: 0000-0003-1987-9417 identifiers: - - identifier: https://orcid.org/0000-0003-1987-9417 + - identifier: 0000-0003-1987-9417 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: LeBlanc given_name: Matt + id: 0000-0001-5977-6418 identifiers: - - identifier: https://orcid.org/0000-0001-5977-6418 + - identifier: 0000-0001-5977-6418 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Anderlini given_name: Lucio + id: 0000-0001-6808-2418 identifiers: - - identifier: https://orcid.org/0000-0001-6808-2418 + - identifier: 0000-0001-6808-2418 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology (TUWien) family_name: Sabou given_name: Marta + id: 0000-0001-9301-8418 identifiers: - - identifier: https://orcid.org/0000-0001-9301-8418 + - identifier: 0000-0001-9301-8418 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Tamuz given_name: Omer + id: 0000-0002-0111-0418 identifiers: - - identifier: https://orcid.org/0000-0002-0111-0418 + - identifier: 0000-0002-0111-0418 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lan given_name: Tian + id: 0000-0002-0339-4418 identifiers: - - identifier: https://orcid.org/0000-0002-0339-4418 + - identifier: 0000-0002-0339-4418 scheme: orcid - affiliations: - name: Northwestern University family_name: Ingram given_name: Brannon + id: 0000-0002-3646-0418 identifiers: - - identifier: https://orcid.org/0000-0002-3646-0418 + - identifier: 0000-0002-3646-0418 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Raatz given_name: Simone + id: 0000-0002-3704-1418 identifiers: - - identifier: https://orcid.org/0000-0002-3704-1418 + - identifier: 0000-0002-3704-1418 scheme: orcid - affiliations: - name: University of Bamberg family_name: Libel given_name: Tamir + id: 0000-0002-5141-7418 identifiers: - - identifier: https://orcid.org/0000-0002-5141-7418 + - identifier: 0000-0002-5141-7418 scheme: orcid - affiliations: - name: Northwestern University family_name: Sheridan given_name: Thomas + id: 0000-0002-6247-4418 identifiers: - - identifier: https://orcid.org/0000-0002-6247-4418 + - identifier: 0000-0002-6247-4418 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Garcia Mancheno given_name: Prof. Dr. Olga + id: 0000-0002-7578-5418 identifiers: - - identifier: https://orcid.org/0000-0002-7578-5418 + - identifier: 0000-0002-7578-5418 scheme: orcid - affiliations: - name: Northwestern University family_name: Gaillard given_name: "Jean-Fran\xE7ois" + id: 0000-0002-8276-6418 identifiers: - - identifier: https://orcid.org/0000-0002-8276-6418 + - identifier: 0000-0002-8276-6418 scheme: orcid - affiliations: - name: CERN family_name: Costa given_name: "\xC2ngelo" + id: 0000-0002-9318-2418 identifiers: - - identifier: https://orcid.org/0000-0002-9318-2418 + - identifier: 0000-0002-9318-2418 scheme: orcid - affiliations: - name: Northwestern University family_name: Chai given_name: Siyuan + id: 0000-0003-4879-6418 identifiers: - - identifier: https://orcid.org/0000-0003-4879-6418 + - identifier: 0000-0003-4879-6418 scheme: orcid - affiliations: - name: Northwestern University family_name: Kay given_name: Matthew + id: 0000-0001-9446-0419 identifiers: - - identifier: https://orcid.org/0000-0001-9446-0419 + - identifier: 0000-0001-9446-0419 scheme: orcid - affiliations: - name: Northwestern University family_name: Asgari given_name: Meisam + id: 0000-0002-2558-9419 identifiers: - - identifier: https://orcid.org/0000-0002-2558-9419 + - identifier: 0000-0002-2558-9419 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hornung given_name: Hans + id: 0000-0002-4903-8419 identifiers: - - identifier: https://orcid.org/0000-0002-4903-8419 + - identifier: 0000-0002-4903-8419 scheme: orcid - affiliations: - name: Northwestern University family_name: You given_name: Xinyuan + id: 0000-0002-9178-9419 identifiers: - - identifier: https://orcid.org/0000-0002-9178-9419 + - identifier: 0000-0002-9178-9419 scheme: orcid - affiliations: - name: CERN family_name: Fiorendi given_name: Sara + id: 0000-0003-3273-9419 identifiers: - - identifier: https://orcid.org/0000-0003-3273-9419 + - identifier: 0000-0003-3273-9419 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Knoll given_name: Christian + id: 0000-0003-3920-1419 identifiers: - - identifier: https://orcid.org/0000-0003-3920-1419 + - identifier: 0000-0003-3920-1419 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: "Katholische Stiftungsfachhochschule M\xFCnchen" family_name: Dyma given_name: Oliver + id: 0000-0003-4329-4419 identifiers: - - identifier: https://orcid.org/0000-0003-4329-4419 + - identifier: 0000-0003-4329-4419 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Contreras Sep\xFAlveda" given_name: Esteban + id: 0000-0002-0934-741X identifiers: - - identifier: https://orcid.org/0000-0002-0934-741X + - identifier: 0000-0002-0934-741X scheme: orcid - affiliations: - name: TU Wien - name: University of Turku family_name: "G\xF6tzinger" given_name: Maximilian + id: 0000-0002-1112-141X identifiers: - - identifier: https://orcid.org/0000-0002-1112-141X + - identifier: 0000-0002-1112-141X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Brizioli given_name: Francesco + id: 0000-0002-2047-441X identifiers: - - identifier: https://orcid.org/0000-0002-2047-441X + - identifier: 0000-0002-2047-441X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Mousavi given_name: Seyed Mostafa + id: 0000-0002-2622-741X identifiers: - - identifier: https://orcid.org/0000-0002-2622-741X + - identifier: 0000-0002-2622-741X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Dziubinska-Kuhn given_name: Katarzyna Maria + id: 0000-0002-4526-841X identifiers: - - identifier: https://orcid.org/0000-0002-4526-841X + - identifier: 0000-0002-4526-841X scheme: orcid - affiliations: - name: CERN family_name: Vieira de Castro Ferreira da Silva given_name: Pedro Manuel + id: 0000-0002-5725-041X identifiers: - - identifier: https://orcid.org/0000-0002-5725-041X + - identifier: 0000-0002-5725-041X scheme: orcid - affiliations: - name: TU Wien family_name: saghafi given_name: saiedeh + id: 0000-0002-7598-541X identifiers: - - identifier: https://orcid.org/0000-0002-7598-541X + - identifier: 0000-0002-7598-541X scheme: orcid - affiliations: - name: TU Wien family_name: Limbacher given_name: Benedikt + id: 0000-0003-0885-541X identifiers: - - identifier: https://orcid.org/0000-0003-0885-541X + - identifier: 0000-0003-0885-541X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Giannuzzi given_name: Floriana + id: 0000-0001-7482-7420 identifiers: - - identifier: https://orcid.org/0000-0001-7482-7420 + - identifier: 0000-0001-7482-7420 scheme: orcid - affiliations: - name: Australian National University - name: California Institute of Technology family_name: Muir given_name: Jack + id: 0000-0003-2617-3420 identifiers: - - identifier: https://orcid.org/0000-0003-2617-3420 + - identifier: 0000-0003-2617-3420 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kolesnikov given_name: Aleksei + id: 0000-0001-7673-8421 identifiers: - - identifier: https://orcid.org/0000-0001-7673-8421 + - identifier: 0000-0001-7673-8421 scheme: orcid - affiliations: - name: Northwestern University family_name: Reber given_name: Paul + id: 0000-0002-0000-5421 identifiers: - - identifier: https://orcid.org/0000-0002-0000-5421 + - identifier: 0000-0002-0000-5421 scheme: orcid - affiliations: - name: Northwestern University family_name: Wartella given_name: Ellen + id: 0000-0001-6687-5422 identifiers: - - identifier: https://orcid.org/0000-0001-6687-5422 + - identifier: 0000-0001-6687-5422 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Humphries given_name: Oliver + id: 0000-0001-6748-0422 identifiers: - - identifier: https://orcid.org/0000-0001-6748-0422 + - identifier: 0000-0001-6748-0422 scheme: orcid - affiliations: - name: CERN family_name: De Maria given_name: Riccardo + id: 0000-0001-7929-7422 identifiers: - - identifier: https://orcid.org/0000-0001-7929-7422 + - identifier: 0000-0001-7929-7422 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Yubo + id: 0000-0001-8840-9422 identifiers: - - identifier: https://orcid.org/0000-0001-8840-9422 + - identifier: 0000-0001-8840-9422 scheme: orcid - affiliations: - name: California Institute of Technology - name: University of Cologne family_name: Psaroudaki given_name: Christina + id: 0000-0002-7073-6422 identifiers: - - identifier: https://orcid.org/0000-0002-7073-6422 + - identifier: 0000-0002-7073-6422 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Jing + id: 0000-0003-0639-9422 identifiers: - - identifier: https://orcid.org/0000-0003-0639-9422 + - identifier: 0000-0003-0639-9422 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Valgushev given_name: Semeon + id: 0000-0002-4306-1423 identifiers: - - identifier: https://orcid.org/0000-0002-4306-1423 + - identifier: 0000-0002-4306-1423 scheme: orcid - affiliations: - name: TU Wien family_name: Schroeder given_name: Fabian + id: 0000-0002-4451-5423 identifiers: - - identifier: https://orcid.org/0000-0002-4451-5423 + - identifier: 0000-0002-4451-5423 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Hofstadler given_name: Christian + id: 0000-0002-5644-4423 identifiers: - - identifier: https://orcid.org/0000-0002-5644-4423 + - identifier: 0000-0002-5644-4423 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hempel given_name: Georg + id: 0000-0002-5790-6423 identifiers: - - identifier: https://orcid.org/0000-0002-5790-6423 + - identifier: 0000-0002-5790-6423 scheme: orcid - affiliations: - name: California Institute of Technology - name: Southern University System family_name: Parker given_name: William + id: 0000-0002-7711-4423 identifiers: - - identifier: https://orcid.org/0000-0002-7711-4423 + - identifier: 0000-0002-7711-4423 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Henriques given_name: Andre + id: 0000-0003-1521-3423 identifiers: - - identifier: https://orcid.org/0000-0003-1521-3423 + - identifier: 0000-0003-1521-3423 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Vogelmann given_name: Andrew + id: 0000-0003-1918-5423 identifiers: - - identifier: https://orcid.org/0000-0003-1918-5423 + - identifier: 0000-0003-1918-5423 scheme: orcid - affiliations: - name: Northwestern University family_name: Weisleder given_name: Adriana + id: 0000-0001-6094-8424 identifiers: - - identifier: https://orcid.org/0000-0001-6094-8424 + - identifier: 0000-0001-6094-8424 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Scarpelli given_name: Andrea + id: 0000-0002-0528-8424 identifiers: - - identifier: https://orcid.org/0000-0002-0528-8424 + - identifier: 0000-0002-0528-8424 scheme: orcid - affiliations: - name: CERN family_name: Charifoulline given_name: Zinour + id: 0000-0002-7056-5424 identifiers: - - identifier: https://orcid.org/0000-0002-7056-5424 + - identifier: 0000-0002-7056-5424 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Teplitz given_name: Harry + id: 0000-0002-7064-5424 identifiers: - - identifier: https://orcid.org/0000-0002-7064-5424 + - identifier: 0000-0002-7064-5424 scheme: orcid - affiliations: - name: Northwestern University family_name: Dimitrova given_name: Valentina + id: 0000-0002-7758-0424 identifiers: - - identifier: https://orcid.org/0000-0002-7758-0424 + - identifier: 0000-0002-7758-0424 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Forneris given_name: Jacopo + id: 0000-0003-2583-7424 identifiers: - - identifier: https://orcid.org/0000-0003-2583-7424 + - identifier: 0000-0003-2583-7424 scheme: orcid - affiliations: - name: CERN - name: "Goethe-Universit\xE4t Frankfurt am Main" family_name: Bernstein given_name: Fabian + id: 0000-0003-3356-2424 identifiers: - - identifier: https://orcid.org/0000-0003-3356-2424 + - identifier: 0000-0003-3356-2424 scheme: orcid - affiliations: - name: Northwestern University family_name: Dwivedi given_name: Vidushi + id: 0000-0001-6189-9425 identifiers: - - identifier: https://orcid.org/0000-0001-6189-9425 + - identifier: 0000-0001-6189-9425 scheme: orcid - affiliations: - name: Karl Landsteiner University of Health Sciences - name: "Technische Universit\xE4t Wien" family_name: Farnleitner given_name: Andreas + id: 0000-0002-0542-5425 identifiers: - - identifier: https://orcid.org/0000-0002-0542-5425 + - identifier: 0000-0002-0542-5425 scheme: orcid - affiliations: - name: Northwestern University - name: Virginia Tech family_name: Tabrizi given_name: Zahra + id: 0000-0002-0592-7425 identifiers: - - identifier: https://orcid.org/0000-0002-0592-7425 + - identifier: 0000-0002-0592-7425 scheme: orcid - affiliations: - name: Northwestern University family_name: Shehzad given_name: Muhammad Arslan + id: 0000-0002-9322-6425 identifiers: - - identifier: https://orcid.org/0000-0002-9322-6425 + - identifier: 0000-0002-9322-6425 scheme: orcid - affiliations: - name: Northwestern University family_name: Huggins given_name: Catie + id: 0000-0003-4918-9425 identifiers: - - identifier: https://orcid.org/0000-0003-4918-9425 + - identifier: 0000-0003-4918-9425 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Stergiou given_name: Yorgos + id: 0000-0002-1729-4426 identifiers: - - identifier: https://orcid.org/0000-0002-1729-4426 + - identifier: 0000-0002-1729-4426 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Taher given_name: Leila + id: 0000-0002-2013-5426 identifiers: - - identifier: https://orcid.org/0000-0002-2013-5426 + - identifier: 0000-0002-2013-5426 scheme: orcid - affiliations: - name: Northwestern University family_name: Chalmers given_name: Matthew + id: 0000-0002-7553-1426 identifiers: - - identifier: https://orcid.org/0000-0002-7553-1426 + - identifier: 0000-0002-7553-1426 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Cai given_name: Yong + id: 0000-0002-9957-6426 identifiers: - - identifier: https://orcid.org/0000-0002-9957-6426 + - identifier: 0000-0002-9957-6426 scheme: orcid - affiliations: - name: TU Wien family_name: "Schl\xF6gl" given_name: Thomas + id: 0000-0003-0037-0426 identifiers: - - identifier: https://orcid.org/0000-0003-0037-0426 + - identifier: 0000-0003-0037-0426 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lecrivain given_name: Gregory + id: 0000-0003-0540-3426 identifiers: - - identifier: https://orcid.org/0000-0003-0540-3426 + - identifier: 0000-0003-0540-3426 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Buck given_name: Isabella + id: 0000-0003-4222-0426 identifiers: - - identifier: https://orcid.org/0000-0003-4222-0426 + - identifier: 0000-0003-4222-0426 scheme: orcid - affiliations: - name: TU Wien family_name: Mirwald given_name: Johannes + id: 0000-0001-5025-7427 identifiers: - - identifier: https://orcid.org/0000-0001-5025-7427 + - identifier: 0000-0001-5025-7427 scheme: orcid - affiliations: - name: TU Wien family_name: "Hasenh\xFCndl" given_name: Martin + id: 0000-0001-8971-7427 identifiers: - - identifier: https://orcid.org/0000-0001-8971-7427 + - identifier: 0000-0001-8971-7427 scheme: orcid - affiliations: - name: Northwestern University family_name: Yang given_name: Feipeng + id: 0000-0002-2088-4427 identifiers: - - identifier: https://orcid.org/0000-0002-2088-4427 + - identifier: 0000-0002-2088-4427 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Merbouche given_name: Hugo + id: 0000-0002-2531-9427 identifiers: - - identifier: https://orcid.org/0000-0002-2531-9427 + - identifier: 0000-0002-2531-9427 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Landl given_name: Lukas + id: 0000-0002-9394-4427 identifiers: - - identifier: https://orcid.org/0000-0002-9394-4427 + - identifier: 0000-0002-9394-4427 scheme: orcid - affiliations: - name: Northwestern University family_name: Perreault given_name: Eric + id: 0000-0002-9860-6427 identifiers: - - identifier: https://orcid.org/0000-0002-9860-6427 + - identifier: 0000-0002-9860-6427 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Souvignier given_name: Elmar + id: 0000-0001-7962-7428 identifiers: - - identifier: https://orcid.org/0000-0001-7962-7428 + - identifier: 0000-0001-7962-7428 scheme: orcid - affiliations: - name: Northwestern University - name: Shanghai Institute of Applied Physics family_name: CHE given_name: XINBING + id: 0000-0002-3895-7428 identifiers: - - identifier: https://orcid.org/0000-0002-3895-7428 + - identifier: 0000-0002-3895-7428 scheme: orcid - affiliations: - name: CERN family_name: Martins Araujo given_name: Douglas + id: 0000-0002-5314-5428 identifiers: - - identifier: https://orcid.org/0000-0002-5314-5428 + - identifier: 0000-0002-5314-5428 scheme: orcid - affiliations: - name: European Synchrotron Radiation Facility - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Scheinost given_name: Andreas + id: 0000-0002-6608-5428 identifiers: - - identifier: https://orcid.org/0000-0002-6608-5428 + - identifier: 0000-0002-6608-5428 scheme: orcid - affiliations: - name: California Institute of Technology family_name: de Kleer given_name: Katherine + id: 0000-0002-9068-3428 identifiers: - - identifier: https://orcid.org/0000-0002-9068-3428 + - identifier: 0000-0002-9068-3428 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Juckeland given_name: Guido + id: 0000-0002-9935-4428 identifiers: - - identifier: https://orcid.org/0000-0002-9935-4428 + - identifier: 0000-0002-9935-4428 scheme: orcid - affiliations: - name: Northwestern University family_name: Phillips given_name: Susan + id: 0000-0001-9978-7429 identifiers: - - identifier: https://orcid.org/0000-0001-9978-7429 + - identifier: 0000-0001-9978-7429 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yue given_name: Meng + id: 0000-0002-0743-3429 identifiers: - - identifier: https://orcid.org/0000-0002-0743-3429 + - identifier: 0000-0002-0743-3429 scheme: orcid - affiliations: - name: TU Wien family_name: Grothe given_name: Hinrich + id: 0000-0002-2715-1429 identifiers: - - identifier: https://orcid.org/0000-0002-2715-1429 + - identifier: 0000-0002-2715-1429 scheme: orcid - affiliations: - name: Northwestern University family_name: Nguyen given_name: Duc + id: 0000-0002-6591-6429 identifiers: - - identifier: https://orcid.org/0000-0002-6591-6429 + - identifier: 0000-0002-6591-6429 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Wei given_name: Sean + id: 0000-0003-3783-6429 identifiers: - - identifier: https://orcid.org/0000-0003-3783-6429 + - identifier: 0000-0003-3783-6429 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Enss given_name: Carmen Maria + id: 0000-0001-7225-442X identifiers: - - identifier: https://orcid.org/0000-0001-7225-442X + - identifier: 0000-0001-7225-442X scheme: orcid - affiliations: - name: "Erich K\xE4stner-Schule" - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Brauckmann given_name: Sarah + id: 0000-0002-0284-742X identifiers: - - identifier: https://orcid.org/0000-0002-0284-742X + - identifier: 0000-0002-0284-742X scheme: orcid - affiliations: - name: University of Fribourg family_name: Celio given_name: Marco + id: 0000-0002-3623-842X identifiers: - - identifier: https://orcid.org/0000-0002-3623-842X + - identifier: 0000-0002-3623-842X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kitaev given_name: Alexei + id: 0000-0002-5777-642X identifiers: - - identifier: https://orcid.org/0000-0002-5777-642X + - identifier: 0000-0002-5777-642X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: McComiskey given_name: Allison + id: 0000-0002-6125-742X identifiers: - - identifier: https://orcid.org/0000-0002-6125-742X + - identifier: 0000-0002-6125-742X scheme: orcid - affiliations: - name: Northwestern University family_name: Cao given_name: Jan + id: 0000-0003-0790-542X identifiers: - - identifier: https://orcid.org/0000-0003-0790-542X + - identifier: 0000-0003-0790-542X scheme: orcid - affiliations: - name: CERN family_name: POIROT given_name: Johann + id: 0000-0003-2033-342X identifiers: - - identifier: https://orcid.org/0000-0003-2033-342X + - identifier: 0000-0003-2033-342X scheme: orcid - affiliations: - name: TU Wien family_name: Roy given_name: Sanjukta + id: 0000-0003-3633-542X identifiers: - - identifier: https://orcid.org/0000-0003-3633-542X + - identifier: 0000-0003-3633-542X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Feng given_name: Michelle + id: 0000-0001-5048-6430 identifiers: - - identifier: https://orcid.org/0000-0001-5048-6430 + - identifier: 0000-0001-5048-6430 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Rogers given_name: Alistair + id: 0000-0001-9262-7430 identifiers: - - identifier: https://orcid.org/0000-0001-9262-7430 + - identifier: 0000-0001-9262-7430 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kalb given_name: Paul + id: 0000-0002-0093-0430 identifiers: - - identifier: https://orcid.org/0000-0002-0093-0430 + - identifier: 0000-0002-0093-0430 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Walter given_name: Daniel + id: 0000-0002-1203-4430 identifiers: - - identifier: https://orcid.org/0000-0002-1203-4430 + - identifier: 0000-0002-1203-4430 scheme: orcid - affiliations: - name: Stony Brook University - name: Brookhaven National Laboratory family_name: Eisaman given_name: Matthew + id: 0000-0002-3814-6430 identifiers: - - identifier: https://orcid.org/0000-0002-3814-6430 + - identifier: 0000-0002-3814-6430 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Th\xFCrigen" given_name: Johannes + id: 0000-0002-6262-1430 identifiers: - - identifier: https://orcid.org/0000-0002-6262-1430 + - identifier: 0000-0002-6262-1430 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Vallazza given_name: Erik Silvio + id: 0000-0002-7465-7430 identifiers: - - identifier: https://orcid.org/0000-0002-7465-7430 + - identifier: 0000-0002-7465-7430 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schindler given_name: Felix + id: 0000-0003-2123-0430 identifiers: - - identifier: https://orcid.org/0000-0003-2123-0430 + - identifier: 0000-0003-2123-0430 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schindler given_name: Sebastian + id: 0000-0002-7054-5431 identifiers: - - identifier: https://orcid.org/0000-0002-7054-5431 + - identifier: 0000-0002-7054-5431 scheme: orcid - affiliations: - name: University of Bamberg family_name: Hock given_name: Michael + id: 0000-0003-1038-3431 identifiers: - - identifier: https://orcid.org/0000-0003-1038-3431 + - identifier: 0000-0003-1038-3431 scheme: orcid - affiliations: - name: CERN family_name: Farthouat given_name: Philippe + id: 0000-0002-4779-5432 identifiers: - - identifier: https://orcid.org/0000-0002-4779-5432 + - identifier: 0000-0002-4779-5432 scheme: orcid - affiliations: - name: Northwestern University family_name: Shevtsov given_name: Oleksii + id: 0000-0002-6555-5432 identifiers: - - identifier: https://orcid.org/0000-0002-6555-5432 + - identifier: 0000-0002-6555-5432 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Perner given_name: Verena + id: 0000-0003-2013-9432 identifiers: - - identifier: https://orcid.org/0000-0003-2013-9432 + - identifier: 0000-0003-2013-9432 scheme: orcid - affiliations: - name: Northwestern University family_name: Bicknell given_name: Klinton + id: 0000-0003-3404-7432 identifiers: - - identifier: https://orcid.org/0000-0003-3404-7432 + - identifier: 0000-0003-3404-7432 scheme: orcid - affiliations: - name: Northwestern University family_name: von Brighoff given_name: Daniel + id: 0000-0002-3759-0433 identifiers: - - identifier: https://orcid.org/0000-0002-3759-0433 + - identifier: 0000-0002-3759-0433 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bresciani given_name: Jean-Pierre + id: 0000-0002-7242-5433 identifiers: - - identifier: https://orcid.org/0000-0002-7242-5433 + - identifier: 0000-0002-7242-5433 scheme: orcid - affiliations: - name: Northwestern University family_name: Marian given_name: Viorica + id: 0000-0002-8335-1433 identifiers: - - identifier: https://orcid.org/0000-0002-8335-1433 + - identifier: 0000-0002-8335-1433 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Fordham University family_name: Harris given_name: Chaudhary + id: 0000-0003-4450-5433 identifiers: - - identifier: https://orcid.org/0000-0003-4450-5433 + - identifier: 0000-0003-4450-5433 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Khan given_name: Muhammad Bilal + id: 0000-0003-4627-9433 identifiers: - - identifier: https://orcid.org/0000-0003-4627-9433 + - identifier: 0000-0003-4627-9433 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "W\xFCrschum" given_name: Roland + id: 0000-0003-4624-4433 identifiers: - - identifier: https://orcid.org/0000-0003-4624-4433 + - identifier: 0000-0003-4624-4433 scheme: orcid - affiliations: - name: TU Wien family_name: Muehlmann given_name: Christoph + id: 0000-0001-7330-8434 identifiers: - - identifier: https://orcid.org/0000-0001-7330-8434 + - identifier: 0000-0001-7330-8434 scheme: orcid - affiliations: - name: TU Wien family_name: Zoboli given_name: Ottavia + id: 0000-0002-2128-5434 identifiers: - - identifier: https://orcid.org/0000-0002-2128-5434 + - identifier: 0000-0002-2128-5434 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Yokoi given_name: Yu + id: 0000-0002-7316-5434 identifiers: - - identifier: https://orcid.org/0000-0002-7316-5434 + - identifier: 0000-0002-7316-5434 scheme: orcid - affiliations: - name: Northwestern University @@ -20128,22 +22926,25 @@ - name: Clinica Eugin family_name: Amargant given_name: Farners + id: 0000-0002-8273-1434 identifiers: - - identifier: https://orcid.org/0000-0002-8273-1434 + - identifier: 0000-0002-8273-1434 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Raue given_name: Charlotte + id: 0000-0002-8447-0434 identifiers: - - identifier: https://orcid.org/0000-0002-8447-0434 + - identifier: 0000-0002-8447-0434 scheme: orcid - affiliations: - name: Northwestern University family_name: Swartz given_name: Jeremy + id: 0000-0003-0391-8434 identifiers: - - identifier: https://orcid.org/0000-0003-0391-8434 + - identifier: 0000-0003-0391-8434 scheme: orcid - affiliations: - name: TU Wien @@ -20151,107 +22952,122 @@ - name: NIST Center for Nanoscale Science and Technology family_name: Ramer given_name: Georg + id: 0000-0001-8307-5435 identifiers: - - identifier: https://orcid.org/0000-0001-8307-5435 + - identifier: 0000-0001-8307-5435 scheme: orcid - affiliations: - name: California Institute of Technology - name: Nuffield College CESS Oxford-Santiago family_name: Perez Riveros given_name: Omar David + id: 0000-0002-4168-5435 identifiers: - - identifier: https://orcid.org/0000-0002-4168-5435 + - identifier: 0000-0002-4168-5435 scheme: orcid - affiliations: - name: Northwestern University family_name: Ibiebele given_name: Abiye + id: 0000-0003-0220-6435 identifiers: - - identifier: https://orcid.org/0000-0003-0220-6435 + - identifier: 0000-0003-0220-6435 scheme: orcid - affiliations: - name: Northwestern University family_name: Goldman given_name: Robert + id: 0000-0003-0383-1435 identifiers: - - identifier: https://orcid.org/0000-0003-0383-1435 + - identifier: 0000-0003-0383-1435 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Monney given_name: Claude + id: 0000-0003-3496-1435 identifiers: - - identifier: https://orcid.org/0000-0003-3496-1435 + - identifier: 0000-0003-3496-1435 scheme: orcid - affiliations: - name: TU Wien family_name: Schranz given_name: Christian + id: 0000-0003-4403-5435 identifiers: - - identifier: https://orcid.org/0000-0003-4403-5435 + - identifier: 0000-0003-4403-5435 scheme: orcid - affiliations: - name: University of Fribourg family_name: Sidler given_name: Hubert + id: 0000-0001-9946-8436 identifiers: - - identifier: https://orcid.org/0000-0001-9946-8436 + - identifier: 0000-0001-9946-8436 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lin given_name: Li + id: 0000-0002-0517-8436 identifiers: - - identifier: https://orcid.org/0000-0002-0517-8436 + - identifier: 0000-0002-0517-8436 scheme: orcid - affiliations: - name: Northwestern University family_name: Gao given_name: Menglu + id: 0000-0002-3455-0436 identifiers: - - identifier: https://orcid.org/0000-0002-3455-0436 + - identifier: 0000-0002-3455-0436 scheme: orcid - affiliations: - name: TU Wien family_name: Toth given_name: Florian + id: 0000-0002-4632-4436 identifiers: - - identifier: https://orcid.org/0000-0002-4632-4436 + - identifier: 0000-0002-4632-4436 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "P\xFCschel" given_name: Thomas + id: 0000-0002-4738-6436 identifiers: - - identifier: https://orcid.org/0000-0002-4738-6436 + - identifier: 0000-0002-4738-6436 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kullmann given_name: Harald + id: 0000-0002-6540-2436 identifiers: - - identifier: https://orcid.org/0000-0002-6540-2436 + - identifier: 0000-0002-6540-2436 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Gre\xDFhoff" given_name: Werner + id: 0000-0002-8215-7436 identifiers: - - identifier: https://orcid.org/0000-0002-8215-7436 + - identifier: 0000-0002-8215-7436 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Janke given_name: Julia + id: 0000-0002-9310-4436 identifiers: - - identifier: https://orcid.org/0000-0002-9310-4436 + - identifier: 0000-0002-9310-4436 scheme: orcid - affiliations: - name: Northwestern University family_name: Viola given_name: Kirsten + id: 0000-0002-9862-6436 identifiers: - - identifier: https://orcid.org/0000-0002-9862-6436 + - identifier: 0000-0002-9862-6436 scheme: orcid - affiliations: - name: University of Pennsylvania @@ -20259,189 +23075,215 @@ - name: Northwestern University family_name: Pierce given_name: Susan + id: 0000-0001-7261-3437 identifiers: - - identifier: https://orcid.org/0000-0001-7261-3437 + - identifier: 0000-0001-7261-3437 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hankins given_name: Matthew + id: 0000-0001-9315-8437 identifiers: - - identifier: https://orcid.org/0000-0001-9315-8437 + - identifier: 0000-0001-9315-8437 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Lei + id: 0000-0002-1087-8437 identifiers: - - identifier: https://orcid.org/0000-0002-1087-8437 + - identifier: 0000-0002-1087-8437 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Ca\xF1\xF3n-Berm\xFAdez" given_name: Gilbert Santiago + id: 0000-0002-1660-4437 identifiers: - - identifier: https://orcid.org/0000-0002-1660-4437 + - identifier: 0000-0002-1660-4437 scheme: orcid - affiliations: - name: Northwestern University family_name: Larkin given_name: Isaac + id: 0000-0002-5750-2437 identifiers: - - identifier: https://orcid.org/0000-0002-5750-2437 + - identifier: 0000-0002-5750-2437 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Chi + id: 0000-0002-6116-5437 identifiers: - - identifier: https://orcid.org/0000-0002-6116-5437 + - identifier: 0000-0002-6116-5437 scheme: orcid - affiliations: - name: Ministry of Justice - name: TU Wien family_name: Eidenberger given_name: Horst + id: 0000-0002-8300-6437 identifiers: - - identifier: https://orcid.org/0000-0002-8300-6437 + - identifier: 0000-0002-8300-6437 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Institute of Nuclear Physics Polish Academy of Sciences family_name: Szeliga given_name: Magda + id: 0000-0003-0007-2437 identifiers: - - identifier: https://orcid.org/0000-0003-0007-2437 + - identifier: 0000-0003-0007-2437 scheme: orcid - affiliations: - name: TU Wien family_name: Baumann given_name: Christian + id: 0000-0003-2022-5437 identifiers: - - identifier: https://orcid.org/0000-0003-2022-5437 + - identifier: 0000-0003-2022-5437 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Avolio given_name: Giuseppe + id: 0000-0003-2664-3437 identifiers: - - identifier: https://orcid.org/0000-0003-2664-3437 + - identifier: 0000-0003-2664-3437 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Brumbauer given_name: Florian + id: 0000-0001-7088-1438 identifiers: - - identifier: https://orcid.org/0000-0001-7088-1438 + - identifier: 0000-0001-7088-1438 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: University of Bamberg family_name: Schuesslbauer given_name: Annika + id: 0000-0001-9478-7438 identifiers: - - identifier: https://orcid.org/0000-0001-9478-7438 + - identifier: 0000-0001-9478-7438 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Inamura given_name: Tetsunari + id: 0000-0002-0028-6438 identifiers: - - identifier: https://orcid.org/0000-0002-0028-6438 + - identifier: 0000-0002-0028-6438 scheme: orcid - affiliations: - name: TU Wien family_name: Ayala given_name: Pablo + id: 0000-0002-2569-4438 identifiers: - - identifier: https://orcid.org/0000-0002-2569-4438 + - identifier: 0000-0002-2569-4438 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare - name: "Organisation europ\xE9enne pour la Recherche nucl\xE9aire" family_name: Di Marco given_name: Emanuele + id: 0000-0002-5920-2438 identifiers: - - identifier: https://orcid.org/0000-0002-5920-2438 + - identifier: 0000-0002-5920-2438 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Fischer given_name: Cornelius + id: 0000-0003-2416-6438 identifiers: - - identifier: https://orcid.org/0000-0003-2416-6438 + - identifier: 0000-0003-2416-6438 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Zarini given_name: Omid + id: 0000-0003-4362-3438 identifiers: - - identifier: https://orcid.org/0000-0003-4362-3438 + - identifier: 0000-0003-4362-3438 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: New Design University family_name: "D\xFCchs" given_name: Martin + id: 0000-0003-4333-2438 identifiers: - - identifier: https://orcid.org/0000-0003-4333-2438 + - identifier: 0000-0003-4333-2438 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Rivero given_name: Carmen + id: 0000-0001-6031-0439 identifiers: - - identifier: https://orcid.org/0000-0001-6031-0439 + - identifier: 0000-0001-6031-0439 scheme: orcid - affiliations: - name: TU Wien family_name: Piroi given_name: Florina + id: 0000-0001-7584-6439 identifiers: - - identifier: https://orcid.org/0000-0001-7584-6439 + - identifier: 0000-0001-7584-6439 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Zhang given_name: Mengyi + id: 0000-0002-2589-0439 identifiers: - - identifier: https://orcid.org/0000-0002-2589-0439 + - identifier: 0000-0002-2589-0439 scheme: orcid - affiliations: - name: TU Wien family_name: Okulmus given_name: Cem + id: 0000-0002-7742-0439 identifiers: - - identifier: https://orcid.org/0000-0002-7742-0439 + - identifier: 0000-0002-7742-0439 scheme: orcid - affiliations: - name: Northwestern University family_name: Riggenbach given_name: Noah + id: 0000-0003-3071-1439 identifiers: - - identifier: https://orcid.org/0000-0003-3071-1439 + - identifier: 0000-0003-3071-1439 scheme: orcid - affiliations: - name: University of Michigan - name: California Institute of Technology family_name: Hasanyan given_name: Armanj + id: 0000-0003-3676-9439 identifiers: - - identifier: https://orcid.org/0000-0003-3676-9439 + - identifier: 0000-0003-3676-9439 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Fellendorf given_name: Martin + id: 0000-0001-5111-943X identifiers: - - identifier: https://orcid.org/0000-0001-5111-943X + - identifier: 0000-0001-5111-943X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Akhgar given_name: Christopher Karim + id: 0000-0001-8266-043X identifiers: - - identifier: https://orcid.org/0000-0001-8266-043X + - identifier: 0000-0001-8266-043X scheme: orcid - affiliations: - name: Pennsylvania State University @@ -20449,223 +23291,254 @@ - name: The University of Chicago family_name: Kmiecik given_name: Thomas + id: 0000-0002-1367-443X identifiers: - - identifier: https://orcid.org/0000-0002-1367-443X + - identifier: 0000-0002-1367-443X scheme: orcid - affiliations: - name: TU Wien family_name: Roda given_name: Giovanna + id: 0000-0002-2018-843X identifiers: - - identifier: https://orcid.org/0000-0002-2018-843X + - identifier: 0000-0002-2018-843X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Oser given_name: Pascal + id: 0000-0002-2461-343X identifiers: - - identifier: https://orcid.org/0000-0002-2461-343X + - identifier: 0000-0002-2461-343X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Bastidas-Erazo given_name: Pablo + id: 0000-0002-6593-343X identifiers: - - identifier: https://orcid.org/0000-0002-6593-343X + - identifier: 0000-0002-6593-343X scheme: orcid - affiliations: - name: Northwestern University family_name: Miles given_name: Joshua-Paul + id: 0000-0002-6612-743X identifiers: - - identifier: https://orcid.org/0000-0002-6612-743X + - identifier: 0000-0002-6612-743X scheme: orcid - affiliations: - name: CERN family_name: Aarrestad given_name: Thea + id: 0000-0002-7671-243X identifiers: - - identifier: https://orcid.org/0000-0002-7671-243X + - identifier: 0000-0002-7671-243X scheme: orcid - affiliations: - name: Northwestern University family_name: Gomes given_name: Sean + id: 0000-0002-9360-043X identifiers: - - identifier: https://orcid.org/0000-0002-9360-043X + - identifier: 0000-0002-9360-043X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Ting-Wei + id: 0000-0003-3463-643X identifiers: - - identifier: https://orcid.org/0000-0003-3463-643X + - identifier: 0000-0003-3463-643X scheme: orcid - affiliations: - name: University of Fribourg family_name: Hoszowska given_name: Joanna + id: 0000-0003-4075-343X identifiers: - - identifier: https://orcid.org/0000-0003-4075-343X + - identifier: 0000-0003-4075-343X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: "Technische Universit\xE4t Bergakademie Freiberg" family_name: van den Boogaart given_name: Karl Gerald + id: 0000-0003-4646-943X identifiers: - - identifier: https://orcid.org/0000-0003-4646-943X + - identifier: 0000-0003-4646-943X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Daraio given_name: Chiara + id: 0000-0001-5296-4440 identifiers: - - identifier: https://orcid.org/0000-0001-5296-4440 + - identifier: 0000-0001-5296-4440 scheme: orcid - affiliations: - name: CIC biomaGUNE - name: Northwestern University family_name: R Sasselli given_name: Ivan + id: 0000-0001-6062-2440 identifiers: - - identifier: https://orcid.org/0000-0001-6062-2440 + - identifier: 0000-0001-6062-2440 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Michel given_name: Peter + id: 0000-0001-6187-9440 identifiers: - - identifier: https://orcid.org/0000-0001-6187-9440 + - identifier: 0000-0001-6187-9440 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Marcher given_name: Thomas + id: 0000-0001-7729-9440 identifiers: - - identifier: https://orcid.org/0000-0001-7729-9440 + - identifier: 0000-0001-7729-9440 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Wilhelm given_name: Richard + id: 0000-0001-9451-5440 identifiers: - - identifier: https://orcid.org/0000-0001-9451-5440 + - identifier: 0000-0001-9451-5440 scheme: orcid - affiliations: - name: CERN family_name: Follin given_name: Fabio + id: 0000-0002-0167-4440 identifiers: - - identifier: https://orcid.org/0000-0002-0167-4440 + - identifier: 0000-0002-0167-4440 scheme: orcid - affiliations: - name: Northwestern University family_name: Weitzman given_name: Erica + id: 0000-0002-3183-0440 identifiers: - - identifier: https://orcid.org/0000-0002-3183-0440 + - identifier: 0000-0002-3183-0440 scheme: orcid - affiliations: - name: TU Wien family_name: Wartha given_name: Eva-Maria + id: 0000-0002-5564-8440 identifiers: - - identifier: https://orcid.org/0000-0002-5564-8440 + - identifier: 0000-0002-5564-8440 scheme: orcid - affiliations: - name: CERN family_name: Oliveira given_name: Andreia + id: 0000-0002-9004-8440 identifiers: - - identifier: https://orcid.org/0000-0002-9004-8440 + - identifier: 0000-0002-9004-8440 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Demmrich given_name: Sarah + id: 0000-0001-9362-0441 identifiers: - - identifier: https://orcid.org/0000-0001-9362-0441 + - identifier: 0000-0001-9362-0441 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "K\xF6hnke" given_name: Corinna + id: 0000-0002-3183-4441 identifiers: - - identifier: https://orcid.org/0000-0002-3183-4441 + - identifier: 0000-0002-3183-4441 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kim given_name: Soo-Kyung + id: 0000-0002-4498-5441 identifiers: - - identifier: https://orcid.org/0000-0002-4498-5441 + - identifier: 0000-0002-4498-5441 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Geneva family_name: Kukorelly given_name: Erzsi + id: 0000-0003-4662-3441 identifiers: - - identifier: https://orcid.org/0000-0003-4662-3441 + - identifier: 0000-0003-4662-3441 scheme: orcid - affiliations: - name: Northwestern University family_name: Lander given_name: Rachel + id: 0000-0001-9811-8442 identifiers: - - identifier: https://orcid.org/0000-0001-9811-8442 + - identifier: 0000-0001-9811-8442 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Avouac given_name: Jean-Philippe + id: 0000-0002-3060-8442 identifiers: - - identifier: https://orcid.org/0000-0002-3060-8442 + - identifier: 0000-0002-3060-8442 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schultheiss given_name: Katrin + id: 0000-0002-3382-5442 identifiers: - - identifier: https://orcid.org/0000-0002-3382-5442 + - identifier: 0000-0002-3382-5442 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Columbia University family_name: Ren given_name: Tianhao + id: 0000-0003-1265-4442 identifiers: - - identifier: https://orcid.org/0000-0003-1265-4442 + - identifier: 0000-0003-1265-4442 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Lederer given_name: Philip Lukas + id: 0000-0003-1875-7442 identifiers: - - identifier: https://orcid.org/0000-0003-1875-7442 + - identifier: 0000-0003-1875-7442 scheme: orcid - affiliations: - name: Northwestern University family_name: Choi given_name: Yeon Sik + id: 0000-0003-3813-3442 identifiers: - - identifier: https://orcid.org/0000-0003-3813-3442 + - identifier: 0000-0003-3813-3442 scheme: orcid - affiliations: - name: University of Bamberg family_name: Sioutis given_name: Michael + id: 0000-0001-7562-2443 identifiers: - - identifier: https://orcid.org/0000-0001-7562-2443 + - identifier: 0000-0001-7562-2443 scheme: orcid - affiliations: - name: California Institute of Technology family_name: VanDrisse given_name: Chelsey + id: 0000-0001-9139-0443 identifiers: - - identifier: https://orcid.org/0000-0001-9139-0443 + - identifier: 0000-0001-9139-0443 scheme: orcid - affiliations: - name: TU Wien @@ -20673,277 +23546,316 @@ - name: space-craft Architektur family_name: "H\xE4uplik-Meusburger" given_name: Sandra + id: 0000-0002-2044-6443 identifiers: - - identifier: https://orcid.org/0000-0002-2044-6443 + - identifier: 0000-0002-2044-6443 scheme: orcid - affiliations: - name: University of Fribourg family_name: Poglia Mileti given_name: Francesca + id: 0000-0002-5942-0443 identifiers: - - identifier: https://orcid.org/0000-0002-5942-0443 + - identifier: 0000-0002-5942-0443 scheme: orcid - affiliations: - name: OncoRay - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Beyreuther given_name: Elke + id: 0000-0002-0582-1444 identifiers: - - identifier: https://orcid.org/0000-0002-0582-1444 + - identifier: 0000-0002-0582-1444 scheme: orcid - affiliations: - name: University of Fribourg family_name: Sieber given_name: Jonas + id: 0000-0002-4325-4444 identifiers: - - identifier: https://orcid.org/0000-0002-4325-4444 + - identifier: 0000-0002-4325-4444 scheme: orcid - affiliations: - name: University of Fribourg family_name: Pont given_name: "Fr\xE9d\xE9ric" + id: 0000-0003-0076-5444 identifiers: - - identifier: https://orcid.org/0000-0003-0076-5444 + - identifier: 0000-0003-0076-5444 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Prakash given_name: Abhishek + id: 0000-0003-4451-4444 identifiers: - - identifier: https://orcid.org/0000-0003-4451-4444 + - identifier: 0000-0003-4451-4444 scheme: orcid - affiliations: - name: TU Wien family_name: Limbeck given_name: Andreas + id: 0000-0001-5042-2445 identifiers: - - identifier: https://orcid.org/0000-0001-5042-2445 + - identifier: 0000-0001-5042-2445 scheme: orcid - affiliations: - name: TU Wien family_name: Vees given_name: Charlotte Anne + id: 0000-0001-7725-4445 identifiers: - - identifier: https://orcid.org/0000-0001-7725-4445 + - identifier: 0000-0001-7725-4445 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Fedosseev given_name: Valentin + id: 0000-0001-8767-1445 identifiers: - - identifier: https://orcid.org/0000-0001-8767-1445 + - identifier: 0000-0001-8767-1445 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Chulin + id: 0000-0002-1877-3445 identifiers: - - identifier: https://orcid.org/0000-0002-1877-3445 + - identifier: 0000-0002-1877-3445 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Rumpf given_name: Louise + id: 0000-0002-2321-4445 identifiers: - - identifier: https://orcid.org/0000-0002-2321-4445 + - identifier: 0000-0002-2321-4445 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Kataoka given_name: Shin + id: 0000-0002-6435-8445 identifiers: - - identifier: https://orcid.org/0000-0002-6435-8445 + - identifier: 0000-0002-6435-8445 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Ertl given_name: Peter + id: 0000-0002-7625-2445 identifiers: - - identifier: https://orcid.org/0000-0002-7625-2445 + - identifier: 0000-0002-7625-2445 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Bojtar given_name: Lajos + id: 0000-0002-7733-5445 identifiers: - - identifier: https://orcid.org/0000-0002-7733-5445 + - identifier: 0000-0002-7733-5445 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Butcher given_name: Thomas + id: 0000-0003-4122-9445 identifiers: - - identifier: https://orcid.org/0000-0003-4122-9445 + - identifier: 0000-0003-4122-9445 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: De Santis given_name: Cristian + id: 0000-0002-7280-2446 identifiers: - - identifier: https://orcid.org/0000-0002-7280-2446 + - identifier: 0000-0002-7280-2446 scheme: orcid - affiliations: - name: Northwestern University family_name: Mangan given_name: James + id: 0000-0002-9713-7446 identifiers: - - identifier: https://orcid.org/0000-0002-9713-7446 + - identifier: 0000-0002-9713-7446 scheme: orcid - affiliations: - name: CERN family_name: Tancredi given_name: Lorenzo + id: 0000-0003-0887-9446 identifiers: - - identifier: https://orcid.org/0000-0003-0887-9446 + - identifier: 0000-0003-0887-9446 scheme: orcid - affiliations: - name: Northwestern University family_name: Pinto given_name: Diego + id: 0000-0003-1430-4446 identifiers: - - identifier: https://orcid.org/0000-0003-1430-4446 + - identifier: 0000-0003-1430-4446 scheme: orcid - affiliations: - name: Northwestern University family_name: Harmon given_name: Rebecca + id: 0000-0003-1549-7446 identifiers: - - identifier: https://orcid.org/0000-0003-1549-7446 + - identifier: 0000-0003-1549-7446 scheme: orcid - affiliations: - name: TU Wien family_name: "Brandst\xE4tter" given_name: Andreas + id: 0000-0003-2820-4446 identifiers: - - identifier: https://orcid.org/0000-0003-2820-4446 + - identifier: 0000-0003-2820-4446 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Cook given_name: Andrew + id: 0000-0001-6633-3447 identifiers: - - identifier: https://orcid.org/0000-0001-6633-3447 + - identifier: 0000-0001-6633-3447 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Satoh given_name: Shin'ichi + id: 0000-0001-6995-6447 identifiers: - - identifier: https://orcid.org/0000-0001-6995-6447 + - identifier: 0000-0001-6995-6447 scheme: orcid - affiliations: - name: Northwestern University family_name: Gozutok Moore given_name: Oge + id: 0000-0001-7594-2447 identifiers: - - identifier: https://orcid.org/0000-0001-7594-2447 + - identifier: 0000-0001-7594-2447 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bostick given_name: John + id: 0000-0001-8925-2447 identifiers: - - identifier: https://orcid.org/0000-0001-8925-2447 + - identifier: 0000-0001-8925-2447 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lai given_name: Yungchieh + id: 0000-0001-9392-1447 identifiers: - - identifier: https://orcid.org/0000-0001-9392-1447 + - identifier: 0000-0001-9392-1447 scheme: orcid - affiliations: - name: CERN family_name: Bidault given_name: Niels + id: 0000-0002-1974-9447 identifiers: - - identifier: https://orcid.org/0000-0002-1974-9447 + - identifier: 0000-0002-1974-9447 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Chaojian + id: 0000-0002-2588-2447 identifiers: - - identifier: https://orcid.org/0000-0002-2588-2447 + - identifier: 0000-0002-2588-2447 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kubiak-Schneider given_name: Aleksandra + id: 0000-0002-3273-2447 identifiers: - - identifier: https://orcid.org/0000-0002-3273-2447 + - identifier: 0000-0002-3273-2447 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schuhmacher given_name: Nils + id: 0000-0002-3927-2447 identifiers: - - identifier: https://orcid.org/0000-0002-3927-2447 + - identifier: 0000-0002-3927-2447 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Slagle given_name: Kevin + id: 0000-0002-8036-3447 identifiers: - - identifier: https://orcid.org/0000-0002-8036-3447 + - identifier: 0000-0002-8036-3447 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Vuozzo given_name: Marta + id: 0000-0003-4020-7447 identifiers: - - identifier: https://orcid.org/0000-0003-4020-7447 + - identifier: 0000-0003-4020-7447 scheme: orcid - affiliations: - name: California Institute of Technology - name: Queen's University family_name: Tusche given_name: Anita + id: 0000-0003-4180-8447 identifiers: - - identifier: https://orcid.org/0000-0003-4180-8447 + - identifier: 0000-0003-4180-8447 scheme: orcid - affiliations: - name: TU Wien family_name: Schwarzmayr given_name: Paul + id: 0000-0003-4735-3447 identifiers: - - identifier: https://orcid.org/0000-0003-4735-3447 + - identifier: 0000-0003-4735-3447 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Lovrekovic given_name: Iva + id: 0000-0001-8080-9448 identifiers: - - identifier: https://orcid.org/0000-0001-8080-9448 + - identifier: 0000-0001-8080-9448 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Anderson given_name: Matthew + id: 0000-0001-8884-3448 identifiers: - - identifier: https://orcid.org/0000-0001-8884-3448 + - identifier: 0000-0001-8884-3448 scheme: orcid - affiliations: - name: TU Wien family_name: Gutsohn given_name: Anna + id: 0000-0002-1554-9448 identifiers: - - identifier: https://orcid.org/0000-0002-1554-9448 + - identifier: 0000-0002-1554-9448 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "Gro\xDF" given_name: Jorge + id: 0000-0002-3525-9448 identifiers: - - identifier: https://orcid.org/0000-0002-3525-9448 + - identifier: 0000-0002-3525-9448 scheme: orcid - affiliations: - name: TU Wien family_name: Roupec given_name: Christoph + id: 0000-0003-1450-4448 identifiers: - - identifier: https://orcid.org/0000-0003-1450-4448 + - identifier: 0000-0003-1450-4448 scheme: orcid - affiliations: - name: Universitetet i Bergen @@ -20951,199 +23863,227 @@ - name: University of Fribourg family_name: Sander-Faes given_name: Stephan + id: 0000-0003-4087-6448 identifiers: - - identifier: https://orcid.org/0000-0003-4087-6448 + - identifier: 0000-0003-4087-6448 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lee given_name: Juhan + id: 0000-0001-5036-3449 identifiers: - - identifier: https://orcid.org/0000-0001-5036-3449 + - identifier: 0000-0001-5036-3449 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Baliaka given_name: Haroula + id: 0000-0001-7851-8449 identifiers: - - identifier: https://orcid.org/0000-0001-7851-8449 + - identifier: 0000-0001-7851-8449 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Andrae given_name: Magdalena + id: 0000-0001-9174-7449 identifiers: - - identifier: https://orcid.org/0000-0001-9174-7449 + - identifier: 0000-0001-9174-7449 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Kitagawa given_name: Naoya + id: 0000-0002-1191-2449 identifiers: - - identifier: https://orcid.org/0000-0002-1191-2449 + - identifier: 0000-0002-1191-2449 scheme: orcid - affiliations: - name: "Universit\xE0 degli Studi di Cassino e del Lazio Meridionale" - name: Istituto Nazionale di Fisica Nucleare family_name: Maffucci given_name: Antonio + id: 0000-0002-4992-9449 identifiers: - - identifier: https://orcid.org/0000-0002-4992-9449 + - identifier: 0000-0002-4992-9449 scheme: orcid - affiliations: - name: University of Fribourg family_name: Huerlimann given_name: Daniel + id: 0000-0002-5483-2449 identifiers: - - identifier: https://orcid.org/0000-0002-5483-2449 + - identifier: 0000-0002-5483-2449 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hang given_name: Leibniz + id: 0000-0002-6209-0449 identifiers: - - identifier: https://orcid.org/0000-0002-6209-0449 + - identifier: 0000-0002-6209-0449 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Engl given_name: Felix + id: 0000-0003-1238-5449 identifiers: - - identifier: https://orcid.org/0000-0003-1238-5449 + - identifier: 0000-0003-1238-5449 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Qian + id: 0000-0001-9773-944X identifiers: - - identifier: https://orcid.org/0000-0001-9773-944X + - identifier: 0000-0001-9773-944X scheme: orcid - affiliations: - name: National Institute for Nuclear Physics family_name: Morganti given_name: Lucia + id: 0000-0002-2712-544X identifiers: - - identifier: https://orcid.org/0000-0002-2712-544X + - identifier: 0000-0002-2712-544X scheme: orcid - affiliations: - name: Northwestern University family_name: Wit given_name: Janneke + id: 0000-0002-3116-744X identifiers: - - identifier: https://orcid.org/0000-0002-3116-744X + - identifier: 0000-0002-3116-744X scheme: orcid - affiliations: - name: Northwestern University family_name: Cole given_name: Lisa + id: 0000-0002-4760-144X identifiers: - - identifier: https://orcid.org/0000-0002-4760-144X + - identifier: 0000-0002-4760-144X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: WANG given_name: Xuelong + id: 0000-0003-2652-944X identifiers: - - identifier: https://orcid.org/0000-0003-2652-944X + - identifier: 0000-0003-2652-944X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Aichele given_name: Dagmar + id: 0000-0001-5937-0450 identifiers: - - identifier: https://orcid.org/0000-0001-5937-0450 + - identifier: 0000-0001-5937-0450 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Quast given_name: Christian + id: 0000-0001-8517-3450 identifiers: - - identifier: https://orcid.org/0000-0001-8517-3450 + - identifier: 0000-0001-8517-3450 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Xiao given_name: Cheng + id: 0000-0001-9649-7450 identifiers: - - identifier: https://orcid.org/0000-0001-9649-7450 + - identifier: 0000-0001-9649-7450 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Siegl given_name: Alexander + id: 0000-0001-9798-3450 identifiers: - - identifier: https://orcid.org/0000-0001-9798-3450 + - identifier: 0000-0001-9798-3450 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: Tapley given_name: Joshua Paul + id: 0000-0002-0641-3450 identifiers: - - identifier: https://orcid.org/0000-0002-0641-3450 + - identifier: 0000-0002-0641-3450 scheme: orcid - affiliations: - name: TU Wien family_name: "B\xF6ckle" given_name: Raphael + id: 0000-0003-4446-1450 identifiers: - - identifier: https://orcid.org/0000-0003-4446-1450 + - identifier: 0000-0003-4446-1450 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Siegmund given_name: Frank + id: 0000-0002-0555-3451 identifiers: - - identifier: https://orcid.org/0000-0002-0555-3451 + - identifier: 0000-0002-0555-3451 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Gabel given_name: Friederike + id: 0000-0002-9997-5451 identifiers: - - identifier: https://orcid.org/0000-0002-9997-5451 + - identifier: 0000-0002-9997-5451 scheme: orcid - affiliations: - name: TU Wien family_name: Patten given_name: Timothy + id: 0000-0003-1139-9451 identifiers: - - identifier: https://orcid.org/0000-0003-1139-9451 + - identifier: 0000-0003-1139-9451 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Eisler given_name: Viktor + id: 0000-0003-2458-7451 identifiers: - - identifier: https://orcid.org/0000-0003-2458-7451 + - identifier: 0000-0003-2458-7451 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Lintuluoto given_name: Adelina + id: 0000-0002-0726-1452 identifiers: - - identifier: https://orcid.org/0000-0002-0726-1452 + - identifier: 0000-0002-0726-1452 scheme: orcid - affiliations: - name: CERN family_name: Scaffidi given_name: Andre + id: 0000-0002-1203-6452 identifiers: - - identifier: https://orcid.org/0000-0002-1203-6452 + - identifier: 0000-0002-1203-6452 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Liu given_name: Jiliang + id: 0000-0002-3491-3452 identifiers: - - identifier: https://orcid.org/0000-0002-3491-3452 + - identifier: 0000-0002-3491-3452 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Ackermann given_name: Leonie + id: 0000-0002-3490-5452 identifiers: - - identifier: https://orcid.org/0000-0002-3490-5452 + - identifier: 0000-0002-3490-5452 scheme: orcid - affiliations: - name: Plekhanov Russian University of Economics @@ -21151,1633 +24091,1862 @@ - name: Joint Institute for Nuclear Research family_name: Belov given_name: Sergey + id: 0000-0003-3043-8452 identifiers: - - identifier: https://orcid.org/0000-0003-3043-8452 + - identifier: 0000-0003-3043-8452 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Lee given_name: J.H. + id: 0000-0003-3665-3452 identifiers: - - identifier: https://orcid.org/0000-0003-3665-3452 + - identifier: 0000-0003-3665-3452 scheme: orcid - affiliations: - name: Northwestern University family_name: Ramakrishna given_name: Sai + id: 0000-0001-9190-2453 identifiers: - - identifier: https://orcid.org/0000-0001-9190-2453 + - identifier: 0000-0001-9190-2453 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Evtushenko given_name: Pavel + id: 0000-0002-0311-7453 identifiers: - - identifier: https://orcid.org/0000-0002-0311-7453 + - identifier: 0000-0002-0311-7453 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Grubm\xFCller" given_name: Michael + id: 0000-0002-0346-7453 identifiers: - - identifier: https://orcid.org/0000-0002-0346-7453 + - identifier: 0000-0002-0346-7453 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Fierce given_name: Laura + id: 0000-0002-8682-1453 identifiers: - - identifier: https://orcid.org/0000-0002-8682-1453 + - identifier: 0000-0002-8682-1453 scheme: orcid - affiliations: - name: TU Wien family_name: Kagerer given_name: Stefan + id: 0000-0002-9134-8453 identifiers: - - identifier: https://orcid.org/0000-0002-9134-8453 + - identifier: 0000-0002-9134-8453 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: sriskaran given_name: viros + id: 0000-0002-9867-0453 identifiers: - - identifier: https://orcid.org/0000-0002-9867-0453 + - identifier: 0000-0002-9867-0453 scheme: orcid - affiliations: - name: NASA Jet Propulsion Laboratory - name: California Institute of Technology family_name: Taylor given_name: Stephen + id: 0000-0003-0264-1453 identifiers: - - identifier: https://orcid.org/0000-0003-0264-1453 + - identifier: 0000-0003-0264-1453 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Jungherr given_name: Andreas + id: 0000-0003-2598-2453 identifiers: - - identifier: https://orcid.org/0000-0003-2598-2453 + - identifier: 0000-0003-2598-2453 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Parker given_name: Joseph + id: 0000-0001-9598-2454 identifiers: - - identifier: https://orcid.org/0000-0001-9598-2454 + - identifier: 0000-0001-9598-2454 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Ahmadiniaz given_name: Naser + id: 0000-0002-0558-9454 identifiers: - - identifier: https://orcid.org/0000-0002-0558-9454 + - identifier: 0000-0002-0558-9454 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Ullah given_name: Sami + id: 0000-0002-9062-1454 identifiers: - - identifier: https://orcid.org/0000-0002-9062-1454 + - identifier: 0000-0002-9062-1454 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kniess given_name: Torsten + id: 0000-0002-4107-3455 identifiers: - - identifier: https://orcid.org/0000-0002-4107-3455 + - identifier: 0000-0002-4107-3455 scheme: orcid - affiliations: - name: Northwestern University family_name: Albinson given_name: Courtney + id: 0000-0002-5452-8455 identifiers: - - identifier: https://orcid.org/0000-0002-5452-8455 + - identifier: 0000-0002-5452-8455 scheme: orcid - affiliations: - name: Northwestern University family_name: Aslan given_name: Umit + id: 0000-0003-0261-4455 identifiers: - - identifier: https://orcid.org/0000-0003-0261-4455 + - identifier: 0000-0003-0261-4455 scheme: orcid - affiliations: - name: TU Wien family_name: Guo given_name: Yi + id: 0000-0002-2940-6456 identifiers: - - identifier: https://orcid.org/0000-0002-2940-6456 + - identifier: 0000-0002-2940-6456 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gao given_name: Xiaojing + id: 0000-0002-3094-1456 identifiers: - - identifier: https://orcid.org/0000-0002-3094-1456 + - identifier: 0000-0002-3094-1456 scheme: orcid - affiliations: - name: Northwestern University family_name: Brown given_name: Spencer + id: 0000-0002-5486-3456 identifiers: - - identifier: https://orcid.org/0000-0002-5486-3456 + - identifier: 0000-0002-5486-3456 scheme: orcid - affiliations: - name: Northwestern University family_name: Mueggenburg given_name: Klara + id: 0000-0003-1643-8456 identifiers: - - identifier: https://orcid.org/0000-0003-1643-8456 + - identifier: 0000-0003-1643-8456 scheme: orcid - affiliations: - name: TU Wien family_name: adavi given_name: zohre + id: 0000-0003-3059-8456 identifiers: - - identifier: https://orcid.org/0000-0003-3059-8456 + - identifier: 0000-0003-3059-8456 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Rehms given_name: Felix + id: 0000-0001-8355-2457 identifiers: - - identifier: https://orcid.org/0000-0001-8355-2457 + - identifier: 0000-0001-8355-2457 scheme: orcid - affiliations: - name: University of Bamberg family_name: Besser given_name: Nadine + id: 0000-0002-1250-1457 identifiers: - - identifier: https://orcid.org/0000-0002-1250-1457 + - identifier: 0000-0002-1250-1457 scheme: orcid - affiliations: - name: Northwestern University family_name: Klepov given_name: Vladislav + id: 0000-0002-2039-2457 identifiers: - - identifier: https://orcid.org/0000-0002-2039-2457 + - identifier: 0000-0002-2039-2457 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Majaca given_name: Antonia + id: 0000-0002-8655-1457 identifiers: - - identifier: https://orcid.org/0000-0002-8655-1457 + - identifier: 0000-0002-8655-1457 scheme: orcid - affiliations: - name: Northwestern University family_name: Thompson given_name: Cynthia K + id: 0000-0003-3197-3457 identifiers: - - identifier: https://orcid.org/0000-0003-3197-3457 + - identifier: 0000-0003-3197-3457 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Edtmaier given_name: Christian + id: 0000-0003-4046-6457 identifiers: - - identifier: https://orcid.org/0000-0003-4046-6457 + - identifier: 0000-0003-4046-6457 scheme: orcid - affiliations: - name: TU Wien family_name: Libisch given_name: Florian + id: 0000-0001-5641-9458 identifiers: - - identifier: https://orcid.org/0000-0001-5641-9458 + - identifier: 0000-0001-5641-9458 scheme: orcid - affiliations: - name: "Klinik f\xFCr Schlafmedizin Zurzach" - name: "Universit\xE9 de Fribourg" family_name: Cordi given_name: Maren + id: 0000-0001-5906-2458 identifiers: - - identifier: https://orcid.org/0000-0001-5906-2458 + - identifier: 0000-0001-5906-2458 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Juhas given_name: Pavol + id: 0000-0001-8751-4458 identifiers: - - identifier: https://orcid.org/0000-0001-8751-4458 + - identifier: 0000-0001-8751-4458 scheme: orcid - affiliations: - name: Northwestern University family_name: Zheng given_name: Hongyu + id: 0000-0002-1612-7458 identifiers: - - identifier: https://orcid.org/0000-0002-1612-7458 + - identifier: 0000-0002-1612-7458 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Eichberger given_name: Bernd + id: 0000-0002-5165-1458 identifiers: - - identifier: https://orcid.org/0000-0002-5165-1458 + - identifier: 0000-0002-5165-1458 scheme: orcid - affiliations: - name: Northwestern University family_name: Das given_name: Sanjib + id: 0000-0002-5281-4458 identifiers: - - identifier: https://orcid.org/0000-0002-5281-4458 + - identifier: 0000-0002-5281-4458 scheme: orcid - affiliations: - name: University of Fribourg family_name: Matthey given_name: Patricia + id: 0000-0002-8612-5458 identifiers: - - identifier: https://orcid.org/0000-0002-8612-5458 + - identifier: 0000-0002-8612-5458 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Mayr-Schm\xF6lzer" given_name: Wernfried + id: 0000-0003-4834-9458 identifiers: - - identifier: https://orcid.org/0000-0003-4834-9458 + - identifier: 0000-0003-4834-9458 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Lavasa given_name: Artemis + id: 0000-0001-5633-2459 identifiers: - - identifier: https://orcid.org/0000-0001-5633-2459 + - identifier: 0000-0001-5633-2459 scheme: orcid - affiliations: - name: University of Fribourg family_name: Squillaci given_name: Myriam + id: 0000-0001-7057-2459 identifiers: - - identifier: https://orcid.org/0000-0001-7057-2459 + - identifier: 0000-0001-7057-2459 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Technau given_name: Marc + id: 0000-0001-9650-2459 identifiers: - - identifier: https://orcid.org/0000-0001-9650-2459 + - identifier: 0000-0001-9650-2459 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "Vel\xE1squez Hern\xE1ndez" given_name: "Miriam de Jes\xFAs" + id: 0000-0002-1338-4459 identifiers: - - identifier: https://orcid.org/0000-0002-1338-4459 + - identifier: 0000-0002-1338-4459 scheme: orcid - affiliations: - name: Northwestern University family_name: Mosca given_name: Lorenzo + id: 0000-0002-1728-9459 identifiers: - - identifier: https://orcid.org/0000-0002-1728-9459 + - identifier: 0000-0002-1728-9459 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Karl given_name: Anja + id: 0000-0002-3062-7459 identifiers: - - identifier: https://orcid.org/0000-0002-3062-7459 + - identifier: 0000-0002-3062-7459 scheme: orcid - affiliations: - name: CERN family_name: Roesler given_name: Stefan + id: 0000-0002-5920-0459 identifiers: - - identifier: https://orcid.org/0000-0002-5920-0459 + - identifier: 0000-0002-5920-0459 scheme: orcid - affiliations: - name: Northwestern University family_name: Holmgren given_name: Robert + id: 0000-0002-8638-0459 identifiers: - - identifier: https://orcid.org/0000-0002-8638-0459 + - identifier: 0000-0002-8638-0459 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Dietzel given_name: Martin + id: 0000-0003-2222-2459 identifiers: - - identifier: https://orcid.org/0000-0003-2222-2459 + - identifier: 0000-0003-2222-2459 scheme: orcid - affiliations: - name: Northwestern University family_name: Hoeke given_name: Veronika + id: 0000-0003-2794-7459 identifiers: - - identifier: https://orcid.org/0000-0003-2794-7459 + - identifier: 0000-0003-2794-7459 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Schlicke given_name: Dirk + id: 0000-0003-3543-7459 identifiers: - - identifier: https://orcid.org/0000-0003-3543-7459 + - identifier: 0000-0003-3543-7459 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Loria given_name: Enrica + id: 0000-0003-3682-7459 identifiers: - - identifier: https://orcid.org/0000-0003-3682-7459 + - identifier: 0000-0003-3682-7459 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pandey given_name: Ayush + id: 0000-0003-3590-4459 identifiers: - - identifier: https://orcid.org/0000-0003-3590-4459 + - identifier: 0000-0003-3590-4459 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Righetti given_name: Giulia + id: 0000-0002-0532-945X identifiers: - - identifier: https://orcid.org/0000-0002-0532-945X + - identifier: 0000-0002-0532-945X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Raab given_name: Marius + id: 0000-0002-1018-745X identifiers: - - identifier: https://orcid.org/0000-0002-1018-745X + - identifier: 0000-0002-1018-745X scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Durham University family_name: Richardson given_name: Peter + id: 0000-0002-3349-345X identifiers: - - identifier: https://orcid.org/0000-0002-3349-345X + - identifier: 0000-0002-3349-345X scheme: orcid - affiliations: - name: Northwestern University family_name: Schneider given_name: Daniel + id: 0000-0002-3523-745X identifiers: - - identifier: https://orcid.org/0000-0002-3523-745X + - identifier: 0000-0002-3523-745X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Du given_name: Yonghua + id: 0000-0003-2655-045X identifiers: - - identifier: https://orcid.org/0000-0003-2655-045X + - identifier: 0000-0003-2655-045X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pengo given_name: Ruggero + id: 0000-0003-4678-945X identifiers: - - identifier: https://orcid.org/0000-0003-4678-945X + - identifier: 0000-0003-4678-945X scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Tompits given_name: Hans + id: 0000-0001-5673-2460 identifiers: - - identifier: https://orcid.org/0000-0001-5673-2460 + - identifier: 0000-0001-5673-2460 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Korf given_name: Ansgar + id: 0000-0002-2769-2460 identifiers: - - identifier: https://orcid.org/0000-0002-2769-2460 + - identifier: 0000-0002-2769-2460 scheme: orcid - affiliations: - name: Northwestern University family_name: Wohlgenant given_name: Susan + id: 0000-0002-2872-4460 identifiers: - - identifier: https://orcid.org/0000-0002-2872-4460 + - identifier: 0000-0002-2872-4460 scheme: orcid - affiliations: - name: Northwestern University family_name: Schultz given_name: Jonathan + id: 0000-0002-3386-5460 identifiers: - - identifier: https://orcid.org/0000-0002-3386-5460 + - identifier: 0000-0002-3386-5460 scheme: orcid - affiliations: - name: Northwestern University family_name: Spruyt given_name: Hendrik + id: 0000-0002-6038-8460 identifiers: - - identifier: https://orcid.org/0000-0002-6038-8460 + - identifier: 0000-0002-6038-8460 scheme: orcid - affiliations: - name: Northwestern University family_name: SRZENTIC given_name: KRISTINA + id: 0000-0002-7098-1460 identifiers: - - identifier: https://orcid.org/0000-0002-7098-1460 + - identifier: 0000-0002-7098-1460 scheme: orcid - affiliations: - name: Northwestern University family_name: wang given_name: peisheng + id: 0000-0002-7469-1460 identifiers: - - identifier: https://orcid.org/0000-0002-7469-1460 + - identifier: 0000-0002-7469-1460 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Larson given_name: Kirsten + id: 0000-0003-3917-6460 identifiers: - - identifier: https://orcid.org/0000-0003-3917-6460 + - identifier: 0000-0003-3917-6460 scheme: orcid - affiliations: - name: Northwestern University family_name: Sellberg given_name: Roxanne + id: 0000-0001-6052-4461 identifiers: - - identifier: https://orcid.org/0000-0001-6052-4461 + - identifier: 0000-0001-6052-4461 scheme: orcid - affiliations: - name: TU Wien family_name: "Maiw\xF6ger" given_name: Mira + id: 0000-0001-9153-1461 identifiers: - - identifier: https://orcid.org/0000-0001-9153-1461 + - identifier: 0000-0001-9153-1461 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lu given_name: Wenbin + id: 0000-0002-1568-7461 identifiers: - - identifier: https://orcid.org/0000-0002-1568-7461 + - identifier: 0000-0002-1568-7461 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tappero given_name: Ryan + id: 0000-0002-3560-2461 identifiers: - - identifier: https://orcid.org/0000-0002-3560-2461 + - identifier: 0000-0002-3560-2461 scheme: orcid - affiliations: - name: CERN family_name: Rassat given_name: Anais + id: 0000-0002-5476-6461 identifiers: - - identifier: https://orcid.org/0000-0002-5476-6461 + - identifier: 0000-0002-5476-6461 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhu given_name: Ren-Yuan + id: 0000-0003-3091-7461 identifiers: - - identifier: https://orcid.org/0000-0003-3091-7461 + - identifier: 0000-0003-3091-7461 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Javier given_name: Alnald + id: 0000-0002-0306-5462 identifiers: - - identifier: https://orcid.org/0000-0002-0306-5462 + - identifier: 0000-0002-0306-5462 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Allmaier given_name: Guenter + id: 0000-0002-1438-9462 identifiers: - - identifier: https://orcid.org/0000-0002-1438-9462 + - identifier: 0000-0002-1438-9462 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Stone given_name: Edward + id: 0000-0002-2010-5462 identifiers: - - identifier: https://orcid.org/0000-0002-2010-5462 + - identifier: 0000-0002-2010-5462 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Ma given_name: Jiajia + id: 0000-0002-4339-0462 identifiers: - - identifier: https://orcid.org/0000-0002-4339-0462 + - identifier: 0000-0002-4339-0462 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Maly given_name: Jan + id: 0000-0003-3288-7462 identifiers: - - identifier: https://orcid.org/0000-0003-3288-7462 + - identifier: 0000-0003-3288-7462 scheme: orcid - affiliations: - name: Virtual Vehicle Research GmbH - name: Graz University of Technology family_name: Stolz given_name: Michael + id: 0000-0003-3667-7462 identifiers: - - identifier: https://orcid.org/0000-0003-3667-7462 + - identifier: 0000-0003-3667-7462 scheme: orcid - affiliations: - name: Northwestern University family_name: Bardgett given_name: Dylan + id: 0000-0003-4916-0462 identifiers: - - identifier: https://orcid.org/0000-0003-4916-0462 + - identifier: 0000-0003-4916-0462 scheme: orcid - affiliations: - name: TU Wien family_name: Sauras Altuzarra given_name: Lorenzo + id: 0000-0001-6893-7463 identifiers: - - identifier: https://orcid.org/0000-0001-6893-7463 + - identifier: 0000-0001-6893-7463 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "H\xF6randner" given_name: Felix + id: 0000-0001-8591-3463 identifiers: - - identifier: https://orcid.org/0000-0001-8591-3463 + - identifier: 0000-0001-8591-3463 scheme: orcid - affiliations: - name: TU Wien family_name: Dorn given_name: "J\xFCrgen" + id: 0000-0002-1156-0463 identifiers: - - identifier: https://orcid.org/0000-0002-1156-0463 + - identifier: 0000-0002-1156-0463 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Nilsson given_name: Paul + id: 0000-0002-6848-7463 identifiers: - - identifier: https://orcid.org/0000-0002-6848-7463 + - identifier: 0000-0002-6848-7463 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Donnay given_name: Laura + id: 0000-0002-7099-0463 identifiers: - - identifier: https://orcid.org/0000-0002-7099-0463 + - identifier: 0000-0002-7099-0463 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Lohwasser given_name: Angelika + id: 0000-0002-7090-7463 identifiers: - - identifier: https://orcid.org/0000-0002-7090-7463 + - identifier: 0000-0002-7090-7463 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chemissany given_name: Wissam + id: 0000-0002-9113-4463 identifiers: - - identifier: https://orcid.org/0000-0002-9113-4463 + - identifier: 0000-0002-9113-4463 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chen given_name: Yanbei + id: 0000-0002-9730-9463 identifiers: - - identifier: https://orcid.org/0000-0002-9730-9463 + - identifier: 0000-0002-9730-9463 scheme: orcid - affiliations: - name: TU Wien family_name: Jagenteufel given_name: Hanna + id: 0000-0003-0466-0463 identifiers: - - identifier: https://orcid.org/0000-0003-0466-0463 + - identifier: 0000-0003-0466-0463 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lang given_name: Sascha + id: 0000-0001-6850-0464 identifiers: - - identifier: https://orcid.org/0000-0001-6850-0464 + - identifier: 0000-0001-6850-0464 scheme: orcid - affiliations: - name: University of Fribourg family_name: Davoine given_name: Eric + id: 0000-0001-9450-6464 identifiers: - - identifier: https://orcid.org/0000-0001-9450-6464 + - identifier: 0000-0001-9450-6464 scheme: orcid - affiliations: - name: DARIAH-DE - name: University of Bamberg family_name: Gradl given_name: Tobias + id: 0000-0002-1392-2464 identifiers: - - identifier: https://orcid.org/0000-0002-1392-2464 + - identifier: 0000-0002-1392-2464 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Morsch given_name: Andreas + id: 0000-0002-3276-0464 identifiers: - - identifier: https://orcid.org/0000-0002-3276-0464 + - identifier: 0000-0002-3276-0464 scheme: orcid - affiliations: - name: CERN family_name: Vega Cid given_name: Lorena + id: 0000-0002-5993-9464 identifiers: - - identifier: https://orcid.org/0000-0002-5993-9464 + - identifier: 0000-0002-5993-9464 scheme: orcid - affiliations: - name: CERN - name: "\xC9cole Polytechnique F\xE9d\xE9rale de Lausanne" family_name: Domcke given_name: Valerie + id: 0000-0002-7208-4464 identifiers: - - identifier: https://orcid.org/0000-0002-7208-4464 + - identifier: 0000-0002-7208-4464 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Shetty given_name: Darshan + id: 0000-0001-5096-1465 identifiers: - - identifier: https://orcid.org/0000-0001-5096-1465 + - identifier: 0000-0001-5096-1465 scheme: orcid - affiliations: - name: Northwestern University family_name: Deng given_name: Han-Xiang + id: 0000-0002-0030-8465 identifiers: - - identifier: https://orcid.org/0000-0002-0030-8465 + - identifier: 0000-0002-0030-8465 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Desingu Rajan given_name: Ayyappa Raja + id: 0000-0002-0173-0465 identifiers: - - identifier: https://orcid.org/0000-0002-0173-0465 + - identifier: 0000-0002-0173-0465 scheme: orcid - affiliations: - name: CERN family_name: Lai given_name: Kitti + id: 0000-0002-3617-5465 identifiers: - - identifier: https://orcid.org/0000-0002-3617-5465 + - identifier: 0000-0002-3617-5465 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhou given_name: Guangyu + id: 0000-0003-0897-6465 identifiers: - - identifier: https://orcid.org/0000-0003-0897-6465 + - identifier: 0000-0003-0897-6465 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Demaria given_name: Natale + id: 0000-0003-0743-9465 identifiers: - - identifier: https://orcid.org/0000-0003-0743-9465 + - identifier: 0000-0003-0743-9465 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Meyer given_name: Ulf-Niklas + id: 0000-0003-2447-4465 identifiers: - - identifier: https://orcid.org/0000-0003-2447-4465 + - identifier: 0000-0003-2447-4465 scheme: orcid - affiliations: - name: Northwestern University - name: University of Groningen family_name: Lancia given_name: Federico + id: 0000-0003-3075-1465 identifiers: - - identifier: https://orcid.org/0000-0003-3075-1465 + - identifier: 0000-0003-3075-1465 scheme: orcid - affiliations: - name: CERN family_name: TOCK given_name: Jean-Philippe + id: 0000-0001-5795-6466 identifiers: - - identifier: https://orcid.org/0000-0001-5795-6466 + - identifier: 0000-0001-5795-6466 scheme: orcid - affiliations: - name: "Martin-Luther-Universit\xE4t Halle-Wittenberg" - name: "University of M\xFCnster" family_name: Sturm given_name: Tanja + id: 0000-0001-8002-1466 identifiers: - - identifier: https://orcid.org/0000-0001-8002-1466 + - identifier: 0000-0001-8002-1466 scheme: orcid - affiliations: - name: TU Wien family_name: Arrazola given_name: "I\xF1igo" + id: 0000-0003-0991-3466 identifiers: - - identifier: https://orcid.org/0000-0003-0991-3466 + - identifier: 0000-0003-0991-3466 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Drobot given_name: "Bj\xF6rn" + id: 0000-0003-1245-0466 identifiers: - - identifier: https://orcid.org/0000-0003-1245-0466 + - identifier: 0000-0003-1245-0466 scheme: orcid - affiliations: - name: Northwestern University family_name: Lee given_name: Kwahun + id: 0000-0003-4392-7466 identifiers: - - identifier: https://orcid.org/0000-0003-4392-7466 + - identifier: 0000-0003-4392-7466 scheme: orcid - affiliations: - name: University of Bamberg family_name: "S\xFCnkel" given_name: Michael + id: 0000-0001-9328-0467 identifiers: - - identifier: https://orcid.org/0000-0001-9328-0467 + - identifier: 0000-0001-9328-0467 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ji given_name: Xiangpan + id: 0000-0002-0579-8467 identifiers: - - identifier: https://orcid.org/0000-0002-0579-8467 + - identifier: 0000-0002-0579-8467 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Flach given_name: Matthias + id: 0000-0002-4523-9467 identifiers: - - identifier: https://orcid.org/0000-0002-4523-9467 + - identifier: 0000-0002-4523-9467 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Vogtenhuber given_name: Birgit + id: 0000-0002-7166-4467 identifiers: - - identifier: https://orcid.org/0000-0002-7166-4467 + - identifier: 0000-0002-7166-4467 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Birtel given_name: Sandra + id: 0000-0003-0460-6467 identifiers: - - identifier: https://orcid.org/0000-0003-0460-6467 + - identifier: 0000-0003-0460-6467 scheme: orcid - affiliations: - name: TU Wien family_name: Purgathofer given_name: Werner + id: 0000-0003-2516-7467 identifiers: - - identifier: https://orcid.org/0000-0003-2516-7467 + - identifier: 0000-0003-2516-7467 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Mesch given_name: Walter + id: 0000-0001-6790-8468 identifiers: - - identifier: https://orcid.org/0000-0001-6790-8468 + - identifier: 0000-0001-6790-8468 scheme: orcid - affiliations: - name: Northwestern University family_name: Confino given_name: Rafael + id: 0000-0002-2075-6468 identifiers: - - identifier: https://orcid.org/0000-0002-2075-6468 + - identifier: 0000-0002-2075-6468 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien Fakult\xE4t f\xFCr Technische Chemie" family_name: Fleissner given_name: Sarah + id: 0000-0002-3366-1468 identifiers: - - identifier: https://orcid.org/0000-0002-3366-1468 + - identifier: 0000-0002-3366-1468 scheme: orcid - affiliations: - name: Northwestern University family_name: Higgins given_name: James + id: 0000-0002-7916-8468 identifiers: - - identifier: https://orcid.org/0000-0002-7916-8468 + - identifier: 0000-0002-7916-8468 scheme: orcid - affiliations: - name: Northwestern University family_name: Hao given_name: Shiqiang + id: 0000-0002-7985-4468 identifiers: - - identifier: https://orcid.org/0000-0002-7985-4468 + - identifier: 0000-0002-7985-4468 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Krug given_name: Manfred + id: 0000-0002-9508-8468 identifiers: - - identifier: https://orcid.org/0000-0002-9508-8468 + - identifier: 0000-0002-9508-8468 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Stony Brook University family_name: Liu given_name: Yangang + id: 0000-0003-0238-0468 identifiers: - - identifier: https://orcid.org/0000-0003-0238-0468 + - identifier: 0000-0003-0238-0468 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Jones given_name: Jim + id: 0000-0001-5213-6469 identifiers: - - identifier: https://orcid.org/0000-0001-5213-6469 + - identifier: 0000-0001-5213-6469 scheme: orcid - affiliations: - name: Northwestern University family_name: Zeman given_name: Charles + id: 0000-0001-5275-0469 identifiers: - - identifier: https://orcid.org/0000-0001-5275-0469 + - identifier: 0000-0001-5275-0469 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Steinbach given_name: Bryan + id: 0000-0001-6544-7469 identifiers: - - identifier: https://orcid.org/0000-0001-6544-7469 + - identifier: 0000-0001-6544-7469 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Marcus given_name: Rudolph + id: 0000-0001-6547-1469 identifiers: - - identifier: https://orcid.org/0000-0001-6547-1469 + - identifier: 0000-0001-6547-1469 scheme: orcid - affiliations: - name: Northwestern University family_name: "L\xF3pez-Arteaga" given_name: Rafael + id: 0000-0001-8058-3469 identifiers: - - identifier: https://orcid.org/0000-0001-8058-3469 + - identifier: 0000-0001-8058-3469 scheme: orcid - affiliations: - name: Northwestern University family_name: Lu given_name: Ting + id: 0000-0001-8114-8469 identifiers: - - identifier: https://orcid.org/0000-0001-8114-8469 + - identifier: 0000-0001-8114-8469 scheme: orcid - affiliations: - name: Northwestern University family_name: Kalogera given_name: Vassiliki + id: 0000-0001-9236-5469 identifiers: - - identifier: https://orcid.org/0000-0001-9236-5469 + - identifier: 0000-0001-9236-5469 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Hoffmann given_name: Helene + id: 0000-0001-9376-3469 identifiers: - - identifier: https://orcid.org/0000-0001-9376-3469 + - identifier: 0000-0001-9376-3469 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Krauss given_name: Sandro + id: 0000-0003-2313-4469 identifiers: - - identifier: https://orcid.org/0000-0003-2313-4469 + - identifier: 0000-0003-2313-4469 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Mamis given_name: Edgars + id: 0000-0003-4276-5469 identifiers: - - identifier: https://orcid.org/0000-0003-4276-5469 + - identifier: 0000-0003-4276-5469 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Eter given_name: Nicole + id: 0000-0001-5617-346X identifiers: - - identifier: https://orcid.org/0000-0001-5617-346X + - identifier: 0000-0001-5617-346X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Graziani given_name: Giacomo + id: 0000-0001-8212-846X identifiers: - - identifier: https://orcid.org/0000-0001-8212-846X + - identifier: 0000-0001-8212-846X scheme: orcid - affiliations: - name: University of Bamberg - name: GESIS Leibniz-Institut fur Sozialwissenschaften in Koln family_name: Schwemmer given_name: Carsten + id: 0000-0001-9084-946X identifiers: - - identifier: https://orcid.org/0000-0001-9084-946X + - identifier: 0000-0001-9084-946X scheme: orcid - affiliations: - name: TU Wien family_name: Bartik given_name: Alexander + id: 0000-0001-9350-546X identifiers: - - identifier: https://orcid.org/0000-0001-9350-546X + - identifier: 0000-0001-9350-546X scheme: orcid - affiliations: - name: TU Wien - name: Wienerberger AG family_name: Fasching given_name: Stephan + id: 0000-0002-0102-646X identifiers: - - identifier: https://orcid.org/0000-0002-0102-646X + - identifier: 0000-0002-0102-646X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Papa given_name: Massimo + id: 0000-0002-2139-346X identifiers: - - identifier: https://orcid.org/0000-0002-2139-346X + - identifier: 0000-0002-2139-346X scheme: orcid - affiliations: - name: University of Fribourg - name: University Hospitals of Geneva family_name: Cullati given_name: Stephane + id: 0000-0002-3881-446X identifiers: - - identifier: https://orcid.org/0000-0002-3881-446X + - identifier: 0000-0002-3881-446X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Podgorelec given_name: "Bla\u017E" + id: 0000-0002-6322-746X identifiers: - - identifier: https://orcid.org/0000-0002-6322-746X + - identifier: 0000-0002-6322-746X scheme: orcid - affiliations: - name: Northwestern University family_name: Barbieri given_name: Elena + id: 0000-0002-7303-846X identifiers: - - identifier: https://orcid.org/0000-0002-7303-846X + - identifier: 0000-0002-7303-846X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Losurdo given_name: Giovanni + id: 0000-0003-0452-746X identifiers: - - identifier: https://orcid.org/0000-0003-0452-746X + - identifier: 0000-0003-0452-746X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Evans given_name: Carla Verna + id: 0000-0001-5312-5470 identifiers: - - identifier: https://orcid.org/0000-0001-5312-5470 + - identifier: 0000-0001-5312-5470 scheme: orcid - affiliations: - name: TU Wien family_name: "K\xFChn" given_name: eva + id: 0000-0001-5224-5470 identifiers: - - identifier: https://orcid.org/0000-0001-5224-5470 + - identifier: 0000-0001-5224-5470 scheme: orcid - affiliations: - name: Northwestern University family_name: Shirman given_name: Sasha + id: 0000-0001-5855-9470 identifiers: - - identifier: https://orcid.org/0000-0001-5855-9470 + - identifier: 0000-0001-5855-9470 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Eldred given_name: Rosona + id: 0000-0002-2127-1470 identifiers: - - identifier: https://orcid.org/0000-0002-2127-1470 + - identifier: 0000-0002-2127-1470 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Pereira Sena given_name: Priscila + id: 0000-0002-2061-5470 identifiers: - - identifier: https://orcid.org/0000-0002-2061-5470 + - identifier: 0000-0002-2061-5470 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Haoyu + id: 0000-0002-7192-2470 identifiers: - - identifier: https://orcid.org/0000-0002-7192-2470 + - identifier: 0000-0002-7192-2470 scheme: orcid - affiliations: - name: University of Fribourg family_name: "M\xFCller-Sch\xE4rer" given_name: heinz + id: 0000-0003-0936-1470 identifiers: - - identifier: https://orcid.org/0000-0003-0936-1470 + - identifier: 0000-0003-0936-1470 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Streckenbach given_name: Andrea + id: 0000-0003-2135-2470 identifiers: - - identifier: https://orcid.org/0000-0003-2135-2470 + - identifier: 0000-0003-2135-2470 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Hajek given_name: Elias + id: 0000-0003-4908-0470 identifiers: - - identifier: https://orcid.org/0000-0003-4908-0470 + - identifier: 0000-0003-4908-0470 scheme: orcid - affiliations: - name: "Universit\xE4t Freiburg" family_name: Sipple given_name: David + id: 0000-0001-6505-8471 identifiers: - - identifier: https://orcid.org/0000-0001-6505-8471 + - identifier: 0000-0001-6505-8471 scheme: orcid - affiliations: - name: University of Bamberg family_name: Watson given_name: Donald + id: 0000-0001-7373-6471 identifiers: - - identifier: https://orcid.org/0000-0001-7373-6471 + - identifier: 0000-0001-7373-6471 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Junghans given_name: Arnd + id: 0000-0001-7703-2471 identifiers: - - identifier: https://orcid.org/0000-0001-7703-2471 + - identifier: 0000-0001-7703-2471 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Yunxuan + id: 0000-0001-9004-2471 identifiers: - - identifier: https://orcid.org/0000-0001-9004-2471 + - identifier: 0000-0001-9004-2471 scheme: orcid - affiliations: - name: Northwestern University family_name: Somireddy Venkata given_name: Bharat + id: 0000-0001-9926-6471 identifiers: - - identifier: https://orcid.org/0000-0001-9926-6471 + - identifier: 0000-0001-9926-6471 scheme: orcid - affiliations: - name: CERN family_name: Serrano given_name: Javier + id: 0000-0002-0522-4471 identifiers: - - identifier: https://orcid.org/0000-0002-0522-4471 + - identifier: 0000-0002-0522-4471 scheme: orcid - affiliations: - name: Northwestern University family_name: Lueptow given_name: Richard + id: 0000-0002-1855-1471 identifiers: - - identifier: https://orcid.org/0000-0002-1855-1471 + - identifier: 0000-0002-1855-1471 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Hiesl given_name: Albert + id: 0000-0002-3381-5471 identifiers: - - identifier: https://orcid.org/0000-0002-3381-5471 + - identifier: 0000-0002-3381-5471 scheme: orcid - affiliations: - name: CERN family_name: Devlin given_name: Jack + id: 0000-0002-4448-5471 identifiers: - - identifier: https://orcid.org/0000-0002-4448-5471 + - identifier: 0000-0002-4448-5471 scheme: orcid - affiliations: - name: CERN family_name: Gouskos given_name: Loukas + id: 0000-0002-9547-7471 identifiers: - - identifier: https://orcid.org/0000-0002-9547-7471 + - identifier: 0000-0002-9547-7471 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yu given_name: Ke + id: 0000-0003-0157-4471 identifiers: - - identifier: https://orcid.org/0000-0003-0157-4471 + - identifier: 0000-0003-0157-4471 scheme: orcid - affiliations: - name: University of Fribourg family_name: Kremer given_name: Geoffroy + id: 0000-0003-1753-3471 identifiers: - - identifier: https://orcid.org/0000-0003-1753-3471 + - identifier: 0000-0003-1753-3471 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Corti given_name: Gloria + id: 0000-0003-2857-4471 identifiers: - - identifier: https://orcid.org/0000-0003-2857-4471 + - identifier: 0000-0003-2857-4471 scheme: orcid - affiliations: - name: Northwestern University family_name: Anthony given_name: Nicholas + id: 0000-0003-2882-2471 identifiers: - - identifier: https://orcid.org/0000-0003-2882-2471 + - identifier: 0000-0003-2882-2471 scheme: orcid - affiliations: - name: TU Wien family_name: Pichler given_name: Georg + id: 0000-0001-5696-4472 identifiers: - - identifier: https://orcid.org/0000-0001-5696-4472 + - identifier: 0000-0001-5696-4472 scheme: orcid - affiliations: - name: Northwestern University family_name: Alvarez-Saavedra given_name: Matias + id: 0000-0001-5921-7472 identifiers: - - identifier: https://orcid.org/0000-0001-5921-7472 + - identifier: 0000-0001-5921-7472 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: University of South Florida family_name: Arena given_name: Dario + id: 0000-0001-7463-6472 identifiers: - - identifier: https://orcid.org/0000-0001-7463-6472 + - identifier: 0000-0001-7463-6472 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Saliwanchik given_name: Benjamin + id: 0000-0002-5089-7472 identifiers: - - identifier: https://orcid.org/0000-0002-5089-7472 + - identifier: 0000-0002-5089-7472 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhou given_name: Alan + id: 0000-0002-6177-2472 identifiers: - - identifier: https://orcid.org/0000-0002-6177-2472 + - identifier: 0000-0002-6177-2472 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Brezina given_name: Tadej + id: 0000-0003-4865-9472 identifiers: - - identifier: https://orcid.org/0000-0003-4865-9472 + - identifier: 0000-0003-4865-9472 scheme: orcid - affiliations: - name: Medical University of Vienna - name: TU Wien family_name: Licandro given_name: Roxane + id: 0000-0001-9066-4473 identifiers: - - identifier: https://orcid.org/0000-0001-9066-4473 + - identifier: 0000-0001-9066-4473 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "B\xF6hm" given_name: Johannes + id: 0000-0002-1208-5473 identifiers: - - identifier: https://orcid.org/0000-0002-1208-5473 + - identifier: 0000-0002-1208-5473 scheme: orcid - affiliations: - name: Northwestern University family_name: Kang given_name: Mengjia + id: 0000-0002-1679-9473 identifiers: - - identifier: https://orcid.org/0000-0002-1679-9473 + - identifier: 0000-0002-1679-9473 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Frust given_name: Tobias + id: 0000-0002-5590-7473 identifiers: - - identifier: https://orcid.org/0000-0002-5590-7473 + - identifier: 0000-0002-5590-7473 scheme: orcid - affiliations: - name: CERN family_name: Miralles Verge given_name: Luis Secundino + id: 0000-0002-6129-0473 identifiers: - - identifier: https://orcid.org/0000-0002-6129-0473 + - identifier: 0000-0002-6129-0473 scheme: orcid - affiliations: - name: Northwestern University - name: Center for Hierarchical Materials Design (CHiMaD) family_name: Gulsoy given_name: Emine + id: 0000-0002-8182-2473 identifiers: - - identifier: https://orcid.org/0000-0002-8182-2473 + - identifier: 0000-0002-8182-2473 scheme: orcid - affiliations: - name: Northwestern University family_name: Alexander given_name: Kate + id: 0000-0002-8297-2473 identifiers: - - identifier: https://orcid.org/0000-0002-8297-2473 + - identifier: 0000-0002-8297-2473 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Caucal given_name: Paul + id: 0000-0002-9033-1473 identifiers: - - identifier: https://orcid.org/0000-0002-9033-1473 + - identifier: 0000-0002-9033-1473 scheme: orcid - affiliations: - name: University of Fribourg family_name: Conder given_name: Joanna + id: 0000-0002-9275-9473 identifiers: - - identifier: https://orcid.org/0000-0002-9275-9473 + - identifier: 0000-0002-9275-9473 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Silvestri given_name: Antonio + id: 0000-0001-5672-6474 identifiers: - - identifier: https://orcid.org/0000-0001-5672-6474 + - identifier: 0000-0001-5672-6474 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Stony Brook University family_name: Marschilok given_name: Amy + id: 0000-0001-9174-0474 identifiers: - - identifier: https://orcid.org/0000-0001-9174-0474 + - identifier: 0000-0001-9174-0474 scheme: orcid - affiliations: - name: TU Wien family_name: Sibenik given_name: Goran + id: 0000-0001-9869-4474 identifiers: - - identifier: https://orcid.org/0000-0001-9869-4474 + - identifier: 0000-0001-9869-4474 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Dafert given_name: Manuel + id: 0000-0002-3273-3474 identifiers: - - identifier: https://orcid.org/0000-0002-3273-3474 + - identifier: 0000-0002-3273-3474 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Dellert given_name: Torge + id: 0000-0002-7475-7474 identifiers: - - identifier: https://orcid.org/0000-0002-7475-7474 + - identifier: 0000-0002-7475-7474 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Mutschke given_name: Gerd + id: 0000-0002-7918-7474 identifiers: - - identifier: https://orcid.org/0000-0002-7918-7474 + - identifier: 0000-0002-7918-7474 scheme: orcid - affiliations: - name: University of California Santa Barbara - name: Northwestern University family_name: Seo given_name: Soyoung + id: 0000-0003-1593-4474 identifiers: - - identifier: https://orcid.org/0000-0003-1593-4474 + - identifier: 0000-0003-1593-4474 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Garten given_name: Marco + id: 0000-0001-6994-2475 identifiers: - - identifier: https://orcid.org/0000-0001-6994-2475 + - identifier: 0000-0001-6994-2475 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Sauerwein given_name: Tessa + id: 0000-0001-7372-2475 identifiers: - - identifier: https://orcid.org/0000-0001-7372-2475 + - identifier: 0000-0001-7372-2475 scheme: orcid - affiliations: - name: Northwestern University family_name: Davidson given_name: Alyssa + id: 0000-0001-9642-2475 identifiers: - - identifier: https://orcid.org/0000-0001-9642-2475 + - identifier: 0000-0001-9642-2475 scheme: orcid - affiliations: - name: Northwestern University family_name: Proszek given_name: James + id: 0000-0001-9936-7475 identifiers: - - identifier: https://orcid.org/0000-0001-9936-7475 + - identifier: 0000-0001-9936-7475 scheme: orcid - affiliations: - name: Northwestern University family_name: Paulsen given_name: Bryan + id: 0000-0002-0923-8475 identifiers: - - identifier: https://orcid.org/0000-0002-0923-8475 + - identifier: 0000-0002-0923-8475 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Whittaker given_name: Emily + id: 0000-0002-1518-7475 identifiers: - - identifier: https://orcid.org/0000-0002-1518-7475 + - identifier: 0000-0002-1518-7475 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Jingjing + id: 0000-0002-2600-3475 identifiers: - - identifier: https://orcid.org/0000-0002-2600-3475 + - identifier: 0000-0002-2600-3475 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: aschenauer given_name: elke-caroline + id: 0000-0002-3856-5475 identifiers: - - identifier: https://orcid.org/0000-0002-3856-5475 + - identifier: 0000-0002-3856-5475 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Fuchs given_name: Josef + id: 0000-0002-4627-4475 identifiers: - - identifier: https://orcid.org/0000-0002-4627-4475 + - identifier: 0000-0002-4627-4475 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Sp\xE4te" given_name: Katrin + id: 0000-0002-5291-4475 identifiers: - - identifier: https://orcid.org/0000-0002-5291-4475 + - identifier: 0000-0002-5291-4475 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhang given_name: Yugang + id: 0000-0002-7832-1475 identifiers: - - identifier: https://orcid.org/0000-0002-7832-1475 + - identifier: 0000-0002-7832-1475 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Northeastern University family_name: Wang given_name: Bingran + id: 0000-0003-0796-2475 identifiers: - - identifier: https://orcid.org/0000-0003-0796-2475 + - identifier: 0000-0003-0796-2475 scheme: orcid - affiliations: - name: University of Fribourg family_name: Hauck given_name: Christian + id: 0000-0003-4488-6475 identifiers: - - identifier: https://orcid.org/0000-0003-4488-6475 + - identifier: 0000-0003-4488-6475 scheme: orcid - affiliations: - name: Northwestern University family_name: Umbanhowar given_name: Paul + id: 0000-0001-6921-7476 identifiers: - - identifier: https://orcid.org/0000-0001-6921-7476 + - identifier: 0000-0001-6921-7476 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fogarty given_name: Kevin + id: 0000-0002-2691-2476 identifiers: - - identifier: https://orcid.org/0000-0002-2691-2476 + - identifier: 0000-0002-2691-2476 scheme: orcid - affiliations: - name: Northwestern University family_name: Woodruff Carr given_name: Kali + id: 0000-0002-3142-0476 identifiers: - - identifier: https://orcid.org/0000-0002-3142-0476 + - identifier: 0000-0002-3142-0476 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hsin given_name: Po-Shen + id: 0000-0002-4764-1476 identifiers: - - identifier: https://orcid.org/0000-0002-4764-1476 + - identifier: 0000-0002-4764-1476 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cohen given_name: Yair + id: 0000-0002-9615-2476 identifiers: - - identifier: https://orcid.org/0000-0002-9615-2476 + - identifier: 0000-0002-9615-2476 scheme: orcid - affiliations: - name: Northwestern University family_name: Aranda given_name: Marcos + id: 0000-0003-1891-3476 identifiers: - - identifier: https://orcid.org/0000-0003-1891-3476 + - identifier: 0000-0003-1891-3476 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: National Technical University of Ukraine Kiev Polytechnic Institute family_name: Svirin given_name: Pavlo + id: 0000-0003-3914-0476 identifiers: - - identifier: https://orcid.org/0000-0003-3914-0476 + - identifier: 0000-0003-3914-0476 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Davis given_name: Mark E. + id: 0000-0001-8294-1477 identifiers: - - identifier: https://orcid.org/0000-0001-8294-1477 + - identifier: 0000-0001-8294-1477 scheme: orcid - affiliations: - name: TU Wien family_name: Behal given_name: Patrick + id: 0000-0001-8785-7477 identifiers: - - identifier: https://orcid.org/0000-0001-8785-7477 + - identifier: 0000-0001-8785-7477 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mengaldo given_name: Gianmarco + id: 0000-0002-0157-5477 identifiers: - - identifier: https://orcid.org/0000-0002-0157-5477 + - identifier: 0000-0002-0157-5477 scheme: orcid - affiliations: - name: University of Fribourg family_name: Cangia' given_name: Flavia + id: 0000-0002-0830-4477 identifiers: - - identifier: https://orcid.org/0000-0002-0830-4477 + - identifier: 0000-0002-0830-4477 scheme: orcid - affiliations: - name: CERN family_name: Santos Diaz given_name: Pablo + id: 0000-0002-2674-8477 identifiers: - - identifier: https://orcid.org/0000-0002-2674-8477 + - identifier: 0000-0002-2674-8477 scheme: orcid - affiliations: - name: TU Wien family_name: "Ferm\xFCller" given_name: Christian + id: 0000-0003-2932-5477 identifiers: - - identifier: https://orcid.org/0000-0003-2932-5477 + - identifier: 0000-0003-2932-5477 scheme: orcid - affiliations: - name: Northwestern University - name: Shirley Ryan AbilityLab family_name: Park given_name: Seoung Hoon + id: 0000-0002-2148-1478 identifiers: - - identifier: https://orcid.org/0000-0002-2148-1478 + - identifier: 0000-0002-2148-1478 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yang given_name: Xiao-Qing + id: 0000-0002-3625-3478 identifiers: - - identifier: https://orcid.org/0000-0002-3625-3478 + - identifier: 0000-0002-3625-3478 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Keintzel given_name: Jacqueline + id: 0000-0003-1396-8478 identifiers: - - identifier: https://orcid.org/0000-0003-1396-8478 + - identifier: 0000-0003-1396-8478 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Vogl given_name: Thomas + id: 0000-0001-9669-7479 identifiers: - - identifier: https://orcid.org/0000-0001-9669-7479 + - identifier: 0000-0001-9669-7479 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare - name: Agenzia Spaziale Italiana family_name: Ciprini given_name: Stefano + id: 0000-0002-0712-2479 identifiers: - - identifier: https://orcid.org/0000-0002-0712-2479 + - identifier: 0000-0002-0712-2479 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Anania given_name: Maria Pia + id: 0000-0002-0738-4479 identifiers: - - identifier: https://orcid.org/0000-0002-0738-4479 + - identifier: 0000-0002-0738-4479 scheme: orcid - affiliations: - name: Massachusetts General Hospital - name: California Institute of Technology family_name: Lee given_name: Raymond + id: 0000-0002-8151-7479 identifiers: - - identifier: https://orcid.org/0000-0002-8151-7479 + - identifier: 0000-0002-8151-7479 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Xie given_name: Yan + id: 0000-0003-0543-5479 identifiers: - - identifier: https://orcid.org/0000-0003-0543-5479 + - identifier: 0000-0003-0543-5479 scheme: orcid - affiliations: - name: CERN family_name: Bertella given_name: Claudia + id: 0000-0002-3160-147X identifiers: - - identifier: https://orcid.org/0000-0002-3160-147X + - identifier: 0000-0002-3160-147X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Lechtenb\xF6rger" given_name: Jens + id: 0000-0002-3064-147X identifiers: - - identifier: https://orcid.org/0000-0002-3064-147X + - identifier: 0000-0002-3064-147X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Rothenberg given_name: Ellen + id: 0000-0002-3901-347X identifiers: - - identifier: https://orcid.org/0000-0002-3901-347X + - identifier: 0000-0002-3901-347X scheme: orcid - affiliations: - name: Northwestern University family_name: Brandes given_name: Cassandra + id: 0000-0002-8015-547X identifiers: - - identifier: https://orcid.org/0000-0002-8015-547X + - identifier: 0000-0002-8015-547X scheme: orcid - affiliations: - name: TU Wien family_name: "H\xF6henberger" given_name: Claudia + id: 0000-0002-8855-247X identifiers: - - identifier: https://orcid.org/0000-0002-8855-247X + - identifier: 0000-0002-8855-247X scheme: orcid - affiliations: - name: University of Bamberg family_name: Sucky given_name: Eric + id: 0000-0001-6197-4480 identifiers: - - identifier: https://orcid.org/0000-0001-6197-4480 + - identifier: 0000-0001-6197-4480 scheme: orcid - affiliations: - name: University of California - name: Istituto Nazionale di Fisica Nucleare family_name: Ferrara given_name: Sergio + id: 0000-0001-7662-3480 identifiers: - - identifier: https://orcid.org/0000-0001-7662-3480 + - identifier: 0000-0001-7662-3480 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pellegrino given_name: Fabio + id: 0000-0002-7073-2480 identifiers: - - identifier: https://orcid.org/0000-0002-7073-2480 + - identifier: 0000-0002-7073-2480 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Newman given_name: Harvey + id: 0000-0003-0964-1480 identifiers: - - identifier: https://orcid.org/0000-0003-0964-1480 + - identifier: 0000-0003-0964-1480 scheme: orcid - affiliations: - name: TU Wien family_name: Lindorfer given_name: Martina + id: 0000-0001-7001-4481 identifiers: - - identifier: https://orcid.org/0000-0001-7001-4481 + - identifier: 0000-0001-7001-4481 scheme: orcid - affiliations: - name: Northwestern University family_name: Braga-Pinto given_name: Cesar + id: 0000-0002-3143-8481 identifiers: - - identifier: https://orcid.org/0000-0002-3143-8481 + - identifier: 0000-0002-3143-8481 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Hernandez Acosta given_name: Uwe + id: 0000-0002-6182-1481 identifiers: - - identifier: https://orcid.org/0000-0002-6182-1481 + - identifier: 0000-0002-6182-1481 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: University of Cape Town family_name: Lee given_name: Christopher + id: 0000-0003-1010-1481 identifiers: - - identifier: https://orcid.org/0000-0003-1010-1481 + - identifier: 0000-0003-1010-1481 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Amschwand given_name: Dominik + id: 0000-0003-2179-1481 identifiers: - - identifier: https://orcid.org/0000-0003-2179-1481 + - identifier: 0000-0003-2179-1481 scheme: orcid - affiliations: - name: Graz University of Technology @@ -22785,723 +25954,824 @@ - name: AEE Institute for Sustainable Technologies family_name: "R\xFCdisser" given_name: Daniel + id: 0000-0003-3208-7481 identifiers: - - identifier: https://orcid.org/0000-0003-3208-7481 + - identifier: 0000-0003-3208-7481 scheme: orcid - affiliations: - name: Northwestern University family_name: Burley given_name: Paul + id: 0000-0001-7365-7482 identifiers: - - identifier: https://orcid.org/0000-0001-7365-7482 + - identifier: 0000-0001-7365-7482 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Institute of Nuclear Physics Polish Academy of Sciences family_name: Prochal given_name: "Bogus\u0142aw" + id: 0000-0001-7435-0482 identifiers: - - identifier: https://orcid.org/0000-0001-7435-0482 + - identifier: 0000-0001-7435-0482 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Bisoffi given_name: Giovanni + id: 0000-0001-9050-2482 identifiers: - - identifier: https://orcid.org/0000-0001-9050-2482 + - identifier: 0000-0001-9050-2482 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Drees given_name: Angelika + id: 0000-0002-0999-8482 identifiers: - - identifier: https://orcid.org/0000-0002-0999-8482 + - identifier: 0000-0002-0999-8482 scheme: orcid - affiliations: - name: Northwestern University family_name: Cook given_name: Amanda + id: 0000-0002-4478-5482 identifiers: - - identifier: https://orcid.org/0000-0002-4478-5482 + - identifier: 0000-0002-4478-5482 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Patsiou given_name: Theofania-Sotiria + id: 0000-0002-5108-8482 identifiers: - - identifier: https://orcid.org/0000-0002-5108-8482 + - identifier: 0000-0002-5108-8482 scheme: orcid - affiliations: - name: Northwestern University family_name: Conciatori given_name: Michael + id: 0000-0002-9045-8482 identifiers: - - identifier: https://orcid.org/0000-0002-9045-8482 + - identifier: 0000-0002-9045-8482 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Czekalla given_name: "Bj\xF6rn" + id: 0000-0002-9619-8482 identifiers: - - identifier: https://orcid.org/0000-0002-9619-8482 + - identifier: 0000-0002-9619-8482 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Laher given_name: Russ + id: 0000-0003-2451-5482 identifiers: - - identifier: https://orcid.org/0000-0003-2451-5482 + - identifier: 0000-0003-2451-5482 scheme: orcid - affiliations: - name: TU Wien family_name: Kregsamer given_name: Peter + id: 0000-0002-3500-6483 identifiers: - - identifier: https://orcid.org/0000-0002-3500-6483 + - identifier: 0000-0002-3500-6483 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ochs given_name: Carli + id: 0000-0002-5348-2483 identifiers: - - identifier: https://orcid.org/0000-0002-5348-2483 + - identifier: 0000-0002-5348-2483 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Stoel given_name: Linda + id: 0000-0002-9780-5483 identifiers: - - identifier: https://orcid.org/0000-0002-9780-5483 + - identifier: 0000-0002-9780-5483 scheme: orcid - affiliations: - name: Northwestern University family_name: Koning given_name: Stephanie + id: 0000-0003-0673-2483 identifiers: - - identifier: https://orcid.org/0000-0003-0673-2483 + - identifier: 0000-0003-0673-2483 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Gaugl given_name: Robert + id: 0000-0003-4112-4483 identifiers: - - identifier: https://orcid.org/0000-0003-4112-4483 + - identifier: 0000-0003-4112-4483 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hu given_name: Wen + id: 0000-0003-4936-1483 identifiers: - - identifier: https://orcid.org/0000-0003-4936-1483 + - identifier: 0000-0003-4936-1483 scheme: orcid - affiliations: - name: TU Wien family_name: Shariat given_name: Mahyar + id: 0000-0001-7932-7484 identifiers: - - identifier: https://orcid.org/0000-0001-7932-7484 + - identifier: 0000-0001-7932-7484 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Stucci given_name: Stefania + id: 0000-0002-1639-4484 identifiers: - - identifier: https://orcid.org/0000-0002-1639-4484 + - identifier: 0000-0002-1639-4484 scheme: orcid - affiliations: - name: Northwestern University family_name: Kozorovitskiy given_name: Yevgenia + id: 0000-0002-3710-1484 identifiers: - - identifier: https://orcid.org/0000-0002-3710-1484 + - identifier: 0000-0002-3710-1484 scheme: orcid - affiliations: - name: Northwestern University family_name: Bullock given_name: John + id: 0000-0003-1023-3484 identifiers: - - identifier: https://orcid.org/0000-0003-1023-3484 + - identifier: 0000-0003-1023-3484 scheme: orcid - affiliations: - name: Northwestern Medicine - name: Northwestern University family_name: Mackie given_name: Melissa-Ann + id: 0000-0003-3261-9484 identifiers: - - identifier: https://orcid.org/0000-0003-3261-9484 + - identifier: 0000-0003-3261-9484 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: ramakrishna given_name: kushal + id: 0000-0003-4211-2484 identifiers: - - identifier: https://orcid.org/0000-0003-4211-2484 + - identifier: 0000-0003-4211-2484 scheme: orcid - affiliations: - name: Northwestern University family_name: Rivnay given_name: Jonathan + id: 0000-0002-0602-6485 identifiers: - - identifier: https://orcid.org/0000-0002-0602-6485 + - identifier: 0000-0002-0602-6485 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Doyle given_name: John + id: 0000-0002-1828-2486 identifiers: - - identifier: https://orcid.org/0000-0002-1828-2486 + - identifier: 0000-0002-1828-2486 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bieli given_name: Melanie + id: 0000-0002-2056-9486 identifiers: - - identifier: https://orcid.org/0000-0002-2056-9486 + - identifier: 0000-0002-2056-9486 scheme: orcid - affiliations: - name: University of Bamberg family_name: "Gr\xFCter" given_name: Martina + id: 0000-0002-2784-0486 identifiers: - - identifier: https://orcid.org/0000-0002-2784-0486 + - identifier: 0000-0002-2784-0486 scheme: orcid - affiliations: - name: Northwestern Medicine - name: Northwestern University family_name: Ma given_name: Shuo + id: 0000-0002-6139-5486 identifiers: - - identifier: https://orcid.org/0000-0002-6139-5486 + - identifier: 0000-0002-6139-5486 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "K\xFCbler" given_name: Marie + id: 0000-0002-6373-7486 identifiers: - - identifier: https://orcid.org/0000-0002-6373-7486 + - identifier: 0000-0002-6373-7486 scheme: orcid - affiliations: - name: TU Wien family_name: Steindl given_name: Alois + id: 0000-0002-6813-2486 identifiers: - - identifier: https://orcid.org/0000-0002-6813-2486 + - identifier: 0000-0002-6813-2486 scheme: orcid - affiliations: - name: Northwestern University - name: Cornell University family_name: Aristilde given_name: Ludmilla + id: 0000-0002-8566-1486 identifiers: - - identifier: https://orcid.org/0000-0002-8566-1486 + - identifier: 0000-0002-8566-1486 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Garcia given_name: Fernando + id: 0000-0003-4507-0486 identifiers: - - identifier: https://orcid.org/0000-0003-4507-0486 + - identifier: 0000-0003-4507-0486 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Herrera-Rivero given_name: Marisol + id: 0000-0001-7064-9487 identifiers: - - identifier: https://orcid.org/0000-0001-7064-9487 + - identifier: 0000-0001-7064-9487 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shulumba given_name: Nina + id: 0000-0002-2374-7487 identifiers: - - identifier: https://orcid.org/0000-0002-2374-7487 + - identifier: 0000-0002-2374-7487 scheme: orcid - affiliations: - name: University of Fribourg family_name: Gray given_name: Sarah + id: 0000-0002-4025-6487 identifiers: - - identifier: https://orcid.org/0000-0002-4025-6487 + - identifier: 0000-0002-4025-6487 scheme: orcid - affiliations: - name: Northwestern University family_name: Shirley given_name: Christopher + id: 0000-0002-4935-7487 identifiers: - - identifier: https://orcid.org/0000-0002-4935-7487 + - identifier: 0000-0002-4935-7487 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Bernhard given_name: Christian + id: 0000-0002-9957-3487 identifiers: - - identifier: https://orcid.org/0000-0002-9957-3487 + - identifier: 0000-0002-9957-3487 scheme: orcid - affiliations: - name: University of Bamberg family_name: Kostyrko given_name: "Miko\u0142aj" + id: 0000-0003-0388-6487 identifiers: - - identifier: https://orcid.org/0000-0003-0388-6487 + - identifier: 0000-0003-0388-6487 scheme: orcid - affiliations: - name: TU Wien family_name: Wolfsteiner given_name: Simon + id: 0000-0003-0459-8487 identifiers: - - identifier: https://orcid.org/0000-0003-0459-8487 + - identifier: 0000-0003-0459-8487 scheme: orcid - affiliations: - name: University of Fribourg family_name: Buhler given_name: Leo + id: 0000-0003-2572-7487 identifiers: - - identifier: https://orcid.org/0000-0003-2572-7487 + - identifier: 0000-0003-2572-7487 scheme: orcid - affiliations: - name: TU Wien - name: Masaryk University family_name: "Kou\u0159il" given_name: David + id: 0000-0003-4043-3487 identifiers: - - identifier: https://orcid.org/0000-0003-4043-3487 + - identifier: 0000-0003-4043-3487 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Stampfer given_name: Bernhard + id: 0000-0001-5424-7488 identifiers: - - identifier: https://orcid.org/0000-0001-5424-7488 + - identifier: 0000-0001-5424-7488 scheme: orcid - affiliations: - name: Northwestern University family_name: Carrasco given_name: John Joseph + id: 0000-0002-4499-8488 identifiers: - - identifier: https://orcid.org/0000-0002-4499-8488 + - identifier: 0000-0002-4499-8488 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Castillo given_name: Nayari + id: 0000-0002-6271-5488 identifiers: - - identifier: https://orcid.org/0000-0002-6271-5488 + - identifier: 0000-0002-6271-5488 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Zherlitsyn given_name: Sergei + id: 0000-0003-0320-6488 identifiers: - - identifier: https://orcid.org/0000-0003-0320-6488 + - identifier: 0000-0003-0320-6488 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Katsumata given_name: Shin-ya + id: 0000-0001-7529-5489 identifiers: - - identifier: https://orcid.org/0000-0001-7529-5489 + - identifier: 0000-0001-7529-5489 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Nielsen given_name: Lars Holm + id: 0000-0001-8135-3489 identifiers: - - identifier: https://orcid.org/0000-0001-8135-3489 + - identifier: 0000-0001-8135-3489 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Bahmanibohlou given_name: Mohammad Amin + id: 0000-0001-8777-1489 identifiers: - - identifier: https://orcid.org/0000-0001-8777-1489 + - identifier: 0000-0001-8777-1489 scheme: orcid - affiliations: - name: CERN - name: University of Pittsburgh family_name: Bandieramonte given_name: Marilena + id: 0000-0003-2014-9489 identifiers: - - identifier: https://orcid.org/0000-0003-2014-9489 + - identifier: 0000-0003-2014-9489 scheme: orcid - affiliations: - name: Northwestern University family_name: Ottino given_name: Julio + id: 0000-0003-4813-3489 identifiers: - - identifier: https://orcid.org/0000-0003-4813-3489 + - identifier: 0000-0003-4813-3489 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Gassner given_name: David + id: 0000-0001-5346-048X identifiers: - - identifier: https://orcid.org/0000-0001-5346-048X + - identifier: 0000-0001-5346-048X scheme: orcid - affiliations: - name: CERN family_name: Pfeiffer given_name: Andreas + id: 0000-0001-5328-448X identifiers: - - identifier: https://orcid.org/0000-0001-5328-448X + - identifier: 0000-0001-5328-448X scheme: orcid - affiliations: - name: Northwestern University family_name: Lackey given_name: Jennifer + id: 0000-0001-7754-248X identifiers: - - identifier: https://orcid.org/0000-0001-7754-248X + - identifier: 0000-0001-7754-248X scheme: orcid - affiliations: - name: Northwestern University family_name: Song given_name: Bo + id: 0000-0002-4337-848X identifiers: - - identifier: https://orcid.org/0000-0002-4337-848X + - identifier: 0000-0002-4337-848X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hensel given_name: Silke + id: 0000-0003-4348-348X identifiers: - - identifier: https://orcid.org/0000-0003-4348-348X + - identifier: 0000-0003-4348-348X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schlepphorst given_name: Christoph + id: 0000-0002-1119-0490 identifiers: - - identifier: https://orcid.org/0000-0002-1119-0490 + - identifier: 0000-0002-1119-0490 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Stoeckl given_name: Bernhard + id: 0000-0002-2219-9490 identifiers: - - identifier: https://orcid.org/0000-0002-2219-9490 + - identifier: 0000-0002-2219-9490 scheme: orcid - affiliations: - name: Northwestern University family_name: Liang given_name: Yifei + id: 0000-0002-4841-3491 identifiers: - - identifier: https://orcid.org/0000-0002-4841-3491 + - identifier: 0000-0002-4841-3491 scheme: orcid - affiliations: - name: Southern Illinois University Carbondale - name: Northwestern University family_name: Deria given_name: Pravas + id: 0000-0001-7998-4492 identifiers: - - identifier: https://orcid.org/0000-0001-7998-4492 + - identifier: 0000-0001-7998-4492 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Walther given_name: Martin + id: 0000-0002-0474-8492 identifiers: - - identifier: https://orcid.org/0000-0002-0474-8492 + - identifier: 0000-0002-0474-8492 scheme: orcid - affiliations: - name: Northwestern University - name: Shirley Ryan AbilityLab family_name: Argall given_name: Brenna + id: 0000-0002-4280-8492 identifiers: - - identifier: https://orcid.org/0000-0002-4280-8492 + - identifier: 0000-0002-4280-8492 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Dong given_name: Guannan + id: 0000-0002-6844-2492 identifiers: - - identifier: https://orcid.org/0000-0002-6844-2492 + - identifier: 0000-0002-6844-2492 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Victor given_name: Tiffany + id: 0000-0003-3713-7492 identifiers: - - identifier: https://orcid.org/0000-0003-3713-7492 + - identifier: 0000-0003-3713-7492 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Dresden" - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Pietzsch given_name: Jens + id: 0000-0002-1610-1493 identifiers: - - identifier: https://orcid.org/0000-0002-1610-1493 + - identifier: 0000-0002-1610-1493 scheme: orcid - affiliations: - name: TU Wien - name: Climate Change Centre - Data Centre family_name: Schubert given_name: Chris + id: 0000-0002-4971-2493 identifiers: - - identifier: https://orcid.org/0000-0002-4971-2493 + - identifier: 0000-0002-4971-2493 scheme: orcid - affiliations: - name: CERN family_name: James given_name: Frederick + id: 0000-0003-2928-8493 identifiers: - - identifier: https://orcid.org/0000-0003-2928-8493 + - identifier: 0000-0003-2928-8493 scheme: orcid - affiliations: - name: CERN family_name: Reich given_name: Bianca Bettina + id: 0000-0001-7041-8494 identifiers: - - identifier: https://orcid.org/0000-0001-7041-8494 + - identifier: 0000-0001-7041-8494 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bonvin given_name: Raphael + id: 0000-0001-9322-2494 identifiers: - - identifier: https://orcid.org/0000-0001-9322-2494 + - identifier: 0000-0001-9322-2494 scheme: orcid - affiliations: - name: University of Fribourg family_name: De Vrieze given_name: Mout + id: 0000-0002-7295-2495 identifiers: - - identifier: https://orcid.org/0000-0002-7295-2495 + - identifier: 0000-0002-7295-2495 scheme: orcid - affiliations: - name: TU Wien family_name: Hradil given_name: Klaudia + id: 0000-0002-6989-2495 identifiers: - - identifier: https://orcid.org/0000-0002-6989-2495 + - identifier: 0000-0002-6989-2495 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Radebner given_name: Judith + id: 0000-0003-0902-2495 identifiers: - - identifier: https://orcid.org/0000-0003-0902-2495 + - identifier: 0000-0003-0902-2495 scheme: orcid - affiliations: - name: TU Wien family_name: Lemell given_name: Christoph + id: 0000-0003-2560-4495 identifiers: - - identifier: https://orcid.org/0000-0003-2560-4495 + - identifier: 0000-0003-2560-4495 scheme: orcid - affiliations: - name: Northwestern University family_name: Albaugh given_name: Michelle + id: 0000-0002-0594-8496 identifiers: - - identifier: https://orcid.org/0000-0002-0594-8496 + - identifier: 0000-0002-0594-8496 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Perro given_name: Alberto + id: 0000-0002-1996-0496 identifiers: - - identifier: https://orcid.org/0000-0002-1996-0496 + - identifier: 0000-0002-1996-0496 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Mohan Muralikrishna given_name: G. + id: 0000-0002-5841-7496 identifiers: - - identifier: https://orcid.org/0000-0002-5841-7496 + - identifier: 0000-0002-5841-7496 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Lai given_name: Adriano + id: 0000-0003-1633-0496 identifiers: - - identifier: https://orcid.org/0000-0003-1633-0496 + - identifier: 0000-0003-1633-0496 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Ekaputra given_name: Fajar J. + id: 0000-0003-4569-2496 identifiers: - - identifier: https://orcid.org/0000-0003-4569-2496 + - identifier: 0000-0003-4569-2496 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Czech Technical University in Prague family_name: "Mal\xFD" given_name: Pavel + id: 0000-0001-6370-2497 identifiers: - - identifier: https://orcid.org/0000-0001-6370-2497 + - identifier: 0000-0001-6370-2497 scheme: orcid - affiliations: - name: Utah State University - name: Northwestern University family_name: Phillips given_name: Colin + id: 0000-0001-9950-2497 identifiers: - - identifier: https://orcid.org/0000-0001-9950-2497 + - identifier: 0000-0001-9950-2497 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Prokofiev given_name: Andrey + id: 0000-0002-0577-3497 identifiers: - - identifier: https://orcid.org/0000-0002-0577-3497 + - identifier: 0000-0002-0577-3497 scheme: orcid - affiliations: - name: University of Maryland - name: Brookhaven National Laboratory family_name: Mueller given_name: Niklas + id: 0000-0002-1542-9497 identifiers: - - identifier: https://orcid.org/0000-0002-1542-9497 + - identifier: 0000-0002-1542-9497 scheme: orcid - affiliations: - name: University of Fribourg family_name: Lombard given_name: "Aliz\xE9e" + id: 0000-0002-6603-1497 identifiers: - - identifier: https://orcid.org/0000-0002-6603-1497 + - identifier: 0000-0002-6603-1497 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hung given_name: Shao-Min + id: 0000-0002-8908-1497 identifiers: - - identifier: https://orcid.org/0000-0002-8908-1497 + - identifier: 0000-0002-8908-1497 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Jensen given_name: Erk + id: 0000-0003-1201-8497 identifiers: - - identifier: https://orcid.org/0000-0003-1201-8497 + - identifier: 0000-0003-1201-8497 scheme: orcid - affiliations: - name: TU Wien family_name: Leitgeb given_name: Markus + id: 0000-0003-1609-4497 identifiers: - - identifier: https://orcid.org/0000-0003-1609-4497 + - identifier: 0000-0003-1609-4497 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Antolin given_name: Salome + id: 0000-0001-5426-0498 identifiers: - - identifier: https://orcid.org/0000-0001-5426-0498 + - identifier: 0000-0001-5426-0498 scheme: orcid - affiliations: - name: Northwestern University family_name: Thomas given_name: Alexandra C. + id: 0000-0002-3040-3498 identifiers: - - identifier: https://orcid.org/0000-0002-3040-3498 + - identifier: 0000-0002-3040-3498 scheme: orcid - affiliations: - name: University of Fribourg family_name: Karamash given_name: Maksym + id: 0000-0002-8099-6498 identifiers: - - identifier: https://orcid.org/0000-0002-8099-6498 + - identifier: 0000-0002-8099-6498 scheme: orcid - affiliations: - name: Northwestern University family_name: Greenwood given_name: John + id: 0000-0002-8565-8498 identifiers: - - identifier: https://orcid.org/0000-0002-8565-8498 + - identifier: 0000-0002-8565-8498 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: "K\xF6rner" given_name: Andreas + id: 0000-0002-9643-7498 identifiers: - - identifier: https://orcid.org/0000-0002-9643-7498 + - identifier: 0000-0002-9643-7498 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bischoff given_name: Lothar + id: 0000-0003-3968-7498 identifiers: - - identifier: https://orcid.org/0000-0003-3968-7498 + - identifier: 0000-0003-3968-7498 scheme: orcid - affiliations: - name: Northwestern University family_name: CHEN given_name: YAN + id: 0000-0003-4103-1498 identifiers: - - identifier: https://orcid.org/0000-0003-4103-1498 + - identifier: 0000-0003-4103-1498 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Ibraheem given_name: Issa + id: 0000-0002-6891-5499 identifiers: - - identifier: https://orcid.org/0000-0002-6891-5499 + - identifier: 0000-0002-6891-5499 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pineda given_name: Julio Marco + id: 0000-0002-9459-0499 identifiers: - - identifier: https://orcid.org/0000-0002-9459-0499 + - identifier: 0000-0002-9459-0499 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yeh given_name: Minfang + id: 0000-0003-2244-0499 identifiers: - - identifier: https://orcid.org/0000-0003-2244-0499 + - identifier: 0000-0003-2244-0499 scheme: orcid - affiliations: - name: University of Fribourg family_name: Dukes given_name: Daniel + id: 0000-0001-8360-849X identifiers: - - identifier: https://orcid.org/0000-0001-8360-849X + - identifier: 0000-0001-8360-849X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Wallner given_name: Michael + id: 0000-0001-8581-449X identifiers: - - identifier: https://orcid.org/0000-0001-8581-449X + - identifier: 0000-0001-8581-449X scheme: orcid - affiliations: - name: Astronomical Institute of the Czech Academy of Sciences - name: TU Wien family_name: Krasna given_name: Hana + id: 0000-0001-8660-649X identifiers: - - identifier: https://orcid.org/0000-0001-8660-649X + - identifier: 0000-0001-8660-649X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Anber given_name: Usama + id: 0000-0002-2763-149X identifiers: - - identifier: https://orcid.org/0000-0002-2763-149X + - identifier: 0000-0002-2763-149X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "D\xF6\xDF" given_name: Alexander + id: 0000-0002-4373-849X identifiers: - - identifier: https://orcid.org/0000-0002-4373-849X + - identifier: 0000-0002-4373-849X scheme: orcid - affiliations: - name: Northwestern University family_name: Soewardiman given_name: Henry + id: 0000-0002-5267-749X identifiers: - - identifier: https://orcid.org/0000-0002-5267-749X + - identifier: 0000-0002-5267-749X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Shami given_name: Muhammad Ali + id: 0000-0002-5598-249X identifiers: - - identifier: https://orcid.org/0000-0002-5598-249X + - identifier: 0000-0002-5598-249X scheme: orcid - affiliations: - name: Clemson University @@ -23509,115 +26779,131 @@ - name: Brookhaven National Laboratory family_name: Welch given_name: David + id: 0000-0003-0760-749X identifiers: - - identifier: https://orcid.org/0000-0003-0760-749X + - identifier: 0000-0003-0760-749X scheme: orcid - affiliations: - name: CERN family_name: Dosanjh given_name: Manjit + id: 0000-0003-1378-349X identifiers: - - identifier: https://orcid.org/0000-0003-1378-349X + - identifier: 0000-0003-1378-349X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Xiao given_name: Liting + id: 0000-0003-2703-449X identifiers: - - identifier: https://orcid.org/0000-0003-2703-449X + - identifier: 0000-0003-2703-449X scheme: orcid - affiliations: - name: Northwestern University family_name: Markovich given_name: Sarit + id: 0000-0002-5993-5500 identifiers: - - identifier: https://orcid.org/0000-0002-5993-5500 + - identifier: 0000-0002-5993-5500 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Beal given_name: Coline + id: 0000-0003-2132-1500 identifiers: - - identifier: https://orcid.org/0000-0003-2132-1500 + - identifier: 0000-0003-2132-1500 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Barbour given_name: Andi + id: 0000-0003-2631-7500 identifiers: - - identifier: https://orcid.org/0000-0003-2631-7500 + - identifier: 0000-0003-2631-7500 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Mayordomo given_name: Natalia + id: 0000-0003-4433-9500 identifiers: - - identifier: https://orcid.org/0000-0003-4433-9500 + - identifier: 0000-0003-4433-9500 scheme: orcid - affiliations: - name: TU Wien family_name: Kopittke given_name: Caroline + id: 0000-0002-1271-9501 identifiers: - - identifier: https://orcid.org/0000-0002-1271-9501 + - identifier: 0000-0002-1271-9501 scheme: orcid - affiliations: - name: Northwestern University - name: Ann and Robert H Lurie Children's Hospital of Chicago family_name: Robinson given_name: Joshua + id: 0000-0002-2129-5501 identifiers: - - identifier: https://orcid.org/0000-0002-2129-5501 + - identifier: 0000-0002-2129-5501 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "M\xFChlburger" given_name: Herbert + id: 0000-0002-7672-0501 identifiers: - - identifier: https://orcid.org/0000-0002-7672-0501 + - identifier: 0000-0002-7672-0501 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Baaz given_name: Matthias + id: 0000-0002-7815-2501 identifiers: - - identifier: https://orcid.org/0000-0002-7815-2501 + - identifier: 0000-0002-7815-2501 scheme: orcid - affiliations: - name: Northwestern University family_name: Da Silva given_name: Israel + id: 0000-0003-4260-1501 identifiers: - - identifier: https://orcid.org/0000-0003-4260-1501 + - identifier: 0000-0003-4260-1501 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ninova given_name: Maria + id: 0000-0001-5051-5502 identifiers: - - identifier: https://orcid.org/0000-0001-5051-5502 + - identifier: 0000-0001-5051-5502 scheme: orcid - affiliations: - name: Northwestern University family_name: Miller given_name: Kyle + id: 0000-0001-6083-6502 identifiers: - - identifier: https://orcid.org/0000-0001-6083-6502 + - identifier: 0000-0001-6083-6502 scheme: orcid - affiliations: - name: University of Fribourg family_name: Abe given_name: Jun + id: 0000-0001-7511-4502 identifiers: - - identifier: https://orcid.org/0000-0001-7511-4502 + - identifier: 0000-0001-7511-4502 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: "Leibniz-Institut f\xFCr Bildungsverl\xE4ufe" family_name: Artelt given_name: Cordula + id: 0000-0001-7790-2502 identifiers: - - identifier: https://orcid.org/0000-0001-7790-2502 + - identifier: 0000-0001-7790-2502 scheme: orcid - affiliations: - name: Federal Reserve Bank of Dallas @@ -23625,777 +26911,886 @@ - name: BANK OF ISRAEL family_name: Tzur-Ilan given_name: Nitzan + id: 0000-0001-9247-5502 identifiers: - - identifier: https://orcid.org/0000-0001-9247-5502 + - identifier: 0000-0001-9247-5502 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Booeshaghi given_name: Ali + id: 0000-0002-6442-4502 identifiers: - - identifier: https://orcid.org/0000-0002-6442-4502 + - identifier: 0000-0002-6442-4502 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Infantino given_name: Angelo + id: 0000-0002-7854-3502 identifiers: - - identifier: https://orcid.org/0000-0002-7854-3502 + - identifier: 0000-0002-7854-3502 scheme: orcid - affiliations: - name: CERN family_name: Wilkens given_name: Henric + id: 0000-0002-8483-9502 identifiers: - - identifier: https://orcid.org/0000-0002-8483-9502 + - identifier: 0000-0002-8483-9502 scheme: orcid - affiliations: - name: Northwestern University family_name: Dehmamy given_name: Nima + id: 0000-0003-1617-5502 identifiers: - - identifier: https://orcid.org/0000-0003-1617-5502 + - identifier: 0000-0003-1617-5502 scheme: orcid - affiliations: - name: TU Wien family_name: Schuh given_name: Daniel + id: 0000-0001-7602-2503 identifiers: - - identifier: https://orcid.org/0000-0001-7602-2503 + - identifier: 0000-0001-7602-2503 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Jaliliziyaeian given_name: Maryam + id: 0000-0001-9431-9503 identifiers: - - identifier: https://orcid.org/0000-0001-9431-9503 + - identifier: 0000-0001-9431-9503 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Katz given_name: Jonathan + id: 0000-0002-5287-3503 identifiers: - - identifier: https://orcid.org/0000-0002-5287-3503 + - identifier: 0000-0002-5287-3503 scheme: orcid - affiliations: - name: University of Fribourg family_name: Flatt given_name: Thomas + id: 0000-0002-5990-1503 identifiers: - - identifier: https://orcid.org/0000-0002-5990-1503 + - identifier: 0000-0002-5990-1503 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Soares given_name: Alexei + id: 0000-0002-6565-8503 identifiers: - - identifier: https://orcid.org/0000-0002-6565-8503 + - identifier: 0000-0002-6565-8503 scheme: orcid - affiliations: - name: Northwestern University family_name: Bustos given_name: Bernabe + id: 0000-0003-2679-9503 identifiers: - - identifier: https://orcid.org/0000-0003-2679-9503 + - identifier: 0000-0003-2679-9503 scheme: orcid - affiliations: - name: Northwestern University family_name: Rhee given_name: Dongjoon + id: 0000-0003-3613-7503 identifiers: - - identifier: https://orcid.org/0000-0003-3613-7503 + - identifier: 0000-0003-3613-7503 scheme: orcid - affiliations: - name: TU Wien family_name: Forster given_name: Julia + id: 0000-0001-7021-4504 identifiers: - - identifier: https://orcid.org/0000-0001-7021-4504 + - identifier: 0000-0001-7021-4504 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Sakoparnig given_name: Marlene + id: 0000-0001-8634-7504 identifiers: - - identifier: https://orcid.org/0000-0001-8634-7504 + - identifier: 0000-0001-8634-7504 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lamb given_name: Michael + id: 0000-0002-5701-0504 identifiers: - - identifier: https://orcid.org/0000-0002-5701-0504 + - identifier: 0000-0002-5701-0504 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schneider given_name: Harald + id: 0000-0002-8060-8504 identifiers: - - identifier: https://orcid.org/0000-0002-8060-8504 + - identifier: 0000-0002-8060-8504 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hsueh given_name: Chun-Jen + id: 0000-0001-6522-4505 identifiers: - - identifier: https://orcid.org/0000-0001-6522-4505 + - identifier: 0000-0001-6522-4505 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Meyer given_name: Aaron + id: 0000-0001-7937-8505 identifiers: - - identifier: https://orcid.org/0000-0001-7937-8505 + - identifier: 0000-0001-7937-8505 scheme: orcid - affiliations: - name: Northwestern University family_name: Lucks given_name: Julius + id: 0000-0002-0619-6505 identifiers: - - identifier: https://orcid.org/0000-0002-0619-6505 + - identifier: 0000-0002-0619-6505 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Gehrlein given_name: Julia + id: 0000-0002-1235-0505 identifiers: - - identifier: https://orcid.org/0000-0002-1235-0505 + - identifier: 0000-0002-1235-0505 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: De Cataldo given_name: Giacinto + id: 0000-0002-3220-4505 identifiers: - - identifier: https://orcid.org/0000-0002-3220-4505 + - identifier: 0000-0002-3220-4505 scheme: orcid - affiliations: - name: TU Wien family_name: Schrammel given_name: Michael + id: 0000-0002-4246-1505 identifiers: - - identifier: https://orcid.org/0000-0002-4246-1505 + - identifier: 0000-0002-4246-1505 scheme: orcid - affiliations: - name: Northwestern University family_name: Stolz given_name: Jacob + id: 0000-0002-4323-7505 identifiers: - - identifier: https://orcid.org/0000-0002-4323-7505 + - identifier: 0000-0002-4323-7505 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shirzaei Sani given_name: Ehsan + id: 0000-0002-4609-1505 identifiers: - - identifier: https://orcid.org/0000-0002-4609-1505 + - identifier: 0000-0002-4609-1505 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: Epoka University family_name: Dervishi given_name: Sokol + id: 0000-0003-0906-4505 identifiers: - - identifier: https://orcid.org/0000-0003-0906-4505 + - identifier: 0000-0003-0906-4505 scheme: orcid - affiliations: - name: University of Fribourg family_name: Prsa given_name: Mario + id: 0000-0001-5012-2506 identifiers: - - identifier: https://orcid.org/0000-0001-5012-2506 + - identifier: 0000-0001-5012-2506 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Saba given_name: Matthias + id: 0000-0001-5281-4506 identifiers: - - identifier: https://orcid.org/0000-0001-5281-4506 + - identifier: 0000-0001-5281-4506 scheme: orcid - affiliations: - name: Saint Louis Public Library - name: Northwestern University family_name: Parrish given_name: Dru + id: 0000-0001-5417-4506 identifiers: - - identifier: https://orcid.org/0000-0001-5417-4506 + - identifier: 0000-0001-5417-4506 scheme: orcid - affiliations: - name: National Institute of Informatics - name: Ecole centrale de Nantes family_name: Magnin given_name: Morgan + id: 0000-0001-5443-0506 identifiers: - - identifier: https://orcid.org/0000-0001-5443-0506 + - identifier: 0000-0001-5443-0506 scheme: orcid - affiliations: - name: Northwestern University family_name: Petry given_name: Carl + id: 0000-0001-7154-8506 identifiers: - - identifier: https://orcid.org/0000-0001-7154-8506 + - identifier: 0000-0001-7154-8506 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Haber given_name: Joel + id: 0000-0001-7847-5506 identifiers: - - identifier: https://orcid.org/0000-0001-7847-5506 + - identifier: 0000-0001-7847-5506 scheme: orcid - affiliations: - name: California Institute of Technology - name: LG Chem Ltd family_name: JANG given_name: JAEWAN + id: 0000-0003-0595-6506 identifiers: - - identifier: https://orcid.org/0000-0003-0595-6506 + - identifier: 0000-0003-0595-6506 scheme: orcid - affiliations: - name: University of Fribourg family_name: Wirz given_name: Dominique + id: 0000-0003-2688-8506 identifiers: - - identifier: https://orcid.org/0000-0003-2688-8506 + - identifier: 0000-0003-2688-8506 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Groom given_name: Steven + id: 0000-0001-5668-3507 identifiers: - - identifier: https://orcid.org/0000-0001-5668-3507 + - identifier: 0000-0001-5668-3507 scheme: orcid - affiliations: - name: TU Wien family_name: Wagner given_name: Richard + id: 0000-0001-8793-0507 identifiers: - - identifier: https://orcid.org/0000-0001-8793-0507 + - identifier: 0000-0001-8793-0507 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Mazzoli given_name: Claudio + id: 0000-0001-9774-1507 identifiers: - - identifier: https://orcid.org/0000-0001-9774-1507 + - identifier: 0000-0001-9774-1507 scheme: orcid - affiliations: - name: Northwestern University family_name: Haase given_name: Claudia + id: 0000-0002-0122-9507 identifiers: - - identifier: https://orcid.org/0000-0002-0122-9507 + - identifier: 0000-0002-0122-9507 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Thum given_name: Andreas + id: 0000-0002-2262-8507 identifiers: - - identifier: https://orcid.org/0000-0002-2262-8507 + - identifier: 0000-0002-2262-8507 scheme: orcid - affiliations: - name: CERN family_name: Chowdhury given_name: Borun + id: 0000-0002-7579-7507 identifiers: - - identifier: https://orcid.org/0000-0002-7579-7507 + - identifier: 0000-0002-7579-7507 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Legenstein given_name: Robert + id: 0000-0002-8724-5507 identifiers: - - identifier: https://orcid.org/0000-0002-8724-5507 + - identifier: 0000-0002-8724-5507 scheme: orcid - affiliations: - name: University of Bamberg family_name: Konrad-Ristau given_name: Kira + id: 0000-0001-9380-8508 identifiers: - - identifier: https://orcid.org/0000-0001-9380-8508 + - identifier: 0000-0001-9380-8508 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Gebel given_name: Michael + id: 0000-0002-8557-7508 identifiers: - - identifier: https://orcid.org/0000-0002-8557-7508 + - identifier: 0000-0002-8557-7508 scheme: orcid - affiliations: - name: Northwestern University family_name: Gonzalez Solveyra given_name: Estefania + id: 0000-0003-0226-9508 identifiers: - - identifier: https://orcid.org/0000-0003-0226-9508 + - identifier: 0000-0003-0226-9508 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Uin given_name: Janek + id: 0000-0003-2001-0508 identifiers: - - identifier: https://orcid.org/0000-0003-2001-0508 + - identifier: 0000-0003-2001-0508 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Clayton given_name: Robert + id: 0000-0003-3323-3508 identifiers: - - identifier: https://orcid.org/0000-0003-3323-3508 + - identifier: 0000-0003-3323-3508 scheme: orcid - affiliations: - name: Northwestern University family_name: Sui given_name: Xiaojing + id: 0000-0001-6986-0509 identifiers: - - identifier: https://orcid.org/0000-0001-6986-0509 + - identifier: 0000-0001-6986-0509 scheme: orcid - affiliations: - name: University of Fribourg family_name: Lattuada given_name: Marco + id: 0000-0001-7058-9509 identifiers: - - identifier: https://orcid.org/0000-0001-7058-9509 + - identifier: 0000-0001-7058-9509 scheme: orcid - affiliations: - name: Northwestern University family_name: Qiu given_name: Ruomeng + id: 0000-0001-7916-1509 identifiers: - - identifier: https://orcid.org/0000-0001-7916-1509 + - identifier: 0000-0001-7916-1509 scheme: orcid - affiliations: - name: University of Bamberg family_name: Lindner given_name: Konstantin + id: 0000-0002-1218-7509 identifiers: - - identifier: https://orcid.org/0000-0002-1218-7509 + - identifier: 0000-0002-1218-7509 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Torgerson given_name: Jordan Leigh + id: 0000-0002-7131-2509 identifiers: - - identifier: https://orcid.org/0000-0002-7131-2509 + - identifier: 0000-0002-7131-2509 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hill given_name: David + id: 0000-0002-7326-2509 identifiers: - - identifier: https://orcid.org/0000-0002-7326-2509 + - identifier: 0000-0002-7326-2509 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Wieser given_name: Bernhard + id: 0000-0002-8594-1509 identifiers: - - identifier: https://orcid.org/0000-0002-8594-1509 + - identifier: 0000-0002-8594-1509 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Blasenbauer given_name: Dominik + id: 0000-0003-1227-6509 identifiers: - - identifier: https://orcid.org/0000-0003-1227-6509 + - identifier: 0000-0003-1227-6509 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Ziegenr\xFCcker" given_name: "Ren\xE9" + id: 0000-0001-6974-150X identifiers: - - identifier: https://orcid.org/0000-0001-6974-150X + - identifier: 0000-0001-6974-150X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schmidt given_name: Volkmar + id: 0000-0001-8350-050X identifiers: - - identifier: https://orcid.org/0000-0001-8350-050X + - identifier: 0000-0001-8350-050X scheme: orcid - affiliations: - name: Northwestern University - name: "Universit\xE9 de Rennes 1" family_name: Ben Maamar given_name: Sarah + id: 0000-0002-0262-850X identifiers: - - identifier: https://orcid.org/0000-0002-0262-850X + - identifier: 0000-0002-0262-850X scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Liu given_name: Jia + id: 0000-0002-3424-050X identifiers: - - identifier: https://orcid.org/0000-0002-3424-050X + - identifier: 0000-0002-3424-050X scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Ogay given_name: Tania + id: 0000-0002-5342-550X identifiers: - - identifier: https://orcid.org/0000-0002-5342-550X + - identifier: 0000-0002-5342-550X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wu given_name: Lijun + id: 0000-0002-8443-250X identifiers: - - identifier: https://orcid.org/0000-0002-8443-250X + - identifier: 0000-0002-8443-250X scheme: orcid - affiliations: - name: Northwestern University family_name: Gopalan given_name: Arun + id: 0000-0003-0281-350X identifiers: - - identifier: https://orcid.org/0000-0003-0281-350X + - identifier: 0000-0003-0281-350X scheme: orcid - affiliations: - name: TU Wien family_name: Colucci given_name: Alessio + id: 0000-0003-1805-750X identifiers: - - identifier: https://orcid.org/0000-0003-1805-750X + - identifier: 0000-0003-1805-750X scheme: orcid - affiliations: - name: TU Wien family_name: Knobloch given_name: Theresia + id: 0000-0001-5156-9510 identifiers: - - identifier: https://orcid.org/0000-0001-5156-9510 + - identifier: 0000-0001-5156-9510 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Colella given_name: Vladimir + id: 0000-0001-6224-1510 identifiers: - - identifier: https://orcid.org/0000-0001-6224-1510 + - identifier: 0000-0001-6224-1510 scheme: orcid - affiliations: - name: Northwestern University family_name: Scherer given_name: Michael + id: 0000-0001-8085-3510 identifiers: - - identifier: https://orcid.org/0000-0001-8085-3510 + - identifier: 0000-0001-8085-3510 scheme: orcid - affiliations: - name: University of Fribourg family_name: LeBoeuf given_name: Adria + id: 0000-0002-2931-1510 identifiers: - - identifier: https://orcid.org/0000-0002-2931-1510 + - identifier: 0000-0002-2931-1510 scheme: orcid - affiliations: - name: University of Fribourg - name: "Observatoire Valaisan de la Sant\xE9 (OVS)" family_name: Chiolero given_name: Arnaud + id: 0000-0002-5544-8510 identifiers: - - identifier: https://orcid.org/0000-0002-5544-8510 + - identifier: 0000-0002-5544-8510 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Leenings given_name: Ramona + id: 0000-0002-9137-7510 identifiers: - - identifier: https://orcid.org/0000-0002-9137-7510 + - identifier: 0000-0002-9137-7510 scheme: orcid - affiliations: - name: University of Fribourg family_name: Pacheco Paneque given_name: Meritxell + id: 0000-0003-2192-7510 identifiers: - - identifier: https://orcid.org/0000-0003-2192-7510 + - identifier: 0000-0003-2192-7510 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Kalliauer given_name: Johannes + id: 0000-0003-4178-4510 identifiers: - - identifier: https://orcid.org/0000-0003-4178-4510 + - identifier: 0000-0003-4178-4510 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Ay given_name: Ilja + id: 0000-0001-6785-5511 identifiers: - - identifier: https://orcid.org/0000-0001-6785-5511 + - identifier: 0000-0001-6785-5511 scheme: orcid - affiliations: - name: TU Wien family_name: Foelske given_name: Annette + id: 0000-0001-7256-6511 identifiers: - - identifier: https://orcid.org/0000-0001-7256-6511 + - identifier: 0000-0001-7256-6511 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Mo\xDFhammer" given_name: Michael + id: 0000-0002-6848-8511 identifiers: - - identifier: https://orcid.org/0000-0002-6848-8511 + - identifier: 0000-0002-6848-8511 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lentzsch given_name: Alfred + id: 0000-0002-8150-0511 identifiers: - - identifier: https://orcid.org/0000-0002-8150-0511 + - identifier: 0000-0002-8150-0511 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Genoud given_name: Philippe Ambroise + id: 0000-0002-9764-1511 identifiers: - - identifier: https://orcid.org/0000-0002-9764-1511 + - identifier: 0000-0002-9764-1511 scheme: orcid - affiliations: - name: TU Wien family_name: Imre given_name: Alexander Michael + id: 0000-0003-1805-1511 identifiers: - - identifier: https://orcid.org/0000-0003-1805-1511 + - identifier: 0000-0003-1805-1511 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Jensz given_name: Felicity + id: 0000-0003-3679-4511 identifiers: - - identifier: https://orcid.org/0000-0003-3679-4511 + - identifier: 0000-0003-3679-4511 scheme: orcid - affiliations: - name: National Institute for Public Health and the Environment - name: "Technische Universit\xE4t Wien" family_name: van Driezum given_name: Inge + id: 0000-0001-5887-2512 identifiers: - - identifier: https://orcid.org/0000-0001-5887-2512 + - identifier: 0000-0001-5887-2512 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yu given_name: Jason + id: 0000-0002-0909-4512 identifiers: - - identifier: https://orcid.org/0000-0002-0909-4512 + - identifier: 0000-0002-0909-4512 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Faludi given_name: Julianna + id: 0000-0002-0993-2512 identifiers: - - identifier: https://orcid.org/0000-0002-0993-2512 + - identifier: 0000-0002-0993-2512 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Urban given_name: Nathan + id: 0000-0002-2264-3512 identifiers: - - identifier: https://orcid.org/0000-0002-2264-3512 + - identifier: 0000-0002-2264-3512 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Morris given_name: Melvyn + id: 0000-0002-9701-2512 identifiers: - - identifier: https://orcid.org/0000-0002-9701-2512 + - identifier: 0000-0002-9701-2512 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zott given_name: Michael + id: 0000-0003-0535-0512 identifiers: - - identifier: https://orcid.org/0000-0003-0535-0512 + - identifier: 0000-0003-0535-0512 scheme: orcid - affiliations: - name: "P\xE4dagogische Hochschule Luzern" - name: "Universit\xE9 de Fribourg" family_name: Sokolovska given_name: Zorana + id: 0000-0001-5112-1513 identifiers: - - identifier: https://orcid.org/0000-0001-5112-1513 + - identifier: 0000-0001-5112-1513 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Rosenzopf given_name: Hannah + id: 0000-0001-7786-6513 identifiers: - - identifier: https://orcid.org/0000-0001-7786-6513 + - identifier: 0000-0001-7786-6513 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yager given_name: Kevin + id: 0000-0001-7745-2513 identifiers: - - identifier: https://orcid.org/0000-0001-7745-2513 + - identifier: 0000-0001-7745-2513 scheme: orcid - affiliations: - name: Northwestern University family_name: Karduni given_name: Alireza + id: 0000-0001-9719-7513 identifiers: - - identifier: https://orcid.org/0000-0001-9719-7513 + - identifier: 0000-0001-9719-7513 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ladinsky given_name: Mark + id: 0000-0002-1036-3513 identifiers: - - identifier: https://orcid.org/0000-0002-1036-3513 + - identifier: 0000-0002-1036-3513 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Fargetta given_name: Marco + id: 0000-0002-1092-9513 identifiers: - - identifier: https://orcid.org/0000-0002-1092-9513 + - identifier: 0000-0002-1092-9513 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Chiodini given_name: Gabriele + id: 0000-0002-2458-9513 identifiers: - - identifier: https://orcid.org/0000-0002-2458-9513 + - identifier: 0000-0002-2458-9513 scheme: orcid - affiliations: - name: Northwestern University family_name: Bianconi given_name: Simone + id: 0000-0002-3828-6513 identifiers: - - identifier: https://orcid.org/0000-0002-3828-6513 + - identifier: 0000-0002-3828-6513 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Carbone given_name: Matthew + id: 0000-0002-5181-9513 identifiers: - - identifier: https://orcid.org/0000-0002-5181-9513 + - identifier: 0000-0002-5181-9513 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Tarlini given_name: Marco + id: 0000-0002-7877-1513 identifiers: - - identifier: https://orcid.org/0000-0002-7877-1513 + - identifier: 0000-0002-7877-1513 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mazmanian given_name: Sarkis + id: 0000-0003-2713-1513 identifiers: - - identifier: https://orcid.org/0000-0003-2713-1513 + - identifier: 0000-0003-2713-1513 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Rumo given_name: Maxime + id: 0000-0003-2641-1513 identifiers: - - identifier: https://orcid.org/0000-0003-2641-1513 + - identifier: 0000-0003-2641-1513 scheme: orcid - affiliations: - name: TU Wien family_name: Lederer given_name: Jakob + id: 0000-0003-3443-8513 identifiers: - - identifier: https://orcid.org/0000-0003-3443-8513 + - identifier: 0000-0003-3443-8513 scheme: orcid - affiliations: - name: Northwestern University family_name: Babinec given_name: Michael + id: 0000-0003-3499-9513 identifiers: - - identifier: https://orcid.org/0000-0003-3499-9513 + - identifier: 0000-0003-3499-9513 scheme: orcid - affiliations: - name: Northwestern University - name: "Link\xF6pings Universitet" family_name: Fabiano given_name: Simone + id: 0000-0001-7016-6514 identifiers: - - identifier: https://orcid.org/0000-0001-7016-6514 + - identifier: 0000-0001-7016-6514 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Stoltenberg given_name: Daniela + id: 0000-0001-9334-1514 identifiers: - - identifier: https://orcid.org/0000-0001-9334-1514 + - identifier: 0000-0001-9334-1514 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "M\xFCthing" given_name: Johannes + id: 0000-0001-9958-3514 identifiers: - - identifier: https://orcid.org/0000-0001-9958-3514 + - identifier: 0000-0001-9958-3514 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kuhn given_name: Michael + id: 0000-0002-0631-7514 identifiers: - - identifier: https://orcid.org/0000-0002-0631-7514 + - identifier: 0000-0002-0631-7514 scheme: orcid - affiliations: - name: TU Wien - name: Mo-St Transformative Futures family_name: Morishita-Steffen given_name: Naomi + id: 0000-0002-2672-1514 identifiers: - - identifier: https://orcid.org/0000-0002-2672-1514 + - identifier: 0000-0002-2672-1514 scheme: orcid - affiliations: - name: Charite Universitatsmedizin Berlin - campus Mitte - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Taylor given_name: Corey + id: 0000-0003-2535-9514 identifiers: - - identifier: https://orcid.org/0000-0003-2535-9514 + - identifier: 0000-0003-2535-9514 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Pottlacher given_name: Gernot + id: 0000-0001-8486-0515 identifiers: - - identifier: https://orcid.org/0000-0001-8486-0515 + - identifier: 0000-0001-8486-0515 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: de Mallac given_name: Louis + id: 0000-0001-8623-3515 identifiers: - - identifier: https://orcid.org/0000-0001-8623-3515 + - identifier: 0000-0001-8623-3515 scheme: orcid - affiliations: - name: "Universit\xE0 degli Studi di Bari Aldo Moro" - name: Istituto Nazionale di Fisica Nucleare family_name: Facchi given_name: Paolo + id: 0000-0001-9152-6515 identifiers: - - identifier: https://orcid.org/0000-0001-9152-6515 + - identifier: 0000-0001-9152-6515 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Cavallo given_name: Francesca Romana + id: 0000-0002-0326-7515 identifiers: - - identifier: https://orcid.org/0000-0002-0326-7515 + - identifier: 0000-0002-0326-7515 scheme: orcid - affiliations: - name: Northwestern University family_name: Hu given_name: Jiabei + id: 0000-0002-1396-7515 identifiers: - - identifier: https://orcid.org/0000-0002-1396-7515 + - identifier: 0000-0002-1396-7515 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Simmons-Duffin given_name: David + id: 0000-0002-2937-9515 identifiers: - - identifier: https://orcid.org/0000-0002-2937-9515 + - identifier: 0000-0002-2937-9515 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Shao given_name: Lin + id: 0000-0002-5118-9515 identifiers: - - identifier: https://orcid.org/0000-0002-5118-9515 + - identifier: 0000-0002-5118-9515 scheme: orcid - affiliations: - name: "Universit\xE9 de Neuch\xE2tel" @@ -24403,201 +27798,229 @@ - name: UniDistance family_name: Gillabert given_name: Matthieu + id: 0000-0002-5987-7515 identifiers: - - identifier: https://orcid.org/0000-0002-5987-7515 + - identifier: 0000-0002-5987-7515 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "H\xF6ber" given_name: Michael + id: 0000-0002-8355-1515 identifiers: - - identifier: https://orcid.org/0000-0002-8355-1515 + - identifier: 0000-0002-8355-1515 scheme: orcid - affiliations: - name: TU Wien family_name: Beck given_name: Christian + id: 0000-0003-2503-7515 identifiers: - - identifier: https://orcid.org/0000-0003-2503-7515 + - identifier: 0000-0003-2503-7515 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Anand given_name: Shreya + id: 0000-0003-3768-7515 identifiers: - - identifier: https://orcid.org/0000-0003-3768-7515 + - identifier: 0000-0003-3768-7515 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Johnson given_name: Katherine + id: 0000-0002-0026-2516 identifiers: - - identifier: https://orcid.org/0000-0002-0026-2516 + - identifier: 0000-0002-0026-2516 scheme: orcid - affiliations: - name: CERN family_name: Wulff given_name: Eric Gustaf Ted + id: 0000-0002-4681-8516 identifiers: - - identifier: https://orcid.org/0000-0002-4681-8516 + - identifier: 0000-0002-4681-8516 scheme: orcid - affiliations: - name: Northwestern University family_name: Stern given_name: Nathaniel + id: 0000-0002-8903-3516 identifiers: - - identifier: https://orcid.org/0000-0002-8903-3516 + - identifier: 0000-0002-8903-3516 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: GARAVAGLIA given_name: Andrea + id: 0000-0002-9926-6516 identifiers: - - identifier: https://orcid.org/0000-0002-9926-6516 + - identifier: 0000-0002-9926-6516 scheme: orcid - affiliations: - name: Northwestern University family_name: Lyon, MD given_name: Alice T. + id: 0000-0003-1712-9516 identifiers: - - identifier: https://orcid.org/0000-0003-1712-9516 + - identifier: 0000-0003-1712-9516 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: gennai given_name: simone + id: 0000-0001-5269-8517 identifiers: - - identifier: https://orcid.org/0000-0001-5269-8517 + - identifier: 0000-0001-5269-8517 scheme: orcid - affiliations: - name: TU Wien family_name: "Pr\xFCfer" given_name: Maximilian + id: 0000-0001-5768-3517 identifiers: - - identifier: https://orcid.org/0000-0001-5768-3517 + - identifier: 0000-0001-5768-3517 scheme: orcid - affiliations: - name: Ann and Robert H Lurie Children's Hospital of Chicago - name: Northwestern University family_name: Mangold given_name: Karen + id: 0000-0001-8909-5517 identifiers: - - identifier: https://orcid.org/0000-0001-8909-5517 + - identifier: 0000-0001-8909-5517 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: OncoRay family_name: Nexhipi given_name: Sindi + id: 0000-0001-9886-4517 identifiers: - - identifier: https://orcid.org/0000-0001-9886-4517 + - identifier: 0000-0001-9886-4517 scheme: orcid - affiliations: - name: Northwestern University family_name: Horton given_name: Daniel + id: 0000-0002-2065-4517 identifiers: - - identifier: https://orcid.org/0000-0002-2065-4517 + - identifier: 0000-0002-2065-4517 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Patterson given_name: Ryan + id: 0000-0002-5787-9517 identifiers: - - identifier: https://orcid.org/0000-0002-5787-9517 + - identifier: 0000-0002-5787-9517 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bergman given_name: Maxime + id: 0000-0002-5803-8517 identifiers: - - identifier: https://orcid.org/0000-0002-5803-8517 + - identifier: 0000-0002-5803-8517 scheme: orcid - affiliations: - name: University of Bamberg family_name: Reis given_name: Lea + id: 0000-0002-6607-0517 identifiers: - - identifier: https://orcid.org/0000-0002-6607-0517 + - identifier: 0000-0002-6607-0517 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schellhammer given_name: Sonja M. + id: 0000-0002-9742-8518 identifiers: - - identifier: https://orcid.org/0000-0002-9742-8518 + - identifier: 0000-0002-9742-8518 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Killian given_name: Michaela + id: 0000-0003-0554-7518 identifiers: - - identifier: https://orcid.org/0000-0003-0554-7518 + - identifier: 0000-0003-0554-7518 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Endo given_name: Satoshi + id: 0000-0002-3668-8519 identifiers: - - identifier: https://orcid.org/0000-0002-3668-8519 + - identifier: 0000-0002-3668-8519 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chen given_name: Hsiang-Yun + id: 0000-0002-6461-1519 identifiers: - - identifier: https://orcid.org/0000-0002-6461-1519 + - identifier: 0000-0002-6461-1519 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Albert given_name: Dennis + id: 0000-0001-8916-851X identifiers: - - identifier: https://orcid.org/0000-0001-8916-851X + - identifier: 0000-0001-8916-851X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zheng given_name: Yujie + id: 0000-0001-9013-451X identifiers: - - identifier: https://orcid.org/0000-0001-9013-451X + - identifier: 0000-0001-9013-451X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Chizhova given_name: Maria + id: 0000-0002-3301-851X identifiers: - - identifier: https://orcid.org/0000-0002-3301-851X + - identifier: 0000-0002-3301-851X scheme: orcid - affiliations: - name: University of Fribourg family_name: Puppis given_name: Manuel + id: 0000-0002-4139-251X identifiers: - - identifier: https://orcid.org/0000-0002-4139-251X + - identifier: 0000-0002-4139-251X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: Bulgarian Academy of Sciences family_name: Nedjalkov given_name: Mihail + id: 0000-0002-5705-251X identifiers: - - identifier: https://orcid.org/0000-0002-5705-251X + - identifier: 0000-0002-5705-251X scheme: orcid - affiliations: - name: University of Bristol - name: University of Fribourg family_name: Tedstone given_name: Andrew + id: 0000-0002-9211-451X identifiers: - - identifier: https://orcid.org/0000-0002-9211-451X + - identifier: 0000-0002-9211-451X scheme: orcid - affiliations: - name: TU Wien family_name: Ordyniak given_name: Sebastian + id: 0000-0003-1935-651X identifiers: - - identifier: https://orcid.org/0000-0003-1935-651X + - identifier: 0000-0003-1935-651X scheme: orcid - affiliations: - name: "CRE/ATE (Centre de recherche sur l'enseignement/apprentissage par les technologies\ @@ -24607,483 +28030,551 @@ - name: "Universit\xE9 de Fribourg" family_name: Alvarez given_name: Lionel + id: 0000-0003-4708-251X identifiers: - - identifier: https://orcid.org/0000-0003-4708-251X + - identifier: 0000-0003-4708-251X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Rajagopalan given_name: Srinivasan + id: 0000-0001-6543-1520 identifiers: - - identifier: https://orcid.org/0000-0001-6543-1520 + - identifier: 0000-0001-6543-1520 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Corradetti given_name: Stefano + id: 0000-0002-0831-5520 identifiers: - - identifier: https://orcid.org/0000-0002-0831-5520 + - identifier: 0000-0002-0831-5520 scheme: orcid - affiliations: - name: University of Fribourg family_name: Schulz given_name: Ilektra + id: 0000-0002-3874-1520 identifiers: - - identifier: https://orcid.org/0000-0002-3874-1520 + - identifier: 0000-0002-3874-1520 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kim given_name: Youn-Geun + id: 0000-0002-5936-6520 identifiers: - - identifier: https://orcid.org/0000-0002-5936-6520 + - identifier: 0000-0002-5936-6520 scheme: orcid - affiliations: - name: Northwestern University family_name: Ostroski given_name: Clare + id: 0000-0002-7344-0520 identifiers: - - identifier: https://orcid.org/0000-0002-7344-0520 + - identifier: 0000-0002-7344-0520 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "B\xF6lte" given_name: Jens + id: 0000-0002-8128-0520 identifiers: - - identifier: https://orcid.org/0000-0002-8128-0520 + - identifier: 0000-0002-8128-0520 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Hampai given_name: Dariush + id: 0000-0002-8881-0520 identifiers: - - identifier: https://orcid.org/0000-0002-8881-0520 + - identifier: 0000-0002-8881-0520 scheme: orcid - affiliations: - name: Radboud University - name: "Technische Universit\xE4t Graz" family_name: Grassi given_name: Lorenzo + id: 0000-0003-1140-0520 identifiers: - - identifier: https://orcid.org/0000-0003-1140-0520 + - identifier: 0000-0003-1140-0520 scheme: orcid - affiliations: - name: Northwestern University family_name: Demetriades given_name: Stefanie + id: 0000-0003-3007-0520 identifiers: - - identifier: https://orcid.org/0000-0003-3007-0520 + - identifier: 0000-0003-3007-0520 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Man given_name: Vincent + id: 0000-0001-5380-5521 identifiers: - - identifier: https://orcid.org/0000-0001-5380-5521 + - identifier: 0000-0001-5380-5521 scheme: orcid - affiliations: - name: University of Fribourg family_name: Kellerhals given_name: Ruth + id: 0000-0001-5704-8521 identifiers: - - identifier: https://orcid.org/0000-0001-5704-8521 + - identifier: 0000-0001-5704-8521 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Vukmirovic given_name: Miomir + id: 0000-0001-6462-7521 identifiers: - - identifier: https://orcid.org/0000-0001-6462-7521 + - identifier: 0000-0001-6462-7521 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Wiemers-Meyer given_name: Simon + id: 0000-0001-8608-4521 identifiers: - - identifier: https://orcid.org/0000-0001-8608-4521 + - identifier: 0000-0001-8608-4521 scheme: orcid - affiliations: - name: Northwestern University family_name: Khalili Amiri given_name: Pedram + id: 0000-0002-1539-1521 identifiers: - - identifier: https://orcid.org/0000-0002-1539-1521 + - identifier: 0000-0002-1539-1521 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Pouchard given_name: Line + id: 0000-0002-2120-6521 identifiers: - - identifier: https://orcid.org/0000-0002-2120-6521 + - identifier: 0000-0002-2120-6521 scheme: orcid - affiliations: - name: Northwestern University family_name: Smutko given_name: Michael + id: 0000-0002-9028-7521 identifiers: - - identifier: https://orcid.org/0000-0002-9028-7521 + - identifier: 0000-0002-9028-7521 scheme: orcid - affiliations: - name: Vienna Institute of Demography - name: "Technische Universit\xE4t Wien" family_name: Sanchez-Romero given_name: Miguel + id: 0000-0002-5999-6522 identifiers: - - identifier: https://orcid.org/0000-0002-5999-6522 + - identifier: 0000-0002-5999-6522 scheme: orcid - affiliations: - name: CERN family_name: Pearce given_name: Alex + id: 0000-0002-9719-1522 identifiers: - - identifier: https://orcid.org/0000-0002-9719-1522 + - identifier: 0000-0002-9719-1522 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Lombardi given_name: Angela + id: 0000-0003-1815-9522 identifiers: - - identifier: https://orcid.org/0000-0003-1815-9522 + - identifier: 0000-0003-1815-9522 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Ipp given_name: Andreas + id: 0000-0001-9511-3523 identifiers: - - identifier: https://orcid.org/0000-0001-9511-3523 + - identifier: 0000-0001-9511-3523 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Casas Cubillos given_name: Juan + id: 0000-0002-2254-8523 identifiers: - - identifier: https://orcid.org/0000-0002-2254-8523 + - identifier: 0000-0002-2254-8523 scheme: orcid - affiliations: - name: TU Wien family_name: Denzler given_name: Patrick + id: 0000-0002-2753-3523 identifiers: - - identifier: https://orcid.org/0000-0002-2753-3523 + - identifier: 0000-0002-2753-3523 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Aihara given_name: Kenro + id: 0000-0002-4287-2523 identifiers: - - identifier: https://orcid.org/0000-0002-4287-2523 + - identifier: 0000-0002-4287-2523 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Di Donato given_name: Martin + id: 0000-0002-5642-2523 identifiers: - - identifier: https://orcid.org/0000-0002-5642-2523 + - identifier: 0000-0002-5642-2523 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Winfree given_name: Erik + id: 0000-0002-5899-7523 identifiers: - - identifier: https://orcid.org/0000-0002-5899-7523 + - identifier: 0000-0002-5899-7523 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sun given_name: Yuchun + id: 0000-0002-7028-3523 identifiers: - - identifier: https://orcid.org/0000-0002-7028-3523 + - identifier: 0000-0002-7028-3523 scheme: orcid - affiliations: - name: TU Wien family_name: Wimmer given_name: Michael H. + id: 0000-0002-7912-2523 identifiers: - - identifier: https://orcid.org/0000-0002-7912-2523 + - identifier: 0000-0002-7912-2523 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bochet given_name: Christian + id: 0000-0003-4267-0523 identifiers: - - identifier: https://orcid.org/0000-0003-4267-0523 + - identifier: 0000-0003-4267-0523 scheme: orcid - affiliations: - name: Northwestern University family_name: Duan given_name: Chao + id: 0000-0001-7358-3524 identifiers: - - identifier: https://orcid.org/0000-0001-7358-3524 + - identifier: 0000-0001-7358-3524 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Batista Ribeiro given_name: Leandro + id: 0000-0002-1294-1524 identifiers: - - identifier: https://orcid.org/0000-0002-1294-1524 + - identifier: 0000-0002-1294-1524 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Bonnaire given_name: Florian Christof + id: 0000-0002-2640-3524 identifiers: - - identifier: https://orcid.org/0000-0002-2640-3524 + - identifier: 0000-0002-2640-3524 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: SINGH given_name: SANJAY + id: 0000-0002-5305-7524 identifiers: - - identifier: https://orcid.org/0000-0002-5305-7524 + - identifier: 0000-0002-5305-7524 scheme: orcid - affiliations: - name: Northwestern University family_name: Poncela-Casasnovas given_name: Julia + id: 0000-0003-2791-7524 identifiers: - - identifier: https://orcid.org/0000-0003-2791-7524 + - identifier: 0000-0003-2791-7524 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Border given_name: Kim + id: 0000-0003-4437-0524 identifiers: - - identifier: https://orcid.org/0000-0003-4437-0524 + - identifier: 0000-0003-4437-0524 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lohmann given_name: Svenja + id: 0000-0001-9180-6525 identifiers: - - identifier: https://orcid.org/0000-0001-9180-6525 + - identifier: 0000-0001-9180-6525 scheme: orcid - affiliations: - name: "Ruhr-Universit\xE4t Bochum" - name: Graz University of Technology family_name: Kourist given_name: Robert + id: 0000-0002-2853-3525 identifiers: - - identifier: https://orcid.org/0000-0002-2853-3525 + - identifier: 0000-0002-2853-3525 scheme: orcid - affiliations: - name: California Institute of Technology - name: Samsung Display Co Ltd family_name: Cho given_name: Hyunjun + id: 0000-0002-8963-5525 identifiers: - - identifier: https://orcid.org/0000-0002-8963-5525 + - identifier: 0000-0002-8963-5525 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kennedy given_name: Mary + id: 0000-0003-1369-0525 identifiers: - - identifier: https://orcid.org/0000-0003-1369-0525 + - identifier: 0000-0003-1369-0525 scheme: orcid - affiliations: - name: Northwestern University family_name: Rotta Loria given_name: Alessandro F. + id: 0000-0001-6584-7526 identifiers: - - identifier: https://orcid.org/0000-0001-6584-7526 + - identifier: 0000-0001-6584-7526 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Jeanneret given_name: Sylvie + id: 0000-0002-6944-3526 identifiers: - - identifier: https://orcid.org/0000-0002-6944-3526 + - identifier: 0000-0002-6944-3526 scheme: orcid - affiliations: - name: TU Wien family_name: Jericha given_name: Erwin + id: 0000-0002-8663-0526 identifiers: - - identifier: https://orcid.org/0000-0002-8663-0526 + - identifier: 0000-0002-8663-0526 scheme: orcid - affiliations: - name: TU Wien family_name: Breinl given_name: Korbinian + id: 0000-0003-0489-4526 identifiers: - - identifier: https://orcid.org/0000-0003-0489-4526 + - identifier: 0000-0003-0489-4526 scheme: orcid - affiliations: - name: University of Fribourg family_name: Dessai given_name: Anand + id: 0000-0003-2747-1526 identifiers: - - identifier: https://orcid.org/0000-0003-2747-1526 + - identifier: 0000-0003-2747-1526 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Oldeweme given_name: Andreas + id: 0000-0003-4752-8526 identifiers: - - identifier: https://orcid.org/0000-0003-4752-8526 + - identifier: 0000-0003-4752-8526 scheme: orcid - affiliations: - name: Northwestern University family_name: Garcia given_name: Christopher + id: 0000-0001-5331-3527 identifiers: - - identifier: https://orcid.org/0000-0001-5331-3527 + - identifier: 0000-0001-5331-3527 scheme: orcid - affiliations: - name: TU Wien family_name: Ehrmann given_name: Katharina + id: 0000-0002-0161-0527 identifiers: - - identifier: https://orcid.org/0000-0002-0161-0527 + - identifier: 0000-0002-0161-0527 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pinto given_name: Miguel + id: 0000-0002-6333-6527 identifiers: - - identifier: https://orcid.org/0000-0002-6333-6527 + - identifier: 0000-0002-6333-6527 scheme: orcid - affiliations: - name: CERN - name: "NRC \xABKurchatov Institute\xBB \u2212 PNPI" family_name: Uvarov given_name: Lev + id: 0000-0002-7602-2527 identifiers: - - identifier: https://orcid.org/0000-0002-7602-2527 + - identifier: 0000-0002-7602-2527 scheme: orcid - affiliations: - name: TU Wien family_name: Masi given_name: Audrey + id: 0000-0001-5852-1528 identifiers: - - identifier: https://orcid.org/0000-0001-5852-1528 + - identifier: 0000-0001-5852-1528 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Jiang given_name: Xiaoyi + id: 0000-0001-7678-9528 identifiers: - - identifier: https://orcid.org/0000-0001-7678-9528 + - identifier: 0000-0001-7678-9528 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hofmann given_name: Reinhild + id: 0000-0001-8630-3528 identifiers: - - identifier: https://orcid.org/0000-0001-8630-3528 + - identifier: 0000-0001-8630-3528 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Chisholm given_name: Andrew + id: 0000-0001-9214-8528 identifiers: - - identifier: https://orcid.org/0000-0001-9214-8528 + - identifier: 0000-0001-9214-8528 scheme: orcid - affiliations: - name: CERN family_name: Casolino given_name: Mirkoantonio + id: 0000-0003-2350-7528 identifiers: - - identifier: https://orcid.org/0000-0003-2350-7528 + - identifier: 0000-0003-2350-7528 scheme: orcid - affiliations: - name: Northwestern University family_name: Damme given_name: Katherine + id: 0000-0003-4260-1528 identifiers: - - identifier: https://orcid.org/0000-0003-4260-1528 + - identifier: 0000-0003-4260-1528 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Yao + id: 0000-0003-4414-8528 identifiers: - - identifier: https://orcid.org/0000-0003-4414-8528 + - identifier: 0000-0003-4414-8528 scheme: orcid - affiliations: - name: Northwestern University family_name: Rocha given_name: Kyle + id: 0000-0003-4474-6528 identifiers: - - identifier: https://orcid.org/0000-0003-4474-6528 + - identifier: 0000-0003-4474-6528 scheme: orcid - affiliations: - name: Northwestern University family_name: Sarmiento given_name: Roberto + id: 0000-0002-1009-8529 identifiers: - - identifier: https://orcid.org/0000-0002-1009-8529 + - identifier: 0000-0002-1009-8529 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Jha given_name: Shalinee + id: 0000-0002-6421-3529 identifiers: - - identifier: https://orcid.org/0000-0002-6421-3529 + - identifier: 0000-0002-6421-3529 scheme: orcid - affiliations: - name: Northwestern University family_name: Johnson given_name: Julie K. + id: 0000-0002-7757-5529 identifiers: - - identifier: https://orcid.org/0000-0002-7757-5529 + - identifier: 0000-0002-7757-5529 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Sch\xE4fers" given_name: Klaus + id: 0000-0002-8861-0529 identifiers: - - identifier: https://orcid.org/0000-0002-8861-0529 + - identifier: 0000-0002-8861-0529 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: University of Belgrade School of Electrical Engineering family_name: "Jani\u0107ijevi\u0107" given_name: "\u017Deljko" + id: 0000-0002-9494-9529 identifiers: - - identifier: https://orcid.org/0000-0002-9494-9529 + - identifier: 0000-0002-9494-9529 scheme: orcid - affiliations: - name: Northwestern University family_name: Yang given_name: Yang + id: 0000-0003-2409-5529 identifiers: - - identifier: https://orcid.org/0000-0003-2409-5529 + - identifier: 0000-0003-2409-5529 scheme: orcid - affiliations: - name: TU Wien family_name: Quell given_name: Michael + id: 0000-0002-4787-152X identifiers: - - identifier: https://orcid.org/0000-0002-4787-152X + - identifier: 0000-0002-4787-152X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Wirth given_name: Laura + id: 0000-0002-5622-552X identifiers: - - identifier: https://orcid.org/0000-0002-5622-552X + - identifier: 0000-0002-5622-552X scheme: orcid - affiliations: - name: University of Fribourg family_name: Tschopp given_name: "Salom\xE9e" + id: 0000-0003-3259-052X identifiers: - - identifier: https://orcid.org/0000-0003-3259-052X + - identifier: 0000-0003-3259-052X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Rakitin given_name: Maksim + id: 0000-0003-3685-852X identifiers: - - identifier: https://orcid.org/0000-0003-3685-852X + - identifier: 0000-0003-3685-852X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Di Pietro given_name: Alessia Francesca + id: 0000-0003-4631-952X identifiers: - - identifier: https://orcid.org/0000-0003-4631-952X + - identifier: 0000-0003-4631-952X scheme: orcid - affiliations: - name: University of California Berkeley @@ -25092,293 +28583,334 @@ - name: University of Vienna family_name: Kraemer given_name: Stephan + id: 0000-0002-3378-8530 identifiers: - - identifier: https://orcid.org/0000-0002-3378-8530 + - identifier: 0000-0002-3378-8530 scheme: orcid - affiliations: - name: TU Wien family_name: di Angelo given_name: Monika + id: 0000-0002-4217-4530 identifiers: - - identifier: https://orcid.org/0000-0002-4217-4530 + - identifier: 0000-0002-4217-4530 scheme: orcid - affiliations: - name: University of Fribourg - name: Haute Ecole de Gestion de Geneve family_name: Schindl given_name: David + id: 0000-0002-7009-5530 identifiers: - - identifier: https://orcid.org/0000-0002-7009-5530 + - identifier: 0000-0002-7009-5530 scheme: orcid - affiliations: - name: Northwestern University family_name: Johnson given_name: Qiana + id: 0000-0002-9027-2530 identifiers: - - identifier: https://orcid.org/0000-0002-9027-2530 + - identifier: 0000-0002-9027-2530 scheme: orcid - affiliations: - name: TU Wien family_name: Spiel given_name: Katta + id: 0000-0001-6094-9531 identifiers: - - identifier: https://orcid.org/0000-0001-6094-9531 + - identifier: 0000-0001-6094-9531 scheme: orcid - affiliations: - name: Northwestern University family_name: Graham given_name: Edith + id: 0000-0001-6862-5531 identifiers: - - identifier: https://orcid.org/0000-0001-6862-5531 + - identifier: 0000-0001-6862-5531 scheme: orcid - affiliations: - name: TU Wien family_name: Ledermann given_name: Florian + id: 0000-0001-7559-3531 identifiers: - - identifier: https://orcid.org/0000-0001-7559-3531 + - identifier: 0000-0001-7559-3531 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "N\xE4ger" given_name: Paul M. + id: 0000-0002-0251-2531 identifiers: - - identifier: https://orcid.org/0000-0002-0251-2531 + - identifier: 0000-0002-0251-2531 scheme: orcid - affiliations: - name: Northwestern University family_name: Wu given_name: Zihan + id: 0000-0002-8418-3531 identifiers: - - identifier: https://orcid.org/0000-0002-8418-3531 + - identifier: 0000-0002-8418-3531 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Lu given_name: Ming + id: 0000-0003-0175-6531 identifiers: - - identifier: https://orcid.org/0000-0003-0175-6531 + - identifier: 0000-0003-0175-6531 scheme: orcid - affiliations: - name: TU Wien family_name: Ahmadi given_name: Mojtaba + id: 0000-0003-1110-2531 identifiers: - - identifier: https://orcid.org/0000-0003-1110-2531 + - identifier: 0000-0003-1110-2531 scheme: orcid - affiliations: - name: TU Wien family_name: "Schr\xF6der" given_name: Michael + id: 0000-0003-1496-0531 identifiers: - - identifier: https://orcid.org/0000-0003-1496-0531 + - identifier: 0000-0003-1496-0531 scheme: orcid - affiliations: - name: CERN family_name: Triantafyllou given_name: Natalia + id: 0000-0001-6651-9532 identifiers: - - identifier: https://orcid.org/0000-0001-6651-9532 + - identifier: 0000-0001-6651-9532 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Madysa given_name: Nico + id: 0000-0001-8375-7532 identifiers: - - identifier: https://orcid.org/0000-0001-8375-7532 + - identifier: 0000-0001-8375-7532 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kim given_name: Sung Joo + id: 0000-0001-9776-1532 identifiers: - - identifier: https://orcid.org/0000-0001-9776-1532 + - identifier: 0000-0001-9776-1532 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Zirakzadeh given_name: Afrooz + id: 0000-0002-1540-5532 identifiers: - - identifier: https://orcid.org/0000-0002-1540-5532 + - identifier: 0000-0002-1540-5532 scheme: orcid - affiliations: - name: Howard Hughes Medical Institute - name: Northwestern University family_name: Andreev given_name: Konstantin + id: 0000-0002-1757-4532 identifiers: - - identifier: https://orcid.org/0000-0002-1757-4532 + - identifier: 0000-0002-1757-4532 scheme: orcid - affiliations: - name: CERN family_name: Devine given_name: James + id: 0000-0002-2019-1532 identifiers: - - identifier: https://orcid.org/0000-0002-2019-1532 + - identifier: 0000-0002-2019-1532 scheme: orcid - affiliations: - name: TU Wien family_name: Korjenic given_name: Azra + id: 0000-0002-2904-9532 identifiers: - - identifier: https://orcid.org/0000-0002-2904-9532 + - identifier: 0000-0002-2904-9532 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Trout given_name: Diane + id: 0000-0002-4928-5532 identifiers: - - identifier: https://orcid.org/0000-0002-4928-5532 + - identifier: 0000-0002-4928-5532 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schmidt given_name: Sebastian + id: 0000-0002-8947-1532 identifiers: - - identifier: https://orcid.org/0000-0002-8947-1532 + - identifier: 0000-0002-8947-1532 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schmid given_name: Jochen + id: 0000-0003-2557-5532 identifiers: - - identifier: https://orcid.org/0000-0003-2557-5532 + - identifier: 0000-0003-2557-5532 scheme: orcid - affiliations: - name: University of Fribourg family_name: Nollert given_name: Michael + id: 0000-0003-2465-2532 identifiers: - - identifier: https://orcid.org/0000-0003-2465-2532 + - identifier: 0000-0003-2465-2532 scheme: orcid - affiliations: - name: National Institute of Informatics - name: Tokyo Medical and Dental University family_name: Ninomiya given_name: Youichirou + id: 0000-0003-3572-2532 identifiers: - - identifier: https://orcid.org/0000-0003-3572-2532 + - identifier: 0000-0003-3572-2532 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Meile given_name: Walter + id: 0000-0003-4465-3532 identifiers: - - identifier: https://orcid.org/0000-0003-4465-3532 + - identifier: 0000-0003-4465-3532 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Waltemate given_name: Lena + id: 0000-0001-7331-0534 identifiers: - - identifier: https://orcid.org/0000-0001-7331-0534 + - identifier: 0000-0001-7331-0534 scheme: orcid - affiliations: - name: Northwestern University family_name: Passman given_name: Rod + id: 0000-0001-8718-1534 identifiers: - - identifier: https://orcid.org/0000-0001-8718-1534 + - identifier: 0000-0001-8718-1534 scheme: orcid - affiliations: - name: TU Wien family_name: Gierl-Mayer given_name: Christian + id: 0000-0001-8944-3534 identifiers: - - identifier: https://orcid.org/0000-0001-8944-3534 + - identifier: 0000-0001-8944-3534 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chaudhary given_name: Himanshu + id: 0000-0002-4101-0534 identifiers: - - identifier: https://orcid.org/0000-0002-4101-0534 + - identifier: 0000-0002-4101-0534 scheme: orcid - affiliations: - name: TU Wien family_name: Vierheilig given_name: Julia + id: 0000-0002-9764-7534 identifiers: - - identifier: https://orcid.org/0000-0002-9764-7534 + - identifier: 0000-0002-9764-7534 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Sabandal given_name: Martin + id: 0000-0001-6761-9535 identifiers: - - identifier: https://orcid.org/0000-0001-6761-9535 + - identifier: 0000-0001-6761-9535 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Gr\xFCtzmacher" given_name: Philipp + id: 0000-0001-7609-9535 identifiers: - - identifier: https://orcid.org/0000-0001-7609-9535 + - identifier: 0000-0001-7609-9535 scheme: orcid - affiliations: - name: TU Wien - name: IQOQI family_name: Scheucher given_name: Michael + id: 0000-0002-0977-8535 identifiers: - - identifier: https://orcid.org/0000-0002-0977-8535 + - identifier: 0000-0002-0977-8535 scheme: orcid - affiliations: - name: CERN family_name: SACCANI given_name: Mathieu + id: 0000-0002-9420-4535 identifiers: - - identifier: https://orcid.org/0000-0002-9420-4535 + - identifier: 0000-0002-9420-4535 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Steinberger given_name: Markus + id: 0000-0001-5977-8536 identifiers: - - identifier: https://orcid.org/0000-0001-5977-8536 + - identifier: 0000-0001-5977-8536 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Xin + id: 0000-0001-8358-3536 identifiers: - - identifier: https://orcid.org/0000-0001-8358-3536 + - identifier: 0000-0001-8358-3536 scheme: orcid - affiliations: - name: Northwestern University family_name: Courtney given_name: Carol A. + id: 0000-0002-7216-4536 identifiers: - - identifier: https://orcid.org/0000-0002-7216-4536 + - identifier: 0000-0002-7216-4536 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pardi given_name: Silvio + id: 0000-0001-7994-0537 identifiers: - - identifier: https://orcid.org/0000-0001-7994-0537 + - identifier: 0000-0001-7994-0537 scheme: orcid - affiliations: - name: Max Planck Institute for Chemical Physics of Solids - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Helm given_name: Toni + id: 0000-0002-0938-8537 identifiers: - - identifier: https://orcid.org/0000-0002-0938-8537 + - identifier: 0000-0002-0938-8537 scheme: orcid - affiliations: - name: TU Wien family_name: Bas given_name: "G\xF6kcen" + id: 0000-0002-2402-7537 identifiers: - - identifier: https://orcid.org/0000-0002-2402-7537 + - identifier: 0000-0002-2402-7537 scheme: orcid - affiliations: - name: TU Wien family_name: "\xD6zen" given_name: "\u0130stem" + id: 0000-0002-6123-1537 identifiers: - - identifier: https://orcid.org/0000-0002-6123-1537 + - identifier: 0000-0002-6123-1537 scheme: orcid - affiliations: - name: SODAV @@ -25388,87 +28920,99 @@ - name: AES family_name: SENE given_name: fama diagne + id: 0000-0002-6620-0537 identifiers: - - identifier: https://orcid.org/0000-0002-6620-0537 + - identifier: 0000-0002-6620-0537 scheme: orcid - affiliations: - name: Northwestern University family_name: Lavker given_name: Robert + id: 0000-0003-2570-9537 identifiers: - - identifier: https://orcid.org/0000-0003-2570-9537 + - identifier: 0000-0003-2570-9537 scheme: orcid - affiliations: - name: University of Bamberg family_name: Volmer given_name: Judith + id: 0000-0003-4476-6537 identifiers: - - identifier: https://orcid.org/0000-0003-4476-6537 + - identifier: 0000-0003-4476-6537 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lewis given_name: Nathan + id: 0000-0001-5245-0538 identifiers: - - identifier: https://orcid.org/0000-0001-5245-0538 + - identifier: 0000-0001-5245-0538 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Perin given_name: Antonio + id: 0000-0002-7564-5538 identifiers: - - identifier: https://orcid.org/0000-0002-7564-5538 + - identifier: 0000-0002-7564-5538 scheme: orcid - affiliations: - name: TU Wien - name: Aarhus University family_name: Feuchtner given_name: Tiare + id: 0000-0002-9922-5538 identifiers: - - identifier: https://orcid.org/0000-0002-9922-5538 + - identifier: 0000-0002-9922-5538 scheme: orcid - affiliations: - name: University of Bamberg family_name: "Gro\xDFmann" given_name: Marcel + id: 0000-0003-0396-8538 identifiers: - - identifier: https://orcid.org/0000-0003-0396-8538 + - identifier: 0000-0003-0396-8538 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Golkani given_name: Mohammad Ali + id: 0000-0003-0938-2538 identifiers: - - identifier: https://orcid.org/0000-0003-0938-2538 + - identifier: 0000-0003-0938-2538 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Zamboni given_name: Riccardo + id: 0000-0001-8087-7539 identifiers: - - identifier: https://orcid.org/0000-0001-8087-7539 + - identifier: 0000-0001-8087-7539 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Cherkouk given_name: Andrea + id: 0000-0002-3908-2539 identifiers: - - identifier: https://orcid.org/0000-0002-3908-2539 + - identifier: 0000-0002-3908-2539 scheme: orcid - affiliations: - name: "University Hospital M\xFCnster" - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schreiber given_name: Julian Alexander + id: 0000-0002-3847-7539 identifiers: - - identifier: https://orcid.org/0000-0002-3847-7539 + - identifier: 0000-0002-3847-7539 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Kowarik given_name: Markus + id: 0000-0003-1389-5539 identifiers: - - identifier: https://orcid.org/0000-0003-1389-5539 + - identifier: 0000-0003-1389-5539 scheme: orcid - affiliations: - name: United States Peace Corps @@ -25477,22 +29021,25 @@ - name: National Renewable Energy Laboratory family_name: Judkoff given_name: Ron + id: 0000-0003-4982-0539 identifiers: - - identifier: https://orcid.org/0000-0003-4982-0539 + - identifier: 0000-0003-4982-0539 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Eads given_name: Calley + id: 0000-0001-9534-353X identifiers: - - identifier: https://orcid.org/0000-0001-9534-353X + - identifier: 0000-0001-9534-353X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Reiter given_name: Doris + id: 0000-0002-3648-353X identifiers: - - identifier: https://orcid.org/0000-0002-3648-353X + - identifier: 0000-0002-3648-353X scheme: orcid - affiliations: - name: National Taiwan University @@ -25500,479 +29047,546 @@ - name: Academia Sinica family_name: Lu given_name: Yu-Jung + id: 0000-0002-3932-653X identifiers: - - identifier: https://orcid.org/0000-0002-3932-653X + - identifier: 0000-0002-3932-653X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Nooke given_name: Martha + id: 0000-0002-4446-753X identifiers: - - identifier: https://orcid.org/0000-0002-4446-753X + - identifier: 0000-0002-4446-753X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Ferrari given_name: Anna + id: 0000-0002-6486-353X identifiers: - - identifier: https://orcid.org/0000-0002-6486-353X + - identifier: 0000-0002-6486-353X scheme: orcid - affiliations: - name: Northwestern University family_name: Narayanan given_name: Ashwin + id: 0000-0002-3525-4540 identifiers: - - identifier: https://orcid.org/0000-0002-3525-4540 + - identifier: 0000-0002-3525-4540 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Wallner given_name: Johannes + id: 0000-0002-3229-9540 identifiers: - - identifier: https://orcid.org/0000-0002-3229-9540 + - identifier: 0000-0002-3229-9540 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Cotlet given_name: Mircea + id: 0000-0002-5024-3540 identifiers: - - identifier: https://orcid.org/0000-0002-5024-3540 + - identifier: 0000-0002-5024-3540 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Minnich given_name: Austin J. + id: 0000-0002-9671-9540 identifiers: - - identifier: https://orcid.org/0000-0002-9671-9540 + - identifier: 0000-0002-9671-9540 scheme: orcid - affiliations: - name: TU Wien family_name: Preyser given_name: Franz Josef + id: 0000-0003-2540-1540 identifiers: - - identifier: https://orcid.org/0000-0003-2540-1540 + - identifier: 0000-0003-2540-1540 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Herrmannsd\xF6rfer" given_name: Thomas + id: 0000-0001-6706-4541 identifiers: - - identifier: https://orcid.org/0000-0001-6706-4541 + - identifier: 0000-0001-6706-4541 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Balbach given_name: Anna-Maria + id: 0000-0002-5481-1541 identifiers: - - identifier: https://orcid.org/0000-0002-5481-1541 + - identifier: 0000-0002-5481-1541 scheme: orcid - affiliations: - name: CERN - name: Laboratori Nazionali di Frascati family_name: Murtas given_name: Fabrizio + id: 0000-0002-7041-6541 identifiers: - - identifier: https://orcid.org/0000-0002-7041-6541 + - identifier: 0000-0002-7041-6541 scheme: orcid - affiliations: - name: TU Wien family_name: Wallerberger given_name: Markus + id: 0000-0002-9992-1541 identifiers: - - identifier: https://orcid.org/0000-0002-9992-1541 + - identifier: 0000-0002-9992-1541 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Ramina given_name: Kristofer + id: 0000-0003-0022-4541 identifiers: - - identifier: https://orcid.org/0000-0003-0022-4541 + - identifier: 0000-0003-0022-4541 scheme: orcid - affiliations: - name: University of Fribourg family_name: Mellini given_name: Laura + id: 0000-0001-9458-4542 identifiers: - - identifier: https://orcid.org/0000-0001-9458-4542 + - identifier: 0000-0001-9458-4542 scheme: orcid - affiliations: - name: TU Wien family_name: Steinlechner given_name: Robert + id: 0000-0002-2705-9542 identifiers: - - identifier: https://orcid.org/0000-0002-2705-9542 + - identifier: 0000-0002-2705-9542 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Dean given_name: Mark + id: 0000-0001-5139-3543 identifiers: - - identifier: https://orcid.org/0000-0001-5139-3543 + - identifier: 0000-0001-5139-3543 scheme: orcid - affiliations: - name: CERN family_name: Gonzalez given_name: Luis Antonio + id: 0000-0001-7007-6543 identifiers: - - identifier: https://orcid.org/0000-0001-7007-6543 + - identifier: 0000-0001-7007-6543 scheme: orcid - affiliations: - name: TU Wien family_name: Frank given_name: Arno + id: 0000-0002-8372-4543 identifiers: - - identifier: https://orcid.org/0000-0002-8372-4543 + - identifier: 0000-0002-8372-4543 scheme: orcid - affiliations: - name: Northwestern University family_name: Centeno given_name: Maria V + id: 0000-0002-9470-6543 identifiers: - - identifier: https://orcid.org/0000-0002-9470-6543 + - identifier: 0000-0002-9470-6543 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Havlicek given_name: Hans + id: 0000-0001-6847-1544 identifiers: - - identifier: https://orcid.org/0000-0001-6847-1544 + - identifier: 0000-0001-6847-1544 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: ArGe Projekte family_name: Voigt given_name: Andreas + id: 0000-0002-0287-9544 identifiers: - - identifier: https://orcid.org/0000-0002-0287-9544 + - identifier: 0000-0002-0287-9544 scheme: orcid - affiliations: - name: Northwestern University family_name: Morrison given_name: Steven + id: 0000-0002-1036-9544 identifiers: - - identifier: https://orcid.org/0000-0002-1036-9544 + - identifier: 0000-0002-1036-9544 scheme: orcid - affiliations: - name: Northwestern University family_name: Brady given_name: Shannon + id: 0000-0002-3043-1544 identifiers: - - identifier: https://orcid.org/0000-0002-3043-1544 + - identifier: 0000-0002-3043-1544 scheme: orcid - affiliations: - name: Berner Fachhochschule - name: University of Fribourg family_name: Sonderegger given_name: Andreas + id: 0000-0003-0054-0544 identifiers: - - identifier: https://orcid.org/0000-0003-0054-0544 + - identifier: 0000-0003-0054-0544 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: "B\xF6siger" given_name: Melanie + id: 0000-0003-1771-3544 identifiers: - - identifier: https://orcid.org/0000-0003-1771-3544 + - identifier: 0000-0003-1771-3544 scheme: orcid - affiliations: - name: Northwestern University family_name: Jiang given_name: Hongmei + id: 0000-0003-2286-2544 identifiers: - - identifier: https://orcid.org/0000-0003-2286-2544 + - identifier: 0000-0003-2286-2544 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "K\xFChle" given_name: Johannes + id: 0000-0001-9401-6545 identifiers: - - identifier: https://orcid.org/0000-0001-9401-6545 + - identifier: 0000-0001-9401-6545 scheme: orcid - affiliations: - name: Northwestern University family_name: Shen given_name: Sida + id: 0000-0002-0295-2545 identifiers: - - identifier: https://orcid.org/0000-0002-0295-2545 + - identifier: 0000-0002-0295-2545 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: GUTZMER given_name: JENS + id: 0000-0002-1034-6545 identifiers: - - identifier: https://orcid.org/0000-0002-1034-6545 + - identifier: 0000-0002-1034-6545 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Gatsogiannis given_name: Christos + id: 0000-0002-4922-4545 identifiers: - - identifier: https://orcid.org/0000-0002-4922-4545 + - identifier: 0000-0002-4922-4545 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Brown given_name: Michael + id: 0000-0002-8255-0545 identifiers: - - identifier: https://orcid.org/0000-0002-8255-0545 + - identifier: 0000-0002-8255-0545 scheme: orcid - affiliations: - name: Graz University of Technology - name: Pro2Future GmbH family_name: Abdul Hadi given_name: Muaaz + id: 0000-0001-7777-0546 identifiers: - - identifier: https://orcid.org/0000-0001-7777-0546 + - identifier: 0000-0001-7777-0546 scheme: orcid - affiliations: - name: CERN family_name: "V\xE1zquez Furelos" given_name: David + id: 0000-0002-5551-3546 identifiers: - - identifier: https://orcid.org/0000-0002-5551-3546 + - identifier: 0000-0002-5551-3546 scheme: orcid - affiliations: - name: University of Fribourg family_name: Hernandez-Castaneda given_name: Maria Andrea + id: 0000-0002-7151-3546 identifiers: - - identifier: https://orcid.org/0000-0002-7151-3546 + - identifier: 0000-0002-7151-3546 scheme: orcid - affiliations: - name: TU Wien family_name: Quast given_name: Raphael + id: 0000-0003-0419-4546 identifiers: - - identifier: https://orcid.org/0000-0003-0419-4546 + - identifier: 0000-0003-0419-4546 scheme: orcid - affiliations: - name: University of Fribourg family_name: Duruz given_name: Jules + id: 0000-0003-1860-9546 identifiers: - - identifier: https://orcid.org/0000-0003-1860-9546 + - identifier: 0000-0003-1860-9546 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Martens given_name: Bob + id: 0000-0003-3978-4546 identifiers: - - identifier: https://orcid.org/0000-0003-3978-4546 + - identifier: 0000-0003-3978-4546 scheme: orcid - affiliations: - name: Northwestern University family_name: Woitowich given_name: Nicole + id: 0000-0002-3449-2547 identifiers: - - identifier: https://orcid.org/0000-0002-3449-2547 + - identifier: 0000-0002-3449-2547 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Li given_name: Jianning + id: 0000-0002-3782-9547 identifiers: - - identifier: https://orcid.org/0000-0002-3782-9547 + - identifier: 0000-0002-3782-9547 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Ries given_name: Bernard + id: 0000-0003-4395-5547 identifiers: - - identifier: https://orcid.org/0000-0003-4395-5547 + - identifier: 0000-0003-4395-5547 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Retscher given_name: Guenther + id: 0000-0001-6019-1548 identifiers: - - identifier: https://orcid.org/0000-0001-6019-1548 + - identifier: 0000-0001-6019-1548 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Bratschitsch given_name: Rudolf + id: 0000-0002-2368-2548 identifiers: - - identifier: https://orcid.org/0000-0002-2368-2548 + - identifier: 0000-0002-2368-2548 scheme: orcid - affiliations: - name: TU Wien family_name: Kitzler-Zeiler given_name: Markus + id: 0000-0002-4835-3548 identifiers: - - identifier: https://orcid.org/0000-0002-4835-3548 + - identifier: 0000-0002-4835-3548 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ruffieux given_name: Jan + id: 0000-0003-0150-5548 identifiers: - - identifier: https://orcid.org/0000-0003-0150-5548 + - identifier: 0000-0003-0150-5548 scheme: orcid - affiliations: - name: TU Wien family_name: Held given_name: Karsten + id: 0000-0001-5984-8549 identifiers: - - identifier: https://orcid.org/0000-0001-5984-8549 + - identifier: 0000-0001-5984-8549 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Miyazaki given_name: Yoshinori + id: 0000-0001-8325-8549 identifiers: - - identifier: https://orcid.org/0000-0001-8325-8549 + - identifier: 0000-0001-8325-8549 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Collopy given_name: Peter + id: 0000-0002-0979-6549 identifiers: - - identifier: https://orcid.org/0000-0002-0979-6549 + - identifier: 0000-0002-0979-6549 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Cardona-Montoya given_name: Miguel Antonio + id: 0000-0002-1140-7549 identifiers: - - identifier: https://orcid.org/0000-0002-1140-7549 + - identifier: 0000-0002-1140-7549 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Schmitz given_name: Marion + id: 0000-0002-2055-7549 identifiers: - - identifier: https://orcid.org/0000-0002-2055-7549 + - identifier: 0000-0002-2055-7549 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: Fordham University - Rose Hill Campus family_name: Hein given_name: Hans-Joachim + id: 0000-0002-3719-9549 identifiers: - - identifier: https://orcid.org/0000-0002-3719-9549 + - identifier: 0000-0002-3719-9549 scheme: orcid - affiliations: - name: University of Fribourg family_name: Rettig given_name: Laura + id: 0000-0002-9765-0549 identifiers: - - identifier: https://orcid.org/0000-0002-9765-0549 + - identifier: 0000-0002-9765-0549 scheme: orcid - affiliations: - name: TU Wien family_name: Popov given_name: Tom + id: 0000-0002-9905-8549 identifiers: - - identifier: https://orcid.org/0000-0002-9905-8549 + - identifier: 0000-0002-9905-8549 scheme: orcid - affiliations: - name: Northwestern University family_name: Packman given_name: Aaron + id: 0000-0003-3172-4549 identifiers: - - identifier: https://orcid.org/0000-0003-3172-4549 + - identifier: 0000-0003-3172-4549 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Macheroux given_name: Peter + id: 0000-0002-0242-454X identifiers: - - identifier: https://orcid.org/0000-0002-0242-454X + - identifier: 0000-0002-0242-454X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Herber given_name: Paula + id: 0000-0002-5349-154X identifiers: - - identifier: https://orcid.org/0000-0002-5349-154X + - identifier: 0000-0002-5349-154X scheme: orcid - affiliations: - name: Northwestern University family_name: Shahriar given_name: Selim + id: 0000-0002-7981-954X identifiers: - - identifier: https://orcid.org/0000-0002-7981-954X + - identifier: 0000-0002-7981-954X scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Fei + id: 0000-0002-8316-454X identifiers: - - identifier: https://orcid.org/0000-0002-8316-454X + - identifier: 0000-0002-8316-454X scheme: orcid - affiliations: - name: Northwestern University - name: Shirley Ryan AbilityLab family_name: Cohen-Zimerman given_name: Shira + id: 0000-0001-6098-2550 identifiers: - - identifier: https://orcid.org/0000-0001-6098-2550 + - identifier: 0000-0001-6098-2550 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Solovieva given_name: Tatiana + id: 0000-0001-6194-2550 identifiers: - - identifier: https://orcid.org/0000-0001-6194-2550 + - identifier: 0000-0001-6194-2550 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Drummer given_name: Verena + id: 0000-0002-0338-0550 identifiers: - - identifier: https://orcid.org/0000-0002-0338-0550 + - identifier: 0000-0002-0338-0550 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Lassnig given_name: Alexander + id: 0000-0002-0918-4550 identifiers: - - identifier: https://orcid.org/0000-0002-0918-4550 + - identifier: 0000-0002-0918-4550 scheme: orcid - affiliations: - name: CERN - name: Laboratoire Leprince-Ringuet and CEA Saclay family_name: Dolan given_name: Stephen + id: 0000-0002-2410-6550 identifiers: - - identifier: https://orcid.org/0000-0002-2410-6550 + - identifier: 0000-0002-2410-6550 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zurita given_name: Maria + id: 0000-0002-2756-9550 identifiers: - - identifier: https://orcid.org/0000-0002-2756-9550 + - identifier: 0000-0002-2756-9550 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bykov given_name: Eduard + id: 0000-0002-4662-0550 identifiers: - - identifier: https://orcid.org/0000-0002-4662-0550 + - identifier: 0000-0002-4662-0550 scheme: orcid - affiliations: - name: Northwestern University family_name: xu given_name: jian + id: 0000-0002-5143-8550 identifiers: - - identifier: https://orcid.org/0000-0002-5143-8550 + - identifier: 0000-0002-5143-8550 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Bartmann given_name: Maximilian Georg + id: 0000-0002-9556-1550 identifiers: - - identifier: https://orcid.org/0000-0002-9556-1550 + - identifier: 0000-0002-9556-1550 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Schurr given_name: Steven + id: 0000-0003-1785-5550 identifiers: - - identifier: https://orcid.org/0000-0003-1785-5550 + - identifier: 0000-0003-1785-5550 scheme: orcid - affiliations: - name: National Institute for Nuclear Physics @@ -25980,251 +29594,286 @@ - name: "Universit\xE0 degli Studi di Catania" family_name: Zuccarello given_name: Francesca + id: 0000-0003-1853-2550 identifiers: - - identifier: https://orcid.org/0000-0003-1853-2550 + - identifier: 0000-0003-1853-2550 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Rosolia given_name: Ugo + id: 0000-0002-1682-0551 identifiers: - - identifier: https://orcid.org/0000-0002-1682-0551 + - identifier: 0000-0002-1682-0551 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kuchen given_name: Herbert + id: 0000-0002-6057-3551 identifiers: - - identifier: https://orcid.org/0000-0002-6057-3551 + - identifier: 0000-0002-6057-3551 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Salzer given_name: Gernot + id: 0000-0002-8950-1551 identifiers: - - identifier: https://orcid.org/0000-0002-8950-1551 + - identifier: 0000-0002-8950-1551 scheme: orcid - affiliations: - name: Northwestern University - name: Dangerous Speech Project family_name: Glavinic given_name: Tonei + id: 0000-0003-0077-4551 identifiers: - - identifier: https://orcid.org/0000-0003-0077-4551 + - identifier: 0000-0003-0077-4551 scheme: orcid - affiliations: - name: CERN family_name: PERRIN given_name: Daniel + id: 0000-0003-4340-8551 identifiers: - - identifier: https://orcid.org/0000-0003-4340-8551 + - identifier: 0000-0003-4340-8551 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Giner Torr\xE9ns" given_name: Marta + id: 0000-0003-4945-5551 identifiers: - - identifier: https://orcid.org/0000-0003-4945-5551 + - identifier: 0000-0003-4945-5551 scheme: orcid - affiliations: - name: Northwestern University family_name: de Andrade Alves given_name: Luiz Gustavo + id: 0000-0001-6204-5552 identifiers: - - identifier: https://orcid.org/0000-0001-6204-5552 + - identifier: 0000-0001-6204-5552 scheme: orcid - affiliations: - name: "Institut Jo\u017Eef Stefan: Ljubljana, SI" - name: "Universit\xE9 de Fribourg" family_name: Golez given_name: Denis + id: 0000-0002-6054-2552 identifiers: - - identifier: https://orcid.org/0000-0002-6054-2552 + - identifier: 0000-0002-6054-2552 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Rosenberger given_name: Burkard + id: 0000-0002-6256-4552 identifiers: - - identifier: https://orcid.org/0000-0002-6256-4552 + - identifier: 0000-0002-6256-4552 scheme: orcid - affiliations: - name: TU Wien family_name: Zauner given_name: Lukas + id: 0000-0002-8373-6552 identifiers: - - identifier: https://orcid.org/0000-0002-8373-6552 + - identifier: 0000-0002-8373-6552 scheme: orcid - affiliations: - name: California Institute of Technology - name: Metrodora Institute family_name: Hemp given_name: James + id: 0000-0001-7193-0553 identifiers: - - identifier: https://orcid.org/0000-0001-7193-0553 + - identifier: 0000-0001-7193-0553 scheme: orcid - affiliations: - name: Northwestern University family_name: Hyun given_name: Woo Jin + id: 0000-0002-2159-8553 identifiers: - - identifier: https://orcid.org/0000-0002-2159-8553 + - identifier: 0000-0002-2159-8553 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Borgognon given_name: Simon + id: 0000-0002-4577-6553 identifiers: - - identifier: https://orcid.org/0000-0002-4577-6553 + - identifier: 0000-0002-4577-6553 scheme: orcid - affiliations: - name: University of Fribourg family_name: Muskens given_name: "Louis Fr\xE9d\xE9ric" + id: 0000-0002-5760-3553 identifiers: - - identifier: https://orcid.org/0000-0002-5760-3553 + - identifier: 0000-0002-5760-3553 scheme: orcid - affiliations: - name: National Institute for Nuclear Physics family_name: Ciarpi given_name: Gabriele + id: 0000-0002-6056-2553 identifiers: - - identifier: https://orcid.org/0000-0002-6056-2553 + - identifier: 0000-0002-6056-2553 scheme: orcid - affiliations: - name: Northwestern University family_name: Aprison given_name: Erin + id: 0000-0002-8820-7553 identifiers: - - identifier: https://orcid.org/0000-0002-8820-7553 + - identifier: 0000-0002-8820-7553 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Meyer given_name: Elisabeth I. + id: 0000-0002-9209-7553 identifiers: - - identifier: https://orcid.org/0000-0002-9209-7553 + - identifier: 0000-0002-9209-7553 scheme: orcid - affiliations: - name: Graz University of Technology - name: Inter-University Research Center for Technology, Work, and Culture family_name: "Sp\xF6k" given_name: Armin + id: 0000-0003-2039-3553 identifiers: - - identifier: https://orcid.org/0000-0003-2039-3553 + - identifier: 0000-0003-2039-3553 scheme: orcid - affiliations: - name: Northwestern University family_name: Reed given_name: Baron + id: 0000-0001-6721-4554 identifiers: - - identifier: https://orcid.org/0000-0001-6721-4554 + - identifier: 0000-0001-6721-4554 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Manz given_name: Stephanie + id: 0000-0002-0540-1554 identifiers: - - identifier: https://orcid.org/0000-0002-0540-1554 + - identifier: 0000-0002-0540-1554 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Schattschneider given_name: Peter + id: 0000-0002-1225-7554 identifiers: - - identifier: https://orcid.org/0000-0002-1225-7554 + - identifier: 0000-0002-1225-7554 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "R\xF6seler" given_name: Stefan + id: 0000-0002-2764-3554 identifiers: - - identifier: https://orcid.org/0000-0002-2764-3554 + - identifier: 0000-0002-2764-3554 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Imbrock given_name: "J\xF6rg" + id: 0000-0003-2222-9554 identifiers: - - identifier: https://orcid.org/0000-0003-2222-9554 + - identifier: 0000-0003-2222-9554 scheme: orcid - affiliations: - name: University of Bamberg family_name: elmamooz given_name: golnaz + id: 0000-0003-2383-8554 identifiers: - - identifier: https://orcid.org/0000-0003-2383-8554 + - identifier: 0000-0003-2383-8554 scheme: orcid - affiliations: - name: Northwestern University family_name: Forman given_name: Christopher + id: 0000-0001-5898-7555 identifiers: - - identifier: https://orcid.org/0000-0001-5898-7555 + - identifier: 0000-0001-5898-7555 scheme: orcid - affiliations: - name: Centogene AG - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Bauer given_name: Peter + id: 0000-0001-9414-4555 identifiers: - - identifier: https://orcid.org/0000-0001-9414-4555 + - identifier: 0000-0001-9414-4555 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Meller given_name: Richard + id: 0000-0002-3801-2555 identifiers: - - identifier: https://orcid.org/0000-0002-3801-2555 + - identifier: 0000-0002-3801-2555 scheme: orcid - affiliations: - name: TU Wien family_name: Quehenberger given_name: Julian + id: 0000-0002-5075-9555 identifiers: - - identifier: https://orcid.org/0000-0002-5075-9555 + - identifier: 0000-0002-5075-9555 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Sprengel given_name: Wolfgang + id: 0000-0002-8335-8555 identifiers: - - identifier: https://orcid.org/0000-0002-8335-8555 + - identifier: 0000-0002-8335-8555 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Laughner given_name: Joshua + id: 0000-0002-8599-4555 identifiers: - - identifier: https://orcid.org/0000-0002-8599-4555 + - identifier: 0000-0002-8599-4555 scheme: orcid - affiliations: - name: Northwestern University family_name: Figueroa-Feliciano given_name: Enectali + id: 0000-0001-9285-5556 identifiers: - - identifier: https://orcid.org/0000-0001-9285-5556 + - identifier: 0000-0001-9285-5556 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Meiners given_name: Paul + id: 0000-0002-0022-9556 identifiers: - - identifier: https://orcid.org/0000-0002-0022-9556 + - identifier: 0000-0002-0022-9556 scheme: orcid - affiliations: - name: Northwestern University family_name: Tumblin given_name: John + id: 0000-0002-1985-1556 identifiers: - - identifier: https://orcid.org/0000-0002-1985-1556 + - identifier: 0000-0002-1985-1556 scheme: orcid - affiliations: - name: Northwestern University family_name: Wu given_name: Weiqiang + id: 0000-0002-2851-2556 identifiers: - - identifier: https://orcid.org/0000-0002-2851-2556 + - identifier: 0000-0002-2851-2556 scheme: orcid - affiliations: - name: Deutsches Jugendinstitut eV @@ -26232,8 +29881,9 @@ - name: University of Bamberg family_name: Kuger given_name: Susanne + id: 0000-0002-7874-7556 identifiers: - - identifier: https://orcid.org/0000-0002-7874-7556 + - identifier: 0000-0002-7874-7556 scheme: orcid - affiliations: - name: "Faculty of Medicine and University Hospital Carl Gustav Carus, Technische\ @@ -26246,23 +29896,26 @@ t Dresden" family_name: Krause given_name: Mechthild + id: 0000-0003-1776-9556 identifiers: - - identifier: https://orcid.org/0000-0003-1776-9556 + - identifier: 0000-0003-1776-9556 scheme: orcid - affiliations: - name: TU Wien - name: Charles University family_name: Nagy given_name: "Tom\xE1\u0161" + id: 0000-0003-4307-8556 identifiers: - - identifier: https://orcid.org/0000-0003-4307-8556 + - identifier: 0000-0003-4307-8556 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Hirschler given_name: Petra + id: 0000-0001-5793-0557 identifiers: - - identifier: https://orcid.org/0000-0001-5793-0557 + - identifier: 0000-0001-5793-0557 scheme: orcid - affiliations: - name: Universitat Zurich @@ -26270,392 +29923,447 @@ - name: University of Fribourg family_name: Ingrid given_name: Hove + id: 0000-0002-8445-4557 identifiers: - - identifier: https://orcid.org/0000-0002-8445-4557 + - identifier: 0000-0002-8445-4557 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: Centre Hospitalier Universitaire Vaudois family_name: Rue Queralt given_name: Joan + id: 0000-0002-9595-4557 identifiers: - - identifier: https://orcid.org/0000-0002-9595-4557 + - identifier: 0000-0002-9595-4557 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Fries given_name: Thomas-Peter + id: 0000-0003-1210-1557 identifiers: - - identifier: https://orcid.org/0000-0003-1210-1557 + - identifier: 0000-0003-1210-1557 scheme: orcid - affiliations: - name: Northwestern University family_name: Bedzyk given_name: Michael + id: 0000-0002-1026-4558 identifiers: - - identifier: https://orcid.org/0000-0002-1026-4558 + - identifier: 0000-0002-1026-4558 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Grengg given_name: Cyrill + id: 0000-0002-1777-3558 identifiers: - - identifier: https://orcid.org/0000-0002-1777-3558 + - identifier: 0000-0002-1777-3558 scheme: orcid - affiliations: - name: California Institute of Technology - name: Pennsylvania State University family_name: Weiss given_name: Gabriella + id: 0000-0002-9571-2558 identifiers: - - identifier: https://orcid.org/0000-0002-9571-2558 + - identifier: 0000-0002-9571-2558 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Ladurner given_name: Christoph + id: 0000-0003-3653-7558 identifiers: - - identifier: https://orcid.org/0000-0003-3653-7558 + - identifier: 0000-0003-3653-7558 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Moorman given_name: Ruth + id: 0000-0001-5054-1559 identifiers: - - identifier: https://orcid.org/0000-0001-5054-1559 + - identifier: 0000-0001-5054-1559 scheme: orcid - affiliations: - name: TU Wien - name: "IPJ Ingenieurb\xFCro P. Jung" family_name: Gourlis given_name: Georgios + id: 0000-0002-2575-0559 identifiers: - - identifier: https://orcid.org/0000-0002-2575-0559 + - identifier: 0000-0002-2575-0559 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Degl'Innocenti given_name: Irene + id: 0000-0002-5266-0559 identifiers: - - identifier: https://orcid.org/0000-0002-5266-0559 + - identifier: 0000-0002-5266-0559 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Gentil-Beccot given_name: Anne + id: 0000-0001-9199-655X identifiers: - - identifier: https://orcid.org/0000-0001-9199-655X + - identifier: 0000-0001-9199-655X scheme: orcid - affiliations: - name: University of Michigan - name: Northwestern University family_name: Yan given_name: Haoyang + id: 0000-0001-9195-355X identifiers: - - identifier: https://orcid.org/0000-0001-9195-355X + - identifier: 0000-0001-9195-355X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hsieh given_name: David + id: 0000-0002-0812-955X identifiers: - - identifier: https://orcid.org/0000-0002-0812-955X + - identifier: 0000-0002-0812-955X scheme: orcid - affiliations: - name: TU Wien family_name: Wang given_name: Wangshu + id: 0000-0003-2307-155X identifiers: - - identifier: https://orcid.org/0000-0003-2307-155X + - identifier: 0000-0003-2307-155X scheme: orcid - affiliations: - name: TU Wien family_name: Schittmayer given_name: Matthias + id: 0000-0003-3249-655X identifiers: - - identifier: https://orcid.org/0000-0003-3249-655X + - identifier: 0000-0003-3249-655X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: liebau given_name: eva + id: 0000-0001-9119-6560 identifiers: - - identifier: https://orcid.org/0000-0001-9119-6560 + - identifier: 0000-0001-9119-6560 scheme: orcid - affiliations: - name: University of Fribourg family_name: Sato given_name: Sayaka + id: 0000-0002-1406-0560 identifiers: - - identifier: https://orcid.org/0000-0002-1406-0560 + - identifier: 0000-0002-1406-0560 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: GHOSE given_name: SANJIT + id: 0000-0003-0245-8560 identifiers: - - identifier: https://orcid.org/0000-0003-0245-8560 + - identifier: 0000-0003-0245-8560 scheme: orcid - affiliations: - name: California Institute of Technology - name: Institut d'Optique Graduate School family_name: Vest given_name: Benjamin + id: 0000-0003-3640-4560 identifiers: - - identifier: https://orcid.org/0000-0003-3640-4560 + - identifier: 0000-0003-3640-4560 scheme: orcid - affiliations: - name: TU Wien family_name: Wottawa given_name: David + id: 0000-0002-5389-9561 identifiers: - - identifier: https://orcid.org/0000-0002-5389-9561 + - identifier: 0000-0002-5389-9561 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Watschinger given_name: Raphael + id: 0000-0002-7750-8561 identifiers: - - identifier: https://orcid.org/0000-0002-7750-8561 + - identifier: 0000-0002-7750-8561 scheme: orcid - affiliations: - name: University of Fribourg family_name: Babel given_name: Lucille + id: 0000-0002-8071-5561 identifiers: - - identifier: https://orcid.org/0000-0002-8071-5561 + - identifier: 0000-0002-8071-5561 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Sch\xF6llhammer" given_name: Daniel + id: 0000-0002-9285-5561 identifiers: - - identifier: https://orcid.org/0000-0002-9285-5561 + - identifier: 0000-0002-9285-5561 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Santana Martinez given_name: Irma Ivette + id: 0000-0003-0468-4561 identifiers: - - identifier: https://orcid.org/0000-0003-0468-4561 + - identifier: 0000-0003-0468-4561 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yung given_name: Yuk + id: 0000-0002-4263-2562 identifiers: - - identifier: https://orcid.org/0000-0002-4263-2562 + - identifier: 0000-0002-4263-2562 scheme: orcid - affiliations: - name: TU Wien family_name: Murschenhofer given_name: Dominik + id: 0000-0002-5201-3562 identifiers: - - identifier: https://orcid.org/0000-0002-5201-3562 + - identifier: 0000-0002-5201-3562 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gao given_name: Wei + id: 0000-0002-8503-4562 identifiers: - - identifier: https://orcid.org/0000-0002-8503-4562 + - identifier: 0000-0002-8503-4562 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "K\xF6tterheinrich" given_name: Kim + id: 0000-0002-8782-2562 identifiers: - - identifier: https://orcid.org/0000-0002-8782-2562 + - identifier: 0000-0002-8782-2562 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Gachot given_name: Carsten + id: 0000-0001-6981-1563 identifiers: - - identifier: https://orcid.org/0000-0001-6981-1563 + - identifier: 0000-0001-6981-1563 scheme: orcid - affiliations: - name: University of Bamberg family_name: Burghardt given_name: Lars + id: 0000-0001-9308-8563 identifiers: - - identifier: https://orcid.org/0000-0001-9308-8563 + - identifier: 0000-0001-9308-8563 scheme: orcid - affiliations: - name: CERN family_name: Martino given_name: Michele + id: 0000-0002-4483-4563 identifiers: - - identifier: https://orcid.org/0000-0002-4483-4563 + - identifier: 0000-0002-4483-4563 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhu given_name: Shengshuang + id: 0000-0002-5015-0563 identifiers: - - identifier: https://orcid.org/0000-0002-5015-0563 + - identifier: 0000-0002-5015-0563 scheme: orcid - affiliations: - name: Northwestern University family_name: Desmichel given_name: Perrine + id: 0000-0002-8261-1563 identifiers: - - identifier: https://orcid.org/0000-0002-8261-1563 + - identifier: 0000-0002-8261-1563 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Oyebola given_name: Folajimi + id: 0000-0003-4528-0563 identifiers: - - identifier: https://orcid.org/0000-0003-4528-0563 + - identifier: 0000-0003-4528-0563 scheme: orcid - affiliations: - name: Northwestern University family_name: Alshurafa given_name: Nabil + id: 0000-0001-6681-7564 identifiers: - - identifier: https://orcid.org/0000-0001-6681-7564 + - identifier: 0000-0001-6681-7564 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Pausch given_name: Richard + id: 0000-0001-7990-9564 identifiers: - - identifier: https://orcid.org/0000-0001-7990-9564 + - identifier: 0000-0001-7990-9564 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Akeson given_name: Rachel + id: 0000-0001-9674-1564 identifiers: - - identifier: https://orcid.org/0000-0001-9674-1564 + - identifier: 0000-0001-9674-1564 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Medves given_name: Maud + id: 0000-0002-0624-1564 identifiers: - - identifier: https://orcid.org/0000-0002-0624-1564 + - identifier: 0000-0002-0624-1564 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Pickarski given_name: Nadine + id: 0000-0003-1709-9564 identifiers: - - identifier: https://orcid.org/0000-0003-1709-9564 + - identifier: 0000-0003-1709-9564 scheme: orcid - affiliations: - name: Northwestern University family_name: Sabol given_name: Terri + id: 0000-0003-1991-6564 identifiers: - - identifier: https://orcid.org/0000-0003-1991-6564 + - identifier: 0000-0003-1991-6564 scheme: orcid - affiliations: - name: University of Bamberg family_name: Oemig given_name: Christoph + id: 0000-0003-4490-0564 identifiers: - - identifier: https://orcid.org/0000-0003-4490-0564 + - identifier: 0000-0003-4490-0564 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Marshall given_name: Jason + id: 0000-0003-4504-9564 identifiers: - - identifier: https://orcid.org/0000-0003-4504-9564 + - identifier: 0000-0003-4504-9564 scheme: orcid - affiliations: - name: CERN family_name: Valassi given_name: Andrea + id: 0000-0001-9322-9565 identifiers: - - identifier: https://orcid.org/0000-0001-9322-9565 + - identifier: 0000-0001-9322-9565 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: GOSHIMA given_name: Masahiro + id: 0000-0002-1798-0565 identifiers: - - identifier: https://orcid.org/0000-0002-1798-0565 + - identifier: 0000-0002-1798-0565 scheme: orcid - affiliations: - name: TU Wien family_name: Gruber given_name: Michael + id: 0000-0002-6179-7565 identifiers: - - identifier: https://orcid.org/0000-0002-6179-7565 + - identifier: 0000-0002-6179-7565 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Baranowska given_name: Paulina + id: 0000-0002-7041-5565 identifiers: - - identifier: https://orcid.org/0000-0002-7041-5565 + - identifier: 0000-0002-7041-5565 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Lewis given_name: Nicole + id: 0000-0003-0146-1565 identifiers: - - identifier: https://orcid.org/0000-0003-0146-1565 + - identifier: 0000-0003-0146-1565 scheme: orcid - affiliations: - name: Northwestern University family_name: Yu given_name: Yang + id: 0000-0003-4961-7565 identifiers: - - identifier: https://orcid.org/0000-0003-4961-7565 + - identifier: 0000-0003-4961-7565 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Vovchok given_name: Dimitriy + id: 0000-0001-6423-7566 identifiers: - - identifier: https://orcid.org/0000-0001-6423-7566 + - identifier: 0000-0001-6423-7566 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Koch given_name: Jonathan + id: 0000-0002-5090-1566 identifiers: - - identifier: https://orcid.org/0000-0002-5090-1566 + - identifier: 0000-0002-5090-1566 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Zhang given_name: Ziqian + id: 0000-0002-5420-8566 identifiers: - - identifier: https://orcid.org/0000-0002-5420-8566 + - identifier: 0000-0002-5420-8566 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Lesch given_name: Andreas + id: 0000-0003-2492-3566 identifiers: - - identifier: https://orcid.org/0000-0003-2492-3566 + - identifier: 0000-0003-2492-3566 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Teodoro given_name: Rodrigo + id: 0000-0002-1425-0567 identifiers: - - identifier: https://orcid.org/0000-0002-1425-0567 + - identifier: 0000-0002-1425-0567 scheme: orcid - affiliations: - name: Northwestern University family_name: Levy given_name: Rachel + id: 0000-0002-6215-6567 identifiers: - - identifier: https://orcid.org/0000-0002-6215-6567 + - identifier: 0000-0002-6215-6567 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ferreira given_name: Vinicius + id: 0000-0002-9522-2567 identifiers: - - identifier: https://orcid.org/0000-0002-9522-2567 + - identifier: 0000-0002-9522-2567 scheme: orcid - affiliations: - name: "Landesamt f\xFCr Denkmalpflege Hessen" @@ -26673,465 +30381,530 @@ - name: Polish Academy of Sciences family_name: "K\xF6pp-Junk" given_name: Heidi + id: 0000-0001-8193-1568 identifiers: - - identifier: https://orcid.org/0000-0001-8193-1568 + - identifier: 0000-0001-8193-1568 scheme: orcid - affiliations: - name: University of Fribourg family_name: Werner given_name: Philipp + id: 0000-0002-2136-6568 identifiers: - - identifier: https://orcid.org/0000-0002-2136-6568 + - identifier: 0000-0002-2136-6568 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" - name: "University of T\xFCbingen" family_name: Ossowski given_name: Stephan + id: 0000-0002-7416-9568 identifiers: - - identifier: https://orcid.org/0000-0002-7416-9568 + - identifier: 0000-0002-7416-9568 scheme: orcid - affiliations: - name: Northwestern University family_name: Strauss given_name: Michael + id: 0000-0003-0808-2568 identifiers: - - identifier: https://orcid.org/0000-0003-0808-2568 + - identifier: 0000-0003-0808-2568 scheme: orcid - affiliations: - name: TU Wien family_name: Ahmetaj given_name: Shqiponja + id: 0000-0003-3165-3568 identifiers: - - identifier: https://orcid.org/0000-0003-3165-3568 + - identifier: 0000-0003-3165-3568 scheme: orcid - affiliations: - name: University of Fribourg family_name: "M\xFChlematter" given_name: Christophe + id: 0000-0002-5045-1569 identifiers: - - identifier: https://orcid.org/0000-0002-5045-1569 + - identifier: 0000-0002-5045-1569 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Drmota given_name: Michael + id: 0000-0002-6876-6569 identifiers: - - identifier: https://orcid.org/0000-0002-6876-6569 + - identifier: 0000-0002-6876-6569 scheme: orcid - affiliations: - name: University of Fribourg family_name: Hankache given_name: Jihane + id: 0000-0002-9421-9569 identifiers: - - identifier: https://orcid.org/0000-0002-9421-9569 + - identifier: 0000-0002-9421-9569 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Parra-Martinez given_name: Julio + id: 0000-0003-0178-1569 identifiers: - - identifier: https://orcid.org/0000-0003-0178-1569 + - identifier: 0000-0003-0178-1569 scheme: orcid - affiliations: - name: TU Wien - name: Foundation for Research and Technology Hellas family_name: Vardas given_name: Ioannis + id: 0000-0001-5461-556X identifiers: - - identifier: https://orcid.org/0000-0001-5461-556X + - identifier: 0000-0001-5461-556X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Homes given_name: Christopher + id: 0000-0001-7087-756X identifiers: - - identifier: https://orcid.org/0000-0001-7087-756X + - identifier: 0000-0001-7087-756X scheme: orcid - affiliations: - name: CERN family_name: Afik given_name: Yoav + id: 0000-0001-8102-356X identifiers: - - identifier: https://orcid.org/0000-0001-8102-356X + - identifier: 0000-0001-8102-356X scheme: orcid - affiliations: - name: TU Wien family_name: Seier given_name: Martina + id: 0000-0001-9530-256X identifiers: - - identifier: https://orcid.org/0000-0001-9530-256X + - identifier: 0000-0001-9530-256X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Krenner given_name: Hubert + id: 0000-0002-0696-456X identifiers: - - identifier: https://orcid.org/0000-0002-0696-456X + - identifier: 0000-0002-0696-456X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cohen given_name: Alexander + id: 0000-0002-2818-656X identifiers: - - identifier: https://orcid.org/0000-0002-2818-656X + - identifier: 0000-0002-2818-656X scheme: orcid - affiliations: - name: "University of M\xFCnster" - name: Jacobs University Bremen gGmbH family_name: Tan given_name: Shu Ling + id: 0000-0002-6500-856X identifiers: - - identifier: https://orcid.org/0000-0002-6500-856X + - identifier: 0000-0002-6500-856X scheme: orcid - affiliations: - name: TU Wien - name: Luxembourg Institute of Science and Technology family_name: Bonanno given_name: Enrico + id: 0000-0002-8604-456X identifiers: - - identifier: https://orcid.org/0000-0002-8604-456X + - identifier: 0000-0002-8604-456X scheme: orcid - affiliations: - name: TU Wien family_name: Himmelbauer given_name: Irene + id: 0000-0002-9592-856X identifiers: - - identifier: https://orcid.org/0000-0002-9592-856X + - identifier: 0000-0002-9592-856X scheme: orcid - affiliations: - name: Northwestern University family_name: Shin given_name: Hee-Sup + id: 0000-0003-1874-756X identifiers: - - identifier: https://orcid.org/0000-0003-1874-756X + - identifier: 0000-0003-1874-756X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Duhr given_name: Claude + id: 0000-0001-5820-3570 identifiers: - - identifier: https://orcid.org/0000-0001-5820-3570 + - identifier: 0000-0001-5820-3570 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Alexander given_name: Grasser + id: 0000-0001-6560-6570 identifiers: - - identifier: https://orcid.org/0000-0001-6560-6570 + - identifier: 0000-0001-6560-6570 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yamamoto given_name: Hiroaki + id: 0000-0001-6919-9570 identifiers: - - identifier: https://orcid.org/0000-0001-6919-9570 + - identifier: 0000-0001-6919-9570 scheme: orcid - affiliations: - name: University of Fribourg - name: Hellenic Ministry of Culture family_name: Bourbou given_name: Chryssi + id: 0000-0002-0673-8570 identifiers: - - identifier: https://orcid.org/0000-0002-0673-8570 + - identifier: 0000-0002-0673-8570 scheme: orcid - affiliations: - name: "Humboldt-Universit\xE4t zu Berlin" - name: Northwestern University family_name: Dumele given_name: Oliver + id: 0000-0002-3277-6570 identifiers: - - identifier: https://orcid.org/0000-0002-3277-6570 + - identifier: 0000-0002-3277-6570 scheme: orcid - affiliations: - name: Northwestern University family_name: Liu given_name: Suwei + id: 0000-0002-3592-6570 identifiers: - - identifier: https://orcid.org/0000-0002-3592-6570 + - identifier: 0000-0002-3592-6570 scheme: orcid - affiliations: - name: University of Bamberg family_name: Felch given_name: Vanessa + id: 0000-0002-6133-1570 identifiers: - - identifier: https://orcid.org/0000-0002-6133-1570 + - identifier: 0000-0002-6133-1570 scheme: orcid - affiliations: - name: Northwestern University family_name: Borges given_name: Letizia Goncalves + id: 0000-0002-6154-6571 identifiers: - - identifier: https://orcid.org/0000-0002-6154-6571 + - identifier: 0000-0002-6154-6571 scheme: orcid - affiliations: - name: Northwestern University family_name: Dave given_name: Swapna + id: 0000-0002-6898-3571 identifiers: - - identifier: https://orcid.org/0000-0002-6898-3571 + - identifier: 0000-0002-6898-3571 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hsieh given_name: Yu-Chi + id: 0000-0003-0823-6571 identifiers: - - identifier: https://orcid.org/0000-0003-0823-6571 + - identifier: 0000-0003-0823-6571 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Bra\u010Di\u0107" given_name: Marko + id: 0000-0001-6528-3572 identifiers: - - identifier: https://orcid.org/0000-0001-6528-3572 + - identifier: 0000-0001-6528-3572 scheme: orcid - affiliations: - name: Northwestern University family_name: Parrish given_name: Todd + id: 0000-0002-1184-1572 identifiers: - - identifier: https://orcid.org/0000-0002-1184-1572 + - identifier: 0000-0002-1184-1572 scheme: orcid - affiliations: - name: Northwestern University family_name: Procter given_name: Dean + id: 0000-0002-3037-2572 identifiers: - - identifier: https://orcid.org/0000-0002-3037-2572 + - identifier: 0000-0002-3037-2572 scheme: orcid - affiliations: - name: Northwestern University family_name: Sauls given_name: James + id: 0000-0002-3619-2572 identifiers: - - identifier: https://orcid.org/0000-0002-3619-2572 + - identifier: 0000-0002-3619-2572 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Krause given_name: Matthias + id: 0000-0003-3408-3572 identifiers: - - identifier: https://orcid.org/0000-0003-3408-3572 + - identifier: 0000-0003-3408-3572 scheme: orcid - affiliations: - name: TU Wien family_name: Tachtler given_name: Franziska + id: 0000-0001-6668-5573 identifiers: - - identifier: https://orcid.org/0000-0001-6668-5573 + - identifier: 0000-0001-6668-5573 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Maycock given_name: Lee + id: 0000-0001-8980-1573 identifiers: - - identifier: https://orcid.org/0000-0001-8980-1573 + - identifier: 0000-0001-8980-1573 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Radeschnig given_name: Ulrich + id: 0000-0002-7841-7573 identifiers: - - identifier: https://orcid.org/0000-0002-7841-7573 + - identifier: 0000-0002-7841-7573 scheme: orcid - affiliations: - name: CERN family_name: Stelzer given_name: Joerg + id: 0000-0003-0690-8573 identifiers: - - identifier: https://orcid.org/0000-0003-0690-8573 + - identifier: 0000-0003-0690-8573 scheme: orcid - affiliations: - name: Northwestern University family_name: Yu given_name: Se-young + id: 0000-0003-3503-9573 identifiers: - - identifier: https://orcid.org/0000-0003-3503-9573 + - identifier: 0000-0003-3503-9573 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Ohlberger given_name: Mario + id: 0000-0002-6260-3574 identifiers: - - identifier: https://orcid.org/0000-0002-6260-3574 + - identifier: 0000-0002-6260-3574 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Ortner given_name: Christian + id: 0000-0002-6728-7574 identifiers: - - identifier: https://orcid.org/0000-0002-6728-7574 + - identifier: 0000-0002-6728-7574 scheme: orcid - affiliations: - name: University of Bamberg family_name: Manner given_name: Johannes + id: 0000-0002-7298-3574 identifiers: - - identifier: https://orcid.org/0000-0002-7298-3574 + - identifier: 0000-0002-7298-3574 scheme: orcid - affiliations: - name: King Abdullah University of Science and Technology (KAUST) - name: "Technische Universit\xE4t Wien" family_name: Viola given_name: Ivan + id: 0000-0003-4248-6574 identifiers: - - identifier: https://orcid.org/0000-0003-4248-6574 + - identifier: 0000-0003-4248-6574 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Kruyt given_name: Peter Martin + id: 0000-0001-7242-5575 identifiers: - - identifier: https://orcid.org/0000-0001-7242-5575 + - identifier: 0000-0001-7242-5575 scheme: orcid - affiliations: - name: Northwestern University family_name: Zamperini given_name: Paola + id: 0000-0002-8211-4575 identifiers: - - identifier: https://orcid.org/0000-0002-8211-4575 + - identifier: 0000-0002-8211-4575 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ravanfar given_name: Raheleh + id: 0000-0003-2992-0575 identifiers: - - identifier: https://orcid.org/0000-0003-2992-0575 + - identifier: 0000-0003-2992-0575 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Hoelbling given_name: Dominik + id: 0000-0001-7099-2576 identifiers: - - identifier: https://orcid.org/0000-0001-7099-2576 + - identifier: 0000-0001-7099-2576 scheme: orcid - affiliations: - name: Northwestern University family_name: Davies given_name: Drew Edward + id: 0000-0001-8678-3576 identifiers: - - identifier: https://orcid.org/0000-0001-8678-3576 + - identifier: 0000-0001-8678-3576 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Ricke given_name: Alexander + id: 0000-0001-8627-3576 identifiers: - - identifier: https://orcid.org/0000-0001-8627-3576 + - identifier: 0000-0001-8627-3576 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Ranftl given_name: Sascha + id: 0000-0001-8956-2576 identifiers: - - identifier: https://orcid.org/0000-0001-8956-2576 + - identifier: 0000-0001-8956-2576 scheme: orcid - affiliations: - name: CERN family_name: Delprat given_name: Laurent + id: 0000-0002-0907-6576 identifiers: - - identifier: https://orcid.org/0000-0002-0907-6576 + - identifier: 0000-0002-0907-6576 scheme: orcid - affiliations: - name: CERN family_name: Danielsson given_name: Hans + id: 0000-0002-1016-5576 identifiers: - - identifier: https://orcid.org/0000-0002-1016-5576 + - identifier: 0000-0002-1016-5576 scheme: orcid - affiliations: - name: TU Wien family_name: Schreiberhuber given_name: Simon + id: 0000-0002-1138-7576 identifiers: - - identifier: https://orcid.org/0000-0002-1138-7576 + - identifier: 0000-0002-1138-7576 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Eimer given_name: Andreas + id: 0000-0002-5136-2576 identifiers: - - identifier: https://orcid.org/0000-0002-5136-2576 + - identifier: 0000-0002-5136-2576 scheme: orcid - affiliations: - name: CERN family_name: Ruf given_name: Thomas + id: 0000-0002-8657-3576 identifiers: - - identifier: https://orcid.org/0000-0002-8657-3576 + - identifier: 0000-0002-8657-3576 scheme: orcid - affiliations: - name: TU Wien family_name: "K\xF6ck" given_name: Bianca + id: 0000-0001-8977-7577 identifiers: - - identifier: https://orcid.org/0000-0001-8977-7577 + - identifier: 0000-0001-8977-7577 scheme: orcid - affiliations: - name: University of Kansas - name: CERN family_name: Krintiras given_name: Georgios Konstantinos + id: 0000-0002-0380-7577 identifiers: - - identifier: https://orcid.org/0000-0002-0380-7577 + - identifier: 0000-0002-0380-7577 scheme: orcid - affiliations: - name: Northwestern University family_name: Stroh given_name: Michael + id: 0000-0002-3019-4577 identifiers: - - identifier: https://orcid.org/0000-0002-3019-4577 + - identifier: 0000-0002-3019-4577 scheme: orcid - affiliations: - name: Northwestern University family_name: Drenan given_name: Ryan + id: 0000-0002-8141-8577 identifiers: - - identifier: https://orcid.org/0000-0002-8141-8577 + - identifier: 0000-0002-8141-8577 scheme: orcid - affiliations: - name: Northwestern University family_name: Gerbasi given_name: Robert + id: 0000-0001-5573-0578 identifiers: - - identifier: https://orcid.org/0000-0001-5573-0578 + - identifier: 0000-0001-5573-0578 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Dona given_name: Rizart + id: 0000-0001-6219-9578 identifiers: - - identifier: https://orcid.org/0000-0001-6219-9578 + - identifier: 0000-0001-6219-9578 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kanesue given_name: Takeshi + id: 0000-0002-3142-2578 identifiers: - - identifier: https://orcid.org/0000-0002-3142-2578 + - identifier: 0000-0002-3142-2578 scheme: orcid - affiliations: - name: University of Fribourg family_name: Schutz given_name: yves + id: 0000-0002-3651-4578 identifiers: - - identifier: https://orcid.org/0000-0002-3651-4578 + - identifier: 0000-0002-3651-4578 scheme: orcid - affiliations: - name: Northwestern University family_name: Schmitt given_name: Michael + id: 0000-0003-0814-3578 identifiers: - - identifier: https://orcid.org/0000-0003-0814-3578 + - identifier: 0000-0003-0814-3578 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schmerler given_name: Steve + id: 0000-0003-1354-0578 identifiers: - - identifier: https://orcid.org/0000-0003-1354-0578 + - identifier: 0000-0003-1354-0578 scheme: orcid - affiliations: - name: "TH K\xF6ln \u2013 University of Applied Sciences" @@ -27139,343 +30912,391 @@ - name: University of Vienna family_name: Schaffar given_name: Andrea + id: 0000-0003-1463-1578 identifiers: - - identifier: https://orcid.org/0000-0003-1463-1578 + - identifier: 0000-0003-1463-1578 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Sukrow given_name: Oliver + id: 0000-0003-2655-2578 identifiers: - - identifier: https://orcid.org/0000-0003-2655-2578 + - identifier: 0000-0003-2655-2578 scheme: orcid - affiliations: - name: University of Fribourg family_name: Vanhulst given_name: Pierre + id: 0000-0001-5176-8579 identifiers: - - identifier: https://orcid.org/0000-0001-5176-8579 + - identifier: 0000-0001-5176-8579 scheme: orcid - affiliations: - name: Swiss Institute of Bioinformatics - name: University of Fribourg family_name: Falquet given_name: Laurent + id: 0000-0001-8102-7579 identifiers: - - identifier: https://orcid.org/0000-0001-8102-7579 + - identifier: 0000-0001-8102-7579 scheme: orcid - affiliations: - name: Northwestern University family_name: Driscoll given_name: Michelle + id: 0000-0002-0930-9579 identifiers: - - identifier: https://orcid.org/0000-0002-0930-9579 + - identifier: 0000-0002-0930-9579 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Andres given_name: Frederic + id: 0000-0002-5003-7579 identifiers: - - identifier: https://orcid.org/0000-0002-5003-7579 + - identifier: 0000-0002-5003-7579 scheme: orcid - affiliations: - name: Alma Mater Studiorum Universita' di Bologna - name: Istituto Nazionale di Fisica Nucleare family_name: Decker de Sousa given_name: Leticia + id: 0000-0003-3709-5579 identifiers: - - identifier: https://orcid.org/0000-0003-3709-5579 + - identifier: 0000-0003-3709-5579 scheme: orcid - affiliations: - name: Northwestern University family_name: Blythe given_name: Shelby + id: 0000-0003-4986-2579 identifiers: - - identifier: https://orcid.org/0000-0003-4986-2579 + - identifier: 0000-0003-4986-2579 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nunez given_name: Evan + id: 0000-0001-5595-757X identifiers: - - identifier: https://orcid.org/0000-0001-5595-757X + - identifier: 0000-0001-5595-757X scheme: orcid - affiliations: - name: TU Wien family_name: Thormann given_name: Sebastian + id: 0000-0002-5802-457X identifiers: - - identifier: https://orcid.org/0000-0002-5802-457X + - identifier: 0000-0002-5802-457X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: ROTOP Pharmaka GmbH family_name: Pant given_name: Kritee + id: 0000-0003-3653-957X identifiers: - - identifier: https://orcid.org/0000-0003-3653-957X + - identifier: 0000-0003-3653-957X scheme: orcid - affiliations: - name: Northwestern University family_name: Shaw given_name: Aaron + id: 0000-0003-4330-957X identifiers: - - identifier: https://orcid.org/0000-0003-4330-957X + - identifier: 0000-0003-4330-957X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yu given_name: Haiwang + id: 0000-0002-2973-4580 identifiers: - - identifier: https://orcid.org/0000-0002-2973-4580 + - identifier: 0000-0002-2973-4580 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Lasser given_name: Jana + id: 0000-0002-4274-4580 identifiers: - - identifier: https://orcid.org/0000-0002-4274-4580 + - identifier: 0000-0002-4274-4580 scheme: orcid - affiliations: - name: Northwestern University family_name: Nguyen given_name: Minh + id: 0000-0002-9043-9580 identifiers: - - identifier: https://orcid.org/0000-0002-9043-9580 + - identifier: 0000-0002-9043-9580 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Oral given_name: Elif + id: 0000-0003-1081-5580 identifiers: - - identifier: https://orcid.org/0000-0003-1081-5580 + - identifier: 0000-0003-1081-5580 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Casadei given_name: Nicolas + id: 0000-0003-2209-0580 identifiers: - - identifier: https://orcid.org/0000-0003-2209-0580 + - identifier: 0000-0003-2209-0580 scheme: orcid - affiliations: - name: Northwestern University family_name: Donnelly given_name: Helen K + id: 0000-0001-8827-8581 identifiers: - - identifier: https://orcid.org/0000-0001-8827-8581 + - identifier: 0000-0001-8827-8581 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Jinyang + id: 0000-0001-9432-8581 identifiers: - - identifier: https://orcid.org/0000-0001-9432-8581 + - identifier: 0000-0001-9432-8581 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Wunderlich given_name: Robert + id: 0000-0002-2380-3581 identifiers: - - identifier: https://orcid.org/0000-0002-2380-3581 + - identifier: 0000-0002-2380-3581 scheme: orcid - affiliations: - name: University of Bamberg family_name: Hoffjann given_name: Olaf + id: 0000-0002-4049-4581 identifiers: - - identifier: https://orcid.org/0000-0002-4049-4581 + - identifier: 0000-0002-4049-4581 scheme: orcid - affiliations: - name: NASA Jet Propulsion Laboratory - name: California Institute of Technology family_name: Winiberg given_name: Frank + id: 0000-0003-2801-5581 identifiers: - - identifier: https://orcid.org/0000-0003-2801-5581 + - identifier: 0000-0003-2801-5581 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shin given_name: Kyung Min + id: 0000-0002-1486-3582 identifiers: - - identifier: https://orcid.org/0000-0002-1486-3582 + - identifier: 0000-0002-1486-3582 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kim given_name: Kyunam + id: 0000-0002-7803-1582 identifiers: - - identifier: https://orcid.org/0000-0002-7803-1582 + - identifier: 0000-0002-7803-1582 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Talbot given_name: Colm + id: 0000-0003-2053-5582 identifiers: - - identifier: https://orcid.org/0000-0003-2053-5582 + - identifier: 0000-0003-2053-5582 scheme: orcid - affiliations: - name: CERN family_name: Dobos given_name: Daniel + id: 0000-0001-5343-5583 identifiers: - - identifier: https://orcid.org/0000-0001-5343-5583 + - identifier: 0000-0001-5343-5583 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Gantner given_name: Florian + id: 0000-0002-4286-8583 identifiers: - - identifier: https://orcid.org/0000-0002-4286-8583 + - identifier: 0000-0002-4286-8583 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Stockmann given_name: Nils + id: 0000-0002-5898-2583 identifiers: - - identifier: https://orcid.org/0000-0002-5898-2583 + - identifier: 0000-0002-5898-2583 scheme: orcid - affiliations: - name: California Institute of Technology family_name: McKeon given_name: Beverley + id: 0000-0003-4220-1583 identifiers: - - identifier: https://orcid.org/0000-0003-4220-1583 + - identifier: 0000-0003-4220-1583 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Oberdorf given_name: Andreas + id: 0000-0001-9367-6584 identifiers: - - identifier: https://orcid.org/0000-0001-9367-6584 + - identifier: 0000-0001-9367-6584 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Rau given_name: Richard + id: 0000-0002-1490-8584 identifiers: - - identifier: https://orcid.org/0000-0002-1490-8584 + - identifier: 0000-0002-1490-8584 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Aichernig given_name: Bernhard + id: 0000-0002-3484-5584 identifiers: - - identifier: https://orcid.org/0000-0002-3484-5584 + - identifier: 0000-0002-3484-5584 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Blair given_name: Dakota + id: 0000-0001-9742-7585 identifiers: - - identifier: https://orcid.org/0000-0001-9742-7585 + - identifier: 0000-0001-9742-7585 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bock given_name: Stefan + id: 0000-0002-1919-8585 identifiers: - - identifier: https://orcid.org/0000-0002-1919-8585 + - identifier: 0000-0002-1919-8585 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: "K\xFCbler" given_name: Jens + id: 0000-0002-3450-7585 identifiers: - - identifier: https://orcid.org/0000-0002-3450-7585 + - identifier: 0000-0002-3450-7585 scheme: orcid - affiliations: - name: CERN family_name: von Haller given_name: "Barth\xE9l\xE9my" + id: 0000-0002-3422-4585 identifiers: - - identifier: https://orcid.org/0000-0002-3422-4585 + - identifier: 0000-0002-3422-4585 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "Gyurka\xC4\x8D" given_name: Marcell + id: 0000-0002-6918-7585 identifiers: - - identifier: https://orcid.org/0000-0002-6918-7585 + - identifier: 0000-0002-6918-7585 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Scialdone given_name: Antonio + id: 0000-0002-6816-8585 identifiers: - - identifier: https://orcid.org/0000-0002-6816-8585 + - identifier: 0000-0002-6816-8585 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhao given_name: Tom + id: 0000-0002-7708-0585 identifiers: - - identifier: https://orcid.org/0000-0002-7708-0585 + - identifier: 0000-0002-7708-0585 scheme: orcid - affiliations: - name: TU Wien family_name: parravicini given_name: vanessa + id: 0000-0002-9764-7585 identifiers: - - identifier: https://orcid.org/0000-0002-9764-7585 + - identifier: 0000-0002-9764-7585 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Koelmann given_name: Holger + id: 0000-0003-1599-9585 identifiers: - - identifier: https://orcid.org/0000-0003-1599-9585 + - identifier: 0000-0003-1599-9585 scheme: orcid - affiliations: - name: MJ2 Consulting, PLLC - name: Northwestern University family_name: D'Ambrosia given_name: Matthew + id: 0000-0003-3272-1585 identifiers: - - identifier: https://orcid.org/0000-0003-3272-1585 + - identifier: 0000-0003-3272-1585 scheme: orcid - affiliations: - name: University of Fribourg family_name: Merlo given_name: Marco + id: 0000-0002-0199-5586 identifiers: - - identifier: https://orcid.org/0000-0002-0199-5586 + - identifier: 0000-0002-0199-5586 scheme: orcid - affiliations: - name: Medical University of Graz - name: "Technische Universit\xE4t Graz" family_name: Schrabmair given_name: Walter + id: 0000-0002-4196-2586 identifiers: - - identifier: https://orcid.org/0000-0002-4196-2586 + - identifier: 0000-0002-4196-2586 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Heinz given_name: Evi + id: 0000-0002-4516-2586 identifiers: - - identifier: https://orcid.org/0000-0002-4516-2586 + - identifier: 0000-0002-4516-2586 scheme: orcid - affiliations: - name: CERN family_name: Zannini given_name: Carlo + id: 0000-0002-6418-7586 identifiers: - - identifier: https://orcid.org/0000-0002-6418-7586 + - identifier: 0000-0002-6418-7586 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Jadbabaie given_name: Arian + id: 0000-0002-7606-5586 identifiers: - - identifier: https://orcid.org/0000-0002-7606-5586 + - identifier: 0000-0002-7606-5586 scheme: orcid - affiliations: - name: University of Fribourg family_name: Stein given_name: Jens V + id: 0000-0002-8199-9586 identifiers: - - identifier: https://orcid.org/0000-0002-8199-9586 + - identifier: 0000-0002-8199-9586 scheme: orcid - affiliations: - name: Jet Propulsion Lab @@ -27483,245 +31304,279 @@ - name: University of California, Los Angeles family_name: Porter given_name: Michael + id: 0000-0003-3168-5586 identifiers: - - identifier: https://orcid.org/0000-0003-3168-5586 + - identifier: 0000-0003-3168-5586 scheme: orcid - affiliations: - name: Northwestern University family_name: McHugh given_name: William + id: 0000-0003-3106-0586 identifiers: - - identifier: https://orcid.org/0000-0003-3106-0586 + - identifier: 0000-0003-3106-0586 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "Schl\xFCter" given_name: Julia + id: 0000-0003-3995-1586 identifiers: - - identifier: https://orcid.org/0000-0003-3995-1586 + - identifier: 0000-0003-3995-1586 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Gan given_name: Hong + id: 0000-0001-7898-7587 identifiers: - - identifier: https://orcid.org/0000-0001-7898-7587 + - identifier: 0000-0001-7898-7587 scheme: orcid - affiliations: - name: University of Fribourg family_name: Carmeli given_name: Cristian + id: 0000-0002-1463-4587 identifiers: - - identifier: https://orcid.org/0000-0002-1463-4587 + - identifier: 0000-0002-1463-4587 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Dalleska given_name: Nathan + id: 0000-0002-2059-1587 identifiers: - - identifier: https://orcid.org/0000-0002-2059-1587 + - identifier: 0000-0002-2059-1587 scheme: orcid - affiliations: - name: Northwestern University family_name: Ger given_name: Stephanie + id: 0000-0002-8337-3587 identifiers: - - identifier: https://orcid.org/0000-0002-8337-3587 + - identifier: 0000-0002-8337-3587 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Tranninger given_name: Markus + id: 0000-0002-8728-6587 identifiers: - - identifier: https://orcid.org/0000-0002-8728-6587 + - identifier: 0000-0002-8728-6587 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ebert given_name: Rick + id: 0000-0002-9500-8587 identifiers: - - identifier: https://orcid.org/0000-0002-9500-8587 + - identifier: 0000-0002-9500-8587 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Li given_name: Yongjun + id: 0000-0001-5227-0588 identifiers: - - identifier: https://orcid.org/0000-0001-5227-0588 + - identifier: 0000-0001-5227-0588 scheme: orcid - affiliations: - name: Stellenbosch University - name: Northwestern University family_name: du Plesiss given_name: Jacob MJ + id: 0000-0001-8120-7588 identifiers: - - identifier: https://orcid.org/0000-0001-8120-7588 + - identifier: 0000-0001-8120-7588 scheme: orcid - affiliations: - name: Northwestern University family_name: Numan given_name: Yazan + id: 0000-0001-9449-7588 identifiers: - - identifier: https://orcid.org/0000-0001-9449-7588 + - identifier: 0000-0001-9449-7588 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Minuti given_name: Massimo + id: 0000-0001-9577-2588 identifiers: - - identifier: https://orcid.org/0000-0001-9577-2588 + - identifier: 0000-0001-9577-2588 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ji given_name: Suoqing + id: 0000-0001-9658-0588 identifiers: - - identifier: https://orcid.org/0000-0001-9658-0588 + - identifier: 0000-0001-9658-0588 scheme: orcid - affiliations: - name: "University of M\xFCnster" - name: "Universit\xE4tsklinikum K\xF6ln" family_name: Schafigh given_name: Darius Gabriel + id: 0000-0002-1903-3588 identifiers: - - identifier: https://orcid.org/0000-0002-1903-3588 + - identifier: 0000-0002-1903-3588 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Andrews given_name: Aaron Maxwell + id: 0000-0002-5790-2588 identifiers: - - identifier: https://orcid.org/0000-0002-5790-2588 + - identifier: 0000-0002-5790-2588 scheme: orcid - affiliations: - name: Northwestern University family_name: Gocker given_name: Rachel + id: 0000-0002-6129-0588 identifiers: - - identifier: https://orcid.org/0000-0002-6129-0588 + - identifier: 0000-0002-6129-0588 scheme: orcid - affiliations: - name: TU Wien family_name: Preimesberger given_name: Wolfgang + id: 0000-0002-6655-0588 identifiers: - - identifier: https://orcid.org/0000-0002-6655-0588 + - identifier: 0000-0002-6655-0588 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Dresden" - name: "Technische Universit\xE4t Wien" family_name: Tajmar given_name: Martin + id: 0000-0002-7406-7588 identifiers: - - identifier: https://orcid.org/0000-0002-7406-7588 + - identifier: 0000-0002-7406-7588 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Krasheninnikov given_name: Arkady + id: 0000-0003-0074-7588 identifiers: - - identifier: https://orcid.org/0000-0003-0074-7588 + - identifier: 0000-0003-0074-7588 scheme: orcid - affiliations: - name: Graz University of Technology - name: Joanneum Research Forschungsgesellschaft mbH family_name: Abu Ali given_name: Taher + id: 0000-0003-0335-8588 identifiers: - - identifier: https://orcid.org/0000-0003-0335-8588 + - identifier: 0000-0003-0335-8588 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: "Granados Bay\xF3n" given_name: Patricia + id: 0000-0003-1851-7588 identifiers: - - identifier: https://orcid.org/0000-0003-1851-7588 + - identifier: 0000-0003-1851-7588 scheme: orcid - affiliations: - name: Northwestern University family_name: kim given_name: joonseok + id: 0000-0003-2395-7588 identifiers: - - identifier: https://orcid.org/0000-0003-2395-7588 + - identifier: 0000-0003-2395-7588 scheme: orcid - affiliations: - name: EOSC Association - name: European Organization for Nuclear Research family_name: Jones given_name: Bob + id: 0000-0001-9092-4589 identifiers: - - identifier: https://orcid.org/0000-0001-9092-4589 + - identifier: 0000-0001-9092-4589 scheme: orcid - affiliations: - name: TU Wien family_name: Vogric given_name: Marko + id: 0000-0002-0315-8589 identifiers: - - identifier: https://orcid.org/0000-0002-0315-8589 + - identifier: 0000-0002-0315-8589 scheme: orcid - affiliations: - name: University of Fribourg family_name: Rosselet-Jordan given_name: Fiona Laura + id: 0000-0002-0552-4589 identifiers: - - identifier: https://orcid.org/0000-0002-0552-4589 + - identifier: 0000-0002-0552-4589 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Wedlich-S\xF6ldner" given_name: Roland + id: 0000-0002-1364-7589 identifiers: - - identifier: https://orcid.org/0000-0002-1364-7589 + - identifier: 0000-0002-1364-7589 scheme: orcid - affiliations: - name: TU Wien family_name: Wilhelmer given_name: Christoph + id: 0000-0002-9996-2589 identifiers: - - identifier: https://orcid.org/0000-0002-9996-2589 + - identifier: 0000-0002-9996-2589 scheme: orcid - affiliations: - name: TU Wien family_name: Pitschmann given_name: Mario + id: 0000-0003-2721-4589 identifiers: - - identifier: https://orcid.org/0000-0003-2721-4589 + - identifier: 0000-0003-2721-4589 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kim given_name: Wousik + id: 0000-0001-5914-658X identifiers: - - identifier: https://orcid.org/0000-0001-5914-658X + - identifier: 0000-0001-5914-658X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Bostr\xF6m" given_name: Kim Joris + id: 0000-0001-5966-458X identifiers: - - identifier: https://orcid.org/0000-0001-5966-458X + - identifier: 0000-0001-5966-458X scheme: orcid - affiliations: - name: University of Fribourg family_name: Trappe given_name: Veronique + id: 0000-0002-0301-258X identifiers: - - identifier: https://orcid.org/0000-0002-0301-258X + - identifier: 0000-0002-0301-258X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Denisov given_name: Oleg + id: 0000-0002-1057-058X identifiers: - - identifier: https://orcid.org/0000-0002-1057-058X + - identifier: 0000-0002-1057-058X scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Long + id: 0000-0002-4631-158X identifiers: - - identifier: https://orcid.org/0000-0002-4631-158X + - identifier: 0000-0002-4631-158X scheme: orcid - affiliations: - name: TU Wien @@ -27729,289 +31584,329 @@ - name: "Universit\xE4t Wien" family_name: Fokina given_name: Ekaterina + id: 0000-0002-4598-458X identifiers: - - identifier: https://orcid.org/0000-0002-4598-458X + - identifier: 0000-0002-4598-458X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Liu given_name: Zongyuan + id: 0000-0001-8526-5590 identifiers: - - identifier: https://orcid.org/0000-0001-8526-5590 + - identifier: 0000-0001-8526-5590 scheme: orcid - affiliations: - name: Northwestern University family_name: Johnson given_name: David + id: 0000-0001-9033-9590 identifiers: - - identifier: https://orcid.org/0000-0001-9033-9590 + - identifier: 0000-0001-9033-9590 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Haret given_name: Adrian + id: 0000-0002-0247-5590 identifiers: - - identifier: https://orcid.org/0000-0002-0247-5590 + - identifier: 0000-0002-0247-5590 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Grzondziel given_name: "J\xFCrgen" + id: 0000-0002-4430-9590 identifiers: - - identifier: https://orcid.org/0000-0002-4430-9590 + - identifier: 0000-0002-4430-9590 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Ebner given_name: Markus + id: 0000-0002-5445-1590 identifiers: - - identifier: https://orcid.org/0000-0002-5445-1590 + - identifier: 0000-0002-5445-1590 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Reitbauer given_name: Eva + id: 0000-0002-5551-8590 identifiers: - - identifier: https://orcid.org/0000-0002-5551-8590 + - identifier: 0000-0002-5551-8590 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Niers given_name: Tom + id: 0000-0002-5746-8590 identifiers: - - identifier: https://orcid.org/0000-0002-5746-8590 + - identifier: 0000-0002-5746-8590 scheme: orcid - affiliations: - name: Northwestern University family_name: MCKOY given_name: JUNE + id: 0000-0002-7872-8590 identifiers: - - identifier: https://orcid.org/0000-0002-7872-8590 + - identifier: 0000-0002-7872-8590 scheme: orcid - affiliations: - name: Northwestern University family_name: Alizadehsalehi given_name: Sepehr + id: 0000-0003-1567-2590 identifiers: - - identifier: https://orcid.org/0000-0003-1567-2590 + - identifier: 0000-0003-1567-2590 scheme: orcid - affiliations: - name: CERN family_name: Atanasov given_name: Miroslav + id: 0000-0003-2395-5590 identifiers: - - identifier: https://orcid.org/0000-0003-2395-5590 + - identifier: 0000-0003-2395-5590 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Koehler given_name: Luisa + id: 0000-0003-3013-5590 identifiers: - - identifier: https://orcid.org/0000-0003-3013-5590 + - identifier: 0000-0003-3013-5590 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Shibo + id: 0000-0003-3054-9590 identifiers: - - identifier: https://orcid.org/0000-0003-3054-9590 + - identifier: 0000-0003-3054-9590 scheme: orcid - affiliations: - name: Georgetown University - name: Northwestern University family_name: Keegan given_name: Grace + id: 0000-0003-4928-2590 identifiers: - - identifier: https://orcid.org/0000-0003-4928-2590 + - identifier: 0000-0003-4928-2590 scheme: orcid - affiliations: - name: University of Fribourg family_name: Colombo given_name: Moreno + id: 0000-0002-4127-5591 identifiers: - - identifier: https://orcid.org/0000-0002-4127-5591 + - identifier: 0000-0002-4127-5591 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Koh given_name: Jin Ming + id: 0000-0002-6130-5591 identifiers: - - identifier: https://orcid.org/0000-0002-6130-5591 + - identifier: 0000-0002-6130-5591 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Fabini given_name: Joachim + id: 0000-0002-8285-1591 identifiers: - - identifier: https://orcid.org/0000-0002-8285-1591 + - identifier: 0000-0002-8285-1591 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Coles given_name: Betsy + id: 0000-0002-8422-4591 identifiers: - - identifier: https://orcid.org/0000-0002-8422-4591 + - identifier: 0000-0002-8422-4591 scheme: orcid - affiliations: - name: University of Bamberg family_name: Pastukhov given_name: Alexander + id: 0000-0002-8738-8591 identifiers: - - identifier: https://orcid.org/0000-0002-8738-8591 + - identifier: 0000-0002-8738-8591 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: Freistaat Bayern family_name: Richter given_name: Michael + id: 0000-0003-0881-2591 identifiers: - - identifier: https://orcid.org/0000-0003-0881-2591 + - identifier: 0000-0003-0881-2591 scheme: orcid - affiliations: - name: University of Bamberg family_name: Schneider given_name: Julian + id: 0000-0001-5330-8592 identifiers: - - identifier: https://orcid.org/0000-0001-5330-8592 + - identifier: 0000-0001-5330-8592 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "H\xF6rmann" given_name: Lukas + id: 0000-0003-4150-1592 identifiers: - - identifier: https://orcid.org/0000-0003-4150-1592 + - identifier: 0000-0003-4150-1592 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Ting + id: 0000-0001-8273-5593 identifiers: - - identifier: https://orcid.org/0000-0001-8273-5593 + - identifier: 0000-0001-8273-5593 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Vieth given_name: Andreas + id: 0000-0002-1150-8593 identifiers: - - identifier: https://orcid.org/0000-0002-1150-8593 + - identifier: 0000-0002-1150-8593 scheme: orcid - affiliations: - name: Northwestern University - name: Chicago Botanic Garden family_name: Iler given_name: Amy + id: 0000-0002-3354-7593 identifiers: - - identifier: https://orcid.org/0000-0002-3354-7593 + - identifier: 0000-0002-3354-7593 scheme: orcid - affiliations: - name: "University of M\xFCnster" - name: "University Hospital M\xFCnster" family_name: Blitz given_name: "Rog\xE9rio" + id: 0000-0002-4505-4593 identifiers: - - identifier: https://orcid.org/0000-0002-4505-4593 + - identifier: 0000-0002-4505-4593 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tian given_name: Yichao + id: 0000-0002-5611-6593 identifiers: - - identifier: https://orcid.org/0000-0002-5611-6593 + - identifier: 0000-0002-5611-6593 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Zorzetti given_name: Silvia + id: 0000-0002-8920-9593 identifiers: - - identifier: https://orcid.org/0000-0002-8920-9593 + - identifier: 0000-0002-8920-9593 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Sablatnig given_name: Robert + id: 0000-0003-4195-1593 identifiers: - - identifier: https://orcid.org/0000-0003-4195-1593 + - identifier: 0000-0003-4195-1593 scheme: orcid - affiliations: - name: Northwestern University family_name: Lubet given_name: Steven + id: 0000-0001-7030-8594 identifiers: - - identifier: https://orcid.org/0000-0001-7030-8594 + - identifier: 0000-0001-7030-8594 scheme: orcid - affiliations: - name: University of Fribourg family_name: Kohlas given_name: Juerg + id: 0000-0001-8427-5594 identifiers: - - identifier: https://orcid.org/0000-0001-8427-5594 + - identifier: 0000-0001-8427-5594 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wu given_name: Yueshen + id: 0000-0002-3784-0594 identifiers: - - identifier: https://orcid.org/0000-0002-3784-0594 + - identifier: 0000-0002-3784-0594 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: VELMURUGAN given_name: SURENDRAN + id: 0000-0002-6440-0594 identifiers: - - identifier: https://orcid.org/0000-0002-6440-0594 + - identifier: 0000-0002-6440-0594 scheme: orcid - affiliations: - name: CERN family_name: Mundra given_name: Surbhi + id: 0000-0002-7666-3594 identifiers: - - identifier: https://orcid.org/0000-0002-7666-3594 + - identifier: 0000-0002-7666-3594 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Martinolich given_name: Andrew + id: 0000-0002-7866-9594 identifiers: - - identifier: https://orcid.org/0000-0002-7866-9594 + - identifier: 0000-0002-7866-9594 scheme: orcid - affiliations: - name: CERN family_name: SPIGO given_name: GIANCARLO + id: 0000-0003-4183-2594 identifiers: - - identifier: https://orcid.org/0000-0003-4183-2594 + - identifier: 0000-0003-4183-2594 scheme: orcid - affiliations: - name: Northwestern University - name: University of Virginia family_name: adli given_name: mazhar + id: 0000-0003-4740-9594 identifiers: - - identifier: https://orcid.org/0000-0003-4740-9594 + - identifier: 0000-0003-4740-9594 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Burger given_name: Magdalena + id: 0000-0001-8021-9595 identifiers: - - identifier: https://orcid.org/0000-0001-8021-9595 + - identifier: 0000-0001-8021-9595 scheme: orcid - affiliations: - name: CERN family_name: Barth given_name: Christian + id: 0000-0001-9476-8595 identifiers: - - identifier: https://orcid.org/0000-0001-9476-8595 + - identifier: 0000-0001-9476-8595 scheme: orcid - affiliations: - name: Northwestern University family_name: Feng given_name: Liang + id: 0000-0001-9693-1595 identifiers: - - identifier: https://orcid.org/0000-0001-9693-1595 + - identifier: 0000-0001-9693-1595 scheme: orcid - affiliations: - name: Brookhaven National Laboratory @@ -28019,400 +31914,456 @@ - name: Punjab Agricultural University family_name: sah given_name: saroj + id: 0000-0002-3881-2595 identifiers: - - identifier: https://orcid.org/0000-0002-3881-2595 + - identifier: 0000-0002-3881-2595 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Thevenon given_name: Arnaud + id: 0000-0002-5543-6595 identifiers: - - identifier: https://orcid.org/0000-0002-5543-6595 + - identifier: 0000-0002-5543-6595 scheme: orcid - affiliations: - name: CERN family_name: Rieker given_name: Vilde + id: 0000-0002-7449-3595 identifiers: - - identifier: https://orcid.org/0000-0002-7449-3595 + - identifier: 0000-0002-7449-3595 scheme: orcid - affiliations: - name: Northwestern University family_name: Young given_name: Jennifer + id: 0000-0002-8712-0595 identifiers: - - identifier: https://orcid.org/0000-0002-8712-0595 + - identifier: 0000-0002-8712-0595 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lippold given_name: Holger + id: 0000-0002-8896-7595 identifiers: - - identifier: https://orcid.org/0000-0002-8896-7595 + - identifier: 0000-0002-8896-7595 scheme: orcid - affiliations: - name: TU Wien family_name: "W\xF6rister" given_name: Florian + id: 0000-0003-4967-8595 identifiers: - - identifier: https://orcid.org/0000-0003-4967-8595 + - identifier: 0000-0003-4967-8595 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Raich given_name: Philipp + id: 0000-0001-9690-0596 identifiers: - - identifier: https://orcid.org/0000-0001-9690-0596 + - identifier: 0000-0001-9690-0596 scheme: orcid - affiliations: - name: University of Fribourg family_name: Mollaret given_name: Coline + id: 0000-0002-2022-9596 identifiers: - - identifier: https://orcid.org/0000-0002-2022-9596 + - identifier: 0000-0002-2022-9596 scheme: orcid - affiliations: - name: Graz University of Technology - name: Know-Center GmbH family_name: Duricic given_name: Tomislav + id: 0000-0002-7229-9596 identifiers: - - identifier: https://orcid.org/0000-0002-7229-9596 + - identifier: 0000-0002-7229-9596 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Li given_name: Junjie + id: 0000-0003-3135-9596 identifiers: - - identifier: https://orcid.org/0000-0003-3135-9596 + - identifier: 0000-0003-3135-9596 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Tirrell given_name: David + id: 0000-0003-3175-4596 identifiers: - - identifier: https://orcid.org/0000-0003-3175-4596 + - identifier: 0000-0003-3175-4596 scheme: orcid - affiliations: - name: Northwestern University family_name: Lu given_name: Ye + id: 0000-0003-3698-5596 identifiers: - - identifier: https://orcid.org/0000-0003-3698-5596 + - identifier: 0000-0003-3698-5596 scheme: orcid - affiliations: - name: TU Wien family_name: Fallahnejad given_name: Mostafa + id: 0000-0003-4078-1596 identifiers: - - identifier: https://orcid.org/0000-0003-4078-1596 + - identifier: 0000-0003-4078-1596 scheme: orcid - affiliations: - name: TU Wien family_name: Georgiou given_name: Pamina + id: 0000-0003-4856-4596 identifiers: - - identifier: https://orcid.org/0000-0003-4856-4596 + - identifier: 0000-0003-4856-4596 scheme: orcid - affiliations: - name: TU Wien family_name: Rachbauer given_name: Lukas Michael + id: 0000-0002-2780-3597 identifiers: - - identifier: https://orcid.org/0000-0002-2780-3597 + - identifier: 0000-0002-2780-3597 scheme: orcid - affiliations: - name: Argonne National Laboratory - name: Northwestern University family_name: Low given_name: Ian + id: 0000-0002-7570-9597 identifiers: - - identifier: https://orcid.org/0000-0002-7570-9597 + - identifier: 0000-0002-7570-9597 scheme: orcid - affiliations: - name: CERN - name: National Technical University of Athens family_name: Tzanis given_name: Polyneikis + id: 0000-0001-6828-1599 identifiers: - - identifier: https://orcid.org/0000-0001-6828-1599 + - identifier: 0000-0001-6828-1599 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Barone given_name: Giovanni Davide + id: 0000-0001-9673-3599 identifiers: - - identifier: https://orcid.org/0000-0001-9673-3599 + - identifier: 0000-0001-9673-3599 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "B\xF6hnlein" given_name: Joscha + id: 0000-0002-9870-5599 identifiers: - - identifier: https://orcid.org/0000-0002-9870-5599 + - identifier: 0000-0002-9870-5599 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Grieger given_name: Marcel + id: 0000-0003-1585-1599 identifiers: - - identifier: https://orcid.org/0000-0003-1585-1599 + - identifier: 0000-0003-1585-1599 scheme: orcid - affiliations: - name: National Institute for Nuclear Physics family_name: Marzolino given_name: Ugo + id: 0000-0001-5592-759X identifiers: - - identifier: https://orcid.org/0000-0001-5592-759X + - identifier: 0000-0001-5592-759X scheme: orcid - affiliations: - name: TU Wien family_name: Waltl given_name: Michael + id: 0000-0001-6042-759X identifiers: - - identifier: https://orcid.org/0000-0001-6042-759X + - identifier: 0000-0001-6042-759X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Frenzel given_name: Max + id: 0000-0001-6625-559X identifiers: - - identifier: https://orcid.org/0000-0001-6625-559X + - identifier: 0000-0001-6625-559X scheme: orcid - affiliations: - name: TU Wien - name: University of Udine family_name: Alipour given_name: Mobin + id: 0000-0001-8096-259X identifiers: - - identifier: https://orcid.org/0000-0001-8096-259X + - identifier: 0000-0001-8096-259X scheme: orcid - affiliations: - name: Northwestern University family_name: Osburn given_name: Magdalena + id: 0000-0001-9180-559X identifiers: - - identifier: https://orcid.org/0000-0001-9180-559X + - identifier: 0000-0001-9180-559X scheme: orcid - affiliations: - name: University of Bamberg family_name: Gunda given_name: Masiiwa + id: 0000-0002-1348-859X identifiers: - - identifier: https://orcid.org/0000-0002-1348-859X + - identifier: 0000-0002-1348-859X scheme: orcid - affiliations: - name: University of Fribourg family_name: Meier given_name: Andreas + id: 0000-0003-1881-059X identifiers: - - identifier: https://orcid.org/0000-0003-1881-059X + - identifier: 0000-0003-1881-059X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Karambelkar given_name: Viraj + id: 0000-0003-2758-159X identifiers: - - identifier: https://orcid.org/0000-0003-2758-159X + - identifier: 0000-0003-2758-159X scheme: orcid - affiliations: - name: TU Wien - name: University of Applied Sciences - FH Campus Wien family_name: Griesser given_name: Markus + id: 0000-0001-5075-8600 identifiers: - - identifier: https://orcid.org/0000-0001-5075-8600 + - identifier: 0000-0001-5075-8600 scheme: orcid - affiliations: - name: TU Wien family_name: Schramm given_name: Matthias + id: 0000-0001-5913-8600 identifiers: - - identifier: https://orcid.org/0000-0001-5913-8600 + - identifier: 0000-0001-5913-8600 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Barton given_name: Jacqueline + id: 0000-0001-9883-1600 identifiers: - - identifier: https://orcid.org/0000-0001-9883-1600 + - identifier: 0000-0001-9883-1600 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Owhadi given_name: Houman + id: 0000-0002-5677-1600 identifiers: - - identifier: https://orcid.org/0000-0002-5677-1600 + - identifier: 0000-0002-5677-1600 scheme: orcid - affiliations: - name: Northwestern University family_name: Black given_name: Bernard + id: 0000-0002-6499-0600 identifiers: - - identifier: https://orcid.org/0000-0002-6499-0600 + - identifier: 0000-0002-6499-0600 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Oppedisano given_name: Chiara + id: 0000-0001-6194-4601 identifiers: - - identifier: https://orcid.org/0000-0001-6194-4601 + - identifier: 0000-0001-6194-4601 scheme: orcid - affiliations: - name: CERN family_name: MALBRUNOT given_name: "Chlo\xE9" + id: 0000-0001-6193-6601 identifiers: - - identifier: https://orcid.org/0000-0001-6193-6601 + - identifier: 0000-0001-6193-6601 scheme: orcid - affiliations: - name: Northwestern University family_name: Yildiz given_name: Emrah + id: 0000-0002-0843-1601 identifiers: - - identifier: https://orcid.org/0000-0002-0843-1601 + - identifier: 0000-0002-0843-1601 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Bartocci given_name: Ezio + id: 0000-0002-8004-6601 identifiers: - - identifier: https://orcid.org/0000-0002-8004-6601 + - identifier: 0000-0002-8004-6601 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of technology family_name: Auzinger given_name: Winfried + id: 0000-0002-9631-2601 identifiers: - - identifier: https://orcid.org/0000-0002-9631-2601 + - identifier: 0000-0002-9631-2601 scheme: orcid - affiliations: - name: Northwestern University family_name: Patel given_name: Manish + id: 0000-0003-3835-9601 identifiers: - - identifier: https://orcid.org/0000-0003-3835-9601 + - identifier: 0000-0003-3835-9601 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Shi given_name: Wuxian + id: 0000-0003-4771-4601 identifiers: - - identifier: https://orcid.org/0000-0003-4771-4601 + - identifier: 0000-0003-4771-4601 scheme: orcid - affiliations: - name: TU Wien family_name: Ruggeri given_name: Michele + id: 0000-0001-6213-1602 identifiers: - - identifier: https://orcid.org/0000-0001-6213-1602 + - identifier: 0000-0001-6213-1602 scheme: orcid - affiliations: - name: CERN family_name: Widorski given_name: Markus + id: 0000-0001-7117-7602 identifiers: - - identifier: https://orcid.org/0000-0001-7117-7602 + - identifier: 0000-0001-7117-7602 scheme: orcid - affiliations: - name: CERN family_name: "K\xFCchler" given_name: Detlef + id: 0000-0002-1067-4602 identifiers: - - identifier: https://orcid.org/0000-0002-1067-4602 + - identifier: 0000-0002-1067-4602 scheme: orcid - affiliations: - name: Nanyang Technological University - name: Northwestern University family_name: li given_name: shuzhou + id: 0000-0002-2159-2602 identifiers: - - identifier: https://orcid.org/0000-0002-2159-2602 + - identifier: 0000-0002-2159-2602 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wong given_name: Joeson + id: 0000-0002-6304-7602 identifiers: - - identifier: https://orcid.org/0000-0002-6304-7602 + - identifier: 0000-0002-6304-7602 scheme: orcid - affiliations: - name: TU Wien family_name: Bachmann given_name: Sebastian + id: 0000-0002-6533-3602 identifiers: - - identifier: https://orcid.org/0000-0002-6533-3602 + - identifier: 0000-0002-6533-3602 scheme: orcid - affiliations: - name: California Institute of Technology family_name: mao given_name: wei + id: 0000-0002-7593-7602 identifiers: - - identifier: https://orcid.org/0000-0002-7593-7602 + - identifier: 0000-0002-7593-7602 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Brightman given_name: Murray + id: 0000-0002-8147-2602 identifiers: - - identifier: https://orcid.org/0000-0002-8147-2602 + - identifier: 0000-0002-8147-2602 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Dedushenko given_name: Mykola + id: 0000-0002-9273-7602 identifiers: - - identifier: https://orcid.org/0000-0002-9273-7602 + - identifier: 0000-0002-9273-7602 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Baumeister given_name: Sebastian + id: 0000-0002-9391-6602 identifiers: - - identifier: https://orcid.org/0000-0002-9391-6602 + - identifier: 0000-0002-9391-6602 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Bossi given_name: Fabio + id: 0000-0001-5669-1603 identifiers: - - identifier: https://orcid.org/0000-0001-5669-1603 + - identifier: 0000-0001-5669-1603 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Scharler given_name: Robert + id: 0000-0001-6276-8603 identifiers: - - identifier: https://orcid.org/0000-0001-6276-8603 + - identifier: 0000-0001-6276-8603 scheme: orcid - affiliations: - name: University of Fribourg family_name: Muff given_name: Fabian + id: 0000-0002-7283-6603 identifiers: - - identifier: https://orcid.org/0000-0002-7283-6603 + - identifier: 0000-0002-7283-6603 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wexler given_name: Helen + id: 0000-0003-4030-9603 identifiers: - - identifier: https://orcid.org/0000-0003-4030-9603 + - identifier: 0000-0003-4030-9603 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Xu given_name: Shuqing + id: 0000-0001-7010-4604 identifiers: - - identifier: https://orcid.org/0000-0001-7010-4604 + - identifier: 0000-0001-7010-4604 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Trojanowski given_name: Rebecca + id: 0000-0001-8832-0604 identifiers: - - identifier: https://orcid.org/0000-0001-8832-0604 + - identifier: 0000-0001-8832-0604 scheme: orcid - affiliations: - name: European Organization for Nuclear Research @@ -28420,31 +32371,35 @@ akademia nauk Ukraini family_name: Fomin given_name: Alex + id: 0000-0002-3631-0604 identifiers: - - identifier: https://orcid.org/0000-0002-3631-0604 + - identifier: 0000-0002-3631-0604 scheme: orcid - affiliations: - name: University of California, Los Angeles - name: California Institute of Technology family_name: Shi given_name: Ye + id: 0000-0002-5228-1604 identifiers: - - identifier: https://orcid.org/0000-0002-5228-1604 + - identifier: 0000-0002-5228-1604 scheme: orcid - affiliations: - name: Utrecht University - name: TU Wien family_name: Klute given_name: Fabian + id: 0000-0002-7791-3604 identifiers: - - identifier: https://orcid.org/0000-0002-7791-3604 + - identifier: 0000-0002-7791-3604 scheme: orcid - affiliations: - name: TU Wien family_name: Kittlaus given_name: Steffen + id: 0000-0002-1662-0605 identifiers: - - identifier: https://orcid.org/0000-0002-1662-0605 + - identifier: 0000-0002-1662-0605 scheme: orcid - affiliations: - name: European Organization for Nuclear Research @@ -28452,262 +32407,299 @@ culas Coimbra" family_name: Falda Coelho given_name: Luis Felipe + id: 0000-0002-2298-3605 identifiers: - - identifier: https://orcid.org/0000-0002-2298-3605 + - identifier: 0000-0002-2298-3605 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Bosotti given_name: Angelo + id: 0000-0002-3037-7605 identifiers: - - identifier: https://orcid.org/0000-0002-3037-7605 + - identifier: 0000-0002-3037-7605 scheme: orcid - affiliations: - name: TU Wien family_name: Karaagac given_name: Erdal + id: 0000-0002-4798-8605 identifiers: - - identifier: https://orcid.org/0000-0002-4798-8605 + - identifier: 0000-0002-4798-8605 scheme: orcid - affiliations: - name: Shirley Ryan AbilityLab - name: Northwestern University family_name: Rizzoglio given_name: Fabio + id: 0000-0002-6744-4605 identifiers: - - identifier: https://orcid.org/0000-0002-6744-4605 + - identifier: 0000-0002-6744-4605 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ji given_name: Jenny + id: 0000-0002-7901-5605 identifiers: - - identifier: https://orcid.org/0000-0002-7901-5605 + - identifier: 0000-0002-7901-5605 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: GUPTA given_name: TUSHAR + id: 0000-0002-9218-0605 identifiers: - - identifier: https://orcid.org/0000-0002-9218-0605 + - identifier: 0000-0002-9218-0605 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Eibl given_name: Philipp + id: 0000-0002-9234-0605 identifiers: - - identifier: https://orcid.org/0000-0002-9234-0605 + - identifier: 0000-0002-9234-0605 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ingenhoff given_name: Diana + id: 0000-0003-3034-3605 identifiers: - - identifier: https://orcid.org/0000-0003-3034-3605 + - identifier: 0000-0003-3034-3605 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Wang given_name: Xin + id: 0000-0001-8246-0606 identifiers: - - identifier: https://orcid.org/0000-0001-8246-0606 + - identifier: 0000-0001-8246-0606 scheme: orcid - affiliations: - name: Northwestern University family_name: Duan given_name: Yifei + id: 0000-0001-8443-1606 identifiers: - - identifier: https://orcid.org/0000-0001-8443-1606 + - identifier: 0000-0001-8443-1606 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Br\xFCnje" given_name: Annika + id: 0000-0002-8979-4606 identifiers: - - identifier: https://orcid.org/0000-0002-8979-4606 + - identifier: 0000-0002-8979-4606 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Klambauer given_name: Reinhard + id: 0000-0003-2101-0606 identifiers: - - identifier: https://orcid.org/0000-0003-2101-0606 + - identifier: 0000-0003-2101-0606 scheme: orcid - affiliations: - name: CERN family_name: Rodd given_name: Nicholas + id: 0000-0003-3472-7606 identifiers: - - identifier: https://orcid.org/0000-0003-3472-7606 + - identifier: 0000-0003-3472-7606 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "M\xFCller" given_name: Jens + id: 0000-0003-4713-0606 identifiers: - - identifier: https://orcid.org/0000-0003-4713-0606 + - identifier: 0000-0003-4713-0606 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Dongzi + id: 0000-0001-7931-0607 identifiers: - - identifier: https://orcid.org/0000-0001-7931-0607 + - identifier: 0000-0001-7931-0607 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhan given_name: Zhongwen + id: 0000-0002-5586-2607 identifiers: - - identifier: https://orcid.org/0000-0002-5586-2607 + - identifier: 0000-0002-5586-2607 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sullivan given_name: Ian + id: 0000-0003-0632-4607 identifiers: - - identifier: https://orcid.org/0000-0003-0632-4607 + - identifier: 0000-0003-0632-4607 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Felsberger given_name: Richard + id: 0000-0003-1044-6607 identifiers: - - identifier: https://orcid.org/0000-0003-1044-6607 + - identifier: 0000-0003-1044-6607 scheme: orcid - affiliations: - name: Northwestern University family_name: Costello given_name: Corinna + id: 0000-0001-7284-1608 identifiers: - - identifier: https://orcid.org/0000-0001-7284-1608 + - identifier: 0000-0001-7284-1608 scheme: orcid - affiliations: - name: University of Bamberg family_name: Osterrieder given_name: Martina + id: 0000-0001-8121-1608 identifiers: - - identifier: https://orcid.org/0000-0001-8121-1608 + - identifier: 0000-0001-8121-1608 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Leimgruber given_name: Johannes + id: 0000-0001-9682-7608 identifiers: - - identifier: https://orcid.org/0000-0001-9682-7608 + - identifier: 0000-0001-9682-7608 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Warmann given_name: Emily + id: 0000-0002-2810-4608 identifiers: - - identifier: https://orcid.org/0000-0002-2810-4608 + - identifier: 0000-0002-2810-4608 scheme: orcid - affiliations: - name: University of Fribourg family_name: Giese given_name: Bernd + id: 0000-0002-6975-8608 identifiers: - - identifier: https://orcid.org/0000-0002-6975-8608 + - identifier: 0000-0002-6975-8608 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Guy given_name: Richard G + id: 0000-0002-8651-5608 identifiers: - - identifier: https://orcid.org/0000-0002-8651-5608 + - identifier: 0000-0002-8651-5608 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Kollei given_name: Ines + id: 0000-0003-3005-3608 identifiers: - - identifier: https://orcid.org/0000-0003-3005-3608 + - identifier: 0000-0003-3005-3608 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Peters given_name: Martin T. + id: 0000-0001-5267-6609 identifiers: - - identifier: https://orcid.org/0000-0001-5267-6609 + - identifier: 0000-0001-5267-6609 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "Mu\xF1oz Guti\xE9rrez" given_name: Stalin + id: 0000-0001-6259-1609 identifiers: - - identifier: https://orcid.org/0000-0001-6259-1609 + - identifier: 0000-0001-6259-1609 scheme: orcid - affiliations: - name: TU Wien family_name: "K\xE4ding" given_name: Christian + id: 0000-0002-1781-2609 identifiers: - - identifier: https://orcid.org/0000-0002-1781-2609 + - identifier: 0000-0002-1781-2609 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Tappler given_name: Martin + id: 0000-0002-4193-5609 identifiers: - - identifier: https://orcid.org/0000-0002-4193-5609 + - identifier: 0000-0002-4193-5609 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Koide given_name: Seiji + id: 0000-0002-5617-6609 identifiers: - - identifier: https://orcid.org/0000-0002-5617-6609 + - identifier: 0000-0002-5617-6609 scheme: orcid - affiliations: - name: TU Wien family_name: Sharifmoghaddam given_name: Kiumars + id: 0000-0002-7665-2609 identifiers: - - identifier: https://orcid.org/0000-0002-7665-2609 + - identifier: 0000-0002-7665-2609 scheme: orcid - affiliations: - name: Northwestern University family_name: Swerdloff given_name: Margaret + id: 0000-0002-9226-5609 identifiers: - - identifier: https://orcid.org/0000-0002-9226-5609 + - identifier: 0000-0002-9226-5609 scheme: orcid - affiliations: - name: Northwestern University family_name: Sangari given_name: Esmat + id: 0000-0002-9725-0609 identifiers: - - identifier: https://orcid.org/0000-0002-9725-0609 + - identifier: 0000-0002-9725-0609 scheme: orcid - affiliations: - name: TU Wien family_name: Bartl given_name: Andreas + id: 0000-0001-7984-860X identifiers: - - identifier: https://orcid.org/0000-0001-7984-860X + - identifier: 0000-0001-7984-860X scheme: orcid - affiliations: - name: Northwestern University family_name: Runge given_name: Manuela + id: 0000-0001-9918-760X identifiers: - - identifier: https://orcid.org/0000-0001-9918-760X + - identifier: 0000-0001-9918-760X scheme: orcid - affiliations: - name: Tufts University - name: California Institute of Technology family_name: Mehraban given_name: Saeed + id: 0000-0002-1323-360X identifiers: - - identifier: https://orcid.org/0000-0002-1323-360X + - identifier: 0000-0002-1323-360X scheme: orcid - affiliations: - name: TU Wien family_name: Kaltenbacher given_name: Manfred + id: 0000-0001-5511-8610 identifiers: - - identifier: https://orcid.org/0000-0001-5511-8610 + - identifier: 0000-0001-5511-8610 scheme: orcid - affiliations: - name: Los Alamos National Laboratory @@ -28715,78 +32707,89 @@ - name: European Organization for Nuclear Research family_name: Morreale given_name: Astrid + id: 0000-0001-8008-1610 identifiers: - - identifier: https://orcid.org/0000-0001-8008-1610 + - identifier: 0000-0001-8008-1610 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Scomparin given_name: Enrico + id: 0000-0001-9015-9610 identifiers: - - identifier: https://orcid.org/0000-0001-9015-9610 + - identifier: 0000-0001-9015-9610 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Morehed given_name: Simone + id: 0000-0002-5618-9610 identifiers: - - identifier: https://orcid.org/0000-0002-5618-9610 + - identifier: 0000-0002-5618-9610 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Le given_name: Trung-Nghia + id: 0000-0002-7363-2610 identifiers: - - identifier: https://orcid.org/0000-0002-7363-2610 + - identifier: 0000-0002-7363-2610 scheme: orcid - affiliations: - name: Northwestern University family_name: Reno given_name: William + id: 0000-0002-7592-9610 identifiers: - - identifier: https://orcid.org/0000-0002-7592-9610 + - identifier: 0000-0002-7592-9610 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Blake given_name: Geoffrey + id: 0000-0003-0787-1610 identifiers: - - identifier: https://orcid.org/0000-0003-0787-1610 + - identifier: 0000-0003-0787-1610 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Aguiar given_name: Ygor + id: 0000-0003-4416-2610 identifiers: - - identifier: https://orcid.org/0000-0003-4416-2610 + - identifier: 0000-0003-4416-2610 scheme: orcid - affiliations: - name: Northwestern University family_name: Revelle given_name: William + id: 0000-0003-4880-9610 identifiers: - - identifier: https://orcid.org/0000-0003-4880-9610 + - identifier: 0000-0003-4880-9610 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Raff given_name: Johannes + id: 0000-0002-0520-3611 identifiers: - - identifier: https://orcid.org/0000-0002-0520-3611 + - identifier: 0000-0002-0520-3611 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Grenard given_name: Jean-Louis + id: 0000-0002-1014-1611 identifiers: - - identifier: https://orcid.org/0000-0002-1014-1611 + - identifier: 0000-0002-1014-1611 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Lechner given_name: Horst + id: 0000-0002-2177-2611 identifiers: - - identifier: https://orcid.org/0000-0002-2177-2611 + - identifier: 0000-0002-2177-2611 scheme: orcid - affiliations: - name: University of Maryland, College Park @@ -28796,265 +32799,302 @@ - name: Vanderbilt University family_name: Booth given_name: James + id: 0000-0003-3101-5611 identifiers: - - identifier: https://orcid.org/0000-0003-3101-5611 + - identifier: 0000-0003-3101-5611 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Sanchez-Valle given_name: Carmen + id: 0000-0001-5046-1612 identifiers: - - identifier: https://orcid.org/0000-0001-5046-1612 + - identifier: 0000-0001-5046-1612 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Meinfelder given_name: Florian + id: 0000-0001-5959-7612 identifiers: - - identifier: https://orcid.org/0000-0001-5959-7612 + - identifier: 0000-0001-5959-7612 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hackenburg given_name: Robert + id: 0000-0001-6237-4612 identifiers: - - identifier: https://orcid.org/0000-0001-6237-4612 + - identifier: 0000-0001-6237-4612 scheme: orcid - affiliations: - name: TU Wien family_name: Casamassima given_name: Luca + id: 0000-0002-4501-4612 identifiers: - - identifier: https://orcid.org/0000-0002-4501-4612 + - identifier: 0000-0002-4501-4612 scheme: orcid - affiliations: - name: Northwestern University family_name: Bodenhausen given_name: Galen + id: 0000-0002-6327-1612 identifiers: - - identifier: https://orcid.org/0000-0002-6327-1612 + - identifier: 0000-0002-6327-1612 scheme: orcid - affiliations: - name: TU Wien family_name: Jawecki given_name: Tobias + id: 0000-0002-5720-3613 identifiers: - - identifier: https://orcid.org/0000-0002-5720-3613 + - identifier: 0000-0002-5720-3613 scheme: orcid - affiliations: - name: Northwestern University - name: Texas Digital Library family_name: Steans given_name: Ryan + id: 0000-0002-7151-5613 identifiers: - - identifier: https://orcid.org/0000-0002-7151-5613 + - identifier: 0000-0002-7151-5613 scheme: orcid - affiliations: - name: TU Wien family_name: Hajdu given_name: "M\xE1rton" + id: 0000-0002-8273-2613 identifiers: - - identifier: https://orcid.org/0000-0002-8273-2613 + - identifier: 0000-0002-8273-2613 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Michel given_name: "Ren\xE9" + id: 0000-0002-8238-8613 identifiers: - - identifier: https://orcid.org/0000-0002-8238-8613 + - identifier: 0000-0002-8238-8613 scheme: orcid - affiliations: - name: Northwestern University family_name: Van Mieghem given_name: Jan + id: 0000-0002-8954-7613 identifiers: - - identifier: https://orcid.org/0000-0002-8954-7613 + - identifier: 0000-0002-8954-7613 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Hurta given_name: Jan + id: 0000-0002-1363-4614 identifiers: - - identifier: https://orcid.org/0000-0002-1363-4614 + - identifier: 0000-0002-1363-4614 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: "Otto-Friedrich-Universit\xE4t" family_name: Timm given_name: Susanne + id: 0000-0002-4399-9614 identifiers: - - identifier: https://orcid.org/0000-0002-4399-9614 + - identifier: 0000-0002-4399-9614 scheme: orcid - affiliations: - name: Northwestern University family_name: Amortegui given_name: Daniela + id: 0000-0002-6391-4614 identifiers: - - identifier: https://orcid.org/0000-0002-6391-4614 + - identifier: 0000-0002-6391-4614 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "M\xFCller" given_name: David + id: 0000-0002-8163-7614 identifiers: - - identifier: https://orcid.org/0000-0002-8163-7614 + - identifier: 0000-0002-8163-7614 scheme: orcid - affiliations: - name: University of Fribourg family_name: Dengjel given_name: Joern + id: 0000-0002-9453-4614 identifiers: - - identifier: https://orcid.org/0000-0002-9453-4614 + - identifier: 0000-0002-9453-4614 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Agapie given_name: Theodor + id: 0000-0002-9692-7614 identifiers: - - identifier: https://orcid.org/0000-0002-9692-7614 + - identifier: 0000-0002-9692-7614 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Koch given_name: Markus + id: 0000-0003-0186-1614 identifiers: - - identifier: https://orcid.org/0000-0003-0186-1614 + - identifier: 0000-0003-0186-1614 scheme: orcid - affiliations: - name: Northwestern University family_name: NING given_name: HONGYAN + id: 0000-0003-1157-6614 identifiers: - - identifier: https://orcid.org/0000-0003-1157-6614 + - identifier: 0000-0003-1157-6614 scheme: orcid - affiliations: - name: CERN family_name: Green given_name: Jeremy + id: 0000-0003-1978-9614 identifiers: - - identifier: https://orcid.org/0000-0003-1978-9614 + - identifier: 0000-0003-1978-9614 scheme: orcid - affiliations: - name: Northwestern University family_name: Verma given_name: Nishant + id: 0000-0003-4817-6614 identifiers: - - identifier: https://orcid.org/0000-0003-4817-6614 + - identifier: 0000-0003-4817-6614 scheme: orcid - affiliations: - name: Northwestern University family_name: McFall given_name: Sally + id: 0000-0001-5554-6615 identifiers: - - identifier: https://orcid.org/0000-0001-5554-6615 + - identifier: 0000-0001-5554-6615 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Schwinzerl given_name: Martin + id: 0000-0002-4183-1615 identifiers: - - identifier: https://orcid.org/0000-0002-4183-1615 + - identifier: 0000-0002-4183-1615 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Orozco given_name: Ivan + id: 0000-0003-0866-1615 identifiers: - - identifier: https://orcid.org/0000-0003-0866-1615 + - identifier: 0000-0003-0866-1615 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lock given_name: Simon + id: 0000-0001-5365-9616 identifiers: - - identifier: https://orcid.org/0000-0001-5365-9616 + - identifier: 0000-0001-5365-9616 scheme: orcid - affiliations: - name: Academy of Fine Arts Vienna - name: Graz University of Technology family_name: Indrist given_name: Waltraud + id: 0000-0001-5883-9616 identifiers: - - identifier: https://orcid.org/0000-0001-5883-9616 + - identifier: 0000-0001-5883-9616 scheme: orcid - affiliations: - name: TU Wien family_name: Stampfer given_name: Lukas + id: 0000-0002-1349-8616 identifiers: - - identifier: https://orcid.org/0000-0002-1349-8616 + - identifier: 0000-0002-1349-8616 scheme: orcid - affiliations: - name: TU Wien - name: TU-Wien family_name: Steiner given_name: Matthias + id: 0000-0002-3595-3616 identifiers: - - identifier: https://orcid.org/0000-0002-3595-3616 + - identifier: 0000-0002-3595-3616 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: rosario given_name: principe + id: 0000-0002-5558-3616 identifiers: - - identifier: https://orcid.org/0000-0002-5558-3616 + - identifier: 0000-0002-5558-3616 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Lammer given_name: Michael + id: 0000-0002-8838-5616 identifiers: - - identifier: https://orcid.org/0000-0002-8838-5616 + - identifier: 0000-0002-8838-5616 scheme: orcid - affiliations: - name: TU Wien family_name: Wolfger given_name: Hannes + id: 0000-0003-1163-7616 identifiers: - - identifier: https://orcid.org/0000-0003-1163-7616 + - identifier: 0000-0003-1163-7616 scheme: orcid - affiliations: - name: Northwestern University family_name: Buscarnera given_name: Giuseppe + id: 0000-0003-1664-9616 identifiers: - - identifier: https://orcid.org/0000-0003-1664-9616 + - identifier: 0000-0003-1664-9616 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Malihan-Yap given_name: Lenny + id: 0000-0003-2333-9616 identifiers: - - identifier: https://orcid.org/0000-0003-2333-9616 + - identifier: 0000-0003-2333-9616 scheme: orcid - affiliations: - name: Northwestern University family_name: Buys given_name: Cunera + id: 0000-0001-5966-7617 identifiers: - - identifier: https://orcid.org/0000-0001-5966-7617 + - identifier: 0000-0001-5966-7617 scheme: orcid - affiliations: - name: Henan Agricultural University - name: Brookhaven National Laboratory family_name: Gou given_name: Mingyue + id: 0000-0001-8855-6617 identifiers: - - identifier: https://orcid.org/0000-0001-8855-6617 + - identifier: 0000-0001-8855-6617 scheme: orcid - affiliations: - name: Northwestern University family_name: He given_name: Jiangang + id: 0000-0001-9643-3617 identifiers: - - identifier: https://orcid.org/0000-0001-9643-3617 + - identifier: 0000-0001-9643-3617 scheme: orcid - affiliations: - name: Northwestern University family_name: Tang given_name: Xin + id: 0000-0002-1896-2617 identifiers: - - identifier: https://orcid.org/0000-0002-1896-2617 + - identifier: 0000-0002-1896-2617 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" @@ -29066,15 +33106,17 @@ - name: "University of M\xFCnster" family_name: Martinez-Rubio given_name: Antoni + id: 0000-0002-2070-4617 identifiers: - - identifier: https://orcid.org/0000-0002-2070-4617 + - identifier: 0000-0002-2070-4617 scheme: orcid - affiliations: - name: Northwestern University family_name: Bethel given_name: Kathleen E + id: 0000-0002-8768-5617 identifiers: - - identifier: https://orcid.org/0000-0002-8768-5617 + - identifier: 0000-0002-8768-5617 scheme: orcid - affiliations: - name: California Institute of Technology @@ -29082,137 +33124,156 @@ - name: Weizmann Institute of Science family_name: Esin given_name: Iliya + id: 0000-0003-2959-0617 identifiers: - - identifier: https://orcid.org/0000-0003-2959-0617 + - identifier: 0000-0003-2959-0617 scheme: orcid - affiliations: - name: INAF - Osservatorio Astronomico di Bologna - name: Istituto Nazionale di Fisica Nucleare family_name: Ettori given_name: Stefano + id: 0000-0003-4117-8617 identifiers: - - identifier: https://orcid.org/0000-0003-4117-8617 + - identifier: 0000-0003-4117-8617 scheme: orcid - affiliations: - name: TU Wien family_name: Favoni given_name: Matteo + id: 0000-0001-6572-9618 identifiers: - - identifier: https://orcid.org/0000-0001-6572-9618 + - identifier: 0000-0001-6572-9618 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Ishikawa given_name: Fuyuki + id: 0000-0001-7725-2618 identifiers: - - identifier: https://orcid.org/0000-0001-7725-2618 + - identifier: 0000-0001-7725-2618 scheme: orcid - affiliations: - name: Northwestern University family_name: Kantarcigil given_name: Cagla + id: 0000-0002-2681-9618 identifiers: - - identifier: https://orcid.org/0000-0002-2681-9618 + - identifier: 0000-0002-2681-9618 scheme: orcid - affiliations: - name: University of Bamberg family_name: Fischer given_name: Uwe C. + id: 0000-0002-3293-6618 identifiers: - - identifier: https://orcid.org/0000-0002-3293-6618 + - identifier: 0000-0002-3293-6618 scheme: orcid - affiliations: - name: Northwestern University family_name: Rouco Escorial given_name: Alicia + id: 0000-0003-3937-0618 identifiers: - - identifier: https://orcid.org/0000-0003-3937-0618 + - identifier: 0000-0003-3937-0618 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Geerkens given_name: Leon + id: 0000-0001-9996-5619 identifiers: - - identifier: https://orcid.org/0000-0001-9996-5619 + - identifier: 0000-0001-9996-5619 scheme: orcid - affiliations: - name: University of Oxford - name: TU Wien family_name: "Z\xF6ttl" given_name: Andreas + id: 0000-0002-1736-9619 identifiers: - - identifier: https://orcid.org/0000-0002-1736-9619 + - identifier: 0000-0002-1736-9619 scheme: orcid - affiliations: - name: U.S. Department of Veterans Affairs - name: Northwestern University family_name: Major given_name: Matthew + id: 0000-0002-2330-4619 identifiers: - - identifier: https://orcid.org/0000-0002-2330-4619 + - identifier: 0000-0002-2330-4619 scheme: orcid - affiliations: - name: Northwestern University family_name: Sample given_name: Alexander + id: 0000-0002-4561-8619 identifiers: - - identifier: https://orcid.org/0000-0002-4561-8619 + - identifier: 0000-0002-4561-8619 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Sarink given_name: Kelvin + id: 0000-0002-4840-5619 identifiers: - - identifier: https://orcid.org/0000-0002-4840-5619 + - identifier: 0000-0002-4840-5619 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bok given_name: Frank + id: 0000-0002-6885-2619 identifiers: - - identifier: https://orcid.org/0000-0002-6885-2619 + - identifier: 0000-0002-6885-2619 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mazzarella given_name: Joseph + id: 0000-0002-8204-8619 identifiers: - - identifier: https://orcid.org/0000-0002-8204-8619 + - identifier: 0000-0002-8204-8619 scheme: orcid - affiliations: - name: CERN family_name: Phiri given_name: Mitchell + id: 0000-0001-5733-961X identifiers: - - identifier: https://orcid.org/0000-0001-5733-961X + - identifier: 0000-0001-5733-961X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Caprara given_name: Irene + id: 0000-0002-2031-861X identifiers: - - identifier: https://orcid.org/0000-0002-2031-861X + - identifier: 0000-0002-2031-861X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wagenaar given_name: Daniel + id: 0000-0002-6222-761X identifiers: - - identifier: https://orcid.org/0000-0002-6222-761X + - identifier: 0000-0002-6222-761X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Oania given_name: Robert + id: 0000-0003-4070-761X identifiers: - - identifier: https://orcid.org/0000-0003-4070-761X + - identifier: 0000-0003-4070-761X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Enkavi given_name: A. Zeynep + id: 0000-0001-7040-3620 identifiers: - - identifier: https://orcid.org/0000-0001-7040-3620 + - identifier: 0000-0001-7040-3620 scheme: orcid - affiliations: - name: TU Wien @@ -29221,129 +33282,147 @@ - name: EXIKON family_name: Pont given_name: Ulrich + id: 0000-0001-7320-9620 identifiers: - - identifier: https://orcid.org/0000-0001-7320-9620 + - identifier: 0000-0001-7320-9620 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Marin Tobon given_name: Cesar Augusto + id: 0000-0001-7853-6620 identifiers: - - identifier: https://orcid.org/0000-0001-7853-6620 + - identifier: 0000-0001-7853-6620 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Markovic given_name: Dejan + id: 0000-0001-9481-9620 identifiers: - - identifier: https://orcid.org/0000-0001-9481-9620 + - identifier: 0000-0001-9481-9620 scheme: orcid - affiliations: - name: University of Luxembourg - name: European Organization for Nuclear Research family_name: Dawes given_name: Joshua + id: 0000-0002-2289-1620 identifiers: - - identifier: https://orcid.org/0000-0002-2289-1620 + - identifier: 0000-0002-2289-1620 scheme: orcid - affiliations: - name: TU Wien family_name: Mascherbauer given_name: Philipp + id: 0000-0002-5736-5620 identifiers: - - identifier: https://orcid.org/0000-0002-5736-5620 + - identifier: 0000-0002-5736-5620 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kleese van Dam given_name: Kerstin + id: 0000-0002-5794-7620 identifiers: - - identifier: https://orcid.org/0000-0002-5794-7620 + - identifier: 0000-0002-5794-7620 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Martin given_name: Katharina + id: 0000-0002-9850-3620 identifiers: - - identifier: https://orcid.org/0000-0002-9850-3620 + - identifier: 0000-0002-9850-3620 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Van Valen given_name: David + id: 0000-0001-7534-7621 identifiers: - - identifier: https://orcid.org/0000-0001-7534-7621 + - identifier: 0000-0001-7534-7621 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien Institut f\xFCr Automatisierungs- und Regelungstechnik" family_name: Fuchs given_name: Gerd + id: 0000-0002-1191-8621 identifiers: - - identifier: https://orcid.org/0000-0002-1191-8621 + - identifier: 0000-0002-1191-8621 scheme: orcid - affiliations: - name: Northwestern University family_name: Molden given_name: Daniel C. + id: 0000-0002-2182-5621 identifiers: - - identifier: https://orcid.org/0000-0002-2182-5621 + - identifier: 0000-0002-2182-5621 scheme: orcid - affiliations: - name: TU Wien family_name: "St\xF6ger-Pollach" given_name: Michael + id: 0000-0002-5450-4621 identifiers: - - identifier: https://orcid.org/0000-0002-5450-4621 + - identifier: 0000-0002-5450-4621 scheme: orcid - affiliations: - name: CERN family_name: Couet given_name: Olivier + id: 0000-0002-7182-2621 identifiers: - - identifier: https://orcid.org/0000-0002-7182-2621 + - identifier: 0000-0002-7182-2621 scheme: orcid - affiliations: - name: Northwestern University family_name: Jiang given_name: Xinyi + id: 0000-0002-7446-8621 identifiers: - - identifier: https://orcid.org/0000-0002-7446-8621 + - identifier: 0000-0002-7446-8621 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Dimakis given_name: Emmanouil + id: 0000-0002-7546-0621 identifiers: - - identifier: https://orcid.org/0000-0002-7546-0621 + - identifier: 0000-0002-7546-0621 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Limbacher given_name: Thomas + id: 0000-0002-9644-8621 identifiers: - - identifier: https://orcid.org/0000-0002-9644-8621 + - identifier: 0000-0002-9644-8621 scheme: orcid - affiliations: - name: Northwestern University family_name: Kusmierz given_name: Caroline + id: 0000-0003-2915-8621 identifiers: - - identifier: https://orcid.org/0000-0003-2915-8621 + - identifier: 0000-0003-2915-8621 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Earnshaw given_name: Hannah P + id: 0000-0001-5857-5622 identifiers: - - identifier: https://orcid.org/0000-0001-5857-5622 + - identifier: 0000-0001-5857-5622 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhou given_name: Chaochao + id: 0000-0002-2631-2622 identifiers: - - identifier: https://orcid.org/0000-0002-2631-2622 + - identifier: 0000-0002-2631-2622 scheme: orcid - affiliations: - name: University of California at Los Angeles (UCLA) @@ -29352,45 +33431,51 @@ - name: Northwestern University family_name: Chung given_name: Jeanette + id: 0000-0002-9015-4622 identifiers: - - identifier: https://orcid.org/0000-0002-9015-4622 + - identifier: 0000-0002-9015-4622 scheme: orcid - affiliations: - name: Northwestern University family_name: Powers-Riggs given_name: Natalia E. + id: 0000-0002-9309-9622 identifiers: - - identifier: https://orcid.org/0000-0002-9309-9622 + - identifier: 0000-0002-9309-9622 scheme: orcid - affiliations: - name: University of Fribourg family_name: Berger given_name: Jean-Louis + id: 0000-0003-2629-2622 identifiers: - - identifier: https://orcid.org/0000-0003-2629-2622 + - identifier: 0000-0003-2629-2622 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: Chemnitz University of Technology family_name: Hellwig given_name: Olav + id: 0000-0002-1351-5623 identifiers: - - identifier: https://orcid.org/0000-0002-1351-5623 + - identifier: 0000-0002-1351-5623 scheme: orcid - affiliations: - name: University of Pittsburgh - name: California Institute of Technology family_name: Eisenthal given_name: Joshua + id: 0000-0002-3918-4623 identifiers: - - identifier: https://orcid.org/0000-0002-3918-4623 + - identifier: 0000-0002-3918-4623 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Montes-Mojarro given_name: Ivonne + id: 0000-0003-0636-7623 identifiers: - - identifier: https://orcid.org/0000-0003-0636-7623 + - identifier: 0000-0003-0636-7623 scheme: orcid - affiliations: - name: TU Wien @@ -29398,58 +33483,66 @@ - name: Austrian Academy of Sciences family_name: Huber given_name: Marcus + id: 0000-0003-1985-4623 identifiers: - - identifier: https://orcid.org/0000-0003-1985-4623 + - identifier: 0000-0003-1985-4623 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Beyer given_name: Roland + id: 0000-0003-2270-3623 identifiers: - - identifier: https://orcid.org/0000-0003-2270-3623 + - identifier: 0000-0003-2270-3623 scheme: orcid - affiliations: - name: University of Fribourg family_name: Salzmann given_name: Nadine + id: 0000-0001-5876-7624 identifiers: - - identifier: https://orcid.org/0000-0001-5876-7624 + - identifier: 0000-0001-5876-7624 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "Sachse-Th\xFCrer" given_name: Susann + id: 0000-0001-9525-0624 identifiers: - - identifier: https://orcid.org/0000-0001-9525-0624 + - identifier: 0000-0001-9525-0624 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" - name: Know-Center family_name: "Lovri\u0107" given_name: Mario + id: 0000-0002-3541-9624 identifiers: - - identifier: https://orcid.org/0000-0002-3541-9624 + - identifier: 0000-0002-3541-9624 scheme: orcid - affiliations: - name: Northwestern University family_name: Karani given_name: Hamid + id: 0000-0003-0787-3624 identifiers: - - identifier: https://orcid.org/0000-0003-0787-3624 + - identifier: 0000-0003-0787-3624 scheme: orcid - affiliations: - name: Northwestern University family_name: Thennakoon Mudiyansleage given_name: Athri Dewmina Rathnayake + id: 0000-0003-2588-7624 identifiers: - - identifier: https://orcid.org/0000-0003-2588-7624 + - identifier: 0000-0003-2588-7624 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Schwab given_name: Helmut + id: 0000-0003-2746-0624 identifiers: - - identifier: https://orcid.org/0000-0003-2746-0624 + - identifier: 0000-0003-2746-0624 scheme: orcid - affiliations: - name: University of Oxford @@ -29457,747 +33550,852 @@ - name: University of Manchester family_name: Alekou given_name: Androula + id: 0000-0002-5790-2625 identifiers: - - identifier: https://orcid.org/0000-0002-5790-2625 + - identifier: 0000-0002-5790-2625 scheme: orcid - affiliations: - name: Northwestern University family_name: Ji given_name: Peng + id: 0000-0002-8849-3625 identifiers: - - identifier: https://orcid.org/0000-0002-8849-3625 + - identifier: 0000-0002-8849-3625 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: "R\xFCggeberg" given_name: Andres + id: 0000-0003-2393-0625 identifiers: - - identifier: https://orcid.org/0000-0003-2393-0625 + - identifier: 0000-0003-2393-0625 scheme: orcid - affiliations: - name: TU Wien family_name: Maszl given_name: Christian + id: 0000-0003-4073-0625 identifiers: - - identifier: https://orcid.org/0000-0003-4073-0625 + - identifier: 0000-0003-4073-0625 scheme: orcid - affiliations: - name: CERN family_name: Harvey given_name: John + id: 0000-0001-5955-6626 identifiers: - - identifier: https://orcid.org/0000-0001-5955-6626 + - identifier: 0000-0001-5955-6626 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nicolas given_name: William + id: 0000-0001-5970-8626 identifiers: - - identifier: https://orcid.org/0000-0001-5970-8626 + - identifier: 0000-0001-5970-8626 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Voigt given_name: Katja + id: 0000-0001-8090-2626 identifiers: - - identifier: https://orcid.org/0000-0001-8090-2626 + - identifier: 0000-0001-8090-2626 scheme: orcid - affiliations: - name: TU Wien family_name: Musil given_name: Angelika + id: 0000-0002-1025-1626 identifiers: - - identifier: https://orcid.org/0000-0002-1025-1626 + - identifier: 0000-0002-1025-1626 scheme: orcid - affiliations: - name: Northwestern University family_name: Mao given_name: Chengsheng + id: 0000-0002-1515-9626 identifiers: - - identifier: https://orcid.org/0000-0002-1515-9626 + - identifier: 0000-0002-1515-9626 scheme: orcid - affiliations: - name: Northwestern University family_name: Guryan given_name: Jonathan + id: 0000-0002-4036-2626 identifiers: - - identifier: https://orcid.org/0000-0002-4036-2626 + - identifier: 0000-0002-4036-2626 scheme: orcid - affiliations: - name: TU Wien family_name: Baltuska given_name: Andrius + id: 0000-0002-5267-0626 identifiers: - - identifier: https://orcid.org/0000-0002-5267-0626 + - identifier: 0000-0002-5267-0626 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: HZDR Innovation GmbH family_name: Hirschmann given_name: Eric + id: 0000-0001-5782-9627 identifiers: - - identifier: https://orcid.org/0000-0001-5782-9627 + - identifier: 0000-0001-5782-9627 scheme: orcid - affiliations: - name: Northwestern University family_name: Mirkin given_name: Chad + id: 0000-0002-6634-7627 identifiers: - - identifier: https://orcid.org/0000-0002-6634-7627 + - identifier: 0000-0002-6634-7627 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Hederer given_name: Franziska + id: 0000-0002-9597-3627 identifiers: - - identifier: https://orcid.org/0000-0002-9597-3627 + - identifier: 0000-0002-9597-3627 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Horn given_name: Amanda + id: 0000-0003-1532-1627 identifiers: - - identifier: https://orcid.org/0000-0003-1532-1627 + - identifier: 0000-0003-1532-1627 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Winkler given_name: Max + id: 0000-0001-7277-4628 identifiers: - - identifier: https://orcid.org/0000-0001-7277-4628 + - identifier: 0000-0001-7277-4628 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Murkovic given_name: Michael + id: 0000-0002-1588-5628 identifiers: - - identifier: https://orcid.org/0000-0002-1588-5628 + - identifier: 0000-0002-1588-5628 scheme: orcid - affiliations: - name: TU Wien family_name: Pratschner given_name: Stefan + id: 0000-0003-2169-6628 identifiers: - - identifier: https://orcid.org/0000-0003-2169-6628 + - identifier: 0000-0003-2169-6628 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Rudolph given_name: Theresa + id: 0000-0003-4805-5628 identifiers: - - identifier: https://orcid.org/0000-0003-4805-5628 + - identifier: 0000-0003-4805-5628 scheme: orcid - affiliations: - name: Northwestern University family_name: Carvill given_name: Gemma Louise + id: 0000-0003-4945-3628 identifiers: - - identifier: https://orcid.org/0000-0003-4945-3628 + - identifier: 0000-0003-4945-3628 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhao given_name: Xianhai + id: 0000-0002-2080-5629 identifiers: - - identifier: https://orcid.org/0000-0002-2080-5629 + - identifier: 0000-0002-2080-5629 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Friedl given_name: Herwig + id: 0000-0002-5936-3629 identifiers: - - identifier: https://orcid.org/0000-0002-5936-3629 + - identifier: 0000-0002-5936-3629 scheme: orcid - affiliations: - name: CERN family_name: Szymanski given_name: Maciej Pawel + id: 0000-0002-9121-6629 identifiers: - - identifier: https://orcid.org/0000-0002-9121-6629 + - identifier: 0000-0002-9121-6629 scheme: orcid - affiliations: - name: Northwestern University family_name: Jain given_name: Manu + id: 0000-0003-1534-5629 identifiers: - - identifier: https://orcid.org/0000-0003-1534-5629 + - identifier: 0000-0003-1534-5629 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Fiorentini given_name: Simone + id: 0000-0003-2982-7629 identifiers: - - identifier: https://orcid.org/0000-0003-2982-7629 + - identifier: 0000-0003-2982-7629 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "K\xE4nel" given_name: Andrea + id: 0000-0002-1653-562X identifiers: - - identifier: https://orcid.org/0000-0002-1653-562X + - identifier: 0000-0002-1653-562X scheme: orcid - affiliations: - name: Northwestern University family_name: Wismer given_name: Guisselle + id: 0000-0002-2407-662X identifiers: - - identifier: https://orcid.org/0000-0002-2407-662X + - identifier: 0000-0002-2407-662X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Bayer given_name: Viviane + id: 0000-0003-3561-462X identifiers: - - identifier: https://orcid.org/0000-0003-3561-462X + - identifier: 0000-0003-3561-462X scheme: orcid - affiliations: - name: University of Fribourg family_name: Schief given_name: Sebastian + id: 0000-0001-7304-6630 identifiers: - - identifier: https://orcid.org/0000-0001-7304-6630 + - identifier: 0000-0001-7304-6630 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Hirschberg given_name: Urs + id: 0000-0002-0031-5630 identifiers: - - identifier: https://orcid.org/0000-0002-0031-5630 + - identifier: 0000-0002-0031-5630 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Mazurek given_name: "Micha\u0142" + id: 0000-0002-3687-9630 identifiers: - - identifier: https://orcid.org/0000-0002-3687-9630 + - identifier: 0000-0002-3687-9630 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lupu given_name: Elena-Sorina + id: 0000-0002-3968-2630 identifiers: - - identifier: https://orcid.org/0000-0002-3968-2630 + - identifier: 0000-0002-3968-2630 scheme: orcid - affiliations: - name: TU Wien family_name: Demeter given_name: Katalin + id: 0000-0002-4260-3630 identifiers: - - identifier: https://orcid.org/0000-0002-4260-3630 + - identifier: 0000-0002-4260-3630 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Ingold given_name: Julia + id: 0000-0003-1623-8630 identifiers: - - identifier: https://orcid.org/0000-0003-1623-8630 + - identifier: 0000-0003-1623-8630 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: "Technische Universit\xE4t Dresden" family_name: Fassbender given_name: Juergen + id: 0000-0003-3893-9630 identifiers: - - identifier: https://orcid.org/0000-0003-3893-9630 + - identifier: 0000-0003-3893-9630 scheme: orcid - affiliations: - name: TU Wien family_name: purgathofer given_name: peter + id: 0000-0001-5453-5631 identifiers: - - identifier: https://orcid.org/0000-0001-5453-5631 + - identifier: 0000-0001-5453-5631 scheme: orcid - affiliations: - name: University of Fribourg family_name: Schelker given_name: Mark + id: 0000-0001-5703-1631 identifiers: - - identifier: https://orcid.org/0000-0001-5703-1631 + - identifier: 0000-0001-5703-1631 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ravindra Kumar given_name: Sripriya + id: 0000-0001-6033-7631 identifiers: - - identifier: https://orcid.org/0000-0001-6033-7631 + - identifier: 0000-0001-6033-7631 scheme: orcid - affiliations: - name: University of Fribourg family_name: Panzica given_name: Aurora + id: 0000-0002-1708-1631 identifiers: - - identifier: https://orcid.org/0000-0002-1708-1631 + - identifier: 0000-0002-1708-1631 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ducret given_name: Romain + id: 0000-0002-2008-8631 identifiers: - - identifier: https://orcid.org/0000-0002-2008-8631 + - identifier: 0000-0002-2008-8631 scheme: orcid - affiliations: - name: Elsevier Inc - name: Brookhaven National Laboratory family_name: Pritychenko given_name: Boris + id: 0000-0002-3342-8631 identifiers: - - identifier: https://orcid.org/0000-0002-3342-8631 + - identifier: 0000-0002-3342-8631 scheme: orcid - affiliations: - name: Northwestern University family_name: Hedges given_name: Larry + id: 0000-0002-7531-0631 identifiers: - - identifier: https://orcid.org/0000-0002-7531-0631 + - identifier: 0000-0002-7531-0631 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: choi given_name: sangkook + id: 0000-0002-9109-7631 identifiers: - - identifier: https://orcid.org/0000-0002-9109-7631 + - identifier: 0000-0002-9109-7631 scheme: orcid - affiliations: - name: Northwestern University family_name: Rocklin given_name: Gabriel + id: 0000-0003-2253-5631 identifiers: - - identifier: https://orcid.org/0000-0003-2253-5631 + - identifier: 0000-0003-2253-5631 scheme: orcid - affiliations: - name: Northwestern University family_name: Jones given_name: Leighton + id: 0000-0001-6657-2632 identifiers: - - identifier: https://orcid.org/0000-0001-6657-2632 + - identifier: 0000-0001-6657-2632 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Lilian Yanqing + id: 0000-0001-7507-3632 identifiers: - - identifier: https://orcid.org/0000-0001-7507-3632 + - identifier: 0000-0001-7507-3632 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Koch given_name: Erin + id: 0000-0001-9204-1632 identifiers: - - identifier: https://orcid.org/0000-0001-9204-1632 + - identifier: 0000-0001-9204-1632 scheme: orcid - affiliations: - name: TU Wien - name: XIMES GmbH family_name: "G\xE4rtner" given_name: Johannes + id: 0000-0001-9511-1632 identifiers: - - identifier: https://orcid.org/0000-0001-9511-1632 + - identifier: 0000-0001-9511-1632 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Costanza given_name: Vincenzo + id: 0000-0002-2409-0632 identifiers: - - identifier: https://orcid.org/0000-0002-2409-0632 + - identifier: 0000-0002-2409-0632 scheme: orcid - affiliations: - name: "Universit\xE4t f\xFCr Bodenkultur Wien" - name: TU Wien family_name: Hauer given_name: Friedrich + id: 0000-0002-4750-8632 identifiers: - - identifier: https://orcid.org/0000-0002-4750-8632 + - identifier: 0000-0002-4750-8632 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schulte given_name: Jan Sebastian + id: 0000-0003-0336-2632 identifiers: - - identifier: https://orcid.org/0000-0003-0336-2632 + - identifier: 0000-0003-0336-2632 scheme: orcid - affiliations: - name: TU Wien family_name: "F\xFCrst" given_name: Martin + id: 0000-0003-4099-9632 identifiers: - - identifier: https://orcid.org/0000-0003-4099-9632 + - identifier: 0000-0003-4099-9632 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Jiang given_name: Fangzhou + id: 0000-0001-6115-0633 identifiers: - - identifier: https://orcid.org/0000-0001-6115-0633 + - identifier: 0000-0001-6115-0633 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Lin given_name: Wy Ming + id: 0000-0001-8588-1633 identifiers: - - identifier: https://orcid.org/0000-0001-8588-1633 + - identifier: 0000-0001-8588-1633 scheme: orcid - affiliations: - name: University of Fribourg family_name: "H\xFCrlimann-Kaup" given_name: Bettina + id: 0000-0002-1276-3633 identifiers: - - identifier: https://orcid.org/0000-0002-1276-3633 + - identifier: 0000-0002-1276-3633 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Matic given_name: Tatjana + id: 0000-0002-2328-6633 identifiers: - - identifier: https://orcid.org/0000-0002-2328-6633 + - identifier: 0000-0002-2328-6633 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pierson given_name: Nico + id: 0000-0002-2451-0633 identifiers: - - identifier: https://orcid.org/0000-0002-2451-0633 + - identifier: 0000-0002-2451-0633 scheme: orcid - affiliations: - name: CERN family_name: Luchetti given_name: Fabio + id: 0000-0002-5733-9633 identifiers: - - identifier: https://orcid.org/0000-0002-5733-9633 + - identifier: 0000-0002-5733-9633 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Buchert given_name: Felix + id: 0000-0001-6704-6634 identifiers: - - identifier: https://orcid.org/0000-0001-6704-6634 + - identifier: 0000-0001-6704-6634 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Szentes given_name: Sarolta + id: 0000-0002-0366-8634 identifiers: - - identifier: https://orcid.org/0000-0002-0366-8634 + - identifier: 0000-0002-0366-8634 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Akras given_name: Lee + id: 0000-0002-3724-3634 identifiers: - - identifier: https://orcid.org/0000-0002-3724-3634 + - identifier: 0000-0002-3724-3634 scheme: orcid - affiliations: - name: TU Wien family_name: Kutscha given_name: Regina + id: 0000-0002-6720-7634 identifiers: - - identifier: https://orcid.org/0000-0002-6720-7634 + - identifier: 0000-0002-6720-7634 scheme: orcid - affiliations: - name: CERN family_name: Leith given_name: Stewart + id: 0000-0002-8832-3634 identifiers: - - identifier: https://orcid.org/0000-0002-8832-3634 + - identifier: 0000-0002-8832-3634 scheme: orcid - affiliations: - name: CERN family_name: Sels given_name: Simon Mark C + id: 0000-0001-6694-4635 identifiers: - - identifier: https://orcid.org/0000-0001-6694-4635 + - identifier: 0000-0001-6694-4635 scheme: orcid - affiliations: - name: CERN family_name: Wagner given_name: Andreas + id: 0000-0001-9589-2635 identifiers: - - identifier: https://orcid.org/0000-0001-9589-2635 + - identifier: 0000-0001-9589-2635 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Akbari given_name: Azadeh + id: 0000-0002-0214-0635 identifiers: - - identifier: https://orcid.org/0000-0002-0214-0635 + - identifier: 0000-0002-0214-0635 scheme: orcid - affiliations: - name: CERN family_name: Rademakers given_name: Fons + id: 0000-0002-3571-9635 identifiers: - - identifier: https://orcid.org/0000-0002-3571-9635 + - identifier: 0000-0002-3571-9635 scheme: orcid - affiliations: - name: California Institute of Technology - name: Harvard University family_name: Hutzler given_name: Nicholas + id: 0000-0002-5203-3635 identifiers: - - identifier: https://orcid.org/0000-0002-5203-3635 + - identifier: 0000-0002-5203-3635 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "Proa\xF1o" given_name: Christian + id: 0000-0002-5148-7635 identifiers: - - identifier: https://orcid.org/0000-0002-5148-7635 + - identifier: 0000-0002-5148-7635 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Rechberger given_name: Helmut + id: 0000-0002-7723-0635 identifiers: - - identifier: https://orcid.org/0000-0002-7723-0635 + - identifier: 0000-0002-7723-0635 scheme: orcid - affiliations: - name: California Institute of Technology family_name: fejes toth given_name: katalin + id: 0000-0001-6558-2636 identifiers: - - identifier: https://orcid.org/0000-0001-6558-2636 + - identifier: 0000-0001-6558-2636 scheme: orcid - affiliations: - name: CERN family_name: Laurila given_name: Santeri + id: 0000-0001-7507-8636 identifiers: - - identifier: https://orcid.org/0000-0001-7507-8636 + - identifier: 0000-0001-7507-8636 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wishart given_name: James + id: 0000-0002-0488-7636 identifiers: - - identifier: https://orcid.org/0000-0002-0488-7636 + - identifier: 0000-0002-0488-7636 scheme: orcid - affiliations: - name: CERN family_name: Klein given_name: Jochen + id: 0000-0002-1301-1636 identifiers: - - identifier: https://orcid.org/0000-0002-1301-1636 + - identifier: 0000-0002-1301-1636 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pampaloni given_name: Alessandra + id: 0000-0002-7785-9636 identifiers: - - identifier: https://orcid.org/0000-0002-7785-9636 + - identifier: 0000-0002-7785-9636 scheme: orcid - affiliations: - name: TU Wien family_name: Aguinsky given_name: Luiz Felipe + id: 0000-0003-4722-0636 identifiers: - - identifier: https://orcid.org/0000-0003-4722-0636 + - identifier: 0000-0003-4722-0636 scheme: orcid - affiliations: - name: University of Fribourg family_name: Vetter given_name: Petra + id: 0000-0001-6516-4637 identifiers: - - identifier: https://orcid.org/0000-0001-6516-4637 + - identifier: 0000-0001-6516-4637 scheme: orcid - affiliations: - name: Northwestern University family_name: Nogueira da Costa given_name: Diogo + id: 0000-0001-8938-5637 identifiers: - - identifier: https://orcid.org/0000-0001-8938-5637 + - identifier: 0000-0001-8938-5637 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Reichl given_name: Franz + id: 0000-0002-0407-1637 identifiers: - - identifier: https://orcid.org/0000-0002-0407-1637 + - identifier: 0000-0002-0407-1637 scheme: orcid - affiliations: - name: AVL List GmbH - name: Graz University of Technology family_name: Bajzek given_name: Matthias + id: 0000-0002-2079-2637 identifiers: - - identifier: https://orcid.org/0000-0002-2079-2637 + - identifier: 0000-0002-2079-2637 scheme: orcid - affiliations: - name: TU Wien family_name: Musliu given_name: Nysret + id: 0000-0002-3992-8637 identifiers: - - identifier: https://orcid.org/0000-0002-3992-8637 + - identifier: 0000-0002-3992-8637 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Sadeghzadeh given_name: Masoud + id: 0000-0002-6844-6637 identifiers: - - identifier: https://orcid.org/0000-0002-6844-6637 + - identifier: 0000-0002-6844-6637 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Rheinfrank given_name: Erik + id: 0000-0002-9014-1637 identifiers: - - identifier: https://orcid.org/0000-0002-9014-1637 + - identifier: 0000-0002-9014-1637 scheme: orcid - affiliations: - name: Northwestern University family_name: Cowles given_name: Sarah + id: 0000-0003-2102-4637 identifiers: - - identifier: https://orcid.org/0000-0003-2102-4637 + - identifier: 0000-0003-2102-4637 scheme: orcid - affiliations: - name: CERN family_name: Coimbra given_name: Artur + id: 0000-0003-2301-1637 identifiers: - - identifier: https://orcid.org/0000-0003-2301-1637 + - identifier: 0000-0003-2301-1637 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: Zacharias given_name: Robert + id: 0000-0001-8671-9638 identifiers: - - identifier: https://orcid.org/0000-0001-8671-9638 + - identifier: 0000-0001-8671-9638 scheme: orcid - affiliations: - name: CERN family_name: Rimlinger given_name: Maeva + id: 0000-0001-9891-2638 identifiers: - - identifier: https://orcid.org/0000-0001-9891-2638 + - identifier: 0000-0001-9891-2638 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Feri\xE9" given_name: Frederik + id: 0000-0002-0128-8638 identifiers: - - identifier: https://orcid.org/0000-0002-0128-8638 + - identifier: 0000-0002-0128-8638 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "M\xFCller" given_name: Katharina + id: 0000-0002-0038-1638 identifiers: - - identifier: https://orcid.org/0000-0002-0038-1638 + - identifier: 0000-0002-0038-1638 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: "Deutsches Zentrum f\xFCr Hochschul- und Wissenschaftsforschung GmbH" family_name: "L\xF6rz" given_name: Markus + id: 0000-0002-1463-6638 identifiers: - - identifier: https://orcid.org/0000-0002-1463-6638 + - identifier: 0000-0002-1463-6638 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Wurm given_name: Patrick + id: 0000-0002-6767-4638 identifiers: - - identifier: https://orcid.org/0000-0002-6767-4638 + - identifier: 0000-0002-6767-4638 scheme: orcid - affiliations: - name: TU Wien family_name: Schmelz given_name: Dominik + id: 0000-0002-8067-6638 identifiers: - - identifier: https://orcid.org/0000-0002-8067-6638 + - identifier: 0000-0002-8067-6638 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Darbo given_name: Giovanni + id: 0000-0003-2165-0638 identifiers: - - identifier: https://orcid.org/0000-0003-2165-0638 + - identifier: 0000-0003-2165-0638 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Avanesian given_name: Talin + id: 0000-0001-5669-5639 identifiers: - - identifier: https://orcid.org/0000-0001-5669-5639 + - identifier: 0000-0001-5669-5639 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Young given_name: Christopher + id: 0000-0001-5858-6639 identifiers: - - identifier: https://orcid.org/0000-0001-5858-6639 + - identifier: 0000-0001-5858-6639 scheme: orcid - affiliations: - name: Northwestern University family_name: Rydland given_name: Kelsey + id: 0000-0002-0340-4639 identifiers: - - identifier: https://orcid.org/0000-0002-0340-4639 + - identifier: 0000-0002-0340-4639 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pia given_name: Maria Grazia + id: 0000-0002-3579-9639 identifiers: - - identifier: https://orcid.org/0000-0002-3579-9639 + - identifier: 0000-0002-3579-9639 scheme: orcid - affiliations: - name: TU Wien family_name: Rinker given_name: Felix P. + id: 0000-0002-6409-8639 identifiers: - - identifier: https://orcid.org/0000-0002-6409-8639 + - identifier: 0000-0002-6409-8639 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: "Universitat Polit\xE8cnica de Catalunya" family_name: Calvino given_name: Francisco + id: 0000-0002-7198-4639 identifiers: - - identifier: https://orcid.org/0000-0002-7198-4639 + - identifier: 0000-0002-7198-4639 scheme: orcid - affiliations: - name: Northwestern University family_name: Gallio given_name: Marco + id: 0000-0003-2132-0639 identifiers: - - identifier: https://orcid.org/0000-0003-2132-0639 + - identifier: 0000-0003-2132-0639 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Sherifova given_name: Selda + id: 0000-0003-2485-5639 identifiers: - - identifier: https://orcid.org/0000-0003-2485-5639 + - identifier: 0000-0003-2485-5639 scheme: orcid - affiliations: - name: CERN family_name: Vryonidou given_name: Eleni + id: 0000-0003-4481-3639 identifiers: - - identifier: https://orcid.org/0000-0003-4481-3639 + - identifier: 0000-0003-4481-3639 scheme: orcid - affiliations: - name: Northwestern University family_name: Dallmann given_name: Jonathan + id: 0000-0003-4871-8639 identifiers: - - identifier: https://orcid.org/0000-0003-4871-8639 + - identifier: 0000-0003-4871-8639 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Pengzhi + id: 0000-0003-4813-6639 identifiers: - - identifier: https://orcid.org/0000-0003-4813-6639 + - identifier: 0000-0003-4813-6639 scheme: orcid - affiliations: - name: University of Fribourg family_name: Meurville given_name: Marie-Pierre + id: 0000-0001-6767-063X identifiers: - - identifier: https://orcid.org/0000-0001-6767-063X + - identifier: 0000-0001-6767-063X scheme: orcid - affiliations: - name: TU Wien @@ -30205,50 +34403,57 @@ - name: University of Cambridge family_name: Semlitsch given_name: Bernhard + id: 0000-0001-7715-863X identifiers: - - identifier: https://orcid.org/0000-0001-7715-863X + - identifier: 0000-0001-7715-863X scheme: orcid - affiliations: - name: TU Wien family_name: Pimon given_name: Martin + id: 0000-0001-7784-463X identifiers: - - identifier: https://orcid.org/0000-0001-7784-463X + - identifier: 0000-0001-7784-463X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Lopes Lavorato given_name: Heloisa + id: 0000-0002-1388-463X identifiers: - - identifier: https://orcid.org/0000-0002-1388-463X + - identifier: 0000-0002-1388-463X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kleszczynski given_name: Konrad + id: 0000-0002-1311-263X identifiers: - - identifier: https://orcid.org/0000-0002-1311-263X + - identifier: 0000-0002-1311-263X scheme: orcid - affiliations: - name: Northwestern University family_name: Lau given_name: Ka-Cheong + id: 0000-0002-3726-163X identifiers: - - identifier: https://orcid.org/0000-0002-3726-163X + - identifier: 0000-0002-3726-163X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Galindo given_name: Vladimir + id: 0000-0002-7489-863X identifiers: - - identifier: https://orcid.org/0000-0002-7489-863X + - identifier: 0000-0002-7489-863X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tanaka given_name: Michiko + id: 0000-0002-9052-163X identifiers: - - identifier: https://orcid.org/0000-0002-9052-163X + - identifier: 0000-0002-9052-163X scheme: orcid - affiliations: - name: NASA Langley Research Center @@ -30258,30 +34463,34 @@ - name: Australian National University family_name: Lokare given_name: Yash + id: 0000-0003-3070-663X identifiers: - - identifier: https://orcid.org/0000-0003-3070-663X + - identifier: 0000-0003-3070-663X scheme: orcid - affiliations: - name: California Institute of Technology - name: University of California San Diego family_name: McHugh given_name: Colleen + id: 0000-0001-6008-2640 identifiers: - - identifier: https://orcid.org/0000-0001-6008-2640 + - identifier: 0000-0001-6008-2640 scheme: orcid - affiliations: - name: TU Wien family_name: Kunes given_name: Jan + id: 0000-0001-9682-7640 identifiers: - - identifier: https://orcid.org/0000-0001-9682-7640 + - identifier: 0000-0001-9682-7640 scheme: orcid - affiliations: - name: Northwestern University family_name: Nuamah given_name: Sally + id: 0000-0001-9975-3640 identifiers: - - identifier: https://orcid.org/0000-0001-9975-3640 + - identifier: 0000-0001-9975-3640 scheme: orcid - affiliations: - name: Bharati Vidyapeeth Deemed University College of Architecture @@ -30291,88 +34500,100 @@ - name: ANUKRUTI family_name: Spies given_name: Martina Maria + id: 0000-0002-1828-0640 identifiers: - - identifier: https://orcid.org/0000-0002-1828-0640 + - identifier: 0000-0002-1828-0640 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Baldermann given_name: Andre + id: 0000-0002-2319-4640 identifiers: - - identifier: https://orcid.org/0000-0002-2319-4640 + - identifier: 0000-0002-2319-4640 scheme: orcid - affiliations: - name: TU Wien family_name: Steinbrunner given_name: Barbara + id: 0000-0003-0351-4640 identifiers: - - identifier: https://orcid.org/0000-0003-0351-4640 + - identifier: 0000-0003-0351-4640 scheme: orcid - affiliations: - name: CERN - name: Lancaster University family_name: Castilla Loeza given_name: Alejandro + id: 0000-0003-1040-7640 identifiers: - - identifier: https://orcid.org/0000-0003-1040-7640 + - identifier: 0000-0003-1040-7640 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Olaizola given_name: Bruno + id: 0000-0003-1604-0640 identifiers: - - identifier: https://orcid.org/0000-0003-1604-0640 + - identifier: 0000-0003-1604-0640 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Herz given_name: Holger + id: 0000-0003-3495-1640 identifiers: - - identifier: https://orcid.org/0000-0003-3495-1640 + - identifier: 0000-0003-3495-1640 scheme: orcid - affiliations: - name: Northwestern University family_name: Calder given_name: Bobby + id: 0000-0002-0120-4641 identifiers: - - identifier: https://orcid.org/0000-0002-0120-4641 + - identifier: 0000-0002-0120-4641 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Loy given_name: Frederik + id: 0000-0002-5118-0641 identifiers: - - identifier: https://orcid.org/0000-0002-5118-0641 + - identifier: 0000-0002-5118-0641 scheme: orcid - affiliations: - name: Northwestern University family_name: Mazurek given_name: Christopher + id: 0000-0002-6526-7641 identifiers: - - identifier: https://orcid.org/0000-0002-6526-7641 + - identifier: 0000-0002-6526-7641 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Stadlbauer given_name: Pascal + id: 0000-0003-1199-9641 identifiers: - - identifier: https://orcid.org/0000-0003-1199-9641 + - identifier: 0000-0003-1199-9641 scheme: orcid - affiliations: - name: "University of M\xFCnster" - name: "Universit\xE4t Bremen" family_name: Miller given_name: Charlotte + id: 0000-0003-1547-1641 identifiers: - - identifier: https://orcid.org/0000-0003-1547-1641 + - identifier: 0000-0003-1547-1641 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Tjell given_name: Anders + id: 0000-0001-9355-1642 identifiers: - - identifier: https://orcid.org/0000-0001-9355-1642 + - identifier: 0000-0001-9355-1642 scheme: orcid - affiliations: - name: Vanderbilt University @@ -30380,428 +34601,488 @@ - name: Northwestern University family_name: Iacobucci given_name: Dawn + id: 0000-0001-9761-6642 identifiers: - - identifier: https://orcid.org/0000-0001-9761-6642 + - identifier: 0000-0001-9761-6642 scheme: orcid - affiliations: - name: TU Wien family_name: Kadic given_name: Nela + id: 0000-0002-5716-4642 identifiers: - - identifier: https://orcid.org/0000-0002-5716-4642 + - identifier: 0000-0002-5716-4642 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Utsunomiya given_name: Shoko + id: 0000-0003-3667-1642 identifiers: - - identifier: https://orcid.org/0000-0003-3667-1642 + - identifier: 0000-0003-3667-1642 scheme: orcid - affiliations: - name: TU Wien family_name: Linhart given_name: Lukas + id: 0000-0001-5370-5643 identifiers: - - identifier: https://orcid.org/0000-0001-5370-5643 + - identifier: 0000-0001-5370-5643 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Hensel given_name: Michael + id: 0000-0001-5899-5643 identifiers: - - identifier: https://orcid.org/0000-0001-5899-5643 + - identifier: 0000-0001-5899-5643 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Personnettaz given_name: Paolo + id: 0000-0001-8990-0643 identifiers: - - identifier: https://orcid.org/0000-0001-8990-0643 + - identifier: 0000-0001-8990-0643 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Schmitt given_name: Alexander + id: 0000-0002-1195-2643 identifiers: - - identifier: https://orcid.org/0000-0002-1195-2643 + - identifier: 0000-0002-1195-2643 scheme: orcid - affiliations: - name: Austrian Centre of Industrial Biotechnology - name: "Technische Universit\xE4t Graz" family_name: Nidetzky given_name: Bernd + id: 0000-0002-5030-2643 identifiers: - - identifier: https://orcid.org/0000-0002-5030-2643 + - identifier: 0000-0002-5030-2643 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Mohlabeng given_name: Gopolang + id: 0000-0002-7482-2643 identifiers: - - identifier: https://orcid.org/0000-0002-7482-2643 + - identifier: 0000-0002-7482-2643 scheme: orcid - affiliations: - name: CERN family_name: Weber given_name: Matthias + id: 0000-0003-0838-3643 identifiers: - - identifier: https://orcid.org/0000-0003-0838-3643 + - identifier: 0000-0003-0838-3643 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "\xD6zgen" given_name: Fatma Feyza + id: 0000-0001-5114-8644 identifiers: - - identifier: https://orcid.org/0000-0001-5114-8644 + - identifier: 0000-0001-5114-8644 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: KADI given_name: Yacine + id: 0000-0001-5618-4644 identifiers: - - identifier: https://orcid.org/0000-0001-5618-4644 + - identifier: 0000-0001-5618-4644 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nakka given_name: yashwanth kumar + id: 0000-0001-7897-3644 identifiers: - - identifier: https://orcid.org/0000-0001-7897-3644 + - identifier: 0000-0001-7897-3644 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gupta given_name: Anchal + id: 0000-0002-1762-9644 identifiers: - - identifier: https://orcid.org/0000-0002-1762-9644 + - identifier: 0000-0002-1762-9644 scheme: orcid - affiliations: - name: Northwestern University family_name: Simuni given_name: Tanya + id: 0000-0002-2347-1644 identifiers: - - identifier: https://orcid.org/0000-0002-2347-1644 + - identifier: 0000-0002-2347-1644 scheme: orcid - affiliations: - name: Northwestern University family_name: Carlo given_name: Andrew + id: 0000-0002-4349-9644 identifiers: - - identifier: https://orcid.org/0000-0002-4349-9644 + - identifier: 0000-0002-4349-9644 scheme: orcid - affiliations: - name: TU Wien - name: "Austrian Excellence Center for Tribology, AC\xB2T" family_name: Rudnytskyj given_name: "Andr\xE9" + id: 0000-0002-6690-6644 identifiers: - - identifier: https://orcid.org/0000-0002-6690-6644 + - identifier: 0000-0002-6690-6644 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Martin given_name: Christopher + id: 0000-0002-8650-1644 identifiers: - - identifier: https://orcid.org/0000-0002-8650-1644 + - identifier: 0000-0002-8650-1644 scheme: orcid - affiliations: - name: TU Wien family_name: "G\xE9mes" given_name: Kinga + id: 0000-0003-0626-9644 identifiers: - - identifier: https://orcid.org/0000-0003-0626-9644 + - identifier: 0000-0003-0626-9644 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: McMahon given_name: Andrew + id: 0000-0001-8836-6645 identifiers: - - identifier: https://orcid.org/0000-0001-8836-6645 + - identifier: 0000-0001-8836-6645 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Hess given_name: Miriam + id: 0000-0002-5070-5645 identifiers: - - identifier: https://orcid.org/0000-0002-5070-5645 + - identifier: 0000-0002-5070-5645 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Rumpf given_name: Sebastian + id: 0000-0002-7128-2645 identifiers: - - identifier: https://orcid.org/0000-0002-7128-2645 + - identifier: 0000-0002-7128-2645 scheme: orcid - affiliations: - name: California Institute of Technology family_name: McBeath given_name: Sean T. + id: 0000-0003-0701-1645 identifiers: - - identifier: https://orcid.org/0000-0003-0701-1645 + - identifier: 0000-0003-0701-1645 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Segev given_name: Eran + id: 0000-0001-8846-6646 identifiers: - - identifier: https://orcid.org/0000-0001-8846-6646 + - identifier: 0000-0001-8846-6646 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "W\xF6lfer" given_name: Elias + id: 0000-0001-9147-0646 identifiers: - - identifier: https://orcid.org/0000-0001-9147-0646 + - identifier: 0000-0001-9147-0646 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Vu given_name: Tri + id: 0000-0002-1098-5646 identifiers: - - identifier: https://orcid.org/0000-0002-1098-5646 + - identifier: 0000-0002-1098-5646 scheme: orcid - affiliations: - name: Northwestern University family_name: Woolley given_name: Catherine + id: 0000-0002-8069-2646 identifiers: - - identifier: https://orcid.org/0000-0002-8069-2646 + - identifier: 0000-0002-8069-2646 scheme: orcid - affiliations: - name: University of Bamberg family_name: Schmidt given_name: Regine + id: 0000-0002-8484-5646 identifiers: - - identifier: https://orcid.org/0000-0002-8484-5646 + - identifier: 0000-0002-8484-5646 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Keller given_name: Kirill + id: 0000-0002-9188-5646 identifiers: - - identifier: https://orcid.org/0000-0002-9188-5646 + - identifier: 0000-0002-9188-5646 scheme: orcid - affiliations: - name: Northwestern University family_name: Dunton given_name: Cody + id: 0000-0002-0909-9647 identifiers: - - identifier: https://orcid.org/0000-0002-0909-9647 + - identifier: 0000-0002-0909-9647 scheme: orcid - affiliations: - name: TU Wien family_name: Stampfl given_name: "J\xFCrgen" + id: 0000-0002-3626-5647 identifiers: - - identifier: https://orcid.org/0000-0002-3626-5647 + - identifier: 0000-0002-3626-5647 scheme: orcid - affiliations: - name: TU Wien family_name: Steininger given_name: Andreas + id: 0000-0002-3847-1647 identifiers: - - identifier: https://orcid.org/0000-0002-3847-1647 + - identifier: 0000-0002-3847-1647 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Funke given_name: Klaus + id: 0000-0001-9854-9648 identifiers: - - identifier: https://orcid.org/0000-0001-9854-9648 + - identifier: 0000-0001-9854-9648 scheme: orcid - affiliations: - name: Northwestern University family_name: Lukoyanov given_name: Dmitriy + id: 0000-0002-4542-1648 identifiers: - - identifier: https://orcid.org/0000-0002-4542-1648 + - identifier: 0000-0002-4542-1648 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: MARNAT given_name: Antoine + id: 0000-0001-9347-7649 identifiers: - - identifier: https://orcid.org/0000-0001-9347-7649 + - identifier: 0000-0001-9347-7649 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Yazg\xFCl" given_name: Simsek + id: 0000-0003-1556-9649 identifiers: - - identifier: https://orcid.org/0000-0003-1556-9649 + - identifier: 0000-0003-1556-9649 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Carr given_name: G. Lawrence + id: 0000-0001-5478-964X identifiers: - - identifier: https://orcid.org/0000-0001-5478-964X + - identifier: 0000-0001-5478-964X scheme: orcid - affiliations: - name: TU Wien family_name: Jimenez given_name: Michael + id: 0000-0001-7212-764X identifiers: - - identifier: https://orcid.org/0000-0001-7212-764X + - identifier: 0000-0001-7212-764X scheme: orcid - affiliations: - name: CERN - name: National Centre for Physics family_name: Imran given_name: Muhammad + id: 0000-0002-2979-564X identifiers: - - identifier: https://orcid.org/0000-0002-2979-564X + - identifier: 0000-0002-2979-564X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Arnold given_name: Frances H. + id: 0000-0002-4027-364X identifiers: - - identifier: https://orcid.org/0000-0002-4027-364X + - identifier: 0000-0002-4027-364X scheme: orcid - affiliations: - name: Northwestern University family_name: Nguyen given_name: Trung + id: 0000-0002-5076-264X identifiers: - - identifier: https://orcid.org/0000-0002-5076-264X + - identifier: 0000-0002-5076-264X scheme: orcid - affiliations: - name: Northwestern University family_name: Kafader given_name: Jared + id: 0000-0002-5359-264X identifiers: - - identifier: https://orcid.org/0000-0002-5359-264X + - identifier: 0000-0002-5359-264X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Schillaci given_name: Gaetano + id: 0000-0002-8600-164X identifiers: - - identifier: https://orcid.org/0000-0002-8600-164X + - identifier: 0000-0002-8600-164X scheme: orcid - affiliations: - name: Northwestern University family_name: "R\xF6sler" given_name: Boris + id: 0000-0001-8596-5650 identifiers: - - identifier: https://orcid.org/0000-0001-8596-5650 + - identifier: 0000-0001-8596-5650 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Filgueira given_name: Luis + id: 0000-0002-2266-6650 identifiers: - - identifier: https://orcid.org/0000-0002-2266-6650 + - identifier: 0000-0002-2266-6650 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Hasuo given_name: Ichiro + id: 0000-0002-8300-4650 identifiers: - - identifier: https://orcid.org/0000-0002-8300-4650 + - identifier: 0000-0002-8300-4650 scheme: orcid - affiliations: - name: California Institute of Technology family_name: He given_name: Zhe + id: 0000-0002-8525-3650 identifiers: - - identifier: https://orcid.org/0000-0002-8525-3650 + - identifier: 0000-0002-8525-3650 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Peu\xDF" given_name: Robert + id: 0000-0002-9716-6650 identifiers: - - identifier: https://orcid.org/0000-0002-9716-6650 + - identifier: 0000-0002-9716-6650 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Khadria given_name: Anjul + id: 0000-0002-9771-3650 identifiers: - - identifier: https://orcid.org/0000-0002-9771-3650 + - identifier: 0000-0002-9771-3650 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Luo given_name: Yangcheng + id: 0000-0003-0983-3650 identifiers: - - identifier: https://orcid.org/0000-0003-0983-3650 + - identifier: 0000-0003-0983-3650 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Haomin + id: 0000-0001-7193-8651 identifiers: - - identifier: https://orcid.org/0000-0001-7193-8651 + - identifier: 0000-0001-7193-8651 scheme: orcid - affiliations: - name: University of Fribourg - name: "Karl-Franzens-Universit\xE4t Graz" family_name: "Garc\xEDa Portela" given_name: Laura + id: 0000-0002-4666-1651 identifiers: - - identifier: https://orcid.org/0000-0002-4666-1651 + - identifier: 0000-0002-4666-1651 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lambert given_name: Valere + id: 0000-0002-6174-9651 identifiers: - - identifier: https://orcid.org/0000-0002-6174-9651 + - identifier: 0000-0002-6174-9651 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Vollmer given_name: Christian + id: 0000-0002-7768-7651 identifiers: - - identifier: https://orcid.org/0000-0002-7768-7651 + - identifier: 0000-0002-7768-7651 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Arleo given_name: Alessio + id: 0000-0003-2008-3651 identifiers: - - identifier: https://orcid.org/0000-0003-2008-3651 + - identifier: 0000-0003-2008-3651 scheme: orcid - affiliations: - name: CERN family_name: Innocenti given_name: Gian Michele + id: 0000-0003-2478-9651 identifiers: - - identifier: https://orcid.org/0000-0003-2478-9651 + - identifier: 0000-0003-2478-9651 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Mirabella given_name: Francesca + id: 0000-0001-8443-3652 identifiers: - - identifier: https://orcid.org/0000-0001-8443-3652 + - identifier: 0000-0001-8443-3652 scheme: orcid - affiliations: - name: TU Wien family_name: Pavelec given_name: Jiri + id: 0000-0001-8899-5652 identifiers: - - identifier: https://orcid.org/0000-0001-8899-5652 + - identifier: 0000-0001-8899-5652 scheme: orcid - affiliations: - name: Northwestern University family_name: Grabowecky given_name: Marcia + id: 0000-0002-1450-8652 identifiers: - - identifier: https://orcid.org/0000-0002-1450-8652 + - identifier: 0000-0002-1450-8652 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Xu given_name: Wenhu + id: 0000-0003-0164-4652 identifiers: - - identifier: https://orcid.org/0000-0003-0164-4652 + - identifier: 0000-0003-0164-4652 scheme: orcid - affiliations: - name: Tel Aviv University @@ -30809,118 +35090,134 @@ - name: Northwestern University family_name: Avraham given_name: Ronen + id: 0000-0003-4426-5652 identifiers: - - identifier: https://orcid.org/0000-0003-4426-5652 + - identifier: 0000-0003-4426-5652 scheme: orcid - affiliations: - name: Brno University of Technology - name: "Technische Universit\xE4t Wien" family_name: Detz given_name: Hermann + id: 0000-0002-4167-3653 identifiers: - - identifier: https://orcid.org/0000-0002-4167-3653 + - identifier: 0000-0002-4167-3653 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Sorokin given_name: Evgeni + id: 0000-0002-4703-9653 identifiers: - - identifier: https://orcid.org/0000-0002-4703-9653 + - identifier: 0000-0002-4703-9653 scheme: orcid - affiliations: - name: University of Colorado Denver - name: Northwestern University family_name: Kiesling given_name: Lynne + id: 0000-0002-6854-2653 identifiers: - - identifier: https://orcid.org/0000-0002-6854-2653 + - identifier: 0000-0002-6854-2653 scheme: orcid - affiliations: - name: Northwestern University family_name: Pesce given_name: Lorenzo + id: 0000-0002-8015-4653 identifiers: - - identifier: https://orcid.org/0000-0002-8015-4653 + - identifier: 0000-0002-8015-4653 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: LONG given_name: KENNETH + id: 0000-0003-0664-1653 identifiers: - - identifier: https://orcid.org/0000-0003-0664-1653 + - identifier: 0000-0003-0664-1653 scheme: orcid - affiliations: - name: Vanqua Bio - name: Northwestern University family_name: Ysselstein given_name: Daniel + id: 0000-0003-3423-9653 identifiers: - - identifier: https://orcid.org/0000-0003-3423-9653 + - identifier: 0000-0003-3423-9653 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: Consiglio Nazionale delle Ricerche family_name: Rizzo given_name: Fabio + id: 0000-0003-4045-2653 identifiers: - - identifier: https://orcid.org/0000-0003-4045-2653 + - identifier: 0000-0003-4045-2653 scheme: orcid - affiliations: - name: Northwestern University family_name: Tillery given_name: Alvin + id: 0000-0003-4362-9653 identifiers: - - identifier: https://orcid.org/0000-0003-4362-9653 + - identifier: 0000-0003-4362-9653 scheme: orcid - affiliations: - name: TU Wien family_name: Bahr given_name: Ahmed + id: 0000-0003-2848-1654 identifiers: - - identifier: https://orcid.org/0000-0003-2848-1654 + - identifier: 0000-0003-2848-1654 scheme: orcid - affiliations: - name: California Institute of Technology - name: ENEA Centro Ricerche Portici family_name: Di Luccio given_name: Tiziana + id: 0000-0001-8947-0655 identifiers: - - identifier: https://orcid.org/0000-0001-8947-0655 + - identifier: 0000-0001-8947-0655 scheme: orcid - affiliations: - name: Northwestern University family_name: Das given_name: Partha Jyoti + id: 0000-0002-3377-7655 identifiers: - - identifier: https://orcid.org/0000-0002-3377-7655 + - identifier: 0000-0002-3377-7655 scheme: orcid - affiliations: - name: Northwestern University family_name: Park given_name: Hong Youl + id: 0000-0002-7618-7655 identifiers: - - identifier: https://orcid.org/0000-0002-7618-7655 + - identifier: 0000-0002-7618-7655 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Verlato given_name: Marco + id: 0000-0003-1967-7655 identifiers: - - identifier: https://orcid.org/0000-0003-1967-7655 + - identifier: 0000-0003-1967-7655 scheme: orcid - affiliations: - name: TU Wien family_name: Szeider given_name: Stefan + id: 0000-0001-8994-1656 identifiers: - - identifier: https://orcid.org/0000-0001-8994-1656 + - identifier: 0000-0001-8994-1656 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nie given_name: Si + id: 0000-0002-1347-0656 identifiers: - - identifier: https://orcid.org/0000-0002-1347-0656 + - identifier: 0000-0002-1347-0656 scheme: orcid - affiliations: - name: Southern University of Science and Technology @@ -30928,206 +35225,235 @@ - name: Huntington Medical Research Institutes family_name: Liu given_name: Quanying + id: 0000-0002-2501-7656 identifiers: - - identifier: https://orcid.org/0000-0002-2501-7656 + - identifier: 0000-0002-2501-7656 scheme: orcid - affiliations: - name: TU Wien family_name: Horn given_name: Matthias + id: 0000-0002-7169-7656 identifiers: - - identifier: https://orcid.org/0000-0002-7169-7656 + - identifier: 0000-0002-7169-7656 scheme: orcid - affiliations: - name: Northwestern University - name: MitoLab family_name: Bhan given_name: Namita + id: 0000-0002-8104-3656 identifiers: - - identifier: https://orcid.org/0000-0002-8104-3656 + - identifier: 0000-0002-8104-3656 scheme: orcid - affiliations: - name: TU Wien family_name: Hutterer given_name: Markus + id: 0000-0003-0892-0656 identifiers: - - identifier: https://orcid.org/0000-0003-0892-0656 + - identifier: 0000-0003-0892-0656 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schurr given_name: Simon Lukas + id: 0000-0002-0169-2657 identifiers: - - identifier: https://orcid.org/0000-0002-0169-2657 + - identifier: 0000-0002-0169-2657 scheme: orcid - affiliations: - name: University of Fribourg family_name: Louis-Jean given_name: TISSOT + id: 0000-0002-0419-9657 identifiers: - - identifier: https://orcid.org/0000-0002-0419-9657 + - identifier: 0000-0002-0419-9657 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Burgd\xF6rfer" given_name: Joachim + id: 0000-0002-1479-2657 identifiers: - - identifier: https://orcid.org/0000-0002-1479-2657 + - identifier: 0000-0002-1479-2657 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Warchomicka given_name: Fernando + id: 0000-0002-4909-8657 identifiers: - - identifier: https://orcid.org/0000-0002-4909-8657 + - identifier: 0000-0002-4909-8657 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhu given_name: Yizhou + id: 0000-0002-5819-7657 identifiers: - - identifier: https://orcid.org/0000-0002-5819-7657 + - identifier: 0000-0002-5819-7657 scheme: orcid - affiliations: - name: TU Wien family_name: Panek given_name: Paul + id: 0000-0003-0774-5657 identifiers: - - identifier: https://orcid.org/0000-0003-0774-5657 + - identifier: 0000-0003-0774-5657 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Emich given_name: Jana + id: 0000-0003-1863-9657 identifiers: - - identifier: https://orcid.org/0000-0003-1863-9657 + - identifier: 0000-0003-1863-9657 scheme: orcid - affiliations: - name: CERN family_name: Penante given_name: Brenda + id: 0000-0003-1997-3657 identifiers: - - identifier: https://orcid.org/0000-0003-1997-3657 + - identifier: 0000-0003-1997-3657 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Razin given_name: Nitzan + id: 0000-0001-7571-5658 identifiers: - - identifier: https://orcid.org/0000-0001-7571-5658 + - identifier: 0000-0001-7571-5658 scheme: orcid - affiliations: - name: TU Wien family_name: Ortiz given_name: Magdalena + id: 0000-0002-2344-9658 identifiers: - - identifier: https://orcid.org/0000-0002-2344-9658 + - identifier: 0000-0002-2344-9658 scheme: orcid - affiliations: - name: TU Wien family_name: Gruber given_name: Jakob + id: 0000-0002-4438-9658 identifiers: - - identifier: https://orcid.org/0000-0002-4438-9658 + - identifier: 0000-0002-4438-9658 scheme: orcid - affiliations: - name: TU Wien family_name: Tarra given_name: Lukas K. + id: 0000-0002-4685-1658 identifiers: - - identifier: https://orcid.org/0000-0002-4685-1658 + - identifier: 0000-0002-4685-1658 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hecke Morais given_name: Livia + id: 0000-0002-5738-2658 identifiers: - - identifier: https://orcid.org/0000-0002-5738-2658 + - identifier: 0000-0002-5738-2658 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Drechsel given_name: Barbara + id: 0000-0003-1454-3658 identifiers: - - identifier: https://orcid.org/0000-0003-1454-3658 + - identifier: 0000-0003-1454-3658 scheme: orcid - affiliations: - name: TU Wien family_name: Panchenko given_name: Yana + id: 0000-0003-3627-5658 identifiers: - - identifier: https://orcid.org/0000-0003-3627-5658 + - identifier: 0000-0003-3627-5658 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Otto given_name: Thomas + id: 0000-0002-6182-8659 identifiers: - - identifier: https://orcid.org/0000-0002-6182-8659 + - identifier: 0000-0002-6182-8659 scheme: orcid - affiliations: - name: University of Fribourg family_name: El Korh given_name: "Afif\xE9" + id: 0000-0002-7319-1659 identifiers: - - identifier: https://orcid.org/0000-0002-7319-1659 + - identifier: 0000-0002-7319-1659 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Fauser given_name: Sophia + id: 0000-0002-9992-2659 identifiers: - - identifier: https://orcid.org/0000-0002-9992-2659 + - identifier: 0000-0002-9992-2659 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Bhore given_name: Sujoy + id: 0000-0003-0104-1659 identifiers: - - identifier: https://orcid.org/0000-0003-0104-1659 + - identifier: 0000-0003-0104-1659 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Lainer given_name: Patrick + id: 0000-0003-2252-0659 identifiers: - - identifier: https://orcid.org/0000-0003-2252-0659 + - identifier: 0000-0003-2252-0659 scheme: orcid - affiliations: - name: University of Oslo - name: TU Wien family_name: Piermattei given_name: Livia + id: 0000-0003-2814-8659 identifiers: - - identifier: https://orcid.org/0000-0003-2814-8659 + - identifier: 0000-0003-2814-8659 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Reider given_name: Georg A + id: 0000-0003-4029-4659 identifiers: - - identifier: https://orcid.org/0000-0003-4029-4659 + - identifier: 0000-0003-4029-4659 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Ott given_name: "S\xE9bastien" + id: 0000-0001-7205-265X identifiers: - - identifier: https://orcid.org/0000-0001-7205-265X + - identifier: 0000-0001-7205-265X scheme: orcid - affiliations: - name: University of Fribourg family_name: Tannast given_name: Moritz + id: 0000-0002-2761-565X identifiers: - - identifier: https://orcid.org/0000-0002-2761-565X + - identifier: 0000-0002-2761-565X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Vidick given_name: Thomas + id: 0000-0002-6405-365X identifiers: - - identifier: https://orcid.org/0000-0002-6405-365X + - identifier: 0000-0002-6405-365X scheme: orcid - affiliations: - name: Northwestern University @@ -31135,447 +35461,510 @@ - name: Keio University School of Medicine family_name: Kojima given_name: Takashi + id: 0000-0002-7492-165X identifiers: - - identifier: https://orcid.org/0000-0002-7492-165X + - identifier: 0000-0002-7492-165X scheme: orcid - affiliations: - name: University of Fribourg family_name: Illia given_name: Laura + id: 0000-0003-4908-165X identifiers: - - identifier: https://orcid.org/0000-0003-4908-165X + - identifier: 0000-0003-4908-165X scheme: orcid - affiliations: - name: Northwestern University family_name: Guemez-Gamboa given_name: Alicia + id: 0000-0001-6890-4661 identifiers: - - identifier: https://orcid.org/0000-0001-6890-4661 + - identifier: 0000-0001-6890-4661 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Weinberger given_name: Alexandra + id: 0000-0001-8553-6661 identifiers: - - identifier: https://orcid.org/0000-0001-8553-6661 + - identifier: 0000-0001-8553-6661 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Basso given_name: Giuliano + id: 0000-0002-1878-0661 identifiers: - - identifier: https://orcid.org/0000-0002-1878-0661 + - identifier: 0000-0002-1878-0661 scheme: orcid - affiliations: - name: TU Wien family_name: Kaps given_name: Renata + id: 0000-0002-3364-9661 identifiers: - - identifier: https://orcid.org/0000-0002-3364-9661 + - identifier: 0000-0002-3364-9661 scheme: orcid - affiliations: - name: Northwestern University family_name: Ryu given_name: Hanjun + id: 0000-0002-3268-9661 identifiers: - - identifier: https://orcid.org/0000-0002-3268-9661 + - identifier: 0000-0002-3268-9661 scheme: orcid - affiliations: - name: TU Wien family_name: Pekarsky given_name: Alexander + id: 0000-0002-7330-9661 identifiers: - - identifier: https://orcid.org/0000-0002-7330-9661 + - identifier: 0000-0002-7330-9661 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hu given_name: Zhixiang + id: 0000-0001-7925-2662 identifiers: - - identifier: https://orcid.org/0000-0001-7925-2662 + - identifier: 0000-0001-7925-2662 scheme: orcid - affiliations: - name: TU Wien family_name: Huber given_name: Tobias + id: 0000-0001-9248-1662 identifiers: - - identifier: https://orcid.org/0000-0001-9248-1662 + - identifier: 0000-0001-9248-1662 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Deutschmann given_name: Benjamin + id: 0000-0002-2647-7662 identifiers: - - identifier: https://orcid.org/0000-0002-2647-7662 + - identifier: 0000-0002-2647-7662 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Lohninger given_name: Hans + id: 0000-0002-3856-6662 identifiers: - - identifier: https://orcid.org/0000-0002-3856-6662 + - identifier: 0000-0002-3856-6662 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Metzkes-Ng given_name: Josefine + id: 0000-0002-9556-0662 identifiers: - - identifier: https://orcid.org/0000-0002-9556-0662 + - identifier: 0000-0002-9556-0662 scheme: orcid - affiliations: - name: TU Wien family_name: "Mira\xE7i" given_name: Ani + id: 0000-0003-4962-9662 identifiers: - - identifier: https://orcid.org/0000-0003-4962-9662 + - identifier: 0000-0003-4962-9662 scheme: orcid - affiliations: - name: Northwestern University family_name: Joshi given_name: Nikita + id: 0000-0001-8330-0663 identifiers: - - identifier: https://orcid.org/0000-0001-8330-0663 + - identifier: 0000-0001-8330-0663 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shelby given_name: Natasha + id: 0000-0001-9097-3663 identifiers: - - identifier: https://orcid.org/0000-0001-9097-3663 + - identifier: 0000-0001-9097-3663 scheme: orcid - affiliations: - name: University of Bamberg family_name: Becker given_name: Manuel + id: 0000-0002-2924-1663 identifiers: - - identifier: https://orcid.org/0000-0002-2924-1663 + - identifier: 0000-0002-2924-1663 scheme: orcid - affiliations: - name: TU Wien family_name: Haslinger given_name: Maximilian + id: 0000-0002-5169-2663 identifiers: - - identifier: https://orcid.org/0000-0002-5169-2663 + - identifier: 0000-0002-5169-2663 scheme: orcid - affiliations: - name: Northwestern University family_name: Kweon given_name: Junghun + id: 0000-0002-7538-7663 identifiers: - - identifier: https://orcid.org/0000-0002-7538-7663 + - identifier: 0000-0002-7538-7663 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hasegawa given_name: Yasuhiro + id: 0000-0002-9017-3663 identifiers: - - identifier: https://orcid.org/0000-0002-9017-3663 + - identifier: 0000-0002-9017-3663 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Serio given_name: Luigi + id: 0000-0002-9346-2663 identifiers: - - identifier: https://orcid.org/0000-0002-9346-2663 + - identifier: 0000-0002-9346-2663 scheme: orcid - affiliations: - name: TU Wien family_name: Wimmer given_name: Michael + id: 0000-0002-9370-2663 identifiers: - - identifier: https://orcid.org/0000-0002-9370-2663 + - identifier: 0000-0002-9370-2663 scheme: orcid - affiliations: - name: Northwestern University family_name: Arispe given_name: Diego + id: 0000-0003-2834-6663 identifiers: - - identifier: https://orcid.org/0000-0003-2834-6663 + - identifier: 0000-0003-2834-6663 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yang given_name: Fan + id: 0000-0001-8866-6664 identifiers: - - identifier: https://orcid.org/0000-0001-8866-6664 + - identifier: 0000-0001-8866-6664 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Eder given_name: Michael + id: 0000-0002-1392-1664 identifiers: - - identifier: https://orcid.org/0000-0002-1392-1664 + - identifier: 0000-0002-1392-1664 scheme: orcid - affiliations: - name: Northwestern University family_name: Maglaveras given_name: Nicos + id: 0000-0002-4919-0664 identifiers: - - identifier: https://orcid.org/0000-0002-4919-0664 + - identifier: 0000-0002-4919-0664 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Ambett given_name: Ranjeeta + id: 0000-0002-8801-8664 identifiers: - - identifier: https://orcid.org/0000-0002-8801-8664 + - identifier: 0000-0002-8801-8664 scheme: orcid - affiliations: - name: Northwestern University family_name: Song given_name: Jing + id: 0000-0002-8881-9664 identifiers: - - identifier: https://orcid.org/0000-0002-8881-9664 + - identifier: 0000-0002-8881-9664 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Braun given_name: Robert + id: 0000-0003-0639-4664 identifiers: - - identifier: https://orcid.org/0000-0003-0639-4664 + - identifier: 0000-0003-0639-4664 scheme: orcid - affiliations: - name: Northwestern University family_name: Odell given_name: Nathaniel + id: 0000-0001-7155-0665 identifiers: - - identifier: https://orcid.org/0000-0001-7155-0665 + - identifier: 0000-0001-7155-0665 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Kolm given_name: Claudia + id: 0000-0002-0174-8665 identifiers: - - identifier: https://orcid.org/0000-0002-0174-8665 + - identifier: 0000-0002-0174-8665 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: MENAA given_name: Nabil + id: 0000-0002-8509-9665 identifiers: - - identifier: https://orcid.org/0000-0002-8509-9665 + - identifier: 0000-0002-8509-9665 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Schreck given_name: Tobias + id: 0000-0003-0778-8665 identifiers: - - identifier: https://orcid.org/0000-0003-0778-8665 + - identifier: 0000-0003-0778-8665 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Stach given_name: Daniel + id: 0000-0001-5522-0666 identifiers: - - identifier: https://orcid.org/0000-0001-5522-0666 + - identifier: 0000-0001-5522-0666 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Klopf given_name: J. Michael + id: 0000-0002-3431-6666 identifiers: - - identifier: https://orcid.org/0000-0002-3431-6666 + - identifier: 0000-0002-3431-6666 scheme: orcid - affiliations: - name: TU Wien - name: RWTH Aachen University family_name: Elgeti given_name: Stefanie + id: 0000-0002-4474-1666 identifiers: - - identifier: https://orcid.org/0000-0002-4474-1666 + - identifier: 0000-0002-4474-1666 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Hollaus given_name: Fabian + id: 0000-0002-5708-3666 identifiers: - - identifier: https://orcid.org/0000-0002-5708-3666 + - identifier: 0000-0002-5708-3666 scheme: orcid - affiliations: - name: CERN family_name: Bocci given_name: Andrea + id: 0000-0002-6515-5666 identifiers: - - identifier: https://orcid.org/0000-0002-6515-5666 + - identifier: 0000-0002-6515-5666 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Almbauer given_name: Raimund + id: 0000-0003-4086-4666 identifiers: - - identifier: https://orcid.org/0000-0003-4086-4666 + - identifier: 0000-0003-4086-4666 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Gorini given_name: Benedetto + id: 0000-0003-4177-9666 identifiers: - - identifier: https://orcid.org/0000-0003-4177-9666 + - identifier: 0000-0003-4177-9666 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Sticht given_name: Kendra + id: 0000-0002-1369-0667 identifiers: - - identifier: https://orcid.org/0000-0002-1369-0667 + - identifier: 0000-0002-1369-0667 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Gianoli given_name: Alberto + id: 0000-0002-2456-8667 identifiers: - - identifier: https://orcid.org/0000-0002-2456-8667 + - identifier: 0000-0002-2456-8667 scheme: orcid - affiliations: - name: Northwestern University family_name: Evans given_name: Molly + id: 0000-0002-7239-1667 identifiers: - - identifier: https://orcid.org/0000-0002-7239-1667 + - identifier: 0000-0002-7239-1667 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Oyala given_name: Paul + id: 0000-0002-8761-4667 identifiers: - - identifier: https://orcid.org/0000-0002-8761-4667 + - identifier: 0000-0002-8761-4667 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Sabel given_name: Christopher Albert + id: 0000-0003-0248-2667 identifiers: - - identifier: https://orcid.org/0000-0003-0248-2667 + - identifier: 0000-0003-0248-2667 scheme: orcid - affiliations: - name: Northwestern University family_name: Elbaz given_name: Mohammed S.M. + id: 0000-0001-5051-5668 identifiers: - - identifier: https://orcid.org/0000-0001-5051-5668 + - identifier: 0000-0001-5051-5668 scheme: orcid - affiliations: - name: California Institute of Technology - name: NASA Jet Propulsion Laboratory family_name: Janssen given_name: Reinier + id: 0000-0001-9122-9668 identifiers: - - identifier: https://orcid.org/0000-0001-9122-9668 + - identifier: 0000-0001-9122-9668 scheme: orcid - affiliations: - name: Northwestern University family_name: Roth-Carter given_name: Quinn + id: 0000-0002-3194-8668 identifiers: - - identifier: https://orcid.org/0000-0002-3194-8668 + - identifier: 0000-0002-3194-8668 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Rubino given_name: Vito + id: 0000-0002-4023-8668 identifiers: - - identifier: https://orcid.org/0000-0002-4023-8668 + - identifier: 0000-0002-4023-8668 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Bossek given_name: Jakob + id: 0000-0002-4121-4668 identifiers: - - identifier: https://orcid.org/0000-0002-4121-4668 + - identifier: 0000-0002-4121-4668 scheme: orcid - affiliations: - name: University of Bamberg family_name: Araujo Piedra given_name: Maria Daniela + id: 0000-0001-7638-0669 identifiers: - - identifier: https://orcid.org/0000-0001-7638-0669 + - identifier: 0000-0001-7638-0669 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "K\xF6rber" given_name: Lukas + id: 0000-0001-8332-9669 identifiers: - - identifier: https://orcid.org/0000-0001-8332-9669 + - identifier: 0000-0001-8332-9669 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Heibeck given_name: Magdalena + id: 0000-0002-9951-6669 identifiers: - - identifier: https://orcid.org/0000-0002-9951-6669 + - identifier: 0000-0002-9951-6669 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hwang given_name: Sonjong + id: 0000-0002-3210-466X identifiers: - - identifier: https://orcid.org/0000-0002-3210-466X + - identifier: 0000-0002-3210-466X scheme: orcid - affiliations: - name: TU Wien - name: AIT Austrian Institute of Technology family_name: Strasser given_name: Thomas + id: 0000-0002-6415-766X identifiers: - - identifier: https://orcid.org/0000-0002-6415-766X + - identifier: 0000-0002-6415-766X scheme: orcid - affiliations: - name: University of Fribourg family_name: Sun given_name: Yan + id: 0000-0002-6439-266X identifiers: - - identifier: https://orcid.org/0000-0002-6439-266X + - identifier: 0000-0002-6439-266X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhou given_name: Lan + id: 0000-0002-7052-266X identifiers: - - identifier: https://orcid.org/0000-0002-7052-266X + - identifier: 0000-0002-7052-266X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Ceccucci given_name: Augusto + id: 0000-0002-9506-866X identifiers: - - identifier: https://orcid.org/0000-0002-9506-866X + - identifier: 0000-0002-9506-866X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: TU Dresden family_name: Springer given_name: Maximilian + id: 0000-0003-0494-866X identifiers: - - identifier: https://orcid.org/0000-0003-0494-866X + - identifier: 0000-0003-0494-866X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sadeghi given_name: Maryam + id: 0000-0003-3771-566X identifiers: - - identifier: https://orcid.org/0000-0003-3771-566X + - identifier: 0000-0003-3771-566X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lopez-Moctezuma given_name: Gabriel + id: 0000-0001-6520-5670 identifiers: - - identifier: https://orcid.org/0000-0001-6520-5670 + - identifier: 0000-0001-6520-5670 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kelterer given_name: Anne-Marie + id: 0000-0001-8178-2670 identifiers: - - identifier: https://orcid.org/0000-0001-8178-2670 + - identifier: 0000-0001-8178-2670 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kloditz given_name: Roger + id: 0000-0002-2417-2670 identifiers: - - identifier: https://orcid.org/0000-0002-2417-2670 + - identifier: 0000-0002-2417-2670 scheme: orcid - affiliations: - name: Maynooth University @@ -31583,102 +35972,116 @@ - name: Evans Foundation for Molecular Medicine family_name: Evans given_name: Constantine + id: 0000-0002-7053-1670 identifiers: - - identifier: https://orcid.org/0000-0002-7053-1670 + - identifier: 0000-0002-7053-1670 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: Australian National University family_name: Wallner given_name: Anton + id: 0000-0003-2804-3670 identifiers: - - identifier: https://orcid.org/0000-0003-2804-3670 + - identifier: 0000-0003-2804-3670 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Winkler given_name: Andreas + id: 0000-0001-6221-9671 identifiers: - - identifier: https://orcid.org/0000-0001-6221-9671 + - identifier: 0000-0001-6221-9671 scheme: orcid - affiliations: - name: TU Wien family_name: Weber given_name: Walter M. + id: 0000-0001-9504-5671 identifiers: - - identifier: https://orcid.org/0000-0001-9504-5671 + - identifier: 0000-0001-9504-5671 scheme: orcid - affiliations: - name: Northwestern University family_name: Escobar given_name: "Jes\xFAs" + id: 0000-0002-2581-4671 identifiers: - - identifier: https://orcid.org/0000-0002-2581-4671 + - identifier: 0000-0002-2581-4671 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Bell given_name: Tim + id: 0000-0002-2600-8671 identifiers: - - identifier: https://orcid.org/0000-0002-2600-8671 + - identifier: 0000-0002-2600-8671 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Paticchio given_name: Vincenzo + id: 0000-0002-2916-1671 identifiers: - - identifier: https://orcid.org/0000-0002-2916-1671 + - identifier: 0000-0002-2916-1671 scheme: orcid - affiliations: - name: Northwestern University family_name: Leshchev given_name: Denis + id: 0000-0002-8049-3671 identifiers: - - identifier: https://orcid.org/0000-0002-8049-3671 + - identifier: 0000-0002-8049-3671 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Dresden" - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schramm given_name: Ulrich + id: 0000-0003-0390-7671 identifiers: - - identifier: https://orcid.org/0000-0003-0390-7671 + - identifier: 0000-0003-0390-7671 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Kaffenberger given_name: Thomas + id: 0000-0003-0440-8671 identifiers: - - identifier: https://orcid.org/0000-0003-0440-8671 + - identifier: 0000-0003-0440-8671 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: D'Andrea given_name: Marco + id: 0000-0003-3844-8671 identifiers: - - identifier: https://orcid.org/0000-0003-3844-8671 + - identifier: 0000-0003-3844-8671 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wu given_name: Qin + id: 0000-0001-6350-6672 identifiers: - - identifier: https://orcid.org/0000-0001-6350-6672 + - identifier: 0000-0001-6350-6672 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: Washington State University family_name: Lee given_name: Yunha + id: 0000-0001-7478-2672 identifiers: - - identifier: https://orcid.org/0000-0001-7478-2672 + - identifier: 0000-0001-7478-2672 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Gekeler given_name: Cordula + id: 0000-0001-9041-6672 identifiers: - - identifier: https://orcid.org/0000-0001-9041-6672 + - identifier: 0000-0001-9041-6672 scheme: orcid - affiliations: - name: TU Wien @@ -31687,181 +36090,206 @@ - name: "Technische Universit\xE4t Wien" family_name: Markovic given_name: Marica + id: 0000-0001-8984-5672 identifiers: - - identifier: https://orcid.org/0000-0001-8984-5672 + - identifier: 0000-0001-8984-5672 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Mazziotta given_name: Mario Nicola + id: 0000-0001-9325-4672 identifiers: - - identifier: https://orcid.org/0000-0001-9325-4672 + - identifier: 0000-0001-9325-4672 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Narizny given_name: Laurel + id: 0000-0001-9976-0672 identifiers: - - identifier: https://orcid.org/0000-0001-9976-0672 + - identifier: 0000-0001-9976-0672 scheme: orcid - affiliations: - name: CERN family_name: Boattini given_name: Fulvio + id: 0000-0002-0125-0672 identifiers: - - identifier: https://orcid.org/0000-0002-0125-0672 + - identifier: 0000-0002-0125-0672 scheme: orcid - affiliations: - name: California Institute of Technology - name: NASA Jet Propulsion Laboratory family_name: Ledezma given_name: Luis + id: 0000-0002-0365-1672 identifiers: - - identifier: https://orcid.org/0000-0002-0365-1672 + - identifier: 0000-0002-0365-1672 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Roncolato given_name: Carlo + id: 0000-0002-4261-8672 identifiers: - - identifier: https://orcid.org/0000-0002-4261-8672 + - identifier: 0000-0002-4261-8672 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Hopf given_name: Konstantin + id: 0000-0002-5452-0672 identifiers: - - identifier: https://orcid.org/0000-0002-5452-0672 + - identifier: 0000-0002-5452-0672 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kagias given_name: Matias + id: 0000-0003-0435-6672 identifiers: - - identifier: https://orcid.org/0000-0003-0435-6672 + - identifier: 0000-0003-0435-6672 scheme: orcid - affiliations: - name: University of Fribourg family_name: "Donz\xE9" given_name: Laurent + id: 0000-0003-3522-4672 identifiers: - - identifier: https://orcid.org/0000-0003-3522-4672 + - identifier: 0000-0003-3522-4672 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhernenkov given_name: Mikhail + id: 0000-0003-3604-0672 identifiers: - - identifier: https://orcid.org/0000-0003-3604-0672 + - identifier: 0000-0003-3604-0672 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Stiffler given_name: Nicholas + id: 0000-0001-7685-3673 identifiers: - - identifier: https://orcid.org/0000-0001-7685-3673 + - identifier: 0000-0001-7685-3673 scheme: orcid - affiliations: - name: Northwestern University family_name: Tian given_name: Runfeng + id: 0000-0002-4252-3673 identifiers: - - identifier: https://orcid.org/0000-0002-4252-3673 + - identifier: 0000-0002-4252-3673 scheme: orcid - affiliations: - name: Northwestern University family_name: Lee given_name: Wing-Kit + id: 0000-0002-5319-3673 identifiers: - - identifier: https://orcid.org/0000-0002-5319-3673 + - identifier: 0000-0002-5319-3673 scheme: orcid - affiliations: - name: Northwestern University - name: Argonne National Laboratory family_name: Darancet given_name: Pierre + id: 0000-0002-5846-1673 identifiers: - - identifier: https://orcid.org/0000-0002-5846-1673 + - identifier: 0000-0002-5846-1673 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Daniliuc given_name: Constantin G. + id: 0000-0002-6709-3673 identifiers: - - identifier: https://orcid.org/0000-0002-6709-3673 + - identifier: 0000-0002-6709-3673 scheme: orcid - affiliations: - name: TU Wien - name: Canadian International College family_name: Elaraby given_name: Nahla + id: 0000-0002-6867-8673 identifiers: - - identifier: https://orcid.org/0000-0002-6867-8673 + - identifier: 0000-0002-6867-8673 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Beccarini given_name: Andrea + id: 0000-0002-8801-1673 identifiers: - - identifier: https://orcid.org/0000-0002-8801-1673 + - identifier: 0000-0002-8801-1673 scheme: orcid - affiliations: - name: Northwestern University family_name: Yin given_name: Yue + id: 0000-0003-1527-8673 identifiers: - - identifier: https://orcid.org/0000-0003-1527-8673 + - identifier: 0000-0003-1527-8673 scheme: orcid - affiliations: - name: Northwestern University family_name: Nguyen given_name: Joseph + id: 0000-0003-2378-8673 identifiers: - - identifier: https://orcid.org/0000-0003-2378-8673 + - identifier: 0000-0003-2378-8673 scheme: orcid - affiliations: - name: TU Wien family_name: Casellato given_name: Zeno + id: 0000-0001-9168-6674 identifiers: - - identifier: https://orcid.org/0000-0001-9168-6674 + - identifier: 0000-0001-9168-6674 scheme: orcid - affiliations: - name: California Institute of Technology family_name: "Schr\xF6der" given_name: Peter + id: 0000-0002-0323-7674 identifiers: - - identifier: https://orcid.org/0000-0002-0323-7674 + - identifier: 0000-0002-0323-7674 scheme: orcid - affiliations: - name: University of Applied Sciences and Arts Western Switzerland - name: University of Fribourg family_name: robadey given_name: jacques + id: 0000-0002-1756-7674 identifiers: - - identifier: https://orcid.org/0000-0002-1756-7674 + - identifier: 0000-0002-1756-7674 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Dabrowska given_name: Alicja + id: 0000-0002-3074-5674 identifiers: - - identifier: https://orcid.org/0000-0002-3074-5674 + - identifier: 0000-0002-3074-5674 scheme: orcid - affiliations: - name: Northwestern University family_name: Lee given_name: Sabrina + id: 0000-0002-9238-0674 identifiers: - - identifier: https://orcid.org/0000-0002-9238-0674 + - identifier: 0000-0002-9238-0674 scheme: orcid - affiliations: - name: Northwestern University family_name: Lightman given_name: Harriet + id: 0000-0002-9904-8674 identifiers: - - identifier: https://orcid.org/0000-0002-9904-8674 + - identifier: 0000-0002-9904-8674 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" @@ -31869,727 +36297,829 @@ - name: Complexity Science Hub Vienna family_name: Metzler given_name: Hannah + id: 0000-0001-9254-3675 identifiers: - - identifier: https://orcid.org/0000-0001-9254-3675 + - identifier: 0000-0001-9254-3675 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Burnett given_name: Donald + id: 0000-0001-9521-8675 identifiers: - - identifier: https://orcid.org/0000-0001-9521-8675 + - identifier: 0000-0001-9521-8675 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Kusstatscher given_name: Peter + id: 0000-0002-1168-7675 identifiers: - - identifier: https://orcid.org/0000-0002-1168-7675 + - identifier: 0000-0002-1168-7675 scheme: orcid - affiliations: - name: TU Wien family_name: Sevcsik given_name: Eva + id: 0000-0002-2155-1675 identifiers: - - identifier: https://orcid.org/0000-0002-2155-1675 + - identifier: 0000-0002-2155-1675 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Lee given_name: Wah-Keat + id: 0000-0002-2400-7675 identifiers: - - identifier: https://orcid.org/0000-0002-2400-7675 + - identifier: 0000-0002-2400-7675 scheme: orcid - affiliations: - name: TU Wien family_name: Schumer given_name: Alexander + id: 0000-0002-2541-3675 identifiers: - - identifier: https://orcid.org/0000-0002-2541-3675 + - identifier: 0000-0002-2541-3675 scheme: orcid - affiliations: - name: TU Wien family_name: TEMPESTA given_name: MAURO + id: 0000-0002-5062-7675 identifiers: - - identifier: https://orcid.org/0000-0002-5062-7675 + - identifier: 0000-0002-5062-7675 scheme: orcid - affiliations: - name: Northwestern University family_name: Hamm-Oscar given_name: Kelly + id: 0000-0003-1942-8675 identifiers: - - identifier: https://orcid.org/0000-0003-1942-8675 + - identifier: 0000-0003-1942-8675 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Woolley given_name: Henry + id: 0000-0003-2356-6675 identifiers: - - identifier: https://orcid.org/0000-0003-2356-6675 + - identifier: 0000-0003-2356-6675 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: de Lussanet given_name: Marc + id: 0000-0003-3754-6675 identifiers: - - identifier: https://orcid.org/0000-0003-3754-6675 + - identifier: 0000-0003-3754-6675 scheme: orcid - affiliations: - name: TU Wien family_name: Zandrini given_name: Tommaso + id: 0000-0003-3851-4675 identifiers: - - identifier: https://orcid.org/0000-0003-3851-4675 + - identifier: 0000-0003-3851-4675 scheme: orcid - affiliations: - name: University of Bamberg family_name: "H\xE4berlein" given_name: Mark + id: 0000-0001-5025-9676 identifiers: - - identifier: https://orcid.org/0000-0001-5025-9676 + - identifier: 0000-0001-5025-9676 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Ullrich given_name: Martin + id: 0000-0001-6104-6676 identifiers: - - identifier: https://orcid.org/0000-0001-6104-6676 + - identifier: 0000-0001-6104-6676 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Cenci given_name: Patrizia + id: 0000-0001-6149-2676 identifiers: - - identifier: https://orcid.org/0000-0001-6149-2676 + - identifier: 0000-0001-6149-2676 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Di Meo given_name: Danila + id: 0000-0001-6545-0676 identifiers: - - identifier: https://orcid.org/0000-0001-6545-0676 + - identifier: 0000-0001-6545-0676 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Cramer given_name: Benedikt + id: 0000-0001-7632-8676 identifiers: - - identifier: https://orcid.org/0000-0001-7632-8676 + - identifier: 0000-0001-7632-8676 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Mashinistov given_name: Ruslan + id: 0000-0001-7925-4676 identifiers: - - identifier: https://orcid.org/0000-0001-7925-4676 + - identifier: 0000-0001-7925-4676 scheme: orcid - affiliations: - name: Northwestern University - name: University of Chicago family_name: Alliey-Rodriguez given_name: Ney + id: 0000-0001-8594-5676 identifiers: - - identifier: https://orcid.org/0000-0001-8594-5676 + - identifier: 0000-0001-8594-5676 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Carraro given_name: Francesco + id: 0000-0001-8485-4676 identifiers: - - identifier: https://orcid.org/0000-0001-8485-4676 + - identifier: 0000-0001-8485-4676 scheme: orcid - affiliations: - name: University of Fribourg family_name: Albrecht given_name: Urs + id: 0000-0002-0663-8676 identifiers: - - identifier: https://orcid.org/0000-0002-0663-8676 + - identifier: 0000-0002-0663-8676 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" - name: "University of Wisconsin\u2013Madison" family_name: Gupta given_name: Satyapriya + id: 0000-0002-3956-0676 identifiers: - - identifier: https://orcid.org/0000-0002-3956-0676 + - identifier: 0000-0002-3956-0676 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Staake given_name: Thorsten + id: 0000-0003-1399-4676 identifiers: - - identifier: https://orcid.org/0000-0003-1399-4676 + - identifier: 0000-0003-1399-4676 scheme: orcid - affiliations: - name: Universidad de Granada - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "L\xF3pez Fern\xE1ndez" given_name: Margarita + id: 0000-0003-3588-6676 identifiers: - - identifier: https://orcid.org/0000-0003-3588-6676 + - identifier: 0000-0003-3588-6676 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Arrigoni given_name: Marco + id: 0000-0001-5436-8677 identifiers: - - identifier: https://orcid.org/0000-0001-5436-8677 + - identifier: 0000-0001-5436-8677 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Erb given_name: Martin + id: 0000-0001-6469-7677 identifiers: - - identifier: https://orcid.org/0000-0001-6469-7677 + - identifier: 0000-0001-6469-7677 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Acuna given_name: Guillermo + id: 0000-0001-8066-2677 identifiers: - - identifier: https://orcid.org/0000-0001-8066-2677 + - identifier: 0000-0001-8066-2677 scheme: orcid - affiliations: - name: TU Wien family_name: Ferrara given_name: Alessandro + id: 0000-0002-1748-8677 identifiers: - - identifier: https://orcid.org/0000-0002-1748-8677 + - identifier: 0000-0002-1748-8677 scheme: orcid - affiliations: - name: TU Wien family_name: Schlaipfer given_name: Matthias + id: 0000-0002-3664-6677 identifiers: - - identifier: https://orcid.org/0000-0002-3664-6677 + - identifier: 0000-0002-3664-6677 scheme: orcid - affiliations: - name: Northwestern University family_name: Gifford given_name: Daniel + id: 0000-0002-4855-9677 identifiers: - - identifier: https://orcid.org/0000-0002-4855-9677 + - identifier: 0000-0002-4855-9677 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tong given_name: Xiao + id: 0000-0002-5567-9677 identifiers: - - identifier: https://orcid.org/0000-0002-5567-9677 + - identifier: 0000-0002-5567-9677 scheme: orcid - affiliations: - name: TU Wien family_name: Rupprechter given_name: "G\xFCnther" + id: 0000-0002-8040-1677 identifiers: - - identifier: https://orcid.org/0000-0002-8040-1677 + - identifier: 0000-0002-8040-1677 scheme: orcid - affiliations: - name: TU Wien family_name: Fleischhacker given_name: Andreas + id: 0000-0002-9288-3677 identifiers: - - identifier: https://orcid.org/0000-0002-9288-3677 + - identifier: 0000-0002-9288-3677 scheme: orcid - affiliations: - name: Northwestern University family_name: Dehzangi given_name: Arash + id: 0000-0001-5043-2678 identifiers: - - identifier: https://orcid.org/0000-0001-5043-2678 + - identifier: 0000-0001-5043-2678 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Deppe given_name: Michael + id: 0000-0002-8372-9678 identifiers: - - identifier: https://orcid.org/0000-0002-8372-9678 + - identifier: 0000-0002-8372-9678 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Asch\xE9" given_name: Eric + id: 0000-0003-2112-3678 identifiers: - - identifier: https://orcid.org/0000-0003-2112-3678 + - identifier: 0000-0003-2112-3678 scheme: orcid - affiliations: - name: California Institute of Technology family_name: philosof given_name: Alon + id: 0000-0003-2684-8678 identifiers: - - identifier: https://orcid.org/0000-0003-2684-8678 + - identifier: 0000-0003-2684-8678 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pelliccioni given_name: Mario + id: 0000-0003-4728-6678 identifiers: - - identifier: https://orcid.org/0000-0003-4728-6678 + - identifier: 0000-0003-4728-6678 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Niehues given_name: Iris + id: 0000-0001-7438-2679 identifiers: - - identifier: https://orcid.org/0000-0001-7438-2679 + - identifier: 0000-0001-7438-2679 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Michalke given_name: Sophie + id: 0000-0002-6176-9679 identifiers: - - identifier: https://orcid.org/0000-0002-6176-9679 + - identifier: 0000-0002-6176-9679 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Heinz given_name: Amadeus Tilman + id: 0000-0003-3472-9679 identifiers: - - identifier: https://orcid.org/0000-0003-3472-9679 + - identifier: 0000-0003-3472-9679 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Becker given_name: Martin + id: 0000-0003-4054-7679 identifiers: - - identifier: https://orcid.org/0000-0003-4054-7679 + - identifier: 0000-0003-4054-7679 scheme: orcid - affiliations: - name: TU Wien family_name: Brenner given_name: Bernhard + id: 0000-0001-9549-467X identifiers: - - identifier: https://orcid.org/0000-0001-9549-467X + - identifier: 0000-0001-9549-467X scheme: orcid - affiliations: - name: Graz University of Technology family_name: shahriari given_name: shervin + id: 0000-0002-1058-667X identifiers: - - identifier: https://orcid.org/0000-0002-1058-667X + - identifier: 0000-0002-1058-667X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Di Castro given_name: Mario + id: 0000-0002-2513-967X identifiers: - - identifier: https://orcid.org/0000-0002-2513-967X + - identifier: 0000-0002-2513-967X scheme: orcid - affiliations: - name: University of Bamberg family_name: "Sch\xFCtz" given_name: Astrid + id: 0000-0002-6358-167X identifiers: - - identifier: https://orcid.org/0000-0002-6358-167X + - identifier: 0000-0002-6358-167X scheme: orcid - affiliations: - name: TU Wien family_name: Dworschak given_name: Dominik + id: 0000-0002-7585-767X identifiers: - - identifier: https://orcid.org/0000-0002-7585-767X + - identifier: 0000-0002-7585-767X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Rana given_name: Rakesh + id: 0000-0002-9691-467X identifiers: - - identifier: https://orcid.org/0000-0002-9691-467X + - identifier: 0000-0002-9691-467X scheme: orcid - affiliations: - name: Wuhan University of Technology - name: Northwestern University family_name: Li given_name: Zhi + id: 0000-0003-0451-567X identifiers: - - identifier: https://orcid.org/0000-0003-0451-567X + - identifier: 0000-0003-0451-567X scheme: orcid - affiliations: - name: TU Wien family_name: Ceneda given_name: Davide + id: 0000-0003-1198-567X identifiers: - - identifier: https://orcid.org/0000-0003-1198-567X + - identifier: 0000-0003-1198-567X scheme: orcid - affiliations: - name: TU Wien family_name: Bleicher given_name: Friedrich + id: 0000-0003-3429-867X identifiers: - - identifier: https://orcid.org/0000-0003-3429-867X + - identifier: 0000-0003-3429-867X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fu given_name: Xuewen + id: 0000-0001-6116-4680 identifiers: - - identifier: https://orcid.org/0000-0001-6116-4680 + - identifier: 0000-0001-6116-4680 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Garcia Perez given_name: Juan Jose + id: 0000-0001-8490-5680 identifiers: - - identifier: https://orcid.org/0000-0001-8490-5680 + - identifier: 0000-0001-8490-5680 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fan given_name: Siteng + id: 0000-0002-3041-4680 identifiers: - - identifier: https://orcid.org/0000-0002-3041-4680 + - identifier: 0000-0002-3041-4680 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Michniuk given_name: Szymon + id: 0000-0003-2889-2680 identifiers: - - identifier: https://orcid.org/0000-0003-2889-2680 + - identifier: 0000-0003-2889-2680 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Applied Sciences and Arts Western Switzerland family_name: Jeanneret Medina given_name: Maximiliano + id: 0000-0003-4203-7680 identifiers: - - identifier: https://orcid.org/0000-0003-4203-7680 + - identifier: 0000-0003-4203-7680 scheme: orcid - affiliations: - name: TU Wien family_name: "G\xF3mez S\xE1nchez" given_name: "Alicia F\xE1tima" + id: 0000-0003-4898-1680 identifiers: - - identifier: https://orcid.org/0000-0003-4898-1680 + - identifier: 0000-0003-4898-1680 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: Staudacher given_name: Edwin Josef + id: 0000-0001-8147-6681 identifiers: - - identifier: https://orcid.org/0000-0001-8147-6681 + - identifier: 0000-0001-8147-6681 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Landgraf given_name: Matthias + id: 0000-0001-9265-0681 identifiers: - - identifier: https://orcid.org/0000-0001-9265-0681 + - identifier: 0000-0001-9265-0681 scheme: orcid - affiliations: - name: TU Wien family_name: Schmiedmayer given_name: Heinz-Bodo + id: 0000-0002-4918-6681 identifiers: - - identifier: https://orcid.org/0000-0002-4918-6681 + - identifier: 0000-0002-4918-6681 scheme: orcid - affiliations: - name: Goldsmiths University of London - name: TU Wien family_name: "M\xF6rtenb\xF6ck" given_name: Peter + id: 0000-0002-5269-2681 identifiers: - - identifier: https://orcid.org/0000-0002-5269-2681 + - identifier: 0000-0002-5269-2681 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Baunach given_name: Marcel + id: 0000-0002-3716-2682 identifiers: - - identifier: https://orcid.org/0000-0002-3716-2682 + - identifier: 0000-0002-3716-2682 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Flemming given_name: Katrin + id: 0000-0002-3954-7682 identifiers: - - identifier: https://orcid.org/0000-0002-3954-7682 + - identifier: 0000-0002-3954-7682 scheme: orcid - affiliations: - name: Northwestern University family_name: Snyder given_name: Jeff + id: 0000-0003-1414-8682 identifiers: - - identifier: https://orcid.org/0000-0003-1414-8682 + - identifier: 0000-0003-1414-8682 scheme: orcid - affiliations: - name: CERN family_name: Mazeliauskas given_name: Aleksas + id: 0000-0003-2893-7682 identifiers: - - identifier: https://orcid.org/0000-0003-2893-7682 + - identifier: 0000-0003-2893-7682 scheme: orcid - affiliations: - name: Northwestern University family_name: Nguyen given_name: Hoang + id: 0000-0001-5389-4683 identifiers: - - identifier: https://orcid.org/0000-0001-5389-4683 + - identifier: 0000-0001-5389-4683 scheme: orcid - affiliations: - name: CERN family_name: Lechner given_name: Simon + id: 0000-0002-1695-5683 identifiers: - - identifier: https://orcid.org/0000-0002-1695-5683 + - identifier: 0000-0002-1695-5683 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Blanckaert given_name: Koen + id: 0000-0002-6630-3683 identifiers: - - identifier: https://orcid.org/0000-0002-6630-3683 + - identifier: 0000-0002-6630-3683 scheme: orcid - affiliations: - name: University of Fribourg family_name: Azimi given_name: Hamid + id: 0000-0002-7402-0683 identifiers: - - identifier: https://orcid.org/0000-0002-7402-0683 + - identifier: 0000-0002-7402-0683 scheme: orcid - affiliations: - name: CERN family_name: Borrego given_name: "Jo\xE3o" + id: 0000-0002-8476-3683 identifiers: - - identifier: https://orcid.org/0000-0002-8476-3683 + - identifier: 0000-0002-8476-3683 scheme: orcid - affiliations: - name: University of Fribourg family_name: Foubert given_name: Anneleen + id: 0000-0002-9011-9683 identifiers: - - identifier: https://orcid.org/0000-0002-9011-9683 + - identifier: 0000-0002-9011-9683 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Biswas given_name: Jyoti + id: 0000-0003-0156-3684 identifiers: - - identifier: https://orcid.org/0000-0003-0156-3684 + - identifier: 0000-0003-0156-3684 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hopkins given_name: Philip + id: 0000-0003-3729-1684 identifiers: - - identifier: https://orcid.org/0000-0003-3729-1684 + - identifier: 0000-0003-3729-1684 scheme: orcid - affiliations: - name: Northwestern University family_name: Ataman given_name: Lauren + id: 0000-0003-4979-4684 identifiers: - - identifier: https://orcid.org/0000-0003-4979-4684 + - identifier: 0000-0003-4979-4684 scheme: orcid - affiliations: - name: University of Fribourg family_name: "J\xF6dicke" given_name: Ansgar + id: 0000-0002-0009-6685 identifiers: - - identifier: https://orcid.org/0000-0002-0009-6685 + - identifier: 0000-0002-0009-6685 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Chegini given_name: Mohammad + id: 0000-0002-3516-8685 identifiers: - - identifier: https://orcid.org/0000-0002-3516-8685 + - identifier: 0000-0002-3516-8685 scheme: orcid - affiliations: - name: TU Wien family_name: Reischer given_name: Georg + id: 0000-0002-3962-8685 identifiers: - - identifier: https://orcid.org/0000-0002-3962-8685 + - identifier: 0000-0002-3962-8685 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Klinser given_name: Gregor + id: 0000-0002-4527-8685 identifiers: - - identifier: https://orcid.org/0000-0002-4527-8685 + - identifier: 0000-0002-4527-8685 scheme: orcid - affiliations: - name: Northwestern University family_name: Manski given_name: Charles + id: 0000-0001-7260-7686 identifiers: - - identifier: https://orcid.org/0000-0001-7260-7686 + - identifier: 0000-0001-7260-7686 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: Sun Yat-sen University family_name: Lin given_name: Zhiyong + id: 0000-0002-0793-7686 identifiers: - - identifier: https://orcid.org/0000-0002-0793-7686 + - identifier: 0000-0002-0793-7686 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Gurevich given_name: Svetlana V. + id: 0000-0002-5101-4686 identifiers: - - identifier: https://orcid.org/0000-0002-5101-4686 + - identifier: 0000-0002-5101-4686 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Hauser given_name: Julia Ines Mareike + id: 0000-0002-6441-3686 identifiers: - - identifier: https://orcid.org/0000-0002-6441-3686 + - identifier: 0000-0002-6441-3686 scheme: orcid - affiliations: - name: CERN family_name: Moskovic given_name: Micha + id: 0000-0002-7638-5686 identifiers: - - identifier: https://orcid.org/0000-0002-7638-5686 + - identifier: 0000-0002-7638-5686 scheme: orcid - affiliations: - name: Northwestern University family_name: Chang given_name: Alison + id: 0000-0001-7309-9687 identifiers: - - identifier: https://orcid.org/0000-0001-7309-9687 + - identifier: 0000-0001-7309-9687 scheme: orcid - affiliations: - name: Northwestern University family_name: Friedman given_name: Paul + id: 0000-0001-8523-3687 identifiers: - - identifier: https://orcid.org/0000-0001-8523-3687 + - identifier: 0000-0001-8523-3687 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Swift given_name: Margaret + id: 0000-0001-9610-0687 identifiers: - - identifier: https://orcid.org/0000-0001-9610-0687 + - identifier: 0000-0001-9610-0687 scheme: orcid - affiliations: - name: Hahn-Schickard - name: "Technische Universit\xE4t Wien" family_name: Bittner given_name: Achim + id: 0000-0002-3060-4687 identifiers: - - identifier: https://orcid.org/0000-0002-3060-4687 + - identifier: 0000-0002-3060-4687 scheme: orcid - affiliations: - name: University of Fribourg family_name: Gebru given_name: Ermias Filfilu + id: 0000-0002-7816-5687 identifiers: - - identifier: https://orcid.org/0000-0002-7816-5687 + - identifier: 0000-0002-7816-5687 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Hofko given_name: Bernhard + id: 0000-0002-8329-8687 identifiers: - - identifier: https://orcid.org/0000-0002-8329-8687 + - identifier: 0000-0002-8329-8687 scheme: orcid - affiliations: - name: Northwestern University - name: Argonne National Laboratory family_name: Chen given_name: Lin + id: 0000-0002-8450-6687 identifiers: - - identifier: https://orcid.org/0000-0002-8450-6687 + - identifier: 0000-0002-8450-6687 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Nonnenmacher given_name: Kai + id: 0000-0003-3013-8687 identifiers: - - identifier: https://orcid.org/0000-0003-3013-8687 + - identifier: 0000-0003-3013-8687 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Bracht given_name: Hartmut + id: 0000-0003-3700-6687 identifiers: - - identifier: https://orcid.org/0000-0003-3700-6687 + - identifier: 0000-0003-3700-6687 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bobrovskiy given_name: Ilya + id: 0000-0003-4751-1687 identifiers: - - identifier: https://orcid.org/0000-0003-4751-1687 + - identifier: 0000-0003-4751-1687 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Zoechmann given_name: Erich + id: 0000-0001-6368-7688 identifiers: - - identifier: https://orcid.org/0000-0001-6368-7688 + - identifier: 0000-0001-6368-7688 scheme: orcid - affiliations: - name: University of Fribourg family_name: Epiney given_name: Astrid + id: 0000-0001-7258-3688 identifiers: - - identifier: https://orcid.org/0000-0001-7258-3688 + - identifier: 0000-0001-7258-3688 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Ulz given_name: Manfred + id: 0000-0002-9240-3688 identifiers: - - identifier: https://orcid.org/0000-0002-9240-3688 + - identifier: 0000-0002-9240-3688 scheme: orcid - affiliations: - name: Northwestern University family_name: Huang given_name: Yingsheng + id: 0000-0002-9394-0688 identifiers: - - identifier: https://orcid.org/0000-0002-9394-0688 + - identifier: 0000-0002-9394-0688 scheme: orcid - affiliations: - name: TU Wien family_name: Michahelles given_name: Florian + id: 0000-0003-1486-0688 identifiers: - - identifier: https://orcid.org/0000-0003-1486-0688 + - identifier: 0000-0003-1486-0688 scheme: orcid - affiliations: - name: Northwestern University family_name: Henkin given_name: Jack + id: 0000-0003-4226-3688 identifiers: - - identifier: https://orcid.org/0000-0003-4226-3688 + - identifier: 0000-0003-4226-3688 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Haesaert given_name: Sofie + id: 0000-0003-4749-4688 identifiers: - - identifier: https://orcid.org/0000-0003-4749-4688 + - identifier: 0000-0003-4749-4688 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: de gruttola given_name: michele + id: 0000-0003-4835-8688 identifiers: - - identifier: https://orcid.org/0000-0003-4835-8688 + - identifier: 0000-0003-4835-8688 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Davidson given_name: Kenneth + id: 0000-0001-5745-9689 identifiers: - - identifier: https://orcid.org/0000-0001-5745-9689 + - identifier: 0000-0001-5745-9689 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Liu given_name: Jun + id: 0000-0002-4931-0689 identifiers: - - identifier: https://orcid.org/0000-0002-4931-0689 + - identifier: 0000-0002-4931-0689 scheme: orcid - affiliations: - name: bisy e.U. @@ -32597,538 +37127,613 @@ - name: "Technische Universit\xE4t Graz" family_name: glieder given_name: anton + id: 0000-0002-5986-9689 identifiers: - - identifier: https://orcid.org/0000-0002-5986-9689 + - identifier: 0000-0002-5986-9689 scheme: orcid - affiliations: - name: CERN family_name: Perez given_name: Emmanuel + id: 0000-0002-7359-9689 identifiers: - - identifier: https://orcid.org/0000-0002-7359-9689 + - identifier: 0000-0002-7359-9689 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: University Munich (LMU) family_name: Dodt given_name: Hans-Ulrich + id: 0000-0002-9784-9689 identifiers: - - identifier: https://orcid.org/0000-0002-9784-9689 + - identifier: 0000-0002-9784-9689 scheme: orcid - affiliations: - name: CERN family_name: Camarda given_name: Stefano + id: 0000-0003-0479-7689 identifiers: - - identifier: https://orcid.org/0000-0003-0479-7689 + - identifier: 0000-0003-0479-7689 scheme: orcid - affiliations: - name: CERN family_name: Mitzel given_name: Dominik Stefan + id: 0000-0003-3650-2689 identifiers: - - identifier: https://orcid.org/0000-0003-3650-2689 + - identifier: 0000-0003-3650-2689 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Freise given_name: Matthias + id: 0000-0001-6503-068X identifiers: - - identifier: https://orcid.org/0000-0001-6503-068X + - identifier: 0000-0001-6503-068X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kuo given_name: Claire + id: 0000-0002-3720-968X identifiers: - - identifier: https://orcid.org/0000-0002-3720-968X + - identifier: 0000-0002-3720-968X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ranjbar given_name: Vahid + id: 0000-0002-5404-168X identifiers: - - identifier: https://orcid.org/0000-0002-5404-168X + - identifier: 0000-0002-5404-168X scheme: orcid - affiliations: - name: Institute of Cosmos Sciences - name: European Organization for Nuclear Research family_name: "Fern\xE1ndez-Tenllado Arribas" given_name: "Jos\xE9 Mar\xEDa" + id: 0000-0003-1762-068X identifiers: - - identifier: https://orcid.org/0000-0003-1762-068X + - identifier: 0000-0003-1762-068X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Jessat given_name: Jenny + id: 0000-0003-4269-068X identifiers: - - identifier: https://orcid.org/0000-0003-4269-068X + - identifier: 0000-0003-4269-068X scheme: orcid - affiliations: - name: Northwestern University family_name: Dravid given_name: Amil + id: 0000-0001-6007-0690 identifiers: - - identifier: https://orcid.org/0000-0001-6007-0690 + - identifier: 0000-0001-6007-0690 scheme: orcid - affiliations: - name: TU Wien - name: Austrian Institute of Technology family_name: Kugi given_name: Andreas + id: 0000-0001-7995-1690 identifiers: - - identifier: https://orcid.org/0000-0001-7995-1690 + - identifier: 0000-0001-7995-1690 scheme: orcid - affiliations: - name: Northwestern University family_name: Xiao given_name: Lei + id: 0000-0002-1640-9690 identifiers: - - identifier: https://orcid.org/0000-0002-1640-9690 + - identifier: 0000-0002-1640-9690 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Muratore given_name: Joseph F + id: 0000-0002-7576-7690 identifiers: - - identifier: https://orcid.org/0000-0002-7576-7690 + - identifier: 0000-0002-7576-7690 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Castillo given_name: Mari + id: 0000-0002-7620-9690 identifiers: - - identifier: https://orcid.org/0000-0002-7620-9690 + - identifier: 0000-0002-7620-9690 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Kretschmer given_name: Andreas + id: 0000-0003-1297-8690 identifiers: - - identifier: https://orcid.org/0000-0003-1297-8690 + - identifier: 0000-0003-1297-8690 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Ziesel given_name: Daniel + id: 0000-0001-9118-8691 identifiers: - - identifier: https://orcid.org/0000-0001-9118-8691 + - identifier: 0000-0001-9118-8691 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: "Universit\xE9 de Neuch\xE2tel" family_name: Oswald given_name: Steve + id: 0000-0002-5946-1691 identifiers: - - identifier: https://orcid.org/0000-0002-5946-1691 + - identifier: 0000-0002-5946-1691 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Huang given_name: Jing-Shun + id: 0000-0002-7531-4691 identifiers: - - identifier: https://orcid.org/0000-0002-7531-4691 + - identifier: 0000-0002-7531-4691 scheme: orcid - affiliations: - name: Chicago Shakespeare Theater - name: Northwestern University family_name: Blankenau given_name: Katherine + id: 0000-0002-4851-2692 identifiers: - - identifier: https://orcid.org/0000-0002-4851-2692 + - identifier: 0000-0002-4851-2692 scheme: orcid - affiliations: - name: Graz University of Technology family_name: afrasiabian given_name: ardalan + id: 0000-0002-7472-9692 identifiers: - - identifier: https://orcid.org/0000-0002-7472-9692 + - identifier: 0000-0002-7472-9692 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Reinecke given_name: Sebastian Felix + id: 0000-0003-2705-0692 identifiers: - - identifier: https://orcid.org/0000-0003-2705-0692 + - identifier: 0000-0003-2705-0692 scheme: orcid - affiliations: - name: Northwestern University family_name: Madden given_name: Patrick + id: 0000-0003-4527-5692 identifiers: - - identifier: https://orcid.org/0000-0003-4527-5692 + - identifier: 0000-0003-4527-5692 scheme: orcid - affiliations: - name: Harvard University - name: California Institute of Technology family_name: Li given_name: Jiaming + id: 0000-0001-6646-5693 identifiers: - - identifier: https://orcid.org/0000-0001-6646-5693 + - identifier: 0000-0001-6646-5693 scheme: orcid - affiliations: - name: Sorbonne University - name: Northwestern University family_name: Yang given_name: Anne + id: 0000-0001-9881-1693 identifiers: - - identifier: https://orcid.org/0000-0001-9881-1693 + - identifier: 0000-0001-9881-1693 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Fengqiang + id: 0000-0002-0271-0693 identifiers: - - identifier: https://orcid.org/0000-0002-0271-0693 + - identifier: 0000-0002-0271-0693 scheme: orcid - affiliations: - name: Northwestern University family_name: Moore given_name: Julia + id: 0000-0002-5770-3693 identifiers: - - identifier: https://orcid.org/0000-0002-5770-3693 + - identifier: 0000-0002-5770-3693 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Braunschweig given_name: Bjoern + id: 0000-0002-6539-1693 identifiers: - - identifier: https://orcid.org/0000-0002-6539-1693 + - identifier: 0000-0002-6539-1693 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Lindorfer given_name: Christian + id: 0000-0003-0005-4693 identifiers: - - identifier: https://orcid.org/0000-0003-0005-4693 + - identifier: 0000-0003-0005-4693 scheme: orcid - affiliations: - name: Northwestern University family_name: Lynch given_name: Daniel + id: 0000-0003-1877-2693 identifiers: - - identifier: https://orcid.org/0000-0003-1877-2693 + - identifier: 0000-0003-1877-2693 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Wagner given_name: Anselm + id: 0000-0003-4901-8693 identifiers: - - identifier: https://orcid.org/0000-0003-4901-8693 + - identifier: 0000-0003-4901-8693 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chreifi given_name: Georges + id: 0000-0003-4194-1694 identifiers: - - identifier: https://orcid.org/0000-0003-4194-1694 + - identifier: 0000-0003-4194-1694 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: O. given_name: Howard + id: 0000-0001-7372-6695 identifiers: - - identifier: https://orcid.org/0000-0001-7372-6695 + - identifier: 0000-0001-7372-6695 scheme: orcid - affiliations: - name: Northwestern University family_name: Hassanpour given_name: Bahareh + id: 0000-0002-8326-3695 identifiers: - - identifier: https://orcid.org/0000-0002-8326-3695 + - identifier: 0000-0002-8326-3695 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Mitscha-Baude given_name: Gregor + id: 0000-0003-2607-5695 identifiers: - - identifier: https://orcid.org/0000-0003-2607-5695 + - identifier: 0000-0003-2607-5695 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Bayertz given_name: Kurt + id: 0000-0003-3909-5695 identifiers: - - identifier: https://orcid.org/0000-0003-3909-5695 + - identifier: 0000-0003-3909-5695 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "Sch\xFCppel" given_name: Katharina Christa + id: 0000-0001-5622-5696 identifiers: - - identifier: https://orcid.org/0000-0001-5622-5696 + - identifier: 0000-0001-5622-5696 scheme: orcid - affiliations: - name: TU Wien family_name: Wagner given_name: Margareta + id: 0000-0001-9414-1696 identifiers: - - identifier: https://orcid.org/0000-0001-9414-1696 + - identifier: 0000-0001-9414-1696 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Burlacu given_name: Magdalena + id: 0000-0002-2334-4696 identifiers: - - identifier: https://orcid.org/0000-0002-2334-4696 + - identifier: 0000-0002-2334-4696 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Petrovic given_name: Stefan + id: 0000-0002-4979-8696 identifiers: - - identifier: https://orcid.org/0000-0002-4979-8696 + - identifier: 0000-0002-4979-8696 scheme: orcid - affiliations: - name: California Institute of Technology - name: National Cheng Kung University family_name: Wu given_name: Pin Chieh + id: 0000-0002-5781-9696 identifiers: - - identifier: https://orcid.org/0000-0002-5781-9696 + - identifier: 0000-0002-5781-9696 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Hoppen given_name: Dr. Thole H. + id: 0000-0002-6050-8696 identifiers: - - identifier: https://orcid.org/0000-0002-6050-8696 + - identifier: 0000-0002-6050-8696 scheme: orcid - affiliations: - name: TU Wien family_name: Pacha given_name: Alexander + id: 0000-0002-6064-7696 identifiers: - - identifier: https://orcid.org/0000-0002-6064-7696 + - identifier: 0000-0002-6064-7696 scheme: orcid - affiliations: - name: University of Fribourg family_name: Rohr given_name: Rudolf Philippe + id: 0000-0002-6440-2696 identifiers: - - identifier: https://orcid.org/0000-0002-6440-2696 + - identifier: 0000-0002-6440-2696 scheme: orcid - affiliations: - name: Northwestern University family_name: Park given_name: Jeong-Eun + id: 0000-0002-6926-2696 identifiers: - - identifier: https://orcid.org/0000-0002-6926-2696 + - identifier: 0000-0002-6926-2696 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Puchinger given_name: Markus + id: 0000-0002-9784-5696 identifiers: - - identifier: https://orcid.org/0000-0002-9784-5696 + - identifier: 0000-0002-9784-5696 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ren given_name: Bin + id: 0000-0003-1698-9696 identifiers: - - identifier: https://orcid.org/0000-0003-1698-9696 + - identifier: 0000-0003-1698-9696 scheme: orcid - affiliations: - name: Northwestern University family_name: Yilmaz given_name: Bahar + id: 0000-0001-5990-5697 identifiers: - - identifier: https://orcid.org/0000-0001-5990-5697 + - identifier: 0000-0001-5990-5697 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Teuber given_name: Anja + id: 0000-0001-7125-0697 identifiers: - - identifier: https://orcid.org/0000-0001-7125-0697 + - identifier: 0000-0001-7125-0697 scheme: orcid - affiliations: - name: University of Bamberg family_name: Ziegler given_name: Barbara + id: 0000-0001-8188-9697 identifiers: - - identifier: https://orcid.org/0000-0001-8188-9697 + - identifier: 0000-0001-8188-9697 scheme: orcid - affiliations: - name: University of Fribourg family_name: Jungo given_name: Alexandra + id: 0000-0002-0271-5697 identifiers: - - identifier: https://orcid.org/0000-0002-0271-5697 + - identifier: 0000-0002-0271-5697 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Muzakka given_name: Khoirul Faiq + id: 0000-0002-3888-1697 identifiers: - - identifier: https://orcid.org/0000-0002-3888-1697 + - identifier: 0000-0002-3888-1697 scheme: orcid - affiliations: - name: Northwestern University family_name: Yang given_name: Ying + id: 0000-0002-8757-9697 identifiers: - - identifier: https://orcid.org/0000-0002-8757-9697 + - identifier: 0000-0002-8757-9697 scheme: orcid - affiliations: - name: Northwestern University family_name: West given_name: Dennis + id: 0000-0002-9107-6697 identifiers: - - identifier: https://orcid.org/0000-0002-9107-6697 + - identifier: 0000-0002-9107-6697 scheme: orcid - affiliations: - name: University of New South Wales - name: Northwestern University family_name: Stoddart given_name: Fraser + id: 0000-0003-3161-3697 identifiers: - - identifier: https://orcid.org/0000-0003-3161-3697 + - identifier: 0000-0003-3161-3697 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Lilli given_name: Giordano + id: 0000-0002-2835-3698 identifiers: - - identifier: https://orcid.org/0000-0002-2835-3698 + - identifier: 0000-0002-2835-3698 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Schaumann given_name: Michaela + id: 0000-0002-4943-7698 identifiers: - - identifier: https://orcid.org/0000-0002-4943-7698 + - identifier: 0000-0002-4943-7698 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Ferreira given_name: Pedro + id: 0000-0002-5766-4698 identifiers: - - identifier: https://orcid.org/0000-0002-5766-4698 + - identifier: 0000-0002-5766-4698 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Gochmann given_name: Viktoria + id: 0000-0002-5778-7698 identifiers: - - identifier: https://orcid.org/0000-0002-5778-7698 + - identifier: 0000-0002-5778-7698 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Lukacevic given_name: Markus + id: 0000-0002-6441-8698 identifiers: - - identifier: https://orcid.org/0000-0002-6441-8698 + - identifier: 0000-0002-6441-8698 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Ma given_name: Tian + id: 0000-0002-8406-4698 identifiers: - - identifier: https://orcid.org/0000-0002-8406-4698 + - identifier: 0000-0002-8406-4698 scheme: orcid - affiliations: - name: Northwestern University family_name: Adams given_name: Steven + id: 0000-0001-6443-7699 identifiers: - - identifier: https://orcid.org/0000-0001-6443-7699 + - identifier: 0000-0001-6443-7699 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hurley given_name: Hannah + id: 0000-0001-6812-0699 identifiers: - - identifier: https://orcid.org/0000-0001-6812-0699 + - identifier: 0000-0001-6812-0699 scheme: orcid - affiliations: - name: TU Wien family_name: Zens given_name: Matthias + id: 0000-0002-1749-8699 identifiers: - - identifier: https://orcid.org/0000-0002-1749-8699 + - identifier: 0000-0002-1749-8699 scheme: orcid - affiliations: - name: "Eidgen\xF6ssische Technische Hochschule Z\xFCrich" - name: European Organization for Nuclear Research family_name: Karaventzas given_name: Vasilios Dimitris + id: 0000-0002-2449-5699 identifiers: - - identifier: https://orcid.org/0000-0002-2449-5699 + - identifier: 0000-0002-2449-5699 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Jianchun + id: 0000-0002-3998-8699 identifiers: - - identifier: https://orcid.org/0000-0002-3998-8699 + - identifier: 0000-0002-3998-8699 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Benoit given_name: Mathieu + id: 0000-0002-8623-1699 identifiers: - - identifier: https://orcid.org/0000-0002-8623-1699 + - identifier: 0000-0002-8623-1699 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Schmeling given_name: Sascha + id: 0000-0003-2454-1699 identifiers: - - identifier: https://orcid.org/0000-0003-2454-1699 + - identifier: 0000-0003-2454-1699 scheme: orcid - affiliations: - name: University of Fribourg family_name: "Froufe-P\xE9rez" given_name: Luis Salvador + id: 0000-0001-6356-969X identifiers: - - identifier: https://orcid.org/0000-0001-6356-969X + - identifier: 0000-0001-6356-969X scheme: orcid - affiliations: - name: Northwestern University family_name: Bang given_name: Megan + id: 0000-0001-7364-469X identifiers: - - identifier: https://orcid.org/0000-0001-7364-469X + - identifier: 0000-0001-7364-469X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Cattaneo given_name: Marco + id: 0000-0001-7707-169X identifiers: - - identifier: https://orcid.org/0000-0001-7707-169X + - identifier: 0000-0001-7707-169X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Bo + id: 0000-0002-1310-869X identifiers: - - identifier: https://orcid.org/0000-0002-1310-869X + - identifier: 0000-0002-1310-869X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Profeti given_name: Alessandro + id: 0000-0002-2299-569X identifiers: - - identifier: https://orcid.org/0000-0002-2299-569X + - identifier: 0000-0002-2299-569X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: von Erdmann given_name: Elisabeth + id: 0000-0003-0084-269X identifiers: - - identifier: https://orcid.org/0000-0003-0084-269X + - identifier: 0000-0003-0084-269X scheme: orcid - affiliations: - name: CERN family_name: Ciarma given_name: Andrea + id: 0000-0003-3401-469X identifiers: - - identifier: https://orcid.org/0000-0003-3401-469X + - identifier: 0000-0003-3401-469X scheme: orcid - affiliations: - name: University of Pittsburgh @@ -33136,164 +37741,187 @@ - name: Northwestern University family_name: Wiegand given_name: Daniel + id: 0000-0001-9676-9700 identifiers: - - identifier: https://orcid.org/0000-0001-9676-9700 + - identifier: 0000-0001-9676-9700 scheme: orcid - affiliations: - name: CERN family_name: Sandberg given_name: Hampus + id: 0000-0002-2362-4700 identifiers: - - identifier: https://orcid.org/0000-0002-2362-4700 + - identifier: 0000-0002-2362-4700 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Herbst given_name: Daniel + id: 0000-0002-3612-6700 identifiers: - - identifier: https://orcid.org/0000-0002-3612-6700 + - identifier: 0000-0002-3612-6700 scheme: orcid - affiliations: - name: University of Fribourg family_name: Marschlich given_name: Sarah + id: 0000-0003-4251-9700 identifiers: - - identifier: https://orcid.org/0000-0003-4251-9700 + - identifier: 0000-0003-4251-9700 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Campanella given_name: Mauro Augusto + id: 0000-0002-0228-8701 identifiers: - - identifier: https://orcid.org/0000-0002-0228-8701 + - identifier: 0000-0002-0228-8701 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Vigen given_name: Jens + id: 0000-0002-2050-7701 identifiers: - - identifier: https://orcid.org/0000-0002-2050-7701 + - identifier: 0000-0002-2050-7701 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Colangelo given_name: Pietro + id: 0000-0002-5921-7701 identifiers: - - identifier: https://orcid.org/0000-0002-5921-7701 + - identifier: 0000-0002-5921-7701 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Xie given_name: Meng + id: 0000-0003-0247-3701 identifiers: - - identifier: https://orcid.org/0000-0003-0247-3701 + - identifier: 0000-0003-0247-3701 scheme: orcid - affiliations: - name: "Ruprecht Karls Universit\xE4t Heidelberg" - name: California Institute of Technology family_name: Bergmann given_name: Frank + id: 0000-0001-5553-4702 identifiers: - - identifier: https://orcid.org/0000-0001-5553-4702 + - identifier: 0000-0001-5553-4702 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Fayet given_name: "Jean-Fran\xE7ois" + id: 0000-0001-6554-8702 identifiers: - - identifier: https://orcid.org/0000-0001-6554-8702 + - identifier: 0000-0001-6554-8702 scheme: orcid - affiliations: - name: Northwestern University family_name: You given_name: Fuqiang + id: 0000-0002-2337-3702 identifiers: - - identifier: https://orcid.org/0000-0002-2337-3702 + - identifier: 0000-0002-2337-3702 scheme: orcid - affiliations: - name: TU Wien family_name: Gfoehler given_name: Margit + id: 0000-0002-8977-8702 identifiers: - - identifier: https://orcid.org/0000-0002-8977-8702 + - identifier: 0000-0002-8977-8702 scheme: orcid - affiliations: - name: TU Wien family_name: Schwegel given_name: Michael + id: 0000-0002-9845-5702 identifiers: - - identifier: https://orcid.org/0000-0002-9845-5702 + - identifier: 0000-0002-9845-5702 scheme: orcid - affiliations: - name: TU Wien family_name: Sreckovic given_name: Marijana + id: 0000-0003-3990-7702 identifiers: - - identifier: https://orcid.org/0000-0003-3990-7702 + - identifier: 0000-0003-3990-7702 scheme: orcid - affiliations: - name: Northwestern University family_name: Pritchard given_name: Sarah + id: 0000-0002-0934-8703 identifiers: - - identifier: https://orcid.org/0000-0002-0934-8703 + - identifier: 0000-0002-0934-8703 scheme: orcid - affiliations: - name: Northwestern University family_name: Krizman given_name: Jennifer + id: 0000-0002-2097-7703 identifiers: - - identifier: https://orcid.org/0000-0002-2097-7703 + - identifier: 0000-0002-2097-7703 scheme: orcid - affiliations: - name: Northwestern University family_name: Arvay given_name: Erika + id: 0000-0002-3881-9703 identifiers: - - identifier: https://orcid.org/0000-0002-3881-9703 + - identifier: 0000-0002-3881-9703 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Agarwal given_name: Abhinav + id: 0000-0002-5253-0703 identifiers: - - identifier: https://orcid.org/0000-0002-5253-0703 + - identifier: 0000-0002-5253-0703 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kahn given_name: Jason + id: 0000-0002-6330-1703 identifiers: - - identifier: https://orcid.org/0000-0002-6330-1703 + - identifier: 0000-0002-6330-1703 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Gutschi given_name: Clemens + id: 0000-0002-6821-7703 identifiers: - - identifier: https://orcid.org/0000-0002-6821-7703 + - identifier: 0000-0002-6821-7703 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology (TU Wien) family_name: Miksch given_name: Silvia + id: 0000-0003-4427-5703 identifiers: - - identifier: https://orcid.org/0000-0003-4427-5703 + - identifier: 0000-0003-4427-5703 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Zimmermann given_name: Robert + id: 0000-0001-6200-2704 identifiers: - - identifier: https://orcid.org/0000-0001-6200-2704 + - identifier: 0000-0001-6200-2704 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Ligi given_name: Carlo + id: 0000-0001-7943-7704 identifiers: - - identifier: https://orcid.org/0000-0001-7943-7704 + - identifier: 0000-0001-7943-7704 scheme: orcid - affiliations: - name: Graz University of Technology @@ -33301,8 +37929,9 @@ - name: Technische Universitat Graz family_name: Winkler given_name: Margit + id: 0000-0002-0754-9704 identifiers: - - identifier: https://orcid.org/0000-0002-0754-9704 + - identifier: 0000-0002-0754-9704 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" @@ -33310,273 +37939,311 @@ - name: Independent advisor, coach, and speaker family_name: Gonin given_name: "Micha\xEBl" + id: 0000-0002-2284-5704 identifiers: - - identifier: https://orcid.org/0000-0002-2284-5704 + - identifier: 0000-0002-2284-5704 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Demirkol given_name: Neslihan + id: 0000-0002-8602-1704 identifiers: - - identifier: https://orcid.org/0000-0002-8602-1704 + - identifier: 0000-0002-8602-1704 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Menon given_name: Kaushiki + id: 0000-0003-1039-4704 identifiers: - - identifier: https://orcid.org/0000-0003-1039-4704 + - identifier: 0000-0003-1039-4704 scheme: orcid - affiliations: - name: CERN family_name: Ceesay-Seitz given_name: Katharina + id: 0000-0001-8398-2705 identifiers: - - identifier: https://orcid.org/0000-0001-8398-2705 + - identifier: 0000-0001-8398-2705 scheme: orcid - affiliations: - name: TU Wien family_name: Hochenegger given_name: Nadine + id: 0000-0001-8663-0705 identifiers: - - identifier: https://orcid.org/0000-0001-8663-0705 + - identifier: 0000-0001-8663-0705 scheme: orcid - affiliations: - name: TU Wien family_name: Kern given_name: Lisa + id: 0000-0002-2065-9705 identifiers: - - identifier: https://orcid.org/0000-0002-2065-9705 + - identifier: 0000-0002-2065-9705 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Panitkin given_name: Sergey + id: 0000-0002-2821-2705 identifiers: - - identifier: https://orcid.org/0000-0002-2821-2705 + - identifier: 0000-0002-2821-2705 scheme: orcid - affiliations: - name: DataCite - name: European Organization for Nuclear Research family_name: Chen given_name: Xiaoli + id: 0000-0003-0207-2705 identifiers: - - identifier: https://orcid.org/0000-0003-0207-2705 + - identifier: 0000-0003-0207-2705 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "G\xE4rtner" given_name: Christel + id: 0000-0003-0679-4705 identifiers: - - identifier: https://orcid.org/0000-0003-0679-4705 + - identifier: 0000-0003-0679-4705 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Guggenberger given_name: Robert + id: 0000-0003-0970-9705 identifiers: - - identifier: https://orcid.org/0000-0003-0970-9705 + - identifier: 0000-0003-0970-9705 scheme: orcid - affiliations: - name: Northwestern University family_name: Bailey given_name: Michael + id: 0000-0003-4756-1705 identifiers: - - identifier: https://orcid.org/0000-0003-4756-1705 + - identifier: 0000-0003-4756-1705 scheme: orcid - affiliations: - name: Northwestern University family_name: Viswanathan given_name: Vijay + id: 0000-0001-7327-8706 identifiers: - - identifier: https://orcid.org/0000-0001-7327-8706 + - identifier: 0000-0001-7327-8706 scheme: orcid - affiliations: - name: University of Fribourg - name: Damietta University family_name: El-barougy given_name: Dr Reham + id: 0000-0001-8387-1706 identifiers: - - identifier: https://orcid.org/0000-0001-8387-1706 + - identifier: 0000-0001-8387-1706 scheme: orcid - affiliations: - name: Northwestern University family_name: Cervantes given_name: Marbella + id: 0000-0001-8907-7706 identifiers: - - identifier: https://orcid.org/0000-0001-8907-7706 + - identifier: 0000-0001-8907-7706 scheme: orcid - affiliations: - name: "Universit\xE9 de Gen\xE8ve Global Studies Institute" - name: University of Fribourg family_name: Frei given_name: Nula + id: 0000-0002-2485-6706 identifiers: - - identifier: https://orcid.org/0000-0002-2485-6706 + - identifier: 0000-0002-2485-6706 scheme: orcid - affiliations: - name: Northwestern University family_name: McColeman given_name: Caitlyn + id: 0000-0002-3984-7706 identifiers: - - identifier: https://orcid.org/0000-0002-3984-7706 + - identifier: 0000-0002-3984-7706 scheme: orcid - affiliations: - name: Tokyo Institute of Technology - name: Brookhaven National Laboratory family_name: Okamura given_name: Masahiro + id: 0000-0002-5552-1706 identifiers: - - identifier: https://orcid.org/0000-0002-5552-1706 + - identifier: 0000-0002-5552-1706 scheme: orcid - affiliations: - name: TU Wien family_name: Maierhofer given_name: Daniel A. + id: 0000-0003-2026-6706 identifiers: - - identifier: https://orcid.org/0000-0003-2026-6706 + - identifier: 0000-0003-2026-6706 scheme: orcid - affiliations: - name: TU Wien family_name: "K\xF6rner" given_name: Andreas + id: 0000-0001-7116-1707 identifiers: - - identifier: https://orcid.org/0000-0001-7116-1707 + - identifier: 0000-0001-7116-1707 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Friedl given_name: Anton + id: 0000-0002-0450-9707 identifiers: - - identifier: https://orcid.org/0000-0002-0450-9707 + - identifier: 0000-0002-0450-9707 scheme: orcid - affiliations: - name: TU Wien family_name: Radl given_name: Johannes + id: 0000-0002-6279-2707 identifiers: - - identifier: https://orcid.org/0000-0002-6279-2707 + - identifier: 0000-0002-6279-2707 scheme: orcid - affiliations: - name: University of Fribourg family_name: Monaco given_name: Elisa + id: 0000-0003-2543-1707 identifiers: - - identifier: https://orcid.org/0000-0003-2543-1707 + - identifier: 0000-0003-2543-1707 scheme: orcid - affiliations: - name: Northwestern University family_name: Morse given_name: Geoffrey + id: 0000-0001-8279-6708 identifiers: - - identifier: https://orcid.org/0000-0001-8279-6708 + - identifier: 0000-0001-8279-6708 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Santos-Cottin given_name: David + id: 0000-0002-4014-0708 identifiers: - - identifier: https://orcid.org/0000-0002-4014-0708 + - identifier: 0000-0002-4014-0708 scheme: orcid - affiliations: - name: Center for Physical Sciences and Technology - name: TU Wien family_name: Pugzlys given_name: Audrius + id: 0000-0002-4523-2708 identifiers: - - identifier: https://orcid.org/0000-0002-4523-2708 + - identifier: 0000-0002-4523-2708 scheme: orcid - affiliations: - name: Graz University of Technology - name: Virtual Vehicle (Austria) family_name: Watzenig given_name: Daniel + id: 0000-0002-5341-9708 identifiers: - - identifier: https://orcid.org/0000-0002-5341-9708 + - identifier: 0000-0002-5341-9708 scheme: orcid - affiliations: - name: Northwestern University family_name: Sheehan given_name: Patrick + id: 0000-0002-9209-8708 identifiers: - - identifier: https://orcid.org/0000-0002-9209-8708 + - identifier: 0000-0002-9209-8708 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Chang given_name: Zilong + id: 0000-0003-4729-8708 identifiers: - - identifier: https://orcid.org/0000-0003-4729-8708 + - identifier: 0000-0003-4729-8708 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Fuchs given_name: Stefanie + id: 0000-0001-6879-5709 identifiers: - - identifier: https://orcid.org/0000-0001-6879-5709 + - identifier: 0000-0001-6879-5709 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Koruza given_name: Jurij + id: 0000-0002-0258-6709 identifiers: - - identifier: https://orcid.org/0000-0002-0258-6709 + - identifier: 0000-0002-0258-6709 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schachel given_name: Tilo + id: 0000-0003-2934-1709 identifiers: - - identifier: https://orcid.org/0000-0003-2934-1709 + - identifier: 0000-0003-2934-1709 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Paarmann given_name: "Bj\xF8rn" + id: 0000-0001-5189-070X identifiers: - - identifier: https://orcid.org/0000-0001-5189-070X + - identifier: 0000-0001-5189-070X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Flagan given_name: Richard + id: 0000-0001-5690-770X identifiers: - - identifier: https://orcid.org/0000-0001-5690-770X + - identifier: 0000-0001-5690-770X scheme: orcid - affiliations: - name: CERN family_name: Errico given_name: Filippo + id: 0000-0001-8199-370X identifiers: - - identifier: https://orcid.org/0000-0001-8199-370X + - identifier: 0000-0001-8199-370X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Liu given_name: Ping + id: 0000-0001-8363-070X identifiers: - - identifier: https://orcid.org/0000-0001-8363-070X + - identifier: 0000-0001-8363-070X scheme: orcid - affiliations: - name: CERN family_name: Elsener given_name: Konrad + id: 0000-0002-3839-870X identifiers: - - identifier: https://orcid.org/0000-0002-3839-870X + - identifier: 0000-0002-3839-870X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tsvelik given_name: Alexei + id: 0000-0002-7478-670X identifiers: - - identifier: https://orcid.org/0000-0002-7478-670X + - identifier: 0000-0002-7478-670X scheme: orcid - affiliations: - name: Northwestern University family_name: Cherian given_name: Suraj + id: 0000-0003-1148-770X identifiers: - - identifier: https://orcid.org/0000-0003-1148-770X + - identifier: 0000-0003-1148-770X scheme: orcid - affiliations: - name: UCL Institute of Archaeology @@ -33584,65 +38251,74 @@ - name: University of Fribourg family_name: Mise given_name: Maja + id: 0000-0003-3616-670X identifiers: - - identifier: https://orcid.org/0000-0003-3616-670X + - identifier: 0000-0003-3616-670X scheme: orcid - affiliations: - name: Graz University of Technology family_name: "Ba\u0161i\u0107" given_name: Fikret + id: 0000-0003-4688-270X identifiers: - - identifier: https://orcid.org/0000-0003-4688-270X + - identifier: 0000-0003-4688-270X scheme: orcid - affiliations: - name: Northwestern University family_name: Radhakrishnan given_name: Ishwar + id: 0000-0002-0195-9710 identifiers: - - identifier: https://orcid.org/0000-0002-0195-9710 + - identifier: 0000-0002-0195-9710 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Atanasov given_name: Dinko + id: 0000-0002-0491-4710 identifiers: - - identifier: https://orcid.org/0000-0002-0491-4710 + - identifier: 0000-0002-0491-4710 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Weigert given_name: Andreas + id: 0000-0002-8093-3710 identifiers: - - identifier: https://orcid.org/0000-0002-8093-3710 + - identifier: 0000-0002-8093-3710 scheme: orcid - affiliations: - name: Northwestern University - name: Tel Aviv University family_name: Levy given_name: Yael + id: 0000-0002-8452-0710 identifiers: - - identifier: https://orcid.org/0000-0002-8452-0710 + - identifier: 0000-0002-8452-0710 scheme: orcid - affiliations: - name: Northwestern University family_name: Wright given_name: Sarah + id: 0000-0002-8615-5710 identifiers: - - identifier: https://orcid.org/0000-0002-8615-5710 + - identifier: 0000-0002-8615-5710 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhang given_name: Gang + id: 0000-0003-0774-5710 identifiers: - - identifier: https://orcid.org/0000-0003-0774-5710 + - identifier: 0000-0003-0774-5710 scheme: orcid - affiliations: - name: University of Bamberg family_name: Scholl given_name: Sebastian + id: 0000-0003-3216-6710 identifiers: - - identifier: https://orcid.org/0000-0003-3216-6710 + - identifier: 0000-0003-3216-6710 scheme: orcid - affiliations: - name: TU Wien @@ -33650,22 +38326,25 @@ - name: Austrian Institute of Technology family_name: Regal given_name: Georg + id: 0000-0003-4483-7710 identifiers: - - identifier: https://orcid.org/0000-0003-4483-7710 + - identifier: 0000-0003-4483-7710 scheme: orcid - affiliations: - name: Northwestern University family_name: NOLL given_name: JAMIE + id: 0000-0002-3628-2711 identifiers: - - identifier: https://orcid.org/0000-0002-3628-2711 + - identifier: 0000-0002-3628-2711 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Becerra+Stasiewicz given_name: Natalie + id: 0000-0002-7113-3711 identifiers: - - identifier: https://orcid.org/0000-0002-7113-3711 + - identifier: 0000-0002-7113-3711 scheme: orcid - affiliations: - name: TU Wien @@ -33673,450 +38352,513 @@ - name: Austrian Cooperative Research family_name: Schludermann given_name: Elisabeth + id: 0000-0002-9041-4711 identifiers: - - identifier: https://orcid.org/0000-0002-9041-4711 + - identifier: 0000-0002-9041-4711 scheme: orcid - affiliations: - name: TU Wien - name: Technical University of Vienna family_name: Andreeva given_name: Elena + id: 0000-0003-0964-8711 identifiers: - - identifier: https://orcid.org/0000-0003-0964-8711 + - identifier: 0000-0003-0964-8711 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kappes given_name: Alexander + id: 0000-0003-1315-3711 identifiers: - - identifier: https://orcid.org/0000-0003-1315-3711 + - identifier: 0000-0003-1315-3711 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: John given_name: Warren + id: 0000-0003-2150-8711 identifiers: - - identifier: https://orcid.org/0000-0003-2150-8711 + - identifier: 0000-0003-2150-8711 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Fontana given_name: Andrea + id: 0000-0003-4718-5711 identifiers: - - identifier: https://orcid.org/0000-0003-4718-5711 + - identifier: 0000-0003-4718-5711 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Koulena given_name: Noushin + id: 0000-0002-9419-5712 identifiers: - - identifier: https://orcid.org/0000-0002-9419-5712 + - identifier: 0000-0002-9419-5712 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Elting given_name: Christian + id: 0000-0003-1409-6712 identifiers: - - identifier: https://orcid.org/0000-0003-1409-6712 + - identifier: 0000-0003-1409-6712 scheme: orcid - affiliations: - name: University of Fribourg family_name: Schoebi given_name: Dominik + id: 0000-0003-3991-2712 identifiers: - - identifier: https://orcid.org/0000-0003-3991-2712 + - identifier: 0000-0003-3991-2712 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Sanders given_name: Vanessa + id: 0000-0001-5944-8713 identifiers: - - identifier: https://orcid.org/0000-0001-5944-8713 + - identifier: 0000-0001-5944-8713 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Brunner given_name: Valerie + id: 0000-0001-5882-4713 identifiers: - - identifier: https://orcid.org/0000-0001-5882-4713 + - identifier: 0000-0001-5882-4713 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: CABI Switzerland family_name: Augustinus given_name: Benno Andreas + id: 0000-0001-7371-7713 identifiers: - - identifier: https://orcid.org/0000-0001-7371-7713 + - identifier: 0000-0001-7371-7713 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Hei\xDFenb\xFCttel" given_name: Marie-Christin + id: 0000-0002-0580-3713 identifiers: - - identifier: https://orcid.org/0000-0002-0580-3713 + - identifier: 0000-0002-0580-3713 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Frank + id: 0000-0002-2969-6713 identifiers: - - identifier: https://orcid.org/0000-0002-2969-6713 + - identifier: 0000-0002-2969-6713 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Cattani given_name: Marco + id: 0000-0002-4203-0713 identifiers: - - identifier: https://orcid.org/0000-0002-4203-0713 + - identifier: 0000-0002-4203-0713 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Yang given_name: Xuegeng + id: 0000-0002-4617-0713 identifiers: - - identifier: https://orcid.org/0000-0002-4617-0713 + - identifier: 0000-0002-4617-0713 scheme: orcid - affiliations: - name: Northwestern University family_name: Ma given_name: Madeleine + id: 0000-0002-5823-5713 identifiers: - - identifier: https://orcid.org/0000-0002-5823-5713 + - identifier: 0000-0002-5823-5713 scheme: orcid - affiliations: - name: Northwestern University family_name: Cogswell given_name: Andrew + id: 0000-0002-6951-6713 identifiers: - - identifier: https://orcid.org/0000-0002-6951-6713 + - identifier: 0000-0002-6951-6713 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Vidal given_name: Marisol + id: 0000-0002-8907-4713 identifiers: - - identifier: https://orcid.org/0000-0002-8907-4713 + - identifier: 0000-0002-8907-4713 scheme: orcid - affiliations: - name: Northwestern University family_name: VonOsinski given_name: Joseph + id: 0000-0002-9209-7713 identifiers: - - identifier: https://orcid.org/0000-0002-9209-7713 + - identifier: 0000-0002-9209-7713 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Bersani given_name: Andrea + id: 0000-0003-3276-5713 identifiers: - - identifier: https://orcid.org/0000-0003-3276-5713 + - identifier: 0000-0003-3276-5713 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hsieh-Wilson given_name: Linda + id: 0000-0001-5661-1714 identifiers: - - identifier: https://orcid.org/0000-0001-5661-1714 + - identifier: 0000-0001-5661-1714 scheme: orcid - affiliations: - name: TU Wien family_name: Frangoudis given_name: Pantelis + id: 0000-0001-6901-7714 identifiers: - - identifier: https://orcid.org/0000-0001-6901-7714 + - identifier: 0000-0001-6901-7714 scheme: orcid - affiliations: - name: Northwestern University family_name: Qiu given_name: Yunyan + id: 0000-0001-9279-4714 identifiers: - - identifier: https://orcid.org/0000-0001-9279-4714 + - identifier: 0000-0001-9279-4714 scheme: orcid - affiliations: - name: CERN family_name: Defranchis given_name: Matteo Maria + id: 0000-0001-9573-3714 identifiers: - - identifier: https://orcid.org/0000-0001-9573-3714 + - identifier: 0000-0001-9573-3714 scheme: orcid - affiliations: - name: CERN family_name: Rakai given_name: Aniko + id: 0000-0002-1263-6714 identifiers: - - identifier: https://orcid.org/0000-0002-1263-6714 + - identifier: 0000-0002-1263-6714 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Kovacs given_name: Laura + id: 0000-0002-8299-2714 identifiers: - - identifier: https://orcid.org/0000-0002-8299-2714 + - identifier: 0000-0002-8299-2714 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Stracka given_name: Simone + id: 0000-0003-0013-4714 identifiers: - - identifier: https://orcid.org/0000-0003-0013-4714 + - identifier: 0000-0003-0013-4714 scheme: orcid - affiliations: - name: Northwestern University - name: Shirley Ryan AbilityLab family_name: McFarland given_name: Daniel + id: 0000-0003-1906-2714 identifiers: - - identifier: https://orcid.org/0000-0003-1906-2714 + - identifier: 0000-0003-1906-2714 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Statovci given_name: Driton + id: 0000-0001-6449-8715 identifiers: - - identifier: https://orcid.org/0000-0001-6449-8715 + - identifier: 0000-0001-6449-8715 scheme: orcid - affiliations: - name: Northwestern University family_name: Colgate given_name: James + id: 0000-0002-2577-2715 identifiers: - - identifier: https://orcid.org/0000-0002-2577-2715 + - identifier: 0000-0002-2577-2715 scheme: orcid - affiliations: - name: CERN family_name: Kranjc Horvat given_name: Anja + id: 0000-0002-2584-4715 identifiers: - - identifier: https://orcid.org/0000-0002-2584-4715 + - identifier: 0000-0002-2584-4715 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Szedlak given_name: Rolf + id: 0000-0002-2997-6715 identifiers: - - identifier: https://orcid.org/0000-0002-2997-6715 + - identifier: 0000-0002-2997-6715 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Li Vecchi given_name: Gaetano + id: 0000-0002-3767-7715 identifiers: - - identifier: https://orcid.org/0000-0002-3767-7715 + - identifier: 0000-0002-3767-7715 scheme: orcid - affiliations: - name: Northwestern University family_name: Karim given_name: Ashty + id: 0000-0002-5789-7715 identifiers: - - identifier: https://orcid.org/0000-0002-5789-7715 + - identifier: 0000-0002-5789-7715 scheme: orcid - affiliations: - name: Arizona State University - name: California Institute of Technology family_name: Lan given_name: Shiwei + id: 0000-0002-9167-3715 identifiers: - - identifier: https://orcid.org/0000-0002-9167-3715 + - identifier: 0000-0002-9167-3715 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Malovan given_name: Grazia + id: 0000-0003-0814-8715 identifiers: - - identifier: https://orcid.org/0000-0003-0814-8715 + - identifier: 0000-0003-0814-8715 scheme: orcid - affiliations: - name: Northwestern University family_name: Ghosal given_name: Sandip + id: 0000-0001-6587-3716 identifiers: - - identifier: https://orcid.org/0000-0001-6587-3716 + - identifier: 0000-0001-6587-3716 scheme: orcid - affiliations: - name: TU Wien family_name: Budroni given_name: Paolo + id: 0000-0001-7490-5716 identifiers: - - identifier: https://orcid.org/0000-0001-7490-5716 + - identifier: 0000-0001-7490-5716 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Goddard given_name: William + id: 0000-0003-0097-5716 identifiers: - - identifier: https://orcid.org/0000-0003-0097-5716 + - identifier: 0000-0003-0097-5716 scheme: orcid - affiliations: - name: University of Fribourg family_name: Probert given_name: Anna + id: 0000-0003-4288-4716 identifiers: - - identifier: https://orcid.org/0000-0003-4288-4716 + - identifier: 0000-0003-4288-4716 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Krlovic given_name: Nikola + id: 0000-0001-5923-1717 identifiers: - - identifier: https://orcid.org/0000-0001-5923-1717 + - identifier: 0000-0001-5923-1717 scheme: orcid - affiliations: - name: Hangzhou Dianzi University - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Hu given_name: Liang + id: 0000-0001-7042-2717 identifiers: - - identifier: https://orcid.org/0000-0001-7042-2717 + - identifier: 0000-0001-7042-2717 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Kowalska given_name: Magdalena + id: 0000-0002-2170-1717 identifiers: - - identifier: https://orcid.org/0000-0002-2170-1717 + - identifier: 0000-0002-2170-1717 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Diamantopoulos given_name: Georgios + id: 0000-0002-3418-2717 identifiers: - - identifier: https://orcid.org/0000-0002-3418-2717 + - identifier: 0000-0002-3418-2717 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fuller given_name: Brian + id: 0000-0002-4647-4717 identifiers: - - identifier: https://orcid.org/0000-0002-4647-4717 + - identifier: 0000-0002-4647-4717 scheme: orcid - affiliations: - name: TU Wien family_name: Fleig given_name: Juergen + id: 0000-0002-8401-6717 identifiers: - - identifier: https://orcid.org/0000-0002-8401-6717 + - identifier: 0000-0002-8401-6717 scheme: orcid - affiliations: - name: Northwestern University family_name: Xavier Hall given_name: Casey + id: 0000-0003-1658-3717 identifiers: - - identifier: https://orcid.org/0000-0003-1658-3717 + - identifier: 0000-0003-1658-3717 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Smith given_name: Benjamin + id: 0000-0003-3189-8717 identifiers: - - identifier: https://orcid.org/0000-0003-3189-8717 + - identifier: 0000-0003-3189-8717 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Komiyama given_name: Yusuke + id: 0000-0001-6468-3718 identifiers: - - identifier: https://orcid.org/0000-0001-6468-3718 + - identifier: 0000-0001-6468-3718 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Held given_name: Matthias + id: 0000-0001-9096-1718 identifiers: - - identifier: https://orcid.org/0000-0001-9096-1718 + - identifier: 0000-0001-9096-1718 scheme: orcid - affiliations: - name: Northwestern University family_name: Diaz given_name: Chris + id: 0000-0002-5247-2718 identifiers: - - identifier: https://orcid.org/0000-0002-5247-2718 + - identifier: 0000-0002-5247-2718 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Flores Orozco given_name: Adrian + id: 0000-0003-0905-3718 identifiers: - - identifier: https://orcid.org/0000-0003-0905-3718 + - identifier: 0000-0003-0905-3718 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Bruni given_name: Alessia + id: 0000-0003-4806-0718 identifiers: - - identifier: https://orcid.org/0000-0003-4806-0718 + - identifier: 0000-0003-4806-0718 scheme: orcid - affiliations: - name: Northwestern University family_name: Britto given_name: Lina + id: 0000-0002-3881-8719 identifiers: - - identifier: https://orcid.org/0000-0002-3881-8719 + - identifier: 0000-0002-3881-8719 scheme: orcid - affiliations: - name: CERN family_name: Gheata given_name: Andrei + id: 0000-0002-5449-8719 identifiers: - - identifier: https://orcid.org/0000-0002-5449-8719 + - identifier: 0000-0002-5449-8719 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Capuano given_name: Vincenzo + id: 0000-0002-6886-5719 identifiers: - - identifier: https://orcid.org/0000-0002-6886-5719 + - identifier: 0000-0002-6886-5719 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: varghese given_name: julian + id: 0000-0002-7206-3719 identifiers: - - identifier: https://orcid.org/0000-0002-7206-3719 + - identifier: 0000-0002-7206-3719 scheme: orcid - affiliations: - name: Northwestern University family_name: de la Ria given_name: Erika + id: 0000-0002-7322-6719 identifiers: - - identifier: https://orcid.org/0000-0002-7322-6719 + - identifier: 0000-0002-7322-6719 scheme: orcid - affiliations: - name: Graz University of Technology family_name: safikhani given_name: saeed + id: 0000-0002-8359-8719 identifiers: - - identifier: https://orcid.org/0000-0002-8359-8719 + - identifier: 0000-0002-8359-8719 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hourihane given_name: Sophie + id: 0000-0002-9152-0719 identifiers: - - identifier: https://orcid.org/0000-0002-9152-0719 + - identifier: 0000-0002-9152-0719 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Shen given_name: Yao + id: 0000-0003-4697-4719 identifiers: - - identifier: https://orcid.org/0000-0003-4697-4719 + - identifier: 0000-0003-4697-4719 scheme: orcid - affiliations: - name: Northwestern University family_name: wang given_name: baowen + id: 0000-0003-4692-3719 identifiers: - - identifier: https://orcid.org/0000-0003-4692-3719 + - identifier: 0000-0003-4692-3719 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: "Day\xE9" given_name: Christian + id: 0000-0001-5530-371X identifiers: - - identifier: https://orcid.org/0000-0001-5530-371X + - identifier: 0000-0001-5530-371X scheme: orcid - affiliations: - name: Riegler Riewe Architekten GmbH @@ -34125,100 +38867,114 @@ - name: Riegler Riewe Architekten Zt GesmbH family_name: Riewe given_name: Roger + id: 0000-0001-8125-371X identifiers: - - identifier: https://orcid.org/0000-0001-8125-371X + - identifier: 0000-0001-8125-371X scheme: orcid - affiliations: - name: CERN family_name: Bernhard given_name: Johannes + id: 0000-0001-9256-971X identifiers: - - identifier: https://orcid.org/0000-0001-9256-971X + - identifier: 0000-0001-9256-971X scheme: orcid - affiliations: - name: Northwestern University family_name: Kim given_name: Bongjun + id: 0000-0002-1117-671X identifiers: - - identifier: https://orcid.org/0000-0002-1117-671X + - identifier: 0000-0002-1117-671X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Conti given_name: Enrico + id: 0000-0002-4085-871X identifiers: - - identifier: https://orcid.org/0000-0002-4085-871X + - identifier: 0000-0002-4085-871X scheme: orcid - affiliations: - name: Northwestern University family_name: Balogun given_name: Oluwaseyi + id: 0000-0002-4159-471X identifiers: - - identifier: https://orcid.org/0000-0002-4159-471X + - identifier: 0000-0002-4159-471X scheme: orcid - affiliations: - name: Northwestern University family_name: Smeigh given_name: Amanda + id: 0000-0002-8071-071X identifiers: - - identifier: https://orcid.org/0000-0002-8071-071X + - identifier: 0000-0002-8071-071X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zbozinek given_name: Tomislav + id: 0000-0003-0187-671X identifiers: - - identifier: https://orcid.org/0000-0003-0187-671X + - identifier: 0000-0003-0187-671X scheme: orcid - affiliations: - name: University of Nebraska-Lincoln - name: Northwestern University family_name: Liu given_name: Kun + id: 0000-0003-1342-071X identifiers: - - identifier: https://orcid.org/0000-0003-1342-071X + - identifier: 0000-0003-1342-071X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Kuang given_name: Chongai + id: 0000-0003-2769-771X identifiers: - - identifier: https://orcid.org/0000-0003-2769-771X + - identifier: 0000-0003-2769-771X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Sensen given_name: Maria + id: 0000-0003-4256-371X identifiers: - - identifier: https://orcid.org/0000-0003-4256-371X + - identifier: 0000-0003-4256-371X scheme: orcid - affiliations: - name: Graz University of Technology family_name: "M\xFCller-Putz" given_name: Gernot + id: 0000-0002-0087-3720 identifiers: - - identifier: https://orcid.org/0000-0002-0087-3720 + - identifier: 0000-0002-0087-3720 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shen given_name: Zhaoyi + id: 0000-0002-0444-4720 identifiers: - - identifier: https://orcid.org/0000-0002-0444-4720 + - identifier: 0000-0002-0444-4720 scheme: orcid - affiliations: - name: Northwestern University family_name: Kuyper given_name: Arend + id: 0000-0002-3544-3720 identifiers: - - identifier: https://orcid.org/0000-0002-3544-3720 + - identifier: 0000-0002-3544-3720 scheme: orcid - affiliations: - name: TU Wien family_name: Ludwig given_name: Monika + id: 0000-0002-7389-6720 identifiers: - - identifier: https://orcid.org/0000-0002-7389-6720 + - identifier: 0000-0002-7389-6720 scheme: orcid - affiliations: - name: National and Kapodistrian University of Athens @@ -34228,288 +38984,328 @@ - name: University of Ioannina family_name: Kostarakis given_name: Panos + id: 0000-0002-1549-7721 identifiers: - - identifier: https://orcid.org/0000-0002-1549-7721 + - identifier: 0000-0002-1549-7721 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Zojer given_name: Egbert + id: 0000-0002-6502-1721 identifiers: - - identifier: https://orcid.org/0000-0002-6502-1721 + - identifier: 0000-0002-6502-1721 scheme: orcid - affiliations: - name: Northwestern University family_name: Ulmer given_name: Melville + id: 0000-0002-1129-7722 identifiers: - - identifier: https://orcid.org/0000-0002-1129-7722 + - identifier: 0000-0002-1129-7722 scheme: orcid - affiliations: - name: Northwestern University family_name: Berry given_name: Randall + id: 0000-0002-1861-6722 identifiers: - - identifier: https://orcid.org/0000-0002-1861-6722 + - identifier: 0000-0002-1861-6722 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Waluyo given_name: Iradwikanari + id: 0000-0002-4046-9722 identifiers: - - identifier: https://orcid.org/0000-0002-4046-9722 + - identifier: 0000-0002-4046-9722 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhao given_name: Wei + id: 0000-0002-4441-9722 identifiers: - - identifier: https://orcid.org/0000-0002-4441-9722 + - identifier: 0000-0002-4441-9722 scheme: orcid - affiliations: - name: TU Wien family_name: Mikula given_name: Hannes + id: 0000-0002-9218-9722 identifiers: - - identifier: https://orcid.org/0000-0002-9218-9722 + - identifier: 0000-0002-9218-9722 scheme: orcid - affiliations: - name: Aalto University - name: "Technische Universit\xE4t Wien" family_name: Truong given_name: Hong-Linh + id: 0000-0003-1465-9722 identifiers: - - identifier: https://orcid.org/0000-0003-1465-9722 + - identifier: 0000-0003-1465-9722 scheme: orcid - affiliations: - name: TU Wien family_name: Fiel given_name: Stefan + id: 0000-0001-5033-6723 identifiers: - - identifier: https://orcid.org/0000-0001-5033-6723 + - identifier: 0000-0001-5033-6723 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ouellette-Dube given_name: Maude + id: 0000-0001-6280-4723 identifiers: - - identifier: https://orcid.org/0000-0001-6280-4723 + - identifier: 0000-0001-6280-4723 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Holl given_name: Max + id: 0000-0001-6451-9723 identifiers: - - identifier: https://orcid.org/0000-0001-6451-9723 + - identifier: 0000-0001-6451-9723 scheme: orcid - affiliations: - name: TU Wien family_name: "Prie\xDFnitz" given_name: Markus + id: 0000-0002-8600-6723 identifiers: - - identifier: https://orcid.org/0000-0002-8600-6723 + - identifier: 0000-0002-8600-6723 scheme: orcid - affiliations: - name: TU Wien family_name: Beeks given_name: Kjeld + id: 0000-0002-8707-6723 identifiers: - - identifier: https://orcid.org/0000-0002-8707-6723 + - identifier: 0000-0002-8707-6723 scheme: orcid - affiliations: - name: TU Wien family_name: Hafner given_name: Jonas + id: 0000-0002-9733-8723 identifiers: - - identifier: https://orcid.org/0000-0002-9733-8723 + - identifier: 0000-0002-9733-8723 scheme: orcid - affiliations: - name: CERN family_name: Zisopoulos given_name: Panos + id: 0000-0003-1626-0723 identifiers: - - identifier: https://orcid.org/0000-0003-1626-0723 + - identifier: 0000-0003-1626-0723 scheme: orcid - affiliations: - name: TU Wien family_name: Kuznets given_name: Roman + id: 0000-0001-5894-8724 identifiers: - - identifier: https://orcid.org/0000-0001-5894-8724 + - identifier: 0000-0001-5894-8724 scheme: orcid - affiliations: - name: Northwestern University family_name: Carignano given_name: Marcelo + id: 0000-0001-8345-7724 identifiers: - - identifier: https://orcid.org/0000-0001-8345-7724 + - identifier: 0000-0001-8345-7724 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Navratil given_name: Gerhard + id: 0000-0002-2978-5724 identifiers: - - identifier: https://orcid.org/0000-0002-2978-5724 + - identifier: 0000-0002-2978-5724 scheme: orcid - affiliations: - name: Northwestern University family_name: Wellons given_name: Sarah + id: 0000-0002-3977-2724 identifiers: - - identifier: https://orcid.org/0000-0002-3977-2724 + - identifier: 0000-0002-3977-2724 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Steckert given_name: Jens + id: 0000-0002-4648-9724 identifiers: - - identifier: https://orcid.org/0000-0002-4648-9724 + - identifier: 0000-0002-4648-9724 scheme: orcid - affiliations: - name: University of Bamberg family_name: "G\xF6ler" given_name: Daniel + id: 0000-0003-0377-0724 identifiers: - - identifier: https://orcid.org/0000-0003-0377-0724 + - identifier: 0000-0003-0377-0724 scheme: orcid - affiliations: - name: Northwestern University family_name: Wise given_name: Rachel + id: 0000-0001-8432-2725 identifiers: - - identifier: https://orcid.org/0000-0001-8432-2725 + - identifier: 0000-0001-8432-2725 scheme: orcid - affiliations: - name: Northwestern University family_name: PARK given_name: Beom-Kyeong + id: 0000-0002-1305-8725 identifiers: - - identifier: https://orcid.org/0000-0002-1305-8725 + - identifier: 0000-0002-1305-8725 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Grandl given_name: Maria + id: 0000-0002-4869-9725 identifiers: - - identifier: https://orcid.org/0000-0002-4869-9725 + - identifier: 0000-0002-4869-9725 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Knutson given_name: Heather + id: 0000-0002-5375-4725 identifiers: - - identifier: https://orcid.org/0000-0002-5375-4725 + - identifier: 0000-0002-5375-4725 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Matsuzawa given_name: Tetsuro + id: 0000-0002-8147-2725 identifiers: - - identifier: https://orcid.org/0000-0002-8147-2725 + - identifier: 0000-0002-8147-2725 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Ruiz-Granados given_name: Beatriz + id: 0000-0003-3229-2725 identifiers: - - identifier: https://orcid.org/0000-0003-3229-2725 + - identifier: 0000-0003-3229-2725 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Smith given_name: Roger + id: 0000-0001-7062-9726 identifiers: - - identifier: https://orcid.org/0000-0001-7062-9726 + - identifier: 0000-0001-7062-9726 scheme: orcid - affiliations: - name: CERN family_name: Boyd given_name: James + id: 0000-0001-7360-0726 identifiers: - - identifier: https://orcid.org/0000-0001-7360-0726 + - identifier: 0000-0001-7360-0726 scheme: orcid - affiliations: - name: California Institute of Technology - name: Tokyo Institute of Technology family_name: Kobayashi given_name: Atsuko + id: 0000-0001-8743-9726 identifiers: - - identifier: https://orcid.org/0000-0001-8743-9726 + - identifier: 0000-0001-8743-9726 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hu given_name: Yong + id: 0000-0002-3990-5726 identifiers: - - identifier: https://orcid.org/0000-0002-3990-5726 + - identifier: 0000-0002-3990-5726 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Rath given_name: Thomas + id: 0000-0002-4837-7726 identifiers: - - identifier: https://orcid.org/0000-0002-4837-7726 + - identifier: 0000-0002-4837-7726 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wang given_name: Dawei + id: 0000-0003-4972-5726 identifiers: - - identifier: https://orcid.org/0000-0003-4972-5726 + - identifier: 0000-0003-4972-5726 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Nalic given_name: Demin + id: 0000-0001-5339-8727 identifiers: - - identifier: https://orcid.org/0000-0001-5339-8727 + - identifier: 0000-0001-5339-8727 scheme: orcid - affiliations: - name: CERN - name: University of Hawaii at Manoa family_name: Kish given_name: Alexander + id: 0000-0002-1648-3727 identifiers: - - identifier: https://orcid.org/0000-0002-1648-3727 + - identifier: 0000-0002-1648-3727 scheme: orcid - affiliations: - name: TU Wien - name: BEST - Bioenergy and Sustainable Technologies (Austria) family_name: "F\xFCrsatz" given_name: Katharina + id: 0000-0002-4338-5727 identifiers: - - identifier: https://orcid.org/0000-0002-4338-5727 + - identifier: 0000-0002-4338-5727 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Brunschwig given_name: Bruce + id: 0000-0002-6135-6727 identifiers: - - identifier: https://orcid.org/0000-0002-6135-6727 + - identifier: 0000-0002-6135-6727 scheme: orcid - affiliations: - name: TU Wien - name: University of Oxford family_name: Lanzinger given_name: Matthias + id: 0000-0002-7601-3727 identifiers: - - identifier: https://orcid.org/0000-0002-7601-3727 + - identifier: 0000-0002-7601-3727 scheme: orcid - affiliations: - name: CERN family_name: Apostolakis given_name: John + id: 0000-0003-1184-3727 identifiers: - - identifier: https://orcid.org/0000-0003-1184-3727 + - identifier: 0000-0003-1184-3727 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hwang given_name: Sooyeon + id: 0000-0001-5606-6728 identifiers: - - identifier: https://orcid.org/0000-0001-5606-6728 + - identifier: 0000-0001-5606-6728 scheme: orcid - affiliations: - name: "Universit\xE4t Z\xFCrich" @@ -34517,149 +39313,170 @@ - name: University of Fribourg family_name: Prinzing given_name: Marlis + id: 0000-0002-2024-0728 identifiers: - - identifier: https://orcid.org/0000-0002-2024-0728 + - identifier: 0000-0002-2024-0728 scheme: orcid - affiliations: - name: TU Wien family_name: Klemenschits given_name: Xaver + id: 0000-0002-2586-9728 identifiers: - - identifier: https://orcid.org/0000-0002-2586-9728 + - identifier: 0000-0002-2586-9728 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Sabbah given_name: Omar + id: 0000-0003-0413-7728 identifiers: - - identifier: https://orcid.org/0000-0003-0413-7728 + - identifier: 0000-0003-0413-7728 scheme: orcid - affiliations: - name: Northwestern University family_name: Coile given_name: Matthew + id: 0000-0003-2147-1728 identifiers: - - identifier: https://orcid.org/0000-0003-2147-1728 + - identifier: 0000-0003-2147-1728 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Patrone given_name: Samuel + id: 0000-0001-5319-2729 identifiers: - - identifier: https://orcid.org/0000-0001-5319-2729 + - identifier: 0000-0001-5319-2729 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: holden given_name: norman + id: 0000-0002-1988-4729 identifiers: - - identifier: https://orcid.org/0000-0002-1988-4729 + - identifier: 0000-0002-1988-4729 scheme: orcid - affiliations: - name: Northwestern University family_name: Jain given_name: Atul D + id: 0000-0002-3281-9729 identifiers: - - identifier: https://orcid.org/0000-0002-3281-9729 + - identifier: 0000-0002-3281-9729 scheme: orcid - affiliations: - name: Northwestern University family_name: Klein given_name: Michael + id: 0000-0003-0892-872X identifiers: - - identifier: https://orcid.org/0000-0003-0892-872X + - identifier: 0000-0003-0892-872X scheme: orcid - affiliations: - name: TU Wien family_name: Smetaczek given_name: Stefan + id: 0000-0003-1292-772X identifiers: - - identifier: https://orcid.org/0000-0003-1292-772X + - identifier: 0000-0003-1292-772X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Parganlija given_name: Denis + id: 0000-0001-8094-5730 identifiers: - - identifier: https://orcid.org/0000-0001-8094-5730 + - identifier: 0000-0001-8094-5730 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Wicaksono given_name: Damar Canggih + id: 0000-0001-8587-7730 identifiers: - - identifier: https://orcid.org/0000-0001-8587-7730 + - identifier: 0000-0001-8587-7730 scheme: orcid - affiliations: - name: TU Wien family_name: Benam given_name: Majid + id: 0000-0001-9240-1730 identifiers: - - identifier: https://orcid.org/0000-0001-9240-1730 + - identifier: 0000-0001-9240-1730 scheme: orcid - affiliations: - name: TU Wien family_name: YANG given_name: Junjian + id: 0000-0002-4653-7730 identifiers: - - identifier: https://orcid.org/0000-0002-4653-7730 + - identifier: 0000-0002-4653-7730 scheme: orcid - affiliations: - name: Northwestern University family_name: Mandal given_name: Aritra + id: 0000-0002-8680-3730 identifiers: - - identifier: https://orcid.org/0000-0002-8680-3730 + - identifier: 0000-0002-8680-3730 scheme: orcid - affiliations: - name: Northwestern University family_name: spigel given_name: lynn + id: 0000-0002-9664-9730 identifiers: - - identifier: https://orcid.org/0000-0002-9664-9730 + - identifier: 0000-0002-9664-9730 scheme: orcid - affiliations: - name: TU Wien family_name: Nenning given_name: Andreas + id: 0000-0001-9313-3731 identifiers: - - identifier: https://orcid.org/0000-0001-9313-3731 + - identifier: 0000-0001-9313-3731 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Berthold given_name: Anna + id: 0000-0002-1017-5731 identifiers: - - identifier: https://orcid.org/0000-0002-1017-5731 + - identifier: 0000-0002-1017-5731 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kreis given_name: Alexander + id: 0000-0002-2898-1731 identifiers: - - identifier: https://orcid.org/0000-0002-2898-1731 + - identifier: 0000-0002-2898-1731 scheme: orcid - affiliations: - name: Korea University - name: Northwestern University family_name: Koo given_name: Jahyun + id: 0000-0003-1503-0731 identifiers: - - identifier: https://orcid.org/0000-0003-1503-0731 + - identifier: 0000-0003-1503-0731 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Zarschler given_name: Kristof + id: 0000-0002-7571-4732 identifiers: - - identifier: https://orcid.org/0000-0002-7571-4732 + - identifier: 0000-0002-7571-4732 scheme: orcid - affiliations: - name: TU Wien family_name: Ceric given_name: Hajdin + id: 0000-0003-0918-7732 identifiers: - - identifier: https://orcid.org/0000-0003-0918-7732 + - identifier: 0000-0003-0918-7732 scheme: orcid - affiliations: - name: TU Wien @@ -34667,482 +39484,550 @@ - name: "Technische Universit\xE4t Wien Atominstitut" family_name: Kluck given_name: Holger + id: 0000-0003-3061-3732 identifiers: - - identifier: https://orcid.org/0000-0003-3061-3732 + - identifier: 0000-0003-3061-3732 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Duev given_name: Dmitry + id: 0000-0001-5060-8733 identifiers: - - identifier: https://orcid.org/0000-0001-5060-8733 + - identifier: 0000-0001-5060-8733 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Feliciello given_name: Alessandro + id: 0000-0001-5823-9733 identifiers: - - identifier: https://orcid.org/0000-0001-5823-9733 + - identifier: 0000-0001-5823-9733 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Klug given_name: Corina + id: 0000-0001-7116-9733 identifiers: - - identifier: https://orcid.org/0000-0001-7116-9733 + - identifier: 0000-0001-7116-9733 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Morozov given_name: Alexey + id: 0000-0001-7685-9733 identifiers: - - identifier: https://orcid.org/0000-0001-7685-9733 + - identifier: 0000-0001-7685-9733 scheme: orcid - affiliations: - name: Northwestern University family_name: Anders given_name: Evan + id: 0000-0002-3433-4733 identifiers: - - identifier: https://orcid.org/0000-0002-3433-4733 + - identifier: 0000-0002-3433-4733 scheme: orcid - affiliations: - name: Northwestern University family_name: Weber given_name: Klaus + id: 0000-0002-4460-4733 identifiers: - - identifier: https://orcid.org/0000-0002-4460-4733 + - identifier: 0000-0002-4460-4733 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shan given_name: Shu-ou + id: 0000-0002-6526-1733 identifiers: - - identifier: https://orcid.org/0000-0002-6526-1733 + - identifier: 0000-0002-6526-1733 scheme: orcid - affiliations: - name: CERN - name: University of California Berkeley Department of Physics family_name: Grabowska given_name: Dorota M + id: 0000-0002-0760-4734 identifiers: - - identifier: https://orcid.org/0000-0002-0760-4734 + - identifier: 0000-0002-0760-4734 scheme: orcid - affiliations: - name: California Institute of Technology - name: Korea Advanced Institute of Science and Technology family_name: Jang given_name: Dongchan + id: 0000-0002-2814-9734 identifiers: - - identifier: https://orcid.org/0000-0002-2814-9734 + - identifier: 0000-0002-2814-9734 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Hutter given_name: Herbert + id: 0000-0002-3007-0734 identifiers: - - identifier: https://orcid.org/0000-0002-3007-0734 + - identifier: 0000-0002-3007-0734 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Martzy given_name: Roland + id: 0000-0002-5863-9734 identifiers: - - identifier: https://orcid.org/0000-0002-5863-9734 + - identifier: 0000-0002-5863-9734 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "Zuba\u010Da" given_name: Jasmina + id: 0000-0001-5321-6735 identifiers: - - identifier: https://orcid.org/0000-0001-5321-6735 + - identifier: 0000-0001-5321-6735 scheme: orcid - affiliations: - name: TU Wien family_name: Shibayama given_name: Takeru + id: 0000-0001-9422-9735 identifiers: - - identifier: https://orcid.org/0000-0001-9422-9735 + - identifier: 0000-0001-9422-9735 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Gantet given_name: Claire + id: 0000-0002-0553-0735 identifiers: - - identifier: https://orcid.org/0000-0002-0553-0735 + - identifier: 0000-0002-0553-0735 scheme: orcid - affiliations: - name: Northwestern University family_name: Cabezas given_name: Maria + id: 0000-0002-0861-9735 identifiers: - - identifier: https://orcid.org/0000-0002-0861-9735 + - identifier: 0000-0002-0861-9735 scheme: orcid - affiliations: - name: Northwestern University family_name: Usman given_name: Ahmed + id: 0000-0002-1229-8735 identifiers: - - identifier: https://orcid.org/0000-0002-1229-8735 + - identifier: 0000-0002-1229-8735 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Lucrezi given_name: Roman + id: 0000-0002-3117-3735 identifiers: - - identifier: https://orcid.org/0000-0002-3117-3735 + - identifier: 0000-0002-3117-3735 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Xiang + id: 0000-0002-3780-7735 identifiers: - - identifier: https://orcid.org/0000-0002-3780-7735 + - identifier: 0000-0002-3780-7735 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "P\xF6lzl" given_name: Michaela + id: 0000-0002-7489-4735 identifiers: - - identifier: https://orcid.org/0000-0002-7489-4735 + - identifier: 0000-0002-7489-4735 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mawet given_name: Dimitri + id: 0000-0002-8895-4735 identifiers: - - identifier: https://orcid.org/0000-0002-8895-4735 + - identifier: 0000-0002-8895-4735 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Norrick-Ruehl given_name: Corinna + id: 0000-0003-2490-0735 identifiers: - - identifier: https://orcid.org/0000-0003-2490-0735 + - identifier: 0000-0003-2490-0735 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sanchez given_name: Luis + id: 0000-0001-6903-5736 identifiers: - - identifier: https://orcid.org/0000-0001-6903-5736 + - identifier: 0000-0001-6903-5736 scheme: orcid - affiliations: - name: TU Wien family_name: "Koutn\xE1" given_name: Nikola + id: 0000-0001-7901-4736 identifiers: - - identifier: https://orcid.org/0000-0001-7901-4736 + - identifier: 0000-0001-7901-4736 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Landsch\xFCtzer" given_name: Christian + id: 0000-0001-8914-0736 identifiers: - - identifier: https://orcid.org/0000-0001-8914-0736 + - identifier: 0000-0001-8914-0736 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kakaria given_name: Kyobi + id: 0000-0002-7826-6736 identifiers: - - identifier: https://orcid.org/0000-0002-7826-6736 + - identifier: 0000-0002-7826-6736 scheme: orcid - affiliations: - name: TU Wien - name: "\xC9cole Nationale Sup\xE9rieure des Mines" family_name: Avril given_name: "St\xE9phane" + id: 0000-0002-8604-7736 identifiers: - - identifier: https://orcid.org/0000-0002-8604-7736 + - identifier: 0000-0002-8604-7736 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Backer given_name: Malte + id: 0000-0002-9078-3736 identifiers: - - identifier: https://orcid.org/0000-0002-9078-3736 + - identifier: 0000-0002-9078-3736 scheme: orcid - affiliations: - name: Northwestern University family_name: Weng given_name: Shuyi + id: 0000-0003-1273-5736 identifiers: - - identifier: https://orcid.org/0000-0003-1273-5736 + - identifier: 0000-0003-1273-5736 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Gofron given_name: Kazimierz + id: 0000-0003-1441-5736 identifiers: - - identifier: https://orcid.org/0000-0003-1441-5736 + - identifier: 0000-0003-1441-5736 scheme: orcid - affiliations: - name: University of Fribourg family_name: Clausen given_name: Anika Kamilla + id: 0000-0003-1643-7736 identifiers: - - identifier: https://orcid.org/0000-0003-1643-7736 + - identifier: 0000-0003-1643-7736 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Dorner given_name: Iris + id: 0000-0003-1960-3736 identifiers: - - identifier: https://orcid.org/0000-0003-1960-3736 + - identifier: 0000-0003-1960-3736 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Petrica given_name: Marcela + id: 0000-0003-3823-0736 identifiers: - - identifier: https://orcid.org/0000-0003-3823-0736 + - identifier: 0000-0003-3823-0736 scheme: orcid - affiliations: - name: Northwestern University family_name: Palting given_name: Venus + id: 0000-0001-5387-0737 identifiers: - - identifier: https://orcid.org/0000-0001-5387-0737 + - identifier: 0000-0001-5387-0737 scheme: orcid - affiliations: - name: Northwestern University family_name: Bina given_name: Craig + id: 0000-0001-5946-3737 identifiers: - - identifier: https://orcid.org/0000-0001-5946-3737 + - identifier: 0000-0001-5946-3737 scheme: orcid - affiliations: - name: CERN family_name: Motschmann given_name: Fritz + id: 0000-0001-9217-5737 identifiers: - - identifier: https://orcid.org/0000-0001-9217-5737 + - identifier: 0000-0001-9217-5737 scheme: orcid - affiliations: - name: TU Wien family_name: Rambausek given_name: Matthias + id: 0000-0002-4528-1737 identifiers: - - identifier: https://orcid.org/0000-0002-4528-1737 + - identifier: 0000-0002-4528-1737 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ma given_name: Lu + id: 0000-0001-9646-0738 identifiers: - - identifier: https://orcid.org/0000-0001-9646-0738 + - identifier: 0000-0001-9646-0738 scheme: orcid - affiliations: - name: TU Wien family_name: "K\xF6rner" given_name: Jannis + id: 0000-0002-2599-7738 identifiers: - - identifier: https://orcid.org/0000-0002-2599-7738 + - identifier: 0000-0002-2599-7738 scheme: orcid - affiliations: - name: University of Fribourg family_name: Sehli given_name: Jihed + id: 0000-0002-4393-3738 identifiers: - - identifier: https://orcid.org/0000-0002-4393-3738 + - identifier: 0000-0002-4393-3738 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Charpentier given_name: Caroline + id: 0000-0002-7283-0738 identifiers: - - identifier: https://orcid.org/0000-0002-7283-0738 + - identifier: 0000-0002-7283-0738 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kaiser given_name: Florian + id: 0000-0002-9686-7738 identifiers: - - identifier: https://orcid.org/0000-0002-9686-7738 + - identifier: 0000-0002-9686-7738 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Stickley given_name: Nathaniel + id: 0000-0003-0987-5738 identifiers: - - identifier: https://orcid.org/0000-0003-0987-5738 + - identifier: 0000-0003-0987-5738 scheme: orcid - affiliations: - name: Northwestern University family_name: Hauser given_name: Mark + id: 0000-0001-7241-1739 identifiers: - - identifier: https://orcid.org/0000-0001-7241-1739 + - identifier: 0000-0001-7241-1739 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Ratzenb\xF6ck" given_name: Karin + id: 0000-0002-5167-0739 identifiers: - - identifier: https://orcid.org/0000-0002-5167-0739 + - identifier: 0000-0002-5167-0739 scheme: orcid - affiliations: - name: CERN family_name: Funk given_name: Wolfgang + id: 0000-0003-0422-6739 identifiers: - - identifier: https://orcid.org/0000-0003-0422-6739 + - identifier: 0000-0003-0422-6739 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Stanko given_name: Allison + id: 0000-0003-0576-3739 identifiers: - - identifier: https://orcid.org/0000-0003-0576-3739 + - identifier: 0000-0003-0576-3739 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Eibl given_name: Manuel + id: 0000-0003-1231-4739 identifiers: - - identifier: https://orcid.org/0000-0003-1231-4739 + - identifier: 0000-0003-1231-4739 scheme: orcid - affiliations: - name: University of Fribourg family_name: Wegmann given_name: Daniel + id: 0000-0003-2866-6739 identifiers: - - identifier: https://orcid.org/0000-0003-2866-6739 + - identifier: 0000-0003-2866-6739 scheme: orcid - affiliations: - name: Northwestern University family_name: Xu given_name: Yu + id: 0000-0003-2942-3739 identifiers: - - identifier: https://orcid.org/0000-0003-2942-3739 + - identifier: 0000-0003-2942-3739 scheme: orcid - affiliations: - name: TU Wien family_name: Nicolics given_name: Johann + id: 0000-0003-3485-5739 identifiers: - - identifier: https://orcid.org/0000-0003-3485-5739 + - identifier: 0000-0003-3485-5739 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Werner given_name: Christoph R. + id: 0000-0001-8557-473X identifiers: - - identifier: https://orcid.org/0000-0001-8557-473X + - identifier: 0000-0001-8557-473X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "L\xFCtgert" given_name: Julian + id: 0000-0002-2593-573X identifiers: - - identifier: https://orcid.org/0000-0002-2593-573X + - identifier: 0000-0002-2593-573X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Gloaguen given_name: Richard + id: 0000-0002-4383-473X identifiers: - - identifier: https://orcid.org/0000-0002-4383-473X + - identifier: 0000-0002-4383-473X scheme: orcid - affiliations: - name: CERN family_name: Balkova given_name: Yuliia + id: 0000-0002-6957-573X identifiers: - - identifier: https://orcid.org/0000-0002-6957-573X + - identifier: 0000-0002-6957-573X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "B\xF6rner" given_name: Markus + id: 0000-0002-8468-773X identifiers: - - identifier: https://orcid.org/0000-0002-8468-773X + - identifier: 0000-0002-8468-773X scheme: orcid - affiliations: - name: Northwestern University family_name: Winter given_name: Deborah + id: 0000-0003-1806-673X identifiers: - - identifier: https://orcid.org/0000-0003-1806-673X + - identifier: 0000-0003-1806-673X scheme: orcid - affiliations: - name: University of Fribourg family_name: Weichlein given_name: Siegfried + id: 0000-0003-4005-273X identifiers: - - identifier: https://orcid.org/0000-0003-4005-273X + - identifier: 0000-0003-4005-273X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hinkel given_name: Sascha + id: 0000-0001-5917-4740 identifiers: - - identifier: https://orcid.org/0000-0001-5917-4740 + - identifier: 0000-0001-5917-4740 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lee given_name: Daniel + id: 0000-0001-7411-2740 identifiers: - - identifier: https://orcid.org/0000-0001-7411-2740 + - identifier: 0000-0001-7411-2740 scheme: orcid - affiliations: - name: Charles University - name: TU Wien family_name: Setvin given_name: Martin + id: 0000-0002-1210-7740 identifiers: - - identifier: https://orcid.org/0000-0002-1210-7740 + - identifier: 0000-0002-1210-7740 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Senajova given_name: Dominika + id: 0000-0002-2846-7740 identifiers: - - identifier: https://orcid.org/0000-0002-2846-7740 + - identifier: 0000-0002-2846-7740 scheme: orcid - affiliations: - name: TU Wien - name: Austrian Academy of Sciences family_name: Feiglstorfer given_name: Hubert + id: 0000-0002-4524-0740 identifiers: - - identifier: https://orcid.org/0000-0002-4524-0740 + - identifier: 0000-0002-4524-0740 scheme: orcid - affiliations: - name: TU Wien family_name: Shuvaev given_name: Alexey + id: 0000-0002-7059-3740 identifiers: - - identifier: https://orcid.org/0000-0002-7059-3740 + - identifier: 0000-0002-7059-3740 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Schuszter given_name: Ioan Cristian + id: 0000-0002-7952-0740 identifiers: - - identifier: https://orcid.org/0000-0002-7952-0740 + - identifier: 0000-0002-7952-0740 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sturhahn given_name: Wolfgang + id: 0000-0002-9606-4740 identifiers: - - identifier: https://orcid.org/0000-0002-9606-4740 + - identifier: 0000-0002-9606-4740 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "Laubach (Wei\xDFer)" given_name: Thomas + id: 0000-0003-0471-4740 identifiers: - - identifier: https://orcid.org/0000-0003-0471-4740 + - identifier: 0000-0003-0471-4740 scheme: orcid - affiliations: - name: TU Wien family_name: Maly given_name: Thomas + id: 0000-0001-8266-9741 identifiers: - - identifier: https://orcid.org/0000-0001-8266-9741 + - identifier: 0000-0001-8266-9741 scheme: orcid - affiliations: - name: Indian Institute of Technology Hyderabad @@ -35150,347 +40035,396 @@ - name: Indian Institute of Technlogy-Kanpur family_name: Mishra given_name: Ashutosh Kumar + id: 0000-0001-8697-7741 identifiers: - - identifier: https://orcid.org/0000-0001-8697-7741 + - identifier: 0000-0001-8697-7741 scheme: orcid - affiliations: - name: TU Wien family_name: Moosbrugger given_name: Marcel + id: 0000-0002-2006-3741 identifiers: - - identifier: https://orcid.org/0000-0002-2006-3741 + - identifier: 0000-0002-2006-3741 scheme: orcid - affiliations: - name: TU Wien family_name: Melnyk given_name: Oleksandr + id: 0000-0002-3955-7741 identifiers: - - identifier: https://orcid.org/0000-0002-3955-7741 + - identifier: 0000-0002-3955-7741 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Nussbaumer given_name: Alexander + id: 0000-0002-4692-5741 identifiers: - - identifier: https://orcid.org/0000-0002-4692-5741 + - identifier: 0000-0002-4692-5741 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ghosh given_name: Srimoyee + id: 0000-0002-7820-6741 identifiers: - - identifier: https://orcid.org/0000-0002-7820-6741 + - identifier: 0000-0002-7820-6741 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Gavioli given_name: Chiara + id: 0000-0003-0376-6741 identifiers: - - identifier: https://orcid.org/0000-0003-0376-6741 + - identifier: 0000-0003-0376-6741 scheme: orcid - affiliations: - name: TU Wien family_name: Fuhrmann given_name: Florian + id: 0000-0003-0530-7741 identifiers: - - identifier: https://orcid.org/0000-0003-0530-7741 + - identifier: 0000-0003-0530-7741 scheme: orcid - affiliations: - name: Graz University of Technology - name: "\u043F\u0435\u043D\u0441\u0438\u043E\u043D\u0435\u0440" family_name: Shevjakov given_name: Vladimir + id: 0000-0001-5946-2742 identifiers: - - identifier: https://orcid.org/0000-0001-5946-2742 + - identifier: 0000-0001-5946-2742 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ravikumar given_name: Dhananjay + id: 0000-0001-6440-5742 identifiers: - - identifier: https://orcid.org/0000-0001-6440-5742 + - identifier: 0000-0001-6440-5742 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Brach given_name: Michael + id: 0000-0001-6676-9742 identifiers: - - identifier: https://orcid.org/0000-0001-6676-9742 + - identifier: 0000-0001-6676-9742 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Planchette given_name: Carole + id: 0000-0002-3974-5742 identifiers: - - identifier: https://orcid.org/0000-0002-3974-5742 + - identifier: 0000-0002-3974-5742 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "K\xFCgler" given_name: Joachim + id: 0000-0002-8504-7742 identifiers: - - identifier: https://orcid.org/0000-0002-8504-7742 + - identifier: 0000-0002-8504-7742 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Borreani given_name: Walter + id: 0000-0002-9271-4742 identifiers: - - identifier: https://orcid.org/0000-0002-9271-4742 + - identifier: 0000-0002-9271-4742 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kvas given_name: Andreas + id: 0000-0003-1199-7742 identifiers: - - identifier: https://orcid.org/0000-0003-1199-7742 + - identifier: 0000-0003-1199-7742 scheme: orcid - affiliations: - name: University of Fribourg family_name: Korn given_name: Rachel + id: 0000-0001-6038-7743 identifiers: - - identifier: https://orcid.org/0000-0001-6038-7743 + - identifier: 0000-0001-6038-7743 scheme: orcid - affiliations: - name: Northwestern University family_name: Brickner given_name: Jason + id: 0000-0001-8019-3743 identifiers: - - identifier: https://orcid.org/0000-0001-8019-3743 + - identifier: 0000-0001-8019-3743 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Salikhov given_name: Ruslan + id: 0000-0001-8461-0743 identifiers: - - identifier: https://orcid.org/0000-0001-8461-0743 + - identifier: 0000-0001-8461-0743 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: wu given_name: longlong + id: 0000-0002-1336-2743 identifiers: - - identifier: https://orcid.org/0000-0002-1336-2743 + - identifier: 0000-0002-1336-2743 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Ringer given_name: Bernhard + id: 0000-0002-2413-3743 identifiers: - - identifier: https://orcid.org/0000-0002-2413-3743 + - identifier: 0000-0002-2413-3743 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Yujie + id: 0000-0002-3729-2743 identifiers: - - identifier: https://orcid.org/0000-0002-3729-2743 + - identifier: 0000-0002-3729-2743 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Eisenberg given_name: Julia + id: 0000-0002-6995-6743 identifiers: - - identifier: https://orcid.org/0000-0002-6995-6743 + - identifier: 0000-0002-6995-6743 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Park given_name: HyeYun + id: 0000-0002-7295-2743 identifiers: - - identifier: https://orcid.org/0000-0002-7295-2743 + - identifier: 0000-0002-7295-2743 scheme: orcid - affiliations: - name: TU Wien family_name: Podkosova given_name: Iana + id: 0000-0003-4155-9743 identifiers: - - identifier: https://orcid.org/0000-0003-4155-9743 + - identifier: 0000-0003-4155-9743 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Coclite given_name: Anna Maria + id: 0000-0001-5562-9744 identifiers: - - identifier: https://orcid.org/0000-0001-5562-9744 + - identifier: 0000-0001-5562-9744 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Hahn given_name: Ferdinand + id: 0000-0001-6461-3744 identifiers: - - identifier: https://orcid.org/0000-0001-6461-3744 + - identifier: 0000-0001-6461-3744 scheme: orcid - affiliations: - name: Northwestern University family_name: Kim given_name: ihnhee + id: 0000-0001-7433-6744 identifiers: - - identifier: https://orcid.org/0000-0001-7433-6744 + - identifier: 0000-0001-7433-6744 scheme: orcid - affiliations: - name: Northwestern University family_name: Weidemann given_name: Benjamin + id: 0000-0002-3747-2744 identifiers: - - identifier: https://orcid.org/0000-0002-3747-2744 + - identifier: 0000-0002-3747-2744 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Billingsley given_name: GariLynn + id: 0000-0002-4141-2744 identifiers: - - identifier: https://orcid.org/0000-0002-4141-2744 + - identifier: 0000-0002-4141-2744 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Muetze given_name: Annette + id: 0000-0002-9254-3744 identifiers: - - identifier: https://orcid.org/0000-0002-9254-3744 + - identifier: 0000-0002-9254-3744 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhou given_name: Wen + id: 0000-0003-0357-2744 identifiers: - - identifier: https://orcid.org/0000-0003-0357-2744 + - identifier: 0000-0003-0357-2744 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Juan + id: 0000-0003-0933-3744 identifiers: - - identifier: https://orcid.org/0000-0003-0933-3744 + - identifier: 0000-0003-0933-3744 scheme: orcid - affiliations: - name: Northwestern University family_name: Aveni given_name: Katharine + id: 0000-0002-0700-7745 identifiers: - - identifier: https://orcid.org/0000-0002-0700-7745 + - identifier: 0000-0002-0700-7745 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Miryala given_name: Sandeep + id: 0000-0003-1277-1745 identifiers: - - identifier: https://orcid.org/0000-0003-1277-1745 + - identifier: 0000-0003-1277-1745 scheme: orcid - affiliations: - name: Northwestern University family_name: Brooks given_name: Sara Rose + id: 0000-0001-7004-1746 identifiers: - - identifier: https://orcid.org/0000-0001-7004-1746 + - identifier: 0000-0001-7004-1746 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bois given_name: Justin + id: 0000-0001-7137-8746 identifiers: - - identifier: https://orcid.org/0000-0001-7137-8746 + - identifier: 0000-0001-7137-8746 scheme: orcid - affiliations: - name: Northwestern University family_name: Winquist given_name: Nathan + id: 0000-0001-8932-4746 identifiers: - - identifier: https://orcid.org/0000-0001-8932-4746 + - identifier: 0000-0001-8932-4746 scheme: orcid - affiliations: - name: TU Wien family_name: Maier given_name: "J\xFCrgen" + id: 0000-0002-0965-5746 identifiers: - - identifier: https://orcid.org/0000-0002-0965-5746 + - identifier: 0000-0002-0965-5746 scheme: orcid - affiliations: - name: Northwestern University family_name: hoffman given_name: brian + id: 0000-0002-3100-0746 identifiers: - - identifier: https://orcid.org/0000-0002-3100-0746 + - identifier: 0000-0002-3100-0746 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Illig given_name: Steffen + id: 0000-0002-5570-7746 identifiers: - - identifier: https://orcid.org/0000-0002-5570-7746 + - identifier: 0000-0002-5570-7746 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Simula given_name: Silvano + id: 0000-0002-5533-6746 identifiers: - - identifier: https://orcid.org/0000-0002-5533-6746 + - identifier: 0000-0002-5533-6746 scheme: orcid - affiliations: - name: Northwestern University family_name: Seitz given_name: Linsey + id: 0000-0001-6831-6747 identifiers: - - identifier: https://orcid.org/0000-0001-6831-6747 + - identifier: 0000-0001-6831-6747 scheme: orcid - affiliations: - name: TU Wien - name: Austrian Center for Digital Production (CDP) family_name: "Fr\xFChwirth" given_name: Thomas + id: 0000-0001-8133-4747 identifiers: - - identifier: https://orcid.org/0000-0001-8133-4747 + - identifier: 0000-0001-8133-4747 scheme: orcid - affiliations: - name: Northwestern University family_name: Kilpatrick given_name: Charles + id: 0000-0002-5740-7747 identifiers: - - identifier: https://orcid.org/0000-0002-5740-7747 + - identifier: 0000-0002-5740-7747 scheme: orcid - affiliations: - name: Northwestern University family_name: Feng given_name: Liang-Wen + id: 0000-0003-0699-3747 identifiers: - - identifier: https://orcid.org/0000-0003-0699-3747 + - identifier: 0000-0003-0699-3747 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Bruni given_name: Graziano + id: 0000-0001-5667-7748 identifiers: - - identifier: https://orcid.org/0000-0001-5667-7748 + - identifier: 0000-0001-5667-7748 scheme: orcid - affiliations: - name: Northwestern University family_name: Pal given_name: Koushik + id: 0000-0002-5426-9748 identifiers: - - identifier: https://orcid.org/0000-0002-5426-9748 + - identifier: 0000-0002-5426-9748 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Helset given_name: Andreas + id: 0000-0002-5904-3748 identifiers: - - identifier: https://orcid.org/0000-0002-5904-3748 + - identifier: 0000-0002-5904-3748 scheme: orcid - affiliations: - name: TU Wien family_name: Schultis given_name: Daniel-Leon + id: 0000-0002-8077-4748 identifiers: - - identifier: https://orcid.org/0000-0002-8077-4748 + - identifier: 0000-0002-8077-4748 scheme: orcid - affiliations: - name: Rice University - name: California Institute of Technology family_name: Torres given_name: Mark + id: 0000-0002-9599-2748 identifiers: - - identifier: https://orcid.org/0000-0002-9599-2748 + - identifier: 0000-0002-9599-2748 scheme: orcid - affiliations: - name: "Centro de Investigaciones Energ\xE9ticas Medioambientales y Tecnol\xF3\ @@ -35498,358 +40432,408 @@ - name: Istituto Nazionale di Fisica Nucleare family_name: "G\xF3mez-Ros" given_name: "Jos\xE9 M." + id: 0000-0003-1616-7748 identifiers: - - identifier: https://orcid.org/0000-0003-1616-7748 + - identifier: 0000-0003-1616-7748 scheme: orcid - affiliations: - name: University of Fribourg family_name: Sood given_name: Radhika + id: 0000-0003-1778-4748 identifiers: - - identifier: https://orcid.org/0000-0003-1778-4748 + - identifier: 0000-0003-1778-4748 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Tauber given_name: Joseph + id: 0000-0002-0636-7749 identifiers: - - identifier: https://orcid.org/0000-0002-0636-7749 + - identifier: 0000-0002-0636-7749 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Sch\xF6bel" given_name: Susanne + id: 0000-0002-2769-4749 identifiers: - - identifier: https://orcid.org/0000-0002-2769-4749 + - identifier: 0000-0002-2769-4749 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Kun + id: 0000-0002-5927-4749 identifiers: - - identifier: https://orcid.org/0000-0002-5927-4749 + - identifier: 0000-0002-5927-4749 scheme: orcid - affiliations: - name: Northwestern University family_name: Reynolds given_name: Rebekah + id: 0000-0002-8723-2749 identifiers: - - identifier: https://orcid.org/0000-0002-8723-2749 + - identifier: 0000-0002-8723-2749 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Khalid given_name: Faiq + id: 0000-0001-6263-674X identifiers: - - identifier: https://orcid.org/0000-0001-6263-674X + - identifier: 0000-0001-6263-674X scheme: orcid - affiliations: - name: TU Wien family_name: "St\xF6ger" given_name: Berthold + id: 0000-0002-0087-474X identifiers: - - identifier: https://orcid.org/0000-0002-0087-474X + - identifier: 0000-0002-0087-474X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yu given_name: Kwangmin + id: 0000-0003-0826-074X identifiers: - - identifier: https://orcid.org/0000-0003-0826-074X + - identifier: 0000-0003-0826-074X scheme: orcid - affiliations: - name: Northwestern University family_name: Wolverton given_name: Chris + id: 0000-0003-2248-474X identifiers: - - identifier: https://orcid.org/0000-0003-2248-474X + - identifier: 0000-0003-2248-474X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Lamaze given_name: Angelique + id: 0000-0001-7495-3750 identifiers: - - identifier: https://orcid.org/0000-0001-7495-3750 + - identifier: 0000-0001-7495-3750 scheme: orcid - affiliations: - name: University of Fribourg family_name: Sprecher given_name: Simon + id: 0000-0001-9060-3750 identifiers: - - identifier: https://orcid.org/0000-0001-9060-3750 + - identifier: 0000-0001-9060-3750 scheme: orcid - affiliations: - name: Northwestern University family_name: Ma given_name: Haocong + id: 0000-0002-2731-4750 identifiers: - - identifier: https://orcid.org/0000-0002-2731-4750 + - identifier: 0000-0002-2731-4750 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lee given_name: Nien-En + id: 0000-0002-3172-7750 identifiers: - - identifier: https://orcid.org/0000-0002-3172-7750 + - identifier: 0000-0002-3172-7750 scheme: orcid - affiliations: - name: Northwestern University family_name: Yang given_name: Guang-Yu + id: 0000-0002-5987-7750 identifiers: - - identifier: https://orcid.org/0000-0002-5987-7750 + - identifier: 0000-0002-5987-7750 scheme: orcid - affiliations: - name: Northwestern University family_name: Figg given_name: C. Adrian + id: 0000-0003-3514-7750 identifiers: - - identifier: https://orcid.org/0000-0003-3514-7750 + - identifier: 0000-0003-3514-7750 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Davis given_name: Derek + id: 0000-0001-5620-6751 identifiers: - - identifier: https://orcid.org/0000-0001-5620-6751 + - identifier: 0000-0001-5620-6751 scheme: orcid - affiliations: - name: CERN family_name: Moll given_name: Michael + id: 0000-0001-7013-9751 identifiers: - - identifier: https://orcid.org/0000-0001-7013-9751 + - identifier: 0000-0001-7013-9751 scheme: orcid - affiliations: - name: CERN family_name: Micke given_name: Peter + id: 0000-0001-7430-8751 identifiers: - - identifier: https://orcid.org/0000-0001-7430-8751 + - identifier: 0000-0001-7430-8751 scheme: orcid - affiliations: - name: University of Fribourg family_name: Alba given_name: Josephine + id: 0000-0002-5467-4751 identifiers: - - identifier: https://orcid.org/0000-0002-5467-4751 + - identifier: 0000-0002-5467-4751 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Schanz given_name: Martin + id: 0000-0002-6177-8751 identifiers: - - identifier: https://orcid.org/0000-0002-6177-8751 + - identifier: 0000-0002-6177-8751 scheme: orcid - affiliations: - name: TU Wien family_name: Wilker given_name: Stefan + id: 0000-0002-9873-0751 identifiers: - - identifier: https://orcid.org/0000-0002-9873-0751 + - identifier: 0000-0002-9873-0751 scheme: orcid - affiliations: - name: CERN family_name: Izquierdo Bermudez given_name: Susana + id: 0000-0003-2157-4751 identifiers: - - identifier: https://orcid.org/0000-0003-2157-4751 + - identifier: 0000-0003-2157-4751 scheme: orcid - affiliations: - name: CERN family_name: Krammer given_name: Manfred + id: 0000-0003-2257-7751 identifiers: - - identifier: https://orcid.org/0000-0003-2257-7751 + - identifier: 0000-0003-2257-7751 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Zajki-Zechmeister given_name: Krisztina + id: 0000-0001-5118-5752 identifiers: - - identifier: https://orcid.org/0000-0001-5118-5752 + - identifier: 0000-0001-5118-5752 scheme: orcid - affiliations: - name: California Institute of Technology - name: Karolinska Institutet family_name: Berger given_name: Christopher + id: 0000-0002-8338-0752 identifiers: - - identifier: https://orcid.org/0000-0002-8338-0752 + - identifier: 0000-0002-8338-0752 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Xiaozhong + id: 0000-0003-0219-0752 identifiers: - - identifier: https://orcid.org/0000-0003-0219-0752 + - identifier: 0000-0003-0219-0752 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Abeykoon given_name: Milinda + id: 0000-0001-6965-3753 identifiers: - - identifier: https://orcid.org/0000-0001-6965-3753 + - identifier: 0000-0001-6965-3753 scheme: orcid - affiliations: - name: Northwestern University family_name: sharma given_name: ajay + id: 0000-0002-0829-6753 identifiers: - - identifier: https://orcid.org/0000-0002-0829-6753 + - identifier: 0000-0002-0829-6753 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Cynthia + id: 0000-0003-3880-8753 identifiers: - - identifier: https://orcid.org/0000-0003-3880-8753 + - identifier: 0000-0003-3880-8753 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Diep given_name: Kim-Long + id: 0000-0001-5132-6754 identifiers: - - identifier: https://orcid.org/0000-0001-5132-6754 + - identifier: 0000-0001-5132-6754 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Narvaez given_name: Lautaro + id: 0000-0003-2708-8754 identifiers: - - identifier: https://orcid.org/0000-0003-2708-8754 + - identifier: 0000-0003-2708-8754 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hybertsen given_name: Mark S + id: 0000-0003-3596-9754 identifiers: - - identifier: https://orcid.org/0000-0003-3596-9754 + - identifier: 0000-0003-3596-9754 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bashkatov given_name: Aleksandr + id: 0000-0001-6385-7755 identifiers: - - identifier: https://orcid.org/0000-0001-6385-7755 + - identifier: 0000-0001-6385-7755 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Kaihang + id: 0000-0001-7657-8755 identifiers: - - identifier: https://orcid.org/0000-0001-7657-8755 + - identifier: 0000-0001-7657-8755 scheme: orcid - affiliations: - name: Northwestern University family_name: Stoeger given_name: Jordan + id: 0000-0002-0039-8755 identifiers: - - identifier: https://orcid.org/0000-0002-0039-8755 + - identifier: 0000-0002-0039-8755 scheme: orcid - affiliations: - name: TU Wien family_name: Garmroudi given_name: Fabian + id: 0000-0002-0088-1755 identifiers: - - identifier: https://orcid.org/0000-0002-0088-1755 + - identifier: 0000-0002-0088-1755 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Foettinger given_name: Karin + id: 0000-0002-2193-0755 identifiers: - - identifier: https://orcid.org/0000-0002-2193-0755 + - identifier: 0000-0002-2193-0755 scheme: orcid - affiliations: - name: TU Wien - name: University of Vienna family_name: Sanchez Solis given_name: Barbara + id: 0000-0002-3574-2755 identifiers: - - identifier: https://orcid.org/0000-0002-3574-2755 + - identifier: 0000-0002-3574-2755 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bachmann given_name: Michael + id: 0000-0002-8029-5755 identifiers: - - identifier: https://orcid.org/0000-0002-8029-5755 + - identifier: 0000-0002-8029-5755 scheme: orcid - affiliations: - name: Northwestern University - name: American Bar Foundation family_name: Mehrotra given_name: Ajay + id: 0000-0002-8791-3755 identifiers: - - identifier: https://orcid.org/0000-0002-8791-3755 + - identifier: 0000-0002-8791-3755 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: "Institut f\xFCr Arbeitsmarkt- und Berufsforschung" family_name: Kosyakova given_name: Yuliya + id: 0000-0002-9621-1755 identifiers: - - identifier: https://orcid.org/0000-0002-9621-1755 + - identifier: 0000-0002-9621-1755 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Petrone given_name: Carlo + id: 0000-0002-4226-8756 identifiers: - - identifier: https://orcid.org/0000-0002-4226-8756 + - identifier: 0000-0002-4226-8756 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Chakankar given_name: Mital + id: 0000-0003-2518-6756 identifiers: - - identifier: https://orcid.org/0000-0003-2518-6756 + - identifier: 0000-0003-2518-6756 scheme: orcid - affiliations: - name: TU Wien - name: "FH K\xE4rnten" family_name: Kubin given_name: Stefan Johannes + id: 0000-0003-4323-7756 identifiers: - - identifier: https://orcid.org/0000-0003-4323-7756 + - identifier: 0000-0003-4323-7756 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhao given_name: Xingang + id: 0000-0001-5852-9757 identifiers: - - identifier: https://orcid.org/0000-0001-5852-9757 + - identifier: 0000-0001-5852-9757 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Liuchi + id: 0000-0002-1360-4757 identifiers: - - identifier: https://orcid.org/0000-0002-1360-4757 + - identifier: 0000-0002-1360-4757 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sanghi given_name: Aniket + id: 0000-0002-1838-4757 identifiers: - - identifier: https://orcid.org/0000-0002-1838-4757 + - identifier: 0000-0002-1838-4757 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Liu given_name: Qin (Quinn) + id: 0000-0002-4260-8757 identifiers: - - identifier: https://orcid.org/0000-0002-4260-8757 + - identifier: 0000-0002-4260-8757 scheme: orcid - affiliations: - name: Northwestern University family_name: Fan given_name: Wenbo + id: 0000-0003-1382-4757 identifiers: - - identifier: https://orcid.org/0000-0003-1382-4757 + - identifier: 0000-0003-1382-4757 scheme: orcid - affiliations: - name: RTI International @@ -35857,130 +40841,148 @@ - name: Shirley Ryan AbilityLab family_name: Deutsch given_name: Anne + id: 0000-0003-2290-7757 identifiers: - - identifier: https://orcid.org/0000-0003-2290-7757 + - identifier: 0000-0003-2290-7757 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Coombs given_name: George + id: 0000-0003-4621-2757 identifiers: - - identifier: https://orcid.org/0000-0003-4621-2757 + - identifier: 0000-0003-4621-2757 scheme: orcid - affiliations: - name: Northwestern University family_name: Shalowitz given_name: Joel + id: 0000-0001-5908-2758 identifiers: - - identifier: https://orcid.org/0000-0001-5908-2758 + - identifier: 0000-0001-5908-2758 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien Fakult\xE4t f\xFCr Technische Chemie" - name: TU Wien family_name: Lehr given_name: Maximilian + id: 0000-0001-7662-4758 identifiers: - - identifier: https://orcid.org/0000-0001-7662-4758 + - identifier: 0000-0001-7662-4758 scheme: orcid - affiliations: - name: TU Wien family_name: Van Son given_name: Matty + id: 0000-0001-8576-6758 identifiers: - - identifier: https://orcid.org/0000-0001-8576-6758 + - identifier: 0000-0001-8576-6758 scheme: orcid - affiliations: - name: Northwestern University family_name: Jovasevic given_name: Vladimir + id: 0000-0001-8963-6758 identifiers: - - identifier: https://orcid.org/0000-0001-8963-6758 + - identifier: 0000-0001-8963-6758 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Vogt given_name: Tobias + id: 0000-0002-0022-5758 identifiers: - - identifier: https://orcid.org/0000-0002-0022-5758 + - identifier: 0000-0002-0022-5758 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Air Force Research Laboratory family_name: Hong given_name: Spencer + id: 0000-0002-2278-2758 identifiers: - - identifier: https://orcid.org/0000-0002-2278-2758 + - identifier: 0000-0002-2278-2758 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Carroll given_name: Sean + id: 0000-0002-4226-5758 identifiers: - - identifier: https://orcid.org/0000-0002-4226-5758 + - identifier: 0000-0002-4226-5758 scheme: orcid - affiliations: - name: Northwestern University family_name: Bancroft given_name: Laura + id: 0000-0002-4312-9758 identifiers: - - identifier: https://orcid.org/0000-0002-4312-9758 + - identifier: 0000-0002-4312-9758 scheme: orcid - affiliations: - name: TU Wien family_name: Kopacek given_name: Peter + id: 0000-0002-5355-4758 identifiers: - - identifier: https://orcid.org/0000-0002-5355-4758 + - identifier: 0000-0002-5355-4758 scheme: orcid - affiliations: - name: University of Fribourg family_name: Mirabello given_name: Giulia + id: 0000-0002-8009-3758 identifiers: - - identifier: https://orcid.org/0000-0002-8009-3758 + - identifier: 0000-0002-8009-3758 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Pasquier given_name: Jacques + id: 0000-0002-9237-7758 identifiers: - - identifier: https://orcid.org/0000-0002-9237-7758 + - identifier: 0000-0002-9237-7758 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Savitz given_name: Samuel + id: 0000-0003-2112-3758 identifiers: - - identifier: https://orcid.org/0000-0003-2112-3758 + - identifier: 0000-0003-2112-3758 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Schmid given_name: Andreas + id: 0000-0001-6483-8759 identifiers: - - identifier: https://orcid.org/0000-0001-6483-8759 + - identifier: 0000-0001-6483-8759 scheme: orcid - affiliations: - name: CERN - name: Horia Hulubei National Institute of Physics and Nuclear Engineering family_name: Vasile given_name: Matei-Eugen + id: 0000-0001-8415-0759 identifiers: - - identifier: https://orcid.org/0000-0001-8415-0759 + - identifier: 0000-0001-8415-0759 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Dannlowski given_name: Udo + id: 0000-0002-0623-3759 identifiers: - - identifier: https://orcid.org/0000-0002-0623-3759 + - identifier: 0000-0002-0623-3759 scheme: orcid - affiliations: - name: University of Fribourg family_name: BOURGEOIS given_name: Dominique + id: 0000-0002-0955-7759 identifiers: - - identifier: https://orcid.org/0000-0002-0955-7759 + - identifier: 0000-0002-0955-7759 scheme: orcid - affiliations: - name: TU Wien @@ -35988,132 +40990,150 @@ - name: "Universit\xE4t Stuttgart H\xF6chstleistungsrechenzentrum Stuttgart" family_name: Dembski given_name: Fabian + id: 0000-0002-2757-9759 identifiers: - - identifier: https://orcid.org/0000-0002-2757-9759 + - identifier: 0000-0002-2757-9759 scheme: orcid - affiliations: - name: TU Wien family_name: "Reism\xFCller" given_name: Raphael + id: 0000-0002-3676-6759 identifiers: - - identifier: https://orcid.org/0000-0002-3676-6759 + - identifier: 0000-0002-3676-6759 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Edthofer given_name: Julia + id: 0000-0002-4445-9759 identifiers: - - identifier: https://orcid.org/0000-0002-4445-9759 + - identifier: 0000-0002-4445-9759 scheme: orcid - affiliations: - name: Northwestern University family_name: Quillian given_name: Lincoln + id: 0000-0002-7737-3759 identifiers: - - identifier: https://orcid.org/0000-0002-7737-3759 + - identifier: 0000-0002-7737-3759 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Pisarski given_name: Robert D. + id: 0000-0002-7862-4759 identifiers: - - identifier: https://orcid.org/0000-0002-7862-4759 + - identifier: 0000-0002-7862-4759 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Michelsen given_name: Malte + id: 0000-0003-3701-4759 identifiers: - - identifier: https://orcid.org/0000-0003-3701-4759 + - identifier: 0000-0003-3701-4759 scheme: orcid - affiliations: - name: CERN - name: Shandong University family_name: Han given_name: Yanliang + id: 0000-0003-3769-8759 identifiers: - - identifier: https://orcid.org/0000-0003-3769-8759 + - identifier: 0000-0003-3769-8759 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "L\xEA Vi\u1EBFt" given_name: "M\u1EABn" + id: 0000-0001-5778-975X identifiers: - - identifier: https://orcid.org/0000-0001-5778-975X + - identifier: 0000-0001-5778-975X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hornung given_name: Cedric + id: 0000-0003-4556-075X identifiers: - - identifier: https://orcid.org/0000-0003-4556-075X + - identifier: 0000-0003-4556-075X scheme: orcid - affiliations: - name: Tsinghua University - name: Northwestern University family_name: Wang given_name: Jianjian + id: 0000-0001-8244-0760 identifiers: - - identifier: https://orcid.org/0000-0001-8244-0760 + - identifier: 0000-0001-8244-0760 scheme: orcid - affiliations: - name: TU Wien family_name: Fernandez del Castillo given_name: Andres + id: 0000-0002-1139-5760 identifiers: - - identifier: https://orcid.org/0000-0002-1139-5760 + - identifier: 0000-0002-1139-5760 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Ferschin given_name: Peter + id: 0000-0002-2197-2760 identifiers: - - identifier: https://orcid.org/0000-0002-2197-2760 + - identifier: 0000-0002-2197-2760 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Marx given_name: Daniel + id: 0000-0002-3108-9760 identifiers: - - identifier: https://orcid.org/0000-0002-3108-9760 + - identifier: 0000-0002-3108-9760 scheme: orcid - affiliations: - name: Kyiv Academic University - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Pylypovskyi given_name: Oleksandr + id: 0000-0002-5947-9760 identifiers: - - identifier: https://orcid.org/0000-0002-5947-9760 + - identifier: 0000-0002-5947-9760 scheme: orcid - affiliations: - name: Northwestern University family_name: Korpak given_name: Aaron + id: 0000-0003-4244-0760 identifiers: - - identifier: https://orcid.org/0000-0003-4244-0760 + - identifier: 0000-0003-4244-0760 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Peth\u0151" given_name: "Zolt\xE1n" + id: 0000-0001-7057-4761 identifiers: - - identifier: https://orcid.org/0000-0001-7057-4761 + - identifier: 0000-0001-7057-4761 scheme: orcid - affiliations: - name: Northwestern University family_name: Sengupta given_name: Debabrata + id: 0000-0001-7212-3761 identifiers: - - identifier: https://orcid.org/0000-0001-7212-3761 + - identifier: 0000-0001-7212-3761 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Baudis given_name: Stefan + id: 0000-0002-5390-0761 identifiers: - - identifier: https://orcid.org/0000-0002-5390-0761 + - identifier: 0000-0002-5390-0761 scheme: orcid - affiliations: - name: Hertie Institute for clinical brain research @@ -36121,149 +41141,170 @@ - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Rattay given_name: Tim W. + id: 0000-0002-5456-7761 identifiers: - - identifier: https://orcid.org/0000-0002-5456-7761 + - identifier: 0000-0002-5456-7761 scheme: orcid - affiliations: - name: CERN family_name: Marco given_name: Pezzetti + id: 0000-0002-8046-6761 identifiers: - - identifier: https://orcid.org/0000-0002-8046-6761 + - identifier: 0000-0002-8046-6761 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mulcahy given_name: Matthew + id: 0000-0001-5588-8762 identifiers: - - identifier: https://orcid.org/0000-0001-5588-8762 + - identifier: 0000-0001-5588-8762 scheme: orcid - affiliations: - name: Northwestern University family_name: Mills given_name: Carolyn + id: 0000-0001-6058-0762 identifiers: - - identifier: https://orcid.org/0000-0001-6058-0762 + - identifier: 0000-0001-6058-0762 scheme: orcid - affiliations: - name: TU Wien family_name: Bader given_name: Markus + id: 0000-0001-7299-5762 identifiers: - - identifier: https://orcid.org/0000-0001-7299-5762 + - identifier: 0000-0001-7299-5762 scheme: orcid - affiliations: - name: CERN family_name: Onnela given_name: Antti + id: 0000-0001-9946-9762 identifiers: - - identifier: https://orcid.org/0000-0001-9946-9762 + - identifier: 0000-0001-9946-9762 scheme: orcid - affiliations: - name: University of Wisconsin Madison - name: California Institute of Technology family_name: Wang given_name: Han + id: 0000-0002-1933-5762 identifiers: - - identifier: https://orcid.org/0000-0002-1933-5762 + - identifier: 0000-0002-1933-5762 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Porcellato given_name: Anna Maria + id: 0000-0002-5665-4762 identifiers: - - identifier: https://orcid.org/0000-0002-5665-4762 + - identifier: 0000-0002-5665-4762 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Artzner given_name: Christoph + id: 0000-0002-7608-1762 identifiers: - - identifier: https://orcid.org/0000-0002-7608-1762 + - identifier: 0000-0002-7608-1762 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gukov given_name: Sergei + id: 0000-0002-9486-1762 identifiers: - - identifier: https://orcid.org/0000-0002-9486-1762 + - identifier: 0000-0002-9486-1762 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sidwell given_name: Tom + id: 0000-0003-1578-1762 identifiers: - - identifier: https://orcid.org/0000-0003-1578-1762 + - identifier: 0000-0003-1578-1762 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Brunner given_name: Philipp + id: 0000-0003-2034-5762 identifiers: - - identifier: https://orcid.org/0000-0003-2034-5762 + - identifier: 0000-0003-2034-5762 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Di Nezza given_name: Pasquale + id: 0000-0003-4894-6762 identifiers: - - identifier: https://orcid.org/0000-0003-4894-6762 + - identifier: 0000-0003-4894-6762 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sessions given_name: Alex + id: 0000-0001-6120-2763 identifiers: - - identifier: https://orcid.org/0000-0001-6120-2763 + - identifier: 0000-0001-6120-2763 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Ortino given_name: Mattia + id: 0000-0001-6509-4763 identifiers: - - identifier: https://orcid.org/0000-0001-6509-4763 + - identifier: 0000-0001-6509-4763 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Stieg given_name: Julian + id: 0000-0001-9085-5763 identifiers: - - identifier: https://orcid.org/0000-0001-9085-5763 + - identifier: 0000-0001-9085-5763 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Schrenk given_name: Florian + id: 0000-0003-4604-7763 identifiers: - - identifier: https://orcid.org/0000-0003-4604-7763 + - identifier: 0000-0003-4604-7763 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Franke given_name: Patrick + id: 0000-0001-7520-2764 identifiers: - - identifier: https://orcid.org/0000-0001-7520-2764 + - identifier: 0000-0001-7520-2764 scheme: orcid - affiliations: - name: Northwestern University family_name: Martin-Harris given_name: Bonnie + id: 0000-0001-7840-3764 identifiers: - - identifier: https://orcid.org/0000-0001-7840-3764 + - identifier: 0000-0001-7840-3764 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Parker given_name: Harrison + id: 0000-0002-0041-2764 identifiers: - - identifier: https://orcid.org/0000-0002-0041-2764 + - identifier: 0000-0002-0041-2764 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Mc Court given_name: "Ruair\xED" + id: 0000-0002-3237-7764 identifiers: - - identifier: https://orcid.org/0000-0002-3237-7764 + - identifier: 0000-0002-3237-7764 scheme: orcid - affiliations: - name: Washington University in Saint Louis @@ -36271,138 +41312,157 @@ - name: University of Tennessee Knoxville family_name: Melcher given_name: Charles + id: 0000-0002-4586-4764 identifiers: - - identifier: https://orcid.org/0000-0002-4586-4764 + - identifier: 0000-0002-4586-4764 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: 180 degrees consulting family_name: Zafari given_name: Setareh + id: 0000-0003-4940-1764 identifiers: - - identifier: https://orcid.org/0000-0003-4940-1764 + - identifier: 0000-0003-4940-1764 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Goedde-Menke given_name: Michael + id: 0000-0001-6558-5765 identifiers: - - identifier: https://orcid.org/0000-0001-6558-5765 + - identifier: 0000-0001-6558-5765 scheme: orcid - affiliations: - name: TU Wien family_name: Kramberger-Kaplan given_name: Christian + id: 0000-0002-2772-3765 identifiers: - - identifier: https://orcid.org/0000-0002-2772-3765 + - identifier: 0000-0002-2772-3765 scheme: orcid - affiliations: - name: Northwestern University family_name: Jacobi given_name: Tonja + id: 0000-0002-5200-5765 identifiers: - - identifier: https://orcid.org/0000-0002-5200-5765 + - identifier: 0000-0002-5200-5765 scheme: orcid - affiliations: - name: "Universit\xE4t Konstanz" - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Jendryczko given_name: David + id: 0000-0002-5984-8765 identifiers: - - identifier: https://orcid.org/0000-0002-5984-8765 + - identifier: 0000-0002-5984-8765 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Applied Sciences and Arts Northwestern Switzerland family_name: Huegli given_name: David + id: 0000-0002-7176-7765 identifiers: - - identifier: https://orcid.org/0000-0002-7176-7765 + - identifier: 0000-0002-7176-7765 scheme: orcid - affiliations: - name: TU Wien family_name: Niel given_name: Johannes + id: 0000-0001-7308-7766 identifiers: - - identifier: https://orcid.org/0000-0001-7308-7766 + - identifier: 0000-0001-7308-7766 scheme: orcid - affiliations: - name: TU Wien family_name: Bisi given_name: Elia + id: 0000-0001-7628-8766 identifiers: - - identifier: https://orcid.org/0000-0001-7628-8766 + - identifier: 0000-0001-7628-8766 scheme: orcid - affiliations: - name: University of Fribourg family_name: Augsburger given_name: Fiona + id: 0000-0001-8357-6766 identifiers: - - identifier: https://orcid.org/0000-0001-8357-6766 + - identifier: 0000-0001-8357-6766 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Lechner given_name: Andreas + id: 0000-0001-9064-5766 identifiers: - - identifier: https://orcid.org/0000-0001-9064-5766 + - identifier: 0000-0001-9064-5766 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Dohmann given_name: Jan Frederik + id: 0000-0001-9870-0766 identifiers: - - identifier: https://orcid.org/0000-0001-9870-0766 + - identifier: 0000-0001-9870-0766 scheme: orcid - affiliations: - name: CERN family_name: Naumann given_name: Axel + id: 0000-0002-4725-0766 identifiers: - - identifier: https://orcid.org/0000-0002-4725-0766 + - identifier: 0000-0002-4725-0766 scheme: orcid - affiliations: - name: TU Wien family_name: Chalupa given_name: Patrick + id: 0000-0002-1059-0767 identifiers: - - identifier: https://orcid.org/0000-0002-1059-0767 + - identifier: 0000-0002-1059-0767 scheme: orcid - affiliations: - name: Northwestern University family_name: Feng given_name: Yuanning + id: 0000-0002-8832-0767 identifiers: - - identifier: https://orcid.org/0000-0002-8832-0767 + - identifier: 0000-0002-8832-0767 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Butterling given_name: Maik + id: 0000-0003-3674-0767 identifiers: - - identifier: https://orcid.org/0000-0003-3674-0767 + - identifier: 0000-0003-3674-0767 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Witz given_name: Christian + id: 0000-0001-5462-5768 identifiers: - - identifier: https://orcid.org/0000-0001-5462-5768 + - identifier: 0000-0001-5462-5768 scheme: orcid - affiliations: - name: Northwestern University family_name: Widmayer given_name: Samuel + id: 0000-0002-1200-4768 identifiers: - - identifier: https://orcid.org/0000-0002-1200-4768 + - identifier: 0000-0002-1200-4768 scheme: orcid - affiliations: - name: TU Wien family_name: Huemer given_name: Florian + id: 0000-0002-2776-7768 identifiers: - - identifier: https://orcid.org/0000-0002-2776-7768 + - identifier: 0000-0002-2776-7768 scheme: orcid - affiliations: - name: Joint Institute for Nuclear Research @@ -36410,321 +41470,366 @@ - name: INFN Sezione di Torino family_name: Parsamyan given_name: Bakur + id: 0000-0003-1501-1768 identifiers: - - identifier: https://orcid.org/0000-0003-1501-1768 + - identifier: 0000-0003-1501-1768 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Sturm given_name: Erica + id: 0000-0003-3613-8768 identifiers: - - identifier: https://orcid.org/0000-0003-3613-8768 + - identifier: 0000-0003-3613-8768 scheme: orcid - affiliations: - name: University of Fribourg family_name: Rodriguez Gutierrez given_name: Daniel + id: 0000-0002-2979-0769 identifiers: - - identifier: https://orcid.org/0000-0002-2979-0769 + - identifier: 0000-0002-2979-0769 scheme: orcid - affiliations: - name: TU Wien family_name: Luhmann given_name: Niklas + id: 0000-0002-3912-0769 identifiers: - - identifier: https://orcid.org/0000-0002-3912-0769 + - identifier: 0000-0002-3912-0769 scheme: orcid - affiliations: - name: TU Wien family_name: Bakali given_name: Emine + id: 0000-0002-5486-5769 identifiers: - - identifier: https://orcid.org/0000-0002-5486-5769 + - identifier: 0000-0002-5486-5769 scheme: orcid - affiliations: - name: Ohio State University - name: California Institute of Technology family_name: Siegal given_name: Dan + id: 0000-0002-6821-2769 identifiers: - - identifier: https://orcid.org/0000-0002-6821-2769 + - identifier: 0000-0002-6821-2769 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Zunk given_name: Bernd Markus + id: 0000-0003-0985-4769 identifiers: - - identifier: https://orcid.org/0000-0003-0985-4769 + - identifier: 0000-0003-0985-4769 scheme: orcid - affiliations: - name: Northwestern University family_name: Akono given_name: Ange-Therese + id: 0000-0003-1892-9769 identifiers: - - identifier: https://orcid.org/0000-0003-1892-9769 + - identifier: 0000-0003-1892-9769 scheme: orcid - affiliations: - name: TU Wien family_name: Zimmermann given_name: Horst + id: 0000-0003-3221-0769 identifiers: - - identifier: https://orcid.org/0000-0003-3221-0769 + - identifier: 0000-0003-3221-0769 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bartlett given_name: Stuart + id: 0000-0001-5680-476X identifiers: - - identifier: https://orcid.org/0000-0001-5680-476X + - identifier: 0000-0001-5680-476X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Dresden" - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Falk given_name: Katerina + id: 0000-0001-5975-776X identifiers: - - identifier: https://orcid.org/0000-0001-5975-776X + - identifier: 0000-0001-5975-776X scheme: orcid - affiliations: - name: University of Fribourg family_name: Bozzini given_name: David + id: 0000-0001-9490-776X identifiers: - - identifier: https://orcid.org/0000-0001-9490-776X + - identifier: 0000-0001-9490-776X scheme: orcid - affiliations: - name: TU Wien - name: Technische Universitat Wien family_name: Serna-Loaiza given_name: Sebastian + id: 0000-0002-2979-476X identifiers: - - identifier: https://orcid.org/0000-0002-2979-476X + - identifier: 0000-0002-2979-476X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Pinayev given_name: Igor + id: 0000-0002-3718-876X identifiers: - - identifier: https://orcid.org/0000-0002-3718-876X + - identifier: 0000-0002-3718-876X scheme: orcid - affiliations: - name: CERN family_name: Martelli given_name: Edoardo + id: 0000-0002-3694-376X identifiers: - - identifier: https://orcid.org/0000-0002-3694-376X + - identifier: 0000-0002-3694-376X scheme: orcid - affiliations: - name: Northwestern University family_name: Chellam given_name: Nikhil + id: 0000-0002-8797-876X identifiers: - - identifier: https://orcid.org/0000-0002-8797-876X + - identifier: 0000-0002-8797-876X scheme: orcid - affiliations: - name: National Institute of Informatics - name: National Institute of Advanced Industrial Science and Technology family_name: Kertkeidkachorn given_name: Natthawut + id: 0000-0003-4527-776X identifiers: - - identifier: https://orcid.org/0000-0003-4527-776X + - identifier: 0000-0003-4527-776X scheme: orcid - affiliations: - name: Northwestern University family_name: Gao given_name: Jian + id: 0000-0001-6659-5770 identifiers: - - identifier: https://orcid.org/0000-0001-6659-5770 + - identifier: 0000-0001-6659-5770 scheme: orcid - affiliations: - name: TU Wien family_name: Wintersberger given_name: Philipp + id: 0000-0001-9287-3770 identifiers: - - identifier: https://orcid.org/0000-0001-9287-3770 + - identifier: 0000-0001-9287-3770 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nano given_name: Adela + id: 0000-0002-1984-5770 identifiers: - - identifier: https://orcid.org/0000-0002-1984-5770 + - identifier: 0000-0002-1984-5770 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schmidt given_name: M. Alexander + id: 0000-0002-5271-7770 identifiers: - - identifier: https://orcid.org/0000-0002-5271-7770 + - identifier: 0000-0002-5271-7770 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Winter given_name: Martin + id: 0000-0002-7778-9770 identifiers: - - identifier: https://orcid.org/0000-0002-7778-9770 + - identifier: 0000-0002-7778-9770 scheme: orcid - affiliations: - name: TU Wien family_name: Lackner given_name: Martin + id: 0000-0003-2170-0770 identifiers: - - identifier: https://orcid.org/0000-0003-2170-0770 + - identifier: 0000-0003-2170-0770 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Skarlat given_name: Olena + id: 0000-0003-2754-7770 identifiers: - - identifier: https://orcid.org/0000-0003-2754-7770 + - identifier: 0000-0003-2754-7770 scheme: orcid - affiliations: - name: TU Wien family_name: Pfusterschmied given_name: Georg + id: 0000-0003-3810-7770 identifiers: - - identifier: https://orcid.org/0000-0003-3810-7770 + - identifier: 0000-0003-3810-7770 scheme: orcid - affiliations: - name: TU Wien family_name: Zia given_name: Muhammad Farooq + id: 0000-0001-8022-7771 identifiers: - - identifier: https://orcid.org/0000-0001-8022-7771 + - identifier: 0000-0001-8022-7771 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Gr\xFCnbichler" given_name: Rudolf + id: 0000-0002-5872-5771 identifiers: - - identifier: https://orcid.org/0000-0002-5872-5771 + - identifier: 0000-0002-5872-5771 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: OUVRARD given_name: Xavier + id: 0000-0003-4054-2771 identifiers: - - identifier: https://orcid.org/0000-0003-4054-2771 + - identifier: 0000-0003-4054-2771 scheme: orcid - affiliations: - name: TU Wien family_name: Ciabattoni given_name: Agata + id: 0000-0001-6947-8772 identifiers: - - identifier: https://orcid.org/0000-0001-6947-8772 + - identifier: 0000-0001-6947-8772 scheme: orcid - affiliations: - name: Northwestern University family_name: Peyton given_name: David + id: 0000-0001-7701-3772 identifiers: - - identifier: https://orcid.org/0000-0001-7701-3772 + - identifier: 0000-0001-7701-3772 scheme: orcid - affiliations: - name: TU Wien family_name: Knezevic given_name: Katarina + id: 0000-0001-7910-7772 identifiers: - - identifier: https://orcid.org/0000-0001-7910-7772 + - identifier: 0000-0001-7910-7772 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Sanz given_name: Wolfgang + id: 0000-0002-5529-6772 identifiers: - - identifier: https://orcid.org/0000-0002-5529-6772 + - identifier: 0000-0002-5529-6772 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Seeliger given_name: Henriette-Juliane + id: 0000-0003-0627-6772 identifiers: - - identifier: https://orcid.org/0000-0003-0627-6772 + - identifier: 0000-0003-0627-6772 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Gonser given_name: Phillipp + id: 0000-0001-8233-4773 identifiers: - - identifier: https://orcid.org/0000-0001-8233-4773 + - identifier: 0000-0001-8233-4773 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cheng given_name: Kai-Wen + id: 0000-0001-9888-9773 identifiers: - - identifier: https://orcid.org/0000-0001-9888-9773 + - identifier: 0000-0001-9888-9773 scheme: orcid - affiliations: - name: TU Wien family_name: Karic given_name: Amel + id: 0000-0002-7338-3773 identifiers: - - identifier: https://orcid.org/0000-0002-7338-3773 + - identifier: 0000-0002-7338-3773 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Grimme given_name: Christian + id: 0000-0002-8608-8773 identifiers: - - identifier: https://orcid.org/0000-0002-8608-8773 + - identifier: 0000-0002-8608-8773 scheme: orcid - affiliations: - name: Northwestern University family_name: Howard given_name: James + id: 0000-0002-9309-3773 identifiers: - - identifier: https://orcid.org/0000-0002-9309-3773 + - identifier: 0000-0002-9309-3773 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Di Iorio given_name: Daniele + id: 0000-0002-9672-9773 identifiers: - - identifier: https://orcid.org/0000-0002-9672-9773 + - identifier: 0000-0002-9672-9773 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: Istituto Italiano di Tecnologia family_name: AKKARAPATTIAKAL KURIAPPAN given_name: JISSY + id: 0000-0003-0355-4773 identifiers: - - identifier: https://orcid.org/0000-0003-0355-4773 + - identifier: 0000-0003-0355-4773 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Passcuzzi given_name: Vincent R. + id: 0000-0003-3167-8773 identifiers: - - identifier: https://orcid.org/0000-0003-3167-8773 + - identifier: 0000-0003-3167-8773 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhai given_name: Zhiyang + id: 0000-0003-3181-1773 identifiers: - - identifier: https://orcid.org/0000-0003-3181-1773 + - identifier: 0000-0003-3181-1773 scheme: orcid - affiliations: - name: University of Bamberg family_name: Henn given_name: Theresa + id: 0000-0001-8318-9774 identifiers: - - identifier: https://orcid.org/0000-0001-8318-9774 + - identifier: 0000-0001-8318-9774 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Riccobene given_name: Giorgio Maria + id: 0000-0002-0600-2774 identifiers: - - identifier: https://orcid.org/0000-0002-0600-2774 + - identifier: 0000-0002-0600-2774 scheme: orcid - affiliations: - name: Northwestern University family_name: Pah given_name: Adam + id: 0000-0002-9892-0774 identifiers: - - identifier: https://orcid.org/0000-0002-9892-0774 + - identifier: 0000-0002-9892-0774 scheme: orcid - affiliations: - name: DEXHELPP @@ -36732,484 +41837,552 @@ - name: dwh GmbH family_name: Popper given_name: Nikolas + id: 0000-0003-4615-2774 identifiers: - - identifier: https://orcid.org/0000-0003-4615-2774 + - identifier: 0000-0003-4615-2774 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Arnold given_name: Andreas M + id: 0000-0001-9236-1775 identifiers: - - identifier: https://orcid.org/0000-0001-9236-1775 + - identifier: 0000-0001-9236-1775 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Gallistl given_name: Jakob + id: 0000-0002-2037-7775 identifiers: - - identifier: https://orcid.org/0000-0002-2037-7775 + - identifier: 0000-0002-2037-7775 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Diaz given_name: Tony + id: 0000-0002-4338-4775 identifiers: - - identifier: https://orcid.org/0000-0002-4338-4775 + - identifier: 0000-0002-4338-4775 scheme: orcid - affiliations: - name: Northwestern University family_name: Schmidt given_name: Tiffany + id: 0000-0002-4791-6775 identifiers: - - identifier: https://orcid.org/0000-0002-4791-6775 + - identifier: 0000-0002-4791-6775 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Meiron given_name: Daniel + id: 0000-0003-0397-3775 identifiers: - - identifier: https://orcid.org/0000-0003-0397-3775 + - identifier: 0000-0003-0397-3775 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: University of Bamberg family_name: Schneider given_name: Tobias Matthias + id: 0000-0003-4014-1775 identifiers: - - identifier: https://orcid.org/0000-0003-4014-1775 + - identifier: 0000-0003-4014-1775 scheme: orcid - affiliations: - name: Northwestern University family_name: Simons given_name: Lacy + id: 0000-0003-4041-6775 identifiers: - - identifier: https://orcid.org/0000-0003-4041-6775 + - identifier: 0000-0003-4041-6775 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Reissig given_name: Falco + id: 0000-0002-5203-0776 identifiers: - - identifier: https://orcid.org/0000-0002-5203-0776 + - identifier: 0000-0002-5203-0776 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schabernack given_name: Jonas + id: 0000-0003-2365-2776 identifiers: - - identifier: https://orcid.org/0000-0003-2365-2776 + - identifier: 0000-0003-2365-2776 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Akhatova given_name: Ardak + id: 0000-0001-6803-5777 identifiers: - - identifier: https://orcid.org/0000-0001-6803-5777 + - identifier: 0000-0001-6803-5777 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Schwabeneder given_name: Daniel + id: 0000-0002-0412-0777 identifiers: - - identifier: https://orcid.org/0000-0002-0412-0777 + - identifier: 0000-0002-0412-0777 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Singh given_name: Abhishek + id: 0000-0002-2394-6777 identifiers: - - identifier: https://orcid.org/0000-0002-2394-6777 + - identifier: 0000-0002-2394-6777 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ribson given_name: Ryan + id: 0000-0002-3755-5777 identifiers: - - identifier: https://orcid.org/0000-0002-3755-5777 + - identifier: 0000-0002-3755-5777 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Bauer given_name: Moritz + id: 0000-0002-5911-3777 identifiers: - - identifier: https://orcid.org/0000-0002-5911-3777 + - identifier: 0000-0002-5911-3777 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Shi given_name: Hai + id: 0000-0002-7237-7777 identifiers: - - identifier: https://orcid.org/0000-0002-7237-7777 + - identifier: 0000-0002-7237-7777 scheme: orcid - affiliations: - name: University of Tokyo - name: California Institute of Technology family_name: Ooguri given_name: Hirosi + id: 0000-0001-6021-3778 identifiers: - - identifier: https://orcid.org/0000-0001-6021-3778 + - identifier: 0000-0001-6021-3778 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hu given_name: Chelsea + id: 0000-0002-2211-1778 identifiers: - - identifier: https://orcid.org/0000-0002-2211-1778 + - identifier: 0000-0002-2211-1778 scheme: orcid - affiliations: - name: TU Wien family_name: Puschner given_name: Peter + id: 0000-0002-2495-0778 identifiers: - - identifier: https://orcid.org/0000-0002-2495-0778 + - identifier: 0000-0002-2495-0778 scheme: orcid - affiliations: - name: Northwestern University family_name: Tunc-Ozcan given_name: Elif + id: 0000-0002-5112-3778 identifiers: - - identifier: https://orcid.org/0000-0002-5112-3778 + - identifier: 0000-0002-5112-3778 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "D\xFCsing" given_name: Katharina + id: 0000-0002-5460-7778 identifiers: - - identifier: https://orcid.org/0000-0002-5460-7778 + - identifier: 0000-0002-5460-7778 scheme: orcid - affiliations: - name: CERN family_name: Lenoir given_name: Gilles + id: 0000-0002-8698-3778 identifiers: - - identifier: https://orcid.org/0000-0002-8698-3778 + - identifier: 0000-0002-8698-3778 scheme: orcid - affiliations: - name: TU Wien family_name: Brunner given_name: David + id: 0000-0003-1263-5778 identifiers: - - identifier: https://orcid.org/0000-0003-1263-5778 + - identifier: 0000-0003-1263-5778 scheme: orcid - affiliations: - name: TU Wien family_name: Scharinger-Urschitz given_name: Georg + id: 0000-0001-6604-5779 identifiers: - - identifier: https://orcid.org/0000-0001-6604-5779 + - identifier: 0000-0001-6604-5779 scheme: orcid - affiliations: - name: Northwestern University family_name: KWON given_name: YONG-JAE + id: 0000-0001-7632-3779 identifiers: - - identifier: https://orcid.org/0000-0001-7632-3779 + - identifier: 0000-0001-7632-3779 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kang given_name: Mihyun + id: 0000-0001-8729-2779 identifiers: - - identifier: https://orcid.org/0000-0001-8729-2779 + - identifier: 0000-0001-8729-2779 scheme: orcid - affiliations: - name: TU Wien family_name: Rupp given_name: Markus + id: 0000-0001-9003-7779 identifiers: - - identifier: https://orcid.org/0000-0001-9003-7779 + - identifier: 0000-0001-9003-7779 scheme: orcid - affiliations: - name: University of Bamberg family_name: Taube given_name: Dorothea + id: 0000-0002-3250-8779 identifiers: - - identifier: https://orcid.org/0000-0002-3250-8779 + - identifier: 0000-0002-3250-8779 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Jansen given_name: Katrin + id: 0000-0002-4533-3779 identifiers: - - identifier: https://orcid.org/0000-0002-4533-3779 + - identifier: 0000-0002-4533-3779 scheme: orcid - affiliations: - name: TU Wien family_name: Raidl given_name: "G\xFCnther" + id: 0000-0002-3293-177X identifiers: - - identifier: https://orcid.org/0000-0002-3293-177X + - identifier: 0000-0002-3293-177X scheme: orcid - affiliations: - name: Northwestern University - name: Fujifilm Electronic Materials USA Inc family_name: White given_name: Janine + id: 0000-0002-7204-477X identifiers: - - identifier: https://orcid.org/0000-0002-7204-477X + - identifier: 0000-0002-7204-477X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Aryanfar given_name: Asghar + id: 0000-0002-8890-077X identifiers: - - identifier: https://orcid.org/0000-0002-8890-077X + - identifier: 0000-0002-8890-077X scheme: orcid - affiliations: - name: University of Fribourg family_name: Wicht given_name: Corentin + id: 0000-0003-0789-277X identifiers: - - identifier: https://orcid.org/0000-0003-0789-277X + - identifier: 0000-0003-0789-277X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Rennecke given_name: Fabian + id: 0000-0003-1448-677X identifiers: - - identifier: https://orcid.org/0000-0003-1448-677X + - identifier: 0000-0003-1448-677X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mendel given_name: Jane + id: 0000-0003-2273-477X identifiers: - - identifier: https://orcid.org/0000-0003-2273-477X + - identifier: 0000-0003-2273-477X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Heuser given_name: Benjamin + id: 0000-0001-6363-1780 identifiers: - - identifier: https://orcid.org/0000-0001-6363-1780 + - identifier: 0000-0001-6363-1780 scheme: orcid - affiliations: - name: Northwestern University family_name: Reguant given_name: Mar + id: 0000-0001-8877-5780 identifiers: - - identifier: https://orcid.org/0000-0001-8877-5780 + - identifier: 0000-0001-8877-5780 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chen given_name: TzuLing + id: 0000-0002-2243-5780 identifiers: - - identifier: https://orcid.org/0000-0002-2243-5780 + - identifier: 0000-0002-2243-5780 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Biffl given_name: Stefan + id: 0000-0002-3413-7780 identifiers: - - identifier: https://orcid.org/0000-0002-3413-7780 + - identifier: 0000-0002-3413-7780 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Le Mouel given_name: Charlotte + id: 0000-0002-5102-5780 identifiers: - - identifier: https://orcid.org/0000-0002-5102-5780 + - identifier: 0000-0002-5102-5780 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: palmieri given_name: vincenzo + id: 0000-0003-1796-0780 identifiers: - - identifier: https://orcid.org/0000-0003-1796-0780 + - identifier: 0000-0003-1796-0780 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Steymans given_name: Hans Ulrich + id: 0000-0003-4585-7780 identifiers: - - identifier: https://orcid.org/0000-0003-4585-7780 + - identifier: 0000-0003-4585-7780 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Maleknejad given_name: Azadeh + id: 0000-0002-1019-8781 identifiers: - - identifier: https://orcid.org/0000-0002-1019-8781 + - identifier: 0000-0002-1019-8781 scheme: orcid - affiliations: - name: TU Wien - name: Energy Economics Group, TU Wien family_name: "Sch\xF6niger" given_name: Franziska + id: 0000-0002-1402-5781 identifiers: - - identifier: https://orcid.org/0000-0002-1402-5781 + - identifier: 0000-0002-1402-5781 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shi given_name: Junhui + id: 0000-0002-5741-2781 identifiers: - - identifier: https://orcid.org/0000-0002-5741-2781 + - identifier: 0000-0002-5741-2781 scheme: orcid - affiliations: - name: TU Wien family_name: Polyushkin given_name: Dmitry + id: 0000-0002-6658-9781 identifiers: - - identifier: https://orcid.org/0000-0002-6658-9781 + - identifier: 0000-0002-6658-9781 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Paolucci given_name: Pierluigi + id: 0000-0002-8773-4781 identifiers: - - identifier: https://orcid.org/0000-0002-8773-4781 + - identifier: 0000-0002-8773-4781 scheme: orcid - affiliations: - name: Northwestern University family_name: Sharpe given_name: Christopher + id: 0000-0003-0519-7781 identifiers: - - identifier: https://orcid.org/0000-0003-0519-7781 + - identifier: 0000-0003-0519-7781 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Kato given_name: Fumihiro + id: 0000-0001-8504-5782 identifiers: - - identifier: https://orcid.org/0000-0001-8504-5782 + - identifier: 0000-0001-8504-5782 scheme: orcid - affiliations: - name: University of Fribourg family_name: "W\xE4lchli" given_name: Michael + id: 0000-0001-9485-7782 identifiers: - - identifier: https://orcid.org/0000-0001-9485-7782 + - identifier: 0000-0001-9485-7782 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Universidade Federal de Mato Grosso do Sul family_name: Martins given_name: Jordan + id: 0000-0002-2120-2782 identifiers: - - identifier: https://orcid.org/0000-0002-2120-2782 + - identifier: 0000-0002-2120-2782 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fultz given_name: Brent + id: 0000-0002-6364-8782 identifiers: - - identifier: https://orcid.org/0000-0002-6364-8782 + - identifier: 0000-0002-6364-8782 scheme: orcid - affiliations: - name: Northwestern University family_name: Lu given_name: Nanxi + id: 0000-0003-0277-4782 identifiers: - - identifier: https://orcid.org/0000-0003-0277-4782 + - identifier: 0000-0003-0277-4782 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Riegert given_name: Sarah + id: 0000-0003-0897-3782 identifiers: - - identifier: https://orcid.org/0000-0003-0897-3782 + - identifier: 0000-0003-0897-3782 scheme: orcid - affiliations: - name: "University of M\xFCnster" - name: Uniwersytet Wroclawski Instytut Matematyczny family_name: Dobrowolski given_name: Jan + id: 0000-0003-3435-4782 identifiers: - - identifier: https://orcid.org/0000-0003-3435-4782 + - identifier: 0000-0003-3435-4782 scheme: orcid - affiliations: - name: University of Fribourg - name: Self employed family_name: Cohen-Blaser given_name: "C\xE9cile" + id: 0000-0001-5918-2783 identifiers: - - identifier: https://orcid.org/0000-0001-5918-2783 + - identifier: 0000-0001-5918-2783 scheme: orcid - affiliations: - name: TU Wien family_name: "Kr\xE4mer" given_name: Christian + id: 0000-0002-1085-7783 identifiers: - - identifier: https://orcid.org/0000-0002-1085-7783 + - identifier: 0000-0002-1085-7783 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Burkhardt given_name: Christoph + id: 0000-0002-6952-5783 identifiers: - - identifier: https://orcid.org/0000-0002-6952-5783 + - identifier: 0000-0002-6952-5783 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Hall given_name: Gregory + id: 0000-0002-8534-9783 identifiers: - - identifier: https://orcid.org/0000-0002-8534-9783 + - identifier: 0000-0002-8534-9783 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gatti given_name: Emma + id: 0000-0003-0914-4783 identifiers: - - identifier: https://orcid.org/0000-0003-0914-4783 + - identifier: 0000-0003-0914-4783 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Reinhardt given_name: Didier + id: 0000-0003-3495-6783 identifiers: - - identifier: https://orcid.org/0000-0003-3495-6783 + - identifier: 0000-0003-3495-6783 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Sampl given_name: Carina + id: 0000-0003-3678-3783 identifiers: - - identifier: https://orcid.org/0000-0003-3678-3783 + - identifier: 0000-0003-3678-3783 scheme: orcid - affiliations: - name: CERN family_name: Pernegger given_name: Heinz + id: 0000-0001-6418-8784 identifiers: - - identifier: https://orcid.org/0000-0001-6418-8784 + - identifier: 0000-0001-6418-8784 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Weinstein given_name: Alan + id: 0000-0002-0928-6784 identifiers: - - identifier: https://orcid.org/0000-0002-0928-6784 + - identifier: 0000-0002-0928-6784 scheme: orcid - affiliations: - name: Northwestern University family_name: Myers given_name: Benjamin + id: 0000-0002-2341-6784 identifiers: - - identifier: https://orcid.org/0000-0002-2341-6784 + - identifier: 0000-0002-2341-6784 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Distel given_name: Bettina + id: 0000-0002-6055-9784 identifiers: - - identifier: https://orcid.org/0000-0002-6055-9784 + - identifier: 0000-0002-6055-9784 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sayers given_name: Jack + id: 0000-0002-8213-3784 identifiers: - - identifier: https://orcid.org/0000-0002-8213-3784 + - identifier: 0000-0002-8213-3784 scheme: orcid - affiliations: - name: TU Wien family_name: Galler given_name: Anna + id: 0000-0002-8596-7784 identifiers: - - identifier: https://orcid.org/0000-0002-8596-7784 + - identifier: 0000-0002-8596-7784 scheme: orcid - affiliations: - name: Vrije Universiteit Amsterdam @@ -37217,195 +42390,222 @@ - name: California Institute of Technology family_name: Zocca given_name: Alessandro + id: 0000-0001-6585-4785 identifiers: - - identifier: https://orcid.org/0000-0001-6585-4785 + - identifier: 0000-0001-6585-4785 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Hossain given_name: Syed Sahil + id: 0000-0001-8271-8785 identifiers: - - identifier: https://orcid.org/0000-0001-8271-8785 + - identifier: 0000-0001-8271-8785 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Gr\xFCneis" given_name: Andreas + id: 0000-0002-4984-7785 identifiers: - - identifier: https://orcid.org/0000-0002-4984-7785 + - identifier: 0000-0002-4984-7785 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Leonhard given_name: Clemens + id: 0000-0002-5659-6785 identifiers: - - identifier: https://orcid.org/0000-0002-5659-6785 + - identifier: 0000-0002-5659-6785 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mafi given_name: Amirhossein + id: 0000-0002-8366-6785 identifiers: - - identifier: https://orcid.org/0000-0002-8366-6785 + - identifier: 0000-0002-8366-6785 scheme: orcid - affiliations: - name: Northwestern University family_name: Greene-Hayes given_name: Ahmad + id: 0000-0002-9117-2785 identifiers: - - identifier: https://orcid.org/0000-0002-9117-2785 + - identifier: 0000-0002-9117-2785 scheme: orcid - affiliations: - name: Northwestern University family_name: Davis given_name: Tracy C. + id: 0000-0003-1706-1785 identifiers: - - identifier: https://orcid.org/0000-0003-1706-1785 + - identifier: 0000-0003-1706-1785 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Steineder given_name: Michael + id: 0000-0003-2223-1785 identifiers: - - identifier: https://orcid.org/0000-0003-2223-1785 + - identifier: 0000-0003-2223-1785 scheme: orcid - affiliations: - name: Northwestern University family_name: Parnell given_name: Euan + id: 0000-0002-2590-2786 identifiers: - - identifier: https://orcid.org/0000-0002-2590-2786 + - identifier: 0000-0002-2590-2786 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Jansen given_name: Nils + id: 0000-0002-3334-7786 identifiers: - - identifier: https://orcid.org/0000-0002-3334-7786 + - identifier: 0000-0002-3334-7786 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Huber given_name: Barbara + id: 0000-0003-2959-2786 identifiers: - - identifier: https://orcid.org/0000-0003-2959-2786 + - identifier: 0000-0003-2959-2786 scheme: orcid - affiliations: - name: Northwestern University family_name: Yin given_name: Hao + id: 0000-0003-4921-9786 identifiers: - - identifier: https://orcid.org/0000-0003-4921-9786 + - identifier: 0000-0003-4921-9786 scheme: orcid - affiliations: - name: TU Wien family_name: Taghizadeh given_name: Leila + id: 0000-0001-6040-1787 identifiers: - - identifier: https://orcid.org/0000-0001-6040-1787 + - identifier: 0000-0001-6040-1787 scheme: orcid - affiliations: - name: CERN - name: University of Malta Faculty of Information and Communications Technology family_name: Grech given_name: Leander + id: 0000-0002-4062-0787 identifiers: - - identifier: https://orcid.org/0000-0002-4062-0787 + - identifier: 0000-0002-4062-0787 scheme: orcid - affiliations: - name: "Julius-Maximilians-Universit\xE4t W\xFCrzburg" - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Scheffner given_name: Katharina + id: 0000-0002-4394-4787 identifiers: - - identifier: https://orcid.org/0000-0002-4394-4787 + - identifier: 0000-0002-4394-4787 scheme: orcid - affiliations: - name: TU Wien - name: University College of Teacher Education Vienna family_name: "J\xE4ggle" given_name: Georg + id: 0000-0002-4354-9787 identifiers: - - identifier: https://orcid.org/0000-0002-4354-9787 + - identifier: 0000-0002-4354-9787 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yook given_name: Karen + id: 0000-0002-4457-6787 identifiers: - - identifier: https://orcid.org/0000-0002-4457-6787 + - identifier: 0000-0002-4457-6787 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Gomera given_name: Jose + id: 0000-0002-7820-7787 identifiers: - - identifier: https://orcid.org/0000-0002-7820-7787 + - identifier: 0000-0002-7820-7787 scheme: orcid - affiliations: - name: TU Wien family_name: Ziegenberg given_name: Daniel + id: 0000-0003-0400-6787 identifiers: - - identifier: https://orcid.org/0000-0003-0400-6787 + - identifier: 0000-0003-0400-6787 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sun given_name: He + id: 0000-0003-1526-6787 identifiers: - - identifier: https://orcid.org/0000-0003-1526-6787 + - identifier: 0000-0003-1526-6787 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Steller given_name: Beate + id: 0000-0001-6014-9788 identifiers: - - identifier: https://orcid.org/0000-0001-6014-9788 + - identifier: 0000-0001-6014-9788 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Zamantzas given_name: Christos + id: 0000-0001-7389-8788 identifiers: - - identifier: https://orcid.org/0000-0001-7389-8788 + - identifier: 0000-0001-7389-8788 scheme: orcid - affiliations: - name: Heidelberg University Hospital - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Dugas given_name: Martin + id: 0000-0001-9740-0788 identifiers: - - identifier: https://orcid.org/0000-0001-9740-0788 + - identifier: 0000-0001-9740-0788 scheme: orcid - affiliations: - name: TU Wien family_name: Park given_name: Kiru + id: 0000-0002-9891-4788 identifiers: - - identifier: https://orcid.org/0000-0002-9891-4788 + - identifier: 0000-0002-9891-4788 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Giunti given_name: Carlo + id: 0000-0003-2281-4788 identifiers: - - identifier: https://orcid.org/0000-0003-2281-4788 + - identifier: 0000-0003-2281-4788 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: mangano given_name: michelangelo + id: 0000-0002-0886-3789 identifiers: - - identifier: https://orcid.org/0000-0002-0886-3789 + - identifier: 0000-0002-0886-3789 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Naserifar given_name: Saber + id: 0000-0002-1069-9789 identifiers: - - identifier: https://orcid.org/0000-0002-1069-9789 + - identifier: 0000-0002-1069-9789 scheme: orcid - affiliations: - name: Northwestern University @@ -37413,580 +42613,661 @@ - name: Department of Veterans Affairs family_name: Gonzalez given_name: Beverly + id: 0000-0002-3007-5789 identifiers: - - identifier: https://orcid.org/0000-0002-3007-5789 + - identifier: 0000-0002-3007-5789 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cagan given_name: David + id: 0000-0002-4719-2789 identifiers: - - identifier: https://orcid.org/0000-0002-4719-2789 + - identifier: 0000-0002-4719-2789 scheme: orcid - affiliations: - name: TU Wien family_name: Niggas given_name: Anna + id: 0000-0002-5838-5789 identifiers: - - identifier: https://orcid.org/0000-0002-5838-5789 + - identifier: 0000-0002-5838-5789 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Xiao-Nan + id: 0000-0002-6719-3789 identifiers: - - identifier: https://orcid.org/0000-0002-6719-3789 + - identifier: 0000-0002-6719-3789 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Berns given_name: Fabian + id: 0000-0002-7033-3789 identifiers: - - identifier: https://orcid.org/0000-0002-7033-3789 + - identifier: 0000-0002-7033-3789 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ko given_name: Jeong Hoon + id: 0000-0003-2000-3789 identifiers: - - identifier: https://orcid.org/0000-0003-2000-3789 + - identifier: 0000-0003-2000-3789 scheme: orcid - affiliations: - name: Northwestern University family_name: Jain given_name: Surbhi + id: 0000-0002-0907-778X identifiers: - - identifier: https://orcid.org/0000-0002-0907-778X + - identifier: 0000-0002-0907-778X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Boden given_name: Stephan + id: 0000-0002-7170-078X identifiers: - - identifier: https://orcid.org/0000-0002-7170-078X + - identifier: 0000-0002-7170-078X scheme: orcid - affiliations: - name: Northwestern University family_name: O'Dwyer given_name: Linda + id: 0000-0003-0400-778X identifiers: - - identifier: https://orcid.org/0000-0003-0400-778X + - identifier: 0000-0003-0400-778X scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Ursprung given_name: Stephan + id: 0000-0003-2476-178X identifiers: - - identifier: https://orcid.org/0000-0003-2476-178X + - identifier: 0000-0003-2476-178X scheme: orcid - affiliations: - name: TU Wien family_name: Kwak given_name: Dohyun + id: 0000-0003-3724-778X identifiers: - - identifier: https://orcid.org/0000-0003-3724-778X + - identifier: 0000-0003-3724-778X scheme: orcid - affiliations: - name: Northwestern University family_name: Beeson given_name: Eric + id: 0000-0001-6859-5790 identifiers: - - identifier: https://orcid.org/0000-0001-6859-5790 + - identifier: 0000-0001-6859-5790 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Weder given_name: Christoph + id: 0000-0001-7183-1790 identifiers: - - identifier: https://orcid.org/0000-0001-7183-1790 + - identifier: 0000-0001-7183-1790 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Niemeyer given_name: Lisa Maria + id: 0000-0001-7648-0790 identifiers: - - identifier: https://orcid.org/0000-0001-7648-0790 + - identifier: 0000-0001-7648-0790 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Dr. Brenn given_name: "G\xFCnter" + id: 0000-0001-7576-0790 identifiers: - - identifier: https://orcid.org/0000-0001-7576-0790 + - identifier: 0000-0001-7576-0790 scheme: orcid - affiliations: - name: Northwestern University family_name: Campbell given_name: Katrina + id: 0000-0002-2566-8790 identifiers: - - identifier: https://orcid.org/0000-0002-2566-8790 + - identifier: 0000-0002-2566-8790 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Huang given_name: Jining + id: 0000-0002-3798-4790 identifiers: - - identifier: https://orcid.org/0000-0002-3798-4790 + - identifier: 0000-0002-3798-4790 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Ostermann given_name: Norbert + id: 0000-0002-5814-4790 identifiers: - - identifier: https://orcid.org/0000-0002-5814-4790 + - identifier: 0000-0002-5814-4790 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Bock given_name: David + id: 0000-0002-2387-7791 identifiers: - - identifier: https://orcid.org/0000-0002-2387-7791 + - identifier: 0000-0002-2387-7791 scheme: orcid - affiliations: - name: "Universit\xE9 de Gen\xE8ve" - name: "Universit\xE9 de Fribourg" family_name: Zimmerli given_name: Virginie + id: 0000-0002-6484-7791 identifiers: - - identifier: https://orcid.org/0000-0002-6484-7791 + - identifier: 0000-0002-6484-7791 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Ehab Samy given_name: Maye + id: 0000-0003-0726-1791 identifiers: - - identifier: https://orcid.org/0000-0003-0726-1791 + - identifier: 0000-0003-0726-1791 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Fritzsche given_name: Barbara + id: 0000-0003-1486-7791 identifiers: - - identifier: https://orcid.org/0000-0003-1486-7791 + - identifier: 0000-0003-1486-7791 scheme: orcid - affiliations: - name: TU Wien family_name: Pistrol given_name: Johannes + id: 0000-0003-4262-2791 identifiers: - - identifier: https://orcid.org/0000-0003-4262-2791 + - identifier: 0000-0003-4262-2791 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Loroch given_name: Dominik + id: 0000-0003-4979-5791 identifiers: - - identifier: https://orcid.org/0000-0003-4979-5791 + - identifier: 0000-0003-4979-5791 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Thoss given_name: Philipp + id: 0000-0002-4672-2792 identifiers: - - identifier: https://orcid.org/0000-0002-4672-2792 + - identifier: 0000-0002-4672-2792 scheme: orcid - affiliations: - name: CERN family_name: Teresi given_name: Daniele + id: 0000-0003-2522-8792 identifiers: - - identifier: https://orcid.org/0000-0003-2522-8792 + - identifier: 0000-0003-2522-8792 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Zelaya-Lainez given_name: Luis + id: 0000-0003-3298-9792 identifiers: - - identifier: https://orcid.org/0000-0003-3298-9792 + - identifier: 0000-0003-3298-9792 scheme: orcid - affiliations: - name: Northwestern University family_name: Levy given_name: Joshua + id: 0000-0001-7573-7793 identifiers: - - identifier: https://orcid.org/0000-0001-7573-7793 + - identifier: 0000-0001-7573-7793 scheme: orcid - affiliations: - name: TU Wien family_name: Melik-Merkumians given_name: Martin + id: 0000-0001-7461-1793 identifiers: - - identifier: https://orcid.org/0000-0001-7461-1793 + - identifier: 0000-0001-7461-1793 scheme: orcid - affiliations: - name: Peter Sercel Research, LLC - name: California Institute of Technology family_name: Sercel given_name: Peter + id: 0000-0002-1734-3793 identifiers: - - identifier: https://orcid.org/0000-0002-1734-3793 + - identifier: 0000-0002-1734-3793 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Cooper given_name: Erica + id: 0000-0002-2978-2793 identifiers: - - identifier: https://orcid.org/0000-0002-2978-2793 + - identifier: 0000-0002-2978-2793 scheme: orcid - affiliations: - name: Deutsches Elektronen-Synchrotron - name: CERN family_name: Rifki given_name: Othmane + id: 0000-0002-9169-0793 identifiers: - - identifier: https://orcid.org/0000-0002-9169-0793 + - identifier: 0000-0002-9169-0793 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Facsko given_name: Stefan + id: 0000-0003-3698-3793 identifiers: - - identifier: https://orcid.org/0000-0003-3698-3793 + - identifier: 0000-0003-3698-3793 scheme: orcid - affiliations: - name: TU Wien - name: ORCID family_name: "Mar\xEDn-Arraiza" given_name: Paloma + id: 0000-0001-7460-7794 identifiers: - - identifier: https://orcid.org/0000-0001-7460-7794 + - identifier: 0000-0001-7460-7794 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Rosakis given_name: Ares + id: 0000-0003-0559-0794 identifiers: - - identifier: https://orcid.org/0000-0003-0559-0794 + - identifier: 0000-0003-0559-0794 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Cappella given_name: Fabio + id: 0000-0003-0900-6794 identifiers: - - identifier: https://orcid.org/0000-0003-0900-6794 + - identifier: 0000-0003-0900-6794 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Knodel given_name: Oliver + id: 0000-0001-8174-7795 identifiers: - - identifier: https://orcid.org/0000-0001-8174-7795 + - identifier: 0000-0001-8174-7795 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: "H\xF8imyr" given_name: Nils + id: 0000-0001-8866-6795 identifiers: - - identifier: https://orcid.org/0000-0001-8866-6795 + - identifier: 0000-0001-8866-6795 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Gonzales given_name: Julirose + id: 0000-0002-5871-6795 identifiers: - - identifier: https://orcid.org/0000-0002-5871-6795 + - identifier: 0000-0002-5871-6795 scheme: orcid - affiliations: - name: Northwestern University family_name: Sauer given_name: Andrew + id: 0000-0002-9268-2795 identifiers: - - identifier: https://orcid.org/0000-0002-9268-2795 + - identifier: 0000-0002-9268-2795 scheme: orcid - affiliations: - name: Northwestern University family_name: Paris given_name: William + id: 0000-0002-3912-1796 identifiers: - - identifier: https://orcid.org/0000-0002-3912-1796 + - identifier: 0000-0002-3912-1796 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Sadowski given_name: Jerzy + id: 0000-0002-4365-7796 identifiers: - - identifier: https://orcid.org/0000-0002-4365-7796 + - identifier: 0000-0002-4365-7796 scheme: orcid - affiliations: - name: Northwestern University - name: Center for Gender and Sexuality Studies family_name: Ramadhan given_name: Febi + id: 0000-0002-5171-0796 identifiers: - - identifier: https://orcid.org/0000-0002-5171-0796 + - identifier: 0000-0002-5171-0796 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Eyser given_name: Oleg + id: 0000-0002-8065-0796 identifiers: - - identifier: https://orcid.org/0000-0002-8065-0796 + - identifier: 0000-0002-8065-0796 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Pommerenke given_name: Hermann W. + id: 0000-0001-8137-3797 identifiers: - - identifier: https://orcid.org/0000-0001-8137-3797 + - identifier: 0000-0001-8137-3797 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Michelis given_name: Stefano + id: 0000-0003-3102-8797 identifiers: - - identifier: https://orcid.org/0000-0003-3102-8797 + - identifier: 0000-0003-3102-8797 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Dohm given_name: Katharina + id: 0000-0003-3409-3797 identifiers: - - identifier: https://orcid.org/0000-0003-3409-3797 + - identifier: 0000-0003-3409-3797 scheme: orcid - affiliations: - name: Northwestern University family_name: Seiler given_name: Jillian + id: 0000-0003-4430-4797 identifiers: - - identifier: https://orcid.org/0000-0003-4430-4797 + - identifier: 0000-0003-4430-4797 scheme: orcid - affiliations: - name: TU Wien family_name: Flicker given_name: Katharina + id: 0000-0001-6040-2798 identifiers: - - identifier: https://orcid.org/0000-0001-6040-2798 + - identifier: 0000-0001-6040-2798 scheme: orcid - affiliations: - name: TU Wien family_name: Leopold given_name: Thomas + id: 0000-0002-1220-9798 identifiers: - - identifier: https://orcid.org/0000-0002-1220-9798 + - identifier: 0000-0002-1220-9798 scheme: orcid - affiliations: - name: Northwestern University family_name: Perron given_name: Nathan + id: 0000-0002-2769-7798 identifiers: - - identifier: https://orcid.org/0000-0002-2769-7798 + - identifier: 0000-0002-2769-7798 scheme: orcid - affiliations: - name: "Universit\xE0 degli Studi di Napoli Federico II" - name: CERN family_name: Gilardi given_name: Antonio + id: 0000-0002-4773-5798 identifiers: - - identifier: https://orcid.org/0000-0002-4773-5798 + - identifier: 0000-0002-4773-5798 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Enzensberger given_name: Horst + id: 0000-0002-6574-9798 identifiers: - - identifier: https://orcid.org/0000-0002-6574-9798 + - identifier: 0000-0002-6574-9798 scheme: orcid - affiliations: - name: Institut CNRS Pauli - name: "Technische Universit\xE4t Wien" family_name: LEVEQUE given_name: Camille + id: 0000-0002-7087-1798 identifiers: - - identifier: https://orcid.org/0000-0002-7087-1798 + - identifier: 0000-0002-7087-1798 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: "Universit\xE0 degli Studi di Milano" family_name: Rossi given_name: Marco + id: 0000-0002-7882-2798 identifiers: - - identifier: https://orcid.org/0000-0002-7882-2798 + - identifier: 0000-0002-7882-2798 scheme: orcid - affiliations: - name: TU Wien family_name: Zwicke given_name: Florian + id: 0000-0002-9805-7798 identifiers: - - identifier: https://orcid.org/0000-0002-9805-7798 + - identifier: 0000-0002-9805-7798 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Bousquenaud given_name: "M\xE9lanie" + id: 0000-0003-0556-0798 identifiers: - - identifier: https://orcid.org/0000-0003-0556-0798 + - identifier: 0000-0003-0556-0798 scheme: orcid - affiliations: - name: TU Wien family_name: "Sj\xF6sten" given_name: Alexander + id: 0000-0001-7620-5799 identifiers: - - identifier: https://orcid.org/0000-0001-7620-5799 + - identifier: 0000-0001-7620-5799 scheme: orcid - affiliations: - name: Northwestern University family_name: McWeeny given_name: Sean + id: 0000-0001-9911-6799 identifiers: - - identifier: https://orcid.org/0000-0001-9911-6799 + - identifier: 0000-0001-9911-6799 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Mohr given_name: Matthias + id: 0000-0002-1205-0799 identifiers: - - identifier: https://orcid.org/0000-0002-1205-0799 + - identifier: 0000-0002-1205-0799 scheme: orcid - affiliations: - name: TU Wien family_name: Vonach given_name: Emanuel + id: 0000-0002-3869-9799 identifiers: - - identifier: https://orcid.org/0000-0002-3869-9799 + - identifier: 0000-0002-3869-9799 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Tomczak given_name: Jan M. + id: 0000-0003-1581-8799 identifiers: - - identifier: https://orcid.org/0000-0003-1581-8799 + - identifier: 0000-0003-1581-8799 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Carboni given_name: Massimo + id: 0000-0003-4296-3799 identifiers: - - identifier: https://orcid.org/0000-0003-4296-3799 + - identifier: 0000-0003-4296-3799 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Fuerk given_name: Peter + id: 0000-0001-5416-579X identifiers: - - identifier: https://orcid.org/0000-0001-5416-579X + - identifier: 0000-0001-5416-579X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Unger given_name: Gerhard + id: 0000-0002-7253-279X identifiers: - - identifier: https://orcid.org/0000-0002-7253-279X + - identifier: 0000-0002-7253-279X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Flyak given_name: Andrew + id: 0000-0002-8722-479X identifiers: - - identifier: https://orcid.org/0000-0002-8722-479X + - identifier: 0000-0002-8722-479X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Budde given_name: Gerrit + id: 0000-0003-0762-779X identifiers: - - identifier: https://orcid.org/0000-0003-0762-779X + - identifier: 0000-0003-0762-779X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Purgstaller given_name: Bettina + id: 0000-0003-1758-579X identifiers: - - identifier: https://orcid.org/0000-0003-1758-579X + - identifier: 0000-0003-1758-579X scheme: orcid - affiliations: - name: University of Fribourg - name: Forest and Fauna Service of the State of Fribourg family_name: "Fragni\xE8re" given_name: Yann + id: 0000-0003-4167-379X identifiers: - - identifier: https://orcid.org/0000-0003-4167-379X + - identifier: 0000-0003-4167-379X scheme: orcid - affiliations: - name: CERN - name: Lisbon University Institute family_name: Fanizza given_name: Giuseppe + id: 0000-0001-5173-3800 identifiers: - - identifier: https://orcid.org/0000-0001-5173-3800 + - identifier: 0000-0001-5173-3800 scheme: orcid - affiliations: - name: TU Wien family_name: Zierler given_name: Katrin + id: 0000-0002-2362-9800 identifiers: - - identifier: https://orcid.org/0000-0002-2362-9800 + - identifier: 0000-0002-2362-9800 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lachner given_name: Johannes + id: 0000-0002-2655-5800 identifiers: - - identifier: https://orcid.org/0000-0002-2655-5800 + - identifier: 0000-0002-2655-5800 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Torrisi given_name: Giuseppe + id: 0000-0002-2819-8800 identifiers: - - identifier: https://orcid.org/0000-0002-2819-8800 + - identifier: 0000-0002-2819-8800 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Granados given_name: Alejandro + id: 0000-0002-6275-9800 identifiers: - - identifier: https://orcid.org/0000-0002-6275-9800 + - identifier: 0000-0002-6275-9800 scheme: orcid - affiliations: - name: Northwestern University family_name: Amin given_name: Mohammed + id: 0000-0002-7801-3800 identifiers: - - identifier: https://orcid.org/0000-0002-7801-3800 + - identifier: 0000-0002-7801-3800 scheme: orcid - affiliations: - name: Harvard Medical School - name: Brookhaven National Laboratory family_name: Reinhold given_name: Vernon + id: 0000-0002-8885-2800 identifiers: - - identifier: https://orcid.org/0000-0002-8885-2800 + - identifier: 0000-0002-8885-2800 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Ciolek given_name: Sebastian + id: 0000-0003-2599-1800 identifiers: - - identifier: https://orcid.org/0000-0003-2599-1800 + - identifier: 0000-0003-2599-1800 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Garjower given_name: Meir + id: 0000-0003-4973-1800 identifiers: - - identifier: https://orcid.org/0000-0003-4973-1800 + - identifier: 0000-0003-4973-1800 scheme: orcid - affiliations: - name: TU Wien family_name: Prendl given_name: Leopold + id: 0000-0001-5721-5801 identifiers: - - identifier: https://orcid.org/0000-0001-5721-5801 + - identifier: 0000-0001-5721-5801 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Akashi given_name: Osamu + id: 0000-0001-8681-7801 identifiers: - - identifier: https://orcid.org/0000-0001-8681-7801 + - identifier: 0000-0001-8681-7801 scheme: orcid - affiliations: - name: Northwestern University family_name: Horn given_name: Michael + id: 0000-0002-4892-6801 identifiers: - - identifier: https://orcid.org/0000-0002-4892-6801 + - identifier: 0000-0002-4892-6801 scheme: orcid - affiliations: - name: University of Oxford @@ -37994,373 +43275,425 @@ - name: Northwestern University family_name: Nobre given_name: Anna Christina + id: 0000-0001-5762-2802 identifiers: - - identifier: https://orcid.org/0000-0001-5762-2802 + - identifier: 0000-0001-5762-2802 scheme: orcid - affiliations: - name: TU Wien family_name: Svozil given_name: Karl + id: 0000-0001-6554-2802 identifiers: - - identifier: https://orcid.org/0000-0001-6554-2802 + - identifier: 0000-0001-6554-2802 scheme: orcid - affiliations: - name: TU Wien family_name: Blaschke given_name: Alfred Paul + id: 0000-0001-8617-5802 identifiers: - - identifier: https://orcid.org/0000-0001-8617-5802 + - identifier: 0000-0001-8617-5802 scheme: orcid - affiliations: - name: Northwestern University family_name: Burghardt given_name: Wesley + id: 0000-0001-8888-3802 identifiers: - - identifier: https://orcid.org/0000-0001-8888-3802 + - identifier: 0000-0001-8888-3802 scheme: orcid - affiliations: - name: Northwestern University family_name: Dave given_name: Shruti + id: 0000-0002-6448-7802 identifiers: - - identifier: https://orcid.org/0000-0002-6448-7802 + - identifier: 0000-0002-6448-7802 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wu given_name: Ze-Bin + id: 0000-0002-7809-6802 identifiers: - - identifier: https://orcid.org/0000-0002-7809-6802 + - identifier: 0000-0002-7809-6802 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Sprenger given_name: Marius + id: 0000-0003-4663-4802 identifiers: - - identifier: https://orcid.org/0000-0003-4663-4802 + - identifier: 0000-0003-4663-4802 scheme: orcid - affiliations: - name: CERN family_name: "\u0160imko" given_name: Tibor + id: 0000-0001-7202-5803 identifiers: - - identifier: https://orcid.org/0000-0001-7202-5803 + - identifier: 0000-0001-7202-5803 scheme: orcid - affiliations: - name: Institute for Systems Biology - name: California Institute of Technology family_name: Lu given_name: Yue + id: 0000-0001-9036-2803 identifiers: - - identifier: https://orcid.org/0000-0001-9036-2803 + - identifier: 0000-0001-9036-2803 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Stephan given_name: Holger + id: 0000-0002-2972-2803 identifiers: - - identifier: https://orcid.org/0000-0002-2972-2803 + - identifier: 0000-0002-2972-2803 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Leung given_name: Shing Chi + id: 0000-0002-4972-3803 identifiers: - - identifier: https://orcid.org/0000-0002-4972-3803 + - identifier: 0000-0002-4972-3803 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Morack given_name: Sara Ellinor + id: 0000-0002-6798-0803 identifiers: - - identifier: https://orcid.org/0000-0002-6798-0803 + - identifier: 0000-0002-6798-0803 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tenney given_name: Samuel + id: 0000-0002-9520-1803 identifiers: - - identifier: https://orcid.org/0000-0002-9520-1803 + - identifier: 0000-0002-9520-1803 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kobler given_name: Erich + id: 0000-0001-5167-4804 identifiers: - - identifier: https://orcid.org/0000-0001-5167-4804 + - identifier: 0000-0001-5167-4804 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Kaplun given_name: Samuele + id: 0000-0001-9855-2804 identifiers: - - identifier: https://orcid.org/0000-0001-9855-2804 + - identifier: 0000-0001-9855-2804 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Follmer given_name: Alec + id: 0000-0002-6244-6804 identifiers: - - identifier: https://orcid.org/0000-0002-6244-6804 + - identifier: 0000-0002-6244-6804 scheme: orcid - affiliations: - name: TU Wien family_name: Kubicek given_name: Markus + id: 0000-0001-6623-9805 identifiers: - - identifier: https://orcid.org/0000-0001-6623-9805 + - identifier: 0000-0001-6623-9805 scheme: orcid - affiliations: - name: TU Wien family_name: Guba given_name: Beate + id: 0000-0002-1106-0805 identifiers: - - identifier: https://orcid.org/0000-0002-1106-0805 + - identifier: 0000-0002-1106-0805 scheme: orcid - affiliations: - name: "Johannes Gutenberg Universit\xE4t Mainz" - name: "Universit\xE9 de Fribourg" family_name: Boeckler given_name: Annette + id: 0000-0002-5159-9805 identifiers: - - identifier: https://orcid.org/0000-0002-5159-9805 + - identifier: 0000-0002-5159-9805 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Diacono given_name: Domenico + id: 0000-0002-8060-5805 identifiers: - - identifier: https://orcid.org/0000-0002-8060-5805 + - identifier: 0000-0002-8060-5805 scheme: orcid - affiliations: - name: California Institute of Technology family_name: George given_name: Collette + id: 0000-0002-8403-2805 identifiers: - - identifier: https://orcid.org/0000-0002-8403-2805 + - identifier: 0000-0002-8403-2805 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Suppan given_name: Thomas + id: 0000-0002-8662-8805 identifiers: - - identifier: https://orcid.org/0000-0002-8662-8805 + - identifier: 0000-0002-8662-8805 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Musumeci given_name: Mario Salvatore + id: 0000-0002-9384-4805 identifiers: - - identifier: https://orcid.org/0000-0002-9384-4805 + - identifier: 0000-0002-9384-4805 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kaneko given_name: Ikuya + id: 0000-0003-4518-1805 identifiers: - - identifier: https://orcid.org/0000-0003-4518-1805 + - identifier: 0000-0003-4518-1805 scheme: orcid - affiliations: - name: RWTH Aachen University - name: TU Wien family_name: Key given_name: Fabian + id: 0000-0001-6622-4806 identifiers: - - identifier: https://orcid.org/0000-0001-6622-4806 + - identifier: 0000-0001-6622-4806 scheme: orcid - affiliations: - name: University of Fribourg family_name: Fazan given_name: Laurence + id: 0000-0002-2981-1806 identifiers: - - identifier: https://orcid.org/0000-0002-2981-1806 + - identifier: 0000-0002-2981-1806 scheme: orcid - affiliations: - name: "Medizinische Fakult\xE4t Carl Gustav Carus" - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kahya given_name: "U\u011Fur" + id: 0000-0002-3708-8806 identifiers: - - identifier: https://orcid.org/0000-0002-3708-8806 + - identifier: 0000-0002-3708-8806 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Ning + id: 0000-0002-8782-7806 identifiers: - - identifier: https://orcid.org/0000-0002-8782-7806 + - identifier: 0000-0002-8782-7806 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: lubrano given_name: pasquale + id: 0000-0003-0221-4806 identifiers: - - identifier: https://orcid.org/0000-0003-0221-4806 + - identifier: 0000-0003-0221-4806 scheme: orcid - affiliations: - name: Northwestern University family_name: LI given_name: YUE + id: 0000-0003-4210-1806 identifiers: - - identifier: https://orcid.org/0000-0003-4210-1806 + - identifier: 0000-0003-4210-1806 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Fukuda given_name: Kensuke + id: 0000-0001-8372-2807 identifiers: - - identifier: https://orcid.org/0000-0001-8372-2807 + - identifier: 0000-0001-8372-2807 scheme: orcid - affiliations: - name: University of Fribourg family_name: Kwon given_name: Nam Hee + id: 0000-0002-4196-1807 identifiers: - - identifier: https://orcid.org/0000-0002-4196-1807 + - identifier: 0000-0002-4196-1807 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Galli given_name: Luca + id: 0000-0003-0147-7807 identifiers: - - identifier: https://orcid.org/0000-0003-0147-7807 + - identifier: 0000-0003-0147-7807 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Scheiner given_name: Stefan + id: 0000-0003-1078-7807 identifiers: - - identifier: https://orcid.org/0000-0003-1078-7807 + - identifier: 0000-0003-1078-7807 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Bolhar-Nordenkampf given_name: Markus + id: 0000-0003-1639-6807 identifiers: - - identifier: https://orcid.org/0000-0003-1639-6807 + - identifier: 0000-0003-1639-6807 scheme: orcid - affiliations: - name: Georgetown University - name: "Universit\xE9 de Fribourg" family_name: Werro given_name: Franz + id: 0000-0003-3256-4807 identifiers: - - identifier: https://orcid.org/0000-0003-3256-4807 + - identifier: 0000-0003-3256-4807 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schulte-Merker given_name: Stefan + id: 0000-0003-3617-8807 identifiers: - - identifier: https://orcid.org/0000-0003-3617-8807 + - identifier: 0000-0003-3617-8807 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Nardi given_name: Enrico + id: 0000-0001-7165-3808 identifiers: - - identifier: https://orcid.org/0000-0001-7165-3808 + - identifier: 0000-0001-7165-3808 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Riener given_name: Martin + id: 0000-0001-8836-7808 identifiers: - - identifier: https://orcid.org/0000-0001-8836-7808 + - identifier: 0000-0001-8836-7808 scheme: orcid - affiliations: - name: Northwestern University family_name: Vaaga given_name: Christopher + id: 0000-0001-9777-3808 identifiers: - - identifier: https://orcid.org/0000-0001-9777-3808 + - identifier: 0000-0001-9777-3808 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Neuber given_name: Christin + id: 0000-0002-0646-5808 identifiers: - - identifier: https://orcid.org/0000-0002-0646-5808 + - identifier: 0000-0002-0646-5808 scheme: orcid - affiliations: - name: CERN family_name: Buffat given_name: Xavier + id: 0000-0002-2338-8808 identifiers: - - identifier: https://orcid.org/0000-0002-2338-8808 + - identifier: 0000-0002-2338-8808 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Pattammattel given_name: Ajith + id: 0000-0002-5956-7808 identifiers: - - identifier: https://orcid.org/0000-0002-5956-7808 + - identifier: 0000-0002-5956-7808 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lazzarini given_name: Albert + id: 0000-0002-5993-8808 identifiers: - - identifier: https://orcid.org/0000-0002-5993-8808 + - identifier: 0000-0002-5993-8808 scheme: orcid - affiliations: - name: TU Wien family_name: Fuger given_name: Christoph + id: 0000-0003-2685-4808 identifiers: - - identifier: https://orcid.org/0000-0003-2685-4808 + - identifier: 0000-0003-2685-4808 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: Mayflower GmbH family_name: Hallmann given_name: Daniel + id: 0000-0003-3324-5808 identifiers: - - identifier: https://orcid.org/0000-0003-3324-5808 + - identifier: 0000-0003-3324-5808 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: D'Agostino given_name: Grazia + id: 0000-0003-4946-6808 identifiers: - - identifier: https://orcid.org/0000-0003-4946-6808 + - identifier: 0000-0003-4946-6808 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Gerbeth given_name: Gunter + id: 0000-0001-7095-3809 identifiers: - - identifier: https://orcid.org/0000-0001-7095-3809 + - identifier: 0000-0001-7095-3809 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Zapf given_name: Fabian + id: 0000-0001-7942-1809 identifiers: - - identifier: https://orcid.org/0000-0001-7942-1809 + - identifier: 0000-0001-7942-1809 scheme: orcid - affiliations: - name: Austrian Center for Digital Production - name: TU Wien family_name: Etz given_name: Dieter + id: 0000-0002-0067-3809 identifiers: - - identifier: https://orcid.org/0000-0002-0067-3809 + - identifier: 0000-0002-0067-3809 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Cai given_name: Yingqi + id: 0000-0002-0357-5809 identifiers: - - identifier: https://orcid.org/0000-0002-0357-5809 + - identifier: 0000-0002-0357-5809 scheme: orcid - affiliations: - name: University of Bamberg family_name: Mundt given_name: Philipp + id: 0000-0002-4106-1809 identifiers: - - identifier: https://orcid.org/0000-0002-4106-1809 + - identifier: 0000-0002-4106-1809 scheme: orcid - affiliations: - name: Herbarium of the Northwestern Luzon Philippines (HNUL) @@ -38368,222 +43701,253 @@ - name: Northwestern University Ecological Park & Botanic Gardens (NUEBG) family_name: Calaramo given_name: Michael + id: 0000-0003-3400-6809 identifiers: - - identifier: https://orcid.org/0000-0003-3400-6809 + - identifier: 0000-0003-3400-6809 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Frank given_name: Franziska + id: 0000-0001-5495-780X identifiers: - - identifier: https://orcid.org/0000-0001-5495-780X + - identifier: 0000-0001-5495-780X scheme: orcid - affiliations: - name: Northwestern University family_name: Dunne given_name: Sara + id: 0000-0002-0273-680X identifiers: - - identifier: https://orcid.org/0000-0002-0273-680X + - identifier: 0000-0002-0273-680X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fu given_name: Gregory + id: 0000-0002-0927-680X identifiers: - - identifier: https://orcid.org/0000-0002-0927-680X + - identifier: 0000-0002-0927-680X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "Schm\xF6lzer" given_name: Astrid + id: 0000-0002-6302-980X identifiers: - - identifier: https://orcid.org/0000-0002-6302-980X + - identifier: 0000-0002-6302-980X scheme: orcid - affiliations: - name: TU Wien family_name: Achleitner given_name: Franz + id: 0000-0002-9306-880X identifiers: - - identifier: https://orcid.org/0000-0002-9306-880X + - identifier: 0000-0002-9306-880X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bhaskaran given_name: Lakshmi + id: 0000-0003-1360-480X identifiers: - - identifier: https://orcid.org/0000-0003-1360-480X + - identifier: 0000-0003-1360-480X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Mennuni given_name: Rosario + id: 0000-0003-2282-680X identifiers: - - identifier: https://orcid.org/0000-0003-2282-680X + - identifier: 0000-0003-2282-680X scheme: orcid - affiliations: - name: University of Fribourg family_name: Massa given_name: Francesco + id: 0000-0003-2218-080X identifiers: - - identifier: https://orcid.org/0000-0003-2218-080X + - identifier: 0000-0003-2218-080X scheme: orcid - affiliations: - name: University of Fribourg family_name: Geisler given_name: Markus + id: 0000-0002-6641-5810 identifiers: - - identifier: https://orcid.org/0000-0002-6641-5810 + - identifier: 0000-0002-6641-5810 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Massolle given_name: Anja + id: 0000-0002-8195-7810 identifiers: - - identifier: https://orcid.org/0000-0002-8195-7810 + - identifier: 0000-0002-8195-7810 scheme: orcid - affiliations: - name: Northwestern University family_name: Guo given_name: Qing-Hui + id: 0000-0002-9946-0810 identifiers: - - identifier: https://orcid.org/0000-0002-9946-0810 + - identifier: 0000-0002-9946-0810 scheme: orcid - affiliations: - name: CERN family_name: van Herwijnen given_name: Eric + id: 0000-0001-8807-8811 identifiers: - - identifier: https://orcid.org/0000-0001-8807-8811 + - identifier: 0000-0001-8807-8811 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Scheffold given_name: Frank + id: 0000-0002-0567-5811 identifiers: - - identifier: https://orcid.org/0000-0002-0567-5811 + - identifier: 0000-0002-0567-5811 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Penthor given_name: Stefan + id: 0000-0002-1989-0811 identifiers: - - identifier: https://orcid.org/0000-0002-1989-0811 + - identifier: 0000-0002-1989-0811 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Lefevre given_name: Thibaut + id: 0000-0002-2976-5811 identifiers: - - identifier: https://orcid.org/0000-0002-2976-5811 + - identifier: 0000-0002-2976-5811 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Frosio given_name: Dr Thomas + id: 0000-0002-3430-2811 identifiers: - - identifier: https://orcid.org/0000-0002-3430-2811 + - identifier: 0000-0002-3430-2811 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Pereira given_name: Carlota + id: 0000-0002-3813-5811 identifiers: - - identifier: https://orcid.org/0000-0002-3813-5811 + - identifier: 0000-0002-3813-5811 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: chai given_name: jin + id: 0000-0002-4760-5811 identifiers: - - identifier: https://orcid.org/0000-0002-4760-5811 + - identifier: 0000-0002-4760-5811 scheme: orcid - affiliations: - name: TU Wien - name: Utrecht University family_name: Baumgartner given_name: Bettina + id: 0000-0002-9136-6811 identifiers: - - identifier: https://orcid.org/0000-0002-9136-6811 + - identifier: 0000-0002-9136-6811 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Thompson given_name: Andrew + id: 0000-0003-0322-4811 identifiers: - - identifier: https://orcid.org/0000-0003-0322-4811 + - identifier: 0000-0003-0322-4811 scheme: orcid - affiliations: - name: Austrian Excellence Center for Tribology (AC2T research GmbH) - name: "Technische Universit\xE4t Wien" family_name: Vernes given_name: "Andr\xE1s" + id: 0000-0003-2750-9811 identifiers: - - identifier: https://orcid.org/0000-0003-2750-9811 + - identifier: 0000-0003-2750-9811 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Scholz given_name: Johannes + id: 0000-0001-6974-3812 identifiers: - - identifier: https://orcid.org/0000-0001-6974-3812 + - identifier: 0000-0001-6974-3812 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bruck given_name: Jehoshua + id: 0000-0001-8474-0812 identifiers: - - identifier: https://orcid.org/0000-0001-8474-0812 + - identifier: 0000-0001-8474-0812 scheme: orcid - affiliations: - name: CERN - name: Austrian Academy of Sciences family_name: Wulz given_name: Claudia-Elisabeth + id: 0000-0001-9226-5812 identifiers: - - identifier: https://orcid.org/0000-0001-9226-5812 + - identifier: 0000-0001-9226-5812 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Thieberger given_name: Peter + id: 0000-0002-2415-9812 identifiers: - - identifier: https://orcid.org/0000-0002-2415-9812 + - identifier: 0000-0002-2415-9812 scheme: orcid - affiliations: - name: University of Manchester - name: European Organization for Nuclear Research family_name: Fitzpatrick given_name: Conor + id: 0000-0003-3674-0812 identifiers: - - identifier: https://orcid.org/0000-0003-3674-0812 + - identifier: 0000-0003-3674-0812 scheme: orcid - affiliations: - name: Northwestern University family_name: Hao given_name: Pengxiao + id: 0000-0003-4880-5812 identifiers: - - identifier: https://orcid.org/0000-0003-4880-5812 + - identifier: 0000-0003-4880-5812 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: von Thaler given_name: Anna-Katharina + id: 0000-0001-8161-5813 identifiers: - - identifier: https://orcid.org/0000-0001-8161-5813 + - identifier: 0000-0001-8161-5813 scheme: orcid - affiliations: - name: TU Wien family_name: Huber given_name: Florian + id: 0000-0001-8274-9813 identifiers: - - identifier: https://orcid.org/0000-0001-8274-9813 + - identifier: 0000-0001-8274-9813 scheme: orcid - affiliations: - name: CERN family_name: Forster given_name: Richard + id: 0000-0002-5320-1813 identifiers: - - identifier: https://orcid.org/0000-0002-5320-1813 + - identifier: 0000-0002-5320-1813 scheme: orcid - affiliations: - name: Loma Linda University @@ -38592,415 +43956,473 @@ - name: City of Hope family_name: Jeppson given_name: John + id: 0000-0002-9669-0813 identifiers: - - identifier: https://orcid.org/0000-0002-9669-0813 + - identifier: 0000-0002-9669-0813 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wrublewski given_name: Donna + id: 0000-0003-0248-0813 identifiers: - - identifier: https://orcid.org/0000-0003-0248-0813 + - identifier: 0000-0003-0248-0813 scheme: orcid - affiliations: - name: University of Hafr Al-Batin - name: Brookhaven National Laboratory family_name: Gul given_name: Rubi + id: 0000-0003-3741-3813 identifiers: - - identifier: https://orcid.org/0000-0003-3741-3813 + - identifier: 0000-0003-3741-3813 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Giacomini given_name: Francesco + id: 0000-0002-3129-2814 identifiers: - - identifier: https://orcid.org/0000-0002-3129-2814 + - identifier: 0000-0002-3129-2814 scheme: orcid - affiliations: - name: TU Wien family_name: Gritsch given_name: Philipp + id: 0000-0002-6743-9814 identifiers: - - identifier: https://orcid.org/0000-0002-6743-9814 + - identifier: 0000-0002-6743-9814 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Caravita given_name: Ruggero + id: 0000-0002-8189-8814 identifiers: - - identifier: https://orcid.org/0000-0002-8189-8814 + - identifier: 0000-0002-8189-8814 scheme: orcid - affiliations: - name: TU Wien family_name: Schuster given_name: Franz + id: 0000-0003-0184-4814 identifiers: - - identifier: https://orcid.org/0000-0003-0184-4814 + - identifier: 0000-0003-0184-4814 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Hofer given_name: Matthias + id: 0000-0003-2029-5814 identifiers: - - identifier: https://orcid.org/0000-0003-2029-5814 + - identifier: 0000-0003-2029-5814 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Rolker given_name: Christof + id: 0000-0003-2524-8814 identifiers: - - identifier: https://orcid.org/0000-0003-2524-8814 + - identifier: 0000-0003-2524-8814 scheme: orcid - affiliations: - name: HET-PRO - name: "Universit\xE9 de Fribourg" family_name: Morgan given_name: James Maurice + id: 0000-0001-5168-3815 identifiers: - - identifier: https://orcid.org/0000-0001-5168-3815 + - identifier: 0000-0001-5168-3815 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Uttenthaler given_name: Stefan + id: 0000-0002-0055-3815 identifiers: - - identifier: https://orcid.org/0000-0002-0055-3815 + - identifier: 0000-0002-0055-3815 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: de Angelis given_name: Giacomo + id: 0000-0002-0506-3815 identifiers: - - identifier: https://orcid.org/0000-0002-0506-3815 + - identifier: 0000-0002-0506-3815 scheme: orcid - affiliations: - name: Northwestern University family_name: Lai given_name: Cheng-Tsung + id: 0000-0002-1192-2815 identifiers: - - identifier: https://orcid.org/0000-0002-1192-2815 + - identifier: 0000-0002-1192-2815 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Ulbrich-vom Ende given_name: Achim + id: 0000-0002-6509-0815 identifiers: - - identifier: https://orcid.org/0000-0002-6509-0815 + - identifier: 0000-0002-6509-0815 scheme: orcid - affiliations: - name: California Institute of Technology family_name: rishi given_name: varun + id: 0000-0003-0317-3815 identifiers: - - identifier: https://orcid.org/0000-0003-0317-3815 + - identifier: 0000-0003-0317-3815 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Chiarelli given_name: Giorgio + id: 0000-0001-9851-4816 identifiers: - - identifier: https://orcid.org/0000-0001-9851-4816 + - identifier: 0000-0001-9851-4816 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Storz given_name: Jakob + id: 0000-0002-3755-2816 identifiers: - - identifier: https://orcid.org/0000-0002-3755-2816 + - identifier: 0000-0002-3755-2816 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Leithner given_name: Thomas + id: 0000-0002-5250-9816 identifiers: - - identifier: https://orcid.org/0000-0002-5250-9816 + - identifier: 0000-0002-5250-9816 scheme: orcid - affiliations: - name: TU Wien family_name: Mueller given_name: Christian + id: 0000-0002-9240-4816 identifiers: - - identifier: https://orcid.org/0000-0002-9240-4816 + - identifier: 0000-0002-9240-4816 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Khatri given_name: Ghanshyam + id: 0000-0001-8901-3817 identifiers: - - identifier: https://orcid.org/0000-0001-8901-3817 + - identifier: 0000-0001-8901-3817 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Groneberg given_name: Elena + id: 0000-0002-1423-1817 identifiers: - - identifier: https://orcid.org/0000-0002-1423-1817 + - identifier: 0000-0002-1423-1817 scheme: orcid - affiliations: - name: Vrije Universiteit Amsterdam - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kleber given_name: Kristin + id: 0000-0002-5514-8817 identifiers: - - identifier: https://orcid.org/0000-0002-5514-8817 + - identifier: 0000-0002-5514-8817 scheme: orcid - affiliations: - name: University of Bamberg family_name: Ortlieb given_name: Stefan Andreas + id: 0000-0002-6941-9817 identifiers: - - identifier: https://orcid.org/0000-0002-6941-9817 + - identifier: 0000-0002-6941-9817 scheme: orcid - affiliations: - name: Northwestern University family_name: Abedini Dereshgi given_name: Sina + id: 0000-0003-2929-0817 identifiers: - - identifier: https://orcid.org/0000-0003-2929-0817 + - identifier: 0000-0003-2929-0817 scheme: orcid - affiliations: - name: Northwestern University family_name: Contreras given_name: Ely + id: 0000-0003-3684-5817 identifiers: - - identifier: https://orcid.org/0000-0003-3684-5817 + - identifier: 0000-0003-3684-5817 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lobo given_name: Ana + id: 0000-0003-3862-1817 identifiers: - - identifier: https://orcid.org/0000-0003-3862-1817 + - identifier: 0000-0003-3862-1817 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Wagner given_name: Philipp + id: 0000-0003-3926-1817 identifiers: - - identifier: https://orcid.org/0000-0003-3926-1817 + - identifier: 0000-0003-3926-1817 scheme: orcid - affiliations: - name: Robert H. Lurie Comprehensive Cancer Center - name: Northwestern University family_name: Backman given_name: Vadim + id: 0000-0003-1981-1818 identifiers: - - identifier: https://orcid.org/0000-0003-1981-1818 + - identifier: 0000-0003-1981-1818 scheme: orcid - affiliations: - name: Northwestern University family_name: Rivera given_name: Adovich + id: 0000-0003-2533-0818 identifiers: - - identifier: https://orcid.org/0000-0003-2533-0818 + - identifier: 0000-0003-2533-0818 scheme: orcid - affiliations: - name: Northwestern University family_name: Hartline given_name: Jason + id: 0000-0001-5505-6819 identifiers: - - identifier: https://orcid.org/0000-0001-5505-6819 + - identifier: 0000-0001-5505-6819 scheme: orcid - affiliations: - name: TU Wien family_name: Weiss given_name: Victor + id: 0000-0002-0056-6819 identifiers: - - identifier: https://orcid.org/0000-0002-0056-6819 + - identifier: 0000-0002-0056-6819 scheme: orcid - affiliations: - name: Northwestern University family_name: Majors given_name: Catherine + id: 0000-0002-5741-5819 identifiers: - - identifier: https://orcid.org/0000-0002-5741-5819 + - identifier: 0000-0002-5741-5819 scheme: orcid - affiliations: - name: University of Bamberg family_name: Heidenreich given_name: Anja + id: 0000-0002-8711-2819 identifiers: - - identifier: https://orcid.org/0000-0002-8711-2819 + - identifier: 0000-0002-8711-2819 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chabaud given_name: Ulysse + id: 0000-0003-0135-9819 identifiers: - - identifier: https://orcid.org/0000-0003-0135-9819 + - identifier: 0000-0003-0135-9819 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: E N Maia given_name: "In\xE1" + id: 0000-0003-2310-1819 identifiers: - - identifier: https://orcid.org/0000-0003-2310-1819 + - identifier: 0000-0003-2310-1819 scheme: orcid - affiliations: - name: Northwestern University family_name: Shen given_name: Meng + id: 0000-0001-5431-381X identifiers: - - identifier: https://orcid.org/0000-0001-5431-381X + - identifier: 0000-0001-5431-381X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Lauret given_name: Jerome + id: 0000-0002-1758-081X identifiers: - - identifier: https://orcid.org/0000-0002-1758-081X + - identifier: 0000-0002-1758-081X scheme: orcid - affiliations: - name: University of Fribourg family_name: Young given_name: Ashley + id: 0000-0002-7337-181X identifiers: - - identifier: https://orcid.org/0000-0002-7337-181X + - identifier: 0000-0002-7337-181X scheme: orcid - affiliations: - name: MilliporeSigma - name: Northwestern University family_name: Zhou given_name: Xiaozhu + id: 0000-0002-9606-381X identifiers: - - identifier: https://orcid.org/0000-0002-9606-381X + - identifier: 0000-0002-9606-381X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Naisson given_name: Pierre + id: 0000-0003-2636-581X identifiers: - - identifier: https://orcid.org/0000-0003-2636-581X + - identifier: 0000-0003-2636-581X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hildemann given_name: Moritz + id: 0000-0001-6520-8820 identifiers: - - identifier: https://orcid.org/0000-0001-6520-8820 + - identifier: 0000-0001-6520-8820 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Yao + id: 0000-0001-9314-5820 identifiers: - - identifier: https://orcid.org/0000-0001-9314-5820 + - identifier: 0000-0001-9314-5820 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Haselow given_name: Alexander + id: 0000-0002-7278-3820 identifiers: - - identifier: https://orcid.org/0000-0002-7278-3820 + - identifier: 0000-0002-7278-3820 scheme: orcid - affiliations: - name: University of Fribourg family_name: Pincay given_name: Jhonny + id: 0000-0003-2045-8820 identifiers: - - identifier: https://orcid.org/0000-0003-2045-8820 + - identifier: 0000-0003-2045-8820 scheme: orcid - affiliations: - name: Northwestern University family_name: Kazem-Rostami given_name: Masoud + id: 0000-0003-4821-5820 identifiers: - - identifier: https://orcid.org/0000-0003-4821-5820 + - identifier: 0000-0003-4821-5820 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Kaltenegger given_name: Martin + id: 0000-0001-6514-8821 identifiers: - - identifier: https://orcid.org/0000-0001-6514-8821 + - identifier: 0000-0001-6514-8821 scheme: orcid - affiliations: - name: TU Wien family_name: Dustdar given_name: Schahram + id: 0000-0001-6872-8821 identifiers: - - identifier: https://orcid.org/0000-0001-6872-8821 + - identifier: 0000-0001-6872-8821 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: De Salvo given_name: Alessandro + id: 0000-0001-8099-7821 identifiers: - - identifier: https://orcid.org/0000-0001-8099-7821 + - identifier: 0000-0001-8099-7821 scheme: orcid - affiliations: - name: TU Wien family_name: Dumss given_name: Stefan + id: 0000-0001-8679-0821 identifiers: - - identifier: https://orcid.org/0000-0001-8679-0821 + - identifier: 0000-0001-8679-0821 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Li given_name: Shan + id: 0000-0002-0829-1821 identifiers: - - identifier: https://orcid.org/0000-0002-0829-1821 + - identifier: 0000-0002-0829-1821 scheme: orcid - affiliations: - name: Northwestern University family_name: Lauing given_name: Kristen + id: 0000-0002-4408-1821 identifiers: - - identifier: https://orcid.org/0000-0002-4408-1821 + - identifier: 0000-0002-4408-1821 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Weinert given_name: Sabine + id: 0000-0002-8341-9821 identifiers: - - identifier: https://orcid.org/0000-0002-8341-9821 + - identifier: 0000-0002-8341-9821 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Beauchamp given_name: Jesse + id: 0000-0001-8839-4822 identifiers: - - identifier: https://orcid.org/0000-0001-8839-4822 + - identifier: 0000-0001-8839-4822 scheme: orcid - affiliations: - name: European Commission Joint Research Centre - name: "Technische Universit\xE4t Wien" family_name: Hannibal given_name: Glenda + id: 0000-0002-1136-3822 identifiers: - - identifier: https://orcid.org/0000-0002-1136-3822 + - identifier: 0000-0002-1136-3822 scheme: orcid - affiliations: - name: Research Center Pharmaceutical Engineering GmbH - name: Graz University of Technology family_name: Khinast given_name: Johannes + id: 0000-0002-2076-1822 identifiers: - - identifier: https://orcid.org/0000-0002-2076-1822 + - identifier: 0000-0002-2076-1822 scheme: orcid - affiliations: - name: Northwestern University family_name: Hagan given_name: John + id: 0000-0002-4262-9822 identifiers: - - identifier: https://orcid.org/0000-0002-4262-9822 + - identifier: 0000-0002-4262-9822 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Westphal given_name: Michael + id: 0000-0002-9722-4822 identifiers: - - identifier: https://orcid.org/0000-0002-9722-4822 + - identifier: 0000-0002-9722-4822 scheme: orcid - affiliations: - name: TU Wien family_name: V. D. dos Santos given_name: A. Catarina + id: 0000-0001-6342-2823 identifiers: - - identifier: https://orcid.org/0000-0001-6342-2823 + - identifier: 0000-0001-6342-2823 scheme: orcid - affiliations: - name: Indian Institute of Technology Guwahati @@ -39011,50 +44433,57 @@ - name: Sardar Patel Renewable Energy Research Institute family_name: Kumar given_name: Adepu Kiran + id: 0000-0001-6612-1823 identifiers: - - identifier: https://orcid.org/0000-0001-6612-1823 + - identifier: 0000-0001-6612-1823 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schroeder given_name: Svea + id: 0000-0002-1117-2823 identifiers: - - identifier: https://orcid.org/0000-0002-1117-2823 + - identifier: 0000-0002-1117-2823 scheme: orcid - affiliations: - name: Northwestern University family_name: Ebels Duggan given_name: Sean + id: 0000-0002-5397-0823 identifiers: - - identifier: https://orcid.org/0000-0002-5397-0823 + - identifier: 0000-0002-5397-0823 scheme: orcid - affiliations: - name: TU Wien family_name: Pech given_name: Sebastian + id: 0000-0002-8415-2823 identifiers: - - identifier: https://orcid.org/0000-0002-8415-2823 + - identifier: 0000-0002-8415-2823 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yang given_name: Daryl + id: 0000-0003-1705-7823 identifiers: - - identifier: https://orcid.org/0000-0003-1705-7823 + - identifier: 0000-0003-1705-7823 scheme: orcid - affiliations: - name: Northwestern University family_name: Chang given_name: Alexander + id: 0000-0001-6198-1824 identifiers: - - identifier: https://orcid.org/0000-0001-6198-1824 + - identifier: 0000-0001-6198-1824 scheme: orcid - affiliations: - name: Northwestern University family_name: Terpstra given_name: Taco + id: 0000-0002-1319-8824 identifiers: - - identifier: https://orcid.org/0000-0002-1319-8824 + - identifier: 0000-0002-1319-8824 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" @@ -39062,248 +44491,283 @@ - name: Asha kiran hospital family_name: Kattula given_name: Deepthi + id: 0000-0002-3608-2824 identifiers: - - identifier: https://orcid.org/0000-0002-3608-2824 + - identifier: 0000-0002-3608-2824 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Miller given_name: David + id: 0000-0002-4560-8824 identifiers: - - identifier: https://orcid.org/0000-0002-4560-8824 + - identifier: 0000-0002-4560-8824 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Fahmy given_name: Karim + id: 0000-0002-8752-5824 identifiers: - - identifier: https://orcid.org/0000-0002-8752-5824 + - identifier: 0000-0002-8752-5824 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Samad given_name: Fabian + id: 0000-0002-9971-0824 identifiers: - - identifier: https://orcid.org/0000-0002-9971-0824 + - identifier: 0000-0002-9971-0824 scheme: orcid - affiliations: - name: Northwestern University family_name: Azcorra given_name: Maite + id: 0000-0002-2919-3825 identifiers: - - identifier: https://orcid.org/0000-0002-2919-3825 + - identifier: 0000-0002-2919-3825 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhang given_name: Honghu + id: 0000-0003-1784-7825 identifiers: - - identifier: https://orcid.org/0000-0003-1784-7825 + - identifier: 0000-0003-1784-7825 scheme: orcid - affiliations: - name: University of Bamberg family_name: Heyder given_name: Teresa + id: 0000-0003-2164-3825 identifiers: - - identifier: https://orcid.org/0000-0003-2164-3825 + - identifier: 0000-0003-2164-3825 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Quante given_name: Michael + id: 0000-0001-6294-9826 identifiers: - - identifier: https://orcid.org/0000-0001-6294-9826 + - identifier: 0000-0001-6294-9826 scheme: orcid - affiliations: - name: Northwestern University - name: Benedictine University family_name: Lin given_name: Annie + id: 0000-0002-0045-8826 identifiers: - - identifier: https://orcid.org/0000-0002-0045-8826 + - identifier: 0000-0002-0045-8826 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Chen given_name: Samuel Yen-Chi + id: 0000-0003-0114-4826 identifiers: - - identifier: https://orcid.org/0000-0003-0114-4826 + - identifier: 0000-0003-0114-4826 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Diwan given_name: Milind + id: 0000-0001-7194-5827 identifiers: - - identifier: https://orcid.org/0000-0001-7194-5827 + - identifier: 0000-0001-7194-5827 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wiggins given_name: Danielle + id: 0000-0001-8457-8827 identifiers: - - identifier: https://orcid.org/0000-0001-8457-8827 + - identifier: 0000-0001-8457-8827 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Dzudzek given_name: Iris + id: 0000-0003-1232-2827 identifiers: - - identifier: https://orcid.org/0000-0003-1232-2827 + - identifier: 0000-0003-1232-2827 scheme: orcid - affiliations: - name: University of Fribourg family_name: Straub given_name: Julia + id: 0000-0003-1804-6827 identifiers: - - identifier: https://orcid.org/0000-0003-1804-6827 + - identifier: 0000-0003-1804-6827 scheme: orcid - affiliations: - name: TU Wien family_name: Holzer given_name: Brigitte + id: 0000-0003-4400-9827 identifiers: - - identifier: https://orcid.org/0000-0003-4400-9827 + - identifier: 0000-0003-4400-9827 scheme: orcid - affiliations: - name: Northwestern University family_name: Holla given_name: Meghana + id: 0000-0001-5619-1828 identifiers: - - identifier: https://orcid.org/0000-0001-5619-1828 + - identifier: 0000-0001-5619-1828 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Zeiner given_name: Tim + id: 0000-0001-7298-4828 identifiers: - - identifier: https://orcid.org/0000-0001-7298-4828 + - identifier: 0000-0001-7298-4828 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Pham given_name: Viet Hung + id: 0000-0002-2189-7828 identifiers: - - identifier: https://orcid.org/0000-0002-2189-7828 + - identifier: 0000-0002-2189-7828 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Polychronakos given_name: Venetios + id: 0000-0002-4051-0828 identifiers: - - identifier: https://orcid.org/0000-0002-4051-0828 + - identifier: 0000-0002-4051-0828 scheme: orcid - affiliations: - name: CERN family_name: Delgado Lopez given_name: Diyaselis + id: 0000-0002-4306-8828 identifiers: - - identifier: https://orcid.org/0000-0002-4306-8828 + - identifier: 0000-0002-4306-8828 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: "Torregrosa Mart\xEDn" given_name: Claudio + id: 0000-0002-4322-8828 identifiers: - - identifier: https://orcid.org/0000-0002-4322-8828 + - identifier: 0000-0002-4322-8828 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Florez given_name: Freddy + id: 0000-0002-5633-6828 identifiers: - - identifier: https://orcid.org/0000-0002-5633-6828 + - identifier: 0000-0002-5633-6828 scheme: orcid - affiliations: - name: TU Wien family_name: Kampl given_name: Markus + id: 0000-0002-7550-2828 identifiers: - - identifier: https://orcid.org/0000-0002-7550-2828 + - identifier: 0000-0002-7550-2828 scheme: orcid - affiliations: - name: University of Bamberg family_name: Jopke given_name: Nikolaus + id: 0000-0003-0849-0828 identifiers: - - identifier: https://orcid.org/0000-0003-0849-0828 + - identifier: 0000-0003-0849-0828 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Oji given_name: Vinzenz + id: 0000-0003-1380-4828 identifiers: - - identifier: https://orcid.org/0000-0003-1380-4828 + - identifier: 0000-0003-1380-4828 scheme: orcid - affiliations: - name: Northwestern University family_name: Motter given_name: Adilson E. + id: 0000-0003-1794-4828 identifiers: - - identifier: https://orcid.org/0000-0003-1794-4828 + - identifier: 0000-0003-1794-4828 scheme: orcid - affiliations: - name: TU Wien family_name: Lyon given_name: Tim + id: 0000-0003-3214-0828 identifiers: - - identifier: https://orcid.org/0000-0003-3214-0828 + - identifier: 0000-0003-3214-0828 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kulenkampff given_name: Johannes + id: 0000-0001-6566-5829 identifiers: - - identifier: https://orcid.org/0000-0001-6566-5829 + - identifier: 0000-0001-6566-5829 scheme: orcid - affiliations: - name: Northwestern University family_name: Bagci given_name: Ulas + id: 0000-0001-7379-6829 identifiers: - - identifier: https://orcid.org/0000-0001-7379-6829 + - identifier: 0000-0001-7379-6829 scheme: orcid - affiliations: - name: TU Wien family_name: Tairi given_name: Erkan + id: 0000-0002-2283-4829 identifiers: - - identifier: https://orcid.org/0000-0002-2283-4829 + - identifier: 0000-0002-2283-4829 scheme: orcid - affiliations: - name: "Universidad Carlos III de Madrid Escuela Polit\xE9cnica Superior" - name: European Organization for Nuclear Research family_name: "Fern\xE1ndez-Pis\xF3n" given_name: Pilar + id: 0000-0002-4651-0829 identifiers: - - identifier: https://orcid.org/0000-0002-4651-0829 + - identifier: 0000-0002-4651-0829 scheme: orcid - affiliations: - name: Northwestern University family_name: Roman given_name: Kenny + id: 0000-0002-8302-0829 identifiers: - - identifier: https://orcid.org/0000-0002-8302-0829 + - identifier: 0000-0002-8302-0829 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Weir given_name: Peter + id: 0000-0003-3111-7829 identifiers: - - identifier: https://orcid.org/0000-0003-3111-7829 + - identifier: 0000-0003-3111-7829 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Arango-Gonzalez given_name: Blanca + id: 0000-0002-9045-182X identifiers: - - identifier: https://orcid.org/0000-0002-9045-182X + - identifier: 0000-0002-9045-182X scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Admard given_name: Jakob + id: 0000-0003-0466-582X identifiers: - - identifier: https://orcid.org/0000-0003-0466-582X + - identifier: 0000-0003-0466-582X scheme: orcid - affiliations: - name: MIT @@ -39311,677 +44775,772 @@ - name: CERN family_name: Salfeld-Nebgen given_name: Jakob + id: 0000-0003-4852-982X identifiers: - - identifier: https://orcid.org/0000-0003-4852-982X + - identifier: 0000-0003-4852-982X scheme: orcid - affiliations: - name: TU Wien family_name: Ratzer given_name: Brigitte + id: 0000-0001-5190-3830 identifiers: - - identifier: https://orcid.org/0000-0001-5190-3830 + - identifier: 0000-0001-5190-3830 scheme: orcid - affiliations: - name: TU Wien family_name: Peer given_name: Marco + id: 0000-0001-6843-0830 identifiers: - - identifier: https://orcid.org/0000-0001-6843-0830 + - identifier: 0000-0001-6843-0830 scheme: orcid - affiliations: - name: University of Fribourg family_name: Weisskopf given_name: Laure + id: 0000-0001-8789-3830 identifiers: - - identifier: https://orcid.org/0000-0001-8789-3830 + - identifier: 0000-0001-8789-3830 scheme: orcid - affiliations: - name: TU Wien family_name: Praetorius given_name: Dirk + id: 0000-0002-1977-9830 identifiers: - - identifier: https://orcid.org/0000-0002-1977-9830 + - identifier: 0000-0002-1977-9830 scheme: orcid - affiliations: - name: TU Wien family_name: Vu given_name: Minh Nhat + id: 0000-0003-0692-8830 identifiers: - - identifier: https://orcid.org/0000-0003-0692-8830 + - identifier: 0000-0003-0692-8830 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Riedlberger given_name: Peter + id: 0000-0003-4381-7830 identifiers: - - identifier: https://orcid.org/0000-0003-4381-7830 + - identifier: 0000-0003-4381-7830 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Sugiyama given_name: Mahito + id: 0000-0001-5907-9831 identifiers: - - identifier: https://orcid.org/0000-0001-5907-9831 + - identifier: 0000-0001-5907-9831 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hu given_name: Chen + id: 0000-0002-3285-4831 identifiers: - - identifier: https://orcid.org/0000-0002-3285-4831 + - identifier: 0000-0002-3285-4831 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "W\xF6rsd\xF6rfer" given_name: Anna + id: 0000-0002-4813-5831 identifiers: - - identifier: https://orcid.org/0000-0002-4813-5831 + - identifier: 0000-0002-4813-5831 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lutz given_name: Benjamin + id: 0000-0003-3057-7831 identifiers: - - identifier: https://orcid.org/0000-0003-3057-7831 + - identifier: 0000-0003-3057-7831 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wilkes given_name: Elise + id: 0000-0002-3379-7832 identifiers: - - identifier: https://orcid.org/0000-0002-3379-7832 + - identifier: 0000-0002-3379-7832 scheme: orcid - affiliations: - name: California Institute of Technology - name: Eidgenossische Technische Hochschule Zurich Institute of Astronomy family_name: Faisst given_name: Andreas + id: 0000-0002-9382-9832 identifiers: - - identifier: https://orcid.org/0000-0002-9382-9832 + - identifier: 0000-0002-9382-9832 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bacci given_name: Michele + id: 0000-0003-1251-6832 identifiers: - - identifier: https://orcid.org/0000-0003-1251-6832 + - identifier: 0000-0003-1251-6832 scheme: orcid - affiliations: - name: Northwestern University family_name: Seawright given_name: Jason + id: 0000-0003-4974-9832 identifiers: - - identifier: https://orcid.org/0000-0003-4974-9832 + - identifier: 0000-0003-4974-9832 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Ecker given_name: Paul + id: 0000-0002-6259-1833 identifiers: - - identifier: https://orcid.org/0000-0002-6259-1833 + - identifier: 0000-0002-6259-1833 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Naim given_name: Kamran + id: 0000-0002-6344-7833 identifiers: - - identifier: https://orcid.org/0000-0002-6344-7833 + - identifier: 0000-0002-6344-7833 scheme: orcid - affiliations: - name: University of Fribourg family_name: Akdoganbulut given_name: Cenk + id: 0000-0003-2344-6833 identifiers: - - identifier: https://orcid.org/0000-0003-2344-6833 + - identifier: 0000-0003-2344-6833 scheme: orcid - affiliations: - name: University of Bamberg family_name: Muck given_name: Matthias + id: 0000-0003-2364-9833 identifiers: - - identifier: https://orcid.org/0000-0003-2364-9833 + - identifier: 0000-0003-2364-9833 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Stroude given_name: Aurianne + id: 0000-0002-4092-7834 identifiers: - - identifier: https://orcid.org/0000-0002-4092-7834 + - identifier: 0000-0002-4092-7834 scheme: orcid - affiliations: - name: CERN family_name: Maguire given_name: Eamonn + id: 0000-0002-7277-7834 identifiers: - - identifier: https://orcid.org/0000-0002-7277-7834 + - identifier: 0000-0002-7277-7834 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Coelho given_name: joao Paulo + id: 0000-0003-0120-8834 identifiers: - - identifier: https://orcid.org/0000-0003-0120-8834 + - identifier: 0000-0003-0120-8834 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Murturi given_name: Ilir + id: 0000-0003-0240-3834 identifiers: - - identifier: https://orcid.org/0000-0003-0240-3834 + - identifier: 0000-0003-0240-3834 scheme: orcid - affiliations: - name: TU Wien - name: Research Center for Materials Science and Engineering family_name: Khmelevskyi given_name: Sergii + id: 0000-0001-5630-7835 identifiers: - - identifier: https://orcid.org/0000-0001-5630-7835 + - identifier: 0000-0001-5630-7835 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Deutschmann given_name: Bernd + id: 0000-0001-7973-6835 identifiers: - - identifier: https://orcid.org/0000-0001-7973-6835 + - identifier: 0000-0001-7973-6835 scheme: orcid - affiliations: - name: CERN family_name: Sanchez Pineda given_name: Arturo Rodolfo + id: 0000-0001-8241-7835 identifiers: - - identifier: https://orcid.org/0000-0001-8241-7835 + - identifier: 0000-0001-8241-7835 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Chava given_name: Phanish + id: 0000-0001-9938-2835 identifiers: - - identifier: https://orcid.org/0000-0001-9938-2835 + - identifier: 0000-0001-9938-2835 scheme: orcid - affiliations: - name: Northwestern University family_name: Ramsey given_name: Kathryn + id: 0000-0002-0691-7835 identifiers: - - identifier: https://orcid.org/0000-0002-0691-7835 + - identifier: 0000-0002-0691-7835 scheme: orcid - affiliations: - name: University of Fribourg family_name: Delgado given_name: Mariano + id: 0000-0002-0930-9835 identifiers: - - identifier: https://orcid.org/0000-0002-0930-9835 + - identifier: 0000-0002-0930-9835 scheme: orcid - affiliations: - name: TU Wien family_name: Rabl given_name: Peter + id: 0000-0002-2560-8835 identifiers: - - identifier: https://orcid.org/0000-0002-2560-8835 + - identifier: 0000-0002-2560-8835 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Lalremruata given_name: Albert + id: 0000-0002-4692-7835 identifiers: - - identifier: https://orcid.org/0000-0002-4692-7835 + - identifier: 0000-0002-4692-7835 scheme: orcid - affiliations: - name: Northwestern University family_name: yan given_name: zhang + id: 0000-0002-6593-3835 identifiers: - - identifier: https://orcid.org/0000-0002-6593-3835 + - identifier: 0000-0002-6593-3835 scheme: orcid - affiliations: - name: Northwestern University family_name: "Anst\xF6tz" given_name: Max + id: 0000-0003-3071-5835 identifiers: - - identifier: https://orcid.org/0000-0003-3071-5835 + - identifier: 0000-0003-3071-5835 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Prendinger given_name: Helmut + id: 0000-0003-4654-9835 identifiers: - - identifier: https://orcid.org/0000-0003-4654-9835 + - identifier: 0000-0003-4654-9835 scheme: orcid - affiliations: - name: University of Bamberg family_name: Bergrab given_name: Michael + id: 0000-0001-9729-2836 identifiers: - - identifier: https://orcid.org/0000-0001-9729-2836 + - identifier: 0000-0001-9729-2836 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Winter given_name: Franz + id: 0000-0001-9854-3836 identifiers: - - identifier: https://orcid.org/0000-0001-9854-3836 + - identifier: 0000-0001-9854-3836 scheme: orcid - affiliations: - name: University of Fribourg family_name: Vanhove given_name: Jan + id: 0000-0002-4607-4836 identifiers: - - identifier: https://orcid.org/0000-0002-4607-4836 + - identifier: 0000-0002-4607-4836 scheme: orcid - affiliations: - name: TU Wien family_name: Mainka given_name: Thomas + id: 0000-0003-4211-1836 identifiers: - - identifier: https://orcid.org/0000-0003-4211-1836 + - identifier: 0000-0003-4211-1836 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Zorloni given_name: Gabriele + id: 0000-0001-5983-9837 identifiers: - - identifier: https://orcid.org/0000-0001-5983-9837 + - identifier: 0000-0001-5983-9837 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Dunlop given_name: James + id: 0000-0001-8338-8837 identifiers: - - identifier: https://orcid.org/0000-0001-8338-8837 + - identifier: 0000-0001-8338-8837 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kuntzsch given_name: Michael + id: 0000-0002-8145-5837 identifiers: - - identifier: https://orcid.org/0000-0002-8145-5837 + - identifier: 0000-0002-8145-5837 scheme: orcid - affiliations: - name: Northwestern University family_name: Matthews given_name: Jolie + id: 0000-0002-9404-5837 identifiers: - - identifier: https://orcid.org/0000-0002-9404-5837 + - identifier: 0000-0002-9404-5837 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ma given_name: Jun + id: 0000-0002-9403-7837 identifiers: - - identifier: https://orcid.org/0000-0002-9403-7837 + - identifier: 0000-0002-9403-7837 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hu given_name: Jiashun + id: 0000-0003-1007-6837 identifiers: - - identifier: https://orcid.org/0000-0003-1007-6837 + - identifier: 0000-0003-1007-6837 scheme: orcid - affiliations: - name: Northwestern University family_name: Safren given_name: Nathaniel + id: 0000-0003-4866-4837 identifiers: - - identifier: https://orcid.org/0000-0003-4866-4837 + - identifier: 0000-0003-4866-4837 scheme: orcid - affiliations: - name: TU Wien family_name: Benedetti given_name: Florian + id: 0000-0001-5366-8838 identifiers: - - identifier: https://orcid.org/0000-0001-5366-8838 + - identifier: 0000-0001-5366-8838 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lee given_name: Brian + id: 0000-0002-0898-0838 identifiers: - - identifier: https://orcid.org/0000-0002-0898-0838 + - identifier: 0000-0002-0898-0838 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Skrobanek given_name: Anneliese + id: 0000-0002-1196-0838 identifiers: - - identifier: https://orcid.org/0000-0002-1196-0838 + - identifier: 0000-0002-1196-0838 scheme: orcid - affiliations: - name: TU Wien family_name: Meiringer given_name: Martin + id: 0000-0002-2315-2838 identifiers: - - identifier: https://orcid.org/0000-0002-2315-2838 + - identifier: 0000-0002-2315-2838 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Miller given_name: Charles + id: 0000-0002-9380-4838 identifiers: - - identifier: https://orcid.org/0000-0002-9380-4838 + - identifier: 0000-0002-9380-4838 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fu given_name: Matthew + id: 0000-0003-3949-7838 identifiers: - - identifier: https://orcid.org/0000-0003-3949-7838 + - identifier: 0000-0003-3949-7838 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Salukvadze given_name: George + id: 0000-0003-4735-8838 identifiers: - - identifier: https://orcid.org/0000-0003-4735-8838 + - identifier: 0000-0003-4735-8838 scheme: orcid - affiliations: - name: National Insitute of Standards and Technology - name: Brookhaven National Laboratory family_name: Pulecio given_name: Javier + id: 0000-0002-1922-9839 identifiers: - - identifier: https://orcid.org/0000-0002-1922-9839 + - identifier: 0000-0002-1922-9839 scheme: orcid - affiliations: - name: TU Wien family_name: Reiter given_name: Michael + id: 0000-0002-8004-6839 identifiers: - - identifier: https://orcid.org/0000-0002-8004-6839 + - identifier: 0000-0002-8004-6839 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gao given_name: Yang + id: 0000-0003-2320-2839 identifiers: - - identifier: https://orcid.org/0000-0003-2320-2839 + - identifier: 0000-0003-2320-2839 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: SACHIN KRISHNAN given_name: T V + id: 0000-0003-4852-2839 identifiers: - - identifier: https://orcid.org/0000-0003-4852-2839 + - identifier: 0000-0003-4852-2839 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: "Julius-Maximilians-Universit\xE4t W\xFCrzburg" family_name: "M\xFCnz" given_name: Thomas + id: 0000-0001-8699-383X identifiers: - - identifier: https://orcid.org/0000-0001-8699-383X + - identifier: 0000-0001-8699-383X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Laskowski given_name: Forrest + id: 0000-0001-8909-483X identifiers: - - identifier: https://orcid.org/0000-0001-8909-483X + - identifier: 0000-0001-8909-483X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Naumenko given_name: Denys + id: 0000-0002-6135-983X identifiers: - - identifier: https://orcid.org/0000-0002-6135-983X + - identifier: 0000-0002-6135-983X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Pasch given_name: Tim + id: 0000-0002-8528-983X identifiers: - - identifier: https://orcid.org/0000-0002-8528-983X + - identifier: 0000-0002-8528-983X scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: "B\xF6hm" given_name: Sigrid + id: 0000-0002-9815-183X identifiers: - - identifier: https://orcid.org/0000-0002-9815-183X + - identifier: 0000-0002-9815-183X scheme: orcid - affiliations: - name: Northwestern University family_name: Hoggarth given_name: Mark + id: 0000-0001-6516-5840 identifiers: - - identifier: https://orcid.org/0000-0001-6516-5840 + - identifier: 0000-0001-6516-5840 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Heins given_name: Frauke + id: 0000-0001-8093-9840 identifiers: - - identifier: https://orcid.org/0000-0001-8093-9840 + - identifier: 0000-0001-8093-9840 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: FUJIYOSHI given_name: Takao + id: 0000-0002-0882-3840 identifiers: - - identifier: https://orcid.org/0000-0002-0882-3840 + - identifier: 0000-0002-0882-3840 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: Duke University family_name: Friedrich given_name: Rico + id: 0000-0002-4066-3840 identifiers: - - identifier: https://orcid.org/0000-0002-4066-3840 + - identifier: 0000-0002-4066-3840 scheme: orcid - affiliations: - name: TU Wien family_name: Pichler given_name: Bernhard + id: 0000-0002-6468-1840 identifiers: - - identifier: https://orcid.org/0000-0002-6468-1840 + - identifier: 0000-0002-6468-1840 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Harasek given_name: Michael + id: 0000-0002-6490-5840 identifiers: - - identifier: https://orcid.org/0000-0002-6490-5840 + - identifier: 0000-0002-6490-5840 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Winkler given_name: Christian + id: 0000-0002-7463-6840 identifiers: - - identifier: https://orcid.org/0000-0002-7463-6840 + - identifier: 0000-0002-7463-6840 scheme: orcid - affiliations: - name: University of Helsinki - name: TU Wien family_name: Funovits given_name: Bernd + id: 0000-0002-8247-6840 identifiers: - - identifier: https://orcid.org/0000-0002-8247-6840 + - identifier: 0000-0002-8247-6840 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Selvi given_name: Marco + id: 0000-0003-0243-0840 identifiers: - - identifier: https://orcid.org/0000-0003-0243-0840 + - identifier: 0000-0003-0243-0840 scheme: orcid - affiliations: - name: TU Wien family_name: Nickel given_name: Soeren + id: 0000-0001-5161-3841 identifiers: - - identifier: https://orcid.org/0000-0001-5161-3841 + - identifier: 0000-0001-5161-3841 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Castillo given_name: Ismael + id: 0000-0001-6267-0841 identifiers: - - identifier: https://orcid.org/0000-0001-6267-0841 + - identifier: 0000-0001-6267-0841 scheme: orcid - affiliations: - name: Northwestern University family_name: Goldberg given_name: Erwin + id: 0000-0002-0176-4841 identifiers: - - identifier: https://orcid.org/0000-0002-0176-4841 + - identifier: 0000-0002-0176-4841 scheme: orcid - affiliations: - name: Northwestern University family_name: Bouchat given_name: Sarah + id: 0000-0002-3894-6841 identifiers: - - identifier: https://orcid.org/0000-0002-3894-6841 + - identifier: 0000-0002-3894-6841 scheme: orcid - affiliations: - name: Northwestern University family_name: Freymann given_name: Douglas + id: 0000-0002-5231-8841 identifiers: - - identifier: https://orcid.org/0000-0002-5231-8841 + - identifier: 0000-0002-5231-8841 scheme: orcid - affiliations: - name: TU Wien family_name: Izmestiev given_name: Ivan + id: 0000-0003-3173-7841 identifiers: - - identifier: https://orcid.org/0000-0003-3173-7841 + - identifier: 0000-0003-3173-7841 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Gangl given_name: Selina + id: 0000-0003-3856-8841 identifiers: - - identifier: https://orcid.org/0000-0003-3856-8841 + - identifier: 0000-0003-3856-8841 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Kemena given_name: Carsten + id: 0000-0002-2416-9842 identifiers: - - identifier: https://orcid.org/0000-0002-2416-9842 + - identifier: 0000-0002-2416-9842 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Panagiotopoulos given_name: Aristotelis + id: 0000-0002-7695-4842 identifiers: - - identifier: https://orcid.org/0000-0002-7695-4842 + - identifier: 0000-0002-7695-4842 scheme: orcid - affiliations: - name: BNL family_name: Nowak given_name: Marcin + id: 0000-0002-9251-6842 identifiers: - - identifier: https://orcid.org/0000-0002-9251-6842 + - identifier: 0000-0002-9251-6842 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Simonovic given_name: Marko + id: 0000-0003-1627-4842 identifiers: - - identifier: https://orcid.org/0000-0003-1627-4842 + - identifier: 0000-0003-1627-4842 scheme: orcid - affiliations: - name: TU Wien family_name: Lendl given_name: Bernhard + id: 0000-0003-3838-5842 identifiers: - - identifier: https://orcid.org/0000-0003-3838-5842 + - identifier: 0000-0003-3838-5842 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Harbig given_name: Jule + id: 0000-0001-8171-3843 identifiers: - - identifier: https://orcid.org/0000-0001-8171-3843 + - identifier: 0000-0001-8171-3843 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hwang-Fu given_name: Yu-Hsien + id: 0000-0002-2861-4843 identifiers: - - identifier: https://orcid.org/0000-0002-2861-4843 + - identifier: 0000-0002-2861-4843 scheme: orcid - affiliations: - name: University of Bamberg - name: Technical University of Munich family_name: March given_name: Christoph + id: 0000-0002-6564-2843 identifiers: - - identifier: https://orcid.org/0000-0002-6564-2843 + - identifier: 0000-0002-6564-2843 scheme: orcid - affiliations: - name: TU Wien family_name: Hanbury given_name: Allan + id: 0000-0002-7149-5843 identifiers: - - identifier: https://orcid.org/0000-0002-7149-5843 + - identifier: 0000-0002-7149-5843 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Auer given_name: Carmen Elisabeth + id: 0000-0001-8224-2844 identifiers: - - identifier: https://orcid.org/0000-0001-8224-2844 + - identifier: 0000-0001-8224-2844 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Leadbetter given_name: Jared + id: 0000-0002-7033-0844 identifiers: - - identifier: https://orcid.org/0000-0002-7033-0844 + - identifier: 0000-0002-7033-0844 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Rizkalla given_name: Shrief + id: 0000-0003-1037-1844 identifiers: - - identifier: https://orcid.org/0000-0003-1037-1844 + - identifier: 0000-0003-1037-1844 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mitridate given_name: Andrea + id: 0000-0003-2898-5844 identifiers: - - identifier: https://orcid.org/0000-0003-2898-5844 + - identifier: 0000-0003-2898-5844 scheme: orcid - affiliations: - name: Northwestern University family_name: Shelby given_name: Renee + id: 0000-0003-4720-3844 identifiers: - - identifier: https://orcid.org/0000-0003-4720-3844 + - identifier: 0000-0003-4720-3844 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Clau\xDF" given_name: Oliver + id: 0000-0001-5067-4845 identifiers: - - identifier: https://orcid.org/0000-0001-5067-4845 + - identifier: 0000-0001-5067-4845 scheme: orcid - affiliations: - name: CERN family_name: Barnes given_name: Michael + id: 0000-0001-8073-4845 identifiers: - - identifier: https://orcid.org/0000-0001-8073-4845 + - identifier: 0000-0001-8073-4845 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Penghao + id: 0000-0002-1517-5845 identifiers: - - identifier: https://orcid.org/0000-0002-1517-5845 + - identifier: 0000-0002-1517-5845 scheme: orcid - affiliations: - name: Northwestern University family_name: Hodges given_name: James + id: 0000-0002-2306-0845 identifiers: - - identifier: https://orcid.org/0000-0002-2306-0845 + - identifier: 0000-0002-2306-0845 scheme: orcid - affiliations: - name: University of Illinois at Chicago @@ -39989,43 +45548,49 @@ - name: University of Electronic Science and Technology of China family_name: Kang given_name: Yijin + id: 0000-0002-3627-5845 identifiers: - - identifier: https://orcid.org/0000-0002-3627-5845 + - identifier: 0000-0002-3627-5845 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Widyananda Winardhi given_name: Chandra + id: 0000-0003-2310-9845 identifiers: - - identifier: https://orcid.org/0000-0003-2310-9845 + - identifier: 0000-0003-2310-9845 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Mosar given_name: Jon + id: 0000-0003-2399-3845 identifiers: - - identifier: https://orcid.org/0000-0003-2399-3845 + - identifier: 0000-0003-2399-3845 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Agocs given_name: Adam + id: 0000-0001-6946-7846 identifiers: - - identifier: https://orcid.org/0000-0001-6946-7846 + - identifier: 0000-0001-6946-7846 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lim given_name: Jonghun + id: 0000-0002-2943-1846 identifiers: - - identifier: https://orcid.org/0000-0002-2943-1846 + - identifier: 0000-0002-2943-1846 scheme: orcid - affiliations: - name: Northwestern University family_name: Lu given_name: Bingzhang + id: 0000-0002-6360-5846 identifiers: - - identifier: https://orcid.org/0000-0002-6360-5846 + - identifier: 0000-0002-6360-5846 scheme: orcid - affiliations: - name: Northwestern University @@ -40033,8 +45598,9 @@ - name: Medical College of Wisconsin family_name: Ge given_name: Zhi-Dong + id: 0000-0002-7045-0846 identifiers: - - identifier: https://orcid.org/0000-0002-7045-0846 + - identifier: 0000-0002-7045-0846 scheme: orcid - affiliations: - name: National Institution for Academic Degrees and Quality Enhancement of Higher @@ -40042,486 +45608,554 @@ - name: National Institute of Informatics family_name: Kurakawa given_name: Kei + id: 0000-0002-7031-1846 identifiers: - - identifier: https://orcid.org/0000-0002-7031-1846 + - identifier: 0000-0002-7031-1846 scheme: orcid - affiliations: - name: TU Wien - name: Saico Biosystems KG family_name: Selinger given_name: Florian + id: 0000-0002-8069-1846 identifiers: - - identifier: https://orcid.org/0000-0002-8069-1846 + - identifier: 0000-0002-8069-1846 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Aramo given_name: Carla + id: 0000-0002-8412-3846 identifiers: - - identifier: https://orcid.org/0000-0002-8412-3846 + - identifier: 0000-0002-8412-3846 scheme: orcid - affiliations: - name: California Institute of Technology family_name: McBride given_name: Helen + id: 0000-0003-3428-2846 identifiers: - - identifier: https://orcid.org/0000-0003-3428-2846 + - identifier: 0000-0003-3428-2846 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schelhaas given_name: Sonja + id: 0000-0001-6928-4847 identifiers: - - identifier: https://orcid.org/0000-0001-6928-4847 + - identifier: 0000-0001-6928-4847 scheme: orcid - affiliations: - name: CERN family_name: gamba given_name: davide + id: 0000-0002-1985-1847 identifiers: - - identifier: https://orcid.org/0000-0002-1985-1847 + - identifier: 0000-0002-1985-1847 scheme: orcid - affiliations: - name: TU Wien family_name: Reitner given_name: Matthias + id: 0000-0002-2529-0847 identifiers: - - identifier: https://orcid.org/0000-0002-2529-0847 + - identifier: 0000-0002-2529-0847 scheme: orcid - affiliations: - name: Northwestern University family_name: Berns given_name: Eric + id: 0000-0002-2203-0847 identifiers: - - identifier: https://orcid.org/0000-0002-2203-0847 + - identifier: 0000-0002-2203-0847 scheme: orcid - affiliations: - name: CERN family_name: Miranda given_name: Ricardo + id: 0000-0002-2917-9847 identifiers: - - identifier: https://orcid.org/0000-0002-2917-9847 + - identifier: 0000-0002-2917-9847 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: FATEMI given_name: Setareh + id: 0000-0002-3883-3847 identifiers: - - identifier: https://orcid.org/0000-0002-3883-3847 + - identifier: 0000-0002-3883-3847 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chen given_name: Dong-Yuan + id: 0000-0003-2179-2847 identifiers: - - identifier: https://orcid.org/0000-0003-2179-2847 + - identifier: 0000-0003-2179-2847 scheme: orcid - affiliations: - name: TU Wien - name: "ETH Z\xFCrich Institute for Operations Research" family_name: Bellissimo given_name: Alessandra + id: 0000-0001-8504-2848 identifiers: - - identifier: https://orcid.org/0000-0001-8504-2848 + - identifier: 0000-0001-8504-2848 scheme: orcid - affiliations: - name: TU Wien family_name: Rafsanjani-Abbasi given_name: Ali + id: 0000-0001-9155-7848 identifiers: - - identifier: https://orcid.org/0000-0001-9155-7848 + - identifier: 0000-0001-9155-7848 scheme: orcid - affiliations: - name: CERN family_name: Rossi given_name: Adriana + id: 0000-0002-4414-5848 identifiers: - - identifier: https://orcid.org/0000-0002-4414-5848 + - identifier: 0000-0002-4414-5848 scheme: orcid - affiliations: - name: TU Wien family_name: Platzer given_name: Michael + id: 0000-0002-5103-8848 identifiers: - - identifier: https://orcid.org/0000-0002-5103-8848 + - identifier: 0000-0002-5103-8848 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Milardi given_name: Catia + id: 0000-0002-6774-2848 identifiers: - - identifier: https://orcid.org/0000-0002-6774-2848 + - identifier: 0000-0002-6774-2848 scheme: orcid - affiliations: - name: TU Wien family_name: Murzin given_name: Serguei + id: 0000-0002-8150-1848 identifiers: - - identifier: https://orcid.org/0000-0002-8150-1848 + - identifier: 0000-0002-8150-1848 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Shinde given_name: Aniketa + id: 0000-0003-2386-3848 identifiers: - - identifier: https://orcid.org/0000-0003-2386-3848 + - identifier: 0000-0003-2386-3848 scheme: orcid - affiliations: - name: University of Bamberg family_name: Andresen given_name: Maike + id: 0000-0001-9073-4849 identifiers: - - identifier: https://orcid.org/0000-0001-9073-4849 + - identifier: 0000-0001-9073-4849 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Sandoval Bojorquez given_name: Diana Isabel + id: 0000-0001-9411-0849 identifiers: - - identifier: https://orcid.org/0000-0001-9411-0849 + - identifier: 0000-0001-9411-0849 scheme: orcid - affiliations: - name: TU Wien family_name: Borowska given_name: Anna Maria + id: 0000-0002-3147-9849 identifiers: - - identifier: https://orcid.org/0000-0002-3147-9849 + - identifier: 0000-0002-3147-9849 scheme: orcid - affiliations: - name: University of Fribourg - name: Swiss Integrative Center for Human Health family_name: Giraud given_name: Sylvain + id: 0000-0002-3437-0849 identifiers: - - identifier: https://orcid.org/0000-0002-3437-0849 + - identifier: 0000-0002-3437-0849 scheme: orcid - affiliations: - name: Northwestern University family_name: Mamakoukas given_name: Giorgos + id: 0000-0002-3461-0849 identifiers: - - identifier: https://orcid.org/0000-0002-3461-0849 + - identifier: 0000-0002-3461-0849 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Stark given_name: Jalex + id: 0000-0002-5205-0849 identifiers: - - identifier: https://orcid.org/0000-0002-5205-0849 + - identifier: 0000-0002-5205-0849 scheme: orcid - affiliations: - name: CERN family_name: Lain Amador given_name: Lucia + id: 0000-0002-9230-0849 identifiers: - - identifier: https://orcid.org/0000-0002-9230-0849 + - identifier: 0000-0002-9230-0849 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Fink given_name: Alke + id: 0000-0003-3952-7849 identifiers: - - identifier: https://orcid.org/0000-0003-3952-7849 + - identifier: 0000-0003-3952-7849 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Bonnin given_name: Xavier + id: 0000-0001-5559-684X identifiers: - - identifier: https://orcid.org/0000-0001-5559-684X + - identifier: 0000-0001-5559-684X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Missler given_name: Markus + id: 0000-0001-8008-984X identifiers: - - identifier: https://orcid.org/0000-0001-8008-984X + - identifier: 0000-0001-8008-984X scheme: orcid - affiliations: - name: Northwestern University family_name: Wei given_name: Ermin + id: 0000-0002-8035-484X identifiers: - - identifier: https://orcid.org/0000-0002-8035-484X + - identifier: 0000-0002-8035-484X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Watzenb\xF6ck" given_name: Clemens + id: 0000-0002-9330-784X identifiers: - - identifier: https://orcid.org/0000-0002-9330-784X + - identifier: 0000-0002-9330-784X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Yuan given_name: Tao + id: 0000-0001-7362-1850 identifiers: - - identifier: https://orcid.org/0000-0001-7362-1850 + - identifier: 0000-0001-7362-1850 scheme: orcid - affiliations: - name: TU Wien family_name: Visconti given_name: Ennio + id: 0000-0002-1146-4850 identifiers: - - identifier: https://orcid.org/0000-0002-1146-4850 + - identifier: 0000-0002-1146-4850 scheme: orcid - affiliations: - name: Northwestern University family_name: Forrest given_name: Marc + id: 0000-0002-9280-7850 identifiers: - - identifier: https://orcid.org/0000-0002-9280-7850 + - identifier: 0000-0002-9280-7850 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Brockhaus given_name: Johannes + id: 0000-0003-2966-5850 identifiers: - - identifier: https://orcid.org/0000-0003-2966-5850 + - identifier: 0000-0003-2966-5850 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Xinlong + id: 0000-0001-8978-2851 identifiers: - - identifier: https://orcid.org/0000-0001-8978-2851 + - identifier: 0000-0001-8978-2851 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Florida State University family_name: Nijamudheen given_name: Abdulrahiman + id: 0000-0001-9191-1851 identifiers: - - identifier: https://orcid.org/0000-0001-9191-1851 + - identifier: 0000-0001-9191-1851 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kossow given_name: Annelene + id: 0000-0002-4648-4851 identifiers: - - identifier: https://orcid.org/0000-0002-4648-4851 + - identifier: 0000-0002-4648-4851 scheme: orcid - affiliations: - name: CERN - name: "Universit\xE9 de Gen\xE8ve" family_name: Jolivet given_name: Renaud + id: 0000-0002-5167-0851 identifiers: - - identifier: https://orcid.org/0000-0002-5167-0851 + - identifier: 0000-0002-5167-0851 scheme: orcid - affiliations: - name: California Institute of Technology family_name: McElroy given_name: Charles + id: 0000-0002-7535-7851 identifiers: - - identifier: https://orcid.org/0000-0002-7535-7851 + - identifier: 0000-0002-7535-7851 scheme: orcid - affiliations: - name: TU Wien - name: TU Wien (Vienna University of Technology) family_name: Marchetti-Deschmann given_name: Martina + id: 0000-0002-8060-7851 identifiers: - - identifier: https://orcid.org/0000-0002-8060-7851 + - identifier: 0000-0002-8060-7851 scheme: orcid - affiliations: - name: TU Wien family_name: Kaufmann given_name: Josef + id: 0000-0001-9540-6852 identifiers: - - identifier: https://orcid.org/0000-0001-9540-6852 + - identifier: 0000-0001-9540-6852 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hirsch given_name: Alexander + id: 0000-0001-5166-9853 identifiers: - - identifier: https://orcid.org/0000-0001-5166-9853 + - identifier: 0000-0001-5166-9853 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Richter given_name: Wolfgang + id: 0000-0001-8430-5853 identifiers: - - identifier: https://orcid.org/0000-0001-8430-5853 + - identifier: 0000-0001-8430-5853 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Lassenberger given_name: Andrea + id: 0000-0002-7922-4853 identifiers: - - identifier: https://orcid.org/0000-0002-7922-4853 + - identifier: 0000-0002-7922-4853 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Moll given_name: Henry + id: 0000-0003-0620-2853 identifiers: - - identifier: https://orcid.org/0000-0003-0620-2853 + - identifier: 0000-0003-0620-2853 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Knoth given_name: Christian + id: 0000-0003-0797-7853 identifiers: - - identifier: https://orcid.org/0000-0003-0797-7853 + - identifier: 0000-0003-0797-7853 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Thieme given_name: Juergen + id: 0000-0001-5910-3854 identifiers: - - identifier: https://orcid.org/0000-0001-5910-3854 + - identifier: 0000-0001-5910-3854 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Catalan Lasheras given_name: Nuria + id: 0000-0001-7089-8854 identifiers: - - identifier: https://orcid.org/0000-0001-7089-8854 + - identifier: 0000-0001-7089-8854 scheme: orcid - affiliations: - name: Northwestern University family_name: Cichy given_name: Annika + id: 0000-0002-4620-7854 identifiers: - - identifier: https://orcid.org/0000-0002-4620-7854 + - identifier: 0000-0002-4620-7854 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: kampel given_name: martin + id: 0000-0002-5217-2854 identifiers: - - identifier: https://orcid.org/0000-0002-5217-2854 + - identifier: 0000-0002-5217-2854 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wennberg given_name: Paul + id: 0000-0002-6126-3854 identifiers: - - identifier: https://orcid.org/0000-0002-6126-3854 + - identifier: 0000-0002-6126-3854 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ivy given_name: Tobin + id: 0000-0002-9116-3854 identifiers: - - identifier: https://orcid.org/0000-0002-9116-3854 + - identifier: 0000-0002-9116-3854 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pezzella given_name: Franco + id: 0000-0003-1941-0854 identifiers: - - identifier: https://orcid.org/0000-0003-1941-0854 + - identifier: 0000-0003-1941-0854 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Gruber given_name: Steffen + id: 0000-0003-3257-8854 identifiers: - - identifier: https://orcid.org/0000-0003-3257-8854 + - identifier: 0000-0003-3257-8854 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Renedo Anglada given_name: Jaime + id: 0000-0001-7542-2855 identifiers: - - identifier: https://orcid.org/0000-0001-7542-2855 + - identifier: 0000-0001-7542-2855 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Steinmaurer given_name: Alexander + id: 0000-0002-1760-2855 identifiers: - - identifier: https://orcid.org/0000-0002-1760-2855 + - identifier: 0000-0002-1760-2855 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Kocabey given_name: Samet + id: 0000-0002-3159-4855 identifiers: - - identifier: https://orcid.org/0000-0002-3159-4855 + - identifier: 0000-0002-3159-4855 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: annoni given_name: jean-marie + id: 0000-0002-4751-0855 identifiers: - - identifier: https://orcid.org/0000-0002-4751-0855 + - identifier: 0000-0002-4751-0855 scheme: orcid - affiliations: - name: TU Wien family_name: Hunold given_name: Sascha + id: 0000-0002-5280-3855 identifiers: - - identifier: https://orcid.org/0000-0002-5280-3855 + - identifier: 0000-0002-5280-3855 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "im Gl\xFCck" given_name: Hans + id: 0000-0002-7044-6855 identifiers: - - identifier: https://orcid.org/0000-0002-7044-6855 + - identifier: 0000-0002-7044-6855 scheme: orcid - affiliations: - name: University of Fribourg - name: Istituto Pasteur-Fondazione Cenci Bolognetti family_name: Brenna given_name: Andrea + id: 0000-0002-8542-9855 identifiers: - - identifier: https://orcid.org/0000-0002-8542-9855 + - identifier: 0000-0002-8542-9855 scheme: orcid - affiliations: - name: Northwestern University family_name: Cantrell given_name: Matt + id: 0000-0001-7234-8856 identifiers: - - identifier: https://orcid.org/0000-0001-7234-8856 + - identifier: 0000-0001-7234-8856 scheme: orcid - affiliations: - name: Northwestern University family_name: Weng given_name: Huan + id: 0000-0001-7960-3856 identifiers: - - identifier: https://orcid.org/0000-0001-7960-3856 + - identifier: 0000-0001-7960-3856 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Jende given_name: Konrad + id: 0000-0002-1231-1856 identifiers: - - identifier: https://orcid.org/0000-0002-1231-1856 + - identifier: 0000-0002-1231-1856 scheme: orcid - affiliations: - name: Northwestern University family_name: Hambleton given_name: James + id: 0000-0002-3644-4856 identifiers: - - identifier: https://orcid.org/0000-0002-3644-4856 + - identifier: 0000-0002-3644-4856 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mitman given_name: Keefe + id: 0000-0003-0276-3856 identifiers: - - identifier: https://orcid.org/0000-0003-0276-3856 + - identifier: 0000-0003-0276-3856 scheme: orcid - affiliations: - name: TU Wien family_name: Senra Ribeiro given_name: Felipe + id: 0000-0003-3618-9856 identifiers: - - identifier: https://orcid.org/0000-0003-3618-9856 + - identifier: 0000-0003-3618-9856 scheme: orcid - affiliations: - name: Samsung Semiconductor Inc USA - name: California Institute of Technology family_name: Siddique given_name: Radwanul Hasan + id: 0000-0001-7494-5857 identifiers: - - identifier: https://orcid.org/0000-0001-7494-5857 + - identifier: 0000-0001-7494-5857 scheme: orcid - affiliations: - name: TU Wien @@ -40530,57 +46164,65 @@ - name: "Technische Universit\xE4t Wien" family_name: Wagner given_name: Wolfgang + id: 0000-0001-7704-6857 identifiers: - - identifier: https://orcid.org/0000-0001-7704-6857 + - identifier: 0000-0001-7704-6857 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Robb given_name: Maxwell + id: 0000-0002-0528-9857 identifiers: - - identifier: https://orcid.org/0000-0002-0528-9857 + - identifier: 0000-0002-0528-9857 scheme: orcid - affiliations: - name: TU Wien family_name: Apaydin given_name: Dogukan Hazar + id: 0000-0002-1075-8857 identifiers: - - identifier: https://orcid.org/0000-0002-1075-8857 + - identifier: 0000-0002-1075-8857 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: moricciani given_name: dario + id: 0000-0002-1737-8857 identifiers: - - identifier: https://orcid.org/0000-0002-1737-8857 + - identifier: 0000-0002-1737-8857 scheme: orcid - affiliations: - name: Northwestern University family_name: Nicolozakes given_name: Constantine + id: 0000-0002-4842-2857 identifiers: - - identifier: https://orcid.org/0000-0002-4842-2857 + - identifier: 0000-0002-4842-2857 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Dozio given_name: Samuele Maria + id: 0000-0003-1567-2857 identifiers: - - identifier: https://orcid.org/0000-0003-1567-2857 + - identifier: 0000-0003-1567-2857 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "W\xFCnsch" given_name: Christian + id: 0000-0003-4367-3857 identifiers: - - identifier: https://orcid.org/0000-0003-4367-3857 + - identifier: 0000-0003-4367-3857 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Tranquada given_name: John + id: 0000-0003-4984-8857 identifiers: - - identifier: https://orcid.org/0000-0003-4984-8857 + - identifier: 0000-0003-4984-8857 scheme: orcid - affiliations: - name: TU Wien @@ -40589,263 +46231,300 @@ - name: Vienna University of Technology family_name: Jobst given_name: Markus + id: 0000-0001-5937-8858 identifiers: - - identifier: https://orcid.org/0000-0001-5937-8858 + - identifier: 0000-0001-5937-8858 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Bohn given_name: Lena + id: 0000-0001-5946-6858 identifiers: - - identifier: https://orcid.org/0000-0001-5946-6858 + - identifier: 0000-0001-5946-6858 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Matzer given_name: Claus + id: 0000-0002-3473-7858 identifiers: - - identifier: https://orcid.org/0000-0002-3473-7858 + - identifier: 0000-0002-3473-7858 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Di Rosa given_name: Andrea + id: 0000-0002-8372-3858 identifiers: - - identifier: https://orcid.org/0000-0002-8372-3858 + - identifier: 0000-0002-8372-3858 scheme: orcid - affiliations: - name: TU Wien family_name: Hirtl given_name: Albert + id: 0000-0001-5569-6859 identifiers: - - identifier: https://orcid.org/0000-0001-5569-6859 + - identifier: 0000-0001-5569-6859 scheme: orcid - affiliations: - name: Northwestern University family_name: He given_name: Pan + id: 0000-0001-7150-6859 identifiers: - - identifier: https://orcid.org/0000-0001-7150-6859 + - identifier: 0000-0001-7150-6859 scheme: orcid - affiliations: - name: CERN family_name: Meineri given_name: Marco + id: 0000-0002-0604-3859 identifiers: - - identifier: https://orcid.org/0000-0002-0604-3859 + - identifier: 0000-0002-0604-3859 scheme: orcid - affiliations: - name: TU Wien family_name: Kaniusas given_name: Eugenijus + id: 0000-0002-1228-3859 identifiers: - - identifier: https://orcid.org/0000-0002-1228-3859 + - identifier: 0000-0002-1228-3859 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Astria given_name: Efwita + id: 0000-0002-4219-1859 identifiers: - - identifier: https://orcid.org/0000-0002-4219-1859 + - identifier: 0000-0002-4219-1859 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Perez given_name: Andrew + id: 0000-0002-8723-4859 identifiers: - - identifier: https://orcid.org/0000-0002-8723-4859 + - identifier: 0000-0002-8723-4859 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Lichtenberger given_name: Achim + id: 0000-0003-2653-9859 identifiers: - - identifier: https://orcid.org/0000-0003-2653-9859 + - identifier: 0000-0003-2653-9859 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: maggiore given_name: mario + id: 0000-0003-3074-9859 identifiers: - - identifier: https://orcid.org/0000-0003-3074-9859 + - identifier: 0000-0003-3074-9859 scheme: orcid - affiliations: - name: Northwestern University family_name: Gowder given_name: Paul + id: 0000-0001-7641-585X identifiers: - - identifier: https://orcid.org/0000-0001-7641-585X + - identifier: 0000-0001-7641-585X scheme: orcid - affiliations: - name: Northwestern University family_name: Hester given_name: Josiah + id: 0000-0002-1680-085X identifiers: - - identifier: https://orcid.org/0000-0002-1680-085X + - identifier: 0000-0002-1680-085X scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Ruoyu + id: 0000-0002-5181-785X identifiers: - - identifier: https://orcid.org/0000-0002-5181-785X + - identifier: 0000-0002-5181-785X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Mayr given_name: Torsten + id: 0000-0002-7946-585X identifiers: - - identifier: https://orcid.org/0000-0002-7946-585X + - identifier: 0000-0002-7946-585X scheme: orcid - affiliations: - name: Northwestern University - name: Seoul National University family_name: Lee given_name: Minkyu + id: 0000-0002-8770-585X identifiers: - - identifier: https://orcid.org/0000-0002-8770-585X + - identifier: 0000-0002-8770-585X scheme: orcid - affiliations: - name: University of Bamberg family_name: Schwartz given_name: Tobias + id: 0000-0002-9803-385X identifiers: - - identifier: https://orcid.org/0000-0002-9803-385X + - identifier: 0000-0002-9803-385X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: University of Bamberg family_name: Stricker given_name: Stefanie + id: 0000-0003-3019-585X identifiers: - - identifier: https://orcid.org/0000-0003-3019-585X + - identifier: 0000-0003-3019-585X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "Kranei\xDF" given_name: Natalie + id: 0000-0003-3584-285X identifiers: - - identifier: https://orcid.org/0000-0003-3584-285X + - identifier: 0000-0003-3584-285X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Van Buren given_name: Gene + id: 0000-0001-8210-3860 identifiers: - - identifier: https://orcid.org/0000-0001-8210-3860 + - identifier: 0000-0001-8210-3860 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Coroian given_name: Vasile-Mihai + id: 0000-0003-2374-6860 identifiers: - - identifier: https://orcid.org/0000-0003-2374-6860 + - identifier: 0000-0003-2374-6860 scheme: orcid - affiliations: - name: TU Wien family_name: Cencic given_name: Oliver + id: 0000-0001-5022-8861 identifiers: - - identifier: https://orcid.org/0000-0001-5022-8861 + - identifier: 0000-0001-5022-8861 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Kaneko given_name: Tomoko + id: 0000-0001-5033-2861 identifiers: - - identifier: https://orcid.org/0000-0001-5033-2861 + - identifier: 0000-0001-5033-2861 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Sterba given_name: Johannes + id: 0000-0002-7883-8861 identifiers: - - identifier: https://orcid.org/0000-0002-7883-8861 + - identifier: 0000-0002-7883-8861 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lohrey given_name: Trevor D. + id: 0000-0003-3568-7861 identifiers: - - identifier: https://orcid.org/0000-0003-3568-7861 + - identifier: 0000-0003-3568-7861 scheme: orcid - affiliations: - name: Northwestern University family_name: Weng given_name: Anthea + id: 0000-0003-3909-8861 identifiers: - - identifier: https://orcid.org/0000-0003-3909-8861 + - identifier: 0000-0003-3909-8861 scheme: orcid - affiliations: - name: Quantum Simulation Technologies, Inc. - name: Northwestern University family_name: Shiozaki given_name: Toru + id: 0000-0002-0955-3862 identifiers: - - identifier: https://orcid.org/0000-0002-0955-3862 + - identifier: 0000-0002-0955-3862 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Hula given_name: Tobias + id: 0000-0002-1811-8862 identifiers: - - identifier: https://orcid.org/0000-0002-1811-8862 + - identifier: 0000-0002-1811-8862 scheme: orcid - affiliations: - name: University of Bamberg family_name: Erk given_name: Corina + id: 0000-0002-3657-8862 identifiers: - - identifier: https://orcid.org/0000-0002-3657-8862 + - identifier: 0000-0002-3657-8862 scheme: orcid - affiliations: - name: Northwestern University family_name: Song given_name: Saemee + id: 0000-0003-0021-8862 identifiers: - - identifier: https://orcid.org/0000-0003-0021-8862 + - identifier: 0000-0003-0021-8862 scheme: orcid - affiliations: - name: Northwestern University family_name: Rizzo given_name: Monica + id: 0000-0003-4690-2862 identifiers: - - identifier: https://orcid.org/0000-0003-4690-2862 + - identifier: 0000-0003-4690-2862 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lee given_name: Heejun + id: 0000-0002-0439-3863 identifiers: - - identifier: https://orcid.org/0000-0002-0439-3863 + - identifier: 0000-0002-0439-3863 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Rumetshofer given_name: Michael + id: 0000-0002-0977-6863 identifiers: - - identifier: https://orcid.org/0000-0002-0977-6863 + - identifier: 0000-0002-0977-6863 scheme: orcid - affiliations: - name: University of Fribourg family_name: "Gonz\xE1lez-Mart\xEDnez" given_name: Esther + id: 0000-0002-5239-5863 identifiers: - - identifier: https://orcid.org/0000-0002-5239-5863 + - identifier: 0000-0002-5239-5863 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Gao given_name: Yuan + id: 0000-0002-5435-8863 identifiers: - - identifier: https://orcid.org/0000-0002-5435-8863 + - identifier: 0000-0002-5435-8863 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kirschnick given_name: Nils + id: 0000-0002-5630-2863 identifiers: - - identifier: https://orcid.org/0000-0002-5630-2863 + - identifier: 0000-0002-5630-2863 scheme: orcid - affiliations: - name: SMS Group GmbH @@ -40854,350 +46533,399 @@ - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Reuter given_name: Markus + id: 0000-0003-0500-4863 identifiers: - - identifier: https://orcid.org/0000-0003-0500-4863 + - identifier: 0000-0003-0500-4863 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Turhan given_name: Derya + id: 0000-0001-6305-4864 identifiers: - - identifier: https://orcid.org/0000-0001-6305-4864 + - identifier: 0000-0001-6305-4864 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Stanewsky given_name: Ralf + id: 0000-0001-8238-6864 identifiers: - - identifier: https://orcid.org/0000-0001-8238-6864 + - identifier: 0000-0001-8238-6864 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Steinbauer given_name: Gerald + id: 0000-0001-9374-7864 identifiers: - - identifier: https://orcid.org/0000-0001-9374-7864 + - identifier: 0000-0001-9374-7864 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Sgaramella given_name: Francesco + id: 0000-0002-0011-8864 identifiers: - - identifier: https://orcid.org/0000-0002-0011-8864 + - identifier: 0000-0002-0011-8864 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: Scholz given_name: Johannes + id: 0000-0002-3212-8864 identifiers: - - identifier: https://orcid.org/0000-0002-3212-8864 + - identifier: 0000-0002-3212-8864 scheme: orcid - affiliations: - name: Northwestern University - name: University of Chicago family_name: Odom given_name: Brian + id: 0000-0002-3992-8864 identifiers: - - identifier: https://orcid.org/0000-0002-3992-8864 + - identifier: 0000-0002-3992-8864 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Valotta given_name: Alessia + id: 0000-0002-5599-5864 identifiers: - - identifier: https://orcid.org/0000-0002-5599-5864 + - identifier: 0000-0002-5599-5864 scheme: orcid - affiliations: - name: TU Wien family_name: Hochwallner given_name: Alexander + id: 0000-0001-5203-3865 identifiers: - - identifier: https://orcid.org/0000-0001-5203-3865 + - identifier: 0000-0001-5203-3865 scheme: orcid - affiliations: - name: Northwestern University family_name: Petersen given_name: Christian + id: 0000-0001-7552-6865 identifiers: - - identifier: https://orcid.org/0000-0001-7552-6865 + - identifier: 0000-0001-7552-6865 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Stoll given_name: Sean + id: 0000-0002-3011-8865 identifiers: - - identifier: https://orcid.org/0000-0002-3011-8865 + - identifier: 0000-0002-3011-8865 scheme: orcid - affiliations: - name: CERN family_name: Sterbini given_name: Guido + id: 0000-0002-7450-8865 identifiers: - - identifier: https://orcid.org/0000-0002-7450-8865 + - identifier: 0000-0002-7450-8865 scheme: orcid - affiliations: - name: TU Wien family_name: Mauerhofer given_name: Anna Magdalena + id: 0000-0002-7709-8865 identifiers: - - identifier: https://orcid.org/0000-0002-7709-8865 + - identifier: 0000-0002-7709-8865 scheme: orcid - affiliations: - name: TU Wien family_name: Gelautz given_name: Margrit + id: 0000-0002-9476-0865 identifiers: - - identifier: https://orcid.org/0000-0002-9476-0865 + - identifier: 0000-0002-9476-0865 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Stock given_name: Joann Miriam + id: 0000-0003-4816-7865 identifiers: - - identifier: https://orcid.org/0000-0003-4816-7865 + - identifier: 0000-0003-4816-7865 scheme: orcid - affiliations: - name: Northwestern University family_name: Braun given_name: Rosemary + id: 0000-0001-9668-9866 identifiers: - - identifier: https://orcid.org/0000-0001-9668-9866 + - identifier: 0000-0001-9668-9866 scheme: orcid - affiliations: - name: TU Wien family_name: Villa given_name: Riccardo M. + id: 0000-0002-2753-7866 identifiers: - - identifier: https://orcid.org/0000-0002-2753-7866 + - identifier: 0000-0002-2753-7866 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Marable given_name: Sierra + id: 0000-0002-2938-0866 identifiers: - - identifier: https://orcid.org/0000-0002-2938-0866 + - identifier: 0000-0002-2938-0866 scheme: orcid - affiliations: - name: Northwestern University family_name: Nemeth given_name: Alexander + id: 0000-0003-0579-3866 identifiers: - - identifier: https://orcid.org/0000-0003-0579-3866 + - identifier: 0000-0003-0579-3866 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Ponomaryov given_name: Alexey + id: 0000-0003-1200-2866 identifiers: - - identifier: https://orcid.org/0000-0003-1200-2866 + - identifier: 0000-0003-1200-2866 scheme: orcid - affiliations: - name: Northwestern University family_name: Luijten given_name: Erik + id: 0000-0003-2364-1866 identifiers: - - identifier: https://orcid.org/0000-0003-2364-1866 + - identifier: 0000-0003-2364-1866 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Eftekhari given_name: Milad + id: 0000-0003-2951-7866 identifiers: - - identifier: https://orcid.org/0000-0003-2951-7866 + - identifier: 0000-0003-2951-7866 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Yamamoto given_name: Shingo + id: 0000-0001-5819-2867 identifiers: - - identifier: https://orcid.org/0000-0001-5819-2867 + - identifier: 0000-0001-5819-2867 scheme: orcid - affiliations: - name: TU Wien family_name: Pillwein given_name: Stefan + id: 0000-0003-4045-3867 identifiers: - - identifier: https://orcid.org/0000-0003-4045-3867 + - identifier: 0000-0003-4045-3867 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Dagovych given_name: Tetyana + id: 0000-0003-4940-7867 identifiers: - - identifier: https://orcid.org/0000-0003-4940-7867 + - identifier: 0000-0003-4940-7867 scheme: orcid - affiliations: - name: Universidad Carlos III de Madrid - name: CERN family_name: CALVO given_name: JULIO + id: 0000-0001-7287-9868 identifiers: - - identifier: https://orcid.org/0000-0001-7287-9868 + - identifier: 0000-0001-7287-9868 scheme: orcid - affiliations: - name: TU Wien - name: dwh GmbH family_name: Bicher given_name: Martin + id: 0000-0002-1362-6868 identifiers: - - identifier: https://orcid.org/0000-0002-1362-6868 + - identifier: 0000-0002-1362-6868 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Harland given_name: Niklas + id: 0000-0002-5532-4868 identifiers: - - identifier: https://orcid.org/0000-0002-5532-4868 + - identifier: 0000-0002-5532-4868 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Lasemi given_name: Niusha + id: 0000-0002-9179-8868 identifiers: - - identifier: https://orcid.org/0000-0002-9179-8868 + - identifier: 0000-0002-9179-8868 scheme: orcid - affiliations: - name: Northwestern University - name: Los Alamos National Laboratory family_name: Li given_name: Haitao + id: 0000-0003-0682-2868 identifiers: - - identifier: https://orcid.org/0000-0003-0682-2868 + - identifier: 0000-0003-0682-2868 scheme: orcid - affiliations: - name: Northwestern University family_name: Jo given_name: Andrew + id: 0000-0003-4435-1868 identifiers: - - identifier: https://orcid.org/0000-0003-4435-1868 + - identifier: 0000-0003-4435-1868 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Resch given_name: Laura + id: 0000-0001-5812-2869 identifiers: - - identifier: https://orcid.org/0000-0001-5812-2869 + - identifier: 0000-0001-5812-2869 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Milek given_name: Anne + id: 0000-0001-6179-4869 identifiers: - - identifier: https://orcid.org/0000-0001-6179-4869 + - identifier: 0000-0001-6179-4869 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Kaufmann given_name: Hannes + id: 0000-0002-0322-9869 identifiers: - - identifier: https://orcid.org/0000-0002-0322-9869 + - identifier: 0000-0002-0322-9869 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Haas given_name: Maximilian + id: 0000-0002-1246-7869 identifiers: - - identifier: https://orcid.org/0000-0002-1246-7869 + - identifier: 0000-0002-1246-7869 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Tyler given_name: Bonnie + id: 0000-0002-3918-4869 identifiers: - - identifier: https://orcid.org/0000-0002-3918-4869 + - identifier: 0000-0002-3918-4869 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Buhl given_name: Florian + id: 0000-0002-4629-6869 identifiers: - - identifier: https://orcid.org/0000-0002-4629-6869 + - identifier: 0000-0002-4629-6869 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Nardi given_name: Marzia + id: 0000-0003-1574-9869 identifiers: - - identifier: https://orcid.org/0000-0003-1574-9869 + - identifier: 0000-0003-1574-9869 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Munnik given_name: Frans + id: 0000-0003-2506-6869 identifiers: - - identifier: https://orcid.org/0000-0003-2506-6869 + - identifier: 0000-0003-2506-6869 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Lampei given_name: Christian + id: 0000-0003-2866-2869 identifiers: - - identifier: https://orcid.org/0000-0003-2866-2869 + - identifier: 0000-0003-2866-2869 scheme: orcid - affiliations: - name: University of Bamberg family_name: Herold given_name: Michael + id: 0000-0003-3361-3869 identifiers: - - identifier: https://orcid.org/0000-0003-3361-3869 + - identifier: 0000-0003-3361-3869 scheme: orcid - affiliations: - name: Northwestern University family_name: Campbell given_name: Colin + id: 0000-0003-4500-8869 identifiers: - - identifier: https://orcid.org/0000-0003-4500-8869 + - identifier: 0000-0003-4500-8869 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "B\xF6ttner" given_name: Laura + id: 0000-0002-0742-686X identifiers: - - identifier: https://orcid.org/0000-0002-0742-686X + - identifier: 0000-0002-0742-686X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Preu\xDF" given_name: Johann A + id: 0000-0002-1296-286X identifiers: - - identifier: https://orcid.org/0000-0002-1296-286X + - identifier: 0000-0002-1296-286X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Undrus given_name: Alexander + id: 0000-0002-1384-286X identifiers: - - identifier: https://orcid.org/0000-0002-1384-286X + - identifier: 0000-0002-1384-286X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Negron Marty given_name: Arnaldo + id: 0000-0002-4738-086X identifiers: - - identifier: https://orcid.org/0000-0002-4738-086X + - identifier: 0000-0002-4738-086X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Herwig given_name: Sebastian + id: 0000-0003-0488-386X identifiers: - - identifier: https://orcid.org/0000-0003-0488-386X + - identifier: 0000-0003-0488-386X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Guse given_name: Simon + id: 0000-0001-6319-6870 identifiers: - - identifier: https://orcid.org/0000-0001-6319-6870 + - identifier: 0000-0001-6319-6870 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: San Mauro given_name: Luca + id: 0000-0002-3156-6870 identifiers: - - identifier: https://orcid.org/0000-0002-3156-6870 + - identifier: 0000-0002-3156-6870 scheme: orcid - affiliations: - name: "FH O\xD6 Forschungs und Entwicklungs GmbH" @@ -41205,121 +46933,138 @@ - name: "Fachhochschule Ober\xF6sterreich Fakult\xE4t f\xFCr Technik und Umweltwissenschaften" family_name: Heinzl given_name: Christoph + id: 0000-0002-3173-8871 identifiers: - - identifier: https://orcid.org/0000-0002-3173-8871 + - identifier: 0000-0002-3173-8871 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Fetzner given_name: Susanne + id: 0000-0002-7228-1871 identifiers: - - identifier: https://orcid.org/0000-0002-7228-1871 + - identifier: 0000-0002-7228-1871 scheme: orcid - affiliations: - name: CERN family_name: samec given_name: karel + id: 0000-0003-0377-0871 identifiers: - - identifier: https://orcid.org/0000-0003-0377-0871 + - identifier: 0000-0003-0377-0871 scheme: orcid - affiliations: - name: "Institut f\xFCr Weltraumforschung" - name: "Technische Universit\xE4t Graz" family_name: Scherzer given_name: Maximilian + id: 0000-0003-1688-9871 identifiers: - - identifier: https://orcid.org/0000-0003-1688-9871 + - identifier: 0000-0003-1688-9871 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Camerer given_name: Colin + id: 0000-0003-4049-1871 identifiers: - - identifier: https://orcid.org/0000-0003-4049-1871 + - identifier: 0000-0003-4049-1871 scheme: orcid - affiliations: - name: TU Wien family_name: Schrangl given_name: Lukas + id: 0000-0002-0420-7872 identifiers: - - identifier: https://orcid.org/0000-0002-0420-7872 + - identifier: 0000-0002-0420-7872 scheme: orcid - affiliations: - name: California Institute of Technology family_name: van Roestel given_name: Jan + id: 0000-0002-2626-2872 identifiers: - - identifier: https://orcid.org/0000-0002-2626-2872 + - identifier: 0000-0002-2626-2872 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Ippolito given_name: Nicola Daniele + id: 0000-0002-6357-3872 identifiers: - - identifier: https://orcid.org/0000-0002-6357-3872 + - identifier: 0000-0002-6357-3872 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gurjar given_name: Rohit + id: 0000-0002-8623-0872 identifiers: - - identifier: https://orcid.org/0000-0002-8623-0872 + - identifier: 0000-0002-8623-0872 scheme: orcid - affiliations: - name: TU Wien family_name: Tselios given_name: Konstantinos + id: 0000-0003-0599-9872 identifiers: - - identifier: https://orcid.org/0000-0003-0599-9872 + - identifier: 0000-0003-0599-9872 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Eirich given_name: Juergen + id: 0000-0003-0963-1872 identifiers: - - identifier: https://orcid.org/0000-0003-0963-1872 + - identifier: 0000-0003-0963-1872 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Dubois given_name: Corinne + id: 0000-0003-1779-7872 identifiers: - - identifier: https://orcid.org/0000-0003-1779-7872 + - identifier: 0000-0003-1779-7872 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Weissbourd given_name: Brandon + id: 0000-0001-5422-3873 identifiers: - - identifier: https://orcid.org/0000-0001-5422-3873 + - identifier: 0000-0001-5422-3873 scheme: orcid - affiliations: - name: Northwestern University family_name: Seegmiller given_name: Laura + id: 0000-0001-5857-4873 identifiers: - - identifier: https://orcid.org/0000-0001-5857-4873 + - identifier: 0000-0001-5857-4873 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Miltner given_name: Angela + id: 0000-0002-0034-9873 identifiers: - - identifier: https://orcid.org/0000-0002-0034-9873 + - identifier: 0000-0002-0034-9873 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Bica-Schr\xF6der" given_name: Katharina + id: 0000-0002-2515-9873 identifiers: - - identifier: https://orcid.org/0000-0002-2515-9873 + - identifier: 0000-0002-2515-9873 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Parikh given_name: Sarthak + id: 0000-0002-5831-3873 identifiers: - - identifier: https://orcid.org/0000-0002-5831-3873 + - identifier: 0000-0002-5831-3873 scheme: orcid - affiliations: - name: "Universit\xE4t Wien" @@ -41327,489 +47072,557 @@ - name: Fachhochschule Vorarlberg family_name: Steinberger given_name: Thomas + id: 0000-0002-5717-7873 identifiers: - - identifier: https://orcid.org/0000-0002-5717-7873 + - identifier: 0000-0002-5717-7873 scheme: orcid - affiliations: - name: CERN family_name: Klimek given_name: Pawel + id: 0000-0003-1661-6873 identifiers: - - identifier: https://orcid.org/0000-0003-1661-6873 + - identifier: 0000-0003-1661-6873 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Pandolfi given_name: Francesco + id: 0000-0001-8713-3874 identifiers: - - identifier: https://orcid.org/0000-0001-8713-3874 + - identifier: 0000-0001-8713-3874 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf - name: HZDR Innovation family_name: Klingner given_name: Nico + id: 0000-0001-9539-5874 identifiers: - - identifier: https://orcid.org/0000-0001-9539-5874 + - identifier: 0000-0001-9539-5874 scheme: orcid - affiliations: - name: TU Wien family_name: Hager given_name: Irene + id: 0000-0001-9901-1874 identifiers: - - identifier: https://orcid.org/0000-0001-9901-1874 + - identifier: 0000-0001-9901-1874 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Toth given_name: Christian + id: 0000-0002-0552-2874 identifiers: - - identifier: https://orcid.org/0000-0002-0552-2874 + - identifier: 0000-0002-0552-2874 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Dainese given_name: Andrea + id: 0000-0002-2166-1874 identifiers: - - identifier: https://orcid.org/0000-0002-2166-1874 + - identifier: 0000-0002-2166-1874 scheme: orcid - affiliations: - name: University of Fribourg - name: Nanjing Medical University family_name: Wang given_name: Jing + id: 0000-0002-3075-2874 identifiers: - - identifier: https://orcid.org/0000-0002-3075-2874 + - identifier: 0000-0002-3075-2874 scheme: orcid - affiliations: - name: Northwestern University family_name: Fisher given_name: Garth + id: 0000-0002-4013-3874 identifiers: - - identifier: https://orcid.org/0000-0002-4013-3874 + - identifier: 0000-0002-4013-3874 scheme: orcid - affiliations: - name: University of Bamberg family_name: Rumpf given_name: Philipp + id: 0000-0002-6093-5874 identifiers: - - identifier: https://orcid.org/0000-0002-6093-5874 + - identifier: 0000-0002-6093-5874 scheme: orcid - affiliations: - name: Northwestern University - name: Ben-Gurion University of the Negev Department of Life Sciences family_name: Shapira given_name: Michal + id: 0000-0002-6164-7874 identifiers: - - identifier: https://orcid.org/0000-0002-6164-7874 + - identifier: 0000-0002-6164-7874 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Huang given_name: Haixin + id: 0000-0003-1189-4874 identifiers: - - identifier: https://orcid.org/0000-0003-1189-4874 + - identifier: 0000-0003-1189-4874 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Kr\xFCger" given_name: Markus + id: 0000-0003-3364-7874 identifiers: - - identifier: https://orcid.org/0000-0003-3364-7874 + - identifier: 0000-0003-3364-7874 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: University of Zurich family_name: Paape given_name: Timothy + id: 0000-0002-3595-2875 identifiers: - - identifier: https://orcid.org/0000-0002-3595-2875 + - identifier: 0000-0002-3595-2875 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Roetner given_name: Jakob + id: 0000-0002-4374-1875 identifiers: - - identifier: https://orcid.org/0000-0002-4374-1875 + - identifier: 0000-0002-4374-1875 scheme: orcid - affiliations: - name: TU Wien - name: SBA Research family_name: Miksa given_name: Tomasz + id: 0000-0002-4929-7875 identifiers: - - identifier: https://orcid.org/0000-0002-4929-7875 + - identifier: 0000-0002-4929-7875 scheme: orcid - affiliations: - name: Northwestern University family_name: Canna given_name: Maddalena + id: 0000-0002-7506-5875 identifiers: - - identifier: https://orcid.org/0000-0002-7506-5875 + - identifier: 0000-0002-7506-5875 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Ender given_name: Johannes + id: 0000-0003-0972-0875 identifiers: - - identifier: https://orcid.org/0000-0003-0972-0875 + - identifier: 0000-0003-0972-0875 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Camporesi given_name: Tiziano + id: 0000-0001-5066-1876 identifiers: - - identifier: https://orcid.org/0000-0001-5066-1876 + - identifier: 0000-0001-5066-1876 scheme: orcid - affiliations: - name: Northwestern University family_name: Thibeault given_name: Jane + id: 0000-0001-5458-2876 identifiers: - - identifier: https://orcid.org/0000-0001-5458-2876 + - identifier: 0000-0001-5458-2876 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: smoliner given_name: juergen + id: 0000-0002-0395-4876 identifiers: - - identifier: https://orcid.org/0000-0002-0395-4876 + - identifier: 0000-0002-0395-4876 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gray given_name: Harry + id: 0000-0002-7937-7876 identifiers: - - identifier: https://orcid.org/0000-0002-7937-7876 + - identifier: 0000-0002-7937-7876 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Di Canto given_name: Angelo + id: 0000-0003-1233-3876 identifiers: - - identifier: https://orcid.org/0000-0003-1233-3876 + - identifier: 0000-0003-1233-3876 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hockaday given_name: Laura + id: 0000-0003-4060-9876 identifiers: - - identifier: https://orcid.org/0000-0003-4060-9876 + - identifier: 0000-0003-4060-9876 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Malounda given_name: Dina + id: 0000-0001-7086-9877 identifiers: - - identifier: https://orcid.org/0000-0001-7086-9877 + - identifier: 0000-0001-7086-9877 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Rashidibajgan given_name: Samaneh + id: 0000-0001-8260-8877 identifiers: - - identifier: https://orcid.org/0000-0001-8260-8877 + - identifier: 0000-0001-8260-8877 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Buechel given_name: Berno + id: 0000-0001-8709-7877 identifiers: - - identifier: https://orcid.org/0000-0001-8709-7877 + - identifier: 0000-0001-8709-7877 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Cavallari given_name: Francesca + id: 0000-0002-1061-3877 identifiers: - - identifier: https://orcid.org/0000-0002-1061-3877 + - identifier: 0000-0002-1061-3877 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Biasi given_name: Joseph + id: 0000-0003-1196-7877 identifiers: - - identifier: https://orcid.org/0000-0003-1196-7877 + - identifier: 0000-0003-1196-7877 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Arora given_name: Himani + id: 0000-0003-3318-9877 identifiers: - - identifier: https://orcid.org/0000-0003-3318-9877 + - identifier: 0000-0003-3318-9877 scheme: orcid - affiliations: - name: University of Fribourg family_name: Larionov given_name: Alexey + id: 0000-0001-6902-8878 identifiers: - - identifier: https://orcid.org/0000-0001-6902-8878 + - identifier: 0000-0001-6902-8878 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Campbell given_name: Stuart + id: 0000-0001-7079-0878 identifiers: - - identifier: https://orcid.org/0000-0001-7079-0878 + - identifier: 0000-0001-7079-0878 scheme: orcid - affiliations: - name: CERN family_name: Senes given_name: Eugenio + id: 0000-0001-9810-1878 identifiers: - - identifier: https://orcid.org/0000-0001-9810-1878 + - identifier: 0000-0001-9810-1878 scheme: orcid - affiliations: - name: University of Fribourg family_name: Aebischer given_name: Thierry + id: 0000-0002-0470-0878 identifiers: - - identifier: https://orcid.org/0000-0002-0470-0878 + - identifier: 0000-0002-0470-0878 scheme: orcid - affiliations: - name: Physical Sciences Inc. - name: Brookhaven National Laboratory family_name: Rameau given_name: Jonathan + id: 0000-0002-2517-3878 identifiers: - - identifier: https://orcid.org/0000-0002-2517-3878 + - identifier: 0000-0002-2517-3878 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Stollberger given_name: Rudolf + id: 0000-0002-4969-3878 identifiers: - - identifier: https://orcid.org/0000-0002-4969-3878 + - identifier: 0000-0002-4969-3878 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Fenwick given_name: Aidan + id: 0000-0003-4442-0878 identifiers: - - identifier: https://orcid.org/0000-0003-4442-0878 + - identifier: 0000-0003-4442-0878 scheme: orcid - affiliations: - name: "Ruhr-Universit\xE4t Bochum" - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Karis given_name: Tim + id: 0000-0003-4695-2878 identifiers: - - identifier: https://orcid.org/0000-0003-4695-2878 + - identifier: 0000-0003-4695-2878 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Wolff given_name: Reinhard + id: 0000-0002-0294-4879 identifiers: - - identifier: https://orcid.org/0000-0002-0294-4879 + - identifier: 0000-0002-0294-4879 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Haas given_name: Franz + id: 0000-0002-2971-7879 identifiers: - - identifier: https://orcid.org/0000-0002-2971-7879 + - identifier: 0000-0002-2971-7879 scheme: orcid - affiliations: - name: Northwestern University family_name: Liu given_name: Jian + id: 0000-0002-5024-1879 identifiers: - - identifier: https://orcid.org/0000-0002-5024-1879 + - identifier: 0000-0002-5024-1879 scheme: orcid - affiliations: - name: Northwestern University family_name: Gallagher given_name: Kevin + id: 0000-0002-8422-2879 identifiers: - - identifier: https://orcid.org/0000-0002-8422-2879 + - identifier: 0000-0002-8422-2879 scheme: orcid - affiliations: - name: CERN family_name: Wendt given_name: Manfred + id: 0000-0003-0401-9879 identifiers: - - identifier: https://orcid.org/0000-0003-0401-9879 + - identifier: 0000-0003-0401-9879 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cooper given_name: Simon + id: 0000-0003-1465-5879 identifiers: - - identifier: https://orcid.org/0000-0003-1465-5879 + - identifier: 0000-0003-1465-5879 scheme: orcid - affiliations: - name: TU Wien family_name: Lang given_name: Lukas F. + id: 0000-0003-2281-5879 identifiers: - - identifier: https://orcid.org/0000-0003-2281-5879 + - identifier: 0000-0003-2281-5879 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Michelotto given_name: Michele + id: 0000-0001-6644-987X identifiers: - - identifier: https://orcid.org/0000-0001-6644-987X + - identifier: 0000-0001-6644-987X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ramakrishnan given_name: Dinakar + id: 0000-0002-0159-087X identifiers: - - identifier: https://orcid.org/0000-0002-0159-087X + - identifier: 0000-0002-0159-087X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Xu given_name: Shuwa + id: 0000-0002-0798-487X identifiers: - - identifier: https://orcid.org/0000-0002-0798-487X + - identifier: 0000-0002-0798-487X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhang given_name: Liyuan + id: 0000-0002-0898-787X identifiers: - - identifier: https://orcid.org/0000-0002-0898-787X + - identifier: 0000-0002-0898-787X scheme: orcid - affiliations: - name: Northwestern University family_name: Linsenmeier given_name: Robert + id: 0000-0002-0834-687X identifiers: - - identifier: https://orcid.org/0000-0002-0834-687X + - identifier: 0000-0002-0834-687X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Bohl given_name: Martin + id: 0000-0002-1716-287X identifiers: - - identifier: https://orcid.org/0000-0002-1716-287X + - identifier: 0000-0002-1716-287X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yamamoto given_name: Kumiko + id: 0000-0002-6401-487X identifiers: - - identifier: https://orcid.org/0000-0002-6401-487X + - identifier: 0000-0002-6401-487X scheme: orcid - affiliations: - name: TU Wien - name: University of Vienna family_name: "M\xFCller" given_name: Sandra + id: 0000-0002-7224-187X identifiers: - - identifier: https://orcid.org/0000-0002-7224-187X + - identifier: 0000-0002-7224-187X scheme: orcid - affiliations: - name: Northwestern University family_name: Patel given_name: Jay + id: 0000-0001-9588-1880 identifiers: - - identifier: https://orcid.org/0000-0001-9588-1880 + - identifier: 0000-0001-9588-1880 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: "Zi\xF3\u0142ek" given_name: Wojciech + id: 0000-0002-2158-4880 identifiers: - - identifier: https://orcid.org/0000-0002-2158-4880 + - identifier: 0000-0002-2158-4880 scheme: orcid - affiliations: - name: Hirslanden Klinik im Park - name: "University of M\xFCnster" family_name: Waltenberger given_name: Johannes + id: 0000-0002-2417-9880 identifiers: - - identifier: https://orcid.org/0000-0002-2417-9880 + - identifier: 0000-0002-2417-9880 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Pape given_name: David + id: 0000-0002-3145-9880 identifiers: - - identifier: https://orcid.org/0000-0002-3145-9880 + - identifier: 0000-0002-3145-9880 scheme: orcid - affiliations: - name: Federal Reserve Bank of San Francisco - name: Northwestern University family_name: Rolnicki given_name: Sandra J.H. + id: 0000-0002-4849-6880 identifiers: - - identifier: https://orcid.org/0000-0002-4849-6880 + - identifier: 0000-0002-4849-6880 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mirhosseini given_name: Mohammad + id: 0000-0002-9084-6880 identifiers: - - identifier: https://orcid.org/0000-0002-9084-6880 + - identifier: 0000-0002-9084-6880 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: Porsche Consulting GmbH family_name: Duffner given_name: Fabian + id: 0000-0002-0113-0881 identifiers: - - identifier: https://orcid.org/0000-0002-0113-0881 + - identifier: 0000-0002-0113-0881 scheme: orcid - affiliations: - name: Northwestern University family_name: Mundt given_name: Jennifer + id: 0000-0002-0778-6881 identifiers: - - identifier: https://orcid.org/0000-0002-0778-6881 + - identifier: 0000-0002-0778-6881 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Yassin given_name: Ghada + id: 0000-0002-4474-7881 identifiers: - - identifier: https://orcid.org/0000-0002-4474-7881 + - identifier: 0000-0002-4474-7881 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Bussmann given_name: Michael + id: 0000-0002-8258-3881 identifiers: - - identifier: https://orcid.org/0000-0002-8258-3881 + - identifier: 0000-0002-8258-3881 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Alziati given_name: Federica + id: 0000-0002-9675-8881 identifiers: - - identifier: https://orcid.org/0000-0002-9675-8881 + - identifier: 0000-0002-9675-8881 scheme: orcid - affiliations: - name: University of Bamberg family_name: Rabold given_name: Johannes + id: 0000-0003-0656-5881 identifiers: - - identifier: https://orcid.org/0000-0003-0656-5881 + - identifier: 0000-0003-0656-5881 scheme: orcid - affiliations: - name: TU Wien family_name: Mischek given_name: Florian + id: 0000-0003-1166-3881 identifiers: - - identifier: https://orcid.org/0000-0003-1166-3881 + - identifier: 0000-0003-1166-3881 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" - name: "Di\xF6zesanbibliothek M\xFCnster" family_name: Krumeich given_name: Kirsten + id: 0000-0003-1808-0881 identifiers: - - identifier: https://orcid.org/0000-0003-1808-0881 + - identifier: 0000-0003-1808-0881 scheme: orcid - affiliations: - name: Northwestern University family_name: Montoya given_name: Cris + id: 0000-0001-5310-1882 identifiers: - - identifier: https://orcid.org/0000-0001-5310-1882 + - identifier: 0000-0001-5310-1882 scheme: orcid - affiliations: - name: University of Zurich @@ -41819,357 +47632,407 @@ - name: Technical University of Denmark family_name: Orellana given_name: Frederik + id: 0000-0001-7614-3882 identifiers: - - identifier: https://orcid.org/0000-0001-7614-3882 + - identifier: 0000-0001-7614-3882 scheme: orcid - affiliations: - name: TU Wien family_name: "\u0160ari\u0107" given_name: "\u017Deljko" + id: 0000-0001-9279-2882 identifiers: - - identifier: https://orcid.org/0000-0001-9279-2882 + - identifier: 0000-0001-9279-2882 scheme: orcid - affiliations: - name: TU Wien family_name: Savic given_name: Viktor + id: 0000-0002-0018-2882 identifiers: - - identifier: https://orcid.org/0000-0002-0018-2882 + - identifier: 0000-0002-0018-2882 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Roshankhah given_name: Shahrzad + id: 0000-0002-1160-7882 identifiers: - - identifier: https://orcid.org/0000-0002-1160-7882 + - identifier: 0000-0002-1160-7882 scheme: orcid - affiliations: - name: Northwestern University family_name: Sacak given_name: Begum + id: 0000-0002-7159-7882 identifiers: - - identifier: https://orcid.org/0000-0002-7159-7882 + - identifier: 0000-0002-7159-7882 scheme: orcid - affiliations: - name: CERN family_name: Vicente Barreto Pinto given_name: Mateus + id: 0000-0002-8000-4882 identifiers: - - identifier: https://orcid.org/0000-0002-8000-4882 + - identifier: 0000-0002-8000-4882 scheme: orcid - affiliations: - name: Northwestern University - name: The University of Hong Kong family_name: Lee given_name: Seungkyu + id: 0000-0003-3680-5882 identifiers: - - identifier: https://orcid.org/0000-0003-3680-5882 + - identifier: 0000-0003-3680-5882 scheme: orcid - affiliations: - name: TU Wien family_name: Si given_name: Liang + id: 0000-0003-4709-6882 identifiers: - - identifier: https://orcid.org/0000-0003-4709-6882 + - identifier: 0000-0003-4709-6882 scheme: orcid - affiliations: - name: Northwestern University family_name: Scott given_name: Kimberly + id: 0000-0001-6837-4883 identifiers: - - identifier: https://orcid.org/0000-0001-6837-4883 + - identifier: 0000-0001-6837-4883 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Fowley given_name: Ciaran + id: 0000-0002-3025-4883 identifiers: - - identifier: https://orcid.org/0000-0002-3025-4883 + - identifier: 0000-0002-3025-4883 scheme: orcid - affiliations: - name: TU Wien family_name: Chiappone-Piriou given_name: Emmanuelle + id: 0000-0002-8298-6883 identifiers: - - identifier: https://orcid.org/0000-0002-8298-6883 + - identifier: 0000-0002-8298-6883 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" - name: Vietnamese-German Center for Medical Research family_name: Velavan given_name: Thirumalaisamy P + id: 0000-0002-9809-9883 identifiers: - - identifier: https://orcid.org/0000-0002-9809-9883 + - identifier: 0000-0002-9809-9883 scheme: orcid - affiliations: - name: TU Wien family_name: Strasser given_name: Gottfried + id: 0000-0003-0147-0883 identifiers: - - identifier: https://orcid.org/0000-0003-0147-0883 + - identifier: 0000-0003-0147-0883 scheme: orcid - affiliations: - name: Karolinska Institutet - name: Northwestern University family_name: Fyrner given_name: Timmy + id: 0000-0003-2119-9883 identifiers: - - identifier: https://orcid.org/0000-0003-2119-9883 + - identifier: 0000-0003-2119-9883 scheme: orcid - affiliations: - name: TU Wien family_name: Zeck given_name: "G\xFCnther" + id: 0000-0003-3998-9883 identifiers: - - identifier: https://orcid.org/0000-0003-3998-9883 + - identifier: 0000-0003-3998-9883 scheme: orcid - affiliations: - name: Northwestern University family_name: Kimball given_name: Chase + id: 0000-0001-9879-6884 identifiers: - - identifier: https://orcid.org/0000-0001-9879-6884 + - identifier: 0000-0001-9879-6884 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Rossman given_name: George + id: 0000-0002-4571-6884 identifiers: - - identifier: https://orcid.org/0000-0002-4571-6884 + - identifier: 0000-0002-4571-6884 scheme: orcid - affiliations: - name: Northwestern University family_name: Venkataramanan given_name: Vidya + id: 0000-0002-4986-4884 identifiers: - - identifier: https://orcid.org/0000-0002-4986-4884 + - identifier: 0000-0002-4986-4884 scheme: orcid - affiliations: - name: Northwestern University family_name: Prats given_name: Maria + id: 0000-0002-9009-0884 identifiers: - - identifier: https://orcid.org/0000-0002-9009-0884 + - identifier: 0000-0002-9009-0884 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Khorosheva given_name: Eugenia + id: 0000-0003-3620-4884 identifiers: - - identifier: https://orcid.org/0000-0003-3620-4884 + - identifier: 0000-0003-3620-4884 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Iusupov given_name: Rinat + id: 0000-0003-4440-7884 identifiers: - - identifier: https://orcid.org/0000-0003-4440-7884 + - identifier: 0000-0003-4440-7884 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Zhang given_name: Xiaolong + id: 0000-0003-4695-5884 identifiers: - - identifier: https://orcid.org/0000-0003-4695-5884 + - identifier: 0000-0003-4695-5884 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Szukala given_name: Andrea + id: 0000-0001-6194-6885 identifiers: - - identifier: https://orcid.org/0000-0001-6194-6885 + - identifier: 0000-0001-6194-6885 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Alese given_name: Leonardo + id: 0000-0002-0592-9885 identifiers: - - identifier: https://orcid.org/0000-0002-0592-9885 + - identifier: 0000-0002-0592-9885 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Sullivan given_name: Terry + id: 0000-0002-1148-0885 identifiers: - - identifier: https://orcid.org/0000-0002-1148-0885 + - identifier: 0000-0002-1148-0885 scheme: orcid - affiliations: - name: TU Wien family_name: Opitz given_name: Alexander + id: 0000-0002-2567-1885 identifiers: - - identifier: https://orcid.org/0000-0002-2567-1885 + - identifier: 0000-0002-2567-1885 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Kohls given_name: Alexander + id: 0000-0002-3836-8885 identifiers: - - identifier: https://orcid.org/0000-0002-3836-8885 + - identifier: 0000-0002-3836-8885 scheme: orcid - affiliations: - name: Northwestern University - name: Northwestern University - Chicago family_name: Hockberger given_name: Philip + id: 0000-0002-4013-4885 identifiers: - - identifier: https://orcid.org/0000-0002-4013-4885 + - identifier: 0000-0002-4013-4885 scheme: orcid - affiliations: - name: The Ohio State University - name: California Institute of Technology family_name: Wang given_name: Ji + id: 0000-0002-4361-8885 identifiers: - - identifier: https://orcid.org/0000-0002-4361-8885 + - identifier: 0000-0002-4361-8885 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Rusch given_name: Tessa + id: 0000-0002-5445-6885 identifiers: - - identifier: https://orcid.org/0000-0002-5445-6885 + - identifier: 0000-0002-5445-6885 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Akbari given_name: Hamidreza + id: 0000-0002-6073-3885 identifiers: - - identifier: https://orcid.org/0000-0002-6073-3885 + - identifier: 0000-0002-6073-3885 scheme: orcid - affiliations: - name: University of Bamberg family_name: Schmuck given_name: David + id: 0000-0002-7501-1885 identifiers: - - identifier: https://orcid.org/0000-0002-7501-1885 + - identifier: 0000-0002-7501-1885 scheme: orcid - affiliations: - name: California Institute of Technology family_name: hellbourg given_name: gregory + id: 0000-0002-8191-3885 identifiers: - - identifier: https://orcid.org/0000-0002-8191-3885 + - identifier: 0000-0002-8191-3885 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Rosenmann given_name: Amnon + id: 0000-0003-0255-0885 identifiers: - - identifier: https://orcid.org/0000-0003-0255-0885 + - identifier: 0000-0003-0255-0885 scheme: orcid - affiliations: - name: Northwestern University family_name: Schlesinger given_name: Itai + id: 0000-0003-4039-7885 identifiers: - - identifier: https://orcid.org/0000-0003-4039-7885 + - identifier: 0000-0003-4039-7885 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: BEHTOUEI given_name: MOSTAFA + id: 0000-0003-4423-2885 identifiers: - - identifier: https://orcid.org/0000-0003-4423-2885 + - identifier: 0000-0003-4423-2885 scheme: orcid - affiliations: - name: TU Wien family_name: Theiner given_name: Dominik + id: 0000-0001-9024-9886 identifiers: - - identifier: https://orcid.org/0000-0001-9024-9886 + - identifier: 0000-0001-9024-9886 scheme: orcid - affiliations: - name: Northwestern University family_name: Lee given_name: Yea-Shine + id: 0000-0002-2087-4886 identifiers: - - identifier: https://orcid.org/0000-0002-2087-4886 + - identifier: 0000-0002-2087-4886 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wood given_name: Lincoln + id: 0000-0002-8775-3886 identifiers: - - identifier: https://orcid.org/0000-0002-8775-3886 + - identifier: 0000-0002-8775-3886 scheme: orcid - affiliations: - name: University of Fribourg family_name: "St\xF6ckli" given_name: Hubert + id: 0000-0003-2024-2886 identifiers: - - identifier: https://orcid.org/0000-0003-2024-2886 + - identifier: 0000-0003-2024-2886 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Vaheb given_name: Yousof + id: 0000-0003-4006-7886 identifiers: - - identifier: https://orcid.org/0000-0003-4006-7886 + - identifier: 0000-0003-4006-7886 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Behbahani given_name: Amir Hossein + id: 0000-0001-5603-6887 identifiers: - - identifier: https://orcid.org/0000-0001-5603-6887 + - identifier: 0000-0001-5603-6887 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Humpert given_name: Ina + id: 0000-0001-7365-3887 identifiers: - - identifier: https://orcid.org/0000-0001-7365-3887 + - identifier: 0000-0001-7365-3887 scheme: orcid - affiliations: - name: TU Wien family_name: Pagliari given_name: Valerio + id: 0000-0001-8750-2887 identifiers: - - identifier: https://orcid.org/0000-0001-8750-2887 + - identifier: 0000-0001-8750-2887 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: "Technische Universit\xE4t Berlin" family_name: Shrivastav given_name: Gaurav Prakash + id: 0000-0001-9152-8887 identifiers: - - identifier: https://orcid.org/0000-0001-9152-8887 + - identifier: 0000-0001-9152-8887 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Holert given_name: Johannes + id: 0000-0002-5056-7887 identifiers: - - identifier: https://orcid.org/0000-0002-5056-7887 + - identifier: 0000-0002-5056-7887 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Reimann given_name: Tommy + id: 0000-0003-3675-8887 identifiers: - - identifier: https://orcid.org/0000-0003-3675-8887 + - identifier: 0000-0003-3675-8887 scheme: orcid - affiliations: - name: University of Fribourg family_name: Daul given_name: Claude + id: 0000-0001-6283-5888 identifiers: - - identifier: https://orcid.org/0000-0001-6283-5888 + - identifier: 0000-0001-6283-5888 scheme: orcid - affiliations: - name: Northwestern University family_name: Gnanasekaran given_name: Karthikeyan + id: 0000-0001-6635-0888 identifiers: - - identifier: https://orcid.org/0000-0001-6635-0888 + - identifier: 0000-0001-6635-0888 scheme: orcid - affiliations: - name: TU Wien family_name: Arnold given_name: Anton + id: 0000-0001-9923-2888 identifiers: - - identifier: https://orcid.org/0000-0001-9923-2888 + - identifier: 0000-0001-9923-2888 scheme: orcid - affiliations: - name: University of Mannheim @@ -42177,182 +48040,207 @@ - name: Universitat Mannheim family_name: "Sch\xE4fer" given_name: Constantin + id: 0000-0002-0693-0888 identifiers: - - identifier: https://orcid.org/0000-0002-0693-0888 + - identifier: 0000-0002-0693-0888 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Plehn given_name: Hartmut + id: 0000-0002-5512-6888 identifiers: - - identifier: https://orcid.org/0000-0002-5512-6888 + - identifier: 0000-0002-5512-6888 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: Cracow University of Technology family_name: Scislo given_name: Lukasz + id: 0000-0002-7365-8888 identifiers: - - identifier: https://orcid.org/0000-0002-7365-8888 + - identifier: 0000-0002-7365-8888 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Cheng given_name: Yu-Shiuan + id: 0000-0002-7408-7888 identifiers: - - identifier: https://orcid.org/0000-0002-7408-7888 + - identifier: 0000-0002-7408-7888 scheme: orcid - affiliations: - name: TU Wien family_name: Jaron given_name: Frederic + id: 0000-0002-7449-0888 identifiers: - - identifier: https://orcid.org/0000-0002-7449-0888 + - identifier: 0000-0002-7449-0888 scheme: orcid - affiliations: - name: Northwestern University family_name: Hariman given_name: Robert + id: 0000-0003-2570-2888 identifiers: - - identifier: https://orcid.org/0000-0003-2570-2888 + - identifier: 0000-0003-2570-2888 scheme: orcid - affiliations: - name: The University of Western Australia - name: California Institute of Technology family_name: Blair given_name: Carl + id: 0000-0003-4566-6888 identifiers: - - identifier: https://orcid.org/0000-0003-4566-6888 + - identifier: 0000-0003-4566-6888 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Evans-Lutterodt given_name: Kenneth + id: 0000-0003-4743-4888 identifiers: - - identifier: https://orcid.org/0000-0003-4743-4888 + - identifier: 0000-0003-4743-4888 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "L\xF6ffler" given_name: Johannes + id: 0000-0001-5083-8889 identifiers: - - identifier: https://orcid.org/0000-0001-5083-8889 + - identifier: 0000-0001-5083-8889 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Benussi given_name: Luigi + id: 0000-0002-2363-8889 identifiers: - - identifier: https://orcid.org/0000-0002-2363-8889 + - identifier: 0000-0002-2363-8889 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "M\xF6ckel" given_name: Robert + id: 0000-0002-2583-6889 identifiers: - - identifier: https://orcid.org/0000-0002-2583-6889 + - identifier: 0000-0002-2583-6889 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Schreg given_name: Rainer + id: 0000-0002-9836-5889 identifiers: - - identifier: https://orcid.org/0000-0002-9836-5889 + - identifier: 0000-0002-9836-5889 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Franz given_name: Julia + id: 0000-0001-5731-288X identifiers: - - identifier: https://orcid.org/0000-0001-5731-288X + - identifier: 0000-0001-5731-288X scheme: orcid - affiliations: - name: LLRC OG - name: Graz University of Technology family_name: Okorn-Schmidt given_name: Harald + id: 0000-0001-9012-088X identifiers: - - identifier: https://orcid.org/0000-0001-9012-088X + - identifier: 0000-0001-9012-088X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "G\xE4belein" given_name: Philipp + id: 0000-0002-1860-588X identifiers: - - identifier: https://orcid.org/0000-0002-1860-588X + - identifier: 0000-0002-1860-588X scheme: orcid - affiliations: - name: University of Illinois System - name: Northwestern University family_name: Walsh given_name: Joseph + id: 0000-0002-8187-488X identifiers: - - identifier: https://orcid.org/0000-0002-8187-488X + - identifier: 0000-0002-8187-488X scheme: orcid - affiliations: - name: TU Wien family_name: Derx given_name: Julia + id: 0000-0002-9931-088X identifiers: - - identifier: https://orcid.org/0000-0002-9931-088X + - identifier: 0000-0002-9931-088X scheme: orcid - affiliations: - name: CERN - name: Center for High Performance Computing, CSIR family_name: Murray given_name: Sean + id: 0000-0003-0548-588X identifiers: - - identifier: https://orcid.org/0000-0003-0548-588X + - identifier: 0000-0003-0548-588X scheme: orcid - affiliations: - name: Northwestern University family_name: Shekhawat given_name: Gajendra + id: 0000-0003-3497-288X identifiers: - - identifier: https://orcid.org/0000-0003-3497-288X + - identifier: 0000-0003-3497-288X scheme: orcid - affiliations: - name: Northwestern University family_name: Guo given_name: Ping + id: 0000-0003-3495-688X identifiers: - - identifier: https://orcid.org/0000-0003-3495-688X + - identifier: 0000-0003-3495-688X scheme: orcid - affiliations: - name: CERN family_name: Jenninger given_name: Berthold + id: 0000-0001-7784-0890 identifiers: - - identifier: https://orcid.org/0000-0001-7784-0890 + - identifier: 0000-0001-7784-0890 scheme: orcid - affiliations: - name: Northwestern University family_name: Daneshkhah given_name: Ali + id: 0000-0002-1416-2890 identifiers: - - identifier: https://orcid.org/0000-0002-1416-2890 + - identifier: 0000-0002-1416-2890 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Brookhaven National Lab family_name: Konik given_name: Robert + id: 0000-0003-1209-6890 identifiers: - - identifier: https://orcid.org/0000-0003-1209-6890 + - identifier: 0000-0003-1209-6890 scheme: orcid - affiliations: - name: Northwestern University family_name: Draper given_name: Amanda + id: 0000-0001-6127-9891 identifiers: - - identifier: https://orcid.org/0000-0001-6127-9891 + - identifier: 0000-0001-6127-9891 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Noll given_name: Gundula + id: 0000-0002-1137-9891 identifiers: - - identifier: https://orcid.org/0000-0002-1137-9891 + - identifier: 0000-0002-1137-9891 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" @@ -42360,270 +48248,308 @@ r Integrative Neurowissenschaften" family_name: Walter given_name: Michael + id: 0000-0002-4237-8891 identifiers: - - identifier: https://orcid.org/0000-0002-4237-8891 + - identifier: 0000-0002-4237-8891 scheme: orcid - affiliations: - name: University of Maryland - name: California Institute of Technology family_name: Madsen given_name: Kristin + id: 0000-0003-1252-4891 identifiers: - - identifier: https://orcid.org/0000-0003-1252-4891 + - identifier: 0000-0003-1252-4891 scheme: orcid - affiliations: - name: Graz University of Technology family_name: S. de Carvalho given_name: Willian + id: 0000-0001-5005-5892 identifiers: - - identifier: https://orcid.org/0000-0001-5005-5892 + - identifier: 0000-0001-5005-5892 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Hennig given_name: Martin + id: 0000-0001-6257-4892 identifiers: - - identifier: https://orcid.org/0000-0001-6257-4892 + - identifier: 0000-0001-6257-4892 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Demmelmayer given_name: Paul + id: 0000-0001-9114-8892 identifiers: - - identifier: https://orcid.org/0000-0001-9114-8892 + - identifier: 0000-0001-9114-8892 scheme: orcid - affiliations: - name: Northwestern University family_name: Jimenez given_name: Felipe + id: 0000-0001-9473-6892 identifiers: - - identifier: https://orcid.org/0000-0001-9473-6892 + - identifier: 0000-0001-9473-6892 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Wilkening given_name: H. Martin R. + id: 0000-0001-9706-4892 identifiers: - - identifier: https://orcid.org/0000-0001-9706-4892 + - identifier: 0000-0001-9706-4892 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kroll given_name: Florian + id: 0000-0002-0275-9892 identifiers: - - identifier: https://orcid.org/0000-0002-0275-9892 + - identifier: 0000-0002-0275-9892 scheme: orcid - affiliations: - name: Northwestern University family_name: Day given_name: Abigail B. + id: 0000-0002-2289-9892 identifiers: - - identifier: https://orcid.org/0000-0002-2289-9892 + - identifier: 0000-0002-2289-9892 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "Hagm\xFCller" given_name: Martin + id: 0000-0002-2756-9892 identifiers: - - identifier: https://orcid.org/0000-0002-2756-9892 + - identifier: 0000-0002-2756-9892 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Bock given_name: Sebastian + id: 0000-0002-3420-8892 identifiers: - - identifier: https://orcid.org/0000-0002-3420-8892 + - identifier: 0000-0002-3420-8892 scheme: orcid - affiliations: - name: University of Fribourg family_name: Aeby given_name: Stefan + id: 0000-0002-4140-8892 identifiers: - - identifier: https://orcid.org/0000-0002-4140-8892 + - identifier: 0000-0002-4140-8892 scheme: orcid - affiliations: - name: Northwestern University family_name: Perry given_name: Michael + id: 0000-0002-8035-1892 identifiers: - - identifier: https://orcid.org/0000-0002-8035-1892 + - identifier: 0000-0002-8035-1892 scheme: orcid - affiliations: - name: TU Wien family_name: Schitter given_name: Georg + id: 0000-0002-8746-5892 identifiers: - - identifier: https://orcid.org/0000-0002-8746-5892 + - identifier: 0000-0002-8746-5892 scheme: orcid - affiliations: - name: Northwestern University family_name: Scott given_name: Evan + id: 0000-0002-8945-2892 identifiers: - - identifier: https://orcid.org/0000-0002-8945-2892 + - identifier: 0000-0002-8945-2892 scheme: orcid - affiliations: - name: Northwestern University family_name: O'Keefe given_name: Daniel + id: 0000-0003-1594-8892 identifiers: - - identifier: https://orcid.org/0000-0003-1594-8892 + - identifier: 0000-0003-1594-8892 scheme: orcid - affiliations: - name: CERN family_name: Wiesner given_name: Christoph Jens + id: 0000-0003-4082-8892 identifiers: - - identifier: https://orcid.org/0000-0003-4082-8892 + - identifier: 0000-0003-4082-8892 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Huang given_name: Xiaojing + id: 0000-0001-6034-5893 identifiers: - - identifier: https://orcid.org/0000-0001-6034-5893 + - identifier: 0000-0001-6034-5893 scheme: orcid - affiliations: - name: TU Wien family_name: Krebs given_name: Heinz + id: 0000-0001-9715-6893 identifiers: - - identifier: https://orcid.org/0000-0001-9715-6893 + - identifier: 0000-0001-9715-6893 scheme: orcid - affiliations: - name: CERN family_name: Asvesta given_name: Foteini + id: 0000-0002-3188-7893 identifiers: - - identifier: https://orcid.org/0000-0002-3188-7893 + - identifier: 0000-0002-3188-7893 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Royer given_name: Fabien + id: 0000-0003-2452-2893 identifiers: - - identifier: https://orcid.org/0000-0003-2452-2893 + - identifier: 0000-0003-2452-2893 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Xiaomi + id: 0000-0002-1294-6894 identifiers: - - identifier: https://orcid.org/0000-0002-1294-6894 + - identifier: 0000-0002-1294-6894 scheme: orcid - affiliations: - name: West and Central African Research and Education Network family_name: Oaiya given_name: Omo + id: 0000-0002-7046-8894 identifiers: - - identifier: https://orcid.org/0000-0002-7046-8894 + - identifier: 0000-0002-7046-8894 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Neumann given_name: Tobias + id: 0000-0003-1881-2894 identifiers: - - identifier: https://orcid.org/0000-0003-1881-2894 + - identifier: 0000-0003-1881-2894 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Xie given_name: Zhenhua + id: 0000-0003-3737-8894 identifiers: - - identifier: https://orcid.org/0000-0003-3737-8894 + - identifier: 0000-0003-3737-8894 scheme: orcid - affiliations: - name: University of Fribourg family_name: Frick given_name: Andrea + id: 0000-0001-6190-0895 identifiers: - - identifier: https://orcid.org/0000-0001-6190-0895 + - identifier: 0000-0001-6190-0895 scheme: orcid - affiliations: - name: CERN family_name: Golonka given_name: Piotr + id: 0000-0002-2589-8895 identifiers: - - identifier: https://orcid.org/0000-0002-2589-8895 + - identifier: 0000-0002-2589-8895 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lopez-Gomez given_name: Ignacio + id: 0000-0002-7255-5895 identifiers: - - identifier: https://orcid.org/0000-0002-7255-5895 + - identifier: 0000-0002-7255-5895 scheme: orcid - affiliations: - name: Northwestern University family_name: Iyer given_name: Abishek + id: 0000-0002-8582-3895 identifiers: - - identifier: https://orcid.org/0000-0002-8582-3895 + - identifier: 0000-0002-8582-3895 scheme: orcid - affiliations: - name: Northwestern University family_name: Oke given_name: Doris + id: 0000-0002-9660-2895 identifiers: - - identifier: https://orcid.org/0000-0002-9660-2895 + - identifier: 0000-0002-9660-2895 scheme: orcid - affiliations: - name: TU Wien family_name: Lupandina given_name: Irina + id: 0000-0003-3664-3895 identifiers: - - identifier: https://orcid.org/0000-0003-3664-3895 + - identifier: 0000-0003-3664-3895 scheme: orcid - affiliations: - name: Northwestern University family_name: Stokes given_name: Lauren + id: 0000-0003-4199-5895 identifiers: - - identifier: https://orcid.org/0000-0003-4199-5895 + - identifier: 0000-0003-4199-5895 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "Brandst\xF6tter" given_name: Andre + id: 0000-0003-4354-4895 identifiers: - - identifier: https://orcid.org/0000-0003-4354-4895 + - identifier: 0000-0003-4354-4895 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Appel given_name: Marius + id: 0000-0001-5281-3896 identifiers: - - identifier: https://orcid.org/0000-0001-5281-3896 + - identifier: 0000-0001-5281-3896 scheme: orcid - affiliations: - name: Northwestern University family_name: Sun given_name: Cheng + id: 0000-0002-2744-0896 identifiers: - - identifier: https://orcid.org/0000-0002-2744-0896 + - identifier: 0000-0002-2744-0896 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Iwamatsu given_name: Kazuhiro + id: 0000-0002-5977-6896 identifiers: - - identifier: https://orcid.org/0000-0002-5977-6896 + - identifier: 0000-0002-5977-6896 scheme: orcid - affiliations: - name: TU Wien family_name: Prasad given_name: Adarsh S + id: 0000-0002-7545-0896 identifiers: - - identifier: https://orcid.org/0000-0002-7545-0896 + - identifier: 0000-0002-7545-0896 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Eckhart given_name: Rene + id: 0000-0002-8095-4896 identifiers: - - identifier: https://orcid.org/0000-0002-8095-4896 + - identifier: 0000-0002-8095-4896 scheme: orcid - affiliations: - name: TU Wien @@ -42632,206 +48558,235 @@ - name: "Technische Universit\xE4t Wien" family_name: Kuhlmann given_name: Doerte + id: 0000-0002-8597-4896 identifiers: - - identifier: https://orcid.org/0000-0002-8597-4896 + - identifier: 0000-0002-8597-4896 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Beroiz given_name: Martin + id: 0000-0001-6486-9897 identifiers: - - identifier: https://orcid.org/0000-0001-6486-9897 + - identifier: 0000-0001-6486-9897 scheme: orcid - affiliations: - name: University of Fribourg family_name: Ascencao given_name: Kelly + id: 0000-0001-6693-6897 identifiers: - - identifier: https://orcid.org/0000-0001-6693-6897 + - identifier: 0000-0001-6693-6897 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Bauer given_name: Ernst + id: 0000-0001-7376-5897 identifiers: - - identifier: https://orcid.org/0000-0001-7376-5897 + - identifier: 0000-0001-7376-5897 scheme: orcid - affiliations: - name: Northwestern University family_name: Jung given_name: Hee Joon + id: 0000-0001-7963-0897 identifiers: - - identifier: https://orcid.org/0000-0001-7963-0897 + - identifier: 0000-0001-7963-0897 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: innoQ Deutschland GmbH family_name: Harrer given_name: Simon + id: 0000-0002-1023-9897 identifiers: - - identifier: https://orcid.org/0000-0002-1023-9897 + - identifier: 0000-0002-1023-9897 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Squyres given_name: Georgia + id: 0000-0002-8717-2897 identifiers: - - identifier: https://orcid.org/0000-0002-8717-2897 + - identifier: 0000-0002-8717-2897 scheme: orcid - affiliations: - name: University of Fribourg family_name: Filice given_name: Federica + id: 0000-0002-9798-7897 identifiers: - - identifier: https://orcid.org/0000-0002-9798-7897 + - identifier: 0000-0002-9798-7897 scheme: orcid - affiliations: - name: Northwestern University family_name: O'Connell given_name: Thomas + id: 0000-0002-2319-9898 identifiers: - - identifier: https://orcid.org/0000-0002-2319-9898 + - identifier: 0000-0002-2319-9898 scheme: orcid - affiliations: - name: Northwestern University family_name: Ochs given_name: Wendy + id: 0000-0002-3179-7898 identifiers: - - identifier: https://orcid.org/0000-0002-3179-7898 + - identifier: 0000-0002-3179-7898 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Solomonidou given_name: Anezina + id: 0000-0002-4033-5898 identifiers: - - identifier: https://orcid.org/0000-0002-4033-5898 + - identifier: 0000-0002-4033-5898 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Trueman given_name: Larry + id: 0000-0002-7463-1898 identifiers: - - identifier: https://orcid.org/0000-0002-7463-1898 + - identifier: 0000-0002-7463-1898 scheme: orcid - affiliations: - name: Northwestern University family_name: Wu given_name: Sally + id: 0000-0003-0096-7898 identifiers: - - identifier: https://orcid.org/0000-0003-0096-7898 + - identifier: 0000-0003-0096-7898 scheme: orcid - affiliations: - name: CERN family_name: "Cueto G\xF3mez" given_name: Ana Rosario + id: 0000-0003-1494-7898 identifiers: - - identifier: https://orcid.org/0000-0003-1494-7898 + - identifier: 0000-0003-1494-7898 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Dini given_name: Paolo + id: 0000-0001-7375-4899 identifiers: - - identifier: https://orcid.org/0000-0001-7375-4899 + - identifier: 0000-0001-7375-4899 scheme: orcid - affiliations: - name: Northwestern University family_name: Kaat given_name: Aaron + id: 0000-0001-8147-1899 identifiers: - - identifier: https://orcid.org/0000-0001-8147-1899 + - identifier: 0000-0001-8147-1899 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhao given_name: Yunjun + id: 0000-0001-5181-589X identifiers: - - identifier: https://orcid.org/0000-0001-5181-589X + - identifier: 0000-0001-5181-589X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Jalusic given_name: Kris Oliver + id: 0000-0001-7715-089X identifiers: - - identifier: https://orcid.org/0000-0001-7715-089X + - identifier: 0000-0001-7715-089X scheme: orcid - affiliations: - name: Northwestern University family_name: Mao given_name: Haochuan + id: 0000-0001-8742-089X identifiers: - - identifier: https://orcid.org/0000-0001-8742-089X + - identifier: 0000-0001-8742-089X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Loghin given_name: Ana-Maria + id: 0000-0001-8995-289X identifiers: - - identifier: https://orcid.org/0000-0001-8995-289X + - identifier: 0000-0001-8995-289X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Meer given_name: Philipp + id: 0000-0002-2846-489X identifiers: - - identifier: https://orcid.org/0000-0002-2846-489X + - identifier: 0000-0002-2846-489X scheme: orcid - affiliations: - name: Northwestern University family_name: Amaral given_name: Luis + id: 0000-0002-3762-789X identifiers: - - identifier: https://orcid.org/0000-0002-3762-789X + - identifier: 0000-0002-3762-789X scheme: orcid - affiliations: - name: Northwestern University - name: University of L'Aquila family_name: Fischietti given_name: Mariafausta + id: 0000-0002-5691-689X identifiers: - - identifier: https://orcid.org/0000-0002-5691-689X + - identifier: 0000-0002-5691-689X scheme: orcid - affiliations: - name: CERN family_name: Moreira given_name: Belmiro + id: 0000-0002-8747-289X identifiers: - - identifier: https://orcid.org/0000-0002-8747-289X + - identifier: 0000-0002-8747-289X scheme: orcid - affiliations: - name: Northwestern University family_name: Stern given_name: Charlotte + id: 0000-0002-9491-289X identifiers: - - identifier: https://orcid.org/0000-0002-9491-289X + - identifier: 0000-0002-9491-289X scheme: orcid - affiliations: - name: TU Wien family_name: Mossel given_name: Annette + id: 0000-0001-5861-4900 identifiers: - - identifier: https://orcid.org/0000-0001-5861-4900 + - identifier: 0000-0001-5861-4900 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Thomeczek given_name: Jan Philipp + id: 0000-0001-6620-0900 identifiers: - - identifier: https://orcid.org/0000-0001-6620-0900 + - identifier: 0000-0001-6620-0900 scheme: orcid - affiliations: - name: University of Fribourg family_name: Imoberdorf given_name: Sebastian + id: 0000-0003-2568-9900 identifiers: - - identifier: https://orcid.org/0000-0003-2568-9900 + - identifier: 0000-0003-2568-9900 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Serfon given_name: "C\xE9dric" + id: 0000-0001-7658-4901 identifiers: - - identifier: https://orcid.org/0000-0001-7658-4901 + - identifier: 0000-0001-7658-4901 scheme: orcid - affiliations: - name: "Fraunhofer-Institut f\xFCr Graphische Datenverarbeitung" @@ -42839,363 +48794,414 @@ - name: "Technische Universit\xE4t Graz" family_name: Fellner given_name: Dieter W. + id: 0000-0001-7756-0901 identifiers: - - identifier: https://orcid.org/0000-0001-7756-0901 + - identifier: 0000-0001-7756-0901 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Lindenthaler given_name: David + id: 0000-0001-8506-9901 identifiers: - - identifier: https://orcid.org/0000-0001-8506-9901 + - identifier: 0000-0001-8506-9901 scheme: orcid - affiliations: - name: Northwestern University - name: Westlake University family_name: Huang given_name: Jiaxing + id: 0000-0001-9176-8901 identifiers: - - identifier: https://orcid.org/0000-0001-9176-8901 + - identifier: 0000-0001-9176-8901 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Mendoza given_name: Charmae Franchesca + id: 0000-0001-9344-8901 identifiers: - - identifier: https://orcid.org/0000-0001-9344-8901 + - identifier: 0000-0001-9344-8901 scheme: orcid - affiliations: - name: Northwestern University - name: Northeastern State University family_name: Schoonover given_name: Timothy + id: 0000-0002-3804-4901 identifiers: - - identifier: https://orcid.org/0000-0002-3804-4901 + - identifier: 0000-0002-3804-4901 scheme: orcid - affiliations: - name: TU Wien family_name: Cho given_name: Joseph + id: 0000-0002-5634-9901 identifiers: - - identifier: https://orcid.org/0000-0002-5634-9901 + - identifier: 0000-0002-5634-9901 scheme: orcid - affiliations: - name: University of Bamberg family_name: "R\xF6seler" given_name: Lukas + id: 0000-0002-6446-1901 identifiers: - - identifier: https://orcid.org/0000-0002-6446-1901 + - identifier: 0000-0002-6446-1901 scheme: orcid - affiliations: - name: Northwestern University family_name: Marcelino given_name: Luisa + id: 0000-0003-0363-5901 identifiers: - - identifier: https://orcid.org/0000-0003-0363-5901 + - identifier: 0000-0003-0363-5901 scheme: orcid - affiliations: - name: Northwestern University family_name: Dumbrique given_name: Sesha Neheru + id: 0000-0003-1104-5901 identifiers: - - identifier: https://orcid.org/0000-0003-1104-5901 + - identifier: 0000-0003-1104-5901 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Fischer given_name: Susanne Maria + id: 0000-0002-8187-1902 identifiers: - - identifier: https://orcid.org/0000-0002-8187-1902 + - identifier: 0000-0002-8187-1902 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Masaki given_name: NISHIZAWA + id: 0000-0003-0439-1902 identifiers: - - identifier: https://orcid.org/0000-0003-0439-1902 + - identifier: 0000-0003-0439-1902 scheme: orcid - affiliations: - name: Northwestern University family_name: Cowan given_name: Henry R. + id: 0000-0001-9891-6903 identifiers: - - identifier: https://orcid.org/0000-0001-9891-6903 + - identifier: 0000-0001-9891-6903 scheme: orcid - affiliations: - name: TU Wien family_name: Squarcina given_name: Marco + id: 0000-0002-3105-0903 identifiers: - - identifier: https://orcid.org/0000-0002-3105-0903 + - identifier: 0000-0002-3105-0903 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Thies given_name: Frederik + id: 0000-0002-6809-9903 identifiers: - - identifier: https://orcid.org/0000-0002-6809-9903 + - identifier: 0000-0002-6809-9903 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Gres given_name: Anna + id: 0000-0002-6915-5903 identifiers: - - identifier: https://orcid.org/0000-0002-6915-5903 + - identifier: 0000-0002-6915-5903 scheme: orcid - affiliations: - name: TU Wien family_name: Batool given_name: Samar + id: 0000-0003-0314-9903 identifiers: - - identifier: https://orcid.org/0000-0003-0314-9903 + - identifier: 0000-0003-0314-9903 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Doiel given_name: Robert + id: 0000-0003-0900-6903 identifiers: - - identifier: https://orcid.org/0000-0003-0900-6903 + - identifier: 0000-0003-0900-6903 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Rox given_name: Hannes + id: 0000-0003-2826-6903 identifiers: - - identifier: https://orcid.org/0000-0003-2826-6903 + - identifier: 0000-0003-2826-6903 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: University of St. Gallen family_name: Wyssbrod given_name: Adrien + id: 0000-0001-9211-2904 identifiers: - - identifier: https://orcid.org/0000-0001-9211-2904 + - identifier: 0000-0001-9211-2904 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Schildknecht given_name: Dominik + id: 0000-0002-0678-0904 identifiers: - - identifier: https://orcid.org/0000-0002-0678-0904 + - identifier: 0000-0002-0678-0904 scheme: orcid - affiliations: - name: University of Fribourg family_name: Gaina given_name: Roxana + id: 0000-0002-3254-0904 identifiers: - - identifier: https://orcid.org/0000-0002-3254-0904 + - identifier: 0000-0002-3254-0904 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Huang given_name: Yuanlong + id: 0000-0002-6726-8904 identifiers: - - identifier: https://orcid.org/0000-0002-6726-8904 + - identifier: 0000-0002-6726-8904 scheme: orcid - affiliations: - name: Northwestern University family_name: Skelton given_name: Patrick + id: 0000-0002-6691-9904 identifiers: - - identifier: https://orcid.org/0000-0002-6691-9904 + - identifier: 0000-0002-6691-9904 scheme: orcid - affiliations: - name: TU Wien family_name: Kronister given_name: Stefan + id: 0000-0002-7076-6904 identifiers: - - identifier: https://orcid.org/0000-0002-7076-6904 + - identifier: 0000-0002-7076-6904 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ireland given_name: William + id: 0000-0003-0971-2904 identifiers: - - identifier: https://orcid.org/0000-0003-0971-2904 + - identifier: 0000-0003-0971-2904 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Cabelli given_name: Diane + id: 0000-0001-5767-9905 identifiers: - - identifier: https://orcid.org/0000-0001-5767-9905 + - identifier: 0000-0001-5767-9905 scheme: orcid - affiliations: - name: TU Wien family_name: Scharinger given_name: Alexander + id: 0000-0002-0641-8905 identifiers: - - identifier: https://orcid.org/0000-0002-0641-8905 + - identifier: 0000-0002-0641-8905 scheme: orcid - affiliations: - name: University of Bamberg family_name: Held given_name: Marco + id: 0000-0003-2370-2905 identifiers: - - identifier: https://orcid.org/0000-0003-2370-2905 + - identifier: 0000-0003-2370-2905 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Demandt given_name: Nicolle + id: 0000-0001-9560-1906 identifiers: - - identifier: https://orcid.org/0000-0001-9560-1906 + - identifier: 0000-0001-9560-1906 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Abbas given_name: Qamar + id: 0000-0002-1169-1906 identifiers: - - identifier: https://orcid.org/0000-0002-1169-1906 + - identifier: 0000-0002-1169-1906 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Schwarz given_name: Stefan + id: 0000-0002-4065-2906 identifiers: - - identifier: https://orcid.org/0000-0002-4065-2906 + - identifier: 0000-0002-4065-2906 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: McAndrew given_name: Michael + id: 0000-0002-6754-8906 identifiers: - - identifier: https://orcid.org/0000-0002-6754-8906 + - identifier: 0000-0002-6754-8906 scheme: orcid - affiliations: - name: TU Wien family_name: Borselli given_name: Filippo + id: 0000-0003-1733-0906 identifiers: - - identifier: https://orcid.org/0000-0003-1733-0906 + - identifier: 0000-0003-1733-0906 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ravindran given_name: Suraj + id: 0000-0003-2930-7906 identifiers: - - identifier: https://orcid.org/0000-0003-2930-7906 + - identifier: 0000-0003-2930-7906 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Tissot given_name: "Fran\xE7ois L.H." + id: 0000-0001-6622-2907 identifiers: - - identifier: https://orcid.org/0000-0001-6622-2907 + - identifier: 0000-0001-6622-2907 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Badeli given_name: Vahid + id: 0000-0002-0697-6907 identifiers: - - identifier: https://orcid.org/0000-0002-0697-6907 + - identifier: 0000-0002-0697-6907 scheme: orcid - affiliations: - name: California Institute of Technology - name: Kyungpook National University family_name: Park given_name: Hyunwoong + id: 0000-0002-4938-6907 identifiers: - - identifier: https://orcid.org/0000-0002-4938-6907 + - identifier: 0000-0002-4938-6907 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Lypetska given_name: Kateryna + id: 0000-0003-1110-0907 identifiers: - - identifier: https://orcid.org/0000-0003-1110-0907 + - identifier: 0000-0003-1110-0907 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Liemann given_name: Bernhard + id: 0000-0003-4167-6907 identifiers: - - identifier: https://orcid.org/0000-0003-4167-6907 + - identifier: 0000-0003-4167-6907 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Zhang given_name: Chi + id: 0000-0001-8660-6908 identifiers: - - identifier: https://orcid.org/0000-0001-8660-6908 + - identifier: 0000-0001-8660-6908 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Li given_name: Li + id: 0000-0001-9479-6908 identifiers: - - identifier: https://orcid.org/0000-0001-9479-6908 + - identifier: 0000-0001-9479-6908 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Eder given_name: Michael + id: 0000-0002-4702-6908 identifiers: - - identifier: https://orcid.org/0000-0002-4702-6908 + - identifier: 0000-0002-4702-6908 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Batygin given_name: Konstantin + id: 0000-0002-7094-7908 identifiers: - - identifier: https://orcid.org/0000-0002-7094-7908 + - identifier: 0000-0002-7094-7908 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Plank given_name: Harald + id: 0000-0003-1112-0908 identifiers: - - identifier: https://orcid.org/0000-0003-1112-0908 + - identifier: 0000-0003-1112-0908 scheme: orcid - affiliations: - name: Northwestern University family_name: "\u015Eim\u015Fek" given_name: "Ka\u011Fan" + id: 0000-0003-1741-8908 identifiers: - - identifier: https://orcid.org/0000-0003-1741-8908 + - identifier: 0000-0003-1741-8908 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Middleton given_name: Sophie + id: 0000-0003-3380-5908 identifiers: - - identifier: https://orcid.org/0000-0003-3380-5908 + - identifier: 0000-0003-3380-5908 scheme: orcid - affiliations: - name: TU Wien family_name: Riegler given_name: Rainer + id: 0000-0003-4544-3908 identifiers: - - identifier: https://orcid.org/0000-0003-4544-3908 + - identifier: 0000-0003-4544-3908 scheme: orcid - affiliations: - name: Northwestern University family_name: Watkins given_name: Nicolas + id: 0000-0002-0417-7909 identifiers: - - identifier: https://orcid.org/0000-0002-0417-7909 + - identifier: 0000-0002-0417-7909 scheme: orcid - affiliations: - name: Northwestern University family_name: Faizi given_name: Hammad + id: 0000-0002-5122-1909 identifiers: - - identifier: https://orcid.org/0000-0002-5122-1909 + - identifier: 0000-0002-5122-1909 scheme: orcid - affiliations: - name: Northwestern University family_name: Das given_name: Pradipta + id: 0000-0002-6530-8909 identifiers: - - identifier: https://orcid.org/0000-0002-6530-8909 + - identifier: 0000-0002-6530-8909 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Fabbricatore given_name: Pasquale + id: 0000-0003-0683-5909 identifiers: - - identifier: https://orcid.org/0000-0003-0683-5909 + - identifier: 0000-0003-0683-5909 scheme: orcid - affiliations: - name: Universidade do Porto @@ -43206,458 +49212,522 @@ - name: "Instituto Polit\xE9cnico de Leiria" family_name: Faustino given_name: "Jo\xE3o" + id: 0000-0003-4131-5909 identifiers: - - identifier: https://orcid.org/0000-0003-4131-5909 + - identifier: 0000-0003-4131-5909 scheme: orcid - affiliations: - name: Northwestern University family_name: Alejandro given_name: Eduardo + id: 0000-0001-7182-390X identifiers: - - identifier: https://orcid.org/0000-0001-7182-390X + - identifier: 0000-0001-7182-390X scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: New York Structural Biology Center family_name: Liu given_name: Qun + id: 0000-0002-1179-290X identifiers: - - identifier: https://orcid.org/0000-0002-1179-290X + - identifier: 0000-0002-1179-290X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Jurkat given_name: Solveig + id: 0000-0002-4308-190X identifiers: - - identifier: https://orcid.org/0000-0002-4308-190X + - identifier: 0000-0002-4308-190X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Taylor given_name: Andrew + id: 0000-0002-5990-590X identifiers: - - identifier: https://orcid.org/0000-0002-5990-590X + - identifier: 0000-0002-5990-590X scheme: orcid - affiliations: - name: Northwestern University family_name: Liu given_name: Li-Ning + id: 0000-0002-9528-790X identifiers: - - identifier: https://orcid.org/0000-0002-9528-790X + - identifier: 0000-0002-9528-790X scheme: orcid - affiliations: - name: TU Wien family_name: Weil given_name: Matthias + id: 0000-0001-5235-9910 identifiers: - - identifier: https://orcid.org/0000-0001-5235-9910 + - identifier: 0000-0001-5235-9910 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Sauer given_name: Lisa + id: 0000-0001-5217-2910 identifiers: - - identifier: https://orcid.org/0000-0001-5217-2910 + - identifier: 0000-0001-5217-2910 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Bin + id: 0000-0001-6581-1910 identifiers: - - identifier: https://orcid.org/0000-0001-6581-1910 + - identifier: 0000-0001-6581-1910 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ragon given_name: "Th\xE9a" + id: 0000-0002-1276-1910 identifiers: - - identifier: https://orcid.org/0000-0002-1276-1910 + - identifier: 0000-0002-1276-1910 scheme: orcid - affiliations: - name: "Institut f\xFCr Arbeitsmarkt- und Berufsforschung" - name: University of Bamberg family_name: Dauth given_name: Wolfgang + id: 0000-0002-4269-6910 identifiers: - - identifier: https://orcid.org/0000-0002-4269-6910 + - identifier: 0000-0002-4269-6910 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Masood given_name: Umar + id: 0000-0002-5248-0910 identifiers: - - identifier: https://orcid.org/0000-0002-5248-0910 + - identifier: 0000-0002-5248-0910 scheme: orcid - affiliations: - name: University of Fribourg family_name: Beck given_name: Jonas + id: 0000-0002-4637-5911 identifiers: - - identifier: https://orcid.org/0000-0002-4637-5911 + - identifier: 0000-0002-4637-5911 scheme: orcid - affiliations: - name: Brookhaven National Laboratory - name: Peking University Shenzhen Graduate School family_name: Zhang given_name: Ming-Jian + id: 0000-0002-6843-5911 identifiers: - - identifier: https://orcid.org/0000-0002-6843-5911 + - identifier: 0000-0002-6843-5911 scheme: orcid - affiliations: - name: Northwestern University family_name: zhu given_name: wei + id: 0000-0003-0197-9911 identifiers: - - identifier: https://orcid.org/0000-0003-0197-9911 + - identifier: 0000-0003-0197-9911 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Sampedro given_name: Angel + id: 0000-0003-1826-0911 identifiers: - - identifier: https://orcid.org/0000-0003-1826-0911 + - identifier: 0000-0003-1826-0911 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Siegwart given_name: Martina + id: 0000-0001-6781-4912 identifiers: - - identifier: https://orcid.org/0000-0001-6781-4912 + - identifier: 0000-0001-6781-4912 scheme: orcid - affiliations: - name: TU Wien family_name: "Fr\xFChwirt" given_name: Peter + id: 0000-0001-7559-0912 identifiers: - - identifier: https://orcid.org/0000-0001-7559-0912 + - identifier: 0000-0001-7559-0912 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Acosta given_name: Mateo + id: 0000-0002-0098-7912 identifiers: - - identifier: https://orcid.org/0000-0002-0098-7912 + - identifier: 0000-0002-0098-7912 scheme: orcid - affiliations: - name: Northwestern University family_name: Reczek given_name: Colleen R + id: 0000-0002-9106-5912 identifiers: - - identifier: https://orcid.org/0000-0002-9106-5912 + - identifier: 0000-0002-9106-5912 scheme: orcid - affiliations: - name: TU Wien - name: Danube University Krems family_name: Franzl given_name: Gerald + id: 0000-0003-0260-9912 identifiers: - - identifier: https://orcid.org/0000-0003-0260-9912 + - identifier: 0000-0003-0260-9912 scheme: orcid - affiliations: - name: California Institute of Technology family_name: saito given_name: kota + id: 0000-0003-1189-8912 identifiers: - - identifier: https://orcid.org/0000-0003-1189-8912 + - identifier: 0000-0003-1189-8912 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wei given_name: Hanyu + id: 0000-0003-1973-4912 identifiers: - - identifier: https://orcid.org/0000-0003-1973-4912 + - identifier: 0000-0003-1973-4912 scheme: orcid - affiliations: - name: TU Wien family_name: Hofmann given_name: Rene + id: 0000-0001-6580-4913 identifiers: - - identifier: https://orcid.org/0000-0001-6580-4913 + - identifier: 0000-0001-6580-4913 scheme: orcid - affiliations: - name: University of Fribourg family_name: Lauber-Biason given_name: Anna + id: 0000-0001-8966-2913 identifiers: - - identifier: https://orcid.org/0000-0001-8966-2913 + - identifier: 0000-0001-8966-2913 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Meyer given_name: Markus + id: 0000-0002-1912-0913 identifiers: - - identifier: https://orcid.org/0000-0002-1912-0913 + - identifier: 0000-0002-1912-0913 scheme: orcid - affiliations: - name: Northwestern University family_name: Yan given_name: Huan + id: 0000-0002-3734-5913 identifiers: - - identifier: https://orcid.org/0000-0002-3734-5913 + - identifier: 0000-0002-3734-5913 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Boktor given_name: Joseph + id: 0000-0003-2456-1913 identifiers: - - identifier: https://orcid.org/0000-0003-2456-1913 + - identifier: 0000-0003-2456-1913 scheme: orcid - affiliations: - name: CERN family_name: Rumolo given_name: Giovanni + id: 0000-0002-1543-0914 identifiers: - - identifier: https://orcid.org/0000-0002-1543-0914 + - identifier: 0000-0002-1543-0914 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: "R\xFCsseler" given_name: Jascha + id: 0000-0002-5053-5914 identifiers: - - identifier: https://orcid.org/0000-0002-5053-5914 + - identifier: 0000-0002-5053-5914 scheme: orcid - affiliations: - name: University of Maryland - name: California Institute of Technology family_name: chen given_name: lei + id: 0000-0002-5941-7914 identifiers: - - identifier: https://orcid.org/0000-0002-5941-7914 + - identifier: 0000-0002-5941-7914 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "K\xFCmmel" given_name: Daniel + id: 0000-0003-3950-5914 identifiers: - - identifier: https://orcid.org/0000-0003-3950-5914 + - identifier: 0000-0003-3950-5914 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kruse given_name: Thorsten + id: 0000-0001-9799-3915 identifiers: - - identifier: https://orcid.org/0000-0001-9799-3915 + - identifier: 0000-0001-9799-3915 scheme: orcid - affiliations: - name: Northwestern University family_name: Bochynek given_name: Thomas + id: 0000-0002-5564-7915 identifiers: - - identifier: https://orcid.org/0000-0002-5564-7915 + - identifier: 0000-0002-5564-7915 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Cestelli Guidi given_name: Mariangela + id: 0000-0002-6884-3915 identifiers: - - identifier: https://orcid.org/0000-0002-6884-3915 + - identifier: 0000-0002-6884-3915 scheme: orcid - affiliations: - name: TU Wien family_name: Pekovits given_name: Markus + id: 0000-0002-7529-3915 identifiers: - - identifier: https://orcid.org/0000-0002-7529-3915 + - identifier: 0000-0002-7529-3915 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Davis given_name: Andrew + id: 0000-0002-9922-8915 identifiers: - - identifier: https://orcid.org/0000-0002-9922-8915 + - identifier: 0000-0002-9922-8915 scheme: orcid - affiliations: - name: University of Fribourg family_name: Le Donne given_name: Enrico + id: 0000-0002-4415-9916 identifiers: - - identifier: https://orcid.org/0000-0002-4415-9916 + - identifier: 0000-0002-4415-9916 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Osawa given_name: Koji + id: 0000-0003-1735-4916 identifiers: - - identifier: https://orcid.org/0000-0003-1735-4916 + - identifier: 0000-0003-1735-4916 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Valiov given_name: Vladimir + id: 0000-0001-5576-6917 identifiers: - - identifier: https://orcid.org/0000-0001-5576-6917 + - identifier: 0000-0001-5576-6917 scheme: orcid - affiliations: - name: TU Wien family_name: "Kemmetm\xFCller" given_name: Wolfgang + id: 0000-0001-7825-5917 identifiers: - - identifier: https://orcid.org/0000-0001-7825-5917 + - identifier: 0000-0001-7825-5917 scheme: orcid - affiliations: - name: TU Wien - name: University of Melbourne family_name: Gabela given_name: Jelena + id: 0000-0002-0186-5917 identifiers: - - identifier: https://orcid.org/0000-0002-0186-5917 + - identifier: 0000-0002-0186-5917 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Tauchnitz given_name: Tina + id: 0000-0002-4599-9917 identifiers: - - identifier: https://orcid.org/0000-0002-4599-9917 + - identifier: 0000-0002-4599-9917 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Modestino given_name: Giuseppina + id: 0000-0003-1556-3917 identifiers: - - identifier: https://orcid.org/0000-0003-1556-3917 + - identifier: 0000-0003-1556-3917 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Schloegl given_name: Matthias + id: 0000-0003-1842-2917 identifiers: - - identifier: https://orcid.org/0000-0003-1842-2917 + - identifier: 0000-0003-1842-2917 scheme: orcid - affiliations: - name: Northwestern University family_name: Anderson given_name: Mark + id: 0000-0001-7746-7918 identifiers: - - identifier: https://orcid.org/0000-0001-7746-7918 + - identifier: 0000-0001-7746-7918 scheme: orcid - affiliations: - name: CERN family_name: CARRA given_name: FEDERICO + id: 0000-0002-8584-7918 identifiers: - - identifier: https://orcid.org/0000-0002-8584-7918 + - identifier: 0000-0002-8584-7918 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kuiper given_name: Thomas + id: 0000-0003-1798-4918 identifiers: - - identifier: https://orcid.org/0000-0003-1798-4918 + - identifier: 0000-0003-1798-4918 scheme: orcid - affiliations: - name: CERN - name: Johannes Gutenberg University of Mainz family_name: Marchevski given_name: Radoslav + id: 0000-0003-3410-0918 identifiers: - - identifier: https://orcid.org/0000-0003-3410-0918 + - identifier: 0000-0003-3410-0918 scheme: orcid - affiliations: - name: Vienna Institute for Political Economy Research VIPER e.V. - name: TU Wien family_name: Hanappi given_name: Hardy + id: 0000-0001-5394-4919 identifiers: - - identifier: https://orcid.org/0000-0001-5394-4919 + - identifier: 0000-0001-5394-4919 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Schipfer given_name: Fabian + id: 0000-0001-6732-6919 identifiers: - - identifier: https://orcid.org/0000-0001-6732-6919 + - identifier: 0000-0001-6732-6919 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Itel given_name: Julia + id: 0000-0001-6627-8919 identifiers: - - identifier: https://orcid.org/0000-0001-6627-8919 + - identifier: 0000-0001-6627-8919 scheme: orcid - affiliations: - name: University of Fribourg family_name: Meuwly given_name: Nathalie + id: 0000-0002-0694-6919 identifiers: - - identifier: https://orcid.org/0000-0002-0694-6919 + - identifier: 0000-0002-0694-6919 scheme: orcid - affiliations: - name: Northwestern University family_name: Le Hung given_name: Bao + id: 0000-0002-3159-4919 identifiers: - - identifier: https://orcid.org/0000-0002-3159-4919 + - identifier: 0000-0002-3159-4919 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schulz given_name: Henrik + id: 0000-0002-7551-1919 identifiers: - - identifier: https://orcid.org/0000-0002-7551-1919 + - identifier: 0000-0002-7551-1919 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: De Stefano Jr given_name: John Steven + id: 0000-0002-9986-3919 identifiers: - - identifier: https://orcid.org/0000-0002-9986-3919 + - identifier: 0000-0002-9986-3919 scheme: orcid - affiliations: - name: TU Wien - name: "Universidade de Vigo Centro de Investigaciones Biom\xE9dicas" family_name: "Prado L\xF3pez" given_name: Sonia + id: 0000-0003-0918-7919 identifiers: - - identifier: https://orcid.org/0000-0003-0918-7919 + - identifier: 0000-0003-0918-7919 scheme: orcid - affiliations: - name: TU Wien family_name: Schloegel given_name: Matthias + id: 0000-0003-1549-9919 identifiers: - - identifier: https://orcid.org/0000-0003-1549-9919 + - identifier: 0000-0003-1549-9919 scheme: orcid - affiliations: - name: Northwestern University family_name: Mikhelson given_name: Ilya + id: 0000-0001-5111-791X identifiers: - - identifier: https://orcid.org/0000-0001-5111-791X + - identifier: 0000-0001-5111-791X scheme: orcid - affiliations: - name: TU Wien family_name: Hensely-Schinkinger given_name: Susanne + id: 0000-0001-5428-991X identifiers: - - identifier: https://orcid.org/0000-0001-5428-991X + - identifier: 0000-0001-5428-991X scheme: orcid - affiliations: - name: University of Fribourg family_name: Becker-Cavallin given_name: Anna + id: 0000-0002-1818-291X identifiers: - - identifier: https://orcid.org/0000-0002-1818-291X + - identifier: 0000-0002-1818-291X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Stagkourakis given_name: Stefanos + id: 0000-0003-1218-791X identifiers: - - identifier: https://orcid.org/0000-0003-1218-791X + - identifier: 0000-0003-1218-791X scheme: orcid - affiliations: - name: University of Fribourg family_name: Vuille given_name: Joelle + id: 0000-0003-1786-991X identifiers: - - identifier: https://orcid.org/0000-0003-1786-991X + - identifier: 0000-0003-1786-991X scheme: orcid - affiliations: - name: Northwestern University family_name: Cole given_name: Jennifer + id: 0000-0002-0465-4920 identifiers: - - identifier: https://orcid.org/0000-0002-0465-4920 + - identifier: 0000-0002-0465-4920 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" @@ -43665,87 +49735,99 @@ - name: "Zentrum f\xFCr Elektronenmikroskopie Graz" family_name: Lammer given_name: Judith + id: 0000-0002-0697-5920 identifiers: - - identifier: https://orcid.org/0000-0002-0697-5920 + - identifier: 0000-0002-0697-5920 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "Sch\xFClke" given_name: Christoph + id: 0000-0003-0551-9920 identifiers: - - identifier: https://orcid.org/0000-0003-0551-9920 + - identifier: 0000-0003-0551-9920 scheme: orcid - affiliations: - name: Northwestern University family_name: Tracy given_name: Phillip + id: 0000-0003-0939-2920 identifiers: - - identifier: https://orcid.org/0000-0003-0939-2920 + - identifier: 0000-0003-0939-2920 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Sorokin given_name: Lydia + id: 0000-0001-7704-7921 identifiers: - - identifier: https://orcid.org/0000-0001-7704-7921 + - identifier: 0000-0001-7704-7921 scheme: orcid - affiliations: - name: The University of Manchester - name: CERN family_name: Freeman given_name: Sean + id: 0000-0001-9773-4921 identifiers: - - identifier: https://orcid.org/0000-0001-9773-4921 + - identifier: 0000-0001-9773-4921 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Iakovidis given_name: George + id: 0000-0002-0330-5921 identifiers: - - identifier: https://orcid.org/0000-0002-0330-5921 + - identifier: 0000-0002-0330-5921 scheme: orcid - affiliations: - name: Northwestern University family_name: "V\xE1zquez-Guardado" given_name: Abraham + id: 0000-0002-0648-5921 identifiers: - - identifier: https://orcid.org/0000-0002-0648-5921 + - identifier: 0000-0002-0648-5921 scheme: orcid - affiliations: - name: CERN family_name: Barney given_name: David + id: 0000-0002-4927-4921 identifiers: - - identifier: https://orcid.org/0000-0002-4927-4921 + - identifier: 0000-0002-4927-4921 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Solieri given_name: Nicola + id: 0000-0002-8489-7921 identifiers: - - identifier: https://orcid.org/0000-0002-8489-7921 + - identifier: 0000-0002-8489-7921 scheme: orcid - affiliations: - name: Northwestern University family_name: Sun given_name: Ting + id: 0000-0002-9320-8921 identifiers: - - identifier: https://orcid.org/0000-0002-9320-8921 + - identifier: 0000-0002-9320-8921 scheme: orcid - affiliations: - name: East China Normal University - name: "Technische Universit\xE4t Wien" family_name: Ni given_name: Hongcheng + id: 0000-0003-4924-0921 identifiers: - - identifier: https://orcid.org/0000-0003-4924-0921 + - identifier: 0000-0003-4924-0921 scheme: orcid - affiliations: - name: Northwestern University family_name: Kewalramani given_name: Sumit + id: 0000-0001-6920-0922 identifiers: - - identifier: https://orcid.org/0000-0001-6920-0922 + - identifier: 0000-0001-6920-0922 scheme: orcid - affiliations: - name: New York Genome Center @@ -43753,51 +49835,58 @@ - name: The Rockefeller University family_name: Schmutz given_name: Isabelle + id: 0000-0001-7193-3922 identifiers: - - identifier: https://orcid.org/0000-0001-7193-3922 + - identifier: 0000-0001-7193-3922 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kubeil given_name: Manja + id: 0000-0001-8857-5922 identifiers: - - identifier: https://orcid.org/0000-0001-8857-5922 + - identifier: 0000-0001-8857-5922 scheme: orcid - affiliations: - name: Northwestern University family_name: Brue given_name: Christopher + id: 0000-0001-9428-9922 identifiers: - - identifier: https://orcid.org/0000-0001-9428-9922 + - identifier: 0000-0001-9428-9922 scheme: orcid - affiliations: - name: TU Wien family_name: Fischer given_name: Hauke + id: 0000-0002-8519-9922 identifiers: - - identifier: https://orcid.org/0000-0002-8519-9922 + - identifier: 0000-0002-8519-9922 scheme: orcid - affiliations: - name: CERN family_name: Froidevaux given_name: Daniel + id: 0000-0003-3986-3922 identifiers: - - identifier: https://orcid.org/0000-0003-3986-3922 + - identifier: 0000-0003-3986-3922 scheme: orcid - affiliations: - name: "University of M\xFCnster" - name: University of Cologne family_name: Homann given_name: Florian + id: 0000-0001-5238-1923 identifiers: - - identifier: https://orcid.org/0000-0001-5238-1923 + - identifier: 0000-0001-5238-1923 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: "S\xF6te" given_name: Till + id: 0000-0001-5595-3923 identifiers: - - identifier: https://orcid.org/0000-0001-5595-3923 + - identifier: 0000-0001-5595-3923 scheme: orcid - affiliations: - name: New York University @@ -43805,228 +49894,260 @@ - name: European Organization for Nuclear Research family_name: Sakharov given_name: Alexander S. + id: 0000-0001-6622-2923 identifiers: - - identifier: https://orcid.org/0000-0001-6622-2923 + - identifier: 0000-0001-6622-2923 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Ayoubi given_name: Peyman + id: 0000-0001-6795-4923 identifiers: - - identifier: https://orcid.org/0000-0001-6795-4923 + - identifier: 0000-0001-6795-4923 scheme: orcid - affiliations: - name: TU Wien family_name: Schattauer given_name: Christoph + id: 0000-0001-7618-0923 identifiers: - - identifier: https://orcid.org/0000-0001-7618-0923 + - identifier: 0000-0001-7618-0923 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Huettig given_name: Fabian + id: 0000-0002-7253-5923 identifiers: - - identifier: https://orcid.org/0000-0002-7253-5923 + - identifier: 0000-0002-7253-5923 scheme: orcid - affiliations: - name: TU Wien - name: Medical University of Vienna family_name: Ret given_name: Davide + id: 0000-0002-7461-0923 identifiers: - - identifier: https://orcid.org/0000-0002-7461-0923 + - identifier: 0000-0002-7461-0923 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Frank given_name: Martin + id: 0000-0002-8740-3923 identifiers: - - identifier: https://orcid.org/0000-0002-8740-3923 + - identifier: 0000-0002-8740-3923 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Szafron given_name: Robert + id: 0000-0002-9640-6923 identifiers: - - identifier: https://orcid.org/0000-0002-9640-6923 + - identifier: 0000-0002-9640-6923 scheme: orcid - affiliations: - name: Northwestern University family_name: Schoenbrun given_name: David + id: 0000-0003-0964-1923 identifiers: - - identifier: https://orcid.org/0000-0003-0964-1923 + - identifier: 0000-0003-0964-1923 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhang given_name: Wenrui + id: 0000-0002-0223-1924 identifiers: - - identifier: https://orcid.org/0000-0002-0223-1924 + - identifier: 0000-0002-0223-1924 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Osthues given_name: Helena + id: 0000-0002-1751-3924 identifiers: - - identifier: https://orcid.org/0000-0002-1751-3924 + - identifier: 0000-0002-1751-3924 scheme: orcid - affiliations: - name: TU Wien family_name: "Rheinl\xE4nder" given_name: Thorsten + id: 0000-0002-1993-0924 identifiers: - - identifier: https://orcid.org/0000-0002-1993-0924 + - identifier: 0000-0002-1993-0924 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Smith given_name: Reid + id: 0000-0002-2538-8924 identifiers: - - identifier: https://orcid.org/0000-0002-2538-8924 + - identifier: 0000-0002-2538-8924 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zaliznyak given_name: Igor + id: 0000-0002-8548-7924 identifiers: - - identifier: https://orcid.org/0000-0002-8548-7924 + - identifier: 0000-0002-8548-7924 scheme: orcid - affiliations: - name: Northwestern University family_name: Oxley given_name: Benjamin + id: 0000-0003-1571-1924 identifiers: - - identifier: https://orcid.org/0000-0003-1571-1924 + - identifier: 0000-0003-1571-1924 scheme: orcid - affiliations: - name: TU Wien family_name: Psenner given_name: Angelika + id: 0000-0003-2961-1924 identifiers: - - identifier: https://orcid.org/0000-0003-2961-1924 + - identifier: 0000-0003-2961-1924 scheme: orcid - affiliations: - name: Northwestern University family_name: Villa given_name: Cesar + id: 0000-0003-0419-4925 identifiers: - - identifier: https://orcid.org/0000-0003-0419-4925 + - identifier: 0000-0003-0419-4925 scheme: orcid - affiliations: - name: University of Fribourg family_name: Bichsel given_name: Christine + id: 0000-0003-4966-7925 identifiers: - - identifier: https://orcid.org/0000-0003-4966-7925 + - identifier: 0000-0003-4966-7925 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Bovier given_name: Kevin + id: 0000-0001-9196-3926 identifiers: - - identifier: https://orcid.org/0000-0001-9196-3926 + - identifier: 0000-0001-9196-3926 scheme: orcid - affiliations: - name: University of Fribourg family_name: Winkes given_name: Julia + id: 0000-0002-4383-1926 identifiers: - - identifier: https://orcid.org/0000-0002-4383-1926 + - identifier: 0000-0002-4383-1926 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Celona given_name: Luigi + id: 0000-0002-6328-5926 identifiers: - - identifier: https://orcid.org/0000-0002-6328-5926 + - identifier: 0000-0002-6328-5926 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Riehemann given_name: Kristina + id: 0000-0002-6649-4926 identifiers: - - identifier: https://orcid.org/0000-0002-6649-4926 + - identifier: 0000-0002-6649-4926 scheme: orcid - affiliations: - name: Austrian Academy of Sciences - name: European Organization for Nuclear Research family_name: Meninno given_name: Elisa + id: 0000-0002-9609-5926 identifiers: - - identifier: https://orcid.org/0000-0002-9609-5926 + - identifier: 0000-0002-9609-5926 scheme: orcid - affiliations: - name: TU Wien family_name: Lauer given_name: Thomas + id: 0000-0003-3290-6926 identifiers: - - identifier: https://orcid.org/0000-0003-3290-6926 + - identifier: 0000-0003-3290-6926 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" - name: University of Engineering and Technology family_name: Irfan-ul-Hassan given_name: Muhammad + id: 0000-0002-5970-6927 identifiers: - - identifier: https://orcid.org/0000-0002-5970-6927 + - identifier: 0000-0002-5970-6927 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Maus given_name: Jens + id: 0000-0002-7195-9927 identifiers: - - identifier: https://orcid.org/0000-0002-7195-9927 + - identifier: 0000-0002-7195-9927 scheme: orcid - affiliations: - name: Northwestern University family_name: wu given_name: jinsong + id: 0000-0002-7305-7927 identifiers: - - identifier: https://orcid.org/0000-0002-7305-7927 + - identifier: 0000-0002-7305-7927 scheme: orcid - affiliations: - name: TU Wien family_name: Tabassam given_name: Zaheer + id: 0000-0002-9656-6927 identifiers: - - identifier: https://orcid.org/0000-0002-9656-6927 + - identifier: 0000-0002-9656-6927 scheme: orcid - affiliations: - name: Northwestern University family_name: Drane given_name: Denise + id: 0000-0001-9763-3928 identifiers: - - identifier: https://orcid.org/0000-0001-9763-3928 + - identifier: 0000-0001-9763-3928 scheme: orcid - affiliations: - name: Northwestern University family_name: Vakil given_name: Sepehr + id: 0000-0001-9973-5928 identifiers: - - identifier: https://orcid.org/0000-0001-9973-5928 + - identifier: 0000-0001-9973-5928 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Mahringer given_name: Gerald + id: 0000-0002-0160-4928 identifiers: - - identifier: https://orcid.org/0000-0002-0160-4928 + - identifier: 0000-0002-0160-4928 scheme: orcid - affiliations: - name: TU Wien family_name: Csencsics given_name: Ernst + id: 0000-0002-0896-1928 identifiers: - - identifier: https://orcid.org/0000-0002-0896-1928 + - identifier: 0000-0002-0896-1928 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Al-Maktry given_name: Amr Ali Abdulkader + id: 0000-0002-2509-1928 identifiers: - - identifier: https://orcid.org/0000-0002-2509-1928 + - identifier: 0000-0002-2509-1928 scheme: orcid - affiliations: - name: California Institute of Technology @@ -44044,825 +50165,941 @@ - name: Triple Creek Guest Ranch family_name: Barrett given_name: Barbara + id: 0000-0002-5582-1928 identifiers: - - identifier: https://orcid.org/0000-0002-5582-1928 + - identifier: 0000-0002-5582-1928 scheme: orcid - affiliations: - name: TU Wien family_name: Siebenhofer given_name: Marina + id: 0000-0002-7531-2928 identifiers: - - identifier: https://orcid.org/0000-0002-7531-2928 + - identifier: 0000-0002-7531-2928 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Peng given_name: Yang + id: 0000-0002-8868-2928 identifiers: - - identifier: https://orcid.org/0000-0002-8868-2928 + - identifier: 0000-0002-8868-2928 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Wermke given_name: Christiane + id: 0000-0003-0242-1928 identifiers: - - identifier: https://orcid.org/0000-0003-0242-1928 + - identifier: 0000-0003-0242-1928 scheme: orcid - affiliations: - name: TU Wien family_name: Sikorsky given_name: Tomas + id: 0000-0003-0280-0928 identifiers: - - identifier: https://orcid.org/0000-0003-0280-0928 + - identifier: 0000-0003-0280-0928 scheme: orcid - affiliations: - name: Northwestern University family_name: Heller given_name: James + id: 0000-0003-1638-0928 identifiers: - - identifier: https://orcid.org/0000-0003-1638-0928 + - identifier: 0000-0003-1638-0928 scheme: orcid - affiliations: - name: CERN family_name: Schmieden given_name: Kristof + id: 0000-0003-1978-4928 identifiers: - - identifier: https://orcid.org/0000-0003-1978-4928 + - identifier: 0000-0003-1978-4928 scheme: orcid - affiliations: - name: TU Wien family_name: Vasylevska given_name: Khrystyna + id: 0000-0003-4485-9928 identifiers: - - identifier: https://orcid.org/0000-0003-4485-9928 + - identifier: 0000-0003-4485-9928 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Muckerman given_name: James + id: 0000-0001-5169-8929 identifiers: - - identifier: https://orcid.org/0000-0001-5169-8929 + - identifier: 0000-0001-5169-8929 scheme: orcid - affiliations: - name: Northwestern University family_name: Torres-Quinones given_name: Dinah + id: 0000-0001-6754-2929 identifiers: - - identifier: https://orcid.org/0000-0001-6754-2929 + - identifier: 0000-0001-6754-2929 scheme: orcid - affiliations: - name: TU Wien family_name: Klikovits given_name: Nicolas + id: 0000-0001-7774-0929 identifiers: - - identifier: https://orcid.org/0000-0001-7774-0929 + - identifier: 0000-0001-7774-0929 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "Vysko\u010Dil" given_name: "Ji\u0159\xED" + id: 0000-0001-8822-0929 identifiers: - - identifier: https://orcid.org/0000-0001-8822-0929 + - identifier: 0000-0001-8822-0929 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Pfeifer given_name: Norbert + id: 0000-0002-2348-7929 identifiers: - - identifier: https://orcid.org/0000-0002-2348-7929 + - identifier: 0000-0002-2348-7929 scheme: orcid - affiliations: - name: The Ohio State University - name: European Organization for Nuclear Research family_name: Smirnov given_name: Juri + id: 0000-0002-3082-0929 identifiers: - - identifier: https://orcid.org/0000-0002-3082-0929 + - identifier: 0000-0002-3082-0929 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Mankovich given_name: Christopher + id: 0000-0002-4940-9929 identifiers: - - identifier: https://orcid.org/0000-0002-4940-9929 + - identifier: 0000-0002-4940-9929 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "J\xFCngel" given_name: Ansgar + id: 0000-0003-0633-8929 identifiers: - - identifier: https://orcid.org/0000-0003-0633-8929 + - identifier: 0000-0003-0633-8929 scheme: orcid - affiliations: - name: Northwestern University family_name: Chung given_name: Yip-Wah + id: 0000-0003-2551-2929 identifiers: - - identifier: https://orcid.org/0000-0003-2551-2929 + - identifier: 0000-0003-2551-2929 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Buellesbach given_name: Jan + id: 0000-0001-8493-692X identifiers: - - identifier: https://orcid.org/0000-0001-8493-692X + - identifier: 0000-0001-8493-692X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Schoofs given_name: Philippe + id: 0000-0002-5927-292X identifiers: - - identifier: https://orcid.org/0000-0002-5927-292X + - identifier: 0000-0002-5927-292X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Pirouz given_name: Mortaza + id: 0000-0002-7569-492X identifiers: - - identifier: https://orcid.org/0000-0002-7569-492X + - identifier: 0000-0002-7569-492X scheme: orcid - affiliations: - name: Northwestern University family_name: Odom given_name: Teri + id: 0000-0002-8490-292X identifiers: - - identifier: https://orcid.org/0000-0002-8490-292X + - identifier: 0000-0002-8490-292X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: D Mauro given_name: Antonio + id: 0000-0003-0348-092X identifiers: - - identifier: https://orcid.org/0000-0003-0348-092X + - identifier: 0000-0003-0348-092X scheme: orcid - affiliations: - name: Northwestern University family_name: Voorhees given_name: Peter + id: 0000-0003-2769-392X identifiers: - - identifier: https://orcid.org/0000-0003-2769-392X + - identifier: 0000-0003-2769-392X scheme: orcid - affiliations: - name: Northwestern University family_name: Broadbelt given_name: Linda + id: 0000-0003-4253-592X identifiers: - - identifier: https://orcid.org/0000-0003-4253-592X + - identifier: 0000-0003-4253-592X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Brooks given_name: Aidan + id: 0000-0003-4295-792X identifiers: - - identifier: https://orcid.org/0000-0003-4295-792X + - identifier: 0000-0003-4295-792X scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Junker given_name: Anna + id: 0000-0001-5151-0930 identifiers: - - identifier: https://orcid.org/0000-0001-5151-0930 + - identifier: 0000-0001-5151-0930 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zlotnicki given_name: Victor + id: 0000-0002-1983-7930 identifiers: - - identifier: https://orcid.org/0000-0002-1983-7930 + - identifier: 0000-0002-1983-7930 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Ellis given_name: Nicolas + id: 0000-0002-1920-4930 identifiers: - - identifier: https://orcid.org/0000-0002-1920-4930 + - identifier: 0000-0002-1920-4930 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: "\u0160ulji\u0107" given_name: Miljenko + id: 0000-0002-4490-1930 identifiers: - - identifier: https://orcid.org/0000-0002-4490-1930 + - identifier: 0000-0002-4490-1930 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Bisogni given_name: Valentina + id: 0000-0002-7399-9930 identifiers: - - identifier: https://orcid.org/0000-0002-7399-9930 + - identifier: 0000-0002-7399-9930 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "H\xF6dl" given_name: Philipp + id: 0000-0003-1150-2930 identifiers: - - identifier: https://orcid.org/0000-0003-1150-2930 + - identifier: 0000-0003-1150-2930 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Nishio given_name: Shin + id: 0000-0003-2659-5930 identifiers: - - identifier: https://orcid.org/0000-0003-2659-5930 + - identifier: 0000-0003-2659-5930 scheme: orcid - affiliations: - name: Northwestern University family_name: Anderson given_name: John C + id: 0000-0001-8002-4931 identifiers: - - identifier: https://orcid.org/0000-0001-8002-4931 + - identifier: 0000-0001-8002-4931 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Haedicke-Jarboui given_name: Juliane + id: 0000-0001-8637-0931 identifiers: - - identifier: https://orcid.org/0000-0001-8637-0931 + - identifier: 0000-0001-8637-0931 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Lettmann given_name: Tobias + id: 0000-0001-9164-7931 identifiers: - - identifier: https://orcid.org/0000-0001-9164-7931 + - identifier: 0000-0001-9164-7931 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Klatt given_name: Stefan + id: 0000-0002-0802-3931 identifiers: - - identifier: https://orcid.org/0000-0002-0802-3931 + - identifier: 0000-0002-0802-3931 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Rudolph given_name: Dominik + id: 0000-0002-2557-9931 identifiers: - - identifier: https://orcid.org/0000-0002-2557-9931 + - identifier: 0000-0002-2557-9931 scheme: orcid - affiliations: - name: University of Fribourg - name: University of Bern family_name: Chocano-Bedoya given_name: Patricia O. + id: 0000-0002-6980-3931 identifiers: - - identifier: https://orcid.org/0000-0002-6980-3931 + - identifier: 0000-0002-6980-3931 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Gruber given_name: Lia + id: 0000-0002-7815-2931 identifiers: - - identifier: https://orcid.org/0000-0002-7815-2931 + - identifier: 0000-0002-7815-2931 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Springston given_name: Stephen + id: 0000-0003-0159-4931 identifiers: - - identifier: https://orcid.org/0000-0003-0159-4931 + - identifier: 0000-0003-0159-4931 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lu given_name: I-Te + id: 0000-0003-1649-7931 identifiers: - - identifier: https://orcid.org/0000-0003-1649-7931 + - identifier: 0000-0003-1649-7931 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Weinbub given_name: Josef + id: 0000-0001-5969-1932 identifiers: - - identifier: https://orcid.org/0000-0001-5969-1932 + - identifier: 0000-0001-5969-1932 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Uth given_name: Bernadette + id: 0000-0001-6598-7932 identifiers: - - identifier: https://orcid.org/0000-0001-6598-7932 + - identifier: 0000-0001-6598-7932 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Berens given_name: Martin + id: 0000-0001-7029-2932 identifiers: - - identifier: https://orcid.org/0000-0001-7029-2932 + - identifier: 0000-0001-7029-2932 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Losito given_name: Roberto + id: 0000-0002-1660-9932 identifiers: - - identifier: https://orcid.org/0000-0002-1660-9932 + - identifier: 0000-0002-1660-9932 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sharma given_name: Saransh + id: 0000-0002-5052-4932 identifiers: - - identifier: https://orcid.org/0000-0002-5052-4932 + - identifier: 0000-0002-5052-4932 scheme: orcid - affiliations: - name: Northwestern University family_name: Laorenza given_name: Daniel + id: 0000-0003-1566-6932 identifiers: - - identifier: https://orcid.org/0000-0003-1566-6932 + - identifier: 0000-0003-1566-6932 scheme: orcid - affiliations: - name: Northwestern University family_name: Le given_name: Anh + id: 0000-0003-4928-4932 identifiers: - - identifier: https://orcid.org/0000-0003-4928-4932 + - identifier: 0000-0003-4928-4932 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: "M\xFCller" given_name: Annalena + id: 0000-0001-5776-1933 identifiers: - - identifier: https://orcid.org/0000-0001-5776-1933 + - identifier: 0000-0001-5776-1933 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Jakoncic given_name: Jean + id: 0000-0002-6315-0933 identifiers: - - identifier: https://orcid.org/0000-0002-6315-0933 + - identifier: 0000-0002-6315-0933 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Diana M. given_name: Rodriguez + id: 0000-0002-6926-1933 identifiers: - - identifier: https://orcid.org/0000-0002-6926-1933 + - identifier: 0000-0002-6926-1933 scheme: orcid - affiliations: - name: Northwestern University family_name: Myong given_name: Michele + id: 0000-0003-3634-8933 identifiers: - - identifier: https://orcid.org/0000-0003-3634-8933 + - identifier: 0000-0003-3634-8933 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Wilden given_name: Janine J. + id: 0000-0003-4925-3933 identifiers: - - identifier: https://orcid.org/0000-0003-4925-3933 + - identifier: 0000-0003-4925-3933 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Digdaya given_name: Ibadillah + id: 0000-0001-7349-0934 identifiers: - - identifier: https://orcid.org/0000-0001-7349-0934 + - identifier: 0000-0001-7349-0934 scheme: orcid - affiliations: - name: TU Wien family_name: Fasthuber given_name: Dominik + id: 0000-0001-9557-7934 identifiers: - - identifier: https://orcid.org/0000-0001-9557-7934 + - identifier: 0000-0001-9557-7934 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Koydemir given_name: Selda + id: 0000-0002-2946-6934 identifiers: - - identifier: https://orcid.org/0000-0002-2946-6934 + - identifier: 0000-0002-2946-6934 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Abdussalam given_name: Wildan + id: 0000-0002-4948-3934 identifiers: - - identifier: https://orcid.org/0000-0002-4948-3934 + - identifier: 0000-0002-4948-3934 scheme: orcid - affiliations: - name: TU Wien family_name: Aumayr given_name: Friedrich + id: 0000-0002-9788-0934 identifiers: - - identifier: https://orcid.org/0000-0002-9788-0934 + - identifier: 0000-0002-9788-0934 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Gornik given_name: Erich + id: 0000-0001-5371-7935 identifiers: - - identifier: https://orcid.org/0000-0001-5371-7935 + - identifier: 0000-0001-5371-7935 scheme: orcid - affiliations: - name: Fermi National Accelerator Laboratory - name: California Institute of Technology family_name: Ngadiuba given_name: Jennifer + id: 0000-0002-0055-2935 identifiers: - - identifier: https://orcid.org/0000-0002-0055-2935 + - identifier: 0000-0002-0055-2935 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Qian given_name: Xin + id: 0000-0002-7903-7935 identifiers: - - identifier: https://orcid.org/0000-0002-7903-7935 + - identifier: 0000-0002-7903-7935 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Barone given_name: Gaetano + id: 0000-0001-5163-5936 identifiers: - - identifier: https://orcid.org/0000-0001-5163-5936 + - identifier: 0000-0001-5163-5936 scheme: orcid - affiliations: - name: Northwestern University family_name: Schmidt given_name: Benjamin + id: 0000-0001-7118-5936 identifiers: - - identifier: https://orcid.org/0000-0001-7118-5936 + - identifier: 0000-0001-7118-5936 scheme: orcid - affiliations: - name: "Universit\xE0 degli Studi di Padova" - name: Istituto Nazionale di Fisica Nucleare family_name: Longhin given_name: Andrea + id: 0000-0001-9103-9936 identifiers: - - identifier: https://orcid.org/0000-0001-9103-9936 + - identifier: 0000-0001-9103-9936 scheme: orcid - affiliations: - name: Austrian Centre of Industrial Biotechnology - name: Graz University of Technology family_name: "M\xFCller Bogot\xE1" given_name: Christina Andrea + id: 0000-0002-6590-7936 identifiers: - - identifier: https://orcid.org/0000-0002-6590-7936 + - identifier: 0000-0002-6590-7936 scheme: orcid - affiliations: - name: California Institute of Technology family_name: dickinson given_name: michael + id: 0000-0002-8587-9936 identifiers: - - identifier: https://orcid.org/0000-0002-8587-9936 + - identifier: 0000-0002-8587-9936 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" - name: sdvig press family_name: Flack given_name: Patrick + id: 0000-0002-8727-6936 identifiers: - - identifier: https://orcid.org/0000-0002-8727-6936 + - identifier: 0000-0002-8727-6936 scheme: orcid - affiliations: - name: Northwestern University family_name: Korpanty given_name: Joanna + id: 0000-0002-9274-5936 identifiers: - - identifier: https://orcid.org/0000-0002-9274-5936 + - identifier: 0000-0002-9274-5936 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" - name: German Red Cross family_name: "H\xE4ske" given_name: David + id: 0000-0001-5190-3937 identifiers: - - identifier: https://orcid.org/0000-0001-5190-3937 + - identifier: 0000-0001-5190-3937 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Yilmaz given_name: Turgut + id: 0000-0001-7571-0937 identifiers: - - identifier: https://orcid.org/0000-0001-7571-0937 + - identifier: 0000-0001-7571-0937 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Riedlsperger given_name: Florian + id: 0000-0002-0310-1937 identifiers: - - identifier: https://orcid.org/0000-0002-0310-1937 + - identifier: 0000-0002-0310-1937 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: "N\xF6llenburg" given_name: Martin + id: 0000-0003-0454-3937 identifiers: - - identifier: https://orcid.org/0000-0003-0454-3937 + - identifier: 0000-0003-0454-3937 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hall given_name: Susanne + id: 0000-0003-3066-1937 identifiers: - - identifier: https://orcid.org/0000-0003-3066-1937 + - identifier: 0000-0003-3066-1937 scheme: orcid - affiliations: - name: Northwestern University family_name: Paunesku given_name: Tatjana + id: 0000-0001-8698-2938 identifiers: - - identifier: https://orcid.org/0000-0001-8698-2938 + - identifier: 0000-0001-8698-2938 scheme: orcid - affiliations: - name: Cincinnati Children's Hospital Medical Center - name: California Institute of Technology family_name: Robinson given_name: J. Elliott + id: 0000-0001-9417-3938 identifiers: - - identifier: https://orcid.org/0000-0001-9417-3938 + - identifier: 0000-0001-9417-3938 scheme: orcid - affiliations: - name: Northwestern University family_name: Alter given_name: Karen + id: 0000-0001-9508-8938 identifiers: - - identifier: https://orcid.org/0000-0001-9508-8938 + - identifier: 0000-0001-9508-8938 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Liao given_name: Yixiang + id: 0000-0002-1277-3938 identifiers: - - identifier: https://orcid.org/0000-0002-1277-3938 + - identifier: 0000-0002-1277-3938 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Sharma given_name: Mayank + id: 0000-0002-6613-0938 identifiers: - - identifier: https://orcid.org/0000-0002-6613-0938 + - identifier: 0000-0002-6613-0938 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Kobayashi given_name: Satoru + id: 0000-0003-1017-0938 identifiers: - - identifier: https://orcid.org/0000-0003-1017-0938 + - identifier: 0000-0003-1017-0938 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Adams given_name: Scott + id: 0000-0001-5855-5939 identifiers: - - identifier: https://orcid.org/0000-0001-5855-5939 + - identifier: 0000-0001-5855-5939 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Dunphy given_name: William + id: 0000-0001-7598-8939 identifiers: - - identifier: https://orcid.org/0000-0001-7598-8939 + - identifier: 0000-0001-7598-8939 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Klingenstein given_name: Moritz + id: 0000-0002-1476-4939 identifiers: - - identifier: https://orcid.org/0000-0002-1476-4939 + - identifier: 0000-0002-1476-4939 scheme: orcid - affiliations: - name: Northwestern University family_name: Galvez given_name: Carlos + id: 0000-0002-2155-0939 identifiers: - - identifier: https://orcid.org/0000-0002-2155-0939 + - identifier: 0000-0002-2155-0939 scheme: orcid - affiliations: - name: Massachusetts Institute of Technology - name: Northwestern University family_name: Lee given_name: Young-Ah Lucy + id: 0000-0002-2167-3939 identifiers: - - identifier: https://orcid.org/0000-0002-2167-3939 + - identifier: 0000-0002-2167-3939 scheme: orcid - affiliations: - name: Northwestern University family_name: TUMAMAO given_name: ALDRIN + id: 0000-0002-4067-1939 identifiers: - - identifier: https://orcid.org/0000-0002-4067-1939 + - identifier: 0000-0002-4067-1939 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Kulesz given_name: Karolina + id: 0000-0002-7108-0939 identifiers: - - identifier: https://orcid.org/0000-0002-7108-0939 + - identifier: 0000-0002-7108-0939 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Jonusas given_name: Julius + id: 0000-0003-3279-5939 identifiers: - - identifier: https://orcid.org/0000-0003-3279-5939 + - identifier: 0000-0003-3279-5939 scheme: orcid - affiliations: - name: University of Fribourg family_name: Wee given_name: Julie + id: 0000-0001-7210-793X identifiers: - - identifier: https://orcid.org/0000-0001-7210-793X + - identifier: 0000-0001-7210-793X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Mandlburger given_name: Gottfried + id: 0000-0002-2332-293X identifiers: - - identifier: https://orcid.org/0000-0002-2332-293X + - identifier: 0000-0002-2332-293X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Wenaus given_name: Torre + id: 0000-0002-8678-893X identifiers: - - identifier: https://orcid.org/0000-0002-8678-893X + - identifier: 0000-0002-8678-893X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Dervic given_name: Alija + id: 0000-0003-2149-193X identifiers: - - identifier: https://orcid.org/0000-0003-2149-193X + - identifier: 0000-0003-2149-193X scheme: orcid - affiliations: - name: Northwestern University family_name: van Alphen given_name: Bart + id: 0000-0001-8779-9940 identifiers: - - identifier: https://orcid.org/0000-0001-8779-9940 + - identifier: 0000-0001-8779-9940 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: De Rentiis given_name: Dina + id: 0000-0002-5409-0940 identifiers: - - identifier: https://orcid.org/0000-0002-5409-0940 + - identifier: 0000-0002-5409-0940 scheme: orcid - affiliations: - name: Northwestern University family_name: Yuk given_name: Simseok + id: 0000-0002-6610-4940 identifiers: - - identifier: https://orcid.org/0000-0002-6610-4940 + - identifier: 0000-0002-6610-4940 scheme: orcid - affiliations: - name: ETH Zurich - name: Graz University of Technology family_name: Prehal given_name: Christian + id: 0000-0003-0654-0940 identifiers: - - identifier: https://orcid.org/0000-0003-0654-0940 + - identifier: 0000-0003-0654-0940 scheme: orcid - affiliations: - name: Northwestern University family_name: Alterman given_name: Marina + id: 0000-0003-4869-5940 identifiers: - - identifier: https://orcid.org/0000-0003-4869-5940 + - identifier: 0000-0003-4869-5940 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Pablo-Navarro given_name: Javier + id: 0000-0001-6771-6941 identifiers: - - identifier: https://orcid.org/0000-0001-6771-6941 + - identifier: 0000-0001-6771-6941 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Freitag given_name: Martin + id: 0000-0002-3280-5941 identifiers: - - identifier: https://orcid.org/0000-0002-3280-5941 + - identifier: 0000-0002-3280-5941 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Schroeder given_name: Christian + id: 0000-0002-7441-5941 identifiers: - - identifier: https://orcid.org/0000-0002-7441-5941 + - identifier: 0000-0002-7441-5941 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Gutheil-Knopp-Kirchwald given_name: Gerlinde + id: 0000-0003-1669-7941 identifiers: - - identifier: https://orcid.org/0000-0003-1669-7941 + - identifier: 0000-0003-1669-7941 scheme: orcid - affiliations: - name: Northwestern University family_name: Jiang given_name: Hong + id: 0000-0001-6015-5942 identifiers: - - identifier: https://orcid.org/0000-0001-6015-5942 + - identifier: 0000-0001-6015-5942 scheme: orcid - affiliations: - name: Northwestern University family_name: Ashley given_name: Richard + id: 0000-0002-4022-7942 identifiers: - - identifier: https://orcid.org/0000-0002-4022-7942 + - identifier: 0000-0002-4022-7942 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Lehmann given_name: Jan Rudolf Karl + id: 0000-0002-4790-4942 identifiers: - - identifier: https://orcid.org/0000-0002-4790-4942 + - identifier: 0000-0002-4790-4942 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Putnis given_name: Andrew + id: 0000-0003-2232-9942 identifiers: - - identifier: https://orcid.org/0000-0003-2232-9942 + - identifier: 0000-0003-2232-9942 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Chincarini given_name: Andrea + id: 0000-0003-4094-9942 identifiers: - - identifier: https://orcid.org/0000-0003-4094-9942 + - identifier: 0000-0003-4094-9942 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zhu given_name: Shaofei + id: 0000-0002-2785-1943 identifiers: - - identifier: https://orcid.org/0000-0002-2785-1943 + - identifier: 0000-0002-2785-1943 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sharon given_name: Gil + id: 0000-0002-4605-9943 identifiers: - - identifier: https://orcid.org/0000-0002-4605-9943 + - identifier: 0000-0002-4605-9943 scheme: orcid - affiliations: - name: TU Wien family_name: Lamprecht given_name: Matthias + id: 0000-0002-7275-9943 identifiers: - - identifier: https://orcid.org/0000-0002-7275-9943 + - identifier: 0000-0002-7275-9943 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Simic given_name: Petar + id: 0000-0003-4952-5943 identifiers: - - identifier: https://orcid.org/0000-0003-4952-5943 + - identifier: 0000-0003-4952-5943 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Cazan given_name: Constantin + id: 0000-0001-6487-4944 identifiers: - - identifier: https://orcid.org/0000-0001-6487-4944 + - identifier: 0000-0001-6487-4944 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Effler given_name: Anamaria + id: 0000-0001-8242-3944 identifiers: - - identifier: https://orcid.org/0000-0001-8242-3944 + - identifier: 0000-0001-8242-3944 scheme: orcid - affiliations: - name: Northwestern University family_name: Adney given_name: Scott + id: 0000-0001-8743-5944 identifiers: - - identifier: https://orcid.org/0000-0001-8743-5944 + - identifier: 0000-0001-8743-5944 scheme: orcid - affiliations: - name: Northwestern University family_name: Schweitzer given_name: Neil + id: 0000-0002-8284-6944 identifiers: - - identifier: https://orcid.org/0000-0002-8284-6944 + - identifier: 0000-0002-8284-6944 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Raida given_name: Vaclav + id: 0000-0001-5166-3945 identifiers: - - identifier: https://orcid.org/0000-0001-5166-3945 + - identifier: 0000-0001-5166-3945 scheme: orcid - affiliations: - name: CERN family_name: Gatignon given_name: Lau + id: 0000-0001-6439-2945 identifiers: - - identifier: https://orcid.org/0000-0001-6439-2945 + - identifier: 0000-0001-6439-2945 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Stehle given_name: Helena + id: 0000-0001-6959-9945 identifiers: - - identifier: https://orcid.org/0000-0001-6959-9945 + - identifier: 0000-0001-6959-9945 scheme: orcid - affiliations: - name: HZDR Innovation GmbH @@ -44870,230 +51107,262 @@ - name: Institute of Nuclear Physics, Polish Academy of Sciences family_name: Zabila given_name: Yevhen + id: 0000-0002-3931-5945 identifiers: - - identifier: https://orcid.org/0000-0002-3931-5945 + - identifier: 0000-0002-3931-5945 scheme: orcid - affiliations: - name: Northwestern University family_name: "Steink\xFChler" given_name: Jan + id: 0000-0003-4226-7945 identifiers: - - identifier: https://orcid.org/0000-0003-4226-7945 + - identifier: 0000-0003-4226-7945 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhang given_name: Meng + id: 0000-0002-4893-6946 identifiers: - - identifier: https://orcid.org/0000-0002-4893-6946 + - identifier: 0000-0002-4893-6946 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Clerc given_name: Sandra + id: 0000-0002-8392-6946 identifiers: - - identifier: https://orcid.org/0000-0002-8392-6946 + - identifier: 0000-0002-8392-6946 scheme: orcid - affiliations: - name: TU Wien family_name: Michor given_name: Herwig + id: 0000-0003-1642-5946 identifiers: - - identifier: https://orcid.org/0000-0003-1642-5946 + - identifier: 0000-0003-1642-5946 scheme: orcid - affiliations: - name: Northwestern University family_name: Gaire given_name: Sunil Kumar + id: 0000-0002-2084-9947 identifiers: - - identifier: https://orcid.org/0000-0002-2084-9947 + - identifier: 0000-0002-2084-9947 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Allan given_name: Michael + id: 0000-0002-7270-2947 identifiers: - - identifier: https://orcid.org/0000-0002-7270-2947 + - identifier: 0000-0002-7270-2947 scheme: orcid - affiliations: - name: CERN family_name: Fuchs given_name: Elina + id: 0000-0002-0345-2948 identifiers: - - identifier: https://orcid.org/0000-0002-0345-2948 + - identifier: 0000-0002-0345-2948 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhang given_name: Zhimeng + id: 0000-0002-1558-4948 identifiers: - - identifier: https://orcid.org/0000-0002-1558-4948 + - identifier: 0000-0002-1558-4948 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Mato given_name: Pere + id: 0000-0002-3009-8948 identifiers: - - identifier: https://orcid.org/0000-0002-3009-8948 + - identifier: 0000-0002-3009-8948 scheme: orcid - affiliations: - name: TU Wien family_name: Turyanskaya given_name: Anna + id: 0000-0002-3203-4948 identifiers: - - identifier: https://orcid.org/0000-0002-3203-4948 + - identifier: 0000-0002-3203-4948 scheme: orcid - affiliations: - name: Northwestern University family_name: Croft given_name: Marissa + id: 0000-0002-3236-8948 identifiers: - - identifier: https://orcid.org/0000-0002-3236-8948 + - identifier: 0000-0002-3236-8948 scheme: orcid - affiliations: - name: Northwestern University family_name: Fenton given_name: Sarah + id: 0000-0002-5102-4948 identifiers: - - identifier: https://orcid.org/0000-0002-5102-4948 + - identifier: 0000-0002-5102-4948 scheme: orcid - affiliations: - name: University of Fribourg family_name: Rubo given_name: Marius + id: 0000-0002-5517-2948 identifiers: - - identifier: https://orcid.org/0000-0002-5517-2948 + - identifier: 0000-0002-5517-2948 scheme: orcid - affiliations: - name: California Institute of Technology family_name: "Rosa-Ra\xEDces" given_name: Jorge L. + id: 0000-0003-2311-2948 identifiers: - - identifier: https://orcid.org/0000-0003-2311-2948 + - identifier: 0000-0003-2311-2948 scheme: orcid - affiliations: - name: TU Wien family_name: Ruppitsch given_name: Larissa Alena + id: 0000-0003-3151-8948 identifiers: - - identifier: https://orcid.org/0000-0003-3151-8948 + - identifier: 0000-0003-3151-8948 scheme: orcid - affiliations: - name: "University of T\xFCbingen" - name: University of Fribourg family_name: Gregory given_name: Daniel + id: 0000-0003-4059-6948 identifiers: - - identifier: https://orcid.org/0000-0003-4059-6948 + - identifier: 0000-0003-4059-6948 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Chemnitz" - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Sellge given_name: Gabriel + id: 0000-0001-9963-7949 identifiers: - - identifier: https://orcid.org/0000-0001-9963-7949 + - identifier: 0000-0001-9963-7949 scheme: orcid - affiliations: - name: Northwestern University family_name: RYAN given_name: CALEN + id: 0000-0002-0550-7949 identifiers: - - identifier: https://orcid.org/0000-0002-0550-7949 + - identifier: 0000-0002-0550-7949 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Bak given_name: Seong-Min + id: 0000-0002-1626-5949 identifiers: - - identifier: https://orcid.org/0000-0002-1626-5949 + - identifier: 0000-0002-1626-5949 scheme: orcid - affiliations: - name: University of Fribourg family_name: Caldara given_name: Roberto + id: 0000-0002-8260-9949 identifiers: - - identifier: https://orcid.org/0000-0002-8260-9949 + - identifier: 0000-0002-8260-9949 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Takasu given_name: Atsuhiro + id: 0000-0002-9061-7949 identifiers: - - identifier: https://orcid.org/0000-0002-9061-7949 + - identifier: 0000-0002-9061-7949 scheme: orcid - affiliations: - name: TU Wien - name: University of Applied Arts Vienna family_name: "M\xFCller" given_name: "B\xE4rbel" + id: 0000-0002-0174-594X identifiers: - - identifier: https://orcid.org/0000-0002-0174-594X + - identifier: 0000-0002-0174-594X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Prelipcean given_name: Daniel + id: 0000-0002-4855-194X identifiers: - - identifier: https://orcid.org/0000-0002-4855-194X + - identifier: 0000-0002-4855-194X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Stekovic given_name: Sinisa + id: 0000-0003-0976-494X identifiers: - - identifier: https://orcid.org/0000-0003-0976-494X + - identifier: 0000-0003-0976-494X scheme: orcid - affiliations: - name: China Europe International Business School - name: "Universit\xE9 de Fribourg" family_name: Tang given_name: Ganqi + id: 0000-0003-1097-694X identifiers: - - identifier: https://orcid.org/0000-0003-1097-694X + - identifier: 0000-0003-1097-694X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Sengewald given_name: Marie-Ann + id: 0000-0003-4155-394X identifiers: - - identifier: https://orcid.org/0000-0003-4155-394X + - identifier: 0000-0003-4155-394X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Panella given_name: Orlando + id: 0000-0003-4262-894X identifiers: - - identifier: https://orcid.org/0000-0003-4262-894X + - identifier: 0000-0003-4262-894X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Drexler given_name: Andreas + id: 0000-0001-5768-5950 identifiers: - - identifier: https://orcid.org/0000-0001-5768-5950 + - identifier: 0000-0001-5768-5950 scheme: orcid - affiliations: - name: National Taiwan University - name: CERN family_name: Yazgan given_name: Efe + id: 0000-0001-5732-7950 identifiers: - - identifier: https://orcid.org/0000-0001-5732-7950 + - identifier: 0000-0001-5732-7950 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Van Dyk given_name: Schuyler + id: 0000-0001-9038-9950 identifiers: - - identifier: https://orcid.org/0000-0001-9038-9950 + - identifier: 0000-0001-9038-9950 scheme: orcid - affiliations: - name: University of Bamberg family_name: Peschka given_name: Lasse + id: 0000-0003-4941-7950 identifiers: - - identifier: https://orcid.org/0000-0003-4941-7950 + - identifier: 0000-0003-4941-7950 scheme: orcid - affiliations: - name: University of Natural Resources and Life Sciences @@ -45101,196 +51370,223 @@ - name: acib - Austrian Centre of Industrial Biotechnology family_name: Wiltschi given_name: Birgit + id: 0000-0001-5230-0951 identifiers: - - identifier: https://orcid.org/0000-0001-5230-0951 + - identifier: 0000-0001-5230-0951 scheme: orcid - affiliations: - name: Northwestern University family_name: Nyamugenda given_name: Eugene + id: 0000-0002-1404-9951 identifiers: - - identifier: https://orcid.org/0000-0002-1404-9951 + - identifier: 0000-0002-1404-9951 scheme: orcid - affiliations: - name: Northwestern University family_name: Chaudhary given_name: Satya + id: 0000-0002-1770-9951 identifiers: - - identifier: https://orcid.org/0000-0002-1770-9951 + - identifier: 0000-0002-1770-9951 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Barnes given_name: Christopher O. + id: 0000-0003-2754-5951 identifiers: - - identifier: https://orcid.org/0000-0003-2754-5951 + - identifier: 0000-0003-2754-5951 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Schuster given_name: Anja Katharina + id: 0000-0001-5489-5952 identifiers: - - identifier: https://orcid.org/0000-0001-5489-5952 + - identifier: 0000-0001-5489-5952 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: "F\xE4hler" given_name: Sebastian + id: 0000-0001-9450-4952 identifiers: - - identifier: https://orcid.org/0000-0001-9450-4952 + - identifier: 0000-0001-9450-4952 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: Schneider given_name: Josef + id: 0000-0002-8550-2952 identifiers: - - identifier: https://orcid.org/0000-0002-8550-2952 + - identifier: 0000-0002-8550-2952 scheme: orcid - affiliations: - name: TU Wien family_name: Mindek given_name: Peter + id: 0000-0002-9434-5952 identifiers: - - identifier: https://orcid.org/0000-0002-9434-5952 + - identifier: 0000-0002-9434-5952 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Duplij given_name: Steven + id: 0000-0003-1184-6952 identifiers: - - identifier: https://orcid.org/0000-0003-1184-6952 + - identifier: 0000-0003-1184-6952 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Davarian given_name: Faramaz + id: 0000-0003-3505-5952 identifiers: - - identifier: https://orcid.org/0000-0003-3505-5952 + - identifier: 0000-0003-3505-5952 scheme: orcid - affiliations: - name: "\xC9cole Polytechnique F\xE9d\xE9rale de Lausanne" - name: Northwestern University family_name: stathopoulos given_name: amanda + id: 0000-0001-6307-4953 identifiers: - - identifier: https://orcid.org/0000-0001-6307-4953 + - identifier: 0000-0001-6307-4953 scheme: orcid - affiliations: - name: Adler Planetarium - name: Northwestern University family_name: Johnson given_name: Lent + id: 0000-0001-6421-0953 identifiers: - - identifier: https://orcid.org/0000-0001-6421-0953 + - identifier: 0000-0001-6421-0953 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Marmiroli given_name: Benedetta + id: 0000-0001-9172-9953 identifiers: - - identifier: https://orcid.org/0000-0001-9172-9953 + - identifier: 0000-0001-9172-9953 scheme: orcid - affiliations: - name: Northwestern University family_name: Knezz given_name: Stephanie + id: 0000-0001-9445-2953 identifiers: - - identifier: https://orcid.org/0000-0001-9445-2953 + - identifier: 0000-0001-9445-2953 scheme: orcid - affiliations: - name: California Institute of Technology - name: Beckman Research Institute, City of Hope family_name: Han given_name: Si-ping + id: 0000-0002-2213-4953 identifiers: - - identifier: https://orcid.org/0000-0002-2213-4953 + - identifier: 0000-0002-2213-4953 scheme: orcid - affiliations: - name: California Institute of Technology - name: Perimeter Institute family_name: Gesteau given_name: Elliott + id: 0000-0002-3189-0953 identifiers: - - identifier: https://orcid.org/0000-0002-3189-0953 + - identifier: 0000-0002-3189-0953 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Babu given_name: Aswini + id: 0000-0002-4893-2953 identifiers: - - identifier: https://orcid.org/0000-0002-4893-2953 + - identifier: 0000-0002-4893-2953 scheme: orcid - affiliations: - name: CERN family_name: bremer given_name: johan + id: 0000-0002-5439-8953 identifiers: - - identifier: https://orcid.org/0000-0002-5439-8953 + - identifier: 0000-0002-5439-8953 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Janssen given_name: Inse + id: 0000-0001-5101-8954 identifiers: - - identifier: https://orcid.org/0000-0001-5101-8954 + - identifier: 0000-0001-5101-8954 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Gianotti given_name: Fabiola + id: 0000-0001-7133-4954 identifiers: - - identifier: https://orcid.org/0000-0001-7133-4954 + - identifier: 0000-0001-7133-4954 scheme: orcid - affiliations: - name: TU Wien family_name: Maier given_name: Franz Josef + id: 0000-0001-8845-1954 identifiers: - - identifier: https://orcid.org/0000-0001-8845-1954 + - identifier: 0000-0001-8845-1954 scheme: orcid - affiliations: - name: Northwestern University family_name: Woloschak given_name: Gayle + id: 0000-0001-9209-8954 identifiers: - - identifier: https://orcid.org/0000-0001-9209-8954 + - identifier: 0000-0001-9209-8954 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare - name: Argonne National Laboratory family_name: Lovato given_name: Alessandro + id: 0000-0002-2194-4954 identifiers: - - identifier: https://orcid.org/0000-0002-2194-4954 + - identifier: 0000-0002-2194-4954 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Nilsson given_name: Ricky + id: 0000-0002-5408-4954 identifiers: - - identifier: https://orcid.org/0000-0002-5408-4954 + - identifier: 0000-0002-5408-4954 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Zawadowicz given_name: Maria + id: 0000-0003-4234-0954 identifiers: - - identifier: https://orcid.org/0000-0003-4234-0954 + - identifier: 0000-0003-4234-0954 scheme: orcid - affiliations: - name: Northwestern University family_name: Yong given_name: Laurel + id: 0000-0003-4250-0954 identifiers: - - identifier: https://orcid.org/0000-0003-4250-0954 + - identifier: 0000-0003-4250-0954 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Braun given_name: Bettina + id: 0000-0001-6470-1955 identifiers: - - identifier: https://orcid.org/0000-0001-6470-1955 + - identifier: 0000-0001-6470-1955 scheme: orcid - affiliations: - name: Northwestern University Feinberg School of Medicine @@ -45298,428 +51594,487 @@ - name: Northwestern University family_name: Premkumar given_name: Ashish + id: 0000-0001-6952-9955 identifiers: - - identifier: https://orcid.org/0000-0001-6952-9955 + - identifier: 0000-0001-6952-9955 scheme: orcid - affiliations: - name: TU Wien - name: Aarhus University family_name: "K\xE1n" given_name: Peter + id: 0000-0001-7437-9955 identifiers: - - identifier: https://orcid.org/0000-0001-7437-9955 + - identifier: 0000-0001-7437-9955 scheme: orcid - affiliations: - name: TU Wien family_name: Spitz given_name: Sarah + id: 0000-0001-7980-7955 identifiers: - - identifier: https://orcid.org/0000-0001-7980-7955 + - identifier: 0000-0001-7980-7955 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Zhanyong + id: 0000-0002-3230-5955 identifiers: - - identifier: https://orcid.org/0000-0002-3230-5955 + - identifier: 0000-0002-3230-5955 scheme: orcid - affiliations: - name: Northwestern University family_name: Rohlfing Pryor given_name: Jessica + id: 0000-0002-8442-0955 identifiers: - - identifier: https://orcid.org/0000-0002-8442-0955 + - identifier: 0000-0002-8442-0955 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Holtmann given_name: Marcel + id: 0000-0001-6742-0956 identifiers: - - identifier: https://orcid.org/0000-0001-6742-0956 + - identifier: 0000-0001-6742-0956 scheme: orcid - affiliations: - name: Northwestern University family_name: Ahmeti given_name: Kushtrim + id: 0000-0002-6108-9956 identifiers: - - identifier: https://orcid.org/0000-0002-6108-9956 + - identifier: 0000-0002-6108-9956 scheme: orcid - affiliations: - name: Northwestern University - name: Memorial University of Newfoundland family_name: Katz given_name: Michael + id: 0000-0002-7744-3956 identifiers: - - identifier: https://orcid.org/0000-0002-7744-3956 + - identifier: 0000-0002-7744-3956 scheme: orcid - affiliations: - name: Northwestern University - name: Chicago Botanic Garden family_name: Wickett given_name: Norman + id: 0000-0003-0944-1956 identifiers: - - identifier: https://orcid.org/0000-0003-0944-1956 + - identifier: 0000-0003-0944-1956 scheme: orcid - affiliations: - name: RIKEN - name: California Institute of Technology family_name: song given_name: qiyuan + id: 0000-0003-4260-4956 identifiers: - - identifier: https://orcid.org/0000-0003-4260-4956 + - identifier: 0000-0003-4260-4956 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Hofbauer given_name: Michael + id: 0000-0001-5239-6957 identifiers: - - identifier: https://orcid.org/0000-0001-5239-6957 + - identifier: 0000-0001-5239-6957 scheme: orcid - affiliations: - name: European Organization for Nuclear Research - name: "Uniwersytet Jagiello\u0144ski w Krakowie" family_name: "\u0141asocha" given_name: Kacper + id: 0000-0002-0383-5957 identifiers: - - identifier: https://orcid.org/0000-0002-0383-5957 + - identifier: 0000-0002-0383-5957 scheme: orcid - affiliations: - name: TU Wien - name: Faculty of Mathematics, University of Vienna family_name: Jin given_name: Emma Yu + id: 0000-0002-5939-6957 identifiers: - - identifier: https://orcid.org/0000-0002-5939-6957 + - identifier: 0000-0002-5939-6957 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Di Fratta given_name: Giovanni + id: 0000-0003-0254-2957 identifiers: - - identifier: https://orcid.org/0000-0003-0254-2957 + - identifier: 0000-0003-0254-2957 scheme: orcid - affiliations: - name: University of Fribourg - name: Philip Morris Products SA family_name: Binder given_name: Jean + id: 0000-0002-6098-0958 identifiers: - - identifier: https://orcid.org/0000-0002-6098-0958 + - identifier: 0000-0002-6098-0958 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Napoli given_name: Daniel R. + id: 0000-0002-8154-6958 identifiers: - - identifier: https://orcid.org/0000-0002-8154-6958 + - identifier: 0000-0002-8154-6958 scheme: orcid - affiliations: - name: TU Wien family_name: Maderthaner given_name: Jakob + id: 0000-0002-2935-4959 identifiers: - - identifier: https://orcid.org/0000-0002-2935-4959 + - identifier: 0000-0002-2935-4959 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Kopf given_name: Christian + id: 0000-0002-3853-3959 identifiers: - - identifier: https://orcid.org/0000-0002-3853-3959 + - identifier: 0000-0002-3853-3959 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Schmid given_name: David + id: 0000-0002-9172-1959 identifiers: - - identifier: https://orcid.org/0000-0002-9172-1959 + - identifier: 0000-0002-9172-1959 scheme: orcid - affiliations: - name: TU Wien family_name: Jordan given_name: Christian + id: 0000-0002-9661-0959 identifiers: - - identifier: https://orcid.org/0000-0002-9661-0959 + - identifier: 0000-0002-9661-0959 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Khoukaz given_name: Alfons + id: 0000-0001-7108-895X identifiers: - - identifier: https://orcid.org/0000-0001-7108-895X + - identifier: 0000-0001-7108-895X scheme: orcid - affiliations: - name: "University of M\xFCnster" - name: Universitat Bern family_name: Pape given_name: Jonas + id: 0000-0001-9729-695X identifiers: - - identifier: https://orcid.org/0000-0001-9729-695X + - identifier: 0000-0001-9729-695X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Dawson given_name: Sally + id: 0000-0002-5598-695X identifiers: - - identifier: https://orcid.org/0000-0002-5598-695X + - identifier: 0000-0002-5598-695X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "D\xFCnser" given_name: Christian + id: 0000-0002-6457-595X identifiers: - - identifier: https://orcid.org/0000-0002-6457-595X + - identifier: 0000-0002-6457-595X scheme: orcid - affiliations: - name: University of Bamberg family_name: Lindenfelser given_name: Siegwalt + id: 0000-0002-7645-395X identifiers: - - identifier: https://orcid.org/0000-0002-7645-395X + - identifier: 0000-0002-7645-395X scheme: orcid - affiliations: - name: University of Zurich - name: European Organization for Nuclear Research family_name: Botta given_name: Cristina + id: 0000-0002-8072-795X identifiers: - - identifier: https://orcid.org/0000-0002-8072-795X + - identifier: 0000-0002-8072-795X scheme: orcid - affiliations: - name: TU Wien family_name: Slouka given_name: Christoph + id: 0000-0002-8627-295X identifiers: - - identifier: https://orcid.org/0000-0002-8627-295X + - identifier: 0000-0002-8627-295X scheme: orcid - affiliations: - name: CERN family_name: Martinazzoli given_name: Loris + id: 0000-0002-8996-795X identifiers: - - identifier: https://orcid.org/0000-0002-8996-795X + - identifier: 0000-0002-8996-795X scheme: orcid - affiliations: - name: Bay Area Air Quality Management District - name: California Institute of Technology family_name: Newman given_name: Sally + id: 0000-0003-0710-995X identifiers: - - identifier: https://orcid.org/0000-0003-0710-995X + - identifier: 0000-0003-0710-995X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: "St\xF6ckl" given_name: Christoph + id: 0000-0003-2640-695X identifiers: - - identifier: https://orcid.org/0000-0003-2640-695X + - identifier: 0000-0003-2640-695X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Dowling given_name: Jacqueline + id: 0000-0001-5642-8960 identifiers: - - identifier: https://orcid.org/0000-0001-5642-8960 + - identifier: 0000-0001-5642-8960 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hucka given_name: Michael + id: 0000-0001-9105-5960 identifiers: - - identifier: https://orcid.org/0000-0001-9105-5960 + - identifier: 0000-0001-9105-5960 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Metskas given_name: Lauren Ann + id: 0000-0002-8073-6960 identifiers: - - identifier: https://orcid.org/0000-0002-8073-6960 + - identifier: 0000-0002-8073-6960 scheme: orcid - affiliations: - name: CERN family_name: Nayak given_name: Tapan + id: 0000-0001-8941-8961 identifiers: - - identifier: https://orcid.org/0000-0001-8941-8961 + - identifier: 0000-0001-8941-8961 scheme: orcid - affiliations: - name: Northwestern University family_name: Brajcich given_name: Brian + id: 0000-0001-9854-1961 identifiers: - - identifier: https://orcid.org/0000-0001-9854-1961 + - identifier: 0000-0001-9854-1961 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: Graz University of Technology family_name: Radl given_name: Stefan + id: 0000-0002-0738-0961 identifiers: - - identifier: https://orcid.org/0000-0002-0738-0961 + - identifier: 0000-0002-0738-0961 scheme: orcid - affiliations: - name: TU Wien family_name: Ressl given_name: Camillo + id: 0000-0002-3716-8961 identifiers: - - identifier: https://orcid.org/0000-0002-3716-8961 + - identifier: 0000-0002-3716-8961 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Biersach given_name: David + id: 0000-0002-7861-3961 identifiers: - - identifier: https://orcid.org/0000-0002-7861-3961 + - identifier: 0000-0002-7861-3961 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Colamaria given_name: Fabio + id: 0000-0003-2677-7961 identifiers: - - identifier: https://orcid.org/0000-0003-2677-7961 + - identifier: 0000-0003-2677-7961 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Yu-Ying + id: 0000-0003-3580-9961 identifiers: - - identifier: https://orcid.org/0000-0003-3580-9961 + - identifier: 0000-0003-3580-9961 scheme: orcid - affiliations: - name: HCEMM Kft. - name: "Technische Universit\xE4t Graz" family_name: Sensen given_name: Christoph Wilhelm + id: 0000-0001-9604-8962 identifiers: - - identifier: https://orcid.org/0000-0001-9604-8962 + - identifier: 0000-0001-9604-8962 scheme: orcid - affiliations: - name: TU Wien family_name: Ryan given_name: Paul T. P. + id: 0000-0002-4221-9962 identifiers: - - identifier: https://orcid.org/0000-0002-4221-9962 + - identifier: 0000-0002-4221-9962 scheme: orcid - affiliations: - name: Northwestern University family_name: Wang given_name: Yi + id: 0000-0002-9509-7962 identifiers: - - identifier: https://orcid.org/0000-0002-9509-7962 + - identifier: 0000-0002-9509-7962 scheme: orcid - affiliations: - name: University of Fribourg family_name: Sidler given_name: Oliver + id: 0000-0002-9785-0962 identifiers: - - identifier: https://orcid.org/0000-0002-9785-0962 + - identifier: 0000-0002-9785-0962 scheme: orcid - affiliations: - name: TU Wien family_name: Haselmair-Gosch given_name: Christian + id: 0000-0003-3231-0962 identifiers: - - identifier: https://orcid.org/0000-0003-3231-0962 + - identifier: 0000-0003-3231-0962 scheme: orcid - affiliations: - name: CERN family_name: Borowka given_name: Sophia + id: 0000-0003-4482-1962 identifiers: - - identifier: https://orcid.org/0000-0003-4482-1962 + - identifier: 0000-0003-4482-1962 scheme: orcid - affiliations: - name: Northwestern University family_name: He given_name: Yuan + id: 0000-0002-1455-3963 identifiers: - - identifier: https://orcid.org/0000-0002-1455-3963 + - identifier: 0000-0002-1455-3963 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Law given_name: Casey + id: 0000-0002-4119-9963 identifiers: - - identifier: https://orcid.org/0000-0002-4119-9963 + - identifier: 0000-0002-4119-9963 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Vladikas given_name: Anastassios + id: 0000-0002-4214-0963 identifiers: - - identifier: https://orcid.org/0000-0002-4214-0963 + - identifier: 0000-0002-4214-0963 scheme: orcid - affiliations: - name: Northwestern University family_name: Logan given_name: Regina + id: 0000-0002-9226-0963 identifiers: - - identifier: https://orcid.org/0000-0002-9226-0963 + - identifier: 0000-0002-9226-0963 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lebreton given_name: "J\xE9r\xE9my" + id: 0000-0003-1476-5963 identifiers: - - identifier: https://orcid.org/0000-0003-1476-5963 + - identifier: 0000-0003-1476-5963 scheme: orcid - affiliations: - name: Northwestern University family_name: White-Schwoch given_name: Travis + id: 0000-0001-7084-9964 identifiers: - - identifier: https://orcid.org/0000-0001-7084-9964 + - identifier: 0000-0001-7084-9964 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Stueger given_name: Harald + id: 0000-0001-8531-1964 identifiers: - - identifier: https://orcid.org/0000-0001-8531-1964 + - identifier: 0000-0001-8531-1964 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Casarsa given_name: Massimo + id: 0000-0002-1353-8964 identifiers: - - identifier: https://orcid.org/0000-0002-1353-8964 + - identifier: 0000-0002-1353-8964 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Ren given_name: Yihui + id: 0000-0002-5750-6964 identifiers: - - identifier: https://orcid.org/0000-0002-5750-6964 + - identifier: 0000-0002-5750-6964 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Sweet given_name: Robert + id: 0000-0003-3411-0964 identifiers: - - identifier: https://orcid.org/0000-0003-3411-0964 + - identifier: 0000-0003-3411-0964 scheme: orcid - affiliations: - name: Northwestern University family_name: Lim given_name: Jin-Myoung + id: 0000-0003-3673-0964 identifiers: - - identifier: https://orcid.org/0000-0003-3673-0964 + - identifier: 0000-0003-3673-0964 scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Zauner given_name: Michael + id: 0000-0002-0318-1965 identifiers: - - identifier: https://orcid.org/0000-0002-0318-1965 + - identifier: 0000-0002-0318-1965 scheme: orcid - affiliations: - name: Northwestern University family_name: Coulibaly given_name: Jibril B. + id: 0000-0002-1295-0965 identifiers: - - identifier: https://orcid.org/0000-0002-1295-0965 + - identifier: 0000-0002-1295-0965 scheme: orcid - affiliations: - name: European Organization for Nuclear Research @@ -45727,8 +52082,9 @@ - name: Moscow Institute of Physics and Technology family_name: Zhemchugov given_name: Alexey + id: 0000-0002-3360-4965 identifiers: - - identifier: https://orcid.org/0000-0002-3360-4965 + - identifier: 0000-0002-3360-4965 scheme: orcid - affiliations: - name: Northwestern University @@ -45736,143 +52092,163 @@ - name: Emory University family_name: Cooper given_name: Lee A.D. + id: 0000-0002-3504-4965 identifiers: - - identifier: https://orcid.org/0000-0002-3504-4965 + - identifier: 0000-0002-3504-4965 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Alberto given_name: Rovelli + id: 0000-0002-3850-1965 identifiers: - - identifier: https://orcid.org/0000-0002-3850-1965 + - identifier: 0000-0002-3850-1965 scheme: orcid - affiliations: - name: Northwestern University family_name: Dutta given_name: Koushik + id: 0000-0002-5976-7965 identifiers: - - identifier: https://orcid.org/0000-0002-5976-7965 + - identifier: 0000-0002-5976-7965 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: "T\xFCttelmann" given_name: Frank + id: 0000-0003-2745-9965 identifiers: - - identifier: https://orcid.org/0000-0003-2745-9965 + - identifier: 0000-0003-2745-9965 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Dorn given_name: Gerhard + id: 0000-0003-3200-4965 identifiers: - - identifier: https://orcid.org/0000-0003-3200-4965 + - identifier: 0000-0003-3200-4965 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: "G\xFCtl" given_name: Christian + id: 0000-0001-9589-1966 identifiers: - - identifier: https://orcid.org/0000-0001-9589-1966 + - identifier: 0000-0001-9589-1966 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Wallner given_name: Johannes + id: 0000-0002-3051-1966 identifiers: - - identifier: https://orcid.org/0000-0002-3051-1966 + - identifier: 0000-0002-3051-1966 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Lex given_name: Elisabeth + id: 0000-0001-5293-2967 identifiers: - - identifier: https://orcid.org/0000-0001-5293-2967 + - identifier: 0000-0001-5293-2967 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Kovachev given_name: Georgi + id: 0000-0001-8019-1967 identifiers: - - identifier: https://orcid.org/0000-0001-8019-1967 + - identifier: 0000-0001-8019-1967 scheme: orcid - affiliations: - name: Northwestern University family_name: Martin given_name: Travis + id: 0000-0001-9342-7967 identifiers: - - identifier: https://orcid.org/0000-0001-9342-7967 + - identifier: 0000-0001-9342-7967 scheme: orcid - affiliations: - name: California Institute of Technology - name: Howard Hughes Medical Institute family_name: Elowitz given_name: Michael + id: 0000-0002-1221-0967 identifiers: - - identifier: https://orcid.org/0000-0002-1221-0967 + - identifier: 0000-0002-1221-0967 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Niewiem given_name: Witold + id: 0000-0002-7642-5967 identifiers: - - identifier: https://orcid.org/0000-0002-7642-5967 + - identifier: 0000-0002-7642-5967 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Alsaadawi given_name: Yara + id: 0000-0001-5169-3968 identifiers: - - identifier: https://orcid.org/0000-0001-5169-3968 + - identifier: 0000-0001-5169-3968 scheme: orcid - affiliations: - name: Northwestern University family_name: Lopez-Dominguez given_name: Victor + id: 0000-0001-7301-6968 identifiers: - - identifier: https://orcid.org/0000-0001-7301-6968 + - identifier: 0000-0001-7301-6968 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hendricks given_name: Thomas + id: 0000-0001-9111-8968 identifiers: - - identifier: https://orcid.org/0000-0001-9111-8968 + - identifier: 0000-0001-9111-8968 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Jani given_name: Maulik + id: 0000-0003-1841-4968 identifiers: - - identifier: https://orcid.org/0000-0003-1841-4968 + - identifier: 0000-0003-1841-4968 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Godland given_name: Thomas + id: 0000-0003-4202-7968 identifiers: - - identifier: https://orcid.org/0000-0003-4202-7968 + - identifier: 0000-0003-4202-7968 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Berg given_name: Ivan + id: 0000-0002-1864-4969 identifiers: - - identifier: https://orcid.org/0000-0002-1864-4969 + - identifier: 0000-0002-1864-4969 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Bishai given_name: Mary + id: 0000-0003-1829-0969 identifiers: - - identifier: https://orcid.org/0000-0003-1829-0969 + - identifier: 0000-0003-1829-0969 scheme: orcid - affiliations: - name: TU Wien family_name: Steindl given_name: Christoph + id: 0000-0003-2213-4969 identifiers: - - identifier: https://orcid.org/0000-0003-2213-4969 + - identifier: 0000-0003-2213-4969 scheme: orcid - affiliations: - name: California Institute of Technology @@ -45882,221 +52258,252 @@ - name: NASA Jet Propulsion Laboratory family_name: Flannery given_name: David + id: 0000-0001-8982-496X identifiers: - - identifier: https://orcid.org/0000-0001-8982-496X + - identifier: 0000-0001-8982-496X scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Turra given_name: Ruggero + id: 0000-0001-8740-796X identifiers: - - identifier: https://orcid.org/0000-0001-8740-796X + - identifier: 0000-0001-8740-796X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kiser given_name: Cynthia + id: 0000-0002-0102-996X identifiers: - - identifier: https://orcid.org/0000-0002-0102-996X + - identifier: 0000-0002-0102-996X scheme: orcid - affiliations: - name: Northwestern University family_name: Weiss given_name: Daniel + id: 0000-0002-1952-896X identifiers: - - identifier: https://orcid.org/0000-0002-1952-896X + - identifier: 0000-0002-1952-896X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Ehrnsperger given_name: Laura + id: 0000-0002-4054-696X identifiers: - - identifier: https://orcid.org/0000-0002-4054-696X + - identifier: 0000-0002-4054-696X scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Palestini given_name: Sandro + id: 0000-0002-4110-096X identifiers: - - identifier: https://orcid.org/0000-0002-4110-096X + - identifier: 0000-0002-4110-096X scheme: orcid - affiliations: - name: Northwestern University family_name: Mrksich given_name: Milan + id: 0000-0002-4964-796X identifiers: - - identifier: https://orcid.org/0000-0002-4964-796X + - identifier: 0000-0002-4964-796X scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Tong given_name: Rui + id: 0000-0002-5410-496X identifiers: - - identifier: https://orcid.org/0000-0002-5410-496X + - identifier: 0000-0002-5410-496X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Ivanov given_name: Hristo + id: 0000-0002-8953-496X identifiers: - - identifier: https://orcid.org/0000-0002-8953-496X + - identifier: 0000-0002-8953-496X scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" - name: "Andr\xE1ssy University Budapest" family_name: Eckardt given_name: Martina + id: 0000-0002-9466-796X identifiers: - - identifier: https://orcid.org/0000-0002-9466-796X + - identifier: 0000-0002-9466-796X scheme: orcid - affiliations: - name: TU Wien family_name: "Sokolovi\u0107" given_name: Igor + id: 0000-0003-1357-396X identifiers: - - identifier: https://orcid.org/0000-0003-1357-396X + - identifier: 0000-0003-1357-396X scheme: orcid - affiliations: - name: Northwestern University family_name: Klug given_name: Zasu + id: 0000-0003-3483-396X identifiers: - - identifier: https://orcid.org/0000-0003-3483-396X + - identifier: 0000-0003-3483-396X scheme: orcid - affiliations: - name: Northwestern University family_name: Yang given_name: Yang + id: 0000-0003-4759-796X identifiers: - - identifier: https://orcid.org/0000-0003-4759-796X + - identifier: 0000-0003-4759-796X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Green given_name: Leopold + id: 0000-0001-5479-6970 identifiers: - - identifier: https://orcid.org/0000-0001-5479-6970 + - identifier: 0000-0001-5479-6970 scheme: orcid - affiliations: - name: University of Hong Kong - name: Brookhaven National Laboratory family_name: Wu given_name: Jin + id: 0000-0001-8991-3970 identifiers: - - identifier: https://orcid.org/0000-0001-8991-3970 + - identifier: 0000-0001-8991-3970 scheme: orcid - affiliations: - name: TU Wien family_name: "L\xF3pez Mart\xEDnez" given_name: Montserrat + id: 0000-0001-9527-2970 identifiers: - - identifier: https://orcid.org/0000-0001-9527-2970 + - identifier: 0000-0001-9527-2970 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Zhang given_name: Weiqi + id: 0000-0002-4166-2970 identifiers: - - identifier: https://orcid.org/0000-0002-4166-2970 + - identifier: 0000-0002-4166-2970 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Zhang given_name: Yide + id: 0000-0002-9463-3970 identifiers: - - identifier: https://orcid.org/0000-0002-9463-3970 + - identifier: 0000-0002-9463-3970 scheme: orcid - affiliations: - name: Institute for Particle Physics Phenomenology, Durham University - name: CERN family_name: Jones given_name: Stephen + id: 0000-0003-0024-7970 identifiers: - - identifier: https://orcid.org/0000-0003-0024-7970 + - identifier: 0000-0003-0024-7970 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Boyle given_name: Andrew + id: 0000-0001-6037-2971 identifiers: - - identifier: https://orcid.org/0000-0001-6037-2971 + - identifier: 0000-0001-6037-2971 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Ehrchen given_name: Jan + id: 0000-0001-7680-9971 identifiers: - - identifier: https://orcid.org/0000-0001-7680-9971 + - identifier: 0000-0001-7680-9971 scheme: orcid - affiliations: - name: TU Wien family_name: Weber given_name: Stefan + id: 0000-0002-1777-0971 identifiers: - - identifier: https://orcid.org/0000-0002-1777-0971 + - identifier: 0000-0002-1777-0971 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Sherman given_name: David + id: 0000-0002-2120-0971 identifiers: - - identifier: https://orcid.org/0000-0002-2120-0971 + - identifier: 0000-0002-2120-0971 scheme: orcid - affiliations: - name: CERN family_name: Vidal Garcia given_name: Marco + id: 0000-0002-9363-4971 identifiers: - - identifier: https://orcid.org/0000-0002-9363-4971 + - identifier: 0000-0002-9363-4971 scheme: orcid - affiliations: - name: Northwestern University family_name: Wolek given_name: Andrew + id: 0000-0003-1309-2971 identifiers: - - identifier: https://orcid.org/0000-0003-1309-2971 + - identifier: 0000-0003-1309-2971 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Potekhin given_name: Maxim + id: 0000-0003-1811-7971 identifiers: - - identifier: https://orcid.org/0000-0003-1811-7971 + - identifier: 0000-0003-1811-7971 scheme: orcid - affiliations: - name: University of Bamberg family_name: "Sereg\xE9ly" given_name: Timo + id: 0000-0003-2406-6971 identifiers: - - identifier: https://orcid.org/0000-0003-2406-6971 + - identifier: 0000-0003-2406-6971 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Serbin given_name: Shawn + id: 0000-0003-4136-8971 identifiers: - - identifier: https://orcid.org/0000-0003-4136-8971 + - identifier: 0000-0003-4136-8971 scheme: orcid - affiliations: - name: TU Wien family_name: Wiegand given_name: Dietmar + id: 0000-0001-6038-4972 identifiers: - - identifier: https://orcid.org/0000-0001-6038-4972 + - identifier: 0000-0001-6038-4972 scheme: orcid - affiliations: - name: TU Wien family_name: Wilkovitsch given_name: Martin + id: 0000-0002-6809-6972 identifiers: - - identifier: https://orcid.org/0000-0002-6809-6972 + - identifier: 0000-0002-6809-6972 scheme: orcid - affiliations: - name: Northwestern University family_name: Sherin given_name: Miriam + id: 0000-0003-0848-1972 identifiers: - - identifier: https://orcid.org/0000-0003-0848-1972 + - identifier: 0000-0003-0848-1972 scheme: orcid - affiliations: - name: Northwestern University @@ -46104,337 +52511,384 @@ - name: University of Chicago family_name: Kanojia given_name: Deepak + id: 0000-0003-4295-4972 identifiers: - - identifier: https://orcid.org/0000-0003-4295-4972 + - identifier: 0000-0003-4295-4972 scheme: orcid - affiliations: - name: Northwestern University family_name: Maiga given_name: Mamoudou + id: 0000-0001-7871-3973 identifiers: - - identifier: https://orcid.org/0000-0001-7871-3973 + - identifier: 0000-0001-7871-3973 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Neuser given_name: Monja P. + id: 0000-0001-7987-1973 identifiers: - - identifier: https://orcid.org/0000-0001-7987-1973 + - identifier: 0000-0001-7987-1973 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Tabbakh given_name: Anas + id: 0000-0001-8250-1973 identifiers: - - identifier: https://orcid.org/0000-0001-8250-1973 + - identifier: 0000-0001-8250-1973 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Daniels given_name: "Martin Andr\xE9" + id: 0000-0002-1782-3973 identifiers: - - identifier: https://orcid.org/0000-0002-1782-3973 + - identifier: 0000-0002-1782-3973 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Berg given_name: Joseph + id: 0000-0002-5955-6973 identifiers: - - identifier: https://orcid.org/0000-0002-5955-6973 + - identifier: 0000-0002-5955-6973 scheme: orcid - affiliations: - name: "Ko\xE7 University" - name: Northwestern University family_name: Aydemir given_name: Umut + id: 0000-0003-1164-1973 identifiers: - - identifier: https://orcid.org/0000-0003-1164-1973 + - identifier: 0000-0003-1164-1973 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Armus given_name: Lee + id: 0000-0003-3498-2973 identifiers: - - identifier: https://orcid.org/0000-0003-3498-2973 + - identifier: 0000-0003-3498-2973 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Temme given_name: Louisa + id: 0000-0003-3753-4973 identifiers: - - identifier: https://orcid.org/0000-0003-3753-4973 + - identifier: 0000-0003-3753-4973 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Maingi given_name: Vishal + id: 0000-0003-3861-7973 identifiers: - - identifier: https://orcid.org/0000-0003-3861-7973 + - identifier: 0000-0003-3861-7973 scheme: orcid - affiliations: - name: Illinois Institute of Technology - name: Northwestern University family_name: Moller given_name: Arlen + id: 0000-0003-4464-6973 identifiers: - - identifier: https://orcid.org/0000-0003-4464-6973 + - identifier: 0000-0003-4464-6973 scheme: orcid - affiliations: - name: Northwestern University family_name: Menefee given_name: Heather + id: 0000-0002-3548-6974 identifiers: - - identifier: https://orcid.org/0000-0002-3548-6974 + - identifier: 0000-0002-3548-6974 scheme: orcid - affiliations: - name: CERN family_name: Kluge given_name: Alexander + id: 0000-0002-6497-3974 identifiers: - - identifier: https://orcid.org/0000-0002-6497-3974 + - identifier: 0000-0002-6497-3974 scheme: orcid - affiliations: - name: Northwestern University family_name: Roloff given_name: Michael + id: 0000-0003-0124-4974 identifiers: - - identifier: https://orcid.org/0000-0003-0124-4974 + - identifier: 0000-0003-0124-4974 scheme: orcid - affiliations: - name: TU Wien family_name: Kocbay given_name: Emin + id: 0000-0003-4425-2974 identifiers: - - identifier: https://orcid.org/0000-0003-4425-2974 + - identifier: 0000-0003-4425-2974 scheme: orcid - affiliations: - name: Northwestern University - name: Argonne National Laboratory family_name: Xia given_name: Yi + id: 0000-0001-5386-3975 identifiers: - - identifier: https://orcid.org/0000-0001-5386-3975 + - identifier: 0000-0001-5386-3975 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Chen given_name: Jiajie + id: 0000-0002-0194-1975 identifiers: - - identifier: https://orcid.org/0000-0002-0194-1975 + - identifier: 0000-0002-0194-1975 scheme: orcid - affiliations: - name: Masaryk University - name: Northwestern University family_name: Roberts given_name: Andrew + id: 0000-0002-0416-5975 identifiers: - - identifier: https://orcid.org/0000-0002-0416-5975 + - identifier: 0000-0002-0416-5975 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Agranov given_name: Marina + id: 0000-0002-0642-7975 identifiers: - - identifier: https://orcid.org/0000-0002-0642-7975 + - identifier: 0000-0002-0642-7975 scheme: orcid - affiliations: - name: Graz University of Technology family_name: "R\xFCdiger-Wetzlinger" given_name: Maximilian + id: 0000-0002-3534-0975 identifiers: - - identifier: https://orcid.org/0000-0002-3534-0975 + - identifier: 0000-0002-3534-0975 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: bathini given_name: praveen + id: 0000-0002-4031-8975 identifiers: - - identifier: https://orcid.org/0000-0002-4031-8975 + - identifier: 0000-0002-4031-8975 scheme: orcid - affiliations: - name: TU Wien family_name: Hartner-Tiefenthaler given_name: Martina + id: 0000-0003-1597-3975 identifiers: - - identifier: https://orcid.org/0000-0003-1597-3975 + - identifier: 0000-0003-1597-3975 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Camino given_name: Fernando + id: 0000-0003-0575-2976 identifiers: - - identifier: https://orcid.org/0000-0003-0575-2976 + - identifier: 0000-0003-0575-2976 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Sverdlov given_name: Viktor + id: 0000-0003-1736-6976 identifiers: - - identifier: https://orcid.org/0000-0003-1736-6976 + - identifier: 0000-0003-1736-6976 scheme: orcid - affiliations: - name: Northwestern University family_name: Liu given_name: Chuan + id: 0000-0003-2867-1976 identifiers: - - identifier: https://orcid.org/0000-0003-2867-1976 + - identifier: 0000-0003-2867-1976 scheme: orcid - affiliations: - name: University of Fribourg family_name: Kim given_name: Aaram J. + id: 0000-0003-4166-5976 identifiers: - - identifier: https://orcid.org/0000-0003-4166-5976 + - identifier: 0000-0003-4166-5976 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Ikeda given_name: Kiyoshi + id: 0000-0003-4857-6976 identifiers: - - identifier: https://orcid.org/0000-0003-4857-6976 + - identifier: 0000-0003-4857-6976 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Preiner given_name: Reinhold + id: 0000-0002-5167-1977 identifiers: - - identifier: https://orcid.org/0000-0002-5167-1977 + - identifier: 0000-0002-5167-1977 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Khosh Sokhan Monfared given_name: Siavash + id: 0000-0002-7629-7977 identifiers: - - identifier: https://orcid.org/0000-0002-7629-7977 + - identifier: 0000-0002-7629-7977 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Mirarchi given_name: Daniele + id: 0000-0003-2092-1977 identifiers: - - identifier: https://orcid.org/0000-0003-2092-1977 + - identifier: 0000-0003-2092-1977 scheme: orcid - affiliations: - name: TU Wien - name: "Technische Universit\xE4t Wien" family_name: Parkinson given_name: Gareth + id: 0000-0003-2457-8977 identifiers: - - identifier: https://orcid.org/0000-0003-2457-8977 + - identifier: 0000-0003-2457-8977 scheme: orcid - affiliations: - name: Northwestern University family_name: Klein given_name: William + id: 0000-0002-3047-9978 identifiers: - - identifier: https://orcid.org/0000-0002-3047-9978 + - identifier: 0000-0002-3047-9978 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Omazic given_name: Amila + id: 0000-0002-6602-5978 identifiers: - - identifier: https://orcid.org/0000-0002-6602-5978 + - identifier: 0000-0002-6602-5978 scheme: orcid - affiliations: - name: University of Bamberg family_name: Drescher given_name: Joachim + id: 0000-0003-1945-7978 identifiers: - - identifier: https://orcid.org/0000-0003-1945-7978 + - identifier: 0000-0003-1945-7978 scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Yikuan + id: 0000-0001-7546-9979 identifiers: - - identifier: https://orcid.org/0000-0001-7546-9979 + - identifier: 0000-0001-7546-9979 scheme: orcid - affiliations: - name: ROTOP Pharmaka Ltd. - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Lai given_name: Thu Hang + id: 0000-0001-8157-8979 identifiers: - - identifier: https://orcid.org/0000-0001-8157-8979 + - identifier: 0000-0001-8157-8979 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Bregar given_name: Rok + id: 0000-0002-3709-2979 identifiers: - - identifier: https://orcid.org/0000-0002-3709-2979 + - identifier: 0000-0002-3709-2979 scheme: orcid - affiliations: - name: Northwestern University family_name: Petty given_name: Francesca + id: 0000-0001-5531-497X identifiers: - - identifier: https://orcid.org/0000-0001-5531-497X + - identifier: 0000-0001-5531-497X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: KIM given_name: CHUNG KOO + id: 0000-0002-2463-197X identifiers: - - identifier: https://orcid.org/0000-0002-2463-197X + - identifier: 0000-0002-2463-197X scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Petitpierre given_name: Genevieve + id: 0000-0002-3353-897X identifiers: - - identifier: https://orcid.org/0000-0002-3353-897X + - identifier: 0000-0002-3353-897X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Figueroa Schibber given_name: Erika + id: 0000-0002-6629-297X identifiers: - - identifier: https://orcid.org/0000-0002-6629-297X + - identifier: 0000-0002-6629-297X scheme: orcid - affiliations: - name: Northwestern University family_name: Bleher given_name: Reiner + id: 0000-0003-0962-797X identifiers: - - identifier: https://orcid.org/0000-0003-0962-797X + - identifier: 0000-0003-0962-797X scheme: orcid - affiliations: - name: Northwestern University family_name: Sokolowski given_name: Michael + id: 0000-0003-2364-897X identifiers: - - identifier: https://orcid.org/0000-0003-2364-897X + - identifier: 0000-0003-2364-897X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Johnson given_name: Erik + id: 0000-0001-9202-8980 identifiers: - - identifier: https://orcid.org/0000-0001-9202-8980 + - identifier: 0000-0001-9202-8980 scheme: orcid - affiliations: - name: Graz University of Technology (90000) - name: "Technische Universit\xE4t Graz" family_name: Hadley given_name: Peter + id: 0000-0002-7443-7980 identifiers: - - identifier: https://orcid.org/0000-0002-7443-7980 + - identifier: 0000-0002-7443-7980 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Ubben given_name: Malte + id: 0000-0002-8041-5980 identifiers: - - identifier: https://orcid.org/0000-0002-8041-5980 + - identifier: 0000-0002-8041-5980 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lei given_name: Yang + id: 0000-0002-8377-1980 identifiers: - - identifier: https://orcid.org/0000-0002-8377-1980 + - identifier: 0000-0002-8377-1980 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare @@ -46442,15 +52896,17 @@ - name: European Organization for Nuclear Research family_name: Rosati given_name: Stefano + id: 0000-0003-0838-5980 identifiers: - - identifier: https://orcid.org/0000-0003-0838-5980 + - identifier: 0000-0003-0838-5980 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Short given_name: Hannah + id: 0000-0003-2187-0980 identifiers: - - identifier: https://orcid.org/0000-0003-2187-0980 + - identifier: 0000-0003-2187-0980 scheme: orcid - affiliations: - name: Oregon State University @@ -46458,255 +52914,291 @@ - name: Purdue University family_name: Weiss given_name: William + id: 0000-0003-2859-7980 identifiers: - - identifier: https://orcid.org/0000-0003-2859-7980 + - identifier: 0000-0003-2859-7980 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Grabuschnig given_name: Stefan + id: 0000-0001-9303-2981 identifiers: - - identifier: https://orcid.org/0000-0001-9303-2981 + - identifier: 0000-0001-9303-2981 scheme: orcid - affiliations: - name: Northwestern University - name: Northwestern Medicine family_name: Hayes given_name: M Geoffrey + id: 0000-0002-4617-3981 identifiers: - - identifier: https://orcid.org/0000-0002-4617-3981 + - identifier: 0000-0002-4617-3981 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Pinterich given_name: Tamara + id: 0000-0002-4882-2981 identifiers: - - identifier: https://orcid.org/0000-0002-4882-2981 + - identifier: 0000-0002-4882-2981 scheme: orcid - affiliations: - name: TU Wien family_name: Hauger given_name: Georg + id: 0000-0003-4485-7981 identifiers: - - identifier: https://orcid.org/0000-0003-4485-7981 + - identifier: 0000-0003-4485-7981 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Karl given_name: David + id: 0000-0002-0326-5982 identifiers: - - identifier: https://orcid.org/0000-0002-0326-5982 + - identifier: 0000-0002-0326-5982 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Biondi given_name: Ettore + id: 0000-0002-3305-0982 identifiers: - - identifier: https://orcid.org/0000-0002-3305-0982 + - identifier: 0000-0002-3305-0982 scheme: orcid - affiliations: - name: TU Wien family_name: Hamm given_name: Thekla + id: 0000-0002-4595-9982 identifiers: - - identifier: https://orcid.org/0000-0002-4595-9982 + - identifier: 0000-0002-4595-9982 scheme: orcid - affiliations: - name: University of Fribourg family_name: Pichonnaz given_name: Pascal + id: 0000-0002-4790-3982 identifiers: - - identifier: https://orcid.org/0000-0002-4790-3982 + - identifier: 0000-0002-4790-3982 scheme: orcid - affiliations: - name: Northwestern University family_name: Wu given_name: Huang + id: 0000-0002-7429-0982 identifiers: - - identifier: https://orcid.org/0000-0002-7429-0982 + - identifier: 0000-0002-7429-0982 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Haase given_name: Martin + id: 0000-0002-8971-6982 identifiers: - - identifier: https://orcid.org/0000-0002-8971-6982 + - identifier: 0000-0002-8971-6982 scheme: orcid - affiliations: - name: Northwestern University family_name: Terreran given_name: Giacomo + id: 0000-0003-0794-5982 identifiers: - - identifier: https://orcid.org/0000-0003-0794-5982 + - identifier: 0000-0003-0794-5982 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Katepally given_name: Varun Kumar + id: 0000-0003-3504-9982 identifiers: - - identifier: https://orcid.org/0000-0003-3504-9982 + - identifier: 0000-0003-3504-9982 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Hitlin given_name: David + id: 0000-0003-4028-6982 identifiers: - - identifier: https://orcid.org/0000-0003-4028-6982 + - identifier: 0000-0003-4028-6982 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Saurugger given_name: Bernd + id: 0000-0001-5730-3983 identifiers: - - identifier: https://orcid.org/0000-0001-5730-3983 + - identifier: 0000-0001-5730-3983 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Hamer given_name: Ute + id: 0000-0002-3845-3983 identifiers: - - identifier: https://orcid.org/0000-0002-3845-3983 + - identifier: 0000-0002-3845-3983 scheme: orcid - affiliations: - name: CERN family_name: Park given_name: Sohyun + id: 0000-0002-6481-1983 identifiers: - - identifier: https://orcid.org/0000-0002-6481-1983 + - identifier: 0000-0002-6481-1983 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Matis given_name: Maja + id: 0000-0003-3972-1983 identifiers: - - identifier: https://orcid.org/0000-0003-3972-1983 + - identifier: 0000-0003-3972-1983 scheme: orcid - affiliations: - name: University of Fribourg family_name: Uhlich given_name: Maximiliane + id: 0000-0001-5294-4984 identifiers: - - identifier: https://orcid.org/0000-0001-5294-4984 + - identifier: 0000-0001-5294-4984 scheme: orcid - affiliations: - name: Northwestern University family_name: Cruz given_name: Stefany + id: 0000-0001-6461-1984 identifiers: - - identifier: https://orcid.org/0000-0001-6461-1984 + - identifier: 0000-0001-6461-1984 scheme: orcid - affiliations: - name: Northwestern University family_name: Antonov given_name: Ivan + id: 0000-0001-7961-0984 identifiers: - - identifier: https://orcid.org/0000-0001-7961-0984 + - identifier: 0000-0001-7961-0984 scheme: orcid - affiliations: - name: Northwestern University family_name: Chen given_name: Hongliang + id: 0000-0002-4442-7984 identifiers: - - identifier: https://orcid.org/0000-0002-4442-7984 + - identifier: 0000-0002-4442-7984 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kugel given_name: Harald + id: 0000-0002-4349-1984 identifiers: - - identifier: https://orcid.org/0000-0002-4349-1984 + - identifier: 0000-0002-4349-1984 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Wang given_name: Yun + id: 0000-0002-4749-2984 identifiers: - - identifier: https://orcid.org/0000-0002-4749-2984 + - identifier: 0000-0002-4749-2984 scheme: orcid - affiliations: - name: University of Bamberg family_name: Kakhishvili given_name: Levan + id: 0000-0003-0574-4984 identifiers: - - identifier: https://orcid.org/0000-0003-0574-4984 + - identifier: 0000-0003-0574-4984 scheme: orcid - affiliations: - name: Northwestern University - name: "Bo\u011Fazi\xE7i \xDCniversitesi" family_name: Kayitmazer given_name: A. Basak + id: 0000-0003-1885-2984 identifiers: - - identifier: https://orcid.org/0000-0003-1885-2984 + - identifier: 0000-0003-1885-2984 scheme: orcid - affiliations: - name: Northwestern University family_name: Benton given_name: Adia + id: 0000-0001-9523-5985 identifiers: - - identifier: https://orcid.org/0000-0001-9523-5985 + - identifier: 0000-0001-9523-5985 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Gamberini given_name: Enrico + id: 0000-0002-6040-4985 identifiers: - - identifier: https://orcid.org/0000-0002-6040-4985 + - identifier: 0000-0002-6040-4985 scheme: orcid - affiliations: - name: CERN family_name: Pitt given_name: Michael + id: 0000-0003-2461-5985 identifiers: - - identifier: https://orcid.org/0000-0003-2461-5985 + - identifier: 0000-0003-2461-5985 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Giardina given_name: Adriano + id: 0000-0003-3166-3985 identifiers: - - identifier: https://orcid.org/0000-0003-3166-3985 + - identifier: 0000-0003-3166-3985 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Bejar Alonso given_name: Isabel + id: 0000-0003-3229-5985 identifiers: - - identifier: https://orcid.org/0000-0003-3229-5985 + - identifier: 0000-0003-3229-5985 scheme: orcid - affiliations: - name: Northwestern University family_name: Cho given_name: Byoung-Kyu + id: 0000-0003-3370-6985 identifiers: - - identifier: https://orcid.org/0000-0003-3370-6985 + - identifier: 0000-0003-3370-6985 scheme: orcid - affiliations: - name: Northwestern University family_name: Cole given_name: Jennifer + id: 0000-0001-7104-2986 identifiers: - - identifier: https://orcid.org/0000-0001-7104-2986 + - identifier: 0000-0001-7104-2986 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Blackburn given_name: Kent + id: 0000-0002-3838-2986 identifiers: - - identifier: https://orcid.org/0000-0002-3838-2986 + - identifier: 0000-0002-3838-2986 scheme: orcid - affiliations: - name: Northwestern University family_name: Yuan given_name: Hang + id: 0000-0002-8914-7986 identifiers: - - identifier: https://orcid.org/0000-0002-8914-7986 + - identifier: 0000-0002-8914-7986 scheme: orcid - affiliations: - name: Northwestern University family_name: Kenel given_name: Christoph + id: 0000-0003-0800-2986 identifiers: - - identifier: https://orcid.org/0000-0003-0800-2986 + - identifier: 0000-0003-0800-2986 scheme: orcid - affiliations: - name: Northwestern University - Chicago @@ -46714,276 +53206,315 @@ - name: Northwestern University family_name: Wisner given_name: Katherine + id: 0000-0003-3458-5986 identifiers: - - identifier: https://orcid.org/0000-0003-3458-5986 + - identifier: 0000-0003-3458-5986 scheme: orcid - affiliations: - name: Northwestern University family_name: Flynn given_name: Steven + id: 0000-0001-8262-6987 identifiers: - - identifier: https://orcid.org/0000-0001-8262-6987 + - identifier: 0000-0001-8262-6987 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Bai given_name: Jianming + id: 0000-0002-0575-2987 identifiers: - - identifier: https://orcid.org/0000-0002-0575-2987 + - identifier: 0000-0002-0575-2987 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Klatt given_name: Oliver + id: 0000-0002-1040-4987 identifiers: - - identifier: https://orcid.org/0000-0002-1040-4987 + - identifier: 0000-0002-1040-4987 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Harrer given_name: Georg Friedrich + id: 0000-0002-1150-3987 identifiers: - - identifier: https://orcid.org/0000-0002-1150-3987 + - identifier: 0000-0002-1150-3987 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Prakash given_name: Sharan + id: 0000-0003-1777-0987 identifiers: - - identifier: https://orcid.org/0000-0003-1777-0987 + - identifier: 0000-0003-1777-0987 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: di falco given_name: stefano + id: 0000-0001-5425-8988 identifiers: - - identifier: https://orcid.org/0000-0001-5425-8988 + - identifier: 0000-0001-5425-8988 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Zimmermann given_name: Thomas + id: 0000-0001-6716-3988 identifiers: - - identifier: https://orcid.org/0000-0001-6716-3988 + - identifier: 0000-0001-6716-3988 scheme: orcid - affiliations: - name: Northwestern University family_name: Kapitsinou given_name: Pinelopi + id: 0000-0002-6953-0988 identifiers: - - identifier: https://orcid.org/0000-0002-6953-0988 + - identifier: 0000-0002-6953-0988 scheme: orcid - affiliations: - name: "Westf\xE4lische Wilhelms-Universit\xE4t M\xFCnster" family_name: Harms given_name: Lisa + id: 0000-0002-9054-0988 identifiers: - - identifier: https://orcid.org/0000-0002-9054-0988 + - identifier: 0000-0002-9054-0988 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kerkenberg given_name: Nicole + id: 0000-0003-0565-0988 identifiers: - - identifier: https://orcid.org/0000-0003-0565-0988 + - identifier: 0000-0003-0565-0988 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Trickle given_name: Tanner + id: 0000-0003-1371-4988 identifiers: - - identifier: https://orcid.org/0000-0003-1371-4988 + - identifier: 0000-0003-1371-4988 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare - name: "Universit\xE0 degli Studi di Milano" family_name: Caracciolo given_name: Sergio + id: 0000-0003-3028-2988 identifiers: - - identifier: https://orcid.org/0000-0003-3028-2988 + - identifier: 0000-0003-3028-2988 scheme: orcid - affiliations: - name: TU Wien family_name: Pettermann given_name: Heinz + id: 0000-0001-7162-5989 identifiers: - - identifier: https://orcid.org/0000-0001-7162-5989 + - identifier: 0000-0001-7162-5989 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Beirer given_name: Joshua Falco + id: 0000-0001-9024-4989 identifiers: - - identifier: https://orcid.org/0000-0001-9024-4989 + - identifier: 0000-0001-9024-4989 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yue given_name: Yisong + id: 0000-0001-9127-1989 identifiers: - - identifier: https://orcid.org/0000-0001-9127-1989 + - identifier: 0000-0001-9127-1989 scheme: orcid - affiliations: - name: Northwestern University family_name: Berhie given_name: Saba + id: 0000-0002-4751-1989 identifiers: - - identifier: https://orcid.org/0000-0002-4751-1989 + - identifier: 0000-0002-4751-1989 scheme: orcid - affiliations: - name: CERN family_name: Woithe given_name: Julia + id: 0000-0002-4772-2989 identifiers: - - identifier: https://orcid.org/0000-0002-4772-2989 + - identifier: 0000-0002-4772-2989 scheme: orcid - affiliations: - name: TU Wien family_name: Rain given_name: Sophie + id: 0000-0002-8940-4989 identifiers: - - identifier: https://orcid.org/0000-0002-8940-4989 + - identifier: 0000-0002-8940-4989 scheme: orcid - affiliations: - name: Northwestern University family_name: Zwick given_name: Erin + id: 0000-0001-7174-198X identifiers: - - identifier: https://orcid.org/0000-0001-7174-198X + - identifier: 0000-0001-7174-198X scheme: orcid - affiliations: - name: Northwestern University family_name: Li given_name: Yajing + id: 0000-0002-3769-198X identifiers: - - identifier: https://orcid.org/0000-0002-3769-198X + - identifier: 0000-0002-3769-198X scheme: orcid - affiliations: - name: California Institute of Technology family_name: Bunn given_name: Julian + id: 0000-0002-3798-298X identifiers: - - identifier: https://orcid.org/0000-0002-3798-298X + - identifier: 0000-0002-3798-298X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kubeil given_name: Clemens + id: 0000-0003-0081-498X identifiers: - - identifier: https://orcid.org/0000-0003-0081-498X + - identifier: 0000-0003-0081-498X scheme: orcid - affiliations: - name: Northwestern University family_name: Sang given_name: Zhongsheng + id: 0000-0003-1692-098X identifiers: - - identifier: https://orcid.org/0000-0003-1692-098X + - identifier: 0000-0003-1692-098X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Kraft given_name: Stephan + id: 0000-0002-0638-6990 identifiers: - - identifier: https://orcid.org/0000-0002-0638-6990 + - identifier: 0000-0002-0638-6990 scheme: orcid - affiliations: - name: Northwestern University family_name: Williams given_name: Roger + id: 0000-0002-3342-1990 identifiers: - - identifier: https://orcid.org/0000-0002-3342-1990 + - identifier: 0000-0002-3342-1990 scheme: orcid - affiliations: - name: Northwestern University family_name: Chisholm given_name: Rex + id: 0000-0002-5638-3990 identifiers: - - identifier: https://orcid.org/0000-0002-5638-3990 + - identifier: 0000-0002-5638-3990 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Cardella given_name: Giuseppe + id: 0000-0002-5980-8990 identifiers: - - identifier: https://orcid.org/0000-0002-5980-8990 + - identifier: 0000-0002-5980-8990 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Paul given_name: Jagabandhu + id: 0000-0003-2375-0990 identifiers: - - identifier: https://orcid.org/0000-0003-2375-0990 + - identifier: 0000-0003-2375-0990 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Jentsch given_name: Alexander + id: 0000-0001-7326-6991 identifiers: - - identifier: https://orcid.org/0000-0001-7326-6991 + - identifier: 0000-0001-7326-6991 scheme: orcid - affiliations: - name: Harvard University - name: Northwestern University family_name: Nasiri Avanaki given_name: Kobra + id: 0000-0001-9975-7991 identifiers: - - identifier: https://orcid.org/0000-0001-9975-7991 + - identifier: 0000-0001-9975-7991 scheme: orcid - affiliations: - name: TU Wien family_name: Fickl given_name: Bernhard + id: 0000-0002-0417-3991 identifiers: - - identifier: https://orcid.org/0000-0002-0417-3991 + - identifier: 0000-0002-0417-3991 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Miller given_name: Lisa + id: 0000-0002-2912-7991 identifiers: - - identifier: https://orcid.org/0000-0002-2912-7991 + - identifier: 0000-0002-2912-7991 scheme: orcid - affiliations: - name: Northwestern University family_name: Cao given_name: Wei + id: 0000-0002-5048-7991 identifiers: - - identifier: https://orcid.org/0000-0002-5048-7991 + - identifier: 0000-0002-5048-7991 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Dreier given_name: Nils-Arne + id: 0000-0003-0639-9991 identifiers: - - identifier: https://orcid.org/0000-0003-0639-9991 + - identifier: 0000-0003-0639-9991 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Rothland given_name: Martin + id: 0000-0001-9382-6992 identifiers: - - identifier: https://orcid.org/0000-0001-9382-6992 + - identifier: 0000-0001-9382-6992 scheme: orcid - affiliations: - name: University of Fribourg family_name: Wicky given_name: Chantal + id: 0000-0002-0034-4992 identifiers: - - identifier: https://orcid.org/0000-0002-0034-4992 + - identifier: 0000-0002-0034-4992 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: de Lima Dias given_name: Samuel Carlos + id: 0000-0002-2910-4992 identifiers: - - identifier: https://orcid.org/0000-0002-2910-4992 + - identifier: 0000-0002-2910-4992 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Huang given_name: Mengyuan + id: 0000-0002-4093-6992 identifiers: - - identifier: https://orcid.org/0000-0002-4093-6992 + - identifier: 0000-0002-4093-6992 scheme: orcid - affiliations: - name: University of Rochester @@ -46992,109 +53523,124 @@ - name: University of Oklahoma family_name: Rahman given_name: A.K.Fazlur + id: 0000-0002-7275-1992 identifiers: - - identifier: https://orcid.org/0000-0002-7275-1992 + - identifier: 0000-0002-7275-1992 scheme: orcid - affiliations: - name: Mission Product Development - name: Northwestern University family_name: Fisher given_name: Mark + id: 0000-0002-9290-4992 identifiers: - - identifier: https://orcid.org/0000-0002-9290-4992 + - identifier: 0000-0002-9290-4992 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" family_name: Cserpes given_name: "Bal\xE1zs" + id: 0000-0002-9922-5992 identifiers: - - identifier: https://orcid.org/0000-0002-9922-5992 + - identifier: 0000-0002-9922-5992 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Kaufmann given_name: Viktor + id: 0000-0003-2074-1992 identifiers: - - identifier: https://orcid.org/0000-0003-2074-1992 + - identifier: 0000-0003-2074-1992 scheme: orcid - affiliations: - name: Northwestern University family_name: Benigno given_name: Karl Lenin + id: 0000-0003-4075-0992 identifiers: - - identifier: https://orcid.org/0000-0003-4075-0992 + - identifier: 0000-0003-4075-0992 scheme: orcid - affiliations: - name: Stanford University - name: California Institute of Technology family_name: Riedel given_name: Daniel + id: 0000-0001-8058-6993 identifiers: - - identifier: https://orcid.org/0000-0001-8058-6993 + - identifier: 0000-0001-8058-6993 scheme: orcid - affiliations: - name: KAUST School - name: TU Wien family_name: Rist given_name: Florian + id: 0000-0002-1559-0993 identifiers: - - identifier: https://orcid.org/0000-0002-1559-0993 + - identifier: 0000-0002-1559-0993 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Szumega given_name: Jaroslaw + id: 0000-0002-4310-2993 identifiers: - - identifier: https://orcid.org/0000-0002-4310-2993 + - identifier: 0000-0002-4310-2993 scheme: orcid - affiliations: - name: "Universit\xE9 de Fribourg" family_name: Beise given_name: Arnd + id: 0000-0002-7360-0993 identifiers: - - identifier: https://orcid.org/0000-0002-7360-0993 + - identifier: 0000-0002-7360-0993 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Raselli given_name: Gian Luca + id: 0000-0002-7820-9993 identifiers: - - identifier: https://orcid.org/0000-0002-7820-9993 + - identifier: 0000-0002-7820-9993 scheme: orcid - affiliations: - name: Northwestern University family_name: Zhou given_name: Qunfei + id: 0000-0002-8499-1993 identifiers: - - identifier: https://orcid.org/0000-0002-8499-1993 + - identifier: 0000-0002-8499-1993 scheme: orcid - affiliations: - name: University of Bamberg family_name: "K\xF6nig" given_name: Bettina + id: 0000-0002-9545-5993 identifiers: - - identifier: https://orcid.org/0000-0002-9545-5993 + - identifier: 0000-0002-9545-5993 scheme: orcid - affiliations: - name: Northwestern University family_name: Ma given_name: Yifang + id: 0000-0003-0326-7993 identifiers: - - identifier: https://orcid.org/0000-0003-0326-7993 + - identifier: 0000-0003-0326-7993 scheme: orcid - affiliations: - name: Northwestern University family_name: Kay given_name: Cria Anne Madigan + id: 0000-0003-1323-8993 identifiers: - - identifier: https://orcid.org/0000-0003-1323-8993 + - identifier: 0000-0003-1323-8993 scheme: orcid - affiliations: - name: University of Fribourg family_name: Beeravolu Reddy given_name: Champak + id: 0000-0002-0800-1994 identifiers: - - identifier: https://orcid.org/0000-0002-0800-1994 + - identifier: 0000-0002-0800-1994 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Wien" @@ -47102,113 +53648,129 @@ \ GmbH" family_name: Ramach given_name: Ulrich + id: 0000-0002-1111-2994 identifiers: - - identifier: https://orcid.org/0000-0002-1111-2994 + - identifier: 0000-0002-1111-2994 scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Schulz given_name: Dorothea + id: 0000-0002-5750-8994 identifiers: - - identifier: https://orcid.org/0000-0002-5750-8994 + - identifier: 0000-0002-5750-8994 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Erharter given_name: Georg + id: 0000-0002-7793-9994 identifiers: - - identifier: https://orcid.org/0000-0002-7793-9994 + - identifier: 0000-0002-7793-9994 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Kitsuregawa given_name: Masaru + id: 0000-0003-4027-2994 identifiers: - - identifier: https://orcid.org/0000-0003-4027-2994 + - identifier: 0000-0003-4027-2994 scheme: orcid - affiliations: - name: TU Wien family_name: Longo given_name: Davide Mario + id: 0000-0003-4018-4994 identifiers: - - identifier: https://orcid.org/0000-0003-4018-4994 + - identifier: 0000-0003-4018-4994 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Kudtarkar given_name: Parul + id: 0000-0001-8196-5995 identifiers: - - identifier: https://orcid.org/0000-0001-8196-5995 + - identifier: 0000-0001-8196-5995 scheme: orcid - affiliations: - name: Northwestern University family_name: Lin given_name: Jennifer + id: 0000-0002-0661-6995 identifiers: - - identifier: https://orcid.org/0000-0002-0661-6995 + - identifier: 0000-0002-0661-6995 scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Perez-Martin given_name: Pablo + id: 0000-0002-2767-9995 identifiers: - - identifier: https://orcid.org/0000-0002-2767-9995 + - identifier: 0000-0002-2767-9995 scheme: orcid - affiliations: - name: CERN family_name: de Rijk given_name: Gijs + id: 0000-0002-8655-6995 identifiers: - - identifier: https://orcid.org/0000-0002-8655-6995 + - identifier: 0000-0002-8655-6995 scheme: orcid - affiliations: - name: University of Fribourg family_name: Rodondi given_name: Pierre-Yves + id: 0000-0003-2007-2995 identifiers: - - identifier: https://orcid.org/0000-0003-2007-2995 + - identifier: 0000-0003-2007-2995 scheme: orcid - affiliations: - name: TU Wien family_name: Weigner given_name: Thomas + id: 0000-0003-4941-4995 identifiers: - - identifier: https://orcid.org/0000-0003-4941-4995 + - identifier: 0000-0003-4941-4995 scheme: orcid - affiliations: - name: CERN family_name: Wiener given_name: Jeff + id: 0000-0001-5817-9996 identifiers: - - identifier: https://orcid.org/0000-0001-5817-9996 + - identifier: 0000-0001-5817-9996 scheme: orcid - affiliations: - name: National Institute of Informatics family_name: Honiden given_name: Shinichi + id: 0000-0003-1385-3996 identifiers: - - identifier: https://orcid.org/0000-0003-1385-3996 + - identifier: 0000-0003-1385-3996 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Masullo given_name: Maria Rosaria + id: 0000-0003-3735-3996 identifiers: - - identifier: https://orcid.org/0000-0003-3735-3996 + - identifier: 0000-0003-3735-3996 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Athavale given_name: Soumitra + id: 0000-0001-5620-6997 identifiers: - - identifier: https://orcid.org/0000-0001-5620-6997 + - identifier: 0000-0001-5620-6997 scheme: orcid - affiliations: - name: "Otto-Friedrich-Universit\xE4t Bamberg" family_name: Schulz given_name: Jan + id: 0000-0001-7745-3997 identifiers: - - identifier: https://orcid.org/0000-0001-7745-3997 + - identifier: 0000-0001-7745-3997 scheme: orcid - affiliations: - name: "Universit\xE4t Z\xFCrich" @@ -47216,162 +53778,185 @@ - name: University of Fribourg family_name: Neukom given_name: Raphael + id: 0000-0001-9392-0997 identifiers: - - identifier: https://orcid.org/0000-0001-9392-0997 + - identifier: 0000-0001-9392-0997 scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Beyer given_name: Tina + id: 0000-0002-6302-8997 identifiers: - - identifier: https://orcid.org/0000-0002-6302-8997 + - identifier: 0000-0002-6302-8997 scheme: orcid - affiliations: - name: "Technische Universit\xE4t Graz" family_name: Neugebauer given_name: Peter + id: 0000-0002-9671-9997 identifiers: - - identifier: https://orcid.org/0000-0002-9671-9997 + - identifier: 0000-0002-9671-9997 scheme: orcid - affiliations: - name: Graz University of Technology family_name: Steyskal given_name: Eva-Maria + id: 0000-0003-0752-9997 identifiers: - - identifier: https://orcid.org/0000-0003-0752-9997 + - identifier: 0000-0003-0752-9997 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Yin given_name: Yi + id: 0000-0003-4750-4997 identifiers: - - identifier: https://orcid.org/0000-0003-4750-4997 + - identifier: 0000-0003-4750-4997 scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Camillone given_name: Nicholas + id: 0000-0001-9263-0998 identifiers: - - identifier: https://orcid.org/0000-0001-9263-0998 + - identifier: 0000-0001-9263-0998 scheme: orcid - affiliations: - name: CERN family_name: Kwok given_name: King Wai + id: 0000-0002-0820-9998 identifiers: - - identifier: https://orcid.org/0000-0002-0820-9998 + - identifier: 0000-0002-0820-9998 scheme: orcid - affiliations: - name: TU Wien family_name: Dongre given_name: Bonny + id: 0000-0002-1181-1998 identifiers: - - identifier: https://orcid.org/0000-0002-1181-1998 + - identifier: 0000-0002-1181-1998 scheme: orcid - affiliations: - name: California Institute of Technology family_name: Lomenick given_name: Brett + id: 0000-0002-5023-9998 identifiers: - - identifier: https://orcid.org/0000-0002-5023-9998 + - identifier: 0000-0002-5023-9998 scheme: orcid - affiliations: - name: Northwestern University family_name: Coventry given_name: Christina + id: 0000-0003-3596-1998 identifiers: - - identifier: https://orcid.org/0000-0003-3596-1998 + - identifier: 0000-0003-3596-1998 scheme: orcid - affiliations: - name: European Organization for Nuclear Research family_name: Lima given_name: Christopher + id: 0000-0001-7268-4999 identifiers: - - identifier: https://orcid.org/0000-0001-7268-4999 + - identifier: 0000-0001-7268-4999 scheme: orcid - affiliations: - name: Istituto Nazionale di Fisica Nucleare family_name: Sidoti given_name: Antonio + id: 0000-0002-3277-1999 identifiers: - - identifier: https://orcid.org/0000-0002-3277-1999 + - identifier: 0000-0002-3277-1999 scheme: orcid - affiliations: - name: TU Wien family_name: Szabo given_name: Paul Stefan + id: 0000-0002-7478-7999 identifiers: - - identifier: https://orcid.org/0000-0002-7478-7999 + - identifier: 0000-0002-7478-7999 scheme: orcid - affiliations: - name: TU Wien - name: SBA Research family_name: Mayer given_name: Rudolf + id: 0000-0003-0424-5999 identifiers: - - identifier: https://orcid.org/0000-0003-0424-5999 + - identifier: 0000-0003-0424-5999 scheme: orcid - affiliations: - name: CERN family_name: Hancock given_name: Steven + id: 0000-0001-5235-399X identifiers: - - identifier: https://orcid.org/0000-0001-5235-399X + - identifier: 0000-0001-5235-399X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Kassing given_name: Sebastian + id: 0000-0002-2016-899X identifiers: - - identifier: https://orcid.org/0000-0002-2016-899X + - identifier: 0000-0002-2016-899X scheme: orcid - affiliations: - name: Helmholtz-Zentrum Dresden-Rossendorf family_name: Zhou given_name: Shengqiang + id: 0000-0002-4885-799X identifiers: - - identifier: https://orcid.org/0000-0002-4885-799X + - identifier: 0000-0002-4885-799X scheme: orcid - affiliations: - name: "Universit\xE4tsklinikum T\xFCbingen" family_name: Jumpertz von Schwartzenberg given_name: Reiner + id: 0000-0002-5544-099X identifiers: - - identifier: https://orcid.org/0000-0002-5544-099X + - identifier: 0000-0002-5544-099X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Hartmann given_name: Johanna + id: 0000-0002-5713-999X identifiers: - - identifier: https://orcid.org/0000-0002-5713-999X + - identifier: 0000-0002-5713-999X scheme: orcid - affiliations: - name: TU Wien - name: Vienna University of Technology family_name: Seres given_name: Jozsef + id: 0000-0002-8335-399X identifiers: - - identifier: https://orcid.org/0000-0002-8335-399X + - identifier: 0000-0002-8335-399X scheme: orcid - affiliations: - name: Graz University of Technology family_name: Levak given_name: Toni + id: 0000-0002-8926-199X identifiers: - - identifier: https://orcid.org/0000-0002-8926-199X + - identifier: 0000-0002-8926-199X scheme: orcid - affiliations: - name: Brookhaven National Laboratory family_name: Rumaiz given_name: Abdul + id: 0000-0002-9907-299X identifiers: - - identifier: https://orcid.org/0000-0002-9907-299X + - identifier: 0000-0002-9907-299X scheme: orcid - affiliations: - name: "University of M\xFCnster" family_name: Sendker given_name: Jandirk + id: 0000-0003-4798-699X identifiers: - - identifier: https://orcid.org/0000-0003-4798-699X + - identifier: 0000-0003-4798-699X scheme: orcid diff --git a/invenio_rdm_records/fixtures/data/vocabularies/relation_types.yaml b/invenio_rdm_records/fixtures/data/vocabularies/relation_types.yaml index 6f34bf074..a2f2b6428 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/relation_types.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/relation_types.yaml @@ -3,202 +3,236 @@ datacite: IsCitedBy title: en: Is cited by + sv: Citeras av de: Wird zitiert von - id: cites props: datacite: Cites title: en: Cites + sv: Citerar de: Zitiert - id: issupplementto props: datacite: IsSupplementTo title: en: Is supplement to + sv: Är supplement till de: Ergänzt - id: issupplementedby props: datacite: IsSupplementedBy title: en: Is supplemented by + sv: Supplementerad av de: Wird ergänzt durch - id: iscontinuedby props: datacite: IsContinuedBy title: en: Is continued by + sv: Är fortsatt av de: Wird fortgesetzt durch - id: continues props: datacite: Continues title: en: Continues + sv: Fortsätter de: Setzt fort - id: isdescribedby props: datacite: IsDescribedBy title: en: Is described by + sv: Beskrivs av de: Wird beschrieben von - id: describes props: datacite: Describes title: en: Describes + sv: Beskriver de: Beschreibt - id: hasmetadata props: datacite: HasMetadata title: en: Has metadata + sv: Har metadata de: Hat Metadaten in - id: ismetadatafor props: datacite: IsMetadataFor title: en: Is metadata for + sv: Är metadata för de: Hat Metadaten für - id: hasversion props: datacite: HasVersion title: en: Has version + sv: Har version de: Hat versionierte Instanz - id: isversionof props: datacite: IsVersionOf title: en: Is version of + sv: Är version av de: Ist eine Version von - id: isnewversionof props: datacite: IsNewVersionOf title: en: Is new version of + sv: Är en ny version av de: Ist eine neue Version von - id: ispreviousversionof props: datacite: IsPreviousVersionOf title: en: Is previous version of + sv: Är en tidigare version av de: Ist eine vorherige Version von - id: ispartof props: datacite: IsPartOf title: en: Is part of + sv: Är del av de: Ist Teil von - id: haspart props: datacite: HasPart title: en: Has part + sv: Innehåller följande del de: Umfasst folgenden Teil - id: ispublishedin props: datacite: IsPublishedIn title: en: Is published in + sv: Är publicerad i de: Ist veröffentlicht in - id: isreferencedby props: datacite: IsReferencedBy title: en: Is referenced by + sv: Hänvisas till av de: Wird referenziert von - id: references props: datacite: References title: en: References + sv: Hänvisar till de: Referenziert - id: isdocumentedby props: datacite: IsDocumentedBy title: en: Is documented by + sv: Är dokumenterad av de: Wird dokumentiert von - id: documents props: datacite: Documents title: en: Documents + sv: Dokumenterar de: Dokumentiert - id: iscompiledby props: datacite: IsCompiledBy title: en: Is compiled by + sv: Är sammanställd av de: Kompiliert durch - id: compiles props: datacite: Compiles title: en: Compiles + sv: Sammanställer de: Kompiliert - id: isvariantformof props: datacite: IsVariantFormOf title: en: Is variant form of + sv: Är en variant av de: Ist eine Variante von - id: isoriginalformof props: datacite: IsOriginalFormOf title: en: Is original form of + sv: Är originalet av de: Ist das Orginal von - id: isidenticalto props: datacite: IsIdenticalTo title: en: Is identical to + sv: Är identisk med de: Ist identisch mit - id: isreviewedby props: datacite: IsReviewedBy title: en: Is reviewed by + sv: Är granskad av de: Wird begutachtet von - id: reviews props: datacite: Reviews title: en: Reviews + sv: Granskar de: Begutachtet - id: isderivedfrom props: datacite: IsDerivedFrom title: en: Is derived from + sv: Härrör från de: Wird abgeleitet von - id: issourceof props: datacite: IsSourceOf title: en: Is source of + sv: Är källa till de: Ist Quelle von - id: isrequiredby props: datacite: IsRequiredBy title: en: Is required by + sv: Krävs av de: Wird gefordert von - id: requires props: datacite: Requires title: en: Requires + sv: Kräver de: Setzt voraus - id: isobsoletedby props: datacite: IsObsoletedBy title: en: Is obsoleted by + sv: Ersätts av de: Wird ersetzt durch - id: obsoletes props: datacite: Obsoletes title: en: Obsoletes + sv: Ersätter de: Ersetzt diff --git a/invenio_rdm_records/fixtures/data/vocabularies/removal_reasons.yaml b/invenio_rdm_records/fixtures/data/vocabularies/removal_reasons.yaml index ba2378c53..1daa80b54 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/removal_reasons.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/removal_reasons.yaml @@ -1,48 +1,60 @@ - id: duplicate title: en: Duplicate of another record + sv: Duplikat av en annan post de: Duplikat eines anderen Eintrags - id: retracted title: en: Retraction/Withdrawal of a record + sv: Återkallande/tillbakadragande av en post de: Widerruf eines Eintrags - id: replaced title: en: Substitution + sv: Ersättning de: Ersetzung - id: spam title: en: Spam + sv: Spam de: Spam - id: test-record title: en: Test upload of a record + sv: Test-uppladdning av en post de: Test-Upload eines Eintrags - id: copyright title: en: Copyright infringement + sv: Upphovsrättsintrång de: Urheberrechtsverletzung - id: personal-data title: en: Personal data issue + sv: Problem med personuppgifter de: Problem mit personenbezogenen Daten - id: take-down-request title: en: Take-down request + sv: Nedtagningsbegäran de: Deaktivierungsanfrage - id: disputed-authorship title: en: Disputed authorship + sv: Omtvistat författarskap de: Umstrittene Urheberschaft - id: misconduct title: en: Misconduct + sv: Misskötsamhet de: Fehlverhalten - id: fraud title: en: Fraud + sv: Bedrägeri de: Betrug - id: out-of-scope title: en: Content out of scope for repository + sv: Innehåll som ligger utanför repositoriets område de: Inhalt außerhalb des Rahmens des Repositoriums diff --git a/invenio_rdm_records/fixtures/data/vocabularies/resource_types.yaml b/invenio_rdm_records/fixtures/data/vocabularies/resource_types.yaml index b723db708..2c5bbabc0 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/resource_types.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/resource_types.yaml @@ -10,8 +10,11 @@ schema.org: https://schema.org/CreativeWork subtype: "" type: publication + marc21_type: publication + marc21_subtype: "" title: en: Publication + sv: Publikation de: Publikation tags: - depositable @@ -28,8 +31,11 @@ schema.org: https://schema.org/Collection subtype: publication-annotationcollection type: publication + marc21_type: publication + marc21_subtype: annotationcollection title: en: Annotation collection + sv: Annoteringssamling de: Anmerkungssammlung tags: - depositable @@ -46,8 +52,11 @@ schema.org: https://schema.org/Book subtype: publication-book type: publication + marc21_type: publication + marc21_subtype: book title: en: Book + sv: Bok de: Buch tags: - depositable @@ -64,8 +73,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-section type: publication + marc21_type: publication + marc21_subtype: section title: en: Book chapter + sv: Bokkapitel de: Buchkapitel tags: - depositable @@ -82,8 +94,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-conferencepaper type: publication + marc21_type: publication + marc21_subtype: conferencepaper title: en: Conference paper + sv: Konferensbidrag de: Konferenzbeitrag tags: - depositable @@ -100,8 +115,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-conferenceproceeding type: publication + marc21_type: publication + marc21_subtype: conferenceproceeding title: en: Conference proceeding + sv: Konferenshandling de: Tagungsband tags: - depositable @@ -118,8 +136,11 @@ schema.org: https://schema.org/CreativeWork subtype: publication-datamanagementplan type: publication + marc21_type: publication + marc21_subtype: datamanagementplan title: en: Output management plan + sv: Outputhanteringsplan de: Outputmanagementplan tags: - depositable @@ -136,8 +157,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-journal type: publication + marc21_type: publication + marc21_subtype: journal title: en: Journal + sv: Tidskrift de: Zeitschrift tags: - depositable @@ -154,8 +178,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-article type: publication + marc21_type: publication + marc21_subtype: article title: en: Journal article + sv: Tidskriftsartikel de: Zeitschriftenartikel tags: - depositable @@ -172,8 +199,11 @@ schema.org: https://schema.org/CreativeWork subtype: publication-patent type: publication + marc21_type: publication + marc21_subtype: patent title: en: Patent + sv: Patent de: Patent tags: - depositable @@ -190,8 +220,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-peerreview type: publication + marc21_type: publication + marc21_subtype: peerreview title: en: Peer review + sv: Peer review de: Peer Review tags: - depositable @@ -208,8 +241,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-preprint type: publication + marc21_type: publication + marc21_subtype: preprint title: en: Preprint + sv: Preprint de: Preprint tags: - depositable @@ -226,8 +262,11 @@ schema.org: https://schema.org/CreativeWork subtype: publication-deliverable type: publication + marc21_type: publication + marc21_subtype: deliverable title: en: Project deliverable + sv: Projektresultat de: Projektergebnis tags: - depositable @@ -244,8 +283,11 @@ schema.org: https://schema.org/CreativeWork subtype: publication-milestone type: publication + marc21_type: publication + marc21_subtype: milestone title: en: Project milestone + sv: Milstolpe för projektet de: Projektmeilenstein tags: - depositable @@ -262,8 +304,11 @@ schema.org: https://schema.org/CreativeWork subtype: publication-proposal type: publication + marc21_type: publication + marc21_subtype: proposal title: en: Proposal + sv: Förslag de: Antrag tags: - depositable @@ -280,8 +325,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-report type: publication + marc21_type: publication + marc21_subtype: report title: en: Report + sv: Rapport de: Bericht tags: - depositable @@ -298,8 +346,11 @@ schema.org: https://schema.org/CreativeWork subtype: publication-softwaredocumentation type: publication + marc21_type: publication + marc21_subtype: softwaredocumentation title: en: Software documentation + sv: Mjukvarudokumentation de: Softwaredokumentation tags: - depositable @@ -316,8 +367,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-taxonomictreatment type: publication + marc21_type: publication + marc21_subtype: taxonomictreatment title: en: Taxonomic treatment + sv: Taxonomisk behandling de: Taxonomische Behandlung tags: - depositable @@ -334,8 +388,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-technicalnote type: publication + marc21_type: publication + marc21_subtype: technicalnote title: en: Technical note + sv: Technical note de: Technical Note tags: - depositable @@ -349,11 +406,14 @@ openaire_resourceType: "0006" openaire_type: publication eurepo: info:eu-repo/semantics/doctoralThesis - schema.org: https://schema.org/ScholarlyArticle + schema.org: https://schema.org/Thesis subtype: publication-thesis type: publication + marc21_type: publication + marc21_subtype: thesis title: en: Thesis + sv: Avhandling de: Abschlussarbeit tags: - depositable @@ -370,8 +430,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-workingpaper type: publication + marc21_type: publication + marc21_subtype: workingpaper title: en: Working paper + sv: Arbetsdokument de: Arbeitspapier tags: - depositable @@ -388,8 +451,11 @@ schema.org: https://schema.org/ScholarlyArticle subtype: publication-datapaper type: publication + marc21_type: publication + marc21_subtype: datapaper title: en: Data paper + sv: Datadokument de: Datenpapier tags: - depositable @@ -403,11 +469,14 @@ openaire_resourceType: "0044" openaire_type: publication eurepo: info:eu-repo/semantics/other - schema.org: https://schema.org/thesis + schema.org: https://schema.org/Thesis subtype: publication-dissertation type: publication + marc21_type: publication + marc21_subtype: dissertation title: en: Dissertation + sv: Avhandling de: Dissertation tags: - depositable @@ -424,8 +493,11 @@ schema.org: https://schema.org/other subtype: publication-standard type: publication + marc21_type: publication + marc21_subtype: standard title: en: Standard + sv: Standard de: Standard tags: - depositable @@ -442,8 +514,11 @@ schema.org: https://schema.org/CreativeWork subtype: publication-other type: publication + marc21_type: publication + marc21_subtype: other title: en: Other + sv: Övrig de: Sonstige tags: - depositable @@ -460,8 +535,11 @@ schema.org: https://schema.org/CreativeWork subtype: "" type: poster + marc21_type: poster + marc21_subtype: "" title: en: Poster + sv: Poster de: Poster tags: - depositable @@ -478,8 +556,11 @@ schema.org: https://schema.org/PresentationDigitalDocument subtype: "" type: presentation + marc21_type: presentation + marc21_subtype: "" title: en: Presentation + sv: Presentation de: Präsentation tags: - depositable @@ -493,11 +574,14 @@ openaire_resourceType: "0023" openaire_type: publication eurepo: info:eu-repo/semantics/other - schema.org: https://schema.org/event + schema.org: https://schema.org/Event subtype: "" type: event + marc21_type: event + marc21_subtype: "" title: en: Event + sv: Evenemang de: Veranstaltung tags: - depositable @@ -514,8 +598,11 @@ schema.org: https://schema.org/Dataset subtype: "" type: dataset + marc21_type: dataset + marc21_subtype: "" title: en: Dataset + sv: Dataset de: Datensatz tags: - depositable @@ -532,8 +619,11 @@ schema.org: https://schema.org/ImageObject subtype: "" type: image + marc21_type: image + marc21_subtype: "" title: en: Image + sv: Bild de: Bild tags: - depositable @@ -550,8 +640,11 @@ schema.org: https://schema.org/ImageObject subtype: image-figure type: image + marc21_type: image + marc21_subtype: figure title: en: Figure + sv: Figur de: Abbildung tags: - depositable @@ -568,8 +661,11 @@ schema.org: https://schema.org/ImageObject subtype: image-plot type: image + marc21_type: image + marc21_subtype: plot title: en: Plot + sv: Plot de: Plot tags: - depositable @@ -586,8 +682,11 @@ schema.org: https://schema.org/ImageObject subtype: image-drawing type: image + marc21_type: image + marc21_subtype: drawing title: en: Drawing + sv: Ritning de: Zeichnung tags: - depositable @@ -604,8 +703,11 @@ schema.org: https://schema.org/ImageObject subtype: image-diagram type: image + marc21_type: image + marc21_subtype: diagram title: en: Diagram + sv: Diagram de: Diagramm tags: - depositable @@ -622,8 +724,11 @@ schema.org: https://schema.org/Photograph subtype: image-photo type: image + marc21_type: image + marc21_subtype: photo title: en: Photo + sv: Foto de: Foto tags: - depositable @@ -640,8 +745,11 @@ schema.org: https://schema.org/ImageObject subtype: image-other type: image + marc21_type: image + marc21_subtype: other title: en: Other + sv: Övrig de: Sonstiges tags: - depositable @@ -658,8 +766,11 @@ schema.org: https://schema.org/CreativeWork subtype: "" type: model + marc21_type: model + marc21_subtype: "" title: en: Model + sv: Modell de: Modell tags: - depositable @@ -676,9 +787,33 @@ schema.org: https://schema.org/MediaObject subtype: "" type: video + marc21_type: video + marc21_subtype: "" + title: + en: Video + de: Video + sv: Video + tags: + - depositable + - linkable +- id: audio + icon: volume up + props: + csl: document + datacite_general: Sound + datacite_type: "" + openaire_resourceType: "0033" + openaire_type: dataset + eurepo: info:eu-repo/semantics/other + schema.org: https://schema.org/MediaObject + subtype: "" + type: audio + marc21_type: audio + marc21_subtype: "" title: - en: Video/Audio - de: Video/Audio + en: Audio + de: Audio + sv: Audio tags: - depositable - linkable @@ -694,8 +829,11 @@ schema.org: https://schema.org/SoftwareSourceCode subtype: "" type: software + marc21_type: software + marc21_subtype: "" title: en: Software + sv: Mjukvara de: Software tags: - depositable @@ -712,8 +850,11 @@ schema.org: https://schema.org/CreativeWork subtype: "" type: lesson + marc21_type: lesson + marc21_subtype: "" title: en: Lesson + sv: Lektion de: Unterrichtseinheit tags: - depositable @@ -730,8 +871,11 @@ schema.org: https://schema.org/SoftwareSourceCode subtype: software-computationalnotebook type: software + marc21_type: software + marc21_subtype: computationalnotebook title: en: Computational notebook + sv: Computational notebook de: Computational Notebook tags: - depositable @@ -748,8 +892,11 @@ schema.org: https://schema.org/CreativeWork subtype: "" type: other + marc21_type: other + marc21_subtype: "" title: en: Other + sv: Övrig de: Sonstige tags: - depositable @@ -766,8 +913,11 @@ schema.org: https://schema.org/CreativeWork subtype: "" type: physicalobject + marc21_type: physicalobject + marc21_subtype: "" title: en: Physical object + sv: Fysiskt objekt de: Physikalisches Objekt tags: - depositable @@ -784,8 +934,11 @@ schema.org: https://schema.org/CreativeWork subtype: "" type: workflow + marc21_type: workflow + marc21_subtype: "" title: en: Workflow + sv: Workflow de: Workflow tags: - depositable diff --git a/invenio_rdm_records/fixtures/data/vocabularies/roles.yaml b/invenio_rdm_records/fixtures/data/vocabularies/roles.yaml index c56c87dbc..6ec9ecf32 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/roles.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/roles.yaml @@ -1,126 +1,168 @@ - id: contactperson props: datacite: ContactPerson + marc: prc title: en: Contact person + sv: Kontaktperson de: Kontaktperson - id: datacollector props: datacite: DataCollector + marc: col title: en: Data collector + sv: Datainsamlare de: DatensammlerIn - id: datacurator props: datacite: DataCurator + marc: cur title: en: Data curator + sv: Datakurator de: DatenkuratorIn - id: datamanager props: datacite: DataManager + marc: dtm title: en: Data manager + sv: Dataansvarig de: DatenmanagerIn - id: distributor props: datacite: Distributor + marc: dst title: en: Distributor + sv: Distributör de: VerteilerIn - id: editor props: datacite: Editor + marc: edt title: en: Editor + sv: Redaktör de: EditorIn - id: hostinginstitution props: datacite: HostingInstitution + marc: his title: en: Hosting institution + sv: Värdinstitution de: Bereitstellende Institution - id: producer props: datacite: Producer + marc: pro title: en: Producer + sv: Producent de: ProduzentIn - id: projectleader props: datacite: ProjectLeader + marc: pdr title: en: Project leader + sv: Projektledare de: ProjektleiterIn - id: projectmanager props: datacite: ProjectManager + marc: rth title: en: Project manager + sv: Projektansvarig de: ProjektmanagerIn - id: projectmember props: datacite: ProjectMember + marc: rtm title: en: Project member + sv: Projektmedlem de: Projektmitglied - id: registrationagency props: datacite: RegistrationAgency + marc: cor title: en: Registration agency + sv: Registreringsorgan de: Registrierungsstelle - id: registrationauthority props: datacite: RegistrationAuthority + marc: cor title: en: Registration authority + sv: Registreringsmyndighet de: Registrierungsbehörde - id: relatedperson props: datacite: RelatedPerson + marc: oth title: en: Related person + sv: Relaterad person de: Verwandte Person - id: researcher props: datacite: Researcher + marc: res title: en: Researcher + sv: Forskare de: WissenschaftlerIn - id: researchgroup props: datacite: ResearchGroup + marc: rtm title: en: Research group + sv: Forskningsgrupp de: Forschungsgruppe - id: rightsholder props: datacite: RightsHolder + marc: cph title: en: Rights holder + sv: Rättighetsinnehavare de: RechteinhaberIn - id: sponsor props: datacite: Sponsor + marc: spn title: en: Sponsor + sv: Sponsor de: Sponsor - id: supervisor props: datacite: Supervisor + marc: dgs title: en: Supervisor + sv: Handledare de: SupervisorIn - id: workpackageleader props: datacite: WorkPackageLeader + marc: led title: en: Work package leader + sv: Arbetspaketsledare de: ArbeitspaketleiterIn - id: other props: datacite: Other + marc: oth title: en: Other + sv: Övriga de: Andere diff --git a/invenio_rdm_records/fixtures/data/vocabularies/title_types.yaml b/invenio_rdm_records/fixtures/data/vocabularies/title_types.yaml index e6a589b0d..3acce70d8 100644 --- a/invenio_rdm_records/fixtures/data/vocabularies/title_types.yaml +++ b/invenio_rdm_records/fixtures/data/vocabularies/title_types.yaml @@ -3,22 +3,26 @@ datacite: AlternativeTitle title: en: Alternative title + sv: Alternativ titel de: Alternativer Titel - id: subtitle props: datacite: Subtitle title: en: Subtitle + sv: Undertitel de: Untertitel - id: translated-title props: datacite: TranslatedTitle title: en: Translated title + sv: Översatt titel de: Übersetzter Titel - id: other props: datacite: Other title: en: Other + sv: Övrig titel de: Sonstiger Titel diff --git a/invenio_rdm_records/fixtures/demo.py b/invenio_rdm_records/fixtures/demo.py index 8f4e1feb9..d4c2489d4 100644 --- a/invenio_rdm_records/fixtures/demo.py +++ b/invenio_rdm_records/fixtures/demo.py @@ -9,7 +9,6 @@ """Fake demo records.""" import datetime -import json import random from pathlib import Path @@ -61,8 +60,6 @@ def fake_resource_type(cls): if not cls._resource_type_ids: cls._resource_type_ids = [] - dir_ = Path(__file__).parent - res_types = cls._read_vocabulary("resourcetypes") for res in res_types: diff --git a/invenio_rdm_records/fixtures/tasks.py b/invenio_rdm_records/fixtures/tasks.py index d91637d0a..c41e81368 100644 --- a/invenio_rdm_records/fixtures/tasks.py +++ b/invenio_rdm_records/fixtures/tasks.py @@ -2,6 +2,7 @@ # # Copyright (C) 2021-2022 CERN. # Copyright (C) 2021-2022 Northwestern University. +# Copyright (C) 2023 California Institute of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -9,6 +10,7 @@ """Celery tasks for fixtures.""" import random +from io import BytesIO from celery import shared_task from flask import current_app @@ -22,9 +24,11 @@ from invenio_communities.generators import CommunityRoleNeed from invenio_communities.members.errors import AlreadyMemberError from invenio_communities.proxies import current_communities +from invenio_pidstore.errors import PersistentIdentifierError from invenio_records_resources.proxies import current_service_registry from invenio_requests import current_events_service, current_requests_service from invenio_requests.customizations import CommentEventType +from invenio_vocabularies.records.api import Vocabulary from ..proxies import current_oaipmh_server_service, current_rdm_records_service from ..requests import CommunitySubmission @@ -43,13 +47,25 @@ def get_authenticated_identity(user_id): @shared_task def create_vocabulary_record(service_str, data): - """Create a vocabulary record.""" + """Create or update a vocabulary record.""" service = current_service_registry.get(service_str) - service.create(system_identity, data) + if "type" in data: + # We only check non-datastream vocabularies for updates + try: + pid = (data["type"], data["id"]) + # If the entry hasn't been added, this will fail + record = Vocabulary.pid.resolve(pid) + service.update(system_identity, pid, data=data) + current_app.logger.info(f"updated existing fixture with {data}") + except PersistentIdentifierError: + service.create(system_identity, data) + current_app.logger.info(f"added new fixture with {data}") + else: + service.create(system_identity, data) @shared_task -def create_demo_record(user_id, data, publish=True): +def create_demo_record(user_id, data, publish=True, create_file=False): """Create demo record.""" service = current_rdm_records_service if user_id == system_user_id: @@ -58,10 +74,22 @@ def create_demo_record(user_id, data, publish=True): identity = get_authenticated_identity(user_id) draft = service.create(data=data, identity=identity) + if create_file: + _add_file_to_draft(service.draft_files, draft.id, "file.txt", identity) if publish: service.publish(id_=draft.id, identity=identity) +def _add_file_to_draft(draft_file_service, draft_id, file_id, identity): + """Add a file to the record.""" + draft_file_service.init_files(identity, draft_id, data=[{"key": file_id}]) + draft_file_service.set_file_content( + identity, draft_id, file_id, BytesIO(b"test file content") + ) + result = draft_file_service.commit_file(identity, draft_id, file_id) + return result + + @shared_task def create_demo_oaiset(user_id, data): """Create demo record.""" diff --git a/invenio_rdm_records/fixtures/vocabularies.py b/invenio_rdm_records/fixtures/vocabularies.py index f2f20974a..a802070fc 100644 --- a/invenio_rdm_records/fixtures/vocabularies.py +++ b/invenio_rdm_records/fixtures/vocabularies.py @@ -1,7 +1,10 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021-2022 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021-2022 Northwestern University. +# Copyright (C) 2024 TU Wien. +# Copyright (C) 2024 KTH Royal Institute of Technology. +# Copyright (C) 2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -16,9 +19,11 @@ import pkg_resources import yaml +from flask import current_app from invenio_db import db from invenio_vocabularies.proxies import current_service from invenio_vocabularies.records.models import VocabularyScheme, VocabularyType +from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import load_only from .tasks import create_vocabulary_record @@ -68,7 +73,9 @@ def map_row(self, header, row): def __iter__(self): """Iterate over records.""" with open(self._data_file) as fp: - reader = csv.reader(fp, delimiter=";", quotechar='"') + dialect = csv.Sniffer().sniff(fp.read(4096)) + fp.seek(0) + reader = csv.reader(fp, dialect) header = next(reader) for row in reader: yield self.map_row(header, row) @@ -168,7 +175,7 @@ def _entry_points(self): """ return list(pkg_resources.iter_entry_points("invenio_rdm_records.fixtures")) - def load(self): + def load(self, reload=None): """Load the fixtures. Loads in priority @@ -180,13 +187,20 @@ def load(self): Fixtures found later are ignored. """ # Prime with existing (sub)vocabularies - v_type_ids = [v.id for v in VocabularyType.query.options(load_only("id")).all()] + v_type_ids = [ + v.id + for v in VocabularyType.query.options(load_only(VocabularyType.id)).all() + ] v_subtype_ids = [ f"{v.parent_id}.{v.id}" - for v in VocabularyScheme.query.options(load_only("id", "parent_id")).all() + for v in VocabularyScheme.query.options( + load_only(VocabularyScheme.id, VocabularyScheme.parent_id) + ).all() ] self._loaded_vocabularies = set(v_type_ids + v_subtype_ids) - + # If it's not already loaded it means it's a new one + if reload and reload in self._loaded_vocabularies: + self._loaded_vocabularies.remove(reload) # 1- Load from app_data_folder filepath = self._app_data_folder / self._filename # An instance doesn't necessarily have custom vocabularies @@ -266,9 +280,9 @@ def read(self): data = yaml.safe_load(f) or {} for id_, yaml_entry in data.items(): # Some vocabularies are non-generic - if id_ in ("subjects", "affiliations"): + if id_ in ("subjects",): entry = VocabularyEntryWithSchemes(id_, dir_, id_, yaml_entry) - elif id_ in ("names", "funders", "awards"): + elif id_ in ("affiliations", "names", "funders", "awards"): entry = VocabularyEntry(id_, dir_, id_, yaml_entry) else: entry = GenericVocabularyEntry(dir_, id_, yaml_entry) @@ -322,7 +336,12 @@ def pre_load(self, identity, ignore): """Actions taken before iteratively creating records.""" if self._id not in ignore: pid_type = self._entry["pid-type"] - current_service.create_type(identity, self._id, pid_type) + try: + current_service.create_type(identity, self._id, pid_type) + except IntegrityError: + current_app.logger.info( + f"skipping creation of {pid_type}, already existing" + ) def iterate(self, ignore): """Iterate over dicts of file content.""" @@ -379,10 +398,19 @@ def __init__(self, service_str, directory, id_, entry): # Template methods def pre_load(self, identity, ignore): """Actions taken before iteratively creating records.""" + # Create the type first, if needed + super().pre_load(identity, ignore) + + # Add schemes for scheme in self.schemes(): id_ = f"{self._id}.{scheme['id']}" if id_ not in ignore: - self.create_scheme(scheme) + try: + self.create_scheme(scheme) + except IntegrityError: + current_app.logger.info( + f"skipping creation of {scheme}, already existing" + ) def iterate(self, ignore): """Iterate over dicts of file content.""" diff --git a/invenio_rdm_records/jobs/__init__.py b/invenio_rdm_records/jobs/__init__.py new file mode 100644 index 000000000..b394efcad --- /dev/null +++ b/invenio_rdm_records/jobs/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Jobs module.""" diff --git a/invenio_rdm_records/jobs/jobs.py b/invenio_rdm_records/jobs/jobs.py new file mode 100644 index 000000000..7f0d56a5f --- /dev/null +++ b/invenio_rdm_records/jobs/jobs.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Jobs definition module.""" + +from invenio_jobs.jobs import JobType + +from invenio_rdm_records.services.tasks import update_expired_embargos + +update_expired_embargos_cls = JobType.create( + arguments_schema=None, + job_cls_name="UpdateEmbargoesJob", + id_="update_expired_embargos", + task=update_expired_embargos, + description="Updates expired embargos", + title="Update expired embargoes", +) diff --git a/invenio_rdm_records/notifications/builders.py b/invenio_rdm_records/notifications/builders.py index 64624276f..1179f5a08 100644 --- a/invenio_rdm_records/notifications/builders.py +++ b/invenio_rdm_records/notifications/builders.py @@ -15,6 +15,11 @@ from invenio_notifications.services.generators import EntityResolve, UserEmailBackend from invenio_requests.notifications.filters import UserRecipientFilter from invenio_users_resources.notifications.filters import UserPreferencesRecipientFilter +from invenio_users_resources.notifications.generators import ( + EmailRecipient, + IfUserRecipient, + UserRecipient, +) class CommunityInclusionNotificationBuilder(NotificationBuilder): @@ -40,7 +45,9 @@ def build(cls, request): ] recipients = [ - CommunityMembersRecipient(key="request.receiver", roles=["curator", "owner"]), + CommunityMembersRecipient( + key="request.receiver", roles=["curator", "owner", "manager"] + ), ] recipient_filters = [ @@ -59,3 +66,491 @@ class CommunityInclusionSubmittedNotificationBuilder( """Notification builder for record community inclusion submitted.""" type = "community-submission.submit" + + +class GuestAccessRequestTokenCreateNotificationBuilder(NotificationBuilder): + """Notification builder for user access requests.""" + + type = "guest-access-request-token.create" + + @classmethod + def build(cls, record, email, verify_url): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "record": EntityResolverRegistry.reference_entity(record), + "created_by": EntityResolverRegistry.reference_entity(email), + "verify_url": verify_url, + }, + ) + + context = [ + EntityResolve(key="record"), + EntityResolve(key="created_by"), # email + ] + + recipients = [ + EmailRecipient(key="created_by"), # email only + ] + + recipient_filters = [] # assume guest is ok with mail being sent + + recipient_backends = [ + UserEmailBackend(), + ] + + +class GuestAccessRequestDeclineNotificationBuilder(NotificationBuilder): + """Notification builder for user access requests.""" + + type = "guest-access-request.decline" + + @classmethod + def build(cls, request): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), # email + EntityResolve(key="request.topic"), + ] + + recipients = [ + EmailRecipient(key="request.created_by"), # email only + ] + + recipient_filters = [] # assume guest is ok with mail being sent + + recipient_backends = [ + UserEmailBackend(), + ] + + +class GuestAccessRequestCancelNotificationBuilder(NotificationBuilder): + """Notification builder for user access requests.""" + + type = "guest-access-request.cancel" + + @classmethod + def build(cls, request, identity): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), + EntityResolve(key="request.topic"), + EntityResolve(key="request.receiver"), + ] + + recipients = [ + EmailRecipient(key="request.created_by"), # email only + ] + + recipient_filters = [] + + recipient_backends = [ + UserEmailBackend(), + ] + + +class GuestAccessRequestSubmittedNotificationBuilder(NotificationBuilder): + """Notification builder for submitted guest access requests.""" + + type = "guest-access-request.submitted" + + @classmethod + def build(cls, request): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), + EntityResolve(key="request.topic"), + ] + + recipients = [ + EmailRecipient(key="request.created_by"), + ] + + recipient_filters = [ + UserPreferencesRecipientFilter(), + ] + + recipient_backends = [ + UserEmailBackend(), + ] + + +class GuestAccessRequestSubmitNotificationBuilder(NotificationBuilder): + """Notification builder for guest access requests.""" + + type = "guest-access-request.submit" + + @classmethod + def build(cls, request): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + "receiver_entity": request.receiver.reference_dict, # will not be resolved for easier lookup for recipients + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), + EntityResolve(key="request.topic"), + EntityResolve(key="request.receiver"), + ] + + recipients = [ + # Currently only these two are allowed. Adapt as needed. + IfUserRecipient( + key="receiver_entity", + then_=[UserRecipient(key="request.receiver")], + else_=[ + CommunityMembersRecipient( + key="request.receiver", roles=["curator", "owner"] + ) + ], + ) + ] + + recipient_filters = [ + UserPreferencesRecipientFilter(), + ] + + recipient_backends = [ + UserEmailBackend(), + ] + + +class GuestAccessRequestAcceptNotificationBuilder(NotificationBuilder): + """Notification builder for user access requests.""" + + type = "guest-access-request.accept" + + @classmethod + def build(cls, request, access_url): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + "access_url": access_url, + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), # email + EntityResolve(key="request.topic"), + ] + + recipients = [ + EmailRecipient(key="request.created_by"), # email only + ] + + recipient_filters = [] # assume guest is ok with mail being sent + + recipient_backends = [ + UserEmailBackend(), + ] + + +class UserAccessRequestDeclineNotificationBuilder(NotificationBuilder): + """Notification builder for user access requests.""" + + type = "user-access-request.decline" + + @classmethod + def build(cls, request): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), + EntityResolve(key="request.topic"), + EntityResolve(key="request.receiver"), + ] + + recipients = [ + UserRecipient(key="request.created_by"), + ] + + recipient_filters = [ + UserPreferencesRecipientFilter(), + ] + + recipient_backends = [ + UserEmailBackend(), + ] + + +class UserAccessRequestCancelNotificationBuilder(NotificationBuilder): + """Notification builder for user access requests.""" + + type = "user-access-request.cancel" + + @classmethod + def build(cls, request, identity): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + "executing_user": EntityResolverRegistry.reference_identity(identity), + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), + EntityResolve(key="request.topic"), + EntityResolve(key="request.receiver"), + EntityResolve(key="executing_user"), + ] + + recipients = [ + UserRecipient(key="request.created_by"), + ] + + recipient_filters = [ + UserPreferencesRecipientFilter(), + UserRecipientFilter("executing_user"), + ] + + recipient_backends = [ + UserEmailBackend(), + ] + + +class UserAccessRequestSubmitNotificationBuilder(NotificationBuilder): + """Notification builder for user access requests.""" + + type = "user-access-request.submit" + + @classmethod + def build(cls, request): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + "receiver_entity": request.receiver.reference_dict, # will not be resolved for easier lookup for recipients + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), + EntityResolve(key="request.topic"), + EntityResolve(key="request.receiver"), + ] + + recipients = [ + # Currently only these two are allowed. Adapt as needed. + IfUserRecipient( + key="receiver_entity", + then_=[UserRecipient(key="request.receiver")], + else_=[ + CommunityMembersRecipient( + key="request.receiver", roles=["curator", "owner"] + ) + ], + ) + ] + + recipient_filters = [ + UserPreferencesRecipientFilter(), + ] + + recipient_backends = [ + UserEmailBackend(), + ] + + +class UserAccessRequestAcceptNotificationBuilder(NotificationBuilder): + """Notification builder for user access requests.""" + + type = "user-access-request.accept" + + @classmethod + def build(cls, request): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), + EntityResolve(key="request.topic"), + EntityResolve(key="request.receiver"), + ] + + recipients = [ + UserRecipient(key="request.created_by"), + ] + + recipient_filters = [ + UserPreferencesRecipientFilter(), + ] + + recipient_backends = [ + UserEmailBackend(), + ] + + +class GrantUserAccessNotificationBuilder(NotificationBuilder): + """Notification builder for user access grant.""" + + type = "grant-user-access.create" + + @classmethod + def build(cls, record, user, permission, message=None): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "record": EntityResolverRegistry.reference_entity(record), + "receiver": EntityResolverRegistry.reference_entity(user), + "permission": permission, + "message": message, + }, + ) + + context = [ + EntityResolve(key="record"), + EntityResolve(key="receiver"), + ] + + recipients = [ + UserRecipient(key="receiver"), + ] + + recipient_filters = [ + UserPreferencesRecipientFilter(), + ] + + recipient_backends = [ + UserEmailBackend(), + ] + + +class CommunityInclusionActionNotificationBuilder(NotificationBuilder): + """Notification builder for inclusion actions.""" + + @classmethod + def build(cls, identity, request): + """Build notification with request context.""" + return Notification( + type=cls.type, + context={ + "request": EntityResolverRegistry.reference_entity(request), + "executing_user": EntityResolverRegistry.reference_identity(identity), + }, + ) + + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), + EntityResolve(key="request.topic"), + EntityResolve(key="request.receiver"), + EntityResolve(key="executing_user"), + ] + + recipients = [ + UserRecipient("request.created_by"), + ] + + recipient_filters = [ + UserPreferencesRecipientFilter(), + UserRecipientFilter("executing_user"), + ] + + recipient_backends = [ + UserEmailBackend(), + ] + + +class CommunityInclusionAcceptNotificationBuilder( + CommunityInclusionActionNotificationBuilder +): + """Notification builder for inclusion accept action.""" + + type = f"{CommunityInclusionNotificationBuilder.type}.accept" + + +class CommunityInclusionAcceptNotificationBuilder( + CommunityInclusionActionNotificationBuilder +): + """Notification builder for inclusion accept action.""" + + type = f"{CommunityInclusionNotificationBuilder.type}.accept" + + +class CommunityInclusionCancelNotificationBuilder( + CommunityInclusionActionNotificationBuilder +): + """Notification builder for inclusion cancel action.""" + + type = f"{CommunityInclusionNotificationBuilder.type}.cancel" + + recipients = [ + CommunityMembersRecipient("request.receiver", roles=["curator", "owner"]), + ] + + +class CommunityInclusionDeclineNotificationBuilder( + CommunityInclusionActionNotificationBuilder +): + """Notification builder for inclusion decline action.""" + + type = f"{CommunityInclusionNotificationBuilder.type}.decline" + + +class CommunityInclusionExpireNotificationBuilder( + CommunityInclusionActionNotificationBuilder +): + """Notification builder for inclusion expire action.""" + + type = f"{CommunityInclusionNotificationBuilder.type}.expire" + + # Executing user will most probably be the system. It is not resolvable on the service level + # as of now and we do not use it in the template. + context = [ + EntityResolve(key="request"), + EntityResolve(key="request.created_by"), + EntityResolve(key="request.topic"), + EntityResolve(key="request.receiver"), + ] diff --git a/invenio_rdm_records/oai.py b/invenio_rdm_records/oai.py index 9c665dd25..f7427a666 100644 --- a/invenio_rdm_records/oai.py +++ b/invenio_rdm_records/oai.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Copyright (C) 2021 Graz University of Technology. -# Copyright (C) 2021-2023 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -36,16 +36,18 @@ def dublincore_etree(pid, record, **serializer_kwargs): return simpledc.dump_etree(obj) -def oai_marcxml_etree(pid, record): +def marcxml_etree(pid, record): """OAI MARCXML format for OAI-PMH.""" item = current_rdm_records_service.oai_result_item(g.identity, record["_source"]) # TODO: MARCXMLSerializer should directly be able to dump an etree instead # of internally creating an etree, then dump to xml, then parse into an # etree. See https://github.com/inveniosoftware/flask-resources/issues/117 - return etree.fromstring(MARCXMLSerializer().serialize_object(item.to_dict())) + return etree.fromstring( + MARCXMLSerializer().serialize_object(item.to_dict()).encode(encoding="utf-8") + ) -def oai_dcat_etree(pid, record): +def dcat_etree(pid, record): """OAI DCAT-AP format for OAI-PMH.""" item = current_rdm_records_service.oai_result_item(g.identity, record["_source"]) # TODO: Ditto. See https://github.com/inveniosoftware/flask-resources/issues/117 @@ -132,7 +134,9 @@ def getrecord_fetcher(record_id): # if it is a restricted record. raise PIDDoesNotExistError("recid", None) - return result.to_dict() + # TODO: Calling dumps() is not the best way here, since later on it will call + # loads() in the service to "normalize" the result. + return result._record.dumps() class OAIRecordSearch(RecordsSearch): @@ -144,4 +148,10 @@ class Meta: default_filter = [ dsl.Q("exists", field="pids.oai.identifier"), dsl.Q("term", **{"access.record": "public"}), + dsl.Q("term", **{"is_deleted": "false"}), ] + + +# Alias methods, to be deprecated +oai_marcxml_etree = marcxml_etree +oai_dcat = dcat_etree diff --git a/invenio_rdm_records/oaiserver/resources/config.py b/invenio_rdm_records/oaiserver/resources/config.py index d1245c0e9..76c316250 100644 --- a/invenio_rdm_records/oaiserver/resources/config.py +++ b/invenio_rdm_records/oaiserver/resources/config.py @@ -68,3 +68,10 @@ class OAIPMHServerResourceConfig(ResourceConfig, ConfiguratorMixin): request_search_args = OAIPMHServerSearchRequestArgsSchema error_handlers = oaipmh_error_handlers + + response_handlers = { + "application/vnd.inveniordm.v1+json": ResourceConfig.response_handlers[ + "application/json" + ], + **ResourceConfig.response_handlers, + } diff --git a/invenio_rdm_records/oaiserver/services/config.py b/invenio_rdm_records/oaiserver/services/config.py index e2b74b3f3..5bc8fd49d 100644 --- a/invenio_rdm_records/oaiserver/services/config.py +++ b/invenio_rdm_records/oaiserver/services/config.py @@ -7,18 +7,13 @@ """OAI-PMH service API configuration.""" -from invenio_i18n import gettext as _ +from invenio_i18n import lazy_gettext as _ from invenio_oaiserver.models import OAISet from invenio_records_resources.services import ServiceConfig from invenio_records_resources.services.base import Link from invenio_records_resources.services.records.links import pagination_links from sqlalchemy import asc, desc -from invenio_rdm_records.oaiserver.services.schema import ( - OAIPMHMetadataFormat, - OAIPMHSetSchema, -) - from ..services.links import OAIPMHSetLink from ..services.permissions import OAIPMHServerPermissionPolicy from ..services.results import ( @@ -27,6 +22,7 @@ OAISetItem, OAISetList, ) +from .schema import OAIPMHMetadataFormat, OAIPMHSetSchema class SearchOptions: diff --git a/invenio_rdm_records/oaiserver/services/permissions.py b/invenio_rdm_records/oaiserver/services/permissions.py index 65f1a5fb7..40ea1f4c4 100644 --- a/invenio_rdm_records/oaiserver/services/permissions.py +++ b/invenio_rdm_records/oaiserver/services/permissions.py @@ -6,6 +6,7 @@ # it under the terms of the MIT License; see LICENSE file for more details. """Permissions for OAI-PMH service.""" + from invenio_administration.generators import Administration from invenio_records_permissions import BasePermissionPolicy from invenio_records_permissions.generators import SystemProcess diff --git a/invenio_rdm_records/oaiserver/services/services.py b/invenio_rdm_records/oaiserver/services/services.py index 730e65367..516db9093 100644 --- a/invenio_rdm_records/oaiserver/services/services.py +++ b/invenio_rdm_records/oaiserver/services/services.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2022-2023 Graz University of Technology. +# Copyright (C) 2022-2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -10,9 +10,10 @@ import re from flask import current_app -from flask_sqlalchemy import Pagination +from invenio_db import db from invenio_i18n import lazy_gettext as _ from invenio_oaiserver.models import OAISet +from invenio_oaiserver.percolator import _new_percolator from invenio_records_resources.services import Service from invenio_records_resources.services.base import LinksTemplate from invenio_records_resources.services.base.utils import map_search_params @@ -23,12 +24,19 @@ from sqlalchemy.orm.exc import NoResultFound from sqlalchemy.sql import text -from invenio_rdm_records.oaiserver.services.errors import ( +from .errors import ( OAIPMHSetDoesNotExistError, OAIPMHSetNotEditable, OAIPMHSetSpecAlreadyExistsError, ) -from invenio_rdm_records.oaiserver.services.uow import OAISetCommitOp, OAISetDeleteOp +from .uow import OAISetCommitOp, OAISetDeleteOp + +try: + # flask_sqlalchemy<3.0.0 + from flask_sqlalchemy import Pagination +except ImportError: + # flask_sqlalchemy>=3.0.0 + from flask_sqlalchemy.pagination import Pagination class OAIPMHServerService(Service): @@ -234,3 +242,11 @@ def read_all_formats(self, identity): self, schema=self.config.metadata_format_schema ), ) + + def rebuild_index(self, identity): + """Rebuild OAI sets percolator index.""" + entries = db.session.query(OAISet.spec, OAISet.search_pattern).yield_per(1000) + for spec, search_pattern in entries: + # Creates or updates the OAI set + _new_percolator(spec, search_pattern) + return True diff --git a/invenio_rdm_records/records/api.py b/invenio_rdm_records/records/api.py index 4a8626a03..377ef6c82 100644 --- a/invenio_rdm_records/records/api.py +++ b/invenio_rdm_records/records/api.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2023 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2021-2023 TU Wien. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -8,7 +8,9 @@ """RDM Record and Draft API.""" +from flask import current_app, g from invenio_communities.records.records.systemfields import CommunitiesField +from invenio_db import db from invenio_drafts_resources.records import Draft, Record from invenio_drafts_resources.records.api import ParentRecord as ParentRecordBase from invenio_drafts_resources.services.records.components.media_files import ( @@ -39,12 +41,18 @@ from invenio_vocabularies.records.api import Vocabulary from invenio_vocabularies.records.systemfields.relations import CustomFieldsRelation +from invenio_rdm_records.records.systemfields.deletion_status import ( + RecordDeletionStatusEnum, +) + from . import models from .dumpers import ( + CombinedSubjectsDumperExt, EDTFDumperExt, EDTFListDumperExt, GrantTokensDumperExt, StatisticsDumperExt, + SubjectHierarchyDumperExt, ) from .systemfields import ( HasDraftCheckField, @@ -55,6 +63,7 @@ RecordStatisticsField, TombstoneField, ) +from .systemfields.access.protection import Visibility from .systemfields.draft_status import DraftStatus @@ -102,8 +111,6 @@ class CommonFieldsMixin: versions_model_cls = models.RDMVersionsState parent_record_cls = RDMParent - # Remember to update INDEXER_DEFAULT_INDEX in Invenio-App-RDM if you - # update the JSONSchema and mappings to a new version. schema = ConstantField("$schema", "local://records/record-v6.0.0.json") dumper = SearchDumper( @@ -111,8 +118,10 @@ class CommonFieldsMixin: EDTFDumperExt("metadata.publication_date"), EDTFListDumperExt("metadata.dates", "date"), RelationDumperExt("relations"), + CombinedSubjectsDumperExt(), CustomFieldsDumperExt(fields_var="RDM_CUSTOM_FIELDS"), StatisticsDumperExt("stats"), + SubjectHierarchyDumperExt(), ] ) @@ -120,31 +129,46 @@ class CommonFieldsMixin: creator_affiliations=PIDNestedListRelation( "metadata.creators", relation_field="affiliations", - keys=["name"], + keys=["name", "identifiers"], pid_field=Affiliation.pid, cache_key="affiliations", ), contributor_affiliations=PIDNestedListRelation( "metadata.contributors", relation_field="affiliations", - keys=["name"], + keys=["name", "identifiers"], pid_field=Affiliation.pid, cache_key="affiliations", ), funding_funder=PIDListRelation( "metadata.funding", relation_field="funder", - keys=["name"], + keys=["name", "identifiers"], pid_field=Funder.pid, cache_key="funders", ), funding_award=PIDListRelation( "metadata.funding", relation_field="award", - keys=["title", "number", "identifiers"], + keys=[ + "title", + "number", + "identifiers", + "acronym", + "program", + "subjects", + "organizations", + ], pid_field=Award.pid, cache_key="awards", ), + funding_award_subjects=PIDNestedListRelation( + "metadata.funding", + relation_field="award.subjects", + keys=["subject", "scheme", "props"], + pid_field=Subject.pid, + cache_key="subjects", + ), languages=PIDListRelation( "metadata.languages", keys=["title"], @@ -160,7 +184,7 @@ class CommonFieldsMixin: ), subjects=PIDListRelation( "metadata.subjects", - keys=["subject", "scheme"], + keys=["subject", "scheme", "props"], pid_field=Subject.pid, cache_key="subjects", ), @@ -277,6 +301,81 @@ class RDMMediaFileDraft(FileRecord): model_cls = models.RDMMediaFileDraftMetadata record_cls = None # defined below + # Stores record files processor information + processor = DictField(clear_none=True, create_if_missing=True) + + +def get_files_quota(record=None): + """Called by the file manager in create_bucket() during record.post_create. + + The quota is checked against the following order: + - If record is passed, then + - record.parent quota is checked + - record.owner quota is cheched + - default quota + - If record is not passed e.g new draft then + - current identity quota is checked + - default quota + :returns: dict i.e {quota_size, max_file_size}: dict is passed to the + Bucket.create(...) method. + """ + if record is not None: + assert getattr(record, "parent", None) + # Check record quota + record_quota = models.RDMRecordQuota.query.filter( + models.RDMRecordQuota.parent_id == record.parent.id + ).one_or_none() + if record_quota is not None: + return dict( + quota_size=record_quota.quota_size, + max_file_size=record_quota.max_file_size, + ) + # Next user quota + user_quota = models.RDMUserQuota.query.filter( + models.RDMUserQuota.user_id == record.parent.access.owned_by.owner_id + ).one_or_none() + if user_quota is not None: + return dict( + quota_size=user_quota.quota_size, + max_file_size=user_quota.max_file_size, + ) + else: + # check current user quota + user_quota = models.RDMUserQuota.query.filter( + models.RDMUserQuota.user_id == g.identity.id + ).one_or_none() + if user_quota is not None: + return dict( + quota_size=user_quota.quota_size, + max_file_size=user_quota.max_file_size, + ) + + # the config variables if not set are mapped to FILES_REST_DEFAULT_QUOTA_SIZE, + # FILES_REST_DEFAULT_MAX_FILE_SIZE respectively + return dict( + quota_size=current_app.config.get("RDM_FILES_DEFAULT_QUOTA_SIZE") + or current_app.config.get("FILES_REST_DEFAULT_QUOTA_SIZE"), + max_file_size=current_app.config.get("RDM_FILES_DEFAULT_MAX_FILE_SIZE") + or current_app.config.get("FILES_REST_DEFAULT_MAX_FILE_SIZE"), + ) + + +# Alias to get the quota of files for backward compatibility +get_quota = get_files_quota + + +def get_media_files_quota(record=None): + """Called by the file manager in create_bucket() during record.post_create. + + The quota is configured using config variables. + :returns: dict i.e {quota_size, max_file_size}: dict is passed to the + Bucket.create(...) method. + """ + return dict( + quota_size=current_app.config.get("RDM_MEDIA_FILES_DEFAULT_QUOTA_SIZE"), + max_file_size=current_app.config.get("RDM_MEDIA_FILES_DEFAULT_MAX_FILE_SIZE"), + ) + class RDMDraft(CommonFieldsMixin, Draft): """RDM draft API.""" @@ -291,12 +390,14 @@ class RDMDraft(CommonFieldsMixin, Draft): file_cls=RDMFileDraft, # Don't delete, we'll manage in the service delete=False, + bucket_args=get_files_quota, ) media_files = FilesField( key=MediaFilesAttrConfig["_files_attr_key"], bucket_id_attr=MediaFilesAttrConfig["_files_bucket_id_attr_key"], bucket_attr=MediaFilesAttrConfig["_files_bucket_attr_key"], + bucket_args=get_media_files_quota, store=False, dump=False, file_cls=RDMMediaFileDraft, @@ -319,6 +420,7 @@ class RDMDraftMediaFiles(RDMDraft): key=MediaFilesAttrConfig["_files_attr_key"], bucket_id_attr=MediaFilesAttrConfig["_files_bucket_id_attr_key"], bucket_attr=MediaFilesAttrConfig["_files_bucket_attr_key"], + bucket_args=get_media_files_quota, store=False, dump=False, file_cls=RDMMediaFileDraft, @@ -330,7 +432,6 @@ class RDMDraftMediaFiles(RDMDraft): RDMMediaFileDraft.record_cls = RDMDraftMediaFiles -# # Record API # class RDMFileRecord(FileRecord): @@ -346,6 +447,9 @@ class RDMMediaFileRecord(FileRecord): model_cls = models.RDMMediaFileRecordMetadata record_cls = None # defined below + # Stores record files processor information + processor = DictField(clear_none=True, create_if_missing=True) + class RDMRecord(CommonFieldsMixin, Record): """RDM Record API.""" @@ -353,12 +457,17 @@ class RDMRecord(CommonFieldsMixin, Record): model_cls = models.RDMRecordMetadata index = IndexField( - "rdmrecords-records-record-v6.0.0", search_alias="rdmrecords-records" + "rdmrecords-records-record-v7.0.0", search_alias="rdmrecords-records" ) files = FilesField( store=False, dump=True, + # Don't dump files if record is public and files restricted. + dump_entries=lambda record: not ( + record.access.protection.record == Visibility.PUBLIC.value + and record.access.protection.files == Visibility.RESTRICTED.value + ), file_cls=RDMFileRecord, # Don't create create=False, @@ -389,6 +498,48 @@ class RDMRecord(CommonFieldsMixin, Record): tombstone = TombstoneField() + @classmethod + def next_latest_published_record_by_parent(cls, parent): + """Get the next latest published record. + + This method gives back the next published latest record by parent or None if all + records are deleted i.e `record.deletion_status != 'P'`. + + :param parent: parent record. + :param excluded_latest: latest record to exclude find next published version + """ + with db.session.no_autoflush: + rec_model_query = ( + cls.model_cls.query.filter_by(parent_id=parent.id) + .filter( + cls.model_cls.deletion_status + == RecordDeletionStatusEnum.PUBLISHED.value + ) + .order_by(cls.model_cls.index.desc()) + ) + current_latest_id = cls.get_latest_by_parent(parent, id_only=True) + if current_latest_id: + rec_model_query.filter(cls.model_cls.id != current_latest_id) + + rec_model = rec_model_query.first() + return ( + cls(rec_model.data, model=rec_model, parent=parent) + if rec_model + else None + ) + + @classmethod + def get_latest_published_by_parent(cls, parent): + """Get the latest published record for the specified parent record. + + It might return None if there is no latest published version i.e not + published yet or all versions are deleted. + """ + latest_record = cls.get_latest_by_parent(parent) + if latest_record.deletion_status != RecordDeletionStatusEnum.PUBLISHED.value: + return None + return latest_record + RDMFileRecord.record_cls = RDMRecord @@ -400,6 +551,7 @@ class RDMRecordMediaFiles(RDMRecord): key=MediaFilesAttrConfig["_files_attr_key"], bucket_id_attr=MediaFilesAttrConfig["_files_bucket_id_attr_key"], bucket_attr=MediaFilesAttrConfig["_files_bucket_attr_key"], + bucket_args=get_media_files_quota, store=False, dump=False, file_cls=RDMMediaFileRecord, diff --git a/invenio_rdm_records/records/dumpers/__init__.py b/invenio_rdm_records/records/dumpers/__init__.py index 0eaa889f6..d2b25b92e 100644 --- a/invenio_rdm_records/records/dumpers/__init__.py +++ b/invenio_rdm_records/records/dumpers/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020 CERN. +# Copyright (C) 2020-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -8,16 +8,20 @@ """Search dumpers, for transforming to and from versions to index.""" from .access import GrantTokensDumperExt +from .combined_subjects import CombinedSubjectsDumperExt from .edtf import EDTFDumperExt, EDTFListDumperExt from .locations import LocationsDumper from .pids import PIDsDumperExt from .statistics import StatisticsDumperExt +from .subject_hierarchy import SubjectHierarchyDumperExt __all__ = ( + "CombinedSubjectsDumperExt", "EDTFDumperExt", "EDTFListDumperExt", "PIDsDumperExt", "GrantTokensDumperExt", "LocationsDumper", "StatisticsDumperExt", + "SubjectHierarchyDumperExt", ) diff --git a/invenio_rdm_records/records/dumpers/combined_subjects.py b/invenio_rdm_records/records/dumpers/combined_subjects.py new file mode 100644 index 000000000..567bcbe7d --- /dev/null +++ b/invenio_rdm_records/records/dumpers/combined_subjects.py @@ -0,0 +1,71 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 Northwestern University. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Search dumpers for combined subjects.""" + +from invenio_records.dumpers import SearchDumperExt + +SPLITCHAR = "::" # explict better than implicit + + +class CombinedSubjectsDumperExt(SearchDumperExt): + """Search dumper extension for sombined subjects support. + + It parses the values of the `subjects` field + in the document and adds entries of the form: + `` or `` in the `combined_subjects` field. + + The combined_subjects field is required for properly aggregating/faceting subjects. + + This dumper needs to be placed after the RelationDumper for subjects as it relies + on dereferenced scheme + subject pairs. + """ + + def __init__(self, splitchar=SPLITCHAR): + """Constructor. + + :param splitchar: string to use to combine scheme + subject. + It must be identical to the splitchar value used in the + CombinedTermsFacet. + """ + super().__init__() + self._splitchar = splitchar + + def dump(self, record, data): + """Dump the data to secondary storage (OpenSearch-like).""" + subjects = data.get("metadata", {}).get("subjects", []) + + def get_scheme_subject(subject_dict): + """ + Return [, ] or [] for the given `subject_dict`. + + Assumes subject_dict has been dereferenced at this point. + """ + result = [] + if "scheme" in subject_dict: + result.append(subject_dict["scheme"]) + result.append(subject_dict["subject"]) + return result + + # There is no clarity on what keys can be assumed to be present in data + # (e.g., test_records_communities calls dumps() without "metadata"), + # so one has to be careful in how the dumped data is inserted back into `data` + metadata = data.get("metadata", {}) + metadata["combined_subjects"] = [ + self._splitchar.join(get_scheme_subject(subject)) for subject in subjects + ] + data["metadata"] = metadata + + def load(self, data, record_cls): + """Load the data from secondary storage (OpenSearch-like). + + This is run against the parent too (for some reason), so presence of any + field cannot be assumed. + """ + if "metadata" in data: + data["metadata"].pop("combined_subjects", None) + return data diff --git a/invenio_rdm_records/records/dumpers/edtf.py b/invenio_rdm_records/records/dumpers/edtf.py index 64e0dd1ef..fd61b999d 100644 --- a/invenio_rdm_records/records/dumpers/edtf.py +++ b/invenio_rdm_records/records/dumpers/edtf.py @@ -10,7 +10,7 @@ import calendar from arrow import Arrow -from edtf import parse_edtf +from babel_edtf import parse_edtf from edtf.parser.edtf_exceptions import EDTFParseException from invenio_records.dictutils import dict_lookup, parse_lookup_key from invenio_records.dumpers import SearchDumperExt diff --git a/invenio_rdm_records/records/dumpers/pids.py b/invenio_rdm_records/records/dumpers/pids.py index ca7deae02..72d6a3607 100644 --- a/invenio_rdm_records/records/dumpers/pids.py +++ b/invenio_rdm_records/records/dumpers/pids.py @@ -1,13 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Search dumpers for PIDs.""" - from invenio_records.dumpers import SearchDumperExt diff --git a/invenio_rdm_records/records/dumpers/subject_hierarchy.py b/invenio_rdm_records/records/dumpers/subject_hierarchy.py new file mode 100644 index 000000000..d10e91c49 --- /dev/null +++ b/invenio_rdm_records/records/dumpers/subject_hierarchy.py @@ -0,0 +1,108 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Search dumpers for subject hierarchy support.""" + +from invenio_records.dumpers import SearchDumperExt + + +class SubjectHierarchyDumperExt(SearchDumperExt): + """Search dumper extension for subject hierarchy support. + + It parses the values of the `subjects` field in the document, builds hierarchical + parent notations, and adds entries to the `hierarchy` field for each subject in award. + + This dumper needs to be placed after the RelationDumper for subjects as it relies + on dereferenced subjects with scheme, subject, and props. + + Example + "subjects" : + [ + { + "id" : "euroscivoc:425", + "subject" : "Energy and fuels", + "scheme" : "EuroSciVoc", + "props" : { + "parents" : "euroscivoc:25,euroscivoc:67", + }, + "@v" : "ef9f1c4c-b469-4645-a4b2-0db9b1c42096::1" + } + ] + + The above subject is dumped with hierarchy field and is transformed to + + "subjects" : + [ + { + "id" : "euroscivoc:425", + "subject" : "Energy and fuels", + "scheme" : "EuroSciVoc", + "props" : { + "parents" : "euroscivoc:25,euroscivoc:67", + "hierarchy" : [ + "euroscivoc:25", + "euroscivoc:25,euroscivoc:67", + "euroscivoc:25,euroscivoc:67,euroscivoc:425" + ] + }, + "@v" : "ef9f1c4c-b469-4645-a4b2-0db9b1c42096::1" + } + ] + """ + + def __init__(self, splitchar=","): + """Constructor. + + :param splitchar: string to use to combine subject ids in hierarchy + """ + super().__init__() + self._splitchar = splitchar + + def dump(self, record, data): + """Dump the data to secondary storage (OpenSearch-like).""" + awards = data.get("metadata", {}).get("funding", []) + + def build_hierarchy(parents_str, current_subject_id): + """Build the hierarchy by progressively combining parent notations.""" + if not parents_str: + return [ + current_subject_id + ] # No parents, so the hierarchy is just the current ID. + + parents = parents_str.split(self._splitchar) # Split the parent notations + hierarchy = [] + current_hierarchy = parents[0] # Start with the top-level parent + + hierarchy.append(current_hierarchy) + for parent in parents[1:]: + current_hierarchy = f"{current_hierarchy}{self._splitchar}{parent}" + hierarchy.append(current_hierarchy) + + hierarchy.append( + f"{current_hierarchy}{self._splitchar}{current_subject_id}" + ) + return hierarchy + + for award in awards: + subjects = award.get("award", {}).get("subjects", []) + for subject in subjects: + parents = subject.get("props", {}).get("parents", "") + current_subject_id = subject.get("id", "") + if current_subject_id: + subject_hierarchy = build_hierarchy(parents, current_subject_id) + subject.setdefault("props", {})["hierarchy"] = subject_hierarchy + + if awards: + data["metadata"]["funding"] = awards + + def load(self, data, record_cls): + """Load the data from secondary storage (OpenSearch-like). + + This is run against the parent too (for some reason), so presence of any + field cannot be assumed. + """ + pass diff --git a/invenio_rdm_records/records/jsonschemas/records/definitions-v2.0.0.json b/invenio_rdm_records/records/jsonschemas/records/definitions-v2.0.0.json index 4b28a652b..56a857ec5 100644 --- a/invenio_rdm_records/records/jsonschemas/records/definitions-v2.0.0.json +++ b/invenio_rdm_records/records/jsonschemas/records/definitions-v2.0.0.json @@ -13,8 +13,7 @@ }, "affiliations": { "type": "array", - "items": {"$ref": "#/affiliation"}, - "uniqueItems": true + "items": { "$ref": "#/affiliation" } }, "agent": { "description": "An agent (user, software process, community, ...).", @@ -73,16 +72,11 @@ { "title": "GeoJSON Point", "type": "object", - "required": [ - "type", - "coordinates" - ], + "required": ["type", "coordinates"], "properties": { "type": { "type": "string", - "enum": [ - "Point" - ] + "enum": ["Point"] }, "coordinates": { "type": "array", @@ -103,16 +97,11 @@ { "title": "GeoJSON LineString", "type": "object", - "required": [ - "type", - "coordinates" - ], + "required": ["type", "coordinates"], "properties": { "type": { "type": "string", - "enum": [ - "LineString" - ] + "enum": ["LineString"] }, "coordinates": { "type": "array", @@ -137,16 +126,11 @@ { "title": "GeoJSON Polygon", "type": "object", - "required": [ - "type", - "coordinates" - ], + "required": ["type", "coordinates"], "properties": { "type": { "type": "string", - "enum": [ - "Polygon" - ] + "enum": ["Polygon"] }, "coordinates": { "type": "array", @@ -174,16 +158,11 @@ { "title": "GeoJSON MultiPoint", "type": "object", - "required": [ - "type", - "coordinates" - ], + "required": ["type", "coordinates"], "properties": { "type": { "type": "string", - "enum": [ - "MultiPoint" - ] + "enum": ["MultiPoint"] }, "coordinates": { "type": "array", @@ -207,16 +186,11 @@ { "title": "GeoJSON MultiLineString", "type": "object", - "required": [ - "type", - "coordinates" - ], + "required": ["type", "coordinates"], "properties": { "type": { "type": "string", - "enum": [ - "MultiLineString" - ] + "enum": ["MultiLineString"] }, "coordinates": { "type": "array", @@ -244,16 +218,11 @@ { "title": "GeoJSON MultiPolygon", "type": "object", - "required": [ - "type", - "coordinates" - ], + "required": ["type", "coordinates"], "properties": { "type": { "type": "string", - "enum": [ - "MultiPolygon" - ] + "enum": ["MultiPolygon"] }, "coordinates": { "type": "array", @@ -312,10 +281,7 @@ "nameType": { "description": "Type of name.", "type": "string", - "enum": [ - "personal", - "organizational" - ] + "enum": ["personal", "organizational"] }, "person_or_org": { "type": "object", @@ -387,8 +353,7 @@ }, "subjects": { "type": "array", - "items": {"$ref": "#/subject"}, - "uniqueItems": true + "items": { "$ref": "#/subject" } }, "title_type": { "description": "Type of title.", diff --git a/invenio_rdm_records/records/jsonschemas/records/record-v2.0.0.json b/invenio_rdm_records/records/jsonschemas/records/record-v2.0.0.json index 39e6604b9..58c49ce98 100644 --- a/invenio_rdm_records/records/jsonschemas/records/record-v2.0.0.json +++ b/invenio_rdm_records/records/jsonschemas/records/record-v2.0.0.json @@ -109,19 +109,19 @@ }, "dates": { - "description": "Date or date interval.", + "description": "Date, datetime or date interval.", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "date": { - "description": "Date or date interval in EDTF level 0 format", + "description": "Date, datetime or date interval in EDTF level 0 format", "type": "string" }, "type": {"$ref": "local://records/definitions-v1.0.0.json#/dateType"}, "description": { - "description": "Description of the date or date interval e.g. 'Accepted' or 'Available' (CV).", + "description": "Description of the date, datetime or date interval e.g. 'Accepted' or 'Available' (CV).", "type": "string" } } diff --git a/invenio_rdm_records/records/jsonschemas/records/record-v3.0.0.json b/invenio_rdm_records/records/jsonschemas/records/record-v3.0.0.json index c6a82e333..f51306b7c 100644 --- a/invenio_rdm_records/records/jsonschemas/records/record-v3.0.0.json +++ b/invenio_rdm_records/records/jsonschemas/records/record-v3.0.0.json @@ -106,19 +106,19 @@ }, "dates": { - "description": "Date or date interval.", + "description": "Date, datetime or date interval.", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "date": { - "description": "Date or date interval in EDTF level 0 format", + "description": "Date, datetime or date interval in EDTF level 0 format", "type": "string" }, "type": {"$ref": "local://records/definitions-v1.1.0.json#/dateType"}, "description": { - "description": "Description of the date or date interval e.g. 'Accepted' or 'Available' (CV).", + "description": "Description of the date, datetime or date interval e.g. 'Accepted' or 'Available' (CV).", "type": "string" } } diff --git a/invenio_rdm_records/records/jsonschemas/records/record-v4.0.0.json b/invenio_rdm_records/records/jsonschemas/records/record-v4.0.0.json index 4cc208635..27ede21f0 100644 --- a/invenio_rdm_records/records/jsonschemas/records/record-v4.0.0.json +++ b/invenio_rdm_records/records/jsonschemas/records/record-v4.0.0.json @@ -95,19 +95,19 @@ }, "dates": { - "description": "Date or date interval.", + "description": "Date, datetime or date interval.", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "date": { - "description": "Date or date interval in EDTF level 0 format", + "description": "Date, datetime or date interval in EDTF level 0 format", "type": "string" }, "type": {"$ref": "local://records/definitions-v2.0.0.json#/date_type"}, "description": { - "description": "Description of the date or date interval e.g. 'Accepted' or 'Available' (CV).", + "description": "Description of the date, datetime or date interval e.g. 'Accepted' or 'Available' (CV).", "type": "string" } } diff --git a/invenio_rdm_records/records/jsonschemas/records/record-v5.0.0.json b/invenio_rdm_records/records/jsonschemas/records/record-v5.0.0.json index 822d5b901..b1b430b87 100644 --- a/invenio_rdm_records/records/jsonschemas/records/record-v5.0.0.json +++ b/invenio_rdm_records/records/jsonschemas/records/record-v5.0.0.json @@ -106,21 +106,21 @@ } }, "dates": { - "description": "Date or date interval.", + "description": "Date, datetime or date interval.", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "date": { - "description": "Date or date interval in EDTF level 0 format", + "description": "Date, datetime or date interval in EDTF level 0 format", "type": "string" }, "type": { "$ref": "local://records/definitions-v2.0.0.json#/date_type" }, "description": { - "description": "Description of the date or date interval e.g. 'Accepted' or 'Available' (CV).", + "description": "Description of the date, datetime or date interval e.g. 'Accepted' or 'Available' (CV).", "type": "string" } } diff --git a/invenio_rdm_records/records/jsonschemas/records/record-v6.0.0.json b/invenio_rdm_records/records/jsonschemas/records/record-v6.0.0.json index b6687ab8e..592f5db23 100644 --- a/invenio_rdm_records/records/jsonschemas/records/record-v6.0.0.json +++ b/invenio_rdm_records/records/jsonschemas/records/record-v6.0.0.json @@ -106,21 +106,21 @@ } }, "dates": { - "description": "Date or date interval.", + "description": "Date, datetime or date interval.", "type": "array", "items": { "type": "object", "additionalProperties": false, "properties": { "date": { - "description": "Date or date interval in EDTF level 0 format", + "description": "Date, datetime or date interval in EDTF level 0 format", "type": "string" }, "type": { "$ref": "local://records/definitions-v2.0.0.json#/date_type" }, "description": { - "description": "Description of the date or date interval e.g. 'Accepted' or 'Available' (CV).", + "description": "Description of the date, datetime or date interval e.g. 'Accepted' or 'Available' (CV).", "type": "string" } } @@ -131,8 +131,7 @@ "type": "array", "items": { "$ref": "local://records/definitions-v2.0.0.json#/language" - }, - "uniqueItems": true + } }, "identifiers": { "description": "Alternate identifiers for the record.", @@ -144,7 +143,6 @@ }, "related_identifiers": { "type": "array", - "uniqueItems": true, "items": { "type": "object", "additionalProperties": false, @@ -381,6 +379,24 @@ } } }, + "internal_notes": { + "properties": { + "id": { + "type": "string" + }, + "note": { + "type": "string" + }, + "timestamp": { + "type": "string", + "description": "ISO8601 formatted timestamp in UTC.", + "format": "date-time" + }, + "added_by": { + "$ref": "local://records/definitions-v2.0.0.json#/agent" + } + } + }, "provenance": { "type": "object", "description": "Record provenance.", @@ -402,18 +418,12 @@ "record": { "description": "Record visibility (public or restricted)", "type": "string", - "enum": [ - "public", - "restricted" - ] + "enum": ["public", "restricted"] }, "files": { "description": "Files visibility (public or restricted)", "type": "string", - "enum": [ - "public", - "restricted" - ] + "enum": ["public", "restricted"] }, "embargo": { "description": "Description of the embargo on the record.", @@ -422,25 +432,16 @@ "properties": { "active": { "description": "Whether or not the embargo is (still) active.", - "type": [ - "boolean", - "null" - ] + "type": ["boolean", "null"] }, "until": { "description": "Embargo date of record (ISO8601 formatted date time in UTC). At this time both metadata and files will be made public.", - "type": [ - "string", - "null" - ], + "type": ["string", "null"], "format": "date" }, "reason": { "description": "The reason why the record is under embargo.", - "type": [ - "string", - "null" - ] + "type": ["string", "null"] } } } diff --git a/invenio_rdm_records/records/mappings/os-v1/rdmrecords/drafts/draft-v6.0.0.json b/invenio_rdm_records/records/mappings/os-v1/rdmrecords/drafts/draft-v6.0.0.json index 8b6771168..3c532097e 100644 --- a/invenio_rdm_records/records/mappings/os-v1/rdmrecords/drafts/draft-v6.0.0.json +++ b/invenio_rdm_records/records/mappings/os-v1/rdmrecords/drafts/draft-v6.0.0.json @@ -133,7 +133,7 @@ }, "custom_fields": { "type": "object", - "dynamic": true + "dynamic": "true" }, "parent": { "properties": { @@ -170,7 +170,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "access": { "properties": { @@ -236,6 +236,387 @@ }, "default": { "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + }, + "parent": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + } + } + } + } } } }, @@ -266,19 +647,19 @@ }, "payload": { "type": "object", - "dynamic": true + "dynamic": "true" }, "topic": { "type": "object", - "dynamic": true + "dynamic": "true" }, "receiver": { "type": "object", - "dynamic": true + "dynamic": "true" }, "created_by": { "type": "object", - "dynamic": true + "dynamic": "true" }, "@v": { "type": "keyword" @@ -287,7 +668,7 @@ }, "permission_flags": { "type": "object", - "dynamic": true + "dynamic": "true" }, "created": { "type": "date" @@ -302,7 +683,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "has_draft": { "type": "boolean" @@ -342,6 +723,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -382,7 +773,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -401,6 +792,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -441,7 +842,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -469,7 +870,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -494,7 +895,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -509,7 +910,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -531,10 +932,26 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "number": { - "type": "text" + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "program": { + "type": "keyword" }, "identifiers": { "properties": { @@ -545,6 +962,39 @@ "type": "keyword" } } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } } } }, @@ -559,6 +1009,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } } @@ -585,7 +1045,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -663,7 +1123,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -678,7 +1138,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -698,7 +1158,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -724,11 +1184,11 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "description": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -774,9 +1234,16 @@ }, "scheme": { "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" } } }, + "combined_subjects": { + "type": "keyword" + }, "title": { "type": "text", "fields": { @@ -799,7 +1266,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -817,7 +1284,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -906,7 +1373,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -928,6 +1395,14 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } } } } @@ -965,7 +1440,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -987,6 +1462,32 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + }, + "processor": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "source_file_id": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } } } } @@ -1046,7 +1547,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, diff --git a/invenio_rdm_records/records/mappings/os-v1/rdmrecords/records/record-v6.0.0.json b/invenio_rdm_records/records/mappings/os-v1/rdmrecords/records/record-v6.0.0.json index 4636f6358..ee50bf1cb 100644 --- a/invenio_rdm_records/records/mappings/os-v1/rdmrecords/records/record-v6.0.0.json +++ b/invenio_rdm_records/records/mappings/os-v1/rdmrecords/records/record-v6.0.0.json @@ -133,7 +133,7 @@ }, "custom_fields": { "type": "object", - "dynamic": true + "dynamic": "true" }, "parent": { "properties": { @@ -170,7 +170,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "access": { "properties": { @@ -236,6 +236,321 @@ }, "default": { "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + }, + "parent": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + } + } + } + } } } }, @@ -244,7 +559,7 @@ }, "permission_flags": { "type": "object", - "dynamic": true + "dynamic": "true" }, "created": { "type": "date" @@ -259,7 +574,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "has_draft": { "type": "boolean" @@ -299,6 +614,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -339,7 +664,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -358,6 +683,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -398,7 +733,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -426,7 +761,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -451,7 +786,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -466,7 +801,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -488,10 +823,26 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "number": { - "type": "text" + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "program": { + "type": "keyword" }, "identifiers": { "properties": { @@ -516,6 +867,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } } @@ -542,7 +903,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -620,7 +981,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -635,7 +996,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -655,7 +1016,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -681,11 +1042,11 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "description": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -734,6 +1095,9 @@ } } }, + "combined_subjects": { + "type": "keyword" + }, "title": { "type": "text", "fields": { @@ -756,7 +1120,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -774,7 +1138,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -857,7 +1221,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -879,6 +1243,14 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } } } } @@ -916,7 +1288,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -938,6 +1310,32 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + }, + "processor": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "source_file_id": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } } } } @@ -997,7 +1395,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -1023,5 +1421,33 @@ } } } + }, + "settings": { + "index.query.default_field": [ + "id", + "metadata.title", + "metadata.contact", + "metadata.contributors.affiliations.name", + "metadata.contributors.person_or_org.name", + "metadata.contributors.person_or_org.family_name", + "metadata.contributors.person_or_org.given_name", + "metadata.creators.affiliations.name", + "metadata.creators.person_or_org.name", + "metadata.creators.person_or_org.family_name", + "metadata.creators.person_or_org.given_name", + "metadata.description", + "metadata.formats", + "metadata.funding.award.identifiers.identifier", + "metadata.funding.award.acronym.text", + "metadata.funding.award.number", + "metadata.funding.funder.name", + "metadata.identifiers.identifier", + "metadata.locations.features.place", + "metadata.locations.features.description", + "metadata.publication_date", + "metadata.publisher", + "metadata.subjects.subject", + "metadata.version" + ] } } diff --git a/invenio_rdm_records/records/mappings/os-v1/rdmrecords/records/record-v7.0.0.json b/invenio_rdm_records/records/mappings/os-v1/rdmrecords/records/record-v7.0.0.json new file mode 100644 index 000000000..3e3cd6600 --- /dev/null +++ b/invenio_rdm_records/records/mappings/os-v1/rdmrecords/records/record-v7.0.0.json @@ -0,0 +1,1601 @@ +{ + "settings": { + "index.query.default_field": [ + "id", + "metadata.title", + "metadata.title.original", + "metadata.contact", + "metadata.contributors.affiliations.name", + "metadata.contributors.person_or_org.name", + "metadata.contributors.person_or_org.family_name", + "metadata.contributors.person_or_org.given_name", + "metadata.creators.affiliations.name", + "metadata.creators.person_or_org.name", + "metadata.creators.person_or_org.family_name", + "metadata.creators.person_or_org.given_name", + "metadata.description", + "metadata.formats", + "metadata.funding.award.identifiers.identifier", + "metadata.funding.award.acronym.text", + "metadata.funding.award.number", + "metadata.funding.award.subjects", + "metadata.funding.award.organizations", + "metadata.funding.funder.name", + "metadata.identifiers.identifier", + "metadata.locations.features.place", + "metadata.locations.features.description", + "metadata.publication_date", + "metadata.publisher", + "metadata.subjects.subject", + "metadata.version", + "metadata.dates.description", + "metadata.additional_descriptions.description", + "metadata.references.reference", + "metadata.additional_titles.title" + ], + "analysis": { + "char_filter": { + "strip_special_chars": { + "type": "pattern_replace", + "pattern": "[\\p{Punct}\\p{S}]", + "replacement": "" + } + }, + "analyzer": { + "accent_analyzer": { + "tokenizer": "standard", + "type": "custom", + "char_filter": ["strip_special_chars"], + "filter": ["lowercase", "asciifolding"] + } + } + } + }, + "mappings": { + "dynamic_templates": [ + { + "pids": { + "path_match": "pids.*", + "match_mapping_type": "object", + "mapping": { + "type": "object", + "properties": { + "identifier": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "provider": { + "type": "keyword" + }, + "client": { + "type": "keyword" + } + } + } + } + }, + { + "parent_pids": { + "path_match": "parent.pids.*", + "match_mapping_type": "object", + "mapping": { + "type": "object", + "properties": { + "identifier": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "provider": { + "type": "keyword" + }, + "client": { + "type": "keyword" + } + } + } + } + }, + { + "i18n_title": { + "path_match": "*.title.*", + "unmatch": "(metadata.title)|(metadata.additional_titles.title)", + "match_mapping_type": "object", + "mapping": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + } + ], + "dynamic": "strict", + "date_detection": false, + "numeric_detection": false, + "properties": { + "$schema": { + "type": "keyword", + "index": false + }, + "uuid": { + "type": "keyword", + "index": false + }, + "id": { + "type": "keyword" + }, + "pid": { + "properties": { + "obj_type": { + "type": "keyword", + "index": false + }, + "pid_type": { + "type": "keyword", + "index": false + }, + "pk": { + "type": "long", + "index": false + }, + "status": { + "type": "keyword", + "index": false + } + } + }, + "access": { + "properties": { + "record": { + "type": "keyword" + }, + "files": { + "type": "keyword" + }, + "embargo": { + "properties": { + "active": { + "type": "boolean" + }, + "until": { + "type": "date" + }, + "reason": { + "type": "text" + } + } + }, + "status": { + "type": "keyword" + } + } + }, + "custom_fields": { + "type": "object", + "dynamic": "true" + }, + "parent": { + "properties": { + "$schema": { + "type": "keyword", + "index": false + }, + "uuid": { + "type": "keyword", + "index": false + }, + "id": { + "type": "keyword" + }, + "pid": { + "properties": { + "obj_type": { + "type": "keyword", + "index": false + }, + "pid_type": { + "type": "keyword", + "index": false + }, + "pk": { + "type": "long", + "index": false + }, + "status": { + "type": "keyword", + "index": false + } + } + }, + "pids": { + "type": "object", + "dynamic": "true" + }, + "access": { + "properties": { + "owned_by": { + "properties": { + "user": { + "type": "keyword" + } + } + }, + "grants": { + "properties": { + "subject": { + "properties": { + "type": { + "type": "keyword" + }, + "id": { + "type": "keyword" + } + } + }, + "permission": { + "type": "keyword" + }, + "origin": { + "type": "keyword" + } + } + }, + "grant_tokens": { + "type": "keyword" + }, + "links": { + "properties": { + "id": { + "type": "keyword" + } + } + }, + "settings": { + "properties": { + "allow_user_requests": { + "type": "boolean" + }, + "allow_guest_requests": { + "type": "boolean" + }, + "accept_conditions_text": { + "type": "text" + }, + "secret_link_expiration": { + "type": "integer" + } + } + } + } + }, + "is_verified": { + "type": "boolean" + }, + "communities": { + "properties": { + "ids": { + "type": "keyword" + }, + "default": { + "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + }, + "parent": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "@v": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + } + } + } + } + } + } + }, + "permission_flags": { + "type": "object", + "dynamic": "true" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + } + } + }, + "pids": { + "type": "object", + "dynamic": "true" + }, + "has_draft": { + "type": "boolean" + }, + "metadata": { + "properties": { + "_default_preview": { + "type": "object", + "enabled": false + }, + "_internal_notes": { + "properties": { + "note": { + "type": "text" + }, + "timestamp": { + "type": "date" + }, + "user": { + "type": "keyword" + } + } + }, + "contact": { + "type": "keyword" + }, + "contributors": { + "properties": { + "affiliations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + }, + "person_or_org": { + "properties": { + "family_name": { + "type": "text" + }, + "given_name": { + "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "name": { + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "role": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "creators": { + "properties": { + "affiliations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + }, + "person_or_org": { + "properties": { + "family_name": { + "type": "text" + }, + "given_name": { + "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "name": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer" + }, + "type": { + "type": "keyword" + } + } + }, + "role": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "dates": { + "properties": { + "description": { + "type": "text" + }, + "date": { + "type": "keyword" + }, + "date_range": { + "type": "date_range" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "description": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer" + }, + "additional_descriptions": { + "properties": { + "description": { + "type": "text" + }, + "lang": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "formats": { + "type": "keyword" + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "program": { + "type": "keyword" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "text" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "text" + }, + "scheme": { + "type": "keyword" + } + } + }, + "languages": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "locations": { + "properties": { + "features": { + "properties": { + "centroid": { + "type": "geo_point" + }, + "geometry": { + "type": "geo_shape", + "doc_values": false + }, + "place": { + "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "description": { + "type": "text" + } + } + } + } + }, + "publication_date": { + "type": "keyword" + }, + "publication_date_range": { + "type": "date_range" + }, + "publisher": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "references": { + "properties": { + "identifier": { + "type": "keyword" + }, + "reference": { + "type": "text" + }, + "scheme": { + "type": "keyword" + } + } + }, + "related_identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "relation_type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "resource_type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "scheme": { + "type": "keyword" + } + } + }, + "resource_type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "props": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "subtype": { + "type": "keyword" + } + } + } + } + }, + "rights": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "description": { + "type": "object", + "dynamic": "true" + }, + "props": { + "type": "object", + "properties": { + "url": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "link": { + "type": "keyword", + "index": false + }, + "icon": { + "type": "keyword", + "index": false + } + } + }, + "sizes": { + "type": "keyword", + "ignore_above": 256 + }, + "subjects": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "combined_subjects": { + "type": "keyword" + }, + "title": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + }, + "original": { + "type": "text" + } + } + }, + "additional_titles": { + "properties": { + "lang": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "title": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer", + "fields": { + "original": { + "type": "text" + } + } + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "version": { + "type": "keyword" + } + } + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "is_published": { + "type": "boolean" + }, + "is_deleted": { + "type": "boolean" + }, + "deletion_status": { + "type": "keyword" + }, + "version_id": { + "type": "long" + }, + "versions": { + "properties": { + "index": { + "type": "integer" + }, + "is_latest": { + "type": "boolean" + }, + "is_latest_draft": { + "type": "boolean" + }, + "latest_id": { + "type": "keyword" + }, + "latest_index": { + "type": "integer" + }, + "next_draft_id": { + "type": "keyword" + } + } + }, + "files": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "default_preview": { + "type": "keyword" + }, + "count": { + "type": "integer" + }, + "totalbytes": { + "type": "long" + }, + "mimetypes": { + "type": "keyword" + }, + "types": { + "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "enabled": false + }, + "version_id": { + "enabled": false + }, + "metadata": { + "type": "object", + "dynamic": "true" + }, + "checksum": { + "type": "keyword" + }, + "key": { + "type": "keyword" + }, + "mimetype": { + "type": "keyword" + }, + "size": { + "type": "long" + }, + "ext": { + "type": "keyword" + }, + "object_version_id": { + "enabled": false + }, + "file_id": { + "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + } + } + } + } + }, + "media_files": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "default_preview": { + "type": "keyword" + }, + "count": { + "type": "integer" + }, + "totalbytes": { + "type": "long" + }, + "mimetypes": { + "type": "keyword" + }, + "types": { + "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "enabled": false + }, + "version_id": { + "enabled": false + }, + "metadata": { + "type": "object", + "dynamic": "true" + }, + "checksum": { + "type": "keyword" + }, + "key": { + "type": "keyword" + }, + "mimetype": { + "type": "keyword" + }, + "size": { + "type": "long" + }, + "ext": { + "type": "keyword" + }, + "object_version_id": { + "enabled": false + }, + "file_id": { + "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + }, + "processor": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "source_file_id": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + } + } + } + } + }, + "stats": { + "properties": { + "this_version": { + "properties": { + "views": { + "type": "integer" + }, + "unique_views": { + "type": "integer" + }, + "downloads": { + "type": "integer" + }, + "unique_downloads": { + "type": "integer" + }, + "data_volume": { + "type": "double" + } + } + }, + "all_versions": { + "properties": { + "views": { + "type": "integer" + }, + "unique_views": { + "type": "integer" + }, + "downloads": { + "type": "integer" + }, + "unique_downloads": { + "type": "integer" + }, + "data_volume": { + "type": "double" + } + } + } + } + }, + "tombstone": { + "properties": { + "removal_reason": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "note": { + "type": "text" + }, + "removed_by": { + "properties": { + "user": { + "type": "keyword" + } + } + }, + "removal_date": { + "type": "date" + }, + "citation_text": { + "type": "text" + }, + "is_visible": { + "type": "boolean" + } + } + } + } + } +} diff --git a/invenio_rdm_records/records/mappings/os-v2/rdmrecords/drafts/draft-v6.0.0.json b/invenio_rdm_records/records/mappings/os-v2/rdmrecords/drafts/draft-v6.0.0.json index 8b6771168..0d93f5410 100644 --- a/invenio_rdm_records/records/mappings/os-v2/rdmrecords/drafts/draft-v6.0.0.json +++ b/invenio_rdm_records/records/mappings/os-v2/rdmrecords/drafts/draft-v6.0.0.json @@ -133,7 +133,7 @@ }, "custom_fields": { "type": "object", - "dynamic": true + "dynamic": "true" }, "parent": { "properties": { @@ -170,7 +170,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "access": { "properties": { @@ -236,6 +236,387 @@ }, "default": { "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + }, + "parent": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + } + } + } + } } } }, @@ -266,19 +647,19 @@ }, "payload": { "type": "object", - "dynamic": true + "dynamic": "true" }, "topic": { "type": "object", - "dynamic": true + "dynamic": "true" }, "receiver": { "type": "object", - "dynamic": true + "dynamic": "true" }, "created_by": { "type": "object", - "dynamic": true + "dynamic": "true" }, "@v": { "type": "keyword" @@ -287,7 +668,7 @@ }, "permission_flags": { "type": "object", - "dynamic": true + "dynamic": "true" }, "created": { "type": "date" @@ -302,7 +683,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "has_draft": { "type": "boolean" @@ -342,6 +723,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -382,7 +773,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -401,6 +792,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -441,7 +842,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -469,7 +870,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -494,7 +895,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -509,7 +910,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -531,10 +932,26 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "number": { - "type": "text" + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "program": { + "type": "keyword" }, "identifiers": { "properties": { @@ -545,6 +962,39 @@ "type": "keyword" } } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } } } }, @@ -559,6 +1009,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } } @@ -585,7 +1045,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -663,7 +1123,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -678,7 +1138,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -698,7 +1158,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -724,11 +1184,11 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "description": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -774,9 +1234,16 @@ }, "scheme": { "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" } } }, + "combined_subjects": { + "type": "keyword" + }, "title": { "type": "text", "fields": { @@ -799,7 +1266,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -817,7 +1284,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -906,7 +1373,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -928,6 +1395,14 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } } } } @@ -965,7 +1440,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -987,6 +1462,32 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + }, + "processor": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "source_file_id": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } } } } @@ -1046,7 +1547,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -1070,6 +1571,28 @@ "type": "boolean" } } + }, + "internal_notes": { + "type": "object", + "properties": { + "id": { + "type": "keyword" + }, + "note": { + "type": "text" + }, + "timestamp": { + "type": "date" + }, + "added_by": { + "type": "object", + "properties": { + "user": { + "type": "keyword" + } + } + } + } } } } diff --git a/invenio_rdm_records/records/mappings/os-v2/rdmrecords/records/record-v6.0.0.json b/invenio_rdm_records/records/mappings/os-v2/rdmrecords/records/record-v6.0.0.json index 476a8416b..1a57e43b5 100644 --- a/invenio_rdm_records/records/mappings/os-v2/rdmrecords/records/record-v6.0.0.json +++ b/invenio_rdm_records/records/mappings/os-v2/rdmrecords/records/record-v6.0.0.json @@ -133,7 +133,7 @@ }, "custom_fields": { "type": "object", - "dynamic": true + "dynamic": "true" }, "parent": { "properties": { @@ -170,7 +170,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "access": { "properties": { @@ -239,12 +239,327 @@ }, "default": { "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + }, + "parent": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "@v": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + } + } + } + } } } }, "permission_flags": { "type": "object", - "dynamic": true + "dynamic": "true" }, "created": { "type": "date" @@ -259,7 +574,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "has_draft": { "type": "boolean" @@ -299,6 +614,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -339,7 +664,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -358,6 +683,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -398,7 +733,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -426,7 +761,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -451,7 +786,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -466,7 +801,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -488,10 +823,26 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "number": { - "type": "text" + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "program": { + "type": "keyword" }, "identifiers": { "properties": { @@ -516,6 +867,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } } @@ -542,7 +903,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -620,7 +981,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -635,7 +996,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -655,7 +1016,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -681,11 +1042,11 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "description": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -734,6 +1095,9 @@ } } }, + "combined_subjects": { + "type": "keyword" + }, "title": { "type": "text", "fields": { @@ -756,7 +1120,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -774,7 +1138,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -857,7 +1221,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -879,6 +1243,14 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } } } } @@ -916,7 +1288,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -938,6 +1310,32 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + }, + "processor": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "source_file_id": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } } } } @@ -997,7 +1395,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -1023,5 +1421,33 @@ } } } + }, + "settings": { + "index.query.default_field": [ + "id", + "metadata.title", + "metadata.contact", + "metadata.contributors.affiliations.name", + "metadata.contributors.person_or_org.name", + "metadata.contributors.person_or_org.family_name", + "metadata.contributors.person_or_org.given_name", + "metadata.creators.affiliations.name", + "metadata.creators.person_or_org.name", + "metadata.creators.person_or_org.family_name", + "metadata.creators.person_or_org.given_name", + "metadata.description", + "metadata.formats", + "metadata.funding.award.identifiers.identifier", + "metadata.funding.award.acronym.text", + "metadata.funding.award.number", + "metadata.funding.funder.name", + "metadata.identifiers.identifier", + "metadata.locations.features.place", + "metadata.locations.features.description", + "metadata.publication_date", + "metadata.publisher", + "metadata.subjects.subject", + "metadata.version" + ] } } diff --git a/invenio_rdm_records/records/mappings/os-v2/rdmrecords/records/record-v7.0.0.json b/invenio_rdm_records/records/mappings/os-v2/rdmrecords/records/record-v7.0.0.json new file mode 100644 index 000000000..de3b0a3de --- /dev/null +++ b/invenio_rdm_records/records/mappings/os-v2/rdmrecords/records/record-v7.0.0.json @@ -0,0 +1,1615 @@ +{ + "settings": { + "index.query.default_field": [ + "id", + "metadata.title", + "metadata.title.original", + "metadata.contact", + "metadata.contributors.affiliations.name", + "metadata.contributors.person_or_org.name", + "metadata.contributors.person_or_org.family_name", + "metadata.contributors.person_or_org.given_name", + "metadata.creators.affiliations.name", + "metadata.creators.person_or_org.name", + "metadata.creators.person_or_org.family_name", + "metadata.creators.person_or_org.given_name", + "metadata.description", + "metadata.formats", + "metadata.funding.award.identifiers.identifier", + "metadata.funding.award.acronym.text", + "metadata.funding.award.number", + "metadata.funding.award.subjects", + "metadata.funding.award.organizations", + "metadata.funding.funder.name", + "metadata.identifiers.identifier", + "metadata.locations.features.place", + "metadata.locations.features.description", + "metadata.publication_date", + "metadata.publisher", + "metadata.subjects.subject", + "metadata.version", + "metadata.dates.description", + "metadata.additional_descriptions.description", + "metadata.references.reference", + "metadata.additional_titles.title" + ], + "analysis": { + "char_filter": { + "strip_special_chars": { + "type": "pattern_replace", + "pattern": "[\\p{Punct}\\p{S}]", + "replacement": "" + } + }, + "analyzer": { + "accent_analyzer": { + "tokenizer": "standard", + "type": "custom", + "char_filter": [ + "strip_special_chars" + ], + "filter": [ + "lowercase", + "asciifolding" + ] + } + } + } + }, + "mappings": { + "dynamic_templates": [ + { + "pids": { + "path_match": "pids.*", + "match_mapping_type": "object", + "mapping": { + "type": "object", + "properties": { + "identifier": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "provider": { + "type": "keyword" + }, + "client": { + "type": "keyword" + } + } + } + } + }, + { + "parent_pids": { + "path_match": "parent.pids.*", + "match_mapping_type": "object", + "mapping": { + "type": "object", + "properties": { + "identifier": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "provider": { + "type": "keyword" + }, + "client": { + "type": "keyword" + } + } + } + } + }, + { + "i18n_title": { + "path_match": "*.title.*", + "unmatch": "(metadata.title)|(metadata.additional_titles.title)", + "match_mapping_type": "object", + "mapping": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + } + } + } + ], + "dynamic": "strict", + "date_detection": false, + "numeric_detection": false, + "properties": { + "$schema": { + "type": "keyword", + "index": false + }, + "uuid": { + "type": "keyword", + "index": false + }, + "id": { + "type": "keyword" + }, + "pid": { + "properties": { + "obj_type": { + "type": "keyword", + "index": false + }, + "pid_type": { + "type": "keyword", + "index": false + }, + "pk": { + "type": "long", + "index": false + }, + "status": { + "type": "keyword", + "index": false + } + } + }, + "access": { + "properties": { + "record": { + "type": "keyword" + }, + "files": { + "type": "keyword" + }, + "embargo": { + "properties": { + "active": { + "type": "boolean" + }, + "until": { + "type": "date" + }, + "reason": { + "type": "text" + } + } + }, + "status": { + "type": "keyword" + } + } + }, + "custom_fields": { + "type": "object", + "dynamic": "true" + }, + "parent": { + "properties": { + "$schema": { + "type": "keyword", + "index": false + }, + "uuid": { + "type": "keyword", + "index": false + }, + "id": { + "type": "keyword" + }, + "pid": { + "properties": { + "obj_type": { + "type": "keyword", + "index": false + }, + "pid_type": { + "type": "keyword", + "index": false + }, + "pk": { + "type": "long", + "index": false + }, + "status": { + "type": "keyword", + "index": false + } + } + }, + "pids": { + "type": "object", + "dynamic": "true" + }, + "access": { + "properties": { + "owned_by": { + "properties": { + "user": { + "type": "keyword" + } + } + }, + "grants": { + "properties": { + "subject": { + "properties": { + "type": { + "type": "keyword" + }, + "id": { + "type": "keyword" + } + } + }, + "permission": { + "type": "keyword" + }, + "origin": { + "type": "keyword" + } + } + }, + "grant_tokens": { + "type": "keyword" + }, + "links": { + "properties": { + "id": { + "type": "keyword" + } + } + }, + "settings": { + "properties": { + "allow_user_requests": { + "type": "boolean" + }, + "allow_guest_requests": { + "type": "boolean" + }, + "accept_conditions_text": { + "type": "text" + }, + "secret_link_expiration": { + "type": "integer" + } + } + } + } + }, + "is_verified": { + "type": "boolean" + }, + "communities": { + "properties": { + "ids": { + "type": "keyword" + }, + "default": { + "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + }, + "parent": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "@v": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + } + } + } + } + } + } + }, + "permission_flags": { + "type": "object", + "dynamic": "true" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + } + } + }, + "pids": { + "type": "object", + "dynamic": "true" + }, + "has_draft": { + "type": "boolean" + }, + "metadata": { + "properties": { + "_default_preview": { + "type": "object", + "enabled": false + }, + "contact": { + "type": "keyword" + }, + "contributors": { + "properties": { + "affiliations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + }, + "person_or_org": { + "properties": { + "family_name": { + "type": "text" + }, + "given_name": { + "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "name": { + "type": "text" + }, + "type": { + "type": "keyword" + } + } + }, + "role": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "creators": { + "properties": { + "affiliations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + }, + "person_or_org": { + "properties": { + "family_name": { + "type": "text" + }, + "given_name": { + "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "name": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer" + }, + "type": { + "type": "keyword" + } + } + }, + "role": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "dates": { + "properties": { + "description": { + "type": "text" + }, + "date": { + "type": "keyword" + }, + "date_range": { + "type": "date_range" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "description": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer" + }, + "additional_descriptions": { + "properties": { + "description": { + "type": "text" + }, + "lang": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "formats": { + "type": "keyword" + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "program": { + "type": "keyword" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "text" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + } + } + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "text" + }, + "scheme": { + "type": "keyword" + } + } + }, + "languages": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "locations": { + "properties": { + "features": { + "properties": { + "centroid": { + "type": "geo_point" + }, + "geometry": { + "type": "geo_shape", + "doc_values": false + }, + "place": { + "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "description": { + "type": "text" + } + } + } + } + }, + "publication_date": { + "type": "keyword" + }, + "publication_date_range": { + "type": "date_range" + }, + "publisher": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + } + } + }, + "references": { + "properties": { + "identifier": { + "type": "keyword" + }, + "reference": { + "type": "text" + }, + "scheme": { + "type": "keyword" + } + } + }, + "related_identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "relation_type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "resource_type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "scheme": { + "type": "keyword" + } + } + }, + "resource_type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "props": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "subtype": { + "type": "keyword" + } + } + } + } + }, + "rights": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "description": { + "type": "object", + "dynamic": "true" + }, + "props": { + "type": "object", + "properties": { + "url": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "link": { + "type": "keyword", + "index": false + }, + "icon": { + "type": "keyword", + "index": false + } + } + }, + "sizes": { + "type": "keyword", + "ignore_above": 256 + }, + "subjects": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "combined_subjects": { + "type": "keyword" + }, + "title": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer", + "fields": { + "keyword": { + "type": "keyword", + "ignore_above": 256 + }, + "original": { + "type": "text" + } + } + }, + "additional_titles": { + "properties": { + "lang": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "title": { + "type": "text", + "analyzer": "accent_analyzer", + "search_analyzer": "accent_analyzer", + "fields": { + "original": { + "type": "text" + } + } + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + } + } + }, + "version": { + "type": "keyword" + } + } + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "is_published": { + "type": "boolean" + }, + "is_deleted": { + "type": "boolean" + }, + "deletion_status": { + "type": "keyword" + }, + "version_id": { + "type": "long" + }, + "versions": { + "properties": { + "index": { + "type": "integer" + }, + "is_latest": { + "type": "boolean" + }, + "is_latest_draft": { + "type": "boolean" + }, + "latest_id": { + "type": "keyword" + }, + "latest_index": { + "type": "integer" + }, + "next_draft_id": { + "type": "keyword" + } + } + }, + "files": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "default_preview": { + "type": "keyword" + }, + "count": { + "type": "integer" + }, + "totalbytes": { + "type": "long" + }, + "mimetypes": { + "type": "keyword" + }, + "types": { + "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "enabled": false + }, + "version_id": { + "enabled": false + }, + "metadata": { + "type": "object", + "dynamic": "true" + }, + "checksum": { + "type": "keyword" + }, + "key": { + "type": "keyword" + }, + "mimetype": { + "type": "keyword" + }, + "size": { + "type": "long" + }, + "ext": { + "type": "keyword" + }, + "object_version_id": { + "enabled": false + }, + "file_id": { + "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + } + } + } + } + }, + "media_files": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "default_preview": { + "type": "keyword" + }, + "count": { + "type": "integer" + }, + "totalbytes": { + "type": "long" + }, + "mimetypes": { + "type": "keyword" + }, + "types": { + "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "enabled": false + }, + "version_id": { + "enabled": false + }, + "metadata": { + "type": "object", + "dynamic": "true" + }, + "checksum": { + "type": "keyword" + }, + "key": { + "type": "keyword" + }, + "mimetype": { + "type": "keyword" + }, + "size": { + "type": "long" + }, + "ext": { + "type": "keyword" + }, + "object_version_id": { + "enabled": false + }, + "file_id": { + "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + }, + "processor": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "source_file_id": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + } + } + } + } + }, + "stats": { + "properties": { + "this_version": { + "properties": { + "views": { + "type": "integer" + }, + "unique_views": { + "type": "integer" + }, + "downloads": { + "type": "integer" + }, + "unique_downloads": { + "type": "integer" + }, + "data_volume": { + "type": "double" + } + } + }, + "all_versions": { + "properties": { + "views": { + "type": "integer" + }, + "unique_views": { + "type": "integer" + }, + "downloads": { + "type": "integer" + }, + "unique_downloads": { + "type": "integer" + }, + "data_volume": { + "type": "double" + } + } + } + } + }, + "tombstone": { + "properties": { + "removal_reason": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + } + } + }, + "note": { + "type": "text" + }, + "removed_by": { + "properties": { + "user": { + "type": "keyword" + } + } + }, + "removal_date": { + "type": "date" + }, + "citation_text": { + "type": "text" + }, + "is_visible": { + "type": "boolean" + } + } + }, + "internal_notes": { + "type": "object", + "properties": { + "id": { + "type": "keyword" + }, + "note": { + "type": "text" + }, + "timestamp": { + "type": "date" + }, + "added_by": { + "type": "object", + "properties": { + "user": { + "type": "keyword" + } + } + } + } + } + } + } +} diff --git a/invenio_rdm_records/records/mappings/v7/rdmrecords/drafts/draft-v6.0.0.json b/invenio_rdm_records/records/mappings/v7/rdmrecords/drafts/draft-v6.0.0.json index 08aef1c4e..1a901cbfe 100644 --- a/invenio_rdm_records/records/mappings/v7/rdmrecords/drafts/draft-v6.0.0.json +++ b/invenio_rdm_records/records/mappings/v7/rdmrecords/drafts/draft-v6.0.0.json @@ -133,7 +133,7 @@ }, "custom_fields": { "type": "object", - "dynamic": true + "dynamic": "true" }, "parent": { "properties": { @@ -170,7 +170,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "access": { "properties": { @@ -239,6 +239,387 @@ }, "default": { "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + }, + "parent": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + } + } + } + } } } }, @@ -266,19 +647,19 @@ }, "payload": { "type": "object", - "dynamic": true + "dynamic": "true" }, "topic": { "type": "object", - "dynamic": true + "dynamic": "true" }, "receiver": { "type": "object", - "dynamic": true + "dynamic": "true" }, "created_by": { "type": "object", - "dynamic": true + "dynamic": "true" }, "@v": { "type": "keyword" @@ -287,7 +668,7 @@ }, "permission_flags": { "type": "object", - "dynamic": true + "dynamic": "true" }, "created": { "type": "date" @@ -302,7 +683,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "has_draft": { "type": "boolean" @@ -342,6 +723,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -382,7 +773,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -401,6 +792,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -441,7 +842,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -469,7 +870,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -494,7 +895,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -509,7 +910,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -531,10 +932,26 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "number": { - "type": "text" + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "program": { + "type": "keyword" }, "identifiers": { "properties": { @@ -545,6 +962,39 @@ "type": "keyword" } } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } } } }, @@ -559,6 +1009,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } } @@ -585,7 +1045,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -663,7 +1123,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -678,7 +1138,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -698,7 +1158,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -724,11 +1184,11 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "description": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -774,9 +1234,16 @@ }, "scheme": { "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" } } }, + "combined_subjects": { + "type": "keyword" + }, "title": { "type": "text", "fields": { @@ -799,7 +1266,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -817,7 +1284,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -906,7 +1373,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -928,6 +1395,14 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } } } } @@ -965,7 +1440,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -987,6 +1462,32 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + }, + "processor": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "source_file_id": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } } } } @@ -1046,7 +1547,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, diff --git a/invenio_rdm_records/records/mappings/v7/rdmrecords/records/record-v6.0.0.json b/invenio_rdm_records/records/mappings/v7/rdmrecords/records/record-v6.0.0.json index 476a8416b..941fca4e4 100644 --- a/invenio_rdm_records/records/mappings/v7/rdmrecords/records/record-v6.0.0.json +++ b/invenio_rdm_records/records/mappings/v7/rdmrecords/records/record-v6.0.0.json @@ -133,7 +133,7 @@ }, "custom_fields": { "type": "object", - "dynamic": true + "dynamic": "true" }, "parent": { "properties": { @@ -170,7 +170,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "access": { "properties": { @@ -239,12 +239,393 @@ }, "default": { "type": "keyword" + }, + "entries": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + }, + "parent": { + "type": "object", + "properties": { + "uuid": { + "type": "keyword" + }, + "created": { + "type": "date" + }, + "updated": { + "type": "date" + }, + "version_id": { + "type": "long" + }, + "id": { + "type": "keyword" + }, + "is_verified": { + "type": "boolean" + }, + "@v": { + "type": "keyword" + }, + "slug": { + "type": "keyword" + }, + "children": { + "properties": { + "allow": { + "type": "boolean" + } + } + }, + "metadata": { + "type": "object", + "properties": { + "title": { + "type": "text" + }, + "type": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true", + "properties": { + "en": { + "type": "text" + } + } + } + } + }, + "website": { + "type": "keyword" + }, + "organizations": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + }, + "funding": { + "properties": { + "award": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "title": { + "type": "object", + "dynamic": "true" + }, + "number": { + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "program": { + "type": "keyword" + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } + } + } + }, + "funder": { + "type": "object", + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "name": { + "type": "text" + } + } + } + } + } + } + }, + "theme": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean" + }, + "brand": { + "type": "keyword" + }, + "style": { + "type": "object", + "enabled": false + } + } + } + } + } + } } } }, "permission_flags": { "type": "object", - "dynamic": true + "dynamic": "true" }, "created": { "type": "date" @@ -259,7 +640,7 @@ }, "pids": { "type": "object", - "dynamic": true + "dynamic": "true" }, "has_draft": { "type": "boolean" @@ -299,6 +680,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -339,7 +730,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -358,6 +749,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } }, @@ -398,7 +799,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -426,7 +827,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -451,7 +852,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -466,7 +867,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -488,10 +889,26 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "number": { - "type": "text" + "type": "text", + "fields": { + "keyword": { + "type": "keyword" + } + } + }, + "acronym": { + "type": "keyword", + "fields": { + "text": { + "type": "text" + } + } + }, + "program": { + "type": "keyword" }, "identifiers": { "properties": { @@ -502,6 +919,39 @@ "type": "keyword" } } + }, + "subjects": { + "properties": { + "@v": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "subject": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } + }, + "organizations": { + "properties": { + "scheme": { + "type": "keyword" + }, + "id": { + "type": "keyword" + }, + "organization": { + "type": "keyword" + } + } } } }, @@ -516,6 +966,16 @@ }, "name": { "type": "text" + }, + "identifiers": { + "properties": { + "identifier": { + "type": "keyword" + }, + "scheme": { + "type": "keyword" + } + } } } } @@ -542,7 +1002,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -620,7 +1080,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -635,7 +1095,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -655,7 +1115,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -681,11 +1141,11 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" }, "description": { "type": "object", - "dynamic": true + "dynamic": "true" }, "props": { "type": "object", @@ -731,9 +1191,16 @@ }, "scheme": { "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" } } }, + "combined_subjects": { + "type": "keyword" + }, "title": { "type": "text", "fields": { @@ -756,7 +1223,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -774,7 +1241,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } } @@ -857,7 +1324,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -879,6 +1346,14 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } } } } @@ -916,7 +1391,7 @@ }, "metadata": { "type": "object", - "dynamic": true + "dynamic": "true" }, "checksum": { "type": "keyword" @@ -938,6 +1413,32 @@ }, "file_id": { "enabled": false + }, + "access": { + "type": "object", + "properties": { + "hidden": { + "type": "boolean" + } + } + }, + "processor": { + "type": "object", + "properties": { + "type": { + "type": "keyword" + }, + "status": { + "type": "keyword" + }, + "source_file_id": { + "type": "keyword" + }, + "props": { + "type": "object", + "dynamic": "true" + } + } } } } @@ -997,7 +1498,7 @@ }, "title": { "type": "object", - "dynamic": true + "dynamic": "true" } } }, @@ -1023,5 +1524,35 @@ } } } + }, + "settings": { + "index.query.default_field": [ + "id", + "metadata.title", + "metadata.contact", + "metadata.contributors.affiliations.name", + "metadata.contributors.person_or_org.name", + "metadata.contributors.person_or_org.family_name", + "metadata.contributors.person_or_org.given_name", + "metadata.creators.affiliations.name", + "metadata.creators.person_or_org.name", + "metadata.creators.person_or_org.family_name", + "metadata.creators.person_or_org.given_name", + "metadata.description", + "metadata.formats", + "metadata.funding.award.identifiers.identifier", + "metadata.funding.award.acronym.text", + "metadata.funding.award.number", + "metadata.funding.award.subjects", + "metadata.funding.award.organizations", + "metadata.funding.funder.name", + "metadata.identifiers.identifier", + "metadata.locations.features.place", + "metadata.locations.features.description", + "metadata.publication_date", + "metadata.publisher", + "metadata.subjects.subject", + "metadata.version" + ] } } diff --git a/invenio_rdm_records/records/models.py b/invenio_rdm_records/records/models.py index ebfd8eff7..a72be1666 100644 --- a/invenio_rdm_records/records/models.py +++ b/invenio_rdm_records/records/models.py @@ -1,12 +1,15 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020 CERN. +# Copyright (C) 2020-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Record and draft database models.""" +import uuid + +from invenio_accounts.models import User from invenio_communities.records.records.models import CommunityRelationMixin from invenio_db import db from invenio_drafts_resources.records import ( @@ -17,6 +20,8 @@ from invenio_files_rest.models import Bucket from invenio_records.models import RecordMetadataBase from invenio_records_resources.records import FileRecordModelMixin +from sqlalchemy.ext.declarative import declared_attr +from sqlalchemy_utils import Timestamp from sqlalchemy_utils.types import ChoiceType, UUIDType from .systemfields.deletion_status import RecordDeletionStatusEnum @@ -50,10 +55,10 @@ class RDMRecordMetadata(db.Model, RecordMetadataBase, ParentRecordMixin): # Enable versioning __versioned__ = {} - bucket_id = db.Column(UUIDType, db.ForeignKey(Bucket.id)) + bucket_id = db.Column(UUIDType, db.ForeignKey(Bucket.id), index=True) bucket = db.relationship(Bucket, foreign_keys=[bucket_id]) - media_bucket_id = db.Column(UUIDType, db.ForeignKey(Bucket.id)) + media_bucket_id = db.Column(UUIDType, db.ForeignKey(Bucket.id), index=True) media_bucket = db.relationship(Bucket, foreign_keys=[media_bucket_id]) # The deletion status is stored in the model so that we can use it in SQL queries @@ -95,10 +100,10 @@ class RDMDraftMetadata(db.Model, DraftMetadataBase, ParentRecordMixin): __tablename__ = "rdm_drafts_metadata" __parent_record_model__ = RDMParentMetadata - bucket_id = db.Column(UUIDType, db.ForeignKey(Bucket.id)) + bucket_id = db.Column(UUIDType, db.ForeignKey(Bucket.id), index=True) bucket = db.relationship(Bucket, foreign_keys=[bucket_id]) - media_bucket_id = db.Column(UUIDType, db.ForeignKey(Bucket.id)) + media_bucket_id = db.Column(UUIDType, db.ForeignKey(Bucket.id), index=True) media_bucket = db.relationship(Bucket, foreign_keys=[media_bucket_id]) @@ -129,3 +134,94 @@ class RDMVersionsState(db.Model, ParentRecordStateMixin): __parent_record_model__ = RDMParentMetadata __record_model__ = RDMRecordMetadata __draft_model__ = RDMDraftMetadata + + +### RDM record and user quota table + + +def default_max_file_size(context): + """Default max_file_size column value.""" + return context.get_current_parameters()["quota_size"] + + +class RDMRecordQuota(db.Model, Timestamp): + """Store for the files bucket quota for all versions of a record.""" + + __tablename__ = "rdm_records_quota" + + id = db.Column(UUIDType, primary_key=True, default=uuid.uuid4) + """Secret link ID.""" + + @declared_attr + def parent_id(cls): + """Parent record identifier.""" + return db.Column( + UUIDType, + # 1) If the parent record is deleted, we automatically delete + # the parent record quota as well via database-level on delete trigger. + db.ForeignKey( + RDMVersionsState.__parent_record_model__.id, + ondelete="CASCADE", + ), + unique=True, + ) + + """Parent record id.""" + + user_id = db.Column(db.Integer, unique=True) + """User associated with the parent record via parent.access.owned_by.""" + + quota_size = db.Column( + db.BigInteger, + nullable=False, + ) + """Total quota size of the record's bucket.""" + + # set to max total size if not there + max_file_size = db.Column( + db.BigInteger, nullable=False, default=default_max_file_size + ) + """Max size of a single file in the record's bucket.""" + + notes = db.Column(db.Text, nullable=False, default="") + """Notes related to setting the quota.""" + + +class RDMUserQuota(db.Model, Timestamp): + """Store for the files bucket quota for a user.""" + + __tablename__ = "rdm_users_quota" + + id = db.Column(UUIDType, primary_key=True, default=uuid.uuid4) + """Secret link ID.""" + + @declared_attr + def user_id(cls): + """Parent record identifier.""" + return db.Column( + db.Integer, + # 1) If the parent record is deleted, we automatically delete + # the parent record quota as well via database-level on delete trigger. + db.ForeignKey( + User.id, + ondelete="CASCADE", + ), + unique=True, + ) + + """User id.""" + + quota_size = db.Column( + db.BigInteger, + nullable=False, + ) + """Total quota size of the record's bucket.""" + + # set to max total size if not there + max_file_size = db.Column( + db.BigInteger, nullable=False, default=default_max_file_size + ) + """Max size of a single file in the record's bucket.""" + + notes = db.Column(db.Text, nullable=False, default="") + """Notes related to setting the quota.""" diff --git a/invenio_rdm_records/records/processors/base.py b/invenio_rdm_records/records/processors/base.py new file mode 100644 index 000000000..c03d97b9c --- /dev/null +++ b/invenio_rdm_records/records/processors/base.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Record files processor base.""" + + +class RecordFilesProcessor: + """Base class for record files processors.""" + + def _can_process(self, draft, record): + """Determine if this processor can process a given record file.""" + return False + + def _process(self, draft, record, uow=None): + """Process a record file.""" + pass + + def __call__(self, draft, record, uow=None): + """Call method.""" + if self._can_process(draft, record): + self._process(draft, record, uow=uow) diff --git a/invenio_rdm_records/records/processors/tiles.py b/invenio_rdm_records/records/processors/tiles.py new file mode 100644 index 000000000..c5637fa02 --- /dev/null +++ b/invenio_rdm_records/records/processors/tiles.py @@ -0,0 +1,183 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Tiles processor.""" + +from contextlib import contextmanager + +from flask import current_app +from invenio_db import db +from invenio_records_resources.services.uow import TaskOp + +from invenio_rdm_records.records.processors.base import RecordFilesProcessor +from invenio_rdm_records.services.iiif.storage import tiles_storage +from invenio_rdm_records.services.iiif.tasks import cleanup_tiles_file, generate_tiles + + +class TilesProcessor(RecordFilesProcessor): + """Processor to generate pyramidal tifs.""" + + @property + def valid_exts(self) -> list: + """Return valid extensions for tiles generation from config/default.""" + return current_app.config.get( + "IIIF_TILES_VALID_EXTENSIONS", ["tiff", "pdf", "jpeg", "png"] + ) + + def _can_process(self, draft, record) -> bool: + """Checks to determine if to process the record.""" + for file_type in ["media_files", "files"]: + files = getattr(record, file_type) + if ( + # Check if tiles generation is enabled... + current_app.config.get("IIIF_TILES_GENERATION_ENABLED", False) + and ( + # ...has convertible files (i.e. images) + bool(set(self.valid_exts).intersection(files.exts)) + # ...or has already converted files + or ( + record.media_files.enabled and "ptif" in record.media_files.exts + ) + ) + ): + return True + return False + + def _can_process_file(self, file_record, draft, record) -> bool: + """Checks to determine if to process the record.""" + return file_record.file.ext in self.valid_exts + + @contextmanager + def unlocked_bucket(self, files): + """Context manager to auto lock files.""" + files.unlock() + yield + files.lock() + + def _cleanup(self, record, uow=None): + """Cleans up unused media files and ptifs.""" + media_files = list(record.media_files.entries.keys()) + for fname in media_files: + if fname.endswith(".ptif") and ( + record.access.protection.files == "restricted" + or ( + record.files.get(fname[:-5]) is None + and record.media_files.get(fname[:-5]) is None + ) + ): + deletion_status = tiles_storage.delete(record, fname[: -len(".ptif")]) + if deletion_status: + mf = record.media_files.get(fname) + fi = mf.file.file_model + record.media_files.delete( + fname, softdelete_obj=False, remove_rf=True + ) + fi.delete() + else: + # Send a task to make sure we retry in case of a transient error + uow.register( + TaskOp( + cleanup_tiles_file, + record_id=record["id"], + tile_file_key=fname, + ) + ) + + def _process_file(self, file_record, draft, record, file_type, uow=None): + """Process a file record to kickoff pyramidal tiff generation.""" + if not self._can_process_file(file_record, draft, record): + return + + status_file = record.media_files.get(f"{file_record.key}.ptif") + if status_file: + has_file_changed = status_file.processor["source_file_id"] != str( + file_record.file.id + ) + if status_file.processor["status"] == "finished" and not has_file_changed: + return + + try: + with db.session.begin_nested(): + # Check and create a media file if it doesn't exist + if status_file is None: + status_file = record.media_files.create( + f"{file_record.key}.ptif", + obj={ + "file": { + "uri": str( + tiles_storage._get_file_path( + record, file_record.key + ) + ), + "storage_class": "L", + "size": None, + "checksum": None, + } + }, + ) + + status_file.processor = { + "type": "image-tiles", + "status": "init", + "source_file_id": str(file_record.file.id), + "props": {}, + } + status_file.access.hidden = True + status_file.commit() + record.media_files.commit(f"{file_record.key}.ptif") + uow.register( + TaskOp( + generate_tiles, + record_id=record["id"], + file_key=file_record.key, + file_type=file_type, + ) + ) + except Exception: + # Nested transaction for current file is rolled back + current_app.logger.exception( + "Failed to initialize tiles generation.", + extra={ + "record_id": record["id"], + "file_key": file_record.key, + }, + ) + + def _process(self, draft, record, uow): + """Process the whole record to generate pyramidal tifs for valid files.""" + if record.access.protection.files != "public" and not ( + record.media_files.enabled and "ptif" in record.media_files.exts + ): + # There is no cleanup/generation to do + return + + # Enable media files always since we need it for state management + record.media_files.enabled = True + if not record.media_files.bucket: + record.media_files.create_bucket() + + # Unlock the media files bucket, we need to add/modify files + with self.unlocked_bucket(record.media_files): + # Cleanup unused media files i.e. for deleted/updated files + self._cleanup(record) + + if record.access.protection.files == "restricted": + if not len(record.media_files.entries): + record.media_files.enabled = False + return + + # Use a copy of the files lists, since we might be modifying them + record_files = list(record.files.values()) + record_media_files = list(record.media_files.values()) + + for file_record in record_files: + self._process_file(file_record, draft, record, "files", uow) + for file_record in record_media_files: + self._process_file(file_record, draft, record, "media_files", uow) + + if not len(record.media_files.entries): + record.media_files.enabled = False diff --git a/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.0.0.json b/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.0.0.json index 55b3f498f..f386029cd 100644 --- a/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/os-v1/aggr-file-download-v1.0.0.json @@ -2,7 +2,7 @@ "index_patterns": ["__SEARCH_INDEX_PREFIX__stats-file-download-*"], "settings": { "index": { - "refresh_interval": "1m" + "refresh_interval": "5s" } }, "mappings": { @@ -60,6 +60,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.0.0.json b/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.0.0.json index 55b3f498f..f386029cd 100644 --- a/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/os-v2/aggr-file-download-v1.0.0.json @@ -2,7 +2,7 @@ "index_patterns": ["__SEARCH_INDEX_PREFIX__stats-file-download-*"], "settings": { "index": { - "refresh_interval": "1m" + "refresh_interval": "5s" } }, "mappings": { @@ -60,6 +60,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/v7/aggr-file-download-v1.0.0.json b/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/v7/aggr-file-download-v1.0.0.json index 55b3f498f..f386029cd 100644 --- a/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/v7/aggr-file-download-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/aggregations/aggr_file_download/v7/aggr-file-download-v1.0.0.json @@ -2,7 +2,7 @@ "index_patterns": ["__SEARCH_INDEX_PREFIX__stats-file-download-*"], "settings": { "index": { - "refresh_interval": "1m" + "refresh_interval": "5s" } }, "mappings": { @@ -60,6 +60,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/os-v1/aggr-record-view-v1.0.0.json b/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/os-v1/aggr-record-view-v1.0.0.json index 8d0e7ba68..a95f812fa 100644 --- a/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/os-v1/aggr-record-view-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/os-v1/aggr-record-view-v1.0.0.json @@ -2,7 +2,7 @@ "index_patterns": ["__SEARCH_INDEX_PREFIX__stats-record-view-*"], "settings": { "index": { - "refresh_interval": "1m" + "refresh_interval": "5s" } }, "mappings": { @@ -37,6 +37,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/os-v2/aggr-record-view-v1.0.0.json b/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/os-v2/aggr-record-view-v1.0.0.json index 8d0e7ba68..a95f812fa 100644 --- a/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/os-v2/aggr-record-view-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/os-v2/aggr-record-view-v1.0.0.json @@ -2,7 +2,7 @@ "index_patterns": ["__SEARCH_INDEX_PREFIX__stats-record-view-*"], "settings": { "index": { - "refresh_interval": "1m" + "refresh_interval": "5s" } }, "mappings": { @@ -37,6 +37,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/v7/aggr-record-view-v1.0.0.json b/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/v7/aggr-record-view-v1.0.0.json index 8d0e7ba68..a95f812fa 100644 --- a/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/v7/aggr-record-view-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/aggregations/aggr_record_view/v7/aggr-record-view-v1.0.0.json @@ -2,7 +2,7 @@ "index_patterns": ["__SEARCH_INDEX_PREFIX__stats-record-view-*"], "settings": { "index": { - "refresh_interval": "1m" + "refresh_interval": "5s" } }, "mappings": { @@ -37,6 +37,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/events/file_download/os-v1/file-download-v1.0.0.json b/invenio_rdm_records/records/stats/templates/events/file_download/os-v1/file-download-v1.0.0.json index e2cf4f4ee..7fbadd06b 100644 --- a/invenio_rdm_records/records/stats/templates/events/file_download/os-v1/file-download-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/events/file_download/os-v1/file-download-v1.0.0.json @@ -84,6 +84,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/events/file_download/os-v2/file-download-v1.0.0.json b/invenio_rdm_records/records/stats/templates/events/file_download/os-v2/file-download-v1.0.0.json index e2cf4f4ee..7fbadd06b 100644 --- a/invenio_rdm_records/records/stats/templates/events/file_download/os-v2/file-download-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/events/file_download/os-v2/file-download-v1.0.0.json @@ -84,6 +84,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/events/file_download/v7/file-download-v1.0.0.json b/invenio_rdm_records/records/stats/templates/events/file_download/v7/file-download-v1.0.0.json index e2cf4f4ee..7fbadd06b 100644 --- a/invenio_rdm_records/records/stats/templates/events/file_download/v7/file-download-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/events/file_download/v7/file-download-v1.0.0.json @@ -84,6 +84,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/events/record_view/os-v1/record-view-v1.0.0.json b/invenio_rdm_records/records/stats/templates/events/record_view/os-v1/record-view-v1.0.0.json index 47d7e4fba..c244a0f89 100644 --- a/invenio_rdm_records/records/stats/templates/events/record_view/os-v1/record-view-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/events/record_view/os-v1/record-view-v1.0.0.json @@ -23,6 +23,9 @@ "visitor_id": { "type": "keyword" }, + "is_machine": { + "type": "boolean" + }, "is_robot": { "type": "boolean" }, @@ -61,6 +64,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/events/record_view/os-v2/record-view-v1.0.0.json b/invenio_rdm_records/records/stats/templates/events/record_view/os-v2/record-view-v1.0.0.json index 47d7e4fba..c244a0f89 100644 --- a/invenio_rdm_records/records/stats/templates/events/record_view/os-v2/record-view-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/events/record_view/os-v2/record-view-v1.0.0.json @@ -23,6 +23,9 @@ "visitor_id": { "type": "keyword" }, + "is_machine": { + "type": "boolean" + }, "is_robot": { "type": "boolean" }, @@ -61,6 +64,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/stats/templates/events/record_view/v7/record-view-v1.0.0.json b/invenio_rdm_records/records/stats/templates/events/record_view/v7/record-view-v1.0.0.json index 47d7e4fba..c244a0f89 100644 --- a/invenio_rdm_records/records/stats/templates/events/record_view/v7/record-view-v1.0.0.json +++ b/invenio_rdm_records/records/stats/templates/events/record_view/v7/record-view-v1.0.0.json @@ -23,6 +23,9 @@ "visitor_id": { "type": "keyword" }, + "is_machine": { + "type": "boolean" + }, "is_robot": { "type": "boolean" }, @@ -61,6 +64,9 @@ }, "via_api": { "type": "boolean" + }, + "updated_timestamp": { + "type": "date" } } }, diff --git a/invenio_rdm_records/records/systemfields/access/field/record.py b/invenio_rdm_records/records/systemfields/access/field/record.py index 451e16556..5e3bc06be 100644 --- a/invenio_rdm_records/records/systemfields/access/field/record.py +++ b/invenio_rdm_records/records/systemfields/access/field/record.py @@ -218,11 +218,11 @@ def pre_commit(self, record): record["access"] = obj.dump() def post_dump(self, record, data, dumper=None): - """Called before a record is dumped.""" + """Called after a record is dumped.""" if data.get("access") and isinstance(data.get("access"), dict): data["access"]["status"] = record.access.status.value def pre_load(self, data, loader=None): - """Called before a record is dumped.""" + """Called before a record is loaded.""" if data.get("access") and isinstance(data.get("access"), dict): data["access"].pop("status", None) diff --git a/invenio_rdm_records/records/systemfields/access/grants.py b/invenio_rdm_records/records/systemfields/access/grants.py index ebcc3cde2..56c093664 100644 --- a/invenio_rdm_records/records/systemfields/access/grants.py +++ b/invenio_rdm_records/records/systemfields/access/grants.py @@ -15,6 +15,7 @@ from invenio_access.proxies import current_access from invenio_accounts.models import Role, User from invenio_accounts.proxies import current_datastore +from invenio_db import db class Grant: @@ -93,7 +94,8 @@ def resolve_subject(self): subject = None if type_ == "user": - subject = current_datastore.get_user(self._subject_id) + with db.session.no_autoflush: + subject = current_datastore.get_user(self._subject_id) elif type_ == "role": subject = current_datastore.find_role(self._subject_id) diff --git a/invenio_rdm_records/records/systemfields/access/owners.py b/invenio_rdm_records/records/systemfields/access/owners.py index 2e7b5269b..0754984c8 100644 --- a/invenio_rdm_records/records/systemfields/access/owners.py +++ b/invenio_rdm_records/records/systemfields/access/owners.py @@ -2,6 +2,7 @@ # # This file is part of Invenio. # Copyright (C) 2021 TU Wien. +# Copyright (C) 2024 Graz University of Technology. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. @@ -9,6 +10,7 @@ """Owners classes for the access system field.""" from invenio_accounts.models import User +from invenio_db import db class Owner: @@ -50,7 +52,7 @@ def resolve(self, raise_exc=False): return None elif self.owner_type == "user": - self._entity = User.query.get(self.owner_id) + self._entity = db.session.get(User, self.owner_id) else: raise ValueError("unknown owner type: {}".format(self.owner_type)) diff --git a/invenio_rdm_records/records/systemfields/deletion_status.py b/invenio_rdm_records/records/systemfields/deletion_status.py index 337eda617..5ef21937f 100644 --- a/invenio_rdm_records/records/systemfields/deletion_status.py +++ b/invenio_rdm_records/records/systemfields/deletion_status.py @@ -109,6 +109,9 @@ def pre_commit(self, record): def pre_dump(self, record, data, **kwargs): """Dump the deletion status information.""" status = RecordDeletionStatus(record.model.deletion_status) + # mitigation of deletion_status.is_deleted missing from the mapping + # currently it is a string + # don't confuse with record.model.is_deleted! data["is_deleted"] = status.is_deleted data["deletion_status"] = status.status @@ -116,5 +119,8 @@ def post_load(self, record, data, **kwargs): """After loading, set the deletion status.""" deletion_status = data.get("deletion_status", None) self.__set__(record, deletion_status) - data.pop("is_deleted", None) - data.pop("deletion_status", None) + # mitigation of deletion_status.is_deleted missing from the mapping + # currently it is a string + # don't confuse with record.model.is_deleted! + record.pop("is_deleted", None) + record.pop("deletion_status", None) diff --git a/invenio_rdm_records/records/systemfields/draft_status.py b/invenio_rdm_records/records/systemfields/draft_status.py index c226b266f..f3b89dd5f 100644 --- a/invenio_rdm_records/records/systemfields/draft_status.py +++ b/invenio_rdm_records/records/systemfields/draft_status.py @@ -25,7 +25,7 @@ class Record(): from invenio_i18n import gettext as _ from invenio_records.systemfields import SystemField -from invenio_rdm_records.services.errors import RDMRecordsException, ReviewStateError +from ...services.errors import RDMRecordsException, ReviewStateError class DraftStatus(SystemField): diff --git a/invenio_rdm_records/records/systemfields/is_verified.py b/invenio_rdm_records/records/systemfields/is_verified.py index 432ab573b..de6bf4bb2 100644 --- a/invenio_rdm_records/records/systemfields/is_verified.py +++ b/invenio_rdm_records/records/systemfields/is_verified.py @@ -10,7 +10,7 @@ class IsVerifiedField(CalculatedField): - """Systemfield for calculating whether or not the request is expired.""" + """System field for calculating whether the record is verified.""" def __init__(self, key=None): """Constructor.""" diff --git a/invenio_rdm_records/requests/access/models.py b/invenio_rdm_records/requests/access/models.py index 362864743..7078c0a1d 100644 --- a/invenio_rdm_records/requests/access/models.py +++ b/invenio_rdm_records/requests/access/models.py @@ -56,6 +56,8 @@ class AccessRequestToken(db.Model): record_pid = db.Column(db.String(255), nullable=False) """PID value of the record for which the request will be created.""" + consent_to_share_personal_data = db.Column(db.String(255), nullable=False) + def delete(self): """Delete this secret link.""" db.session.delete(self) @@ -70,6 +72,7 @@ def to_dict(self): "email": self.email, "full_name": self.full_name, "message": self.message, + "consent_to_share_personal_data": self.consent_to_share_personal_data, "record_pid": self.record_pid, } @@ -97,6 +100,7 @@ def create( record_pid, shelf_life=None, expires_at=None, + consent=False, ): """Create a new request access token. @@ -124,6 +128,7 @@ def create( record_pid=record_pid, expires_at=expires_at, token=token_urlsafe(), + consent_to_share_personal_data=consent, ) db.session.add(access_request_token) diff --git a/invenio_rdm_records/requests/access/requests.py b/invenio_rdm_records/requests/access/requests.py index 4271959dd..90e0c11f5 100644 --- a/invenio_rdm_records/requests/access/requests.py +++ b/invenio_rdm_records/requests/access/requests.py @@ -6,44 +6,34 @@ # it under the terms of the MIT License; see LICENSE file for more details. """Access requests for records.""" + from datetime import datetime, timedelta import marshmallow as ma -from flask import current_app, g +from flask import g from invenio_access.permissions import authenticated_user, system_identity +from invenio_drafts_resources.services.records.uow import ParentRecordCommitOp from invenio_i18n import lazy_gettext as _ -from invenio_mail.tasks import send_email -from invenio_records_resources.services.uow import Operation, RecordCommitOp +from invenio_notifications.services.uow import NotificationOp from invenio_requests import current_events_service from invenio_requests.customizations import RequestType, actions from invenio_requests.customizations.event_types import CommentEventType from marshmallow import ValidationError, fields, validates from marshmallow_utils.permissions import FieldPermissionsMixin -from ...proxies import current_rdm_records_service as service - +from invenio_rdm_records.notifications.builders import ( + GuestAccessRequestAcceptNotificationBuilder, + GuestAccessRequestCancelNotificationBuilder, + GuestAccessRequestDeclineNotificationBuilder, + GuestAccessRequestSubmitNotificationBuilder, + GuestAccessRequestSubmittedNotificationBuilder, + UserAccessRequestAcceptNotificationBuilder, + UserAccessRequestCancelNotificationBuilder, + UserAccessRequestDeclineNotificationBuilder, + UserAccessRequestSubmitNotificationBuilder, +) -class EmailOp(Operation): - """A notification operation.""" - - def __init__(self, receiver, subject, html_body, body): - """Initialize operation.""" - self.receiver = receiver - self.subject = subject - self.html_body = html_body - self.body = body - - def on_post_commit(self, uow): - """Start task to send text via email.""" - send_email( - { - "subject": self.subject, - "html_body": self.html_body, - "body": self.body, - "recipients": [self.receiver], - "sender": current_app.config["MAIL_DEFAULT_SENDER"], - } - ) +from ...proxies import current_rdm_records_service as service # @@ -55,6 +45,71 @@ class UserSubmitAction(actions.SubmitAction): def execute(self, identity, uow): """Execute the submit action.""" self.request["title"] = self.request.topic.resolve().metadata["title"] + uow.register( + NotificationOp( + UserAccessRequestSubmitNotificationBuilder.build(request=self.request) + ) + ) + super().execute(identity, uow) + + +class UserCancelAction(actions.CancelAction): + """Cancel action for user access requests.""" + + def execute(self, identity, uow): + """Execute the cancel action.""" + self.request["title"] = self.request.topic.resolve().metadata["title"] + uow.register( + NotificationOp( + UserAccessRequestCancelNotificationBuilder.build( + request=self.request, identity=identity + ) + ) + ) + super().execute(identity, uow) + + +class UserDeclineAction(actions.DeclineAction): + """Decline action for user access requests.""" + + def execute(self, identity, uow): + """Execute the decline action.""" + self.request["title"] = self.request.topic.resolve().metadata["title"] + uow.register( + NotificationOp( + UserAccessRequestDeclineNotificationBuilder.build(request=self.request) + ) + ) + super().execute(identity, uow) + + +class GuestCancelAction(actions.CancelAction): + """Cancel action for guest access requests.""" + + def execute(self, identity, uow): + """Execute the cancel action.""" + record = self.request.topic.resolve() + self.request["title"] = record.metadata["title"] + uow.register( + NotificationOp( + GuestAccessRequestCancelNotificationBuilder.build( + request=self.request, identity=identity + ) + ) + ) + super().execute(identity, uow) + + +class GuestDeclineAction(actions.DeclineAction): + """Decline action for guest access requests.""" + + def execute(self, identity, uow): + """Execute the decline action.""" + uow.register( + NotificationOp( + GuestAccessRequestDeclineNotificationBuilder.build(request=self.request) + ) + ) super().execute(identity, uow) @@ -65,7 +120,18 @@ def execute(self, identity, uow): """Execute the submit action.""" record = self.request.topic.resolve() self.request["title"] = record.metadata["title"] - + uow.register( + NotificationOp( + GuestAccessRequestSubmitNotificationBuilder.build(request=self.request) + ) + ) + uow.register( + NotificationOp( + GuestAccessRequestSubmittedNotificationBuilder.build( + request=self.request + ) + ) + ) super().execute(identity, uow) @@ -97,23 +163,18 @@ def execute(self, identity, uow): (datetime.utcnow() + timedelta(days=days)).date().isoformat() ) link = service.access.create_secret_link(identity, record.id, data) - access_url = f"{record.links['self_html']}?token={link._link.token}" - plain_message = _("Access the record here: {url}".format(url=access_url)) - message = _( - 'Click here to access the record.'.format( - url=access_url + uow.register( + ParentRecordCommitOp( + record._record.parent, indexer_context=dict(service=service) ) ) - - uow.register(RecordCommitOp(record._record.parent)) uow.register( - EmailOp( - receiver=payload["email"], - subject="Request accepted", - body=plain_message, - html_body=message, + NotificationOp( + GuestAccessRequestAcceptNotificationBuilder.build( + self.request, access_url=access_url + ) ) ) @@ -146,18 +207,29 @@ def execute(self, identity, uow): permission = self.request["payload"]["permission"] data = { - "permission": permission, - "subject": { - "type": "user", - "id": str(creator.id), - }, - "origin": f"request:{self.request.id}", + "grants": [ + { + "permission": permission, + "subject": { + "type": "user", + "id": str(creator.id), + }, + "origin": f"request:{self.request.id}", + } + ] } # NOTE: we're using the system identity here to avoid the grant creation # potentially being blocked by the requesting user's profile visibility - service.access.create_grant(system_identity, record.pid.pid_value, data) - uow.register(RecordCommitOp(record.parent)) + service.access.bulk_create_grants(system_identity, record.pid.pid_value, data) + uow.register( + ParentRecordCommitOp(record.parent, indexer_context=dict(service=service)) + ) + uow.register( + NotificationOp( + UserAccessRequestAcceptNotificationBuilder.build(self.request) + ) + ) super().execute(identity, uow) @@ -179,15 +251,15 @@ class UserAccessRequest(RequestType): def _update_link_config(self, **context_vars): """Update the 'ui' variable for generation of links.""" - return {"ui": context_vars["ui"] + "/me"} + return {"ui": context_vars["ui"] + "/access"} available_actions = { "create": actions.CreateAction, "submit": UserSubmitAction, "delete": actions.DeleteAction, "accept": UserAcceptAction, - "cancel": actions.CancelAction, - "decline": actions.DeclineAction, + "cancel": UserCancelAction, + "decline": UserDeclineAction, "expire": actions.ExpireAction, } @@ -229,7 +301,7 @@ def _update_link_config(self, **context_vars): identity = context_vars.get("identity", g.identity) if authenticated_user not in identity.provides: - prefix = "/access-requests" + prefix = "/access" return {"ui": context_vars["ui"] + prefix} @@ -252,8 +324,8 @@ def _validate_days(self, value): "submit": GuestSubmitAction, "delete": actions.DeleteAction, "accept": GuestAcceptAction, - "cancel": actions.CancelAction, - "decline": actions.DeclineAction, + "cancel": GuestCancelAction, + "decline": GuestDeclineAction, "expire": actions.ExpireAction, } @@ -262,6 +334,7 @@ def _validate_days(self, value): "email": fields.Email(required=True), "full_name": fields.String(required=True), "token": fields.String(required=True), - "message": fields.String(required=False), + "message": fields.String(required=True), "secret_link_expiration": fields.String(required=True), + "consent_to_share_personal_data": fields.String(required=True), } diff --git a/invenio_rdm_records/requests/community_inclusion.py b/invenio_rdm_records/requests/community_inclusion.py index 21899d4ef..9735ea49e 100644 --- a/invenio_rdm_records/requests/community_inclusion.py +++ b/invenio_rdm_records/requests/community_inclusion.py @@ -1,20 +1,26 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Community addition request.""" +from invenio_drafts_resources.services.records.uow import ParentRecordCommitOp from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.uow import RecordCommitOp, RecordIndexOp +from invenio_notifications.services.uow import NotificationOp +from invenio_records_resources.services.uow import RecordIndexOp from invenio_requests.customizations import RequestType, actions from invenio_requests.errors import CannotExecuteActionError +from invenio_rdm_records.notifications.builders import ( + CommunityInclusionAcceptNotificationBuilder, +) from invenio_rdm_records.services.errors import InvalidAccessRestrictions from ..proxies import current_rdm_records_service as service +from ..services.errors import InvalidAccessRestrictions def is_access_restriction_valid(record, community): @@ -53,15 +59,33 @@ def execute(self, identity, uow): assert not record.parent.review if not is_access_restriction_valid(record, community): - description = InvalidAccessRestrictions.description - raise CannotExecuteActionError(description) + raise InvalidAccessRestrictions() # set the community to `default` if it is the first default = not record.parent.communities record.parent.communities.add(community, request=self.request, default=default) - uow.register(RecordCommitOp(record.parent)) - uow.register(RecordIndexOp(record, indexer=service.indexer)) + parent_community = getattr(community, "parent", None) + if ( + parent_community + and not str(parent_community.id) in record.parent.communities.ids + ): + record.parent.communities.add(parent_community, request=self.request) + + uow.register( + ParentRecordCommitOp(record.parent, indexer_context=dict(service=service)) + ) + # this indexed record might not be the latest version: in this case, it might + # not be immediately visible in the community's records, when the `all versions` + # facet is not toggled + uow.register(RecordIndexOp(record, indexer=service.indexer, index_refresh=True)) + uow.register( + NotificationOp( + CommunityInclusionAcceptNotificationBuilder.build( + identity=identity, request=self.request + ) + ) + ) super().execute(identity, uow) diff --git a/invenio_rdm_records/requests/community_submission.py b/invenio_rdm_records/requests/community_submission.py index 57f38d076..070a0399c 100644 --- a/invenio_rdm_records/requests/community_submission.py +++ b/invenio_rdm_records/requests/community_submission.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021-2022 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2023 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -8,12 +8,22 @@ """Community submission request.""" +from invenio_access.permissions import system_identity +from invenio_drafts_resources.services.records.uow import ParentRecordCommitOp from invenio_i18n import lazy_gettext as _ -from invenio_records_resources.services.uow import RecordCommitOp, RecordIndexOp +from invenio_notifications.services.uow import NotificationOp from invenio_requests.customizations import actions +from ..notifications.builders import ( + CommunityInclusionAcceptNotificationBuilder, + CommunityInclusionCancelNotificationBuilder, + CommunityInclusionDeclineNotificationBuilder, + CommunityInclusionExpireNotificationBuilder, +) from ..proxies import current_rdm_records_service as service +from ..services.errors import InvalidAccessRestrictions from .base import ReviewRequest +from .community_inclusion import is_access_restriction_valid # @@ -42,6 +52,10 @@ def execute(self, identity, uow): community = self.request.receiver.resolve() service._validate_draft(identity, draft) + # validate record and community access + if not is_access_restriction_valid(draft, community): + raise InvalidAccessRestrictions() + # Unset review from record (still accessible from request) # The curator (receiver) should still have access, via the community # The creator (uploader) should also still have access, because @@ -57,11 +71,27 @@ def execute(self, identity, uow): draft.parent.communities.add( community, request=self.request, default=is_default ) - uow.register(RecordCommitOp(draft.parent)) + + if getattr(community, "parent", None): + draft.parent.communities.add(community.parent, request=self.request) + + uow.register( + ParentRecordCommitOp(draft.parent, indexer_context=dict(service=service)) + ) # Publish the record - # TODO: Ensure that the accpeting user has permissions to publish. + # TODO: Ensure that the accepting user has permissions to publish. service.publish(identity, draft.pid.pid_value, uow=uow) + + # don't send notification about request auto-accept + if identity != system_identity: + uow.register( + NotificationOp( + CommunityInclusionAcceptNotificationBuilder.build( + identity=identity, request=self.request + ) + ) + ) super().execute(identity, uow) @@ -81,9 +111,16 @@ def execute(self, identity, uow): # in the review systemfield, the review should be set with the updated # request object draft.parent.review = self.request - uow.register(RecordCommitOp(draft.parent)) - # update draft to reflect the new status - uow.register(RecordIndexOp(draft, indexer=service.indexer)) + uow.register( + ParentRecordCommitOp(draft.parent, indexer_context=dict(service=service)) + ) + uow.register( + NotificationOp( + CommunityInclusionDeclineNotificationBuilder.build( + identity=identity, request=self.request + ) + ) + ) class CancelAction(actions.CancelAction): @@ -95,10 +132,17 @@ def execute(self, identity, uow): # Same reasoning as in 'decline' draft = self.request.topic.resolve() draft.parent.review = None - uow.register(RecordCommitOp(draft.parent)) - # update draft to reflect the new status - uow.register(RecordIndexOp(draft, indexer=service.indexer)) + uow.register( + ParentRecordCommitOp(draft.parent, indexer_context=dict(service=service)) + ) super().execute(identity, uow) + uow.register( + NotificationOp( + CommunityInclusionCancelNotificationBuilder.build( + identity=identity, request=self.request + ) + ) + ) class ExpireAction(actions.ExpireAction): @@ -117,9 +161,16 @@ def execute(self, identity, uow): # in the review systemfield, the review should be set with the updated # request object draft.parent.review = self.request - uow.register(RecordCommitOp(draft.parent)) - # update draft to reflect the new status - uow.register(RecordIndexOp(draft, indexer=service.indexer)) + uow.register( + ParentRecordCommitOp(draft.parent, indexer_context=dict(service=service)) + ) + uow.register( + NotificationOp( + CommunityInclusionExpireNotificationBuilder.build( + identity=identity, request=self.request + ) + ) + ) # diff --git a/invenio_rdm_records/requests/decorators.py b/invenio_rdm_records/requests/decorators.py index 2e2971d87..a1b8f264c 100644 --- a/invenio_rdm_records/requests/decorators.py +++ b/invenio_rdm_records/requests/decorators.py @@ -12,7 +12,7 @@ from invenio_requests import current_requests_service from invenio_requests.services.requests.links import RequestLink, RequestLinksTemplate -from invenio_rdm_records.services.review.links import RequestRecordLink +from ..services.review.links import RequestRecordLink def request_next_link(**kwargs): diff --git a/invenio_rdm_records/requests/entity_resolvers.py b/invenio_rdm_records/requests/entity_resolvers.py index 5bd8cba3b..82ad240c0 100644 --- a/invenio_rdm_records/requests/entity_resolvers.py +++ b/invenio_rdm_records/requests/entity_resolvers.py @@ -24,9 +24,8 @@ from invenio_users_resources.services.schemas import SystemUserSchema from sqlalchemy.orm.exc import NoResultFound -from invenio_rdm_records.services.config import RDMRecordServiceConfig - from ..records.api import RDMDraft, RDMRecord +from ..services.config import RDMRecordServiceConfig from ..services.dummy import DummyExpandingService # NOTE: this is the python regex from https://emailregex.com/ @@ -36,15 +35,33 @@ class RDMRecordProxy(RecordProxy): """Proxy for resolve RDMDraft and RDMRecord.""" + def _get_record(self, pid_value): + """Fetch the published record.""" + return RDMRecord.pid.resolve(pid_value) + def _resolve(self): """Resolve the Record from the proxy's reference dict.""" pid_value = self._parse_ref_dict_id() + draft = None try: - return RDMDraft.pid.resolve(pid_value, registered_only=False) - except (PIDUnregistered, NoResultFound): + draft = RDMDraft.pid.resolve(pid_value, registered_only=False) + except (PIDUnregistered, NoResultFound, PIDDoesNotExistError): # try checking if it is a published record before failing - return RDMRecord.pid.resolve(pid_value) + record = self._get_record(pid_value) + else: + # no exception raised. If published, get the published record instead + record = draft if not draft.is_published else self._get_record(pid_value) + + return record + + def ghost_record(self, record): + """Ghost reprensentation of a record. + + Drafts at the moment cannot be resolved, service.read_many() is searching on + public records, thus the `ghost_record` method will always kick in! + """ + return {"id": record} class RDMRecordResolver(RecordResolver): @@ -69,14 +86,26 @@ def matches_entity(self, entity): class RDMRecordServiceResultProxy(ServiceResultProxy): """Proxy to resolve RDMDraft and RDMRecord.""" + def _get_record(self, pid_value): + """Fetch the published record.""" + return self.service.read(system_identity, pid_value) + def _resolve(self): """Resolve the result item from the proxy's reference dict.""" pid_value = self._parse_ref_dict_id() + draft = None try: - return self.service.read_draft(system_identity, pid_value).to_dict() + draft = self.service.read_draft(system_identity, pid_value) except (PIDDoesNotExistError, NoResultFound): - return self.service.read(system_identity, pid_value).to_dict() + record = self._get_record(pid_value) + else: + # no exception raised. If published, get the published record instead + record = ( + draft if not draft._record.is_published else self._get_record(pid_value) + ) + + return record.to_dict() class RDMRecordServiceResultResolver(ServiceResultResolver): @@ -90,6 +119,23 @@ def __init__(self): proxy_cls=RDMRecordServiceResultProxy, ) + def _reference_entity(self, entity): + """Create a reference dict for the given result item.""" + pid = entity.id if isinstance(entity, self.item_cls) else entity.pid.pid_value + return {self.type_key: str(pid)} + + @property + def draft_cls(self): + """Get specified draft class or from service.""" + return self.get_service().draft_cls + + def matches_entity(self, entity): + """Check if the entity is a draft.""" + if isinstance(entity, self.draft_cls): + return True + + return ServiceResultResolver.matches_entity(self, entity=entity) + class EmailProxy(EntityProxy): """Entity proxy for email addresses.""" diff --git a/invenio_rdm_records/requests/user_moderation/actions.py b/invenio_rdm_records/requests/user_moderation/actions.py index 1a4113374..c443af72c 100644 --- a/invenio_rdm_records/requests/user_moderation/actions.py +++ b/invenio_rdm_records/requests/user_moderation/actions.py @@ -1,24 +1,84 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. +# Copyright (C) 2023 TU Wien. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """RDM user moderation action.""" from invenio_access.permissions import system_identity +from invenio_pidstore.errors import PIDDoesNotExistError +from invenio_records_resources.services.uow import TaskOp +from invenio_vocabularies.proxies import current_service -from invenio_rdm_records.proxies import current_rdm_records_service +from ...proxies import current_rdm_records_service +from .tasks import ( + delete_record, + restore_record, + user_block_cleanup, + user_restore_cleanup, +) +from .utils import get_user_records def on_block(user_id, uow=None, **kwargs): - """Removes records that belong to a user.""" - pass + """Removes records that belong to a user. + + Note: This function operates on all records of a user and thus has the potential + to be a very heavy operation! Thus it should not be called as part of the handling + of an HTTP request! + """ + user_id = str(user_id) + tombstone_data = {"note": "User was blocked"} + + # set the removal reason if the vocabulary item exists + try: + removal_reason_id = kwargs.get("removal_reason_id", "spam") + vocab = current_service.read( + identity=system_identity, id_=("removalreasons", removal_reason_id) + ) + tombstone_data["removal_reason"] = {"id": vocab.id} + except PIDDoesNotExistError: + pass + + # soft-delete all the published records of that user + for recid in get_user_records(user_id): + uow.register(TaskOp(delete_record, recid=recid, tombstone_data=tombstone_data)) + + # Send cleanup task to make sure all records are deleted + uow.register( + TaskOp.for_async_apply( + user_block_cleanup, + kwargs=dict(user_id=user_id, tombstone_data=tombstone_data), + # wait for 10 minutes before starting the cleanup + countdown=10 * 60, + ) + ) def on_restore(user_id, uow=None, **kwargs): - """Restores records that belong to a user.""" - pass + """Restores records that belong to a user. + + Note: This function operates on all records of a user and thus has the potential + to be a very heavy operation! Thus it should not be called as part of the handling + of an HTTP request! + """ + user_id = str(user_id) + + # restore all the deleted records of that user + for recid in get_user_records(user_id): + uow.register(TaskOp(restore_record, recid=recid)) + + # Send cleanup task to make sure all records are restored + uow.register( + TaskOp.for_async_apply( + user_restore_cleanup, + kwargs=dict(user_id=user_id), + # wait for 10 minutes before starting the cleanup + countdown=10 * 60, + ) + ) def on_approve(user_id, uow=None, **kwargs): diff --git a/invenio_rdm_records/requests/user_moderation/tasks.py b/invenio_rdm_records/requests/user_moderation/tasks.py new file mode 100644 index 000000000..20921cdbb --- /dev/null +++ b/invenio_rdm_records/requests/user_moderation/tasks.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""User moderation tasks.""" + +from celery import shared_task +from invenio_access.permissions import system_identity +from invenio_users_resources.records.api import UserAggregate + +from invenio_rdm_records.proxies import current_rdm_records_service +from invenio_rdm_records.records.systemfields.deletion_status import ( + RecordDeletionStatusEnum, +) +from invenio_rdm_records.services.errors import DeletionStatusException + +from .utils import get_user_records + + +@shared_task(ignore_result=True) +def user_block_cleanup(user_id, tombstone_data): + """User block action cleanup.""" + user = UserAggregate.get_record(user_id) + # Bail out if the user is not blocked (i.e. we restored him before the task ran) + if not user.blocked: + return + + for recid in get_user_records( + user_id, + from_db=True, + # Only fetch published records that might have not been deleted yet. + status=[RecordDeletionStatusEnum.PUBLISHED], + ): + delete_record.delay(recid, tombstone_data) + + +@shared_task(ignore_result=True) +def user_restore_cleanup(user_id): + """User restore action cleanup.""" + user = UserAggregate.get_record(user_id) + # Bail out if the user is blocked (i.e. we blocked him before the task ran) + if user.blocked: + return + + for recid in get_user_records( + user_id, + from_db=True, + # Only fetch deleted records that might have not been restored yet. + status=[RecordDeletionStatusEnum.DELETED], + ): + restore_record.delay(recid) + + +@shared_task(ignore_result=True) +def delete_record(recid, tombstone_data): + """Delete a single record.""" + try: + current_rdm_records_service.delete_record( + system_identity, recid, tombstone_data + ) + except DeletionStatusException as ex: + # Record is already deleted; index it again to make sure search is up-to-date. + current_rdm_records_service.indexer.index(ex.record) + + +@shared_task(ignore_result=True) +def restore_record(recid): + """Restore a single record.""" + try: + current_rdm_records_service.restore_record(system_identity, recid) + except DeletionStatusException as ex: + # Record is already restored; index it again to make sure search is up-to-date. + current_rdm_records_service.indexer.index(ex.record) diff --git a/invenio_rdm_records/requests/user_moderation/utils.py b/invenio_rdm_records/requests/user_moderation/utils.py new file mode 100644 index 000000000..319eb9ba6 --- /dev/null +++ b/invenio_rdm_records/requests/user_moderation/utils.py @@ -0,0 +1,48 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# Copyright (C) 2023 TU Wien. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""RDM user moderation utilities.""" + +from invenio_db import db +from invenio_search.api import RecordsSearchV2 + +from ...proxies import current_rdm_records_service + + +def get_user_records(user_id, from_db=False, status=None): + """Helper function for getting all the records of the user.""" + record_cls = current_rdm_records_service.record_cls + model_cls = record_cls.model_cls + parent_cls = record_cls.parent_record_cls + parent_model_cls = parent_cls.model_cls + + if from_db: + query = ( + db.session.query(model_cls.json["id"].as_string()) + .join(parent_model_cls) + .filter( + parent_model_cls.json["access"]["owned_by"]["user"].as_string() + == str(user_id), + ) + ) + if status: + query = query.filter(model_cls.deletion_status.in_(status)) + + return (row[0] for row in query.yield_per(1000)) + else: + search = ( + RecordsSearchV2(index=record_cls.index._name) + .filter("term", **{"parent.access.owned_by.user": user_id}) + .source(["id"]) + ) + if status: + if not isinstance(status, (tuple, list)): + status = [status] + status = [s.value for s in status] + search = search.filter("terms", deletion_status=status) + return (hit["id"] for hit in search.scan()) diff --git a/invenio_rdm_records/resources/__init__.py b/invenio_rdm_records/resources/__init__.py index 6793ede57..6b5a8e5bd 100644 --- a/invenio_rdm_records/resources/__init__.py +++ b/invenio_rdm_records/resources/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2022 Universität Hamburg. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -9,9 +9,10 @@ """Invenio RDM module to create REST APIs.""" from .config import ( - IIIFResourceConfig, RDMCommunityRecordsResourceConfig, RDMDraftFilesResourceConfig, + RDMGrantGroupAccessResourceConfig, + RDMGrantUserAccessResourceConfig, RDMParentGrantsResourceConfig, RDMParentRecordLinksResourceConfig, RDMRecordCommunitiesResourceConfig, @@ -19,9 +20,10 @@ RDMRecordRequestsResourceConfig, RDMRecordResourceConfig, ) +from .iiif import IIIFResource, IIIFResourceConfig from .resources import ( - IIIFResource, RDMCommunityRecordsResource, + RDMGrantsAccessResource, RDMParentGrantsResource, RDMParentRecordLinksResource, RDMRecordRequestsResource, @@ -35,7 +37,10 @@ "RDMCommunityRecordsResourceConfig", "RDMDraftFilesResourceConfig", "RDMParentGrantsResource", + "RDMGrantsAccessResource", "RDMParentGrantsResourceConfig", + "RDMGrantUserAccessResourceConfig", + "RDMGrantGroupAccessResourceConfig", "RDMParentRecordLinksResource", "RDMParentRecordLinksResourceConfig", "RDMRecordCommunitiesResourceConfig", diff --git a/invenio_rdm_records/resources/args.py b/invenio_rdm_records/resources/args.py index e02b32673..90531a126 100644 --- a/invenio_rdm_records/resources/args.py +++ b/invenio_rdm_records/resources/args.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-Drafts-Resources is free software; you can redistribute it and/or # modify it under the terms of the MIT License; see LICENSE file for more @@ -8,7 +8,6 @@ """Schemas for parameter parsing.""" - from invenio_drafts_resources.resources.records.args import SearchRequestArgsSchema from marshmallow import fields @@ -18,3 +17,5 @@ class RDMSearchRequestArgsSchema(SearchRequestArgsSchema): style = fields.Str() locale = fields.Str() + status = fields.Str() + include_deleted = fields.Bool() diff --git a/invenio_rdm_records/resources/config.py b/invenio_rdm_records/resources/config.py index a302d1d09..c34623f4e 100644 --- a/invenio_rdm_records/resources/config.py +++ b/invenio_rdm_records/resources/config.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2022 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020-2021 Northwestern University. # Copyright (C) 2022 Universität Hamburg. # Copyright (C) 2023 Graz University of Technology. @@ -10,6 +10,8 @@ """Resources configuration.""" +from copy import deepcopy + import marshmallow as ma from citeproc_styles import StyleNotFoundError from flask_resources import ( @@ -26,13 +28,19 @@ from invenio_drafts_resources.resources import RecordResourceConfig from invenio_i18n import lazy_gettext as _ from invenio_records.systemfields.relations import InvalidRelationValue +from invenio_records_resources.resources.errors import ErrorHandlersMixin from invenio_records_resources.resources.files import FileResourceConfig +from invenio_records_resources.resources.records.headers import etag_headers from invenio_records_resources.services.base.config import ConfiguratorMixin, FromConfig from invenio_requests.resources.requests.config import RequestSearchRequestArgsSchema from ..services.errors import ( - DuplicateAccessRequestError, + AccessRequestExistsError, + CommunityRequiredError, + GrantExistsError, InvalidAccessRestrictions, + RecordDeletedException, + RecordSubmissionClosedCommunityError, ReviewExistsError, ReviewNotFoundError, ReviewStateError, @@ -43,13 +51,17 @@ from .deserializers.errors import DeserializerError from .errors import HTTPJSONException, HTTPJSONValidationWithMessageAsListException from .serializers import ( + BibtexSerializer, CSLJSONSerializer, + CSVRecordSerializer, DataCite43JSONSerializer, DataCite43XMLSerializer, DCATSerializer, DublinCoreXMLSerializer, + FAIRSignpostingProfileLvl2Serializer, GeoJSONSerializer, MARCXMLSerializer, + SchemaorgJSONLDSerializer, StringCitationSerializer, UIJSONSerializer, ) @@ -65,22 +77,140 @@ def csl_url_args_retriever(): # # Response handlers # +def _bibliography_headers(obj_or_list, code, many=False): + """Override content type for 'text/x-bibliography'.""" + _etag_headers = etag_headers(obj_or_list, code, many=False) + _etag_headers["content-type"] = "text/plain" + return _etag_headers + + record_serializers = { - "application/json": ResponseHandler(JSONSerializer()), - "application/marcxml+xml": ResponseHandler(MARCXMLSerializer()), - "application/vnd.inveniordm.v1+json": ResponseHandler(UIJSONSerializer()), - "application/vnd.citationstyles.csl+json": ResponseHandler(CSLJSONSerializer()), + "application/json": ResponseHandler(JSONSerializer(), headers=etag_headers), + "application/ld+json": ResponseHandler(SchemaorgJSONLDSerializer()), + "application/vnd.inveniordm.v1.full+csv": ResponseHandler(CSVRecordSerializer()), + "application/vnd.inveniordm.v1.simple+csv": ResponseHandler( + CSVRecordSerializer( + csv_included_fields=[ + "id", + "created", + "pids.doi.identifier", + "metadata.title", + "metadata.description", + "metadata.resource_type.title.en", + "metadata.publication_date", + "metadata.creators.person_or_org.type", + "metadata.creators.person_or_org.name", + "metadata.rights.id", + ], + collapse_lists=True, + ) + ), + "application/marcxml+xml": ResponseHandler( + MARCXMLSerializer(), headers=etag_headers + ), + "application/vnd.inveniordm.v1+json": ResponseHandler( + UIJSONSerializer(), headers=etag_headers + ), + "application/vnd.citationstyles.csl+json": ResponseHandler( + CSLJSONSerializer(), headers=etag_headers + ), "application/vnd.datacite.datacite+json": ResponseHandler( - DataCite43JSONSerializer() + DataCite43JSONSerializer(), headers=etag_headers + ), + "application/vnd.geo+json": ResponseHandler( + GeoJSONSerializer(), headers=etag_headers + ), + "application/vnd.datacite.datacite+xml": ResponseHandler( + DataCite43XMLSerializer(), headers=etag_headers + ), + "application/x-dc+xml": ResponseHandler( + DublinCoreXMLSerializer(), headers=etag_headers ), - "application/vnd.geo+json": ResponseHandler(GeoJSONSerializer()), - "application/vnd.datacite.datacite+xml": ResponseHandler(DataCite43XMLSerializer()), - "application/x-dc+xml": ResponseHandler(DublinCoreXMLSerializer()), "text/x-bibliography": ResponseHandler( StringCitationSerializer(url_args_retriever=csl_url_args_retriever), - headers={"content-type": "text/plain"}, + headers=_bibliography_headers, + ), + "application/x-bibtex": ResponseHandler(BibtexSerializer(), headers=etag_headers), + "application/dcat+xml": ResponseHandler(DCATSerializer(), headers=etag_headers), + "application/linkset+json": ResponseHandler(FAIRSignpostingProfileLvl2Serializer()), +} + +error_handlers = { + **ErrorHandlersMixin.error_handlers, + DeserializerError: create_error_handler( + lambda exc: HTTPJSONException( + code=400, + description=exc.args[0], + ) + ), + StyleNotFoundError: create_error_handler( + HTTPJSONException( + code=400, + description=_("Citation string style not found."), + ) + ), + ReviewNotFoundError: create_error_handler( + HTTPJSONException( + code=404, + description=_("Review for draft not found"), + ) + ), + ReviewStateError: create_error_handler( + lambda e: HTTPJSONException( + code=400, + description=str(e), + ) + ), + ReviewExistsError: create_error_handler( + lambda e: HTTPJSONException( + code=400, + description=str(e), + ) + ), + InvalidRelationValue: create_error_handler( + lambda exc: HTTPJSONException( + code=400, + description=exc.args[0], + ) + ), + InvalidAccessRestrictions: create_error_handler( + lambda exc: HTTPJSONException( + code=400, + description=exc.args[0], + ) + ), + ValidationErrorWithMessageAsList: create_error_handler( + lambda e: HTTPJSONValidationWithMessageAsListException(e) + ), + AccessRequestExistsError: create_error_handler( + lambda e: HTTPJSONException( + code=400, + description=e.description, + ) + ), + RecordDeletedException: create_error_handler( + lambda e: ( + HTTPJSONException(code=404, description=_("Record not found")) + if not e.record.tombstone.is_visible + else HTTPJSONException( + code=410, + description=_("Record deleted"), + tombstone=e.record.tombstone.dump(), + ) + ) + ), + RecordSubmissionClosedCommunityError: create_error_handler( + lambda e: HTTPJSONException( + code=403, + description=e.description, + ) + ), + CommunityRequiredError: create_error_handler( + HTTPJSONException( + code=400, + description=_("Cannot publish without selecting a community."), + ) ), - "application/dcat+xml": ResponseHandler(DCATSerializer()), } @@ -101,9 +231,12 @@ class RDMRecordResourceConfig(RecordResourceConfig, ConfiguratorMixin): routes["item-review"] = "//draft/review" routes["item-actions-review"] = "//draft/actions/submit-review" # Access requests - routes["user-access-request"] = "//access/request" - routes["guest-access-request"] = "//access/request/guest" + routes["record-access-request"] = "//access/request" routes["access-request-settings"] = "//access" + routes["delete-record"] = "//delete" + routes["restore-record"] = "//restore" + routes["set-record-quota"] = "//quota" + routes["set-user-quota"] = "/users//quota" request_view_args = { "pid_value": ma.fields.Str(), @@ -113,6 +246,7 @@ class RDMRecordResourceConfig(RecordResourceConfig, ConfiguratorMixin): request_read_args = { "style": ma.fields.Str(), "locale": ma.fields.Str(), + "include_deleted": ma.fields.Bool(), } request_body_parsers = { @@ -122,64 +256,19 @@ class RDMRecordResourceConfig(RecordResourceConfig, ConfiguratorMixin): ), } - request_search_args = RDMSearchRequestArgsSchema + request_search_args = FromConfig( + "RDM_SEARCH_ARGS_SCHEMA", default=RDMSearchRequestArgsSchema + ) - response_handlers = record_serializers + response_handlers = FromConfig( + "RDM_RECORDS_SERIALIZERS", + default=record_serializers, + ) - error_handlers = { - DeserializerError: create_error_handler( - lambda exc: HTTPJSONException( - code=400, - description=exc.args[0], - ) - ), - StyleNotFoundError: create_error_handler( - HTTPJSONException( - code=400, - description=_("Citation string style not found."), - ) - ), - ReviewNotFoundError: create_error_handler( - HTTPJSONException( - code=404, - description=_("Review for draft not found"), - ) - ), - ReviewStateError: create_error_handler( - lambda e: HTTPJSONException( - code=400, - description=str(e), - ) - ), - ReviewExistsError: create_error_handler( - lambda e: HTTPJSONException( - code=400, - description=str(e), - ) - ), - InvalidRelationValue: create_error_handler( - lambda exc: HTTPJSONException( - code=400, - description=exc.args[0], - ) - ), - InvalidAccessRestrictions: create_error_handler( - lambda exc: HTTPJSONException( - code=400, - description=exc.args[0], - ) - ), - ValidationErrorWithMessageAsList: create_error_handler( - lambda e: HTTPJSONValidationWithMessageAsListException(e) - ), - DuplicateAccessRequestError: create_error_handler( - lambda e: HTTPJSONException( - code=409, - description=e.description, - duplicates=e.request_ids, - ) - ), - } + error_handlers = FromConfig( + "RDM_RECORDS_ERROR_HANDLERS", + default=error_handlers, + ) # @@ -193,6 +282,21 @@ class RDMRecordFilesResourceConfig(FileResourceConfig, ConfiguratorMixin): blueprint_name = "record_files" url_prefix = "/records/" + error_handlers = { + **ErrorHandlersMixin.error_handlers, + RecordDeletedException: create_error_handler( + lambda e: ( + HTTPJSONException(code=404, description=_("Record not found")) + if not e.record.tombstone.is_visible + else HTTPJSONException( + code=410, + description=_("Record deleted"), + tombstone=e.record.tombstone.dump(), + ) + ) + ), + } + # # Draft files @@ -204,6 +308,13 @@ class RDMDraftFilesResourceConfig(FileResourceConfig, ConfiguratorMixin): blueprint_name = "draft_files" url_prefix = "/records//draft" + response_handlers = { + "application/vnd.inveniordm.v1+json": FileResourceConfig.response_handlers[ + "application/json" + ], + **FileResourceConfig.response_handlers, + } + class RDMRecordMediaFilesResourceConfig(FileResourceConfig, ConfiguratorMixin): """Bibliographic record files resource config.""" @@ -220,6 +331,28 @@ class RDMRecordMediaFilesResourceConfig(FileResourceConfig, ConfiguratorMixin): "list-archive": "/media-files-archive", } + error_handlers = { + **ErrorHandlersMixin.error_handlers, + RecordDeletedException: create_error_handler( + lambda e: ( + HTTPJSONException(code=404, description=_("Record not found")) + if not e.record.tombstone.is_visible + else HTTPJSONException( + code=410, + description=_("Record deleted"), + tombstone=e.record.tombstone.dump(), + ) + ) + ), + } + + response_handlers = { + "application/vnd.inveniordm.v1+json": FileResourceConfig.response_handlers[ + "application/json" + ], + **FileResourceConfig.response_handlers, + } + # # Draft files @@ -239,33 +372,53 @@ class RDMDraftMediaFilesResourceConfig(FileResourceConfig, ConfiguratorMixin): "list-archive": "/media-files-archive", } + response_handlers = { + "application/vnd.inveniordm.v1+json": FileResourceConfig.response_handlers[ + "application/json" + ], + **FileResourceConfig.response_handlers, + } + # # Parent Record Links # -record_links_error_handlers = RecordResourceConfig.error_handlers.copy() - +record_links_error_handlers = { + **deepcopy(RecordResourceConfig.error_handlers), + LookupError: create_error_handler( + HTTPJSONException( + code=404, + description=_("No secret link found with the given ID."), + ) + ), +} -record_links_error_handlers.update( - { - LookupError: create_error_handler( - HTTPJSONException( - code=404, - description="No secret link found with the given ID.", - ) - ), - } -) +grants_error_handlers = { + **deepcopy(RecordResourceConfig.error_handlers), + LookupError: create_error_handler( + HTTPJSONException(code=404, description=_("No grant found with the given ID.")) + ), + GrantExistsError: create_error_handler( + lambda e: HTTPJSONException( + code=400, + description=e.description, + ) + ), +} -grants_error_handlers = RecordResourceConfig.error_handlers.copy() +user_access_error_handlers = { + **deepcopy(RecordResourceConfig.error_handlers), + LookupError: create_error_handler( + HTTPJSONException(code=404, description=_("No grant found by given user id.")) + ), +} -grants_error_handlers.update( - { - LookupError: create_error_handler( - HTTPJSONException(code=404, description="No grant found with the given ID.") - ) - } -) +group_access_error_handlers = { + **deepcopy(RecordResourceConfig.error_handlers), + LookupError: create_error_handler( + HTTPJSONException(code=404, description=_("No grant found by given group id.")) + ), +} # @@ -290,7 +443,12 @@ class RDMParentRecordLinksResourceConfig(RecordResourceConfig, ConfiguratorMixin "link_id": ma.fields.Str(), } - response_handlers = {"application/json": ResponseHandler(JSONSerializer())} + response_handlers = { + "application/vnd.inveniordm.v1+json": RecordResourceConfig.response_handlers[ + "application/json" + ], + **RecordResourceConfig.response_handlers, + } error_handlers = record_links_error_handlers @@ -318,11 +476,78 @@ class RDMParentGrantsResourceConfig(RecordResourceConfig, ConfiguratorMixin): } request_extra_args = {"expand": ma.fields.Bool()} - response_handlers = {"application/json": ResponseHandler(JSONSerializer())} + response_handlers = { + "application/vnd.inveniordm.v1+json": RecordResourceConfig.response_handlers[ + "application/json" + ], + **RecordResourceConfig.response_handlers, + } error_handlers = grants_error_handlers +class RDMGrantUserAccessResourceConfig(RecordResourceConfig, ConfiguratorMixin): + """Record grants user access resource configuration.""" + + blueprint_name = "record_user_access" + + url_prefix = "/records//access" + + routes = { + "item": "/users/", + "list": "/users", + } + + links_config = {} + + request_view_args = { + "pid_value": ma.fields.Str(), + "subject_id": ma.fields.Str(), # user id + } + + grant_subject_type = "user" + + response_handlers = { + "application/vnd.inveniordm.v1+json": RecordResourceConfig.response_handlers[ + "application/json" + ], + **deepcopy(RecordResourceConfig.response_handlers), + } + + error_handlers = user_access_error_handlers + + +class RDMGrantGroupAccessResourceConfig(RecordResourceConfig, ConfiguratorMixin): + """Record grants group access resource configuration.""" + + blueprint_name = "record_group_access" + + url_prefix = "/records//access" + + routes = { + "item": "/groups/", + "list": "/groups", + } + + links_config = {} + + request_view_args = { + "pid_value": ma.fields.Str(), + "subject_id": ma.fields.Str(), # group id + } + + grant_subject_type = "role" + + response_handlers = { + "application/vnd.inveniordm.v1+json": RecordResourceConfig.response_handlers[ + "application/json" + ], + **deepcopy(RecordResourceConfig.response_handlers), + } + + error_handlers = group_access_error_handlers + + # # Community's records # @@ -333,7 +558,10 @@ class RDMCommunityRecordsResourceConfig(RecordResourceConfig, ConfiguratorMixin) url_prefix = "/communities" routes = {"list": "//records"} - response_handlers = record_serializers + response_handlers = FromConfig( + "RDM_RECORDS_SERIALIZERS", + default=record_serializers, + ) class RDMRecordCommunitiesResourceConfig(CommunityResourceConfig, ConfiguratorMixin): @@ -371,53 +599,9 @@ class RDMRecordRequestsResourceConfig(ResourceConfig, ConfiguratorMixin): "expand": ma.fields.Boolean(), } - -# -# IIIF -# -class IIIFResourceConfig(ResourceConfig, ConfiguratorMixin): - """IIIF resource configuration.""" - - blueprint_name = "iiif" - - url_prefix = "/iiif" - - routes = { - "manifest": "//manifest", - "sequence": "//sequence/default", - "canvas": "//canvas/", - "image_base": "/", - "image_info": "//info.json", - "image_api": "/////.", - } - - request_view_args = { - "uuid": ma.fields.Str(), - "file_name": ma.fields.Str(), - "region": ma.fields.Str(), - "size": ma.fields.Str(), - "rotation": ma.fields.Str(), - "quality": ma.fields.Str(), - "image_format": ma.fields.Str(), - } - - request_read_args = { - "dl": ma.fields.Str(), - } - - request_headers = { - "If-Modified-Since": ma.fields.DateTime(), - } - - response_handler = {"application/json": ResponseHandler(JSONSerializer())} - - supported_formats = { - "gif": "image/gif", - "jp2": "image/jp2", - "jpeg": "image/jpeg", - "jpg": "image/jpeg", - "pdf": "application/pdf", - "png": "image/png", - "tif": "image/tiff", - "tiff": "image/tiff", + response_handlers = { + "application/vnd.inveniordm.v1+json": ResourceConfig.response_handlers[ + "application/json" + ], + **ResourceConfig.response_handlers, } diff --git a/invenio_rdm_records/resources/deserializers/rocrate/schema.py b/invenio_rdm_records/resources/deserializers/rocrate/schema.py index 4c18d3fe0..27d5c246b 100644 --- a/invenio_rdm_records/resources/deserializers/rocrate/schema.py +++ b/invenio_rdm_records/resources/deserializers/rocrate/schema.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2022 CERN. +# Copyright (C) 2022-2024 CERN. # Copyright (C) 2023 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -8,8 +8,6 @@ """RO-Crate schema.""" -from distutils.log import error - from invenio_i18n import lazy_gettext as _ from marshmallow import EXCLUDE, Schema, ValidationError, fields, pre_load, validate from marshmallow_utils.fields import SanitizedHTML, SanitizedUnicode @@ -90,9 +88,9 @@ def load_creators(self, value): if obj.get("affiliation"): for a_idx, a in enumerate(obj.get("affiliation")): if not a.get("name"): - errors[ - f"{c_idx}.affiliation.{a_idx}.name" - ] = self.error_messages["required"] + errors[f"{c_idx}.affiliation.{a_idx}.name"] = ( + self.error_messages["required"] + ) affiliations.append({"name": a.get("name")}) elif obj.get("@type") == "Organization": person_or_org["type"] = "organizational" diff --git a/invenio_rdm_records/resources/iiif.py b/invenio_rdm_records/resources/iiif.py new file mode 100644 index 000000000..8e662a037 --- /dev/null +++ b/invenio_rdm_records/resources/iiif.py @@ -0,0 +1,395 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# Copyright (C) 2022 Universität Hamburg. +# Copyright (C) 2024 Graz University of Technology. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""IIIF Resource.""" + +import textwrap +from abc import ABC, abstractmethod +from functools import wraps +from urllib.parse import urljoin + +import marshmallow as ma +import requests +from flask import Response, current_app, g, request, send_file +from flask_cors import cross_origin +from flask_resources import ( + HTTPJSONException, + JSONSerializer, + Resource, + ResourceConfig, + ResponseHandler, + create_error_handler, + from_conf, + request_parser, + resource_requestctx, + response_handler, + route, + with_content_negotiation, +) +from importlib_metadata import version +from invenio_drafts_resources.resources.records.errors import RedirectException +from invenio_i18n import lazy_gettext as _ +from invenio_records_resources.resources.errors import ErrorHandlersMixin +from invenio_records_resources.resources.records.headers import etag_headers +from invenio_records_resources.resources.records.resource import ( + request_headers, + request_read_args, +) +from invenio_records_resources.services.base.config import ConfiguratorMixin, FromConfig +from PIL.Image import DecompressionBombError +from werkzeug.utils import cached_property, secure_filename + +from ..services.errors import RecordDeletedException +from .serializers import ( + IIIFCanvasV2JSONSerializer, + IIIFInfoV2JSONSerializer, + IIIFManifestV2JSONSerializer, + IIIFSequenceV2JSONSerializer, +) + + +class IIIFResourceConfig(ResourceConfig, ConfiguratorMixin): + """IIIF resource configuration.""" + + blueprint_name = "iiif" + + url_prefix = "/iiif" + + routes = { + "manifest": "//manifest", + "sequence": "//sequence/default", + "canvas": "//canvas/", + "image_base": "/", + "image_info": "//info.json", + "image_api": "/////.", + } + + request_view_args = { + "uuid": ma.fields.Str(), + "file_name": ma.fields.Str(), + "region": ma.fields.Str(), + "size": ma.fields.Str(), + "rotation": ma.fields.Str(), + "quality": ma.fields.Str(), + "image_format": ma.fields.Str(), + } + + request_read_args = { + "dl": ma.fields.Str(), + } + + request_headers = { + "If-Modified-Since": ma.fields.DateTime(), + } + + response_handler = {"application/json": ResponseHandler(JSONSerializer())} + + supported_formats = FromConfig("IIIF_FORMATS") + + proxy_cls = FromConfig("IIIF_PROXY_CLASS", default=None, import_string=True) + + error_handlers = { + DecompressionBombError: create_error_handler( + lambda e: HTTPJSONException( + code=403, description=_("Image size limit exceeded") + ) + ), + RecordDeletedException: create_error_handler( + lambda e: HTTPJSONException( + code=410, + description=_( + "The record associated with this file has been deleted. See deletion notice." + ), + ) + ), + } + + +def with_iiif_content_negotiation(serializer): + """Response as JSON LD regardless of the request type.""" + return with_content_negotiation( + response_handlers={ + "application/ld+json": ResponseHandler(serializer(), headers=etag_headers), + }, + default_accept_mimetype="application/ld+json", + ) + + +iiif_request_view_args = request_parser( + from_conf("request_view_args"), location="view_args" +) + + +class IIIFResource(ErrorHandlersMixin, Resource): + """IIIF resource.""" + + def __init__(self, config, service): + """Instantiate resource.""" + super().__init__(config) + self.service = service + + @cached_property + def proxy(self): + """IIIF Image Server proxy instance.""" + if self.config.proxy_cls is not None: + return self.config.proxy_cls() + + @staticmethod + def proxy_pass(f): + """Decorate a function to proxy the request to an Image Server if enabled.""" + + @wraps(f) + def _wrapper(self, *args, **kwargs): + if self.proxy: + res = self.proxy() + if res: + return res, 200 + return f(self, *args, **kwargs) + + return _wrapper + + def create_url_rules(self): + """Create the URL rules for the IIIF resource.""" + routes = self.config.routes + return [ + route("GET", routes["manifest"], self.manifest), + route("GET", routes["sequence"], self.sequence), + route("GET", routes["canvas"], self.canvas), + route("GET", routes["image_base"], self.base), + route("GET", routes["image_info"], self.info), + route("GET", routes["image_api"], self.image_api), + ] + + def _get_record_with_files(self): + uuid = resource_requestctx.view_args["uuid"] + return self.service.read_record(uuid=uuid, identity=g.identity) + + # + # IIIF Manifest - not all clients support content-negotiation so we need a + # full endpoint. + # + # See https://iiif.io/api/presentation/2.1/#responses on + # "Access-Control-Allow-Origin: *" + # + @cross_origin(origin="*", methods=["GET"]) + @with_iiif_content_negotiation(IIIFManifestV2JSONSerializer) + @iiif_request_view_args + @response_handler() + @proxy_pass.__func__ + def manifest(self): + """Manifest.""" + return self._get_record_with_files().to_dict(), 200 + + @cross_origin(origin="*", methods=["GET"]) + @with_iiif_content_negotiation(IIIFSequenceV2JSONSerializer) + @iiif_request_view_args + @response_handler() + @proxy_pass.__func__ + def sequence(self): + """Sequence.""" + return self._get_record_with_files().to_dict(), 200 + + @cross_origin(origin="*", methods=["GET"]) + @with_iiif_content_negotiation(IIIFCanvasV2JSONSerializer) + @iiif_request_view_args + @response_handler() + @proxy_pass.__func__ + def canvas(self): + """Canvas.""" + uuid = resource_requestctx.view_args["uuid"] + key = resource_requestctx.view_args["file_name"] + file_ = self.service.get_file(uuid=uuid, identity=g.identity, key=key) + return file_.to_dict(), 200 + + @cross_origin(origin="*", methods=["GET"]) + @with_iiif_content_negotiation(IIIFInfoV2JSONSerializer) + @iiif_request_view_args + @response_handler() + @proxy_pass.__func__ + def base(self): + """IIIF base endpoint, redirects to IIIF Info endpoint.""" + item = self.service.get_file( + identity=g.identity, + uuid=resource_requestctx.view_args["uuid"], + ) + raise RedirectException(item["links"]["iiif_info"]) + + @cross_origin(origin="*", methods=["GET"]) + @with_iiif_content_negotiation(IIIFInfoV2JSONSerializer) + @iiif_request_view_args + @response_handler() + @proxy_pass.__func__ + def info(self): + """Get IIIF image info.""" + item = self.service.get_file( + identity=g.identity, + uuid=resource_requestctx.view_args["uuid"], + ) + return item.to_dict(), 200 + + @cross_origin(origin="*", methods=["GET"]) + @request_headers + @request_read_args + @iiif_request_view_args + @proxy_pass.__func__ + def image_api(self): + """IIIF API Implementation. + + .. note:: + * IIF IMAGE API v1.0 + * For more infos please visit . + * IIIF Image API v2.0 + * For more infos please visit . + * The API works only for GET requests + * The image process must follow strictly the following workflow: + * Region + * Size + * Rotation + * Quality + * Format + """ + image_format = resource_requestctx.view_args["image_format"] + uuid = resource_requestctx.view_args["uuid"] + region = resource_requestctx.view_args["region"] + size = resource_requestctx.view_args["size"] + rotation = resource_requestctx.view_args["rotation"] + quality = resource_requestctx.view_args["quality"] + to_serve = self.service.image_api( + identity=g.identity, + uuid=uuid, + region=region, + size=size, + rotation=rotation, + quality=quality, + image_format=image_format, + ) + # decide the mime_type from the requested image_format + mimetype = self.config.supported_formats.get(image_format, "image/jpeg") + # TODO: get from cache on the service image.last_modified + last_modified = None + send_file_kwargs = {"mimetype": mimetype} + # last_modified is not supported before flask 0.12 + if last_modified: + send_file_kwargs.update(last_modified=last_modified) + + dl = resource_requestctx.args.get("dl") + if dl is not None: + filename = secure_filename(dl) + if filename.lower() in {"", "1", "true"}: + filename = "{0}-{1}-{2}-{3}-{4}.{5}".format( + uuid, region, size, quality, rotation, image_format + ) + + send_file_kwargs.update( + as_attachment=True, + ) + if version("Flask") < "2.2.0": + send_file_kwargs.update( + attachment_filename=secure_filename(filename), + ) + else: + # Flask 2.2 renamed `attachment_filename` to `download_name` + send_file_kwargs.update( + download_name=secure_filename(filename), + ) + if_modified_since = resource_requestctx.headers.get("If-Modified-Since") + if if_modified_since and last_modified and if_modified_since >= last_modified: + raise HTTPJSONException(code=304) + + response = send_file(to_serve, **send_file_kwargs) + return response + + +# IIIF Proxies +class IIIFProxy(ABC): + """IIIF Proxy interface. + + The purpose of this class is to provide a consistent way of proxying requests to a + IIIF server. To use, subclass and implement `proxy_request`, and optionally override + `should_proxy` to add custom logic to determine if a request should be proxied. + """ + + def should_proxy(self): + """Check if the curent request should be proxied. + + By default, checks if the request is for one of the IIIF image API endpoints. + """ + return request.endpoint in ( + "iiif.image_api", + "iiif.image_info", + # TODO: `image_base` would redirect to the info endpoint, but we should make + # sure the proxy does this correctly, preserving the original path. + # "iiif.image_base", + ) + + @abstractmethod + def proxy_request(self): + """Proxy the current request to IIIF server.""" + + def __call__(self): + """Proxy request to IIIF server if the endpoint is configured.""" + if self.should_proxy(): + return self.proxy_request() + return None + + +class IIPServerProxy(IIIFProxy): + """IIP Server Proxy for IIIF server.""" + + @property + def server_url(self): + """IIIF server URL.""" + return current_app.config.get("RDM_IIIF_SERVER_URL") + + def proxy_request(self): + """Proxy request to IIIF server.""" + if not self.server_url: + raise RuntimeError("IIIF server URL must be set via `RDM_IIIF_SERVER_URL`.") + + url = self._rewrite_url() + res = requests.request( + request.method, + url, + headers=request.headers, + stream=True, + ) + if not res.ok: + current_app.logger.error( + f"Request to IIP server failed with status code {res.status_code}." + ) + else: + return Response( + res.iter_content(chunk_size=10 * 1024), + status=res.status_code, + content_type=res.headers["Content-Type"], + ) + + # TODO: This should be configurable, as it depends on how the tiles are stored. + def _rewrite_url(self): + """Rewrite URL. + + Examples: + - /iiif/record:12:image.png/ -> /iiif/12/__/_/image.png/ + - /iiif/record:1234:image.png/ -> /iiif/12/34/_/image.png/ + - /iiif/record:1234567:image.png/ -> /iiif/12/34/567_/image.png/ + """ + uuid = resource_requestctx.view_args["uuid"] + _, recid, filename = uuid.split(":") + + recid_parts = textwrap.wrap(recid.ljust(4, "_"), 2) + start_parts = recid_parts[:2] + end_parts = recid_parts[2:] + recid_path = "/".join(start_parts) + if end_parts: + recid_path += f"/{''.join(end_parts)}_" + else: + recid_path += "/_" + + path = request.path + path = path.replace(uuid, f"{recid_path}/{filename}.ptif") + return urljoin(self.server_url, path) diff --git a/invenio_rdm_records/resources/resources.py b/invenio_rdm_records/resources/resources.py index c1fe1d1cc..2afe6fe07 100644 --- a/invenio_rdm_records/resources/resources.py +++ b/invenio_rdm_records/resources/resources.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020 Northwestern University. # Copyright (C) 2021 TU Wien. # Copyright (C) 2021 data-futures. @@ -11,23 +11,11 @@ """Bibliographic Record Resource.""" -from flask import abort, current_app, g, send_file -from flask_cors import cross_origin -from flask_resources import ( - HTTPJSONException, - Resource, - ResponseHandler, - from_conf, - request_parser, - resource_requestctx, - response_handler, - route, - with_content_negotiation, -) -from importlib_metadata import version +from functools import wraps + +from flask import abort, current_app, g, redirect, url_for +from flask_resources import Resource, resource_requestctx, response_handler, route from invenio_drafts_resources.resources import RecordResource -from invenio_drafts_resources.resources.records.errors import RedirectException -from invenio_mail.tasks import send_email from invenio_records_resources.resources.errors import ErrorHandlersMixin from invenio_records_resources.resources.records.resource import ( request_data, @@ -38,15 +26,38 @@ request_view_args, ) from invenio_records_resources.resources.records.utils import search_preference -from werkzeug.utils import secure_filename - -from ..requests.access import AccessRequestToken -from .serializers import ( - IIIFCanvasV2JSONSerializer, - IIIFInfoV2JSONSerializer, - IIIFManifestV2JSONSerializer, - IIIFSequenceV2JSONSerializer, -) +from invenio_stats import current_stats +from sqlalchemy.exc import NoResultFound + +from .urls import record_url_for + + +def response_header_signposting(f): + """Add signposting link to view's reponse headers. + + :param headers: response headers + :type headers: dict + :return: updated response headers + :rtype: dict + """ + + @wraps(f) + def inner(*args, **kwargs): + pid_value = resource_requestctx.view_args["pid_value"] + signposting_link = record_url_for(_app="api", pid_value=pid_value) + + response = f(*args, **kwargs) + if response.status_code != 200: + return response + response.headers.update( + { + "Link": f'<{signposting_link}> ; rel="linkset" ; type="application/linkset+json"', # noqa + } + ) + + return response + + return inner class RDMRecordResource(RecordResource): @@ -70,23 +81,120 @@ def p(route): route("POST", p(routes["item-actions-review"]), self.review_submit), route( "POST", - p(routes["user-access-request"]), - self.create_user_access_request, - ), - route( - "POST", - p(routes["guest-access-request"]), - self.create_guest_access_request_token, + p(routes["record-access-request"]), + self.create_access_request, ), route( "PUT", p(routes["access-request-settings"]), self.update_access_settings, ), + route("DELETE", p(routes["delete-record"]), self.delete_record), + route("POST", p(routes["restore-record"]), self.restore_record), + route("POST", p(routes["set-record-quota"]), self.set_record_quota), + # TODO: move to users? + route("POST", routes["set-user-quota"], self.set_user_quota), ] return url_rules + @request_extra_args + @request_read_args + @request_view_args + @response_header_signposting + @response_handler() + def read(self): + """Read an item.""" + try: + item = self.service.read( + g.identity, + resource_requestctx.view_args["pid_value"], + expand=resource_requestctx.args.get("expand", False), + # allows to access deleted record if permissions match + include_deleted=resource_requestctx.args.get("include_deleted", False), + ) + except NoResultFound: + # If the parent pid is being used we can get the id of the latest record and redirect + latest_version = self.service.read_latest( + g.identity, + resource_requestctx.view_args["pid_value"], + expand=resource_requestctx.args.get("expand", False), + ) + return ( + redirect( + url_for( + ".read", + pid_value=latest_version.id, + ) + ), + None, # We pass None to create a tuple as the response_handler always expects an iterable + ) + + # we emit the record view stats event here rather than in the service because + # the service might be called from other places as well that we don't want + # to count, e.g. from some CLI commands + emitter = current_stats.get_event_emitter("record-view") + if item is not None and emitter is not None: + emitter(current_app, record=item._record, via_api=True) + + return item.to_dict(), 200 + + @request_headers + @request_view_args + @request_data + def set_record_quota(self): + """Set record quota resource.""" + item = self.service.set_quota( + g.identity, + resource_requestctx.view_args["pid_value"], + data=resource_requestctx.data, + ) + + return {}, 200 + + @request_headers + @request_view_args + @request_data + def set_user_quota(self): + """Set user quota resource.""" + item = self.service.set_user_quota( + g.identity, + id_=resource_requestctx.view_args["pid_value"], + data=resource_requestctx.data, + ) + + return {}, 200 + + # + # Deletion workflows + # + @request_headers + @request_view_args + @request_data + def delete_record(self): + """Read the related review request.""" + item = self.service.delete_record( + g.identity, + resource_requestctx.view_args["pid_value"], + resource_requestctx.data, + revision_id=resource_requestctx.headers.get("if_match"), + ) + + return item.to_dict(), 204 + + @request_headers + @request_view_args + @request_data + def restore_record(self): + """Read the related review request.""" + item = self.service.restore_record( + g.identity, + resource_requestctx.view_args["pid_value"], + resource_requestctx.data, + ) + + return item.to_dict(), 200 + # # Review request # @@ -129,7 +237,6 @@ def review_delete(self): @request_headers @request_view_args @request_data - @response_handler() def review_submit(self): """Submit a draft for review or directly publish it.""" require_review = False @@ -177,25 +284,19 @@ def pids_discard(self): @request_view_args @request_data - def create_user_access_request(self): + def create_access_request(self): """Request access to a record as authenticated user.""" - item = self.service.access.create_user_access_request( - id_=resource_requestctx.view_args["pid_value"], - identity=g.identity, - message=resource_requestctx.data.get("message", ""), - ) - return item.to_dict(), 200 - - @request_view_args - @request_data - def create_guest_access_request_token(self): - """Request access to a record as unauthenticated guest.""" - item = self.service.access.create_guest_access_request_token( + item = self.service.access.request_access( id_=resource_requestctx.view_args["pid_value"], identity=g.identity, data=resource_requestctx.data, ) - return item, 200 + # TODO: improve the serialization here + # this is done due to guest access request creation returning a dictionary, + # not the request item (request item does not exist before email is confirmed) + if isinstance(item, dict): + return item, 200 + return item.to_dict(), 200 @request_view_args @request_data @@ -225,6 +326,7 @@ def create_url_rules(self): route("POST", routes["list"], self.add), route("DELETE", routes["list"], self.remove), route("GET", routes["suggestions"], self.get_suggestions), + route("PUT", routes["list"], self.set_default), ] return url_rules @@ -242,8 +344,8 @@ def search(self): ) return items.to_dict(), 200 + # No response_handler here because we dont want to process the response with the schema @request_view_args - @response_handler() @request_data def add(self): """Include record in communities.""" @@ -297,6 +399,18 @@ def get_suggestions(self): ) return items.to_dict(), 200 + @request_view_args + @request_data + def set_default(self): + """Set default community.""" + item = self.service.set_default( + id_=resource_requestctx.view_args["pid_value"], + identity=g.identity, + data=resource_requestctx.data, + ) + + return item, 200 + class RDMRecordRequestsResource(ErrorHandlersMixin, Resource): """Record requests resource.""" @@ -457,16 +571,17 @@ def read(self): @request_data @response_handler() def create(self): - """Create an access grant for a record.""" + """Create access grants for a record.""" data = resource_requestctx.data - data["origin"] = f"api:{g.identity.id}" - item = self.service.access.create_grant( + for grant in data["grants"]: + grant["origin"] = f"api:{g.identity.id}" + items = self.service.access.bulk_create_grants( identity=g.identity, id_=resource_requestctx.view_args["pid_value"], data=data, expand=resource_requestctx.args.get("expand", False), ) - return item.to_dict(), 201 + return items.to_dict(), 201 @request_extra_args @request_view_args @@ -524,6 +639,80 @@ def search(self): return items.to_dict(), 200 +class RDMGrantsAccessResource(RecordResource): + """Users and groups grant access resource.""" + + def create_url_rules(self): + """Create the URL rules for the record resource.""" + + def p(route_name): + """Prefix a route with the URL prefix.""" + return f"{self.config.url_prefix}{self.config.routes[route_name]}" + + return [ + route("GET", p("item"), self.read), + route("DELETE", p("item"), self.delete), + route("GET", p("list"), self.search), + route("PATCH", p("item"), self.partial_update), + ] + + @request_extra_args + @request_view_args + @response_handler() + def read(self): + """Read an access grant for a record by subject.""" + item = self.service.access.read_grant_by_subject( + identity=g.identity, + id_=resource_requestctx.view_args["pid_value"], + subject_id=resource_requestctx.view_args["subject_id"], + subject_type=self.config.grant_subject_type, + expand=resource_requestctx.args.get("expand", False), + ) + + return item.to_dict(), 200 + + @request_view_args + def delete(self): + """Delete an access grant for a record by subject.""" + self.service.access.delete_grant_by_subject( + identity=g.identity, + id_=resource_requestctx.view_args["pid_value"], + subject_id=resource_requestctx.view_args["subject_id"], + subject_type=self.config.grant_subject_type, + ) + return "", 204 + + @request_extra_args + @request_search_args + @request_view_args + @response_handler(many=True) + def search(self): + """List access grants for a record by subject type.""" + items = self.service.access.read_all_grants_by_subject( + identity=g.identity, + id_=resource_requestctx.view_args["pid_value"], + subject_type=self.config.grant_subject_type, + expand=resource_requestctx.args.get("expand", False), + ) + return items.to_dict(), 200 + + @request_extra_args + @request_view_args + @request_data + @response_handler() + def partial_update(self): + """Patch access grant for a record by subject.""" + item = self.service.access.update_grant_by_subject( + identity=g.identity, + id_=resource_requestctx.view_args["pid_value"], + subject_id=resource_requestctx.view_args["subject_id"], + subject_type=self.config.grant_subject_type, + data=resource_requestctx.data, + expand=resource_requestctx.args.get("expand", False), + ) + return item.to_dict(), 200 + + # # Community's records # @@ -575,174 +764,3 @@ def delete(self): if errors: response["errors"] = errors return response, 200 - - -# IIIF decorators - -iiif_request_view_args = request_parser( - from_conf("request_view_args"), location="view_args" -) - - -def with_iiif_content_negotiation(serializer): - """Always response as JSON LD regardless of the request type.""" - return with_content_negotiation( - response_handlers={ - "application/ld+json": ResponseHandler(serializer()), - }, - default_accept_mimetype="application/ld+json", - ) - - -class IIIFResource(ErrorHandlersMixin, Resource): - """IIIF resource.""" - - def __init__(self, config, service): - """Constructor.""" - super().__init__(config) - self.service = service - - def create_url_rules(self): - """Create the URL rules for the IIIF resource.""" - routes = self.config.routes - return [ - route("GET", routes["manifest"], self.manifest), - route("GET", routes["sequence"], self.sequence), - route("GET", routes["canvas"], self.canvas), - route("GET", routes["image_base"], self.base), - route("GET", routes["image_info"], self.info), - route("GET", routes["image_api"], self.image_api), - ] - - def _get_record_with_files(self): - uuid = resource_requestctx.view_args["uuid"] - return self.service.read_record(uuid=uuid, identity=g.identity) - - # - # IIIF Manifest - not all clients support content-negotiation so we need a - # full endpoint. - # - # See https://iiif.io/api/presentation/2.1/#responses on - # "Access-Control-Allow-Origin: *" - # - @cross_origin(origin="*", methods=["GET"]) - @with_iiif_content_negotiation(IIIFManifestV2JSONSerializer) - @iiif_request_view_args - @response_handler() - def manifest(self): - """Manifest.""" - return self._get_record_with_files(), 200 - - @cross_origin(origin="*", methods=["GET"]) - @with_iiif_content_negotiation(IIIFSequenceV2JSONSerializer) - @iiif_request_view_args - @response_handler() - def sequence(self): - """Sequence.""" - return self._get_record_with_files(), 200 - - @cross_origin(origin="*", methods=["GET"]) - @with_iiif_content_negotiation(IIIFCanvasV2JSONSerializer) - @iiif_request_view_args - @response_handler() - def canvas(self): - """Canvas.""" - uuid = resource_requestctx.view_args["uuid"] - key = resource_requestctx.view_args["file_name"] - file_ = self.service.get_file(uuid=uuid, identity=g.identity, key=key) - return file_, 200 - - @cross_origin(origin="*", methods=["GET"]) - @with_iiif_content_negotiation(IIIFInfoV2JSONSerializer) - @iiif_request_view_args - @response_handler() - def base(self): - """Base.""" - item = self.service.get_file( - identity=g.identity, - uuid=resource_requestctx.view_args["uuid"], - ) - raise RedirectException(item["links"]["iiif_info"]) - - @cross_origin(origin="*", methods=["GET"]) - @with_iiif_content_negotiation(IIIFInfoV2JSONSerializer) - @iiif_request_view_args - @response_handler() - def info(self): - """Get IIIF image info.""" - item = self.service.get_file( - identity=g.identity, - uuid=resource_requestctx.view_args["uuid"], - ) - return item.to_dict(), 200 - - @cross_origin(origin="*", methods=["GET"]) - @request_headers - @request_read_args - @iiif_request_view_args - def image_api(self): - """IIIF API Implementation. - - .. note:: - * IIF IMAGE API v1.0 - * For more infos please visit . - * IIIF Image API v2.0 - * For more infos please visit . - * The API works only for GET requests - * The image process must follow strictly the following workflow: - * Region - * Size - * Rotation - * Quality - * Format - """ - image_format = resource_requestctx.view_args["image_format"] - uuid = resource_requestctx.view_args["uuid"] - region = resource_requestctx.view_args["region"] - size = resource_requestctx.view_args["size"] - rotation = resource_requestctx.view_args["rotation"] - quality = resource_requestctx.view_args["quality"] - to_serve = self.service.image_api( - identity=g.identity, - uuid=uuid, - region=region, - size=size, - rotation=rotation, - quality=quality, - image_format=image_format, - ) - # decide the mime_type from the requested image_format - mimetype = self.config.supported_formats.get(image_format, "image/jpeg") - # TODO: get from cache on the service image.last_modified - last_modified = None - send_file_kwargs = {"mimetype": mimetype} - # last_modified is not supported before flask 0.12 - if last_modified: - send_file_kwargs.update(last_modified=last_modified) - - dl = resource_requestctx.args.get("dl") - if dl is not None: - filename = secure_filename(dl) - if filename.lower() in {"", "1", "true"}: - filename = "{0}-{1}-{2}-{3}-{4}.{5}".format( - uuid, region, size, quality, rotation, image_format - ) - - send_file_kwargs.update( - as_attachment=True, - ) - if version("Flask") < "2.2.0": - send_file_kwargs.update( - attachment_filename=secure_filename(filename), - ) - else: - # Flask 2.2 renamed `attachment_filename` to `download_name` - send_file_kwargs.update( - download_name=secure_filename(filename), - ) - if_modified_since = resource_requestctx.headers.get("If-Modified-Since") - if if_modified_since and last_modified and if_modified_since >= last_modified: - raise HTTPJSONException(code=304) - - response = send_file(to_serve, **send_file_kwargs) - return response diff --git a/invenio_rdm_records/resources/serializers/__init__.py b/invenio_rdm_records/resources/serializers/__init__.py index 1cc52c783..f150cfa14 100644 --- a/invenio_rdm_records/resources/serializers/__init__.py +++ b/invenio_rdm_records/resources/serializers/__init__.py @@ -7,10 +7,20 @@ # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. -"""Record response serializers.""" +"""Record response serializers. + +ATTENTION: Serializers MUST NOT query for data (e.g. use a service)! + +The only allowed data querying is "get_vocabulary_props()" which is cached. +Querying for data in a serializer will most likely result in very bad +performance for the OAI-PMH server and search results serialzations. +""" from .bibtex import BibtexSerializer +from .cff import CFFSerializer +from .codemeta import CodemetaSerializer from .csl import CSLJSONSerializer, StringCitationSerializer +from .csv import CSVRecordSerializer from .datacite import DataCite43JSONSerializer, DataCite43XMLSerializer from .dcat import DCATSerializer from .dublincore import DublinCoreJSONSerializer, DublinCoreXMLSerializer @@ -22,22 +32,29 @@ IIIFSequenceV2JSONSerializer, ) from .marcxml import MARCXMLSerializer +from .schemaorg import SchemaorgJSONLDSerializer +from .signposting import FAIRSignpostingProfileLvl2Serializer from .ui import UIJSONSerializer __all__ = ( "BibtexSerializer", + "CFFSerializer", "CSLJSONSerializer", + "CSVRecordSerializer", "DataCite43JSONSerializer", "DataCite43XMLSerializer", "DublinCoreJSONSerializer", "DublinCoreXMLSerializer", + "FAIRSignpostingProfileLvl2Serializer", "GeoJSONSerializer", "IIIFCanvasV2JSONSerializer", "IIIFInfoV2JSONSerializer", "IIIFManifestV2JSONSerializer", "IIIFSequenceV2JSONSerializer", "MARCXMLSerializer", + "SchemaorgJSONLDSerializer", "StringCitationSerializer", "UIJSONSerializer", "DCATSerializer", + "CodemetaSerializer", ) diff --git a/invenio_rdm_records/resources/serializers/bibtex/schema.py b/invenio_rdm_records/resources/serializers/bibtex/schema.py index 64d838e56..a8c44221e 100644 --- a/invenio_rdm_records/resources/serializers/bibtex/schema.py +++ b/invenio_rdm_records/resources/serializers/bibtex/schema.py @@ -8,6 +8,7 @@ """BibTex based Schema for Invenio RDM Records.""" import datetime +import textwrap from flask_resources.serializers import BaseSerializerSchema from marshmallow import fields, post_dump @@ -31,6 +32,44 @@ class BibTexSchema(BaseSerializerSchema, CommonFieldsMixin): creator = fields.Method("get_creator") publishers = fields.Method("get_publishers") contributors = fields.Method("get_contributors") + school = fields.Method("get_school") + journal = fields.Method("get_journal") + volume = fields.Method("get_volume") + booktitle = fields.Method("get_booktitle") + number = fields.Method("get_number") + pages = fields.Method("get_pages") + note = fields.Method("get_note") + venue = fields.Method("get_venue") + url = fields.Method("get_url") + + entry_mapper = { + # Publication fields + "publication-conferencepaper": [ + BibTexFormatter.in_proceedings, + BibTexFormatter.proceedings, + ], + "publication-book": [ + BibTexFormatter.book, + BibTexFormatter.booklet, + ], + "publication-article": [BibTexFormatter.article], + "publication-preprint": [BibTexFormatter.unpublished], + "publication-thesis": [BibTexFormatter.thesis], + "publication-technicalnote": [BibTexFormatter.manual], + "publication-workingpaper": [BibTexFormatter.unpublished], + # Software + "software": [BibTexFormatter.software], + "dataset": [BibTexFormatter.dataset], + } + """Maps resource types to formats.""" + + @property + def default_entry_type(self): + """Read-only property that defines the default bibtex entry type to be used. + + The default type can be used when a resource type is not explicitely defined in ``format_mapper``. + """ + return BibTexFormatter.misc def get_date_created(self, obj): """Get date last updated.""" @@ -44,82 +83,170 @@ def get_creator(self, obj): """Get creator.""" creator = obj["metadata"]["creators"][0]["person_or_org"] return { - "given_name": creator["given_name"], - "family_name": creator["family_name"], + "name": creator["name"], } - @post_dump() - def format_record(self, data, many, **kwargs): - """Format Record depending on its type.""" - format = data["resource_id"] - format = format.replace("-", "_") + def get_booktitle(self, obj): + """Retrieves ``booktitle`` from record's custom fields. - if hasattr(BibTexFormatter, format): - # If this format has "custom" parser fields, use them - bib_fields = getattr(BibTexFormatter, format)() - else: - bib_fields = BibTexFormatter.other() # Default parser fields + :returns: book title, if found, ``None``otherwise. + """ + return obj.get("custom_fields", {}).get("imprint:imprint", {}).get("title") + + def get_pages(self, obj): + """Retrieves ``bookpages`` from record's custom fields. + + :returns: book pages, if found, ``None``otherwise. + """ + return obj.get("custom_fields", {}).get("imprint:imprint", {}).get("pages") + + def get_venue(self, obj): + """Retrieves ``venue`` from record's meeting custom fields. + + :returns: conference venue, if found, ``None``otherwise. + """ + return obj.get("custom_fields", {}).get("meeting:meeting", {}).get("place") + + def get_note(self, obj): + """Retrieves ``note`` from record's additional descriptions. + + The final note is generated by stacking all the additional descriptions of type ``other``.s + + :returns: additional note, if found, ``None``otherwise. + """ + note = "" + for description in obj.get("additional_descriptions", []): + if description["type"]["id"] == "other": + description_text = description["description"] + note += f"{description_text}\n" + return note if len(note) else None + + def get_number(self, obj): + """Retrieves ``number`` from record's custom fields. + + :returns: journal issue, if found, ``None``otherwise. + """ + return obj.get("custom_fields", {}).get("journal:journal", {}).get("issue") + + def get_volume(self, obj): + """Retrieves ``volume`` from record's custom fields. + + :returns: journal volume, if found, ``None``otherwise. + """ + return obj.get("custom_fields", {}).get("journal:journal", {}).get("volume") + + def get_journal(self, obj): + """Retrieves ``journal`` from record's custom fields. + + :returns: journal title, if found, ``None``otherwise. + """ + return obj.get("custom_fields", {}).get("journal:journal", {}).get("title") + + def get_school(self, obj): + """Retrieves ``school`` from record's custom fields. + + :returns: thesis university, if found, ``None``otherwise. + """ + return obj.get("custom_fields", {}).get("thesis:university") + + def get_url(self, obj): + """Generate url.""" + doi = obj.get("pids", {}).get("doi", {}).get("identifier") + url = None + if doi: + url = f"https://doi.org/{doi}" + return url + + @post_dump(pass_original=True) + def dump_record(self, data, original, many, **kwargs): + """Dumps record.""" + resource_type = data["resource_id"] + + fields_map = self._fetch_fields_map(data) - out = "@" + bib_fields.pop("name") + "{" - out += self._get_citation_key(data) + ",\n" - inp = self._fetch_fields(data, bib_fields) - out += self._clean_input(inp) + entry = self._get_bibtex_entry(resource_type, fields_map) + + entry_fields = entry["req_fields"] + entry["opt_fields"] + + dumped_record = self._dump_data( + entry["name"], entry_fields, fields_map, data, original + ) + return dumped_record + + def _get_bibtex_entry(self, resource_type, fields_map): + """Retrieves the Bibtex entry type for a record's resource type. + + Defaults to ``self.default_format``. + + .. code-block:: python + + format = { + "name": "misc", + "req_fields": [], + "opt_fields": ["author", "title", "month", "year", "note", "publisher", "version"] + } + + + :returns: an object with the bibtex fields for the resource types. + """ + # Every resource type is mapped to a default + entry = self.default_entry_type + if entries := self.entry_mapper.get(resource_type): + for _entry in entries: + success = all([fields_map.get(f) for f in _entry["req_fields"]]) + if success: + entry = _entry + break + return entry + + def _dump_data(self, name, entry_fields, fields, data, original): + """Dumps record data into the Bibtex format. + + :returns: the Bibtex string formatted. + """ + out = "@" + name + "{" + out += self._get_citation_key(data, original) + ",\n" + fields_string = self._parse_fields(entry_fields, fields) + out += self._clean_input(fields_string) out += "}" return out - def _fetch_fields(self, data, bib_fields): - req_fields = bib_fields["req_fields"] - non_req_fields = bib_fields.get("opt_fields", []) + ["doi", "url"] + def _parse_fields(self, entry_fields, fields): + """Parses fields into a single string.""" + out = "" + for field in entry_fields: + value = fields.get(field) + if value is not None: + out += self._format_output_row(field, value) + return out + def _fetch_fields_map(self, data): + """Retrieves fields from the record.""" # The following fields are taken from Zenodo for consistency/compatibility reasons - fields = { - "address": data.get("locations", None), # Done - "author": data.get("creators", None), # Done + return { + "address": data.get("locations", None), + "author": data.get("creators", None), "publisher": ( lambda publishers: None if publishers is None else publishers[0] - )( - data.get("publishers", None) - ), # Done + )(data.get("publishers", None)), "title": (lambda titles: None if titles is None else titles[0])( data.get("titles", None) - ), # Done - "year": data.get("date_created", {}).get("year", None), # Done - "doi": data.get("doi", None), # Done - "month": data.get("date_created", {}).get("month", None), # Done - "version": data.get("version", None), # Done - "url": (lambda doi: None if doi is None else "https://doi.org/" + doi)( - data.get("doi", None) - ), # Done - "school": data.get( - "school", None - ), # [TODO] Implement once thesis is merged - "journal": data.get( - "journal", None - ), # [TODO] Implement once journal is merged - "volume": data.get( - "volume", None - ), # [TODO] Implement once journal is merged - "booktitle": data.get( - "booktitle", None - ), # [TODO] implement book optional params - "number": data.get("number", None), # [TODO] implement book optional params - "pages": data.get("pages", None), # [TODO] implement book optional params - "note": data.get("note", None), # [TODO] Implement once notes are merged - "venue": data.get( - "venue", None - ), # [TODO] Zenodo backward compatibility issue + ), + "year": data.get("date_created", {}).get("year", None), + "doi": data.get("doi", None), + "month": data.get("date_created", {}).get("month", None), + "version": data.get("version", None), + "url": data.get("url", None), + "school": data.get("school", None), + "journal": data.get("journal", None), + "volume": data.get("volume", None), + "booktitle": data.get("booktitle", None), + "number": data.get("number", None), + "pages": data.get("pages", None), + "note": data.get("note", None), + "venue": data.get("venue", None), } - out = "" - for field in req_fields + non_req_fields: - value = fields[field] - if value is not None: - out += self._format_output_row(field, value) - elif value is None and value in req_fields: - raise ValueError("Required value not found: {0}".format(value)) - - return out - def _format_output_row(self, field, value): out = "" if isinstance(value, str): @@ -141,7 +268,7 @@ def _format_output_row(self, field, value): elif field == "month": out = " {0:<12} = {1},\n".format(field, value) elif field == "url": - out == " {0:<12} = {{{1}}}\n".format(field, value) + out = " {0:<12} = {{{1}}}\n".format(field, value) else: if not isinstance(value, list) and value.isdigit(): out = " {0:<12} = {1},\n".format(field, value) @@ -149,15 +276,16 @@ def _format_output_row(self, field, value): out = " {0:<12} = {{{1}}},\n".format(field, value) return out - def _get_citation_key(self, data): + def _get_citation_key(self, data, original_data): """Return citation key.""" id = data["id"] - creator = data.get("creator", None) - if creator is None: + creators = original_data["metadata"].get("creators", []) + if not creators: return id - name = creator.get("family_name", creator.get("given_name")) + creator = creators[0].get("person_or_org", {}) + name = creator.get("family_name", creator["name"]) pubdate = data.get("date_created", {}).get("year", None) year = id if pubdate is not None: diff --git a/invenio_rdm_records/resources/serializers/bibtex/schema_formats.py b/invenio_rdm_records/resources/serializers/bibtex/schema_formats.py index b5f3c50fb..9f7ee0870 100644 --- a/invenio_rdm_records/resources/serializers/bibtex/schema_formats.py +++ b/invenio_rdm_records/resources/serializers/bibtex/schema_formats.py @@ -9,128 +9,33 @@ class BibTexFormatter: - """Helper formater class for parsing all the following types. - - publication - publication_annotationcollection - publication_book - publication_section - publication_conferencepaper - publication_datamanagementplan - publication_article - publication_patent - publication_preprint - publication_deliverable - publication_milestone - publication_proposal - publication_report - publication_softwaredocumentation - publication_taxonomictreatment - publication_technicalnote - publication_thesis - publication_workingpaper - publication_other - poster - presentation - dataset - image - image_figure - image_plot - image_drawing - image_diagram - image_photo - image_other - video - software - lesson - other. - """ - - def format(name, req_fields, opt_fields): - """Basic output formater for BibTexFormatter.""" - return { - "name": name, - "req_fields": req_fields, - "opt_fields": opt_fields, - } - - # def publication(): - # return BibTexFormatter.other() - - # def publication_annotationcollection(): - # return BibTexFormatter.other() - - def publication_book(): - """Format book entry type. A book with an explicit publisher.""" - name = "book" - req_fields = ["author", "title", "publisher", "year"] - opt_fields = ["volume", "address", "month", "note"] - return BibTexFormatter.format(name, req_fields, opt_fields) - - # def publication_section(): - # return BibTexFormatter.other() - - # def publication_conferencepaper(): - # return BibTexFormatter.other() - - # def publication_datamanagementplan(): - # return BibTexFormatter.other() - - def publication_article(): - """Format article entry type. An article from a journal or magazine.""" - name = "article" - req_fields = ["author", "title", "journal", "year"] - opt_fields = ["volume", "number", "pages", "month", "note"] - return BibTexFormatter.format(name, req_fields, opt_fields) - - # def publication_patent(): - # return BibTexFormatter.other() - - # def publication_preprint(): - # return BibTexFormatter().other() - - # def publication_deliverable(): - # return BibTexFormatter().other() - - # def publication_milestone(): - # return BibTexFormatter().other() - - # def publication_proposal(): - # return BibTexFormatter().other() - - # def publication_report(): - # return BibTexFormatter().other() - - # def publication_softwaredocumentation(): - # return BibTexFormatter().other() - - # def publication_taxonomictreatment(): - # return BibTexFormatter().other() + """Formater class for bibtex. - # def publication_technicalnote(): - # return BibTexFormatter().other() + It defines each bibtex entry type supported by the default biblatex data model along with the fields supported by each type. - def publication_thesis(): - """Format article entry type. An article from a journal or magazine.""" - name = "phdthesis" - req_fields = ["author", "title", "school", "year"] - opt_fields = ["address", "month", "note"] - return BibTexFormatter.format(name, req_fields, opt_fields) + .. seealso:: - # def publication_other(): - # return BibTexFormatter().other() - - # def poster(): - # return BibTexFormatter().other() - - # def presentation(): - # return BibTexFormatter().other() + Entry types follow the specification from https://mirror.foobar.to/CTAN/macros/latex/contrib/biblatex/doc/biblatex.pdf and legacy Zenodo. + """ - def dataset(): - """Format dataset entry type.""" - name = "dataset" - req_fields = [] - opt_fields = [ + book = { + "name": "book", + "req_fields": ["author", "title", "publisher", "year"], + "opt_fields": ["volume", "address", "month", "note", "doi", "url"], + } + """A single-volume book.""" + + booklet = { + "name": "booklet", + "req_fields": ["title"], + "opt_fields": ["author", "address", "month", "year", "note", "doi", "url"], + } + """A book-like work without a formal publisher or sponsoring institution.""" + + misc = { + "name": "misc", + "req_fields": [], + "opt_fields": [ "author", "title", "month", @@ -138,35 +43,67 @@ def dataset(): "note", "publisher", "version", - ] - return BibTexFormatter.format(name, req_fields, opt_fields) - - # def image_figure(): - # return BibTexFormatter().other() - - # def image_plot(): - # return BibTexFormatter().other() - - # def image_drawing(): - # return BibTexFormatter().other() - - # def image_diagram(): - # return BibTexFormatter().other() - - # def image_photo(): - # return BibTexFormatter().other() - - # def image_other(): - # return BibTexFormatter().other() - - # def video(): - # return BibTexFormatter().other() - - def software(): - """Format software entry type.""" - name = "software" - req_fields = [] - opt_fields = [ + "doi", + "url", + ], + } + """A fallback type for entries which do not fit into any other category.""" + + in_proceedings = { + "name": "inproceedings", + "req_fields": ["author", "title", "booktitle", "year"], + "opt_fields": [ + "pages", + "publisher", + "address", + "month", + "note", + "venue", + "doi", + "url", + ], + } + """An article in a conference proceedings.""" + + proceedings = { + "name": "proceedings", + "req_fields": ["title", "year"], + "opt_fields": ["publisher", "address", "month", "note", "doi", "url"], + } + """A single-volume conference proceedings.""" + + article = { + "name": "article", + "req_fields": ["author", "title", "journal", "year"], + "opt_fields": ["volume", "number", "pages", "month", "note", "doi", "url"], + } + """An article in a journal, magazine, newspaper, or other periodical which forms a self-contained unit with its own title.""" + + unpublished = { + "name": "unpublished", + "req_fields": ["author", "title", "note"], + "opt_fields": ["month", "year", "doi", "url"], + } + """A work with an author and a title which has not been formally published.""" + + thesis = { + "name": "phdthesis", + "req_fields": ["author", "title", "school", "year"], + "opt_fields": ["address", "month", "note", "doi", "url"], + } + """A thesis written for an educational institution.""" + + manual = { + "name": "manual", + "req_fields": ["title"], + "opt_fields": ["author", "address", "month", "year", "note", "doi", "url"], + } + """Technical or other documentation, not necessarily in printed form.""" + + dataset = { + "name": "dataset", + "req_fields": [], + "opt_fields": [ "author", "title", "month", @@ -174,17 +111,16 @@ def software(): "note", "publisher", "version", - ] - return BibTexFormatter.format(name, req_fields, opt_fields) - - # def lesson(): - # return BibTexFormatter().other() - - def other(): - """Format misc entry type. For use when nothing else fits.""" - name = "misc" - req_fields = [] - opt_fields = [ + "doi", + "url", + ], + } + """A data set or a similar collection of (mostly) raw data.""" + + software = { + "name": "software", + "req_fields": [], + "opt_fields": [ "author", "title", "month", @@ -192,43 +128,8 @@ def other(): "note", "publisher", "version", - ] - return BibTexFormatter.format(name, req_fields, opt_fields) - - ''' Zenodo legacy fields not handled above - def _format_booklet(): - """Format article entry type. A work that is printed and bound, but without a named publisher or sponsoring institution.""" - name = "booklet" - req_fields = ["title"] - opt_fields = ["author", "address", "month", "year", "note"] - return format(name, req_fields, opt_fields) - - def _format_proceedings(): - """Format article entry type. The proceedings of a conference.""" - name = "proceedings" - req_fields = ["title", "year"] - opt_fields = ["publisher", "address", "month", "note"] - return format(name, req_fields, opt_fields) - - def _format_inproceedings(): - """Format article entry type. An article in the proceedings of a conference.""" - name = "inproceedings" - req_fields = ["author", "title", "booktitle", "year"] - opt_fields = ["pages", "publisher", "address", "month", "note", "venue"] - return format(name, req_fields, opt_fields) - - def _format_unpublished(): - """Format article entry type. A document with an author and title, but not formally published.""" - name = "unpublished" - req_fields = ["author", "title", "note"] - opt_fields = ["month", "year"] - - return format(name, req_fields, opt_fields) - - def _format_manual(): - """Format article entry type. Technical documentation.""" - name = "manual" - req_fields = ["title"] - opt_fields = ["author", "address", "month", "year", "note"] - return format(name, req_fields, opt_fields) -''' + "doi", + "url", + ], + } + """Computer software.""" diff --git a/invenio_rdm_records/resources/serializers/cff/__init__.py b/invenio_rdm_records/resources/serializers/cff/__init__.py new file mode 100644 index 000000000..8ec5d1bb7 --- /dev/null +++ b/invenio_rdm_records/resources/serializers/cff/__init__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""CFF serializer.""" + +import yaml +from flask_resources import BaseListSchema, MarshmallowSerializer +from flask_resources.serializers import SimpleSerializer + +from .schema import CFFSchema + + +class CFFSerializer(MarshmallowSerializer): + """Marshmallow based CFF serializer for records.""" + + def __init__(self, **options): + """Constructor.""" + encoder = options.get("encoder", yaml.dump) + super().__init__( + format_serializer_cls=SimpleSerializer, + object_schema_cls=CFFSchema, + list_schema_cls=BaseListSchema, + encoder=encoder, + **options, + ) diff --git a/invenio_rdm_records/resources/serializers/cff/schema.py b/invenio_rdm_records/resources/serializers/cff/schema.py new file mode 100644 index 000000000..15d4c2206 --- /dev/null +++ b/invenio_rdm_records/resources/serializers/cff/schema.py @@ -0,0 +1,241 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""CFF schema.""" + +from flask_resources.serializers import BaseSerializerSchema +from marshmallow import ValidationError, fields, missing +from marshmallow_utils.fields import SanitizedHTML, SanitizedUnicode + + +def _serialize_person(person): + """Serializes one person.""" + fam_name = person["person_or_org"].get("family_name") + giv_name = person["person_or_org"].get("given_name") + + serialized = {} + + if fam_name: + serialized.update({"family-names": fam_name}) + if giv_name: + serialized.update({"given-names": giv_name}) + + if not serialized: + return ValidationError("One of 'family-names' or 'given-names' is required.") + + identifiers = person["person_or_org"].get("identifiers", []) + affiliations = person.get("affiliations", []) + + for _id in identifiers: + if _id["scheme"] == "orcid": + serialized.update({"orcid": _id["identifier"]}) + break + + for _affiliation in affiliations: + # CFF only supports one affiliation for a person. We serialize the first one only. + serialized.update( + # Serialize the name, if given, defaults to the affiliation ID (one of both is mandatory) + {"affiliation": _affiliation.get("name", _affiliation.get("id"))} + ) + break + return serialized + + +def _serialize_org(org): + """Serializes a CFF entity (organization in RDM).""" + name = org["person_or_org"]["name"] + identifiers = org["person_or_org"].get("identifiers", []) + serialized = {"name": name} + for _id in identifiers: + if _id["scheme"] == "orcid": + serialized.update({"orcid": _id["identifier"]}) + break + return serialized + + +class CFFSchema(BaseSerializerSchema): + """CFF Schema. + + .. note:: + + The schema is defined in: + https://github.com/citation-file-format/citation-file-format/blob/main/schema-guide.md + + :raises ValidationError: when the resource type is not allowed. + """ + + allowed_types = {"software", "dataset"} + + # Legacy Zenodo is incomplete, it's a deserializer (transforms CITATION.cff to zenodo upload). + type = fields.Method("get_type") + abstract = SanitizedHTML(attribute="metadata.description") + authors = fields.Method("get_authors") + cff_version = fields.Constant("1.2.0", data_key="cff-version") + contact = fields.Method("get_contact") + date_released = fields.Method("get_date_released", data_key="date-released") + doi = fields.Method("get_doi") + identifiers = fields.Method("get_identifiers") + keywords = fields.Method("get_keywords") + license = fields.Method("get_license") + license_url = fields.Method("get_license_url", data_key="license-url") + # TODO references - related identifiers? + # TODO there are other derivations of repository + repository_code = fields.Method("get_repository_code", data_key="repository-code") + title = SanitizedUnicode(attribute="metadata.title") + version = SanitizedHTML(attribute="metadata.version") + + def get_authors(self, obj): + """Get authors.""" + metadata = obj.get("metadata", {}) + + result = [] + + creators = metadata.get("creators", []) + contributors = metadata.get("contributors", []) + + for creator in creators + contributors: + if creator["person_or_org"]["type"] == "personal": + s_author = _serialize_person(creator) + else: + s_author = _serialize_org(creator) + result.append(s_author) + + return result + + def get_contact(self, obj): + """Serializes contact person, if any.""" + metadata = obj.get("metadata", {}) + + result = {} + + authors = metadata.get("authors", []) + + for author in authors: + role = author.get("role") + if role and role["id"] == "contactperson": + if author["person_or_org"]["type"] == "personal": + result = _serialize_person(author) + else: + result = _serialize_org(author) + break + + return result or missing + + def get_date_released(self, obj): + """Serialize release date.""" + pub_date = obj.get("metadata", {}).get("publication_date") + # YYYY-MM-DD + return pub_date or missing + + def get_doi(self, obj): + """Serialize DOI.""" + doi = obj.get("pids", {}).get("doi", {}).get("identifier") + return doi or missing + + def get_identifiers(self, obj): + """Serialize identifiers. + + Each CFF accepts identifiers of the following types: + - DOI + - URL + - SWH + - Other + """ + alternate_identifiers = obj.get("metadata", {}).get("identifiers", []) + + allowed_types = ["doi", "url", "swh"] + + result = [] + for _identifier in alternate_identifiers: + serialized = {} + scheme = _identifier["scheme"] + value = _identifier["identifier"] + _type = scheme if scheme in allowed_types else "other" + serialized.update({"type": _type, "value": value}) + result.append(serialized) + + return result or missing + + def get_keywords(self, obj): + """Serialize keywords.""" + subjects = obj.get("metadata", {}).get("subjects", []) + + result = [] + for _subject in subjects: + subject_id = _subject.get("id") + custom_subject = _subject.get("subject") + if subject_id: + result.append(subject_id) + if custom_subject: + result.append(custom_subject) + return result or missing + + def get_license(self, obj): + """Serialize license. + + CFF defines a license as it's SPDX identifier, just like RDM. + """ + rights = obj.get("metadata", {}).get("rights", []) + result = [] + for right in rights: + # Only serialize licenses that have an ``id```. IDs in RDM match SPDX ids. + _id = right.get("id") + if _id: + result.append(_id) + return result + + def get_license_url(self, obj): + """Serialize non-standard licenses url. + + CFF only allows one non-standard license to be serialized. + A non-standard license, as definded by CFF, is a license without a valid SPDX id. + We serialize a non-standard license url if the license does not have an `id` AND has a `link`. + """ + rights = obj.get("metadata", {}).get("rights", []) + result = None + for right in rights: + # Only serialize licenses that have an ``id```. IDs in RDM match SPDX ids. + _id = right.get("id") + link = right.get("link") + if not _id and link: + result = link + break + return result or missing + + def get_repository_code(self, obj): + """Serialize repository code. + + As defined by CFF, a repository is represented by its URL. + The URL of the work in a source code repository. + """ + resource_type = obj.get("metadata", {}).get("resource_type", {}).get("id") + + if resource_type != "software": + return missing + + identifiers = obj.get("metadata", {}).get("related_identifiers", []) + result = None + for _identifier in identifiers: + scheme = _identifier["scheme"] + value = _identifier["identifier"] + rt = _identifier.get("resource_type", {}).get("id") + relation_type = _identifier.get("relation_type", {}).get("id") + is_sw_supplement = rt == "software" and relation_type == "issupplementto" + if scheme == "url" and is_sw_supplement: + result = value + break + return result or missing + + def get_type(self, obj): + """Serialize record type. + + Only software and dataset are allowed in CFF. + """ + resource_type = obj.get("metadata", {}).get("resource_type", {}).get("id") + if resource_type not in self.allowed_types: + return missing + + return resource_type diff --git a/invenio_rdm_records/resources/serializers/codemeta/__init__.py b/invenio_rdm_records/resources/serializers/codemeta/__init__.py new file mode 100644 index 000000000..87763cdb7 --- /dev/null +++ b/invenio_rdm_records/resources/serializers/codemeta/__init__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Codemeta serializer.""" + +from flask_resources import BaseListSchema, MarshmallowSerializer +from flask_resources.serializers import JSONSerializer + +from invenio_rdm_records.contrib.codemeta.processors import CodemetaDumper + +from .schema import CodemetaSchema + + +class CodemetaSerializer(MarshmallowSerializer): + """Marshmallow based DataCite serializer for records.""" + + def __init__(self, **options): + """Constructor.""" + super().__init__( + format_serializer_cls=JSONSerializer, + object_schema_cls=CodemetaSchema, + list_schema_cls=BaseListSchema, + schema_kwargs={"dumpers": [CodemetaDumper()]}, # Order matters + **options, + ) diff --git a/invenio_rdm_records/resources/serializers/codemeta/schema.py b/invenio_rdm_records/resources/serializers/codemeta/schema.py new file mode 100644 index 000000000..3ae948e33 --- /dev/null +++ b/invenio_rdm_records/resources/serializers/codemeta/schema.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Codemeta schema.""" + +from edtf import parse_edtf +from edtf.parser.grammar import ParseException +from marshmallow import fields, missing +from pydash import py_ + +from ..schemaorg.schema import SchemaorgSchema + + +class CodemetaSchema(SchemaorgSchema): + """CodeMeta schema. + + CodeMeta schema derives from Schema.org + """ + + identifier = fields.Method("get_id") + context = fields.Constant( + "https://doi.org/10.5063/schema/codemeta-2.0", data_key="@context" + ) + funding = fields.Method("get_funding") + embargoDate = fields.Method("get_embargo_date", data_key="embargoDate") + + def get_funding(self, obj): + """Funding CodeMeta schema.""" + funding = obj.get("metadata", {}).get("funding", []) + if not funding: + return missing + + result = None + for fund in funding: + award = fund.get("award", {}) + title = award.get("title", {}).get("en") + number = award.get("number") + grant_url = next( + ( + x["identifier"] + for x in award.get("identifiers", []) + if x["scheme"] == "url" + ), + None, + ) + if grant_url or (title and number): + result = grant_url or f"{title} ({number})" + break + + return result or missing + + def get_embargo_date(self, obj): + """Get embargo date.""" + is_embargo = py_.get(obj, "access.embargo.active") + + if not is_embargo: + return missing + + parsed_date = None + try: + parsed_date = parse_edtf(py_.get(obj, "access.embargo")) + except ParseException: + pass + return parsed_date or missing diff --git a/invenio_rdm_records/resources/serializers/csl/schema.py b/invenio_rdm_records/resources/serializers/csl/schema.py index ae23f2c99..e6d0f24ca 100644 --- a/invenio_rdm_records/resources/serializers/csl/schema.py +++ b/invenio_rdm_records/resources/serializers/csl/schema.py @@ -1,23 +1,22 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """CSL based Schema for Invenio RDM Records.""" -from edtf import parse_edtf +from babel_edtf import parse_edtf from edtf.parser.edtf_exceptions import EDTFParseException from edtf.parser.parser_classes import Date, Interval from flask_resources.serializers import BaseSerializerSchema -from invenio_access.permissions import system_identity -from invenio_records_resources.proxies import current_service_registry -from invenio_vocabularies.proxies import current_service as vocabulary_service from marshmallow import Schema, fields, missing, pre_dump from marshmallow_utils.fields import SanitizedUnicode, StrippedHTML +from pydash import py_ -from ..utils import get_preferred_identifier +from ..schemas import CommonFieldsMixin +from ..utils import get_vocabulary_props class CSLCreatorSchema(Schema): @@ -46,7 +45,7 @@ def add_if_not_none(year, month, day): return _list -class CSLJSONSchema(BaseSerializerSchema): +class CSLJSONSchema(BaseSerializerSchema, CommonFieldsMixin): """CSL Marshmallow Schema.""" id_ = SanitizedUnicode(data_key="id", attribute="id") @@ -57,31 +56,34 @@ class CSLJSONSchema(BaseSerializerSchema): issued = fields.Method("get_issued") language = fields.Method("get_language") version = SanitizedUnicode(attribute="metadata.version") - note = fields.Method("get_note") - doi = fields.Str(attribute="pids.doi.identifier", data_key="DOI") + doi = fields.Method("get_doi", data_key="DOI") isbn = fields.Method("get_isbn", data_key="ISBN") issn = fields.Method("get_issn", data_key="ISSN") publisher = SanitizedUnicode(attribute="metadata.publisher") - def _read_resource_type(self, id_): - """Retrieve resource type record using service.""" - rec = vocabulary_service.read(system_identity, ("resourcetypes", id_)) - return rec._record - def get_type(self, obj): """Get resource type.""" - resource_type = obj["metadata"].get( - "resource_type", {"id": "publication-article"} - ) + resource_type_id = py_.get(obj, "metadata.resource_type.id") + if not resource_type_id: + return missing - resource_type_record = self._read_resource_type(resource_type["id"]) - props = resource_type_record["props"] + props = get_vocabulary_props( + "resourcetypes", + [ + "props.csl", + ], + resource_type_id, + ) return props.get("csl", "article") # article is CSL "Other" def get_issued(self, obj): """Get issued dates.""" + publication_date = py_.get(obj, "metadata.publication_date") + if not publication_date: + return missing + try: - parsed = parse_edtf(obj["metadata"].get("publication_date")) + parsed = parse_edtf(publication_date) except EDTFParseException: return missing @@ -111,7 +113,7 @@ def get_isbn(self, obj): """Get ISBN.""" identifiers = obj["metadata"].get("identifiers", []) for identifier in identifiers: - if identifier["scheme"] == "ISBN": + if identifier["scheme"] == "isbn": return identifier["identifier"] return missing @@ -120,31 +122,7 @@ def get_issn(self, obj): """Get ISSN.""" identifiers = obj["metadata"].get("identifiers", []) for identifier in identifiers: - if identifier["scheme"] == "ISSN": + if identifier["scheme"] == "issn": return identifier["identifier"] return missing - - def get_note(self, obj): - """Get note from funders.""" - funding = obj["metadata"].get("funding") - if funding: - funder = funding[0]["funder"] - id_ = funder.get("id") - if id_: - funder_service = current_service_registry.get("funders") - funder = funder_service.read(system_identity, id_).to_dict() - - note = f"Funding by {funder['name']}" - identifiers = funder.get("identifiers", []) - identifier = get_preferred_identifier( - priority=("ror", "grid", "doi", "isni", "gnd"), identifiers=identifiers - ) - - if identifier: - note += ( - f" {identifier['scheme'].upper()} " f"{identifier['identifier']}." - ) - return note - - return missing diff --git a/invenio_rdm_records/resources/serializers/csv/__init__.py b/invenio_rdm_records/resources/serializers/csv/__init__.py new file mode 100644 index 000000000..574dd5db1 --- /dev/null +++ b/invenio_rdm_records/resources/serializers/csv/__init__.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""CSV Serializer for Invenio RDM Records.""" + +from flask_resources.serializers import CSVSerializer + + +class CSVRecordSerializer(CSVSerializer): + """Marshmallow based CSV serializer for records.""" + + def __init__(self, **options): + """Constructor.""" + super().__init__(header_separator=".", **options) diff --git a/invenio_rdm_records/resources/serializers/datacite/__init__.py b/invenio_rdm_records/resources/serializers/datacite/__init__.py index 0ac06f0bd..fe7fcdc0f 100644 --- a/invenio_rdm_records/resources/serializers/datacite/__init__.py +++ b/invenio_rdm_records/resources/serializers/datacite/__init__.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """DataCite Serializers for Invenio RDM Records.""" + from datacite import schema43 from flask_resources import BaseListSchema, MarshmallowSerializer from flask_resources.serializers import JSONSerializer, SimpleSerializer @@ -24,7 +25,7 @@ def __init__(self, **options): object_schema_cls=DataCite43Schema, list_schema_cls=BaseListSchema, schema_kwargs={"dumpers": [JournalDataciteDumper()]}, # Order matters - **options + **options, ) diff --git a/invenio_rdm_records/resources/serializers/datacite/schema.py b/invenio_rdm_records/resources/serializers/datacite/schema.py index cf3556f3d..82d685e41 100644 --- a/invenio_rdm_records/resources/serializers/datacite/schema.py +++ b/invenio_rdm_records/resources/serializers/datacite/schema.py @@ -1,30 +1,54 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021 Northwestern University. # Copyright (C) 2023 Graz University of Technology. +# Copyright (C) 2023 Caltech. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """DataCite based Schema for Invenio RDM Records.""" -from edtf import parse_edtf +from babel_edtf import parse_edtf from edtf.parser.grammar import ParseException from flask import current_app from flask_resources.serializers import BaseSerializerSchema from invenio_access.permissions import system_identity from invenio_i18n import lazy_gettext as _ from invenio_records_resources.proxies import current_service_registry -from invenio_vocabularies.proxies import current_service as vocabulary_service from marshmallow import Schema, ValidationError, fields, missing, post_dump, validate from marshmallow_utils.fields import SanitizedUnicode from marshmallow_utils.html import strip_html +from pydash import py_ from ....proxies import current_rdm_records_service from ...serializers.ui.schema import current_default_locale from ..utils import get_preferred_identifier, get_vocabulary_props +RELATED_IDENTIFIER_SCHEMES = { + "ark", + "arxiv", + "bibcode", + "doi", + "ean13", + "eissn", + "handle", + "igsn", + "isbn", + "issn", + "istc", + "lissn", + "lsid1", + "pmid", + "purl", + "upc", + "url", + "urn", + "w3id", +} +"""Allowed related identifier schemes for DataCite. Vocabulary taken from DataCite 4.3 schema definition.""" + def get_scheme_datacite(scheme, config_name, default=None): """Returns the datacite equivalent of a scheme.""" @@ -54,9 +78,7 @@ def get_name_identifiers(self, obj): for identifier in identifiers: scheme = identifier["scheme"] id_scheme = get_scheme_datacite( - scheme, - "RDM_RECORDS_PERSONORG_SCHEMES", - default=scheme, + scheme, "RDM_RECORDS_PERSONORG_SCHEMES", default=scheme ) if id_scheme: @@ -76,24 +98,12 @@ def get_affiliation(self, obj): return missing serialized_affiliations = [] - ids = [] for affiliation in affiliations: + # name is mandatory with or without link to affiliation vocabulary + aff = {"name": affiliation["name"]} id_ = affiliation.get("id") if id_: - ids.append(id_) - else: - # if no id, name is mandatory - serialized_affiliations.append({"name": affiliation["name"]}) - - if ids: - affiliations_service = current_service_registry.get("affiliations") - affiliations = affiliations_service.read_many(system_identity, ids) - - for affiliation in affiliations: - aff = { - "name": affiliation["name"], - } identifiers = affiliation.get("identifiers") if identifiers: # FIXME: Make configurable @@ -126,8 +136,7 @@ def get_affiliation(self, obj): if id_scheme: aff["affiliationIdentifier"] = identifier_value aff["affiliationIdentifierScheme"] = id_scheme - - serialized_affiliations.append(aff) + serialized_affiliations.append(aff) return serialized_affiliations @@ -198,10 +207,14 @@ class DataCite43Schema(BaseSerializerSchema): def get_type(self, obj): """Get resource type.""" + resource_type_id = py_.get(obj, "metadata.resource_type.id") + if not resource_type_id: + return missing + props = get_vocabulary_props( "resourcetypes", ["props.datacite_general", "props.datacite_type"], - obj["metadata"]["resource_type"]["id"], + resource_type_id, ) return { "resourceTypeGeneral": props.get("datacite_general", "Other"), @@ -253,8 +266,11 @@ def get_descriptions(self, obj): def get_publication_year(self, obj): """Get publication year from edtf date.""" + publication_date = py_.get(obj, "metadata.publication_date") + if not publication_date: + return missing + try: - publication_date = obj["metadata"]["publication_date"] parsed_date = parse_edtf(publication_date) return str(parsed_date.lower_strict().tm_year) except ParseException: @@ -266,10 +282,15 @@ def get_publication_year(self, obj): def get_dates(self, obj): """Get dates.""" - dates = [{"date": obj["metadata"]["publication_date"], "dateType": "Issued"}] + pub_date = py_.get(obj, "metadata.publication_date") + dates = [{"date": pub_date, "dateType": "Issued"}] if pub_date else [] + + updated = False for date in obj["metadata"].get("dates", []): date_type_id = date.get("type", {}).get("id") + if date_type_id == "updated": + updated = True props = get_vocabulary_props("datetypes", ["props.datacite"], date_type_id) to_append = { "date": date["date"], @@ -281,6 +302,19 @@ def get_dates(self, obj): dates.append(to_append) + if not updated: + try: + updated_date = obj["updated"] + except KeyError: + pass + # If no update date is present, do nothing. Happens with some tests, but should not in live repository + else: + to_append = { + "date": updated_date.split("T")[0], + "dateType": "Updated", + } + dates.append(to_append) + return dates or missing def get_language(self, obj): @@ -294,23 +328,26 @@ def get_language(self, obj): def get_identifiers(self, obj): """Get (main and alternate) identifiers list.""" + # Add local URL serialized_identifiers = [] - + links = obj.get("links") + if links: + serialized_identifiers.append( + { + "identifier": obj["links"]["self_html"], + "identifierType": "URL", + } + ) # pids go first so the DOI from the record is included pids = obj["pids"] for scheme, id_ in pids.items(): id_scheme = get_scheme_datacite( - scheme, - "RDM_RECORDS_IDENTIFIERS_SCHEMES", - default=scheme, + scheme, "RDM_RECORDS_IDENTIFIERS_SCHEMES", default=scheme ) if id_scheme: serialized_identifiers.append( - { - "identifier": id_["identifier"], - "identifierType": id_scheme, - } + {"identifier": id_["identifier"], "identifierType": id_scheme} ) # Identifiers field @@ -326,10 +363,7 @@ def get_identifiers(self, obj): # dropped if id_scheme != "DOI": serialized_identifiers.append( - { - "identifier": id_["identifier"], - "identifierType": id_scheme, - } + {"identifier": id_["identifier"], "identifierType": id_scheme} ) return serialized_identifiers or missing @@ -347,12 +381,11 @@ def get_related_identifiers(self, obj): scheme = rel_id["scheme"] id_scheme = get_scheme_datacite( - scheme, - "RDM_RECORDS_IDENTIFIERS_SCHEMES", - default=scheme, + scheme, "RDM_RECORDS_IDENTIFIERS_SCHEMES", default=scheme ) - if id_scheme: + # Only serialize related identifiers with a valid scheme for DataCite. + if id_scheme and id_scheme.lower() in RELATED_IDENTIFIER_SCHEMES: serialized_identifier = { "relatedIdentifier": rel_id["identifier"], "relationType": props.get("datacite", ""), @@ -379,7 +412,7 @@ def get_related_identifiers(self, obj): # Fetch DOIs for all versions # NOTE: The refresh is safe to do here since we'll be in Celery task current_rdm_records_service.indexer.refresh() - record_versions = current_rdm_records_service.search_versions( + record_versions = current_rdm_records_service.scan_versions( system_identity, obj._child["id"], params={"_source_includes": "pids.doi"}, @@ -404,7 +437,7 @@ def get_related_identifiers(self, obj): if hasattr(obj, "parent"): parent_record = obj.parent else: - parent_record = obj["parent"] + parent_record = obj.get("parent", {}) parent_doi = parent_record.get("pids", {}).get("doi") if parent_doi: @@ -413,14 +446,27 @@ def get_related_identifiers(self, obj): "RDM_RECORDS_IDENTIFIERS_SCHEMES", default="doi", ) - serialized_identifiers.append( - { - "relatedIdentifier": parent_doi["identifier"], - "relationType": "IsVersionOf", - "relatedIdentifierType": id_scheme, - } - ) + if id_scheme.lower() in RELATED_IDENTIFIER_SCHEMES: + serialized_identifiers.append( + { + "relatedIdentifier": parent_doi["identifier"], + "relationType": "IsVersionOf", + "relatedIdentifierType": id_scheme, + } + ) + # adding communities + communities = obj.get("parent", {}).get("communities", {}).get("entries", []) + for community in communities: + slug = community.get("slug") + url = f"{current_app.config['SITE_UI_URL']}/communities/{slug}" + serialized_identifiers.append( + { + "relatedIdentifier": url, + "relationType": "IsPartOf", + "relatedIdentifierType": "URL", + } + ) return serialized_identifiers or missing def get_locations(self, obj): @@ -437,12 +483,45 @@ def get_locations(self, obj): if geometry: geo_type = geometry["type"] # PIDS-FIXME: Scalable enough? - # PIDS-FIXME: Implement Box and Polygon serialization if geo_type == "Point": serialized_location["geoLocationPoint"] = { - "pointLatitude": geometry["coordinates"][0], - "pointLongitude": geometry["coordinates"][1], + "pointLongitude": str(geometry["coordinates"][0]), + "pointLatitude": str(geometry["coordinates"][1]), } + elif geo_type == "Polygon": + # geojson has a layer of nesting before actual coordinates + coords = geometry["coordinates"][0] + # First we see if we have a box + box = False + if len(coords) in [4, 5]: + # A box polygon may wrap around with 5 coordinates + x_coords = set() + y_coords = set() + for coord in coords: + x_coords.add(coord[0]) + y_coords.add(coord[1]) + if len(x_coords) == 2 and len(y_coords) == 2: + x_coords = sorted(x_coords) + y_coords = sorted(y_coords) + serialized_location["geoLocationBox"] = { + "westBoundLongitude": str(x_coords[0]), + "eastBoundLongitude": str(x_coords[1]), + "southBoundLatitude": str(y_coords[0]), + "northBoundLatitude": str(y_coords[1]), + } + box = True + if not box: + polygon = [] + for coord in coords: + polygon.append( + { + "polygonPoint": { + "pointLongitude": str(coord[0]), + "pointLatitude": str(coord[1]), + } + } + ) + serialized_location["geoLocationPolygon"] = polygon locations.append(serialized_location) return locations or missing @@ -453,33 +532,22 @@ def get_subjects(self, obj): if not subjects: return missing + validator = validate.URL() serialized_subjects = [] - ids = [] + for subject in subjects: - _id = subject.get("id") - if _id: - ids.append(_id) - else: - serialized_subjects.append({"subject": subject.get("subject")}) - - if ids: - subjects_service = current_service_registry.get("subjects") - subjects = subjects_service.read_many(system_identity, ids) - validator = validate.URL() - for subject in subjects: - serialized_subj = { - "subject": subject.get("subject"), - "subjectScheme": subject.get("scheme"), - } - id_ = subject.get("id") + entry = {"subject": subject.get("subject")} + id_ = subject.get("id") + if id_: + entry["subjectScheme"] = subject.get("scheme") try: validator(id_) - serialized_subj["valueURI"] = id_ + entry["valueURI"] = id_ except ValidationError: pass - serialized_subjects.append(serialized_subj) + serialized_subjects.append(entry) return serialized_subjects if serialized_subjects else missing @@ -490,47 +558,34 @@ def get_rights(self, obj): return missing serialized_rights = [] - ids = [] for right in rights: - _id = right.get("id") - if _id: - ids.append(_id) - else: - serialized_right = { - "rights": right.get("title").get(current_default_locale()), - } - - link = right.get("link") - if link: - serialized_right["rightsUri"] = link - - serialized_rights.append(serialized_right) + entry = {"rights": right.get("title", {}).get(current_default_locale())} - if ids: - rights = vocabulary_service.read_many(system_identity, "licenses", ids) - for right in rights: - serialized_right = { - "rights": right.get("title").get(current_default_locale()), - "rightsIdentifierScheme": right.get("props").get("scheme"), - "rightsIdentifier": right.get("id"), - } - link = right.get("props").get("url") - if link: - serialized_right["rightsUri"] = link + id_ = right.get("id") + if id_: + entry["rightsIdentifier"] = right.get("id") + entry["rightsIdentifierScheme"] = right.get("props", {}).get("scheme") - serialized_rights.append(serialized_right) + # Get url from props (vocabulary) or link (custom license) + link = right.get("props", {}).get("url") or right.get("link", {}) + if link: + entry["rightsUri"] = link + serialized_rights.append(entry) return serialized_rights if serialized_rights else missing def get_funding(self, obj): """Get funding references.""" # constants - DATACITE_FUNDER_IDENTIFIER_TYPES_PREFERENCE = ( - "ror", - "grid", - "doi", - "isni", - "gnd", + FUNDER_ID_TYPES_PREF = current_app.config.get( + "RDM_DATACITE_FUNDER_IDENTIFIERS_PRIORITY", + ( + "ror", + "doi", + "grid", + "isni", + "gnd", + ), ) DATACITE_AWARD_IDENTIFIER_TYPES_PREFERENCE = ("doi", "url") TO_FUNDER_IDENTIFIER_TYPES = { @@ -546,17 +601,10 @@ def get_funding(self, obj): # funder, if there is an item in the list it must have a funder funding_ref = {} funder = funding.get("funder", {}) - id_ = funder.get("id") - if id_: - funder_service = current_service_registry.get("funders") - funder = funder_service.read(system_identity, id_).to_dict() - funding_ref["funderName"] = funder["name"] identifiers = funder.get("identifiers", []) if identifiers: - identifier = get_preferred_identifier( - DATACITE_FUNDER_IDENTIFIER_TYPES_PREFERENCE, identifiers - ) + identifier = get_preferred_identifier(FUNDER_ID_TYPES_PREF, identifiers) if not identifier: identifier = identifiers[0] identifier["scheme"] = "Other" @@ -569,16 +617,7 @@ def get_funding(self, obj): # award award = funding.get("award") if award: # having an award is optional - id_ = award.get("id") - if id_: - # FIXME: should this be implemented at awards service read - # level since all ids are loaded into the system with this - # format? - award_service = current_service_registry.get("awards") - award = award_service.read(system_identity, id_).to_dict() - - title = award.get("title", {}) - funding_ref["awardTitle"] = title.get("en", missing) + funding_ref["awardTitle"] = award.get("title", {}).get("en", missing) funding_ref["awardNumber"] = award["number"] identifiers = award.get("identifiers", []) diff --git a/invenio_rdm_records/resources/serializers/dcat/__init__.py b/invenio_rdm_records/resources/serializers/dcat/__init__.py index 315846dbe..25cc8d02f 100644 --- a/invenio_rdm_records/resources/serializers/dcat/__init__.py +++ b/invenio_rdm_records/resources/serializers/dcat/__init__.py @@ -1,26 +1,38 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN +# Copyright (C) 2023-2024 CERN # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Datacite to DCAT serializer.""" +import mimetypes + from datacite import schema43 +from flask_resources import BaseListSchema, MarshmallowSerializer +from flask_resources.serializers import SimpleSerializer from lxml import etree as ET from pkg_resources import resource_stream from werkzeug.utils import cached_property -from invenio_rdm_records.resources.serializers import DataCite43XMLSerializer +from ....contrib.journal.processors import JournalDataciteDumper +from ....resources.serializers.dcat.schema import DcatSchema -class DCATSerializer(DataCite43XMLSerializer): +class DCATSerializer(MarshmallowSerializer): """DCAT serializer for records.""" def __init__(self, **options): """Constructor.""" - super().__init__(encoder=self._etree_tostring) + super().__init__( + format_serializer_cls=SimpleSerializer, + object_schema_cls=DcatSchema, + list_schema_cls=BaseListSchema, + schema_kwargs={"dumpers": [JournalDataciteDumper()]}, # Order matters + encoder=self._etree_tostring, + **options, + ) def _etree_tostring(self, record, **kwargs): root = self.transform_with_xslt(record, **kwargs) @@ -41,6 +53,46 @@ def xslt_transform_func(self): transform = ET.XSLT(xsl) return transform + def _add_files(self, root, files): + """Add files information via distribution elements.""" + ns = root.nsmap + + def download_url(file): + url = file.get("download_url") + return {"{{{rdf}}}resource".format(**ns): url} if url else None + + def media_type(file): + return mimetypes.guess_type(file["key"])[0] + + def byte_size(file): + return str(file["size"]) if file.get("size") else None + + def access_url(file): + url = file.get("access_url") + return {"{{{rdf}}}resource".format(**ns): url} if url else None + + files_fields = { + "{{{dcat}}}downloadURL": download_url, + "{{{dcat}}}mediaType": media_type, + "{{{dcat}}}byteSize": byte_size, + "{{{dcat}}}accessURL": access_url, + # TODO: there's also "spdx:checksum", but it's not in the W3C spec yet + } + + for f in files: + dist_wrapper = ET.SubElement(root[0], "{{{dcat}}}distribution".format(**ns)) + dist = ET.SubElement(dist_wrapper, "{{{dcat}}}Distribution".format(**ns)) + + for tag, func in files_fields.items(): + tag_value = func(f) + + if tag_value: + el = ET.SubElement(dist, tag.format(**ns)) + if isinstance(tag_value, str): + el.text = tag_value + if isinstance(tag_value, dict): + el.attrib.update(tag_value) + def transform_with_xslt(self, dc_record, **kwargs): """Transform record with XSLT.""" dc_etree = schema43.dump_etree(dc_record) @@ -48,4 +100,11 @@ def transform_with_xslt(self, dc_record, **kwargs): dc_etree.tag = "{{{0}}}resource".format(dc_namespace) dcat_etree = self.xslt_transform_func(dc_etree).getroot() + # Inject files in results (since the XSLT can't do that by default) + files_data = dc_record.get("_files", []) + if files_data: + self._add_files( + root=dcat_etree, + files=files_data, + ) return dcat_etree diff --git a/invenio_rdm_records/resources/serializers/dcat/datacite-to-dcat-ap.xsl b/invenio_rdm_records/resources/serializers/dcat/datacite-to-dcat-ap.xsl index 8ff5dc95a..94b24da04 100644 --- a/invenio_rdm_records/resources/serializers/dcat/datacite-to-dcat-ap.xsl +++ b/invenio_rdm_records/resources/serializers/dcat/datacite-to-dcat-ap.xsl @@ -19,6 +19,8 @@ Authors: European Commission, Joint Research Centre (JRC) Andrea Perego (https://github.com/andrea-perego) + Source code: https://github.com/ec-jrc/datacite-to-dcat-ap + --> http://www.w3.org/2004/02/skos/core# http://purl.org/ontology/bibo/ https://w3id.org/citedcat-ap/ + http://www.w3.org/ns/prov# diff --git a/invenio_rdm_records/resources/serializers/dcat/schema.py b/invenio_rdm_records/resources/serializers/dcat/schema.py new file mode 100644 index 000000000..0d5060128 --- /dev/null +++ b/invenio_rdm_records/resources/serializers/dcat/schema.py @@ -0,0 +1,51 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Dcat based Schema for Invenio RDM Records.""" + +import idutils +from flask import current_app +from marshmallow import fields, missing +from marshmallow_utils.html import sanitize_unicode + +from invenio_rdm_records.resources.serializers.datacite import DataCite43Schema + + +class DcatSchema(DataCite43Schema): + """Dcat Marshmallow Schema.""" + + _files = fields.Method("get_files") + + def get_files(self, obj): + """Get files.""" + files_enabled = obj["files"].get("enabled", False) + if not files_enabled: + return missing + files_entries = obj["files"].get("entries", {}) + record_id = obj["id"] + files_list = [] + for key, value in files_entries.items(): + file_name = sanitize_unicode( + value["key"] + ) # There can be inconsistencies in the file name i.e. if the file name consists of invalid XML characters + url = f"{current_app.config['SITE_UI_URL']}/records/{record_id}/files/{file_name}" + access_url = None + if "doi" in obj["pids"]: + access_url = idutils.to_url( + obj["pids"]["doi"]["identifier"], "doi", url_scheme="https" + ) + + files_list.append( + dict( + size=str(value["size"]), + access_url=access_url, + download_url=url, + key=value["key"], + ) + ) + + return files_list or missing diff --git a/invenio_rdm_records/resources/serializers/dublincore/__init__.py b/invenio_rdm_records/resources/serializers/dublincore/__init__.py index 4cc700bd8..48737d83c 100644 --- a/invenio_rdm_records/resources/serializers/dublincore/__init__.py +++ b/invenio_rdm_records/resources/serializers/dublincore/__init__.py @@ -11,9 +11,8 @@ from flask_resources import BaseListSchema, MarshmallowSerializer from flask_resources.serializers import JSONSerializer, SimpleSerializer -from invenio_rdm_records.contrib.journal.processors import JournalDublinCoreDumper -from invenio_rdm_records.contrib.meeting.processors import MeetingDublinCoreDumper - +from ....contrib.journal.processors import JournalDublinCoreDumper +from ....contrib.meeting.processors import MeetingDublinCoreDumper from .schema import DublinCoreSchema diff --git a/invenio_rdm_records/resources/serializers/dublincore/schema.py b/invenio_rdm_records/resources/serializers/dublincore/schema.py index e1929c575..541b762a7 100644 --- a/invenio_rdm_records/resources/serializers/dublincore/schema.py +++ b/invenio_rdm_records/resources/serializers/dublincore/schema.py @@ -9,10 +9,10 @@ import bleach import idutils +from flask import current_app from flask_resources.serializers import BaseSerializerSchema -from invenio_access.permissions import system_identity -from invenio_vocabularies.proxies import current_service as vocabulary_service from marshmallow import fields, missing +from pydash import py_ from ..schemas import CommonFieldsMixin from ..ui.schema import current_default_locale @@ -92,49 +92,47 @@ def get_relations(self, obj): # FIXME: Add after UI support is there # Alternate identifiers - for a in obj["metadata"].get("alternate_identifiers", []): + for a in obj.get("metadata", {}).get("alternate_identifiers", []): rels.append(self._transform_identifier(a["identifier"], a["scheme"])) # Related identifiers - for a in obj["metadata"].get("related_identifiers", []): + for a in obj.get("metadata", {}).get("related_identifiers", []): rels.append(self._transform_identifier(a["identifier"], a["scheme"])) + # Communities + communities = obj.get("parent", {}).get("communities", {}).get("entries", []) + for community in communities: + slug = community["slug"] + url = f"{current_app.config['SITE_UI_URL']}/communities/{slug}" + rels.append(self._transform_identifier(url, "url")) + + # Parent doi + parent_pids = obj.get("parent", {}).get("pids", {}) + for key, value in parent_pids.items(): + if key == "doi": + rels.append(self._transform_identifier(value["identifier"], key)) + return rels or missing def get_rights(self, obj): """Get rights.""" rights = [] - access_right = obj["access"]["status"] - if access_right == "metadata-only": - access_right = "closed" - - rights.append(f"info:eu-repo/semantics/{access_right}Access") + access_right = py_.get(obj, "access.status") + if access_right: + if access_right == "metadata-only": + access_right = "closed" - ids = [] - for right in obj["metadata"].get("rights", []): - _id = right.get("id") - if _id: - ids.append(_id) - else: - title = right.get("title").get(current_default_locale()) - if title: - rights.append(title) + rights.append(f"info:eu-repo/semantics/{access_right}Access") - license_url = right.get("link") + for right in obj.get("metadata", {}).get("rights", []): + rights.append(right.get("title").get(current_default_locale())) + if right.get("id"): + license_url = right.get("props", {}).get("url") if license_url: rights.append(license_url) - - if ids: - vocab_rights = vocabulary_service.read_many( - system_identity, "licenses", ids - ) - for right in vocab_rights: - title = right.get("title").get(current_default_locale()) - if title: - rights.append(title) - - license_url = right.get("props").get("url") + else: + license_url = right.get("link") if license_url: rights.append(license_url) @@ -142,9 +140,14 @@ def get_rights(self, obj): def get_dates(self, obj): """Get dates.""" - dates = [obj["metadata"]["publication_date"]] + dates = [] + + publication_date = py_.get(obj, "metadata.publication_date") + if publication_date: + dates.append(publication_date) - if obj["access"]["status"] == "embargoed": + access_right = py_.get(obj, "access.status") + if access_right == "embargoed": date = obj["access"]["embargo"]["until"] dates.append(f"info:eu-repo/date/embargoEnd/{date}") @@ -166,8 +169,6 @@ def get_descriptions(self, obj): descriptions = [ bleach.clean( desc, - strip=True, - strip_comments=True, tags=[], attributes=[], ) @@ -187,12 +188,16 @@ def get_subjects(self, obj): def get_types(self, obj): """Get resource type.""" + resource_type_id = py_.get(obj, "metadata.resource_type.id") + if not resource_type_id: + return missing + props = get_vocabulary_props( "resourcetypes", [ "props.eurepo", ], - obj["metadata"]["resource_type"]["id"], + resource_type_id, ) t = props.get("eurepo") return [t] if t else missing diff --git a/invenio_rdm_records/resources/serializers/geojson/__init__.py b/invenio_rdm_records/resources/serializers/geojson/__init__.py index b62058a00..0a75908de 100644 --- a/invenio_rdm_records/resources/serializers/geojson/__init__.py +++ b/invenio_rdm_records/resources/serializers/geojson/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN +# Copyright (C) 2023-2024 CERN # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -22,5 +22,5 @@ def __init__(self, **options): format_serializer_cls=JSONSerializer, object_schema_cls=GeoJSONSchema, list_schema_cls=BaseListSchema, - **options + **options, ) diff --git a/invenio_rdm_records/resources/serializers/iiif/__init__.py b/invenio_rdm_records/resources/serializers/iiif/__init__.py index b5b3eb92b..784eb4ecc 100644 --- a/invenio_rdm_records/resources/serializers/iiif/__init__.py +++ b/invenio_rdm_records/resources/serializers/iiif/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021 data-futures. # Copyright (C) 2022 Universität Hamburg. # @@ -29,7 +29,7 @@ def __init__(self, **options): format_serializer_cls=JSONSerializer, object_schema_cls=IIIFInfoV2Schema, list_schema_cls=BaseListSchema, - **options + **options, ) @@ -42,7 +42,7 @@ def __init__(self, **options): format_serializer_cls=JSONSerializer, object_schema_cls=IIIFSequenceV2Schema, list_schema_cls=BaseListSchema, - **options + **options, ) @@ -55,7 +55,7 @@ def __init__(self, **options): format_serializer_cls=JSONSerializer, object_schema_cls=IIIFCanvasV2Schema, list_schema_cls=BaseListSchema, - **options + **options, ) @@ -68,5 +68,5 @@ def __init__(self, **options): format_serializer_cls=JSONSerializer, object_schema_cls=IIIFManifestV2Schema, list_schema_cls=BaseListSchema, - **options + **options, ) diff --git a/invenio_rdm_records/resources/serializers/iiif/schema.py b/invenio_rdm_records/resources/serializers/iiif/schema.py index f61d93cef..882ecdd75 100644 --- a/invenio_rdm_records/resources/serializers/iiif/schema.py +++ b/invenio_rdm_records/resources/serializers/iiif/schema.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021-2023 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021 data-futures. # Copyright (C) 2022 Universität Hamburg. # @@ -11,7 +11,7 @@ from flask import current_app from flask_babel import lazy_gettext as _ -from marshmallow import Schema, fields, missing, post_dump +from marshmallow import Schema, fields, missing, post_dump, pre_dump class SelfList(fields.List): @@ -132,11 +132,25 @@ class ListIIIFFilesAttribute(fields.List): def get_value(self, obj, *args, **kwargs): """Return the value for a given key from an object attribute.""" - return [ - f - for f in obj["files"].get("entries", {}).values() - if f["ext"] in current_app.config["IIIF_FORMATS"] - ] + iiif_config = current_app.config.get("IIIF_TILES_CONVERTER_PARAMS") + valid_metadata = ( + lambda x: x + and x["height"] > iiif_config["tile_height"] + and x["width"] > iiif_config["tile_width"] + ) + formats = current_app.config["RDM_IIIF_MANIFEST_FORMATS"] + + def filter_entries(entries): + return [ + f + for f in entries.values() + if f["ext"] in formats and valid_metadata(f["metadata"]) + ] + + files_entries = obj.get("files", {}).get("entries", {}) + media_files_entries = obj.get("media_files", {}).get("entries", {}) + + return filter_entries(files_entries) + filter_entries(media_files_entries) class IIIFSequenceV2Schema(Schema): @@ -152,7 +166,7 @@ class Meta: label = fields.Constant(_("Current Page Order")) viewingDirection = fields.Constant("left-to-right") - viewingHint = fields.Constant("paged") + viewingHint = fields.Constant("individuals") canvases = ListIIIFFilesAttribute( fields.Nested(IIIFCanvasV2Schema), attribute="files.entries" @@ -203,9 +217,6 @@ def get_metadata(self, obj): @post_dump def sortcanvases(self, manifest, many, **kwargs): - """Sort files by key. - - TODO: should sorting be done elsewhere? - """ - # manifest["sequences"][0]["canvases"].sort(key=lambda x: x["@id"]) + """Sort files by key.""" + manifest["sequences"][0]["canvases"].sort(key=lambda x: x["@id"]) return manifest diff --git a/invenio_rdm_records/resources/serializers/marcxml/__init__.py b/invenio_rdm_records/resources/serializers/marcxml/__init__.py index ee9764c55..a5de822a6 100644 --- a/invenio_rdm_records/resources/serializers/marcxml/__init__.py +++ b/invenio_rdm_records/resources/serializers/marcxml/__init__.py @@ -12,6 +12,7 @@ from flask_resources.serializers import SimpleSerializer from lxml import etree +from ....contrib.imprint.processors import ImprintMarcXMLDumper from ....contrib.journal.processors import JournalMarcXMLDumper from .schema import MARCXMLSchema @@ -29,7 +30,9 @@ def __init__(self, **options): format_serializer_cls=SimpleSerializer, object_schema_cls=MARCXMLSchema, list_schema_cls=BaseListSchema, - schema_kwargs={"dumpers": [JournalMarcXMLDumper()]}, + schema_kwargs={ + "dumpers": [JournalMarcXMLDumper(), ImprintMarcXMLDumper()] + }, # Order matters encoder=self.marcxml_tostring, ) @@ -39,5 +42,6 @@ def marcxml_tostring(cls, record): return etree.tostring( dumps_etree(record), pretty_print=True, + xml_declaration=True, encoding="utf-8", ).decode("utf-8") diff --git a/invenio_rdm_records/resources/serializers/marcxml/schema.py b/invenio_rdm_records/resources/serializers/marcxml/schema.py index b2e5cf3cd..4af87ea17 100644 --- a/invenio_rdm_records/resources/serializers/marcxml/schema.py +++ b/invenio_rdm_records/resources/serializers/marcxml/schema.py @@ -1,19 +1,20 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN +# Copyright (C) 2023-2024 CERN # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """MARCXML based Schema for Invenio RDM Records.""" -from copy import deepcopy - import bleach +from dateutil.parser import parse +from dojson.contrib.to_marc21.fields.bdleader import to_leader +from flask import current_app from flask_resources.serializers import BaseSerializerSchema -from invenio_access.permissions import system_identity -from invenio_vocabularies.proxies import current_service as vocabulary_service -from marshmallow import fields, missing, post_dump +from marshmallow import fields, missing +from marshmallow_utils.html import sanitize_unicode +from pydash import py_ from ..schemas import CommonFieldsMixin from ..ui.schema import current_default_locale @@ -23,69 +24,336 @@ class MARCXMLSchema(BaseSerializerSchema, CommonFieldsMixin): """Schema for records in MARC.""" - doi = fields.Method("get_doi") - oai = fields.Str(attribute="pids.oai.identifier") - contributors = fields.Method("get_contributors") - titles = fields.Method("get_titles") - creators = fields.Method("get_creators") - relations = fields.Method("get_relations") - rights = fields.Method("get_rights") - dates = fields.Method("get_dates") - subjects = fields.Method("get_subjects") - descriptions = fields.Method("get_descriptions") - publishers = fields.Method("get_publishers") - types = fields.Method( - "get_types" + id = fields.Method("get_id", data_key="001") + doi = fields.Method("get_doi", data_key="024 ") + oai = fields.Method("get_oai", data_key="909CO") + contributors = fields.Method("get_contributors", data_key="700 ") + titles = fields.Method("get_titles", data_key="245 ") + first_creator = fields.Method("get_first_creator", data_key="100 ") + relations = fields.Method("get_relations", data_key="856 2") + rights = fields.Method("get_rights", data_key="540 ") + license = fields.Method("get_license", data_key="65017") + subjects = fields.Method("get_subjects", data_key="653 ") + descriptions = fields.Method("get_descriptions", data_key="520 ") + additional_descriptions = fields.Method( + "get_additional_descriptions", data_key="500 " + ) + languages = fields.Method("get_languages", data_key="041 ") + references = fields.Method("get_references", data_key="999C5") + publication_information = fields.Method("get_pub_information", data_key="260 ") + dissertation_note = fields.Method("get_dissertation_note", data_key="502 ") + types_and_community_ids = fields.Method( + "get_types_and_communities", data_key="980 " ) # Corresponds to resource_type in the metadata schema # TODO: sources = fields.List(fields.Str(), attribute="metadata.references") - sources = fields.Constant( - missing - ) # Corresponds to references in the metadata schema - formats = fields.List(fields.Str(), attribute="metadata.formats") - parent_id = fields.Str(attribute="parent.id") - community_id = fields.List(fields.Str(), attribute="parent.communities.ids") - last_updated = fields.Method("last_updated") - sizes = fields.List(fields.Str(), attribute="metadata.sizes") - version = fields.Str(attribute="metadata.version") - funding = fields.Method("get_funding") + # sources = fields.Constant(missing) # Corresponds to references in the metadata schema + formats = fields.Method("get_formats", data_key="520 1") + sizes = fields.Method("get_sizes", data_key="520 2") + funding = fields.Method( + "get_funding", data_key="536 " + ) # TODO this was not implemented on Zenodo, neither specified in marcxml + updated = fields.Method("get_updated", data_key="005") + files = fields.Method("get_files", data_key="8564 ") + access = fields.Method("get_access", data_key="542 ") + host_information = fields.Method("get_host_information", data_key="773 ") + leader = fields.Method("get_leader") + + def get_leader(self, obj): + """Return the leader information.""" + rt = obj["metadata"]["resource_type"]["id"] + rec_types = { + "image": "two-dimensional_nonprojectable_graphic", + "video": "projected_medium", + "dataset": "computer_file", + "software": "computer_file", + } + type_of_record = rec_types[rt] if rt in rec_types else "language_material" + res = { + "record_length": "00000", + "record_status": "new", + "type_of_record": type_of_record, + "bibliographic_level": "monograph_item", + "type_of_control": "no_specified_type", + "character_coding_scheme": "marc-8", + "indicator_count": 2, + "subfield_code_count": 2, + "base_address_of_data": "00000", + "encoding_level": "unknown", + "descriptive_cataloging_form": "unknown", + "multipart_resource_record_level": "not_specified_or_not_applicable", + "length_of_the_length_of_field_portion": 4, + "length_of_the_starting_character_position_portion": 5, + "length_of_the_implementation_defined_portion": 0, + "undefined": 0, + } + return to_leader(None, None, res) - def get_funding(self, obj): - """Get funding information.""" - if "funding" not in obj["metadata"]: + def get_host_information(self, obj): + """Get host information. + + Contains related identifiers as well as the parent DOI. + """ + host_information = [] + + # Related identifiers + related_identifiers = obj["metadata"].get("related_identifiers", []) + for identifier in related_identifiers: + related_identifier = { + "a": identifier["identifier"], + "i": identifier["relation_type"]["title"]["en"], + "n": identifier["scheme"], + } + host_information.append(related_identifier) + + # Parent DOI + parent_pids = obj["parent"].get("pids", {}) + for key, value in parent_pids.items(): + if key == "doi": + parent_doi = { + "a": value["identifier"], # identifier + "i": "isVersionOf", # relation type with parent is "isVersionOf" + "n": "doi", # scheme + } + host_information.append(parent_doi) + break + + return host_information or missing + + def get_access(self, obj): + """Get access rights.""" + access = {"l": obj["access"]["status"]} + return access + + def get_files(self, obj): + """Get files.""" + files_enabled = obj["files"].get("enabled", False) + if not files_enabled: + return missing + files_entries = obj["files"].get("entries", {}) + record_id = obj["id"] + files = [] + for file_entry in files_entries.values(): + file_name = sanitize_unicode(file_entry["key"]) + url = f"{current_app.config['SITE_UI_URL']}/records/{record_id}/files/{file_name}" + file_ = { + "s": str(file_entry["size"]), # file size + "z": file_entry["checksum"], # check sum + "u": url, # url + } + files.append(file_) + + return files or missing + + def get_sizes(self, obj): + """Get sizes.""" + sizes_list = obj["metadata"].get("sizes", []) + if not sizes_list: + return missing + + sizes = [{"a": s} for s in sizes_list] + return sizes + + def get_communities(self, obj): + """Get communities.""" + communities = obj["parent"].get("communities", {}).get("entries", []) + + if not communities: + return missing + + slugs = [community.get("slug") for community in communities] + # Communities are prefixed with "user-" + return [{"a": f"user-{slug}"} for slug in slugs] + + def get_formats(self, obj): + """Get data formats.""" + formats_list = obj["metadata"].get("formats", []) + if not formats_list: + return missing + + formats = [{"a": f} for f in formats_list] + return formats + + def get_doi(self, obj): + """Get DOI.""" + if "doi" in obj["pids"]: + return dict([("2", "doi"), ("a", obj["pids"]["doi"]["identifier"])]) + + for identifier in obj["metadata"].get("identifiers", []): + if identifier["scheme"] == "doi": + return dict([("2", "doi"), ("o", identifier["identifier"])]) + + return missing + + def get_oai(self, obj): + """Get oai information. + + Contains OAI and communities. It should serialize into: + + .. code-block:: xml + + + user-community_name1 + user-community_name2 + oai:invenio.org:123456 + + + Communities slugs are prefixed with ``user-``. + """ + result = {} + + # OAI + if "oai" in obj["pids"]: + identifier = [obj["pids"]["oai"]["identifier"]] + result.update({"o": identifier}) + + # Communities + communities = obj["parent"].get("communities", {}).get("entries", []) + if communities: + for community in communities: + slug = community.get("slug") + if slug: + user_slug = f"user-{slug}" + # Add "p": [user_slug] or extend if there are already other communities + result.setdefault("p", []).append(user_slug) + + return result or missing + + def _serialize_contributor(self, contributor): + """Serializes one contributor.""" + name = contributor["person_or_org"]["name"] + contributor_dict = dict(a=name) + + identifiers = contributor["person_or_org"].get("identifiers", []) + for identifier in identifiers: + if identifier["scheme"] in ["gnd", "orcid"]: + contributor_dict.setdefault("0", []).append( + "({0}){1}".format(identifier["scheme"], identifier["identifier"]) + ) + + affiliations = contributor.get("affiliations", []) + if affiliations: + # Affiliation is not repeatable, we only get the first + # (https://www.loc.gov/marc/bibliographic/bd700.html) + affiliation = affiliations[0]["name"] + contributor_dict["u"] = affiliation + + role_id = contributor.get("role", {}).get("id", "") + if role_id: + props = get_vocabulary_props("contributorsroles", ["props.marc"], role_id) + marc_role = props.get("marc") + if marc_role: + contributor_dict["4"] = marc_role + + return contributor_dict + + def get_contributors(self, obj): + """Get contributors.""" + contrib_list = [] + + # Main contributors + for contributor in obj["metadata"].get("contributors", []): + serialized_creator = self._serialize_contributor(contributor) + contrib_list.append(serialized_creator) + + # Other creators + for index, creator in enumerate(obj["metadata"].get("creators", [])): + # First creator is serialized in another field + if index == 0: + continue + serialized_creator = self._serialize_contributor(creator) + contrib_list.append(serialized_creator) + + return contrib_list or missing + + def get_first_creator(self, obj): + """Returns the fist author of the list.""" + creators = obj["metadata"].get("creators", []) + if not creators: return missing + creator = creators[0] + serialized = self._serialize_contributor(creator) + return serialized - funders = [] - all_funders = obj["metadata"].get("funding", []) + def get_pub_information(self, obj): + """Get publication information. - for funder in all_funders: - funder_string = "" + Includes publication dates and publisher. + """ + # Publisher + pub = obj["metadata"].get("publisher") + dates_list = [obj["metadata"]["publication_date"]] - award = funder.get("award", {}) + if not (pub or dates_list): + return missing + + pub_information = {} + + if pub: + pub_information.update({"b": pub}) + + # Dates + pub_date = obj["metadata"]["publication_date"] + pub_information.setdefault("c", []).append(pub_date) + + access_status = obj.get("access", {}).get("status", "") + + if access_status == "embargoed": + embargo_date = obj["access"]["embargo"]["until"] + serialized_date = f"info:eu-repo/date/embargoEnd/{embargo_date}" + pub_information.setdefault("c", []).append(serialized_date) + + return pub_information + + def get_dissertation_note(self, obj): + """Get dissertation note.""" + name_of_granting_institution = obj.get("custom_fields", {}).get( + "thesis:university" + ) + if not name_of_granting_institution: + return missing + + dissertation_note = {"c": name_of_granting_institution} + return dissertation_note + + def get_titles(self, obj): + """Get titles.""" + title = {"a": obj["metadata"]["title"]} + return title + + def get_updated(self, obj): + """Gets updated.""" + updated = parse(obj["updated"]).strftime("%Y%m%d%H%M%S.0") + return updated + + def get_id(self, obj): + """Gets id.""" + id_ = obj["id"] + return id_ + + def get_funding(self, obj): + """Get funding information.""" - identifier = award.get("identifiers", [{}])[0] - scheme = identifier.get("scheme", "null") - identifier_value = identifier.get("identifier", "null") + def _serialize_funder(funding_object): + """Serializes one funder.""" + award = funding_object.get("award", {}) + award_title = award.get("title", {}).get("en") + award_number = award.get("number") - title = award.get("title", {}) - title = list(title.values())[0] if title else "null" + serialized_funder = {} + if award_number: + serialized_funder["c"] = award_number + if award_title: + serialized_funder["a"] = award_title - number = award.get("number", "null") - id = funder["funder"]["id"] - name = funder["funder"].get("name", "null") + return serialized_funder - funder_string += f"award_identifiers_scheme={scheme}; " - funder_string += f"award_identifiers_identifier={identifier_value}; " - funder_string += f"award_title={title}; " - funder_string += f"award_number={number}; " - funder_string += f"funder_id={id}; " - funder_string += f"funder_name={name}; " - funders.append(funder_string) + funders_list = obj["metadata"].get("funding", []) + if not funders_list: + return missing - return funders + funding = [_serialize_funder(funder) for funder in funders_list] - def last_updated(self, obj): - """Get date last updated.""" - return [obj["updated"]] + return funding def get_relations(self, obj): """Get relations.""" @@ -96,11 +364,11 @@ def get_relations(self, obj): # Alternate identifiers for a in obj["metadata"].get("alternate_identifiers", []): - rels.append(f"{a['scheme']}:{a['identifier']}") + rels.append(dict(a=f"{a['scheme']}:{a['identifier']}")) # Related identifiers for a in obj["metadata"].get("related_identifiers", []): - rels.append(f"{a['scheme']}:{a['identifier']}") + rels.append(dict(a=f"{a['scheme']}:{a['identifier']}")) return rels or missing @@ -110,51 +378,58 @@ def get_rights(self, obj): access_right = obj.get("access", {}).get("status") if access_right: - rights.append(f"info:eu-repo/semantics/{access_right}Access") + rights.append(dict(a=f"info:eu-repo/semantics/{access_right}Access")) if access_right == "metadata-only": access_right = "closed" - ids = [] for right in obj["metadata"].get("rights", []): - _id = right.get("id") - if _id: - ids.append(_id) + title = right.get("title").get(current_default_locale()) + right_dict = dict() + if title: + right_dict["a"] = title + license_url = right.get("link") + if license_url: + right_dict["u"] = license_url else: - title = right.get("title").get(current_default_locale()) - if title: - rights.append(title) - - license_url = right.get("link") - if license_url: - rights.append(license_url) - - if ids: - vocab_rights = vocabulary_service.read_many( - system_identity, "licenses", ids - ) - for right in vocab_rights: - title = right.get("title").get(current_default_locale()) - if title: - rights.append(title) - - license_url = right.get("props").get("url") - if license_url: - rights.append(license_url) + props_license_url = right.get("props", {}).get("url") + if props_license_url: + right_dict["u"] = props_license_url + rights.append(right_dict) return rights or missing - def get_dates(self, obj): - """Get dates.""" - dates = [obj["metadata"]["publication_date"]] - - access_status = obj.get("access", {}).get("status", {}) - - if access_status == "embargoed": - date = obj["access"]["embargo"]["until"] - dates.append(f"info:eu-repo/date/embargoEnd/{date}") + def get_license(self, obj): + """Get license. - return dates or missing + Same data as get_rights but duplicated for backwards compatibility reasons. + """ + license = [] + for right in obj["metadata"].get("rights", []): + license_dict = {} + id = right.get("id") + if id: + license_dict["a"] = id + scheme = right.get("props", {}).get("scheme") + if scheme: + license_dict["2"] = scheme + + license.append(license_dict) + + return license or missing + + def _serialize_description(self, description): + """Serializes one description. + + The description string is sanitized using ``bleach.clean``. + """ + return { + "a": bleach.clean( + description, + tags=[], + attributes=[], + ) + } def get_descriptions(self, obj): """Get descriptions.""" @@ -163,103 +438,87 @@ def get_descriptions(self, obj): description = metadata.get("description") if description: - descriptions.append(description) + serialized = self._serialize_description(description) + descriptions.append(serialized) - additional_descriptions = metadata.get("additional_descriptions", []) - for add_desc in additional_descriptions: - descriptions.append(add_desc["description"]) + return descriptions or missing - descriptions = [ - bleach.clean( - desc, - strip=True, - strip_comments=True, - tags=[], - attributes=[], - ) - for desc in descriptions - ] + def get_additional_descriptions(self, obj): + """Get additional descriptions.""" + metadata = obj["metadata"] + additional_descriptions = [] - return descriptions or missing + for add_desc in metadata.get("additional_descriptions", []): + serialized = self._serialize_description(add_desc["description"]) + additional_descriptions.append(serialized) + + return additional_descriptions or missing + + def get_languages(self, obj): + """Get languages.""" + languages = obj["metadata"].get("languages") + + if languages: + return [{"a": language["id"]} for language in languages] + + return missing + + def get_references(self, obj): + """Get references.""" + references_list = obj["metadata"].get("references", []) + + if references_list: + return [{"x": reference["reference"]} for reference in references_list] + + return missing def get_subjects(self, obj): """Get subjects.""" metadata = obj["metadata"] - subjects = [] - subjects.extend( - (s["subject"] for s in metadata.get("subjects", []) if s.get("subject")) - ) - return subjects or missing + subjects = metadata.get("subjects", []) + + if not subjects: + return missing + + subjects_list = [] + for subject in subjects: + subjects_list.append({"a": subject["subject"]}) + return subjects_list - def get_types(self, obj): + def get_types_and_communities(self, obj): """Get resource type.""" - props = get_vocabulary_props( - "resourcetypes", - [ - "props.eurepo", - ], - obj["metadata"]["resource_type"]["id"], - ) - t = props.get("eurepo") - return [t] if t else missing - - # FIXME should this be a processor? that's somehow the post_dump place - # otherwise we cannot guarantee order - @post_dump() - def keys_to_tags(self, data, many, **kwargs): - """Changes the key name to the corresponding MARCXML tag (number).""" - # [!] The string in the first array corresponds to the tag[0:4] + ind1[4] + ind2[5] - # [!] The first string needs to be length *5* (this is to do with the dojson parser) - # [!] The second string corresponds to the subfield code - - # Example: "creators" : ["100a ", "a"] - - # - # Tarocco, Nicola - # - - # To add support for more tags, use the corresponding codes from here - # https://scoap3.org/scoap3-repository/marcxml/ - - changes = { - "contributors": ["700a ", "u"], # Abstract - "titles": ["245a ", "a"], # Title - "creators": ["100a ", "a"], # First author - "oai": ["909CO", "o"], # OAI - "relations": ["856 2", "a"], # Related Ressource - "rights": ["540 ", "a"], # License - "dates": [ - "260c ", - "c", - ], # Publication Information - Date of Publication - "subjects": ["653 ", "a"], # Keywords - "descriptions": ["520 ", "a"], # Abstract - "publishers": [ - "260b ", - "a", - ], # Publication Information - Publisher Name - "types": ["901 ", "u"], # Local Implementation - "sources": ["246i ", "x"], # Source - "coverage": ["510 ", "a"], # Location - "formats": ["520 1", "a"], # Abstract - "parent_id": ["024 1", "a"], # ID - "community_id": ["024 2", "a"], # ID - "last_updated": [ - "260ca", - "c", - ], # Publication Information - Date of Publication - "sizes": ["520 2", "a"], # Abstract - "version": ["024 3", "a"], # ID - "funding": ["856 1", "a"], # Related Ressource - } + output = [] + communities = obj["parent"].get("communities", {}).get("entries", []) + if communities: + slugs = [community.get("slug") for community in communities] + output += [{"a": f"user-{slug}"} for slug in slugs] + + resource_type_id = py_.get(obj, "metadata.resource_type.id") + if resource_type_id: + props = get_vocabulary_props( + "resourcetypes", + [ + "props.eurepo", + "props.marc21_type", + "props.marc21_subtype", + ], + resource_type_id, + ) + props_eurepo = props.get("eurepo") + if props_eurepo: + eurepo = {"a": props_eurepo} + output.append(eurepo) + + resource_types = {} - data_copy = deepcopy(data) - for key in data_copy: - if key in changes: - data[changes[key][0]] = {changes[key][1]: data.pop(key)} + resource_type = props.get("marc21_type") + if resource_type: + resource_types["a"] = resource_type + resource_subtype = props.get("marc21_subtype") + if resource_subtype: + resource_types["b"] = resource_subtype - doi = data.pop("doi", None) - if doi: - data["024 "] = {"a": doi, "2": "doi"} + if resource_types: + output.append(resource_types) - return data + return output or missing diff --git a/invenio_rdm_records/resources/serializers/schemaorg/__init__.py b/invenio_rdm_records/resources/serializers/schemaorg/__init__.py new file mode 100644 index 000000000..ce6a9f040 --- /dev/null +++ b/invenio_rdm_records/resources/serializers/schemaorg/__init__.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Schemaorg Serializers for Invenio RDM Records.""" + +from flask_resources import BaseListSchema, MarshmallowSerializer +from flask_resources.serializers import JSONSerializer + +from ....contrib.journal.processors import JournalSchemaorgDumper +from .schema import SchemaorgSchema + + +class SchemaorgJSONLDSerializer(MarshmallowSerializer): + """Marshmallow based Schemaorg serializer for records.""" + + def __init__(self, **options): + """Constructor.""" + super().__init__( + format_serializer_cls=JSONSerializer, + object_schema_cls=SchemaorgSchema, + list_schema_cls=BaseListSchema, + schema_kwargs={"dumpers": [JournalSchemaorgDumper()]}, # Order matters + **options, + ) diff --git a/invenio_rdm_records/resources/serializers/schemaorg/schema.py b/invenio_rdm_records/resources/serializers/schemaorg/schema.py new file mode 100644 index 000000000..af1cdcad0 --- /dev/null +++ b/invenio_rdm_records/resources/serializers/schemaorg/schema.py @@ -0,0 +1,506 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# Copyright (C) 2021 Northwestern University. +# Copyright (C) 2023 Graz University of Technology. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Schemaorg based Schema for Invenio RDM Records.""" + +from copy import deepcopy + +import pycountry +from babel_edtf import parse_edtf +from commonmeta import dict_to_spdx, doi_as_url, parse_attributes, unwrap, wrap +from edtf.parser.grammar import ParseException +from flask_resources.serializers import BaseSerializerSchema +from idutils import to_url +from marshmallow import Schema, ValidationError, fields, missing +from marshmallow_utils.fields import SanitizedHTML, SanitizedUnicode +from pydash import py_ + +from ..schemas import CommonFieldsMixin +from ..utils import convert_size, get_vocabulary_props + + +def _serialize_identifiers(ids): + """Serialize related and alternate identifiers to URLs. + + :param ids: List of related_identifier or alternate_identifier objects. + :returns: List of identifiers in schema.org format. + :rtype dict: + """ + res = [] + for i in ids: + _url = to_url(i["identifier"], i["scheme"], "https") + + # Identifiers without a valid @id (url) are not returned (e.g. a book's ISBN can't be converted to an URL) + if not _url: + continue + + # CreativeWork is the default type + serialized = {"@type": "CreativeWork", "@id": _url} + if "resource_type" in i: + props = get_vocabulary_props( + "resourcetypes", ["props.schema.org"], i["resource_type"]["id"] + ) + schema_org_type = props.get("schema.org") + if schema_org_type: + serialized.update({"@type": schema_org_type[19:]}) + + res.append(serialized) + + return res + + +class PersonOrOrgSchema(Schema): + """Creator/contributor schema for Schemaorg.""" + + name = fields.Str(attribute="person_or_org.name") + givenName = fields.Str(attribute="person_or_org.given_name") + familyName = fields.Str(attribute="person_or_org.family_name") + affiliation = fields.Method("get_affiliation") + id_ = fields.Method("get_name_identifier", data_key="@id") + type_ = fields.Method("get_name_type", data_key="@type") + + # + # Private helper functions + # + + def _serialize_identifier(self, identifier): + """Format on name identifier.""" + if not identifier.get("identifier"): + return None + + if identifier.get("scheme") == "isni": + return "http://isni.org/isni/" + identifier.get("identifier") + + # Schemaorg expects a URL for the identifier + return to_url(identifier["identifier"], identifier["scheme"], "https") + + # + # Schema Methods + # + + def get_name_type(self, obj): + """Get name type. Schemaorg expects either Person or Organisation. + + Defaults to Person. + """ + name_type = py_.get(obj, "person_or_org.type") + return "Organization" if name_type == "organizational" else "Person" + + def get_name_identifier(self, obj): + """Get name identifier. + + Schemaorg expects a URL for the identifier, and does not support multiple identifiers. Use the first identifier found. + """ + return ( + next( + ( + self._serialize_identifier(i) + for i in wrap(obj["person_or_org"].get("identifiers", [])) + ), + None, + ) + or missing + ) + + def get_affiliation(self, obj): + """Get affiliation list.""" + + def format_affiliation(affiliation): + """Format on affiliation.""" + name = affiliation.get("name") + id_ = affiliation.get("id") + if not (name or id_): + raise ValidationError( + "Affiliation failed to serialize: one of 'id' or 'name' must be provided." + ) + + serialized_affiliation = {"@type": "Organization"} + + if name: + serialized_affiliation.update({"name": name}) + + # Affiliation comes from a controlled vocabulary + if id_: + # Retrieve the first identifier + identifier = next( + ( + idf + for idf in affiliation.get("identifiers", []) + if (idf.get("identifier") and idf.get("scheme")) + ), + None, + ) + if identifier: + serialized_affiliation.update( + {"@id": self._serialize_identifier(identifier)} + ) + + return serialized_affiliation + + affiliations = obj.get("affiliations", []) + return [format_affiliation(a) for a in affiliations] or missing + + +class SchemaorgSchema(BaseSerializerSchema, CommonFieldsMixin): + """Schemaorg Marshmallow Schema.""" + + context = fields.Constant("http://schema.org", data_key="@context") + id_ = fields.Method("get_id", data_key="@id") + type_ = fields.Method("get_type", data_key="@type") + identifier = fields.Method("get_identifiers") + name = SanitizedUnicode(attribute="metadata.title") + creator = fields.List( + fields.Nested(PersonOrOrgSchema), + attribute="metadata.creators", + dump_only=True, + ) + # NOTE: This is a duplicate of "creator". See + # and + # for more details + author = fields.List( + fields.Nested(PersonOrOrgSchema), + attribute="metadata.creators", + dump_only=True, + ) + editor = fields.List( + fields.Nested(PersonOrOrgSchema), attribute="metadata.contributors" + ) + publisher = fields.Method("get_publisher") + keywords = fields.Method("get_keywords") + dateCreated = fields.Method("get_creation_date") + dateModified = fields.Method("get_modification_date") + datePublished = fields.Method("get_publication_date") + temporal = fields.Method("get_dates") + inLanguage = fields.Method("get_language") + contentSize = fields.Method("get_size") + size = fields.Method("get_size") + encodingFormat = fields.Method("get_format") + version = SanitizedUnicode(attribute="metadata.version") + license = fields.Method("get_license") + description = SanitizedHTML(attribute="metadata.description") + # spatialCoverage = fields.Method("get_spatial_coverage") + funding = fields.Method("get_funding") + + # Related identifiers + isPartOf = fields.Method("get_is_part_of") + hasPart = fields.Method("get_has_part") + sameAs = fields.Method("get_sameAs") + + citation = fields.Method("get_citation") + + url = fields.Method("get_url") + + # Fields that are specific to certain resource types. + measurementTechnique = fields.Method("get_measurement_techniques") + distribution = fields.Method("get_distribution") + + def get_id(self, obj): + """Get id. Use the DOI expressed as a URL.""" + doi = py_.get(obj, "pids.doi.identifier") + if doi: + return doi_as_url(doi) + return missing + + def get_type(self, obj): + """Get type. Use the vocabulary service to get the schema.org type.""" + resource_type_id = py_.get(obj, "metadata.resource_type.id") + if not resource_type_id: + return missing + + props = get_vocabulary_props( + "resourcetypes", + ["props.schema.org"], + resource_type_id, + ) + ret = props.get("schema.org", "https://schema.org/CreativeWork") + return ret + + def get_size(self, obj): + """Get size.""" + ret = None + size = py_.get(obj, "files.total_bytes") + if size: + ret = convert_size(size) + return ret or missing + + def get_format(self, obj): + """Get format.""" + formats = py_.get(obj, "metadata.formats") + return unwrap(wrap(formats)) or missing + + def get_publication_date(self, obj): + """Get publication date.""" + publication_date = py_.get(obj, "metadata.publication_date") + if not publication_date: + return missing + + try: + parsed_date = parse_edtf(publication_date) + except ParseException: + return missing + + # if date is an interval, use the start date + if (type(parsed_date).__name__) == "Interval": + parsed_date = parsed_date.lower + return str(parsed_date) + + def get_creation_date(self, obj): + """Get creation date.""" + return obj.get("created") or missing + + def get_modification_date(self, obj): + """Get modification date.""" + return obj.get("updated") or missing + + def get_language(self, obj): + """Get language. Schemaorg expects either a string or language dict. + + For consistency with Zenodo, use the dict, and use the ISO 639-3 code + for the alternateName (e.g. dan) and the language string (e.g. Danish) + for the name. Use only the first of multiple languages provided. + """ + language = parse_attributes( + py_.get(obj, "metadata.languages"), content="id", first=True + ) + if not language: + return missing + language_obj = pycountry.languages.get(alpha_3=language) + if not language_obj: + return missing + return { + "alternateName": language_obj.alpha_3, + "@type": "Language", + "name": language_obj.name, + } + + def get_identifiers(self, obj): + """Get (main and alternate) identifiers list.""" + doi = py_.get(obj, "pids.doi.identifier") + if doi: + return doi_as_url(doi) + self_url = py_.get(obj, "links.self") + return self_url or missing + + def get_spatial_coverage(self, obj): + """Get spatial_coverage.""" + return missing + # TODO: implement + + def get_publisher(self, obj): + """Get publisher.""" + publisher = py_.get(obj, "metadata.publisher") + if publisher: + return {"@type": "Organization", "name": publisher} + + return missing + + def get_keywords(self, obj): + """Get keywords. + + Schema.org expects a comma-separated string, not a list as in the Zenodo implementation. + """ + subjects = py_.get(obj, "metadata.subjects") + if not subjects: + return missing + subjects = [ + s["subject"] for s in wrap(subjects) if s.get("subject", None) is not None + ] + return ", ".join(subjects) + + def get_license(self, obj): + """Get license. + + Find first license id or link in metadata.rights, then find matching SPDX metadata. Schemaorg expects a URL. + """ + license_ = next( + (i for i in wrap(py_.get(obj, "metadata.rights")) if i.get("id", None)), + None, + ) or next( + (i for i in wrap(py_.get(obj, "metadata.rights")) if i.get("link", None)), + None, + ) + if license_ and license_.get("id", None): + spdx = dict_to_spdx({"id": license_.get("id")}) + elif license_ and license_.get("link", None): + spdx = dict_to_spdx({"url": license_.get("link", None)}) or license_ + else: + spdx = None + return spdx.get("url", None) if spdx else missing + + def get_funding(self, obj): + """Serialize funding to schema.org. + + .. note:: + + Property 'funding': https://schema.org/funding + Type 'Grant': https://schema.org/Grant + """ + + def _serialize_funder(funder): + """Serializes a funder to schema.org.""" + serialized_funder = {"@type": "Organization"} + if funder.get("id"): + serialized_funder.update({"@id": funder["id"]}) + if funder.get("name"): + serialized_funder.update({"name": funder["name"]}) + return serialized_funder + + def _serialize_award(award): + """Serializes an award (or grant) to schema.org.""" + title = py_.get(award, "title.en") + number = award.get("number") + id_ = award.get("id") + + if not (id_ or (title and number)): + # One of 'id' or '(title' and 'number') must be provided + raise ValidationError( + "Funding serialization failed on award: one of 'id' or ('number' and 'title') are required." + ) + + serialized_award = {} + if title or number: + # Serializes to: + # title (number) OR title OR number + fallback = title or number + serialized_award.update( + {"name": f"{title} ({number})" if title and number else fallback} + ) + if id_: + serialized_award.update({"identifier": id_}) + + url = next( + (i for i in award.get("identifiers", []) if i.get("scheme") == "url"), + None, + ) + if url: + serialized_award.update({"url": url}) + return serialized_award + + result = [] + + funding = py_.get(obj, "metadata.funding", []) + for fund in funding: + serialized_funding = {} + # Serialize funder + funder = fund.get("funder") + if funder: + serialized_funding.update({"funder": _serialize_funder(funder)}) + + # Serialize award (or grant) + award = fund.get("award") + if award: + serialized_funding.update(**_serialize_award(award)) + result.append(serialized_funding) + + return result or missing + + def get_is_part_of(self, obj): + """Get records that this record is part of.""" + identifiers = py_.get(obj, "metadata.related_identifiers", []) + relids = self._filter_related_identifier_type(identifiers, "ispartof") + ids = _serialize_identifiers(relids) + return ids or missing + + def get_has_part(self, obj): + """Get parts of the record.""" + identifiers = py_.get(obj, "metadata.related_identifiers", []) + relids = self._filter_related_identifier_type(identifiers, "haspart") + ids = _serialize_identifiers(relids) + return ids or missing + + def get_sameAs(self, obj): + """Get identical identifiers of the record.""" + identifiers = py_.get(obj, "metadata.related_identifiers", []) + relids = self._filter_related_identifier_type(identifiers, "isidenticalto") + ids = _serialize_identifiers(relids) + + alt_identifiers = py_.get(obj, "metadata.alternate_identifiers", []) + ids += [i["@id"] for i in _serialize_identifiers(alt_identifiers)] + return ids or missing + + def get_url(self, obj): + """Get Zenodo URL of the record.""" + self_url = py_.get(obj, "links.self_html") + return self_url or missing + + def get_dates(self, obj): + """Get other dates of the record.""" + dates = [] + for date in obj["metadata"].get("dates", []): + try: + parsed_date = parse_edtf(date["date"]) + dates.append(str(parsed_date)) + except ParseException: + continue + return dates or missing + + def get_citation(self, obj): + """Get citations of the record.""" + identifiers = py_.get(obj, "metadata.related_identifiers", []) + relids = self._filter_related_identifier_type( + identifiers, {"cites", "references"} + ) + ids = _serialize_identifiers(relids) + return ids or missing + + def _is_dataset(self, obj): + return self.get_type(obj) == "https://schema.org/Dataset" + + def get_measurement_techniques(self, obj): + """Get measurement techniques (a.k.a. methods).""" + # Only applies to Datasets + if not self._is_dataset(obj): + return missing + + additional_descriptions = py_.get(obj, "metadata.additional_descriptions", []) + res = None + for additional_description in additional_descriptions: + description = py_.get(additional_description, "description") + is_method = py_.get(additional_description, "type.id") == "methods" + if is_method and description: + # Use the first method as measurement technique + res = description + break + + return res or missing + + def get_distribution(self, obj): + """Get dataset distribution.""" + if not self._is_dataset(obj): + return missing + + files = py_.get(obj, "files.entries", {}) + distribution_list = [] + for f_name, f_object in files.items(): + entry = { + "@type": "DataDownload", + "contentUrl": obj["links"]["files"] + f"/{f_name}/content", + } + mimetype = f_object.get("mimetype") + if mimetype: + entry["encodingFormat"] = mimetype + distribution_list.append(entry) + + return distribution_list if distribution_list else missing + + def _filter_related_identifier_type(self, identifiers, relation_types): + """Filters identifier by relation types. + + Relation types must be a sequence where to look items (e.g. ``list``, ``set``). + A single ``str`` is also accepted but it's converted to a ``set``. + + :returns: the filter object. + """ + if type(relation_types) == str: + relation_types = {relation_types} + + return filter( + lambda x: x.get("relation_type", {}).get("id") in relation_types, + identifiers, + ) diff --git a/invenio_rdm_records/resources/serializers/schemas.py b/invenio_rdm_records/resources/serializers/schemas.py index de3e905b9..0a7034d56 100644 --- a/invenio_rdm_records/resources/serializers/schemas.py +++ b/invenio_rdm_records/resources/serializers/schemas.py @@ -8,6 +8,7 @@ """Base parsing functions for the various serializers.""" from marshmallow import missing +from pydash import py_ class CommonFieldsMixin: @@ -28,7 +29,8 @@ def get_locations(self, obj): """Get locations.""" locations = [] - access_location = obj["metadata"].get("locations", []) + access_location = obj["metadata"].get("locations", {}) + if not access_location: return missing @@ -54,7 +56,8 @@ def get_locations(self, obj): def get_titles(self, obj): """Get titles.""" - return [obj["metadata"]["title"]] + title = py_.get(obj, "metadata.title") + return [title] if title else missing def get_identifiers(self, obj): """Get identifiers.""" @@ -66,7 +69,9 @@ def get_identifiers(self, obj): def get_creators(self, obj): """Get creators.""" - return [c["person_or_org"]["name"] for c in obj["metadata"].get("creators", [])] + return [ + c["person_or_org"]["name"] for c in obj["metadata"].get("creators", []) + ] or missing def get_publishers(self, obj): """Get publishers.""" diff --git a/invenio_rdm_records/resources/serializers/signposting/__init__.py b/invenio_rdm_records/resources/serializers/signposting/__init__.py new file mode 100644 index 000000000..910686b85 --- /dev/null +++ b/invenio_rdm_records/resources/serializers/signposting/__init__.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 Northwestern University. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Signposting serializers.""" + +from flask_resources import BaseListSchema, MarshmallowSerializer +from flask_resources.serializers import JSONSerializer + +from .schema import FAIRSignpostingProfileLvl2Schema + + +class FAIRSignpostingProfileLvl2Serializer(MarshmallowSerializer): + """FAIR Signposting Profile level 2 serializer.""" + + def __init__(self): + """Initialise Serializer.""" + super().__init__( + format_serializer_cls=JSONSerializer, + object_schema_cls=FAIRSignpostingProfileLvl2Schema, + list_schema_cls=BaseListSchema, + ) diff --git a/invenio_rdm_records/resources/serializers/signposting/schema.py b/invenio_rdm_records/resources/serializers/signposting/schema.py new file mode 100644 index 000000000..5c4389cbe --- /dev/null +++ b/invenio_rdm_records/resources/serializers/signposting/schema.py @@ -0,0 +1,218 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 Northwestern University. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Signposting schemas.""" + +import idutils +from marshmallow import Schema, fields, missing + +from ...urls import download_url_for +from ..utils import get_vocabulary_props + + +class LandingPageSchema(Schema): + """Schema for serialization of link context object for the landing page. + + Serialization input (`obj`) is a whole record dict projection. + """ + + anchor = fields.Method(serialize="serialize_anchor") + author = fields.Method(serialize="serialize_author") + cite_as = fields.Method(data_key="cite-as", serialize="serialize_cite_as") + describedby = fields.Method(serialize="serialize_describedby") + item = fields.Method(serialize="serialize_item") + license = fields.Method(serialize="serialize_license") + type = fields.Method(serialize="serialize_type") + + def serialize_anchor(self, obj, **kwargs): + """Seralize to landing page URL.""" + return obj["links"]["self_html"] + + def serialize_author(self, obj, **kwargs): + """Serialize author(s). + + For now, the first linkable identifier is taken. + """ + + def pick_linkable_id(identifiers): + for id_dict in identifiers: + url = idutils.to_url( + id_dict["identifier"], id_dict["scheme"], url_scheme="https" + ) + if url: + return url + else: + continue + return None + + metadata = obj["metadata"] + result = [ + {"href": pick_linkable_id(c["person_or_org"].get("identifiers", []))} + for c in metadata.get("creators", []) + ] + result = [r for r in result if r["href"]] + return result or missing + + def serialize_cite_as(self, obj, **kwargs): + """Serialize cite-as.""" + identifier = obj.get("pids", {}).get("doi", {}).get("identifier") + if not identifier: + return missing + + url = idutils.to_url(identifier, "doi", "https") + + return [{"href": url}] if url else missing + + def serialize_describedby(self, obj, **kwargs): + """Serialize describedby.""" + # Has to be placed here to prevent circular dependency. + from invenio_rdm_records.resources.config import record_serializers + + result = [ + {"href": obj["links"]["self"], "type": mimetype} + for mimetype in sorted(record_serializers) + ] + + return result or missing + + def serialize_item(self, obj, **kwargs): + """Serialize item.""" + file_entries = obj.get("files", {}).get("entries", {}) + + result = [ + { + "href": download_url_for(pid_value=obj["id"], filename=entry["key"]), + "type": entry["mimetype"], + } + for entry in file_entries.values() + ] + + return result or missing + + def serialize_license(self, obj, **kwargs): + """Serialize license. + + Note that we provide an entry for each license (rather than just 1). + """ + rights = obj["metadata"].get("rights", []) + + def extract_link(right): + """Return link associated with right. + + There are 2 types of right representations: + - custom + - controlled vocabulary + + If no associated link returns None. + """ + # Custom + if right.get("link"): + return right["link"] + # Controlled vocabulary + elif right.get("props"): + return right["props"].get("url") + + result = [extract_link(right) for right in rights] + result = [{"href": link} for link in result if link] + return result or missing + + def serialize_type(self, obj, **kwargs): + """Serialize type.""" + resource_type = obj["metadata"]["resource_type"] + + props = get_vocabulary_props( + "resourcetypes", + [ + "props.schema.org", + ], + resource_type["id"], + ) + url_schema_org = props.get("schema.org") + + result = [] + if url_schema_org: + result.append({"href": url_schema_org}) + # always provide About Page + result.append({"href": "https://schema.org/AboutPage"}) + + return result + + +class ContentResourceSchema(Schema): + """Schema for serialization of link context object for the content resource. + + Serialization input (`obj`) is a file entry dict projection. + + Passing a context={"record_dict"} to the constructor is required. + """ + + anchor = fields.Method(serialize="serialize_anchor") + collection = fields.Method(serialize="serialize_collection") + + def serialize_anchor(self, obj, **kwargs): + """Serialize to download url.""" + pid_value = self.context["record_dict"]["id"] + return download_url_for(pid_value=pid_value, filename=obj["key"]) + + def serialize_collection(self, obj, **kwargs): + """Serialize to record landing page url.""" + return [ + { + "href": self.context["record_dict"]["links"]["self_html"], + "type": "text/html", + } + ] + + +class MetadataResourceSchema(Schema): + """Schema for serialization of link context object for the metadata resource. + + Serialization input (`obj`) is a whole record dict projection. + + Passing a context={"record_dict"} to the constructor is required. + """ + + anchor = fields.Method(serialize="serialize_anchor") + describes = fields.Method(serialize="serialize_describes") + + def serialize_anchor(self, obj, **kwargs): + """Serialize to API url.""" + return obj["links"]["self"] + + def serialize_describes(self, obj, **kwargs): + """Serialize to record landing page url.""" + return [ + { + "href": obj["links"]["self_html"], + "type": "text/html", + } + ] + + +class FAIRSignpostingProfileLvl2Schema(Schema): + """FAIR Signposting Profile Lvl 2 Schema. + + See https://signposting.org/FAIR/ + """ + + linkset = fields.Method(serialize="serialize_linkset") + + def serialize_linkset(self, obj, **kwargs): + """Serialize linkset.""" + result = [LandingPageSchema().dump(obj)] + + content_resource_schema = ContentResourceSchema(context={"record_dict": obj}) + result += [ + content_resource_schema.dump(entry) + for entry in obj.get("files", {}).get("entries", {}).values() + ] + + # Only a single metadata link context object is appropriate given our usage of + # content-negotiation per discussion with Signposting authors + result += [MetadataResourceSchema().dump(obj)] + + return result diff --git a/invenio_rdm_records/resources/serializers/ui/fields.py b/invenio_rdm_records/resources/serializers/ui/fields.py index 36a6f7327..8e92ebcb6 100644 --- a/invenio_rdm_records/resources/serializers/ui/fields.py +++ b/invenio_rdm_records/resources/serializers/ui/fields.py @@ -13,9 +13,7 @@ from invenio_i18n import gettext as _ from marshmallow import fields -from invenio_rdm_records.records.systemfields.access.field.record import ( - AccessStatusEnum, -) +from ....records.systemfields.access.field.record import AccessStatusEnum class UIAccessStatus(object): @@ -138,7 +136,8 @@ class AccessStatusField(fields.Field): def _serialize(self, value, attr, obj, **kwargs): """Serialise access status.""" record_access_dict = obj.get("access") - has_files = obj.get("files").get("enabled", False) + _files = obj.get("files", {}) + has_files = _files is not None and _files.get("enabled", False) if record_access_dict: record_access_status_ui = UIObjectAccessStatus( record_access_dict, has_files diff --git a/invenio_rdm_records/resources/serializers/ui/schema.py b/invenio_rdm_records/resources/serializers/ui/schema.py index c9c39902e..05395550a 100644 --- a/invenio_rdm_records/resources/serializers/ui/schema.py +++ b/invenio_rdm_records/resources/serializers/ui/schema.py @@ -3,7 +3,7 @@ # Copyright (C) 2020 CERN. # Copyright (C) 2020 Northwestern University. # Copyright (C) 2021-2023 Graz University of Technology. -# Copyright (C) 2022 TU Wien. +# Copyright (C) 2022-2023 TU Wien. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -13,21 +13,25 @@ from copy import deepcopy from functools import partial +from babel_edtf import parse_edtf +from edtf.parser.grammar import ParseException from flask import current_app, g from flask_resources import BaseObjectSchema from invenio_communities.communities.resources.ui_schema import ( _community_permission_check, ) from invenio_i18n import get_locale +from invenio_i18n import lazy_gettext as _ from invenio_records_resources.services.custom_fields import CustomFieldsSchemaUI from invenio_vocabularies.contrib.awards.serializer import AwardL10NItemSchema from invenio_vocabularies.contrib.funders.serializer import FunderL10NItemSchema from invenio_vocabularies.resources import L10NString, VocabularyL10Schema -from marshmallow import Schema, fields, missing, pre_dump +from marshmallow import Schema, fields, missing, post_dump, pre_dump from marshmallow_utils.fields import FormatDate as FormatDate_ from marshmallow_utils.fields import FormatEDTF as FormatEDTF_ from marshmallow_utils.fields import SanitizedHTML, SanitizedUnicode, StrippedHTML from marshmallow_utils.fields.babel import gettext_from_dict +from pyparsing import ParseException from .fields import AccessStatusField @@ -74,9 +78,10 @@ def apply_idx(affiliation): if "affiliations" in creator: creator["affiliations"] = list(map(apply_idx, creator["affiliations"])) if "role" in creator: - creator["role"]["title"] = gettext_from_dict( - creator["role"]["title"], get_locale(), current_default_locale() - ) + if "title" in creator["role"]: + creator["role"]["title"] = gettext_from_dict( + creator["role"]["title"], get_locale(), current_default_locale() + ) return { attr: creators, @@ -94,6 +99,22 @@ def record_version(obj): return field_data +def mask_removed_by(obj): + """Mask information about who removed the record.""" + return_value = _("Unknown") + removed_by = obj.get("removed_by", None) + + if removed_by is not None: + user = removed_by.get("user", None) + + if user == "system": + return_value = _("System (automatic)") + elif user is not None: + return_value = _("Admin") + + return return_value + + class RelatedIdentifiersSchema(Schema): """Localization of language titles.""" @@ -143,6 +164,35 @@ class FundingSchema(Schema): funder = fields.Nested(FunderL10NItemSchema) +class GeometrySchema(Schema): + """Schema for geometry in the UI.""" + + type = fields.Str() + coordinates = fields.List(fields.Float()) + + +class IdentifierSchema(Schema): + """Schema for dumping identifier in the UI.""" + + scheme = fields.Str() + identifier = fields.Str() + + +class FeatureSchema(Schema): + """Schema for dumping locations in the UI.""" + + place = SanitizedUnicode() + description = SanitizedUnicode() + geometry = fields.Nested(GeometrySchema) + identifiers = fields.List(fields.Nested(IdentifierSchema)) + + +class LocationSchema(Schema): + """Schema for dumping locations in the UI.""" + + features = fields.List(fields.Nested(FeatureSchema)) + + class MeetingSchema(Schema): """Schema for dumping 'meeting' custom field in the UI.""" @@ -162,38 +212,68 @@ def _format_journal(journal, publication_date): """Formats a journal object into a string based on its attributes. Example: - _format_journal({"title": "The Effects of Climate Change", "volume": 10, "issue": 2, "pages": "15-22", "issn": "1234-5678"}, "2022") - >>> 'The Effects of Climate Change: 10 (2022) no. 1234-5678 pp. 15-22 (2)' + _format_journal({"title": "The Effects of Climate Change", "volume": 10, "issue": 2, "pages": "15-22", "issn": "1234-5678", "publication_date": "2023-03-02}) + >>> 'The Effects of Climate Change, 10(2), 15-22, ISSN:1234-5678, 2023.' """ journal_title = journal.get("title") - if not journal_title: - return "" - journal_issn = journal.get("issn") journal_issue = journal.get("issue") + journal_volume = journal.get("volume") journal_pages = journal.get("pages") - publication_date = f"({publication_date})" if publication_date else None - title = f"{journal_title}:" - issn = f"no. {journal_issn}" if journal_issn else None - issue = f"({journal_issue})" if journal_issue else None - pages = f"pp. {journal_pages}" if journal_pages else None - fields = [title, journal.get("volume"), publication_date, issn, pages, issue] - formatted = " ".join(filter(None, fields)) + + try: + publication_date_edtf = ( + parse_edtf(publication_date).lower_strict() + if publication_date + else None + ) + publication_date_formatted = ( + f"{publication_date_edtf.tm_year}" if publication_date_edtf else None + ) + except ParseException: + publication_date_formatted = None + + title = f"{journal_title}" if journal_title else None + vol_issue = f"{journal_volume}" if journal_volume else None + + if journal_issue: + if vol_issue: + vol_issue += f"({journal_issue})" + else: + vol_issue = f"{journal_issue}" + pages = f"{journal_pages}" if journal_pages else None + issn = f"ISSN: {journal_issn}" if journal_issn else None + fields = [title, vol_issue, pages, issn, publication_date_formatted] + + formatted = ", ".join(filter(None, fields)) + formatted += "." return formatted if formatted else "" def _format_imprint(imprint, publisher): """Formats a imprint object into a string based on its attributes.""" - place = imprint.get("place", "") - isbn = imprint.get("isbn", "") - formatted = "{publisher}{place} {isbn}".format( - publisher=publisher, place=f", {place}", isbn=f"({isbn})" - ) + imprint_title = imprint.get("title") + imprint_place = imprint.get("place") + imprint_isbn = imprint.get("isbn") + imprint_pages = imprint.get("pages") + title_page = f"{imprint_title}" if imprint_title else "" + if imprint_pages: + if title_page: + title_page += f", {imprint_pages}." + else: + title_page = f"{imprint_pages}." + elif title_page: + title_page += "." + else: + title_page = None + place = f"{imprint_place}." if imprint_place else None + isbn = f"ISBN: {imprint_isbn}." if imprint_isbn else None + formatted = " ".join(filter(None, [title_page, place, isbn])) + return formatted attr = "custom_fields" field = obj.get(attr, {}) - publication_date = obj.get("metadata", {}).get("publication_date") publisher = obj.get("metadata", {}).get("publisher") # Retrieve publishing related custom fields @@ -201,6 +281,7 @@ def _format_imprint(imprint, publisher): imprint = field.get("imprint:imprint") thesis = field.get("thesis:university") + publication_date = obj.get("metadata", {}).get("publication_date", None) result = {} if journal: journal_string = _format_journal(journal, publication_date) @@ -220,6 +301,24 @@ def _format_imprint(imprint, publisher): return result +class TombstoneSchema(Schema): + """Schema for a record tombstone.""" + + removal_reason = fields.Nested(VocabularyL10Schema, attribute="removal_reason") + + note = fields.String(attribute="note") + + removed_by = fields.Function(mask_removed_by) + + removal_date_l10n_medium = FormatEDTF(attribute="removal_date", format="medium") + + removal_date_l10n_long = FormatEDTF(attribute="removal_date", format="long") + + citation_text = fields.String(attribute="citation_text") + + is_visible = fields.Boolean(attribute="is_visible") + + class UIRecordSchema(BaseObjectSchema): """Schema for dumping extra information for the UI.""" @@ -288,6 +387,10 @@ class UIRecordSchema(BaseObjectSchema): attribute="metadata.funding", ) + tombstone = fields.Nested(TombstoneSchema, attribute="tombstone") + + locations = fields.Nested(LocationSchema, attribute="metadata.locations") + @pre_dump def add_communities_permissions_and_roles(self, obj, **kwargs): """Inject current user's permission to community receiver.""" @@ -305,3 +408,11 @@ def add_communities_permissions_and_roles(self, obj, **kwargs): "can_include_directly": can_include_directly } return obj + + @post_dump + def hide_tombstone(self, obj, **kwargs): + """Hide the tombstone information if it's not visible.""" + if not obj.get("tombstone", {}).get("is_visible", False): + obj.pop("tombstone", None) + + return obj diff --git a/invenio_rdm_records/resources/serializers/utils.py b/invenio_rdm_records/resources/serializers/utils.py index 9e3bb2848..7ac0b3468 100644 --- a/invenio_rdm_records/resources/serializers/utils.py +++ b/invenio_rdm_records/resources/serializers/utils.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -8,6 +8,8 @@ """Helpers for serializers.""" +import math + from invenio_access.permissions import system_identity from invenio_search.engine import dsl from invenio_vocabularies.proxies import current_service as vocabulary_service @@ -48,3 +50,18 @@ def get_preferred_identifier(priority, identifiers): return identifiers[idx] return None + + +def convert_size(size_bytes): + """Convert syze, in bytes, to its string representation. + + Computed in bytes (base 1024): + """ + if size_bytes == 0: + return "0B" + + size_name = ("B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB") + i = int(math.floor(math.log(size_bytes, 1024))) + p = math.pow(1024, i) + s = round(size_bytes / p, 2) + return "%s %s" % (s, size_name[i]) diff --git a/invenio_rdm_records/resources/stats/event_builders.py b/invenio_rdm_records/resources/stats/event_builders.py index ea4d6e3c1..37ea343c6 100644 --- a/invenio_rdm_records/resources/stats/event_builders.py +++ b/invenio_rdm_records/resources/stats/event_builders.py @@ -61,24 +61,30 @@ def record_view_event_builder(event, sender_app, **kwargs): Flask's global ``request`` object. """ assert "record" in kwargs - record = kwargs["record"] - event.update( - { - # When: - "timestamp": datetime.utcnow().isoformat(), - # What: - "recid": record["id"], - "parent_recid": record.parent["id"], - # Who: - "referrer": request.referrer, - **get_user(), - # TODO probably we can add more request context information here for - # extra filtering (e.g. URL or query params for discarding the event - # when it's a citation text export) - } - ) - return event + + is_published = getattr(record, "is_published", False) + is_draft = getattr(record, "is_draft", True) + + # drop not published records + if is_published and not is_draft: + event.update( + { + # When: + "timestamp": datetime.utcnow().isoformat(), + # What: + "recid": record["id"], + "parent_recid": record.parent["id"], + # Who: + "referrer": request.referrer, + **get_user(), + # TODO probably we can add more request context information here for + # extra filtering (e.g. URL or query params for discarding the event + # when it's a citation text export) + } + ) + return event + return None def check_if_via_api(event, sender_app, **kwargs): diff --git a/invenio_rdm_records/resources/urls.py b/invenio_rdm_records/resources/urls.py new file mode 100644 index 000000000..4cb2a07bb --- /dev/null +++ b/invenio_rdm_records/resources/urls.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 Northwestern University. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Convenient URL generation. + +InvenioRDM poses challenges to url generation that Flask's url_for cannot handle out +of the gate. + +- InvenioRDM is actually 2 applications mounted on different url_prefixes: + `url_for` in the API application isn't aware of the UI application endpoints +- The routes are configurable via the `APP_RDM_ROUTES` configuration. +- But `APP_RDM_ROUTES` is not used for `RDMRecordServiceConfig.links_item` leading to + conflicts and inconsistencies. +- The endpoint names are relatively hidden / spread out and APP_RDM_ROUTES does have + its own endpoint naming convention. +- All other url generation use cases need to interact with this: generating urls outside + of a request context, generating canonical urls... + +This module contains minimal methods to generate URLs correctly without much +engineering. Over time, it can be made more abstract, complex and powerful and even +extracted into its own package to solve url generation across InvenioRDM once and for +all. +""" + +from flask import current_app + + +def record_url_for(_app="ui", pid_value=""): + """Return url for record route.""" + assert _app in ["ui", "api"] + + site_app = _app.upper() + url_prefix = current_app.config.get(f"SITE_{site_app}_URL", "") + + # We use [] so that this fails and brings to attention the configuration + # problem if APP_RDM_ROUTES.record_detail is missing + url_path = current_app.config["APP_RDM_ROUTES"]["record_detail"].replace( + "", pid_value + ) + + return "/".join(p.strip("/") for p in [url_prefix, url_path]) + + +def download_url_for(pid_value="", filename=""): + """Return url for download route.""" + url_prefix = current_app.config.get("SITE_UI_URL", "") + + # We use [] so that this fails and brings to attention the configuration + # problem if APP_RDM_ROUTES.record_file_download is missing + url_path = ( + current_app.config["APP_RDM_ROUTES"]["record_file_download"] + .replace("", pid_value) + .replace("", filename) + ) + + return "/".join(p.strip("/") for p in [url_prefix, url_path]) diff --git a/invenio_rdm_records/secret_links/models.py b/invenio_rdm_records/secret_links/models.py index d3766b6b8..76bd55ca9 100644 --- a/invenio_rdm_records/secret_links/models.py +++ b/invenio_rdm_records/secret_links/models.py @@ -11,7 +11,6 @@ from datetime import date, datetime from invenio_db import db -from itsdangerous import BadData from sqlalchemy_utils import UUIDType from .errors import InvalidPermissionLevelError diff --git a/invenio_rdm_records/secret_links/serializers.py b/invenio_rdm_records/secret_links/serializers.py index 4b4ea35dc..273057061 100644 --- a/invenio_rdm_records/secret_links/serializers.py +++ b/invenio_rdm_records/secret_links/serializers.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # # Copyright (C) 2021 TU Wien. +# Copyright (C) 2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -11,13 +12,17 @@ from datetime import datetime from flask import current_app -from itsdangerous import ( - BadData, - JSONWebSignatureSerializer, - Serializer, - SignatureExpired, - TimedJSONWebSignatureSerializer, -) +from itsdangerous import BadData, Serializer, SignatureExpired + +try: + # itsdangerous < 2.1.0 + from itsdangerous import JSONWebSignatureSerializer, TimedJSONWebSignatureSerializer +except ImportError: + # itsdangerous >= 2.1.0 + from invenio_base.jws import ( + JSONWebSignatureSerializer, + TimedJSONWebSignatureSerializer, + ) class TokenSerializerMixin(Serializer): @@ -111,7 +116,7 @@ def __init__(self, expires_at=None, **kwargs): current_app.config["SECRET_KEY"], expires_in=int(dt.total_seconds()) if dt else None, salt="rdm-records-timed-link", - **kwargs + **kwargs, ) diff --git a/invenio_rdm_records/secret_links/signals.py b/invenio_rdm_records/secret_links/signals.py index f6c617abd..067f5b9c0 100644 --- a/invenio_rdm_records/secret_links/signals.py +++ b/invenio_rdm_records/secret_links/signals.py @@ -7,7 +7,6 @@ """Secret link signals.""" - from blinker import Namespace _signals = Namespace() diff --git a/invenio_rdm_records/services/__init__.py b/invenio_rdm_records/services/__init__.py index 5048f7162..e2301d519 100644 --- a/invenio_rdm_records/services/__init__.py +++ b/invenio_rdm_records/services/__init__.py @@ -1,12 +1,13 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # Copyright (C) 2022 Universität Hamburg. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """High-level API for wokring with RDM records, files, pids and search.""" + from .access import RecordAccessService from .community_records import CommunityRecordsService from .config import ( diff --git a/invenio_rdm_records/services/access/service.py b/invenio_rdm_records/services/access/service.py index 372448c31..d8fd9e2ca 100644 --- a/invenio_rdm_records/services/access/service.py +++ b/invenio_rdm_records/services/access/service.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020-2021 Northwestern University. # Copyright (C) 2021 TU Wien. # Copyright (C) 2023 Graz University of Technology. @@ -9,31 +9,43 @@ # it under the terms of the MIT License; see LICENSE file for more details. """RDM record access settings service.""" + from datetime import datetime, timedelta import arrow -from flask import current_app, url_for +from flask import current_app +from flask_login import current_user from invenio_access.permissions import authenticated_user, system_identity from invenio_drafts_resources.services.records import RecordService +from invenio_drafts_resources.services.records.uow import ParentRecordCommitOp from invenio_i18n import lazy_gettext as _ +from invenio_notifications.services.uow import NotificationOp from invenio_records_resources.services.errors import PermissionDeniedError from invenio_records_resources.services.records.schema import ServiceSchemaWrapper -from invenio_records_resources.services.uow import RecordCommitOp, unit_of_work +from invenio_records_resources.services.uow import unit_of_work from invenio_requests.proxies import current_requests_service +from invenio_search.engine import dsl from invenio_users_resources.proxies import current_user_resources from marshmallow.exceptions import ValidationError from sqlalchemy.orm.exc import NoResultFound +from invenio_rdm_records.notifications.builders import ( + GrantUserAccessNotificationBuilder, + GuestAccessRequestTokenCreateNotificationBuilder, +) + from ...requests.access import AccessRequestToken, GuestAccessRequest, UserAccessRequest -from ...requests.access.requests import EmailOp from ...secret_links.errors import InvalidPermissionLevelError -from ..errors import DuplicateAccessRequestError +from ..decorators import groups_enabled +from ..errors import AccessRequestExistsError, GrantExistsError from ..results import GrantSubjectExpandableField class RecordAccessService(RecordService): """RDM Secret Link service.""" + group_subject_type = "role" + def link_result_item(self, *args, **kwargs): """Create a new instance of the resource unit.""" return self.config.link_result_item_cls(*args, **kwargs) @@ -47,7 +59,7 @@ def grant_result_item(self, *args, **kwargs): kwargs["expandable_fields"] = self.expandable_fields return self.config.grant_result_item_cls(*args, **kwargs) - def grant_result_list(self, *args, **kwargs): + def grants_result_list(self, *args, **kwargs): """Create a new instance of the resource list.""" kwargs["expandable_fields"] = self.expandable_fields return self.config.grant_result_list_cls(*args, **kwargs) @@ -70,6 +82,16 @@ def schema_grant(self): """Schema for secret links.""" return ServiceSchemaWrapper(self, schema=self.config.schema_grant) + @property + def schema_grants(self): + """Schema for grants.""" + return ServiceSchemaWrapper(self, schema=self.config.schema_grants) + + @property + def schema_request_access(self): + """Schema for secret links.""" + return ServiceSchemaWrapper(self, schema=self.config.schema_request_access) + @property def schema_access_settings(self): """Schema for record parent.""" @@ -178,13 +200,7 @@ def create_secret_link(self, identity, id_, data, links_config=None, uow=None): field_name="permission", ) - # Commit - uow.register(RecordCommitOp(parent)) - if record: - uow.register(RecordCommitOp(record)) - - # Index all child records of the parent - self._index_related_records(record, parent, uow=uow) + uow.register(ParentRecordCommitOp(parent, indexer_context=dict(service=self))) return self.link_result_item( self, @@ -284,13 +300,7 @@ def update_secret_link( link.permission_level = permission or link.permission_level link.description = data.get("description", link.description) - # Commit - uow.register(RecordCommitOp(parent)) - if record: - uow.register(RecordCommitOp(record)) - - # Index all child records of the parent - self._index_related_records(record, parent, uow=uow) + uow.register(ParentRecordCommitOp(parent, indexer_context=dict(service=self))) return self.link_result_item( self, @@ -319,13 +329,7 @@ def delete_secret_link(self, identity, id_, link_id, links_config=None, uow=None parent.access.links.pop(link_idx) link.revoke() - # Commit - uow.register(RecordCommitOp(parent)) - if record: - uow.register(RecordCommitOp(record)) - - # Index all child records of the parent - self._index_related_records(record, parent, uow=uow) + uow.register(ParentRecordCommitOp(parent, indexer_context=dict(service=self))) return True @@ -333,14 +337,14 @@ def delete_secret_link(self, identity, id_, link_id, links_config=None, uow=None # Access grants # - def _check_grant_subject(self, identity, grant): + def _validate_grant_subject(self, identity, grant): """Check if the grant subject exists and is visible to the given identity.""" try: if grant.subject_type == "user": current_user_resources.users_service.read( identity=identity, id_=grant.subject_id ) - elif grant.subject_type == "role": + elif grant.subject_type == RecordAccessService.group_subject_type: current_user_resources.groups_service.read( identity=identity, id_=grant.subject_id ) @@ -359,43 +363,71 @@ def _check_grant_subject(self, identity, grant): return False @unit_of_work() - def create_grant(self, identity, id_, data, expand=False, uow=None): - """Create an access grant for a record (resp. its parent).""" + def bulk_create_grants(self, identity, id_, data, expand=False, uow=None): + """Bulk create access grants for a record (resp. its parent).""" record, parent = self.get_parent_and_record_or_draft(id_) # Permissions self.require_permission(identity, "manage", record=record) # Validation - data, __ = self.schema_grant.load( + data, __ = self.schema_grants.load( data, context={"identity": identity}, raise_errors=True ) - # Creation - grant = parent.access.grants.create( - subject_type=data["subject"]["type"], - subject_id=data["subject"]["id"], - permission=data["permission"], - origin=data.get("origin"), - ) - - if not self._check_grant_subject(identity, grant): - raise ValidationError( - _("Could not find the specified subject."), field_name="subject.id" + grants = data["grants"] + + new_grants = [] + + # fail if any of the grants already exist + if any( + existing_grant.subject_id == grant["subject"]["id"] + and existing_grant.subject_type == grant["subject"]["type"] + for existing_grant in parent.access.grants + for grant in grants + ): + raise GrantExistsError() + + for grant in grants: + # checks if groups are enabled in the instance + if ( + not current_app.config.get("USERS_RESOURCES_GROUPS_ENABLED", False) + and grant["subject"]["type"] == RecordAccessService.group_subject_type + ): + raise PermissionDeniedError() + + # Creation + new_grant = parent.access.grants.create( + subject_type=grant["subject"]["type"], + subject_id=grant["subject"]["id"], + permission=grant["permission"], + origin=grant.get("origin"), ) - # Commit - uow.register(RecordCommitOp(parent)) - if record: - uow.register(RecordCommitOp(record)) + if not self._validate_grant_subject(identity, new_grant): + raise ValidationError( + _("Could not find the specified subject."), field_name="subject.id" + ) - # Index all child records of the parent - self._index_related_records(record, parent, uow=uow) + if grant["subject"]["type"] == "user" and grant.get("notify"): + uow.register( + NotificationOp( + GrantUserAccessNotificationBuilder.build( + record=record, + user={"user": grant["subject"]["id"]}, + permission=grant["permission"], + message=grant.get("message"), + ) + ) + ) + new_grants.append(new_grant) - return self.grant_result_item( + uow.register(ParentRecordCommitOp(parent, indexer_context=dict(service=self))) + + return self.grants_result_list( self, identity, - grant, + new_grants, expand=expand, ) @@ -412,6 +444,13 @@ def read_grant(self, identity, id_, grant_id, expand=False): grant = parent.access.grants[grant_id] + # checks if groups are enabled in the instance + if ( + not current_app.config.get("USERS_RESOURCES_GROUPS_ENABLED", False) + and grant.subject_type == RecordAccessService.group_subject_type + ): + raise PermissionDeniedError() + return self.grant_result_item( self, identity, @@ -438,6 +477,14 @@ def update_grant( # Fetching (required for parts of the validation) old_grant = parent.access.grants[grant_id] + + # checks if groups are enabled in the instance + if ( + not current_app.config.get("USERS_RESOURCES_GROUPS_ENABLED", False) + and old_grant.subject_type == RecordAccessService.group_subject_type + ): + raise PermissionDeniedError() + if partial: data = { "permission": data.get("permission", old_grant.permission), @@ -469,13 +516,7 @@ def update_grant( parent.access.grants[grant_id] = new_grant - # Commit - uow.register(RecordCommitOp(parent)) - if record: - uow.register(RecordCommitOp(record)) - - # Index all child records of the parent - self._index_related_records(record, parent, uow=uow) + uow.register(ParentRecordCommitOp(parent, indexer_context=dict(service=self))) return self.grant_result_item( self, @@ -491,11 +532,22 @@ def read_all_grants(self, identity, id_, expand=False): # Permissions self.require_permission(identity, "manage", record=record) + existing_grants = parent.access.grants + + for grant in existing_grants: + # removes group grants if groups are not enabled in the instance + if ( + not current_app.config.get("USERS_RESOURCES_GROUPS_ENABLED", False) + and grant.subject_type == RecordAccessService.group_subject_type + ): + # don't fail with 403, instead return only user grants, even if group grants are present + existing_grants.remove(grant) + # Fetching - return self.grant_result_list( + return self.grants_result_list( service=self, identity=identity, - results=parent.access.grants, + results=existing_grants, expand=expand, ) @@ -511,67 +563,95 @@ def delete_grant(self, identity, id_, grant_id, uow=None): if not 0 <= grant_id < len(parent.access.grants): raise LookupError(str(grant_id)) + # checks if groups are enabled in the instance + if ( + not current_app.config.get("USERS_RESOURCES_GROUPS_ENABLED", False) + and parent.access.grants[grant_id].subject_type + == RecordAccessService.group_subject_type + ): + raise PermissionDeniedError() + # Deletion parent.access.grants.pop(grant_id) - # Commit - uow.register(RecordCommitOp(parent)) - if record: - uow.register(RecordCommitOp(record)) - - # Index all child records of the parent - self._index_related_records(record, parent, uow=uow) + uow.register(ParentRecordCommitOp(parent, indexer_context=dict(service=self))) return True + def _exists(self, created_by, record_id, request_type): + """Return the request id if an open request already exists, else None.""" + query_terms = [ + dsl.Q("term", **{"topic.record": record_id}), + dsl.Q("term", **{"type": request_type}), + dsl.Q("term", **{"is_open": True}), + ] + + # Build the query dynamically based on the keys in created_by + for key, value in created_by.items(): + query_terms.append(dsl.Q("term", **{f"created_by.{key}": value})) + + open_requests = current_requests_service.search( + system_identity, + extra_filter=dsl.query.Bool("must", must=query_terms), + ) + + if open_requests.total > 1: + current_app.logger.error( + f"Multiple access requests detected for: " + f"record_pid{record_id}, creator: {created_by}" + ) + + if open_requests.total > 0: + return open_requests.to_dict()["hits"]["hits"][0] + + def request_access(self, identity, id_, data, expand=False): + """Redirect the access request to specific service method.""" + if current_user.is_authenticated: + valid_current_email = ( + data.get("email", "").lower() == current_user.email.lower() + ) + if valid_current_email: + return self.create_user_access_request( + identity, id_, data, expand=expand + ) + + return self.create_guest_access_request_token( + identity, id_, data, expand=expand + ) + # # Access requests # - @unit_of_work() - def create_user_access_request( - self, identity, id_, message, expand=False, uow=None - ): + def create_user_access_request(self, identity, id_, data, expand=False, uow=None): """Create a user access request for the given record.""" record = self.record_cls.pid.resolve(id_) # Permissions + # fail early if record fully restricted self.require_permission(identity, "read", record=record) - denied = False - try: - self.require_permission(identity, "read_files", record=record) - except PermissionDeniedError: - denied = True - if not denied: - raise PermissionDeniedError() + can_read_files = self.check_permission(identity, "read_files", record=record) - # Detect duplicate requests - req_cls = current_requests_service.record_cls - model_cls = req_cls.model_cls - requests = [ - request - for request in ( - req_cls(rm.data, model=rm) - for rm in model_cls.query.filter( - model_cls.json["created_by"] == {"user": str(identity.id)}, - model_cls.json["topic"] == {"record": id_}, - ) - if rm.data and rm.data["type"] == UserAccessRequest.type_id + if can_read_files: + raise PermissionDeniedError( + "You already have access to files of this record." ) - if request.is_open - ] - if requests: - raise DuplicateAccessRequestError([str(r.id) for r in requests]) + existing_access_request = self._exists( + created_by={"user": str(identity.id)}, + record_id=id_, + request_type=UserAccessRequest.type_id, + ) + + if existing_access_request: + raise AccessRequestExistsError(existing_access_request["id"]) - record = self.record_cls.pid.resolve(id_) - data = { - "payload": { - "permission": "view", - "message": message, - } - } + data, __ = self.schema_request_access.load( + data, context={"identity": identity}, raise_errors=True + ) + + data = {"payload": data} # Determine the request's receiver receiver = None @@ -579,9 +659,6 @@ def create_user_access_request( if record_owner: receiver = record_owner - if receiver is None: - pass - request = current_requests_service.create( identity, data, @@ -593,21 +670,19 @@ def create_user_access_request( uow=uow, ) - # immediately submit the request, unless it has errors - if request.errors: - return request - - message = { - "payload": { - "content": data["payload"].get("message") or "", + message = data["payload"].get("message") + comment = None + if message: + comment = { + "payload": { + "content": message, + } } - } - return current_requests_service.execute_action( identity, request.id, "submit", - data=message, + data=comment, uow=uow, ) @@ -616,10 +691,6 @@ def create_guest_access_request_token( self, identity, id_, data, expand=False, uow=None ): """Create a request token that can be used to create an access request.""" - # Permissions - if authenticated_user in identity.provides: - raise PermissionDeniedError("request_guest_access") - record = self.record_cls.pid.resolve(id_) if current_app.config.get("MAIL_SUPPRESS_SEND", False): # TODO should be handled globally, not here, maybe EmailOp? @@ -628,44 +699,34 @@ def create_guest_access_request_token( "email sending has been disabled!" ) + data, __ = self.schema_request_access.load( + data, context={"identity": identity}, raise_errors=True + ) + access_token = AccessRequestToken.create( email=data["email"], full_name=data["full_name"], - message=data["message"], + message=data.get("message"), record_pid=id_, shelf_life=timedelta(hours=6), + consent=data["consent_to_share_personal_data"], ) # Create the URL for the email verification endpoint - # TODO why replace api? - verify_url = url_for( - "invenio_rdm_records_ext.verify_access_request_token", - _external=True, - **{"access_request_token": access_token.token}, - ).replace("/api/", "/") + # TODO ideally this part should be auto generated, but + # due to api app and ui app split, api app does not have the UI + # urls registered + verify_url = ( + f"{current_app.config['SITE_UI_URL']}" + f"/access/requests/confirm" + f"?access_request_token={access_token.token}" + ) uow.register( - EmailOp( - receiver=data["email"], - subject=_( - "Access request for '%(record_title)s'", - record_title=record.metadata["title"], - ), - html_body=_( - ( - "Please verify your e-mail address via the following link " - "in order to submit the access request: " - '%(url)s' - ), - url=verify_url, - ), - body=_( - ( - "Please verify your e-mail address via the following link " - "in order to submit the access request: %(url)s" - ), - url=verify_url, - ), + NotificationOp( + GuestAccessRequestTokenCreateNotificationBuilder.build( + record=record, email=data["email"], verify_url=verify_url + ) ) ) @@ -688,30 +749,24 @@ def create_guest_access_request(self, identity, token, expand=False, uow=None): record = self.record_cls.pid.resolve(access_token_data["record_pid"]) # Detect duplicate requests - req_cls = current_requests_service.record_cls - model_cls = req_cls.model_cls - requests = [ - request - for request in ( - req_cls(rm.data, model=rm) - for rm in model_cls.query.filter( - model_cls.json["created_by"] == {"email": access_token.email}, - model_cls.json["topic"] == {"record": access_token.record_pid}, - ) - if rm.data and rm.data["type"] == GuestAccessRequest.type_id - ) - if request.is_open - ] + existing_access_request = self._exists( + created_by={"email": access_token.email}, + record_id=access_token.record_pid, + request_type=GuestAccessRequest.type_id, + ) - if requests: - raise DuplicateAccessRequestError([str(r.id) for r in requests]) + if existing_access_request: + raise AccessRequestExistsError(existing_access_request["id"]) data = { "payload": { "permission": "view", "email": access_token_data["email"], "full_name": access_token_data["full_name"], "token": access_token_data["token"], - "message": access_token_data.get("message") or "", + "message": access_token_data.get("message", ""), + "consent_to_share_personal_data": access_token_data.get( + "consent_to_share_personal_data" + ), "secret_link_expiration": str( record.parent.access.settings.secret_link_expiration ), @@ -736,11 +791,13 @@ def create_guest_access_request(self, identity, token, expand=False, uow=None): uow=uow, ) - message = data["payload"].get("message") or "" - comment = {"payload": {"content": message}} + message = data["payload"].get("message") + comment = None + if message: + comment = {"payload": {"content": message}} return current_requests_service.execute_action( - system_identity, + identity, request.id, "submit", data=comment, @@ -769,11 +826,7 @@ def update_access_settings( # Update setattr(parent.access, "settings", data) - # Commit - uow.register(RecordCommitOp(parent)) - - # Index all child records of the parent - self._index_related_records(record, parent, uow=uow) + uow.register(ParentRecordCommitOp(parent, indexer_context=dict(service=self))) return self.result_item( self, @@ -781,3 +834,143 @@ def update_access_settings( record, links_tpl=self.links_item_tpl, ) + + # TODO: rework the whole service and move these to a separate one: + # https://github.com/inveniosoftware/invenio-rdm-records/issues/1685 + @groups_enabled(group_subject_type) + def read_grant_by_subject( + self, identity, id_, subject_id, subject_type, expand=False + ): + """Read a specific access grant of a record by subject.""" + record, parent = self.get_parent_and_record_or_draft(id_) + + # Permissions + self.require_permission(identity, "manage", record=record) + + result = None + for grant in parent.access.grants: + if grant.subject_id == subject_id and grant.subject_type == subject_type: + result = grant + + if not result: + raise LookupError(subject_id) + + return self.grant_result_item( + self, + identity, + result, + expand=expand, + ) + + @groups_enabled(group_subject_type) + def read_all_grants_by_subject(self, identity, id_, subject_type, expand=False): + """Read access grants of a record (resp. its parent) by subject type.""" + record, parent = self.get_parent_and_record_or_draft(id_) + + # Permissions + self.require_permission(identity, "manage", record=record) + + user_grants = [] + for grant in parent.access.grants: + if grant.subject_type == subject_type: + user_grants.append(grant) + + # Fetching + return self.grants_result_list( + service=self, + identity=identity, + results=user_grants, + expand=expand, + ) + + @groups_enabled(group_subject_type) + @unit_of_work() + def update_grant_by_subject( + self, + identity, + id_, + subject_id, + subject_type, + data, + expand=False, + uow=None, + ): + """Update access grant for a record (resp. its parent) by subject.""" + record, parent = self.get_parent_and_record_or_draft(id_) + + # Permissions + self.require_permission(identity, "manage", record=record) + + # Fetching (required for parts of the validation) + grant_index = None + for grant in parent.access.grants: + if grant.subject_id == subject_id and grant.subject_type == subject_type: + grant_index = parent.access.grants.index(grant) + + if grant_index is None: + raise LookupError(subject_id) + + old_grant = parent.access.grants[grant_index] + data = { + "permission": data.get("permission", old_grant.permission), + "subject": { + "type": data.get("subject", {}).get("type", old_grant.subject_type), + "id": data.get("subject", {}).get("id", old_grant.subject_id), + }, + "origin": data.get("origin", old_grant.origin), + } + + # Validation + data, __ = self.schema_grant.load( + data, context={"identity": identity}, raise_errors=True + ) + + # Update + try: + new_grant = parent.access.grants.grant_cls.create( + origin=data["origin"], + permission=data["permission"], + subject_type=data["subject"]["type"], + subject_id=data["subject"]["id"], + resolve_subject=True, + ) + except LookupError: + raise ValidationError( + _("Could not find the specified subject."), field_name="subject.id" + ) + + parent.access.grants[grant_index] = new_grant + + uow.register(ParentRecordCommitOp(parent, indexer_context=dict(service=self))) + + return self.grant_result_item( + self, + identity, + new_grant, + expand=expand, + ) + + @groups_enabled(group_subject_type) + @unit_of_work() + def delete_grant_by_subject( + self, identity, id_, subject_id, subject_type, uow=None + ): + """Delete an access grant for a record by subject.""" + record, parent = self.get_parent_and_record_or_draft(id_) + + # Permissions + self.require_permission(identity, "manage", record=record) + + # Deletion + result = None + for grant in parent.access.grants: + if grant.subject_id == subject_id and grant.subject_type == subject_type: + result = grant + parent.access.grants.remove(grant) + + if not result: + raise LookupError(subject_id) + + uow.register(ParentRecordCommitOp(parent, indexer_context=dict(service=self))) + + return True diff --git a/invenio_rdm_records/services/communities/components.py b/invenio_rdm_records/services/communities/components.py index f57f3ad6c..8c2f4c5a9 100644 --- a/invenio_rdm_records/services/communities/components.py +++ b/invenio_rdm_records/services/communities/components.py @@ -1,36 +1,37 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Record communities service components.""" -from flask import current_app -from invenio_access.permissions import system_identity from invenio_communities.communities.records.systemfields.access import VisibilityEnum +from invenio_communities.communities.services.components import ChildrenComponent from invenio_communities.communities.services.components import ( CommunityAccessComponent as BaseAccessComponent, ) from invenio_communities.communities.services.components import ( + CommunityDeletionComponent, + CommunityParentComponent, + CommunityThemeComponent, CustomFieldsComponent, FeaturedCommunityComponent, OAISetComponent, OwnershipComponent, PIDComponent, ) -from invenio_drafts_resources.services.records.components import ServiceComponent from invenio_i18n import lazy_gettext as _ from invenio_records_resources.services.records.components import ( MetadataComponent, RelationsComponent, ) -from invenio_requests.tasks import request_moderation from invenio_search.engine import dsl from ...proxies import current_community_records_service from ..errors import InvalidCommunityVisibility +from .moderation import ContentModerationComponent class CommunityAccessComponent(BaseAccessComponent): @@ -61,27 +62,9 @@ def update(self, identity, data=None, record=None, **kwargs): self._check_visibility(identity, record) -class ContentModerationComponent(ServiceComponent): - """Service component for content moderation.""" - - def create(self, identity, data=None, record=None, **kwargs): - """Create a moderation request if the user is not verified.""" - if current_app.config["RDM_USER_MODERATION_ENABLED"]: - # If the publisher is the system process, we don't want to create a moderation request. - # Even if the record being published is owned by a user that is not system - if identity == system_identity: - return - - # resolve current user and check if they are verified - is_verified = identity.user.verified_at is not None - - if not is_verified: - # Spawn a task to request moderation. - request_moderation.delay(identity.id) - - CommunityServiceComponents = [ MetadataComponent, + CommunityThemeComponent, CustomFieldsComponent, PIDComponent, RelationsComponent, @@ -89,5 +72,8 @@ def create(self, identity, data=None, record=None, **kwargs): OwnershipComponent, FeaturedCommunityComponent, OAISetComponent, + CommunityDeletionComponent, + ChildrenComponent, + CommunityParentComponent, ContentModerationComponent, ] diff --git a/invenio_rdm_records/services/communities/moderation.py b/invenio_rdm_records/services/communities/moderation.py new file mode 100644 index 000000000..52e7e4342 --- /dev/null +++ b/invenio_rdm_records/services/communities/moderation.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Content moderation for communities.""" + +from flask import current_app +from invenio_access.permissions import system_identity +from invenio_records_resources.services.records.components import ServiceComponent +from invenio_records_resources.services.uow import TaskOp +from invenio_requests.tasks import request_moderation + + +class BaseHandler: + """Base class for content moderation handlers.""" + + def create(self, identity, record=None, data=None, uow=None, **kwargs): + """Create handler.""" + pass + + def update(self, identity, record=None, data=None, uow=None, **kwargs): + """Update handler.""" + pass + + def delete(self, identity, data=None, record=None, uow=None, **kwargs): + """Delete handler.""" + pass + + +class UserModerationHandler(BaseHandler): + """Creates user moderation request if the user publishing is not verified.""" + + @property + def enabled(self): + """Check if user moderation is enabled.""" + return current_app.config["RDM_USER_MODERATION_ENABLED"] + + def run(self, identity, record=None, uow=None): + """Calculate the moderation score for a given record or draft.""" + if self.enabled: + # If the publisher is the system process, we don't want to create a moderation request. + # Even if the record being published is owned by a user that is not system + if identity == system_identity: + return + + # resolve current user and check if they are verified + is_verified = identity.user.verified_at is not None + if not is_verified: + # Spawn a task to request moderation. + self.uow.register(TaskOp(request_moderation, user_id=identity.id)) + + def create(self, identity, record=None, data=None, uow=None, **kwargs): + """Handle create.""" + self.run(identity, record=record, uow=uow) + + def update(self, identity, record=None, data=None, uow=None, **kwargs): + """Handle update.""" + self.run(identity, record=record, uow=uow) + + +class ContentModerationComponent(ServiceComponent): + """Service component for content moderation.""" + + def handler_for(action): + """Get the handlers for an action.""" + + def _handler_method(self, *args, **kwargs): + handlers = current_app.config.get( + "RDM_COMMUNITY_CONTENT_MODERATION_HANDLERS", [] + ) + for handler in handlers: + action_method = getattr(handler, action, None) + if action_method: + action_method(*args, **kwargs, uow=self.uow) + + return _handler_method + + create = handler_for("create") + update = handler_for("update") + delete = handler_for("delete") + + del handler_for diff --git a/invenio_rdm_records/services/communities/service.py b/invenio_rdm_records/services/communities/service.py index 2935c0a8c..613d168c8 100644 --- a/invenio_rdm_records/services/communities/service.py +++ b/invenio_rdm_records/services/communities/service.py @@ -1,16 +1,21 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. +# Copyright (C) 2024 Graz University of Technology. +# Copyright (C) 2024 KTH Royal Institute of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """RDM Record Communities Service.""" +from flask import current_app +from invenio_access.permissions import system_identity from invenio_communities.proxies import current_communities +from invenio_drafts_resources.services.records.uow import ParentRecordCommitOp from invenio_i18n import lazy_gettext as _ from invenio_notifications.services.uow import NotificationOp -from invenio_pidstore.errors import PIDDoesNotExistError +from invenio_pidstore.errors import PIDDoesNotExistError, PIDUnregistered from invenio_records_resources.services import ( RecordIndexerMixin, Service, @@ -19,7 +24,6 @@ from invenio_records_resources.services.errors import PermissionDeniedError from invenio_records_resources.services.uow import ( IndexRefreshOp, - RecordCommitOp, RecordIndexOp, unit_of_work, ) @@ -28,16 +32,16 @@ from invenio_search.engine import dsl from sqlalchemy.orm.exc import NoResultFound -from invenio_rdm_records.notifications.builders import ( - CommunityInclusionSubmittedNotificationBuilder, -) -from invenio_rdm_records.proxies import current_rdm_records -from invenio_rdm_records.requests import CommunityInclusion -from invenio_rdm_records.services.errors import ( +from ...notifications.builders import CommunityInclusionSubmittedNotificationBuilder +from ...proxies import current_rdm_records, current_rdm_records_service +from ...requests import CommunityInclusion +from ..errors import ( + CannotRemoveCommunityError, CommunityAlreadyExists, InvalidAccessRestrictions, OpenRequestAlreadyExists, RecordCommunityMissing, + RecordSubmissionClosedCommunityError, ) @@ -52,15 +56,25 @@ def schema(self): """Returns the data schema instance.""" return ServiceSchemaWrapper(self, schema=self.config.schema) + @property + def communities_schema(self): + """Returns the communities schema instance.""" + return ServiceSchemaWrapper(self, schema=self.config.communities_schema) + @property def record_cls(self): """Factory for creating a record class.""" return self.config.record_cls - def _exists(self, identity, community_id, record): + @property + def draft_cls(self): + """Factory for creating a draft class.""" + return self.config.draft_cls + + def _exists(self, community_id, record): """Return the request id if an open request already exists, else None.""" results = current_requests_service.search( - identity, + system_identity, extra_filter=dsl.query.Bool( "must", must=[ @@ -71,6 +85,11 @@ def _exists(self, identity, community_id, record): ], ), ) + if results.total > 1: + current_app.logger.error( + f"Multiple community inclusions request detected for: " + f"record_pid{record.pid.pid_value}, community_id{community_id}" + ) return next(results.hits)["id"] if results.total > 0 else None def _include(self, identity, community_id, comment, require_review, record, uow): @@ -84,7 +103,8 @@ def _include(self, identity, community_id, comment, require_review, record, uow) raise CommunityAlreadyExists() # check if there is already an open request, to avoid duplications - existing_request_id = self._exists(identity, com_id, record) + existing_request_id = self._exists(com_id, record) + if existing_request_id: raise OpenRequestAlreadyExists(existing_request_id) @@ -139,6 +159,19 @@ def add(self, identity, id_, data, uow): "community_id": community_id, } try: + can_submit_record = ( + current_communities.service.config.permission_policy_cls( + "submit_record", + community_id=community_id, + record=current_communities.service.record_cls.pid.resolve( + community_id + ), + ).allows(identity) + ) + + if not can_submit_record: + raise RecordSubmissionClosedCommunityError() + request_item = self._include( identity, community_id, comment, require_review, record, uow ) @@ -163,6 +196,9 @@ def add(self, identity, id_, data, uow): ) as ex: result["message"] = ex.description errors.append(result) + except RecordSubmissionClosedCommunityError as e: + result["message"] = e.description + errors.append(result) uow.register(IndexRefreshOp(indexer=self.indexer)) @@ -173,10 +209,20 @@ def _remove(self, identity, community_id, record): if community_id not in record.parent.communities.ids: raise RecordCommunityMissing(record.id, community_id) - # check permission here, per community: curator cannot remove another community - self.require_permission( - identity, "remove_community", record=record, community_id=community_id - ) + try: + self.require_permission( + identity, "remove_community", record=record, community_id=community_id + ) + # By default, admin/superuser has permission to do everything, so PermissionDeniedError won't be raised for admin in any case + except PermissionDeniedError as exc: + # If permission is denied, determine which error to raise, based on config + community_required = current_app.config["RDM_COMMUNITY_REQUIRED_TO_PUBLISH"] + is_last_community = len(record.parent.communities.ids) <= 1 + if community_required and is_last_community: + raise CannotRemoveCommunityError() + else: + # If the config wasn't enabled, then raise the PermissionDeniedError + raise exc # Default community is deleted when the exact same community is removed from the record record.parent.communities.remove(community_id) @@ -201,7 +247,11 @@ def remove(self, identity, id_, data, uow): try: self._remove(identity, community_id, record) processed.append({"community": community_id}) - except (RecordCommunityMissing, PermissionDeniedError) as ex: + except ( + RecordCommunityMissing, + PermissionDeniedError, + CannotRemoveCommunityError, + ) as ex: errors.append( { "community": community_id, @@ -209,7 +259,12 @@ def remove(self, identity, id_, data, uow): } ) if processed: - uow.register(RecordCommitOp(record.parent)) + uow.register( + ParentRecordCommitOp( + record.parent, + indexer_context=dict(service=current_rdm_records_service), + ) + ) uow.register( RecordIndexOp(record, indexer=self.indexer, index_refresh=True) ) @@ -224,10 +279,13 @@ def search( search_preference=None, expand=False, extra_filter=None, - **kwargs + **kwargs, ): """Search for record's communities.""" - record = self.record_cls.pid.resolve(id_) + try: + record = self.record_cls.pid.resolve(id_) + except PIDUnregistered: + record = self.draft_cls.pid.resolve(id_, registered_only=False) self.require_permission(identity, "read", record=record) communities_ids = record.parent.communities.ids @@ -241,7 +299,7 @@ def search( search_preference=search_preference, expand=expand, extra_filter=communities_filter, - **kwargs + **kwargs, ) @staticmethod @@ -285,7 +343,7 @@ def search_suggested_communities( expand=False, by_membership=False, extra_filter=None, - **kwargs + **kwargs, ): """Search for communities that can be added to a record.""" record = self.record_cls.pid.resolve(id_) @@ -305,7 +363,7 @@ def search_suggested_communities( params=params, search_preference=search_preference, extra_filter=communities_filter, - **kwargs + **kwargs, ) return current_communities.service.search( @@ -314,5 +372,76 @@ def search_suggested_communities( search_preference=search_preference, expand=expand, extra_filter=communities_filter, - **kwargs + **kwargs, + ) + + @unit_of_work() + def set_default(self, identity, id_, data, uow): + """Set default community.""" + valid_data, _ = self.communities_schema.load( + data, + context={ + "identity": identity, + }, + raise_errors=True, + ) + record = self.record_cls.pid.resolve(id_) + self.require_permission(identity, "manage", record=record) + record.parent.communities.default = valid_data["default"]["id"] + + uow.register( + ParentRecordCommitOp( + record.parent, + indexer_context=dict(service=current_rdm_records_service), + ) ) + + return record.parent + + @unit_of_work() + def bulk_add(self, identity, community_id, record_ids, set_default=False, uow=None): + """Bulk adds records to a community. + + :param identity: The identity performing the action. + :param community_id: The ID of the community. + :param record_ids: List of record IDs to be added to the community. + :param set_default: Whether to set the community as default for the added records. + """ + self.require_permission(identity, "bulk_add") + errors = [] + for record_id in record_ids: + record = self.record_cls.pid.resolve(record_id) + community = current_communities.service.record_cls.pid.resolve(community_id) + + set_default = set_default or not record.parent.communities + already_included = community.id in record.parent.communities + if already_included: + errors.append( + { + "record_id": record_id, + "community_id": community_id, + "message": "Community already included.", + } + ) + continue + + parent_community = getattr(community, "parent", None) + already_in_parent = ( + parent_community + and str(parent_community.id) in record.parent.communities + ) + + if parent_community and not already_in_parent: + record.parent.communities.add(parent_community, request=None) + + record.parent.communities.add(community, request=None, default=set_default) + + # Commit and bulk re-index everything + uow.register( + ParentRecordCommitOp( + record.parent, + indexer_context={"service": current_rdm_records_service}, + bulk_index=True, + ) + ) + return errors diff --git a/invenio_rdm_records/services/community_inclusion/service.py b/invenio_rdm_records/services/community_inclusion/service.py index a438b3c5c..b74056dfc 100644 --- a/invenio_rdm_records/services/community_inclusion/service.py +++ b/invenio_rdm_records/services/community_inclusion/service.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -8,16 +8,14 @@ """Community Inclusion Service.""" from flask import current_app +from invenio_access.permissions import system_identity from invenio_communities import current_communities -from invenio_i18n import lazy_gettext as _ -from invenio_requests import current_requests_service +from invenio_i18n import gettext as _ +from invenio_requests import current_events_service, current_requests_service +from invenio_requests.customizations.event_types import CommentEventType -from invenio_rdm_records.requests.community_inclusion import ( - CommunityInclusion, - is_access_restriction_valid, -) -from invenio_rdm_records.requests.community_submission import CommunitySubmission -from invenio_rdm_records.services.errors import InvalidAccessRestrictions +from ...requests.community_inclusion import CommunityInclusion +from ...requests.community_submission import CommunitySubmission class CommunityInclusionService: @@ -45,10 +43,6 @@ def submit(self, identity, record, community, request, data, uow): if request.type.type_id not in self.supported_types: raise ValueError("Invalid request type.") - # validate record and community access - if not is_access_restriction_valid(record, community): - raise InvalidAccessRestrictions() - # All other preconditions can be checked by the action itself which can # raise appropriate exceptions. return current_requests_service.execute_action( @@ -69,7 +63,24 @@ def include(self, identity, community, request, uow): if can_include_directly: request_item = current_requests_service.execute_action( - identity, request.id, "accept", data=None, uow=uow + system_identity, request.id, "accept", data=None, uow=uow + ) + + data = { + "payload": { + "content": _( + "This request has been automatically accepted, as the uploader can submit to " + "community directly without review." + ), + } + } + current_events_service.create( + system_identity, + request_item.id, + data, + CommentEventType, + uow=uow, + notify=False, ) else: request_item = current_requests_service.read(identity, request.id) diff --git a/invenio_rdm_records/services/community_records/service.py b/invenio_rdm_records/services/community_records/service.py index ada937eea..7209f676b 100644 --- a/invenio_rdm_records/services/community_records/service.py +++ b/invenio_rdm_records/services/community_records/service.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -18,7 +18,8 @@ from invenio_records_resources.services.uow import unit_of_work from invenio_search.engine import dsl -from invenio_rdm_records.proxies import current_record_communities_service +from ...proxies import current_rdm_records, current_record_communities_service +from ...records.systemfields.deletion_status import RecordDeletionStatusEnum class CommunityRecordsService(RecordService): @@ -44,7 +45,7 @@ def search( params=None, search_preference=None, extra_filter=None, - **kwargs + **kwargs, ): """Search for records published in the given community.""" self.require_permission(identity, "search") @@ -58,6 +59,11 @@ def search( community_filter = dsl.Q( "term", **{"parent.communities.ids": str(community.id)} ) + status = RecordDeletionStatusEnum.PUBLISHED.value + + published_filter = dsl.Q("term", **{"deletion_status": status}) + community_filter &= published_filter + if extra_filter is not None: community_filter = community_filter & extra_filter diff --git a/invenio_rdm_records/services/components/__init__.py b/invenio_rdm_records/services/components/__init__.py index 69511ad37..1bd491a7d 100644 --- a/invenio_rdm_records/services/components/__init__.py +++ b/invenio_rdm_records/services/components/__init__.py @@ -1,26 +1,58 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. - """High-level API for working with RDM service components.""" +from invenio_drafts_resources.services.records.components import ( + DraftFilesComponent, + DraftMediaFilesComponent, + PIDComponent, + RelationsComponent, +) + from .access import AccessComponent from .custom_fields import CustomFieldsComponent +from .internal_notes import InternalNotesComponent from .metadata import MetadataComponent from .pids import ParentPIDsComponent, PIDsComponent +from .record_deletion import RecordDeletionComponent +from .record_files import RecordFilesProcessorComponent from .review import ReviewComponent from .verified import ContentModerationComponent +# Default components - order matters! +DefaultRecordsComponents = [ + MetadataComponent, + CustomFieldsComponent, + AccessComponent, + DraftFilesComponent, + DraftMediaFilesComponent, + RecordFilesProcessorComponent, + RecordDeletionComponent, + # for the internal `pid` field + PIDComponent, + # for the `pids` field (external PIDs) + PIDsComponent, + ParentPIDsComponent, + RelationsComponent, + ReviewComponent, + ContentModerationComponent, + InternalNotesComponent, +] + + __all__ = ( "AccessComponent", + "ContentModerationComponent", "CustomFieldsComponent", "MetadataComponent", "PIDsComponent", "ParentPIDsComponent", + "RecordDeletionComponent", "ReviewComponent", - "ContentModerationComponent", + "DefaultRecordsComponents", ) diff --git a/invenio_rdm_records/services/components/internal_notes.py b/invenio_rdm_records/services/components/internal_notes.py new file mode 100644 index 000000000..33f125466 --- /dev/null +++ b/invenio_rdm_records/services/components/internal_notes.py @@ -0,0 +1,80 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""RDM service component for custom fields.""" +import uuid +from copy import copy, deepcopy +from datetime import datetime, timezone + +from invenio_drafts_resources.services.records.components import ServiceComponent + + +class InternalNotesComponent(ServiceComponent): + """Service component for custom fields.""" + + field = "internal_notes" + + def create(self, identity, data=None, record=None, **kwargs): + """Inject note to the record.""" + notes = data.get(self.field, []) + for note in notes: + note.update( + { + "added_by": {"user": identity.id}, + "timestamp": datetime.now(timezone.utc).isoformat(), + "id": str(uuid.uuid4()), + } + ) + record.update({"internal_notes": notes}) + + def update_draft(self, identity, data=None, record=None, **kwargs): + """Update internal notes field on draft update. + + Takes list of internal notes. Adds timestamp and user to new notes. + Ignores updates of existing notes. Removes a note if missing from data + Ex. if existing record has record["internal_notes"] = [{"id": "uuuid1", "note": "abc"}] + data: [{"id": "uuuid1", "note": "abc"}, {"note: "edf"}] <--- adds a new note "edf" + data: [] <--- removes existing note of id = uuid1 + data: [{"id": "uuuid1", "note": "new note"}] <--- does not modify existing note + We don't allow updates to existing notes since each one + has a user and timestamp - therefore should be "locked" in time + """ + notes_to_update = deepcopy(data.get(self.field, [])) + existing_notes = deepcopy(record.get(self.field, [])) + ids_to_check = [note["id"] for note in existing_notes] + + # reverse list to keep proper iterator reference after remove + for note in reversed(notes_to_update): + note.setdefault("id", str(uuid.uuid4())) + if note["id"] in ids_to_check: + # skip already existing IDs from incoming data + # because we don't allow updating existing notes + notes_to_update.remove(note) + # we remove checked ids. The ones remaining on this list will be deleted + ids_to_check.remove(note["id"]) + continue + note.setdefault("added_by", {"user": identity.id}) + note.setdefault("timestamp", datetime.now(timezone.utc).isoformat()) + + to_delete = ids_to_check + for note in existing_notes: + if note["id"] in to_delete: + existing_notes.remove(note) + + record.update({"internal_notes": existing_notes + notes_to_update}) + + def publish(self, identity, draft=None, record=None, **kwargs): + """Update draft metadata.""" + record.update({"internal_notes": draft.get(self.field, [])}) + + def edit(self, identity, draft=None, record=None, **kwargs): + """Update draft metadata.""" + draft.update({"internal_notes": record.get(self.field, [])}) + + def new_version(self, identity, draft=None, record=None, **kwargs): + """Update draft metadata.""" + draft.update({"internal_notes": copy(record.get(self.field, []))}) diff --git a/invenio_rdm_records/services/components/pids.py b/invenio_rdm_records/services/components/pids.py index c56dcd5f0..8a08a67b2 100644 --- a/invenio_rdm_records/services/components/pids.py +++ b/invenio_rdm_records/services/components/pids.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2022 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020 Northwestern University. # Copyright (C) 2021 TU Wien. # Copyright (C) 2021 Graz University of Technology. @@ -12,8 +12,10 @@ from copy import copy +from flask import current_app from invenio_drafts_resources.services.records.components import ServiceComponent -from invenio_records_resources.services.uow import RecordCommitOp, TaskOp +from invenio_drafts_resources.services.records.uow import ParentRecordCommitOp +from invenio_records_resources.services.uow import TaskOp from ..pids.tasks import register_or_update_pid @@ -74,7 +76,7 @@ def publish(self, identity, draft=None, record=None): required_schemes = set(self.service.config.pids_required) # Validate the draft PIDs - self.service.pids.pid_manager.validate(draft_pids, record, raise_errors=True) + self.service.pids.pid_manager.validate(draft_pids, draft, raise_errors=True) # Detect which PIDs on a published record that has been changed. # @@ -82,12 +84,14 @@ def publish(self, identity, draft=None, record=None): # on a published record. Changes are handled by removing the old PID # and adding the new. changed_pids = {} - for scheme in draft_schemes.intersection(record_schemes): + for scheme in draft_schemes & record_schemes: record_id = record_pids[scheme]["identifier"] draft_id = draft_pids[scheme]["identifier"] if record_id != draft_id: changed_pids[scheme] = record_pids[scheme] + self.service.pids.pid_manager.validate_restriction_level(draft) + self.service.pids.pid_manager.discard_all(changed_pids) # Determine schemes which are required, but not yet created. @@ -96,11 +100,27 @@ def publish(self, identity, draft=None, record=None): pids = self.service.pids.pid_manager.create_all( draft, pids=draft_pids, - schemes=missing_required_schemes, + schemes=( + missing_required_schemes + if draft["access"]["record"] != "restricted" + else None + ), ) # Reserve all created PIDs and store them on the record self.service.pids.pid_manager.reserve_all(draft, pids) + + # Restore any removed required PIDs + removed_required_pids = (record_schemes - draft_schemes) & required_schemes + pids.update( + { + scheme: record_pids[scheme] + for scheme in removed_required_pids + if scheme in record_pids + } + ) + + # Set the resulting PIDs on the record record.pids = pids # Async register/update tasks after transaction commit. @@ -126,6 +146,16 @@ def edit(self, identity, draft=None, record=None): self.service.pids.pid_manager.validate(pids, record) draft.pids = pids + def delete_record(self, identity, data=None, record=None, uow=None): + """Process pids on delete record.""" + record_pids = copy(record.get("pids", {})) + self.service.pids.pid_manager.discard_all(record_pids, soft_delete=True) + + def restore_record(self, identity, record=None, uow=None): + """Restore previously invalidated pids.""" + record_pids = copy(record.get("pids", {})) + self.service.pids.pid_manager.restore_all(record_pids) + class ParentPIDsComponent(ServiceComponent): """Service component for record parent PIDs.""" @@ -162,10 +192,40 @@ def publish(self, identity, draft=None, record=None): record.parent.pids = pids # TODO: This should normally be done in `Service.publish` - self.uow.register(RecordCommitOp(record.parent)) + self.uow.register( + ParentRecordCommitOp( + record.parent, indexer_context=dict(service=self.service) + ) + ) # Async register/update tasks after transaction commit. for scheme in pids.keys(): self.uow.register( TaskOp(register_or_update_pid, record["id"], scheme, parent=True) ) + + def delete_record(self, identity, data=None, record=None, uow=None): + """Process pids on delete record.""" + record_cls = self.service.record_cls + parent_pids = copy(record.parent.get("pids", {})) + if record_cls.next_latest_published_record_by_parent(record.parent) is None: + self.service.pids.parent_pid_manager.discard_all( + parent_pids, soft_delete=True + ) + + # Async register/update tasks after transaction commit. + for scheme in parent_pids.keys(): + self.uow.register( + TaskOp(register_or_update_pid, record["id"], scheme, parent=True) + ) + + def restore_record(self, identity, record=None, uow=None): + """Restore previously invalidated pids.""" + parent_pids = copy(record.parent.get("pids", {})) + self.service.pids.parent_pid_manager.restore_all(parent_pids) + + # Async register/update tasks after transaction commit. + for scheme in parent_pids.keys(): + self.uow.register( + TaskOp(register_or_update_pid, record["id"], scheme, parent=True) + ) diff --git a/invenio_rdm_records/services/components/record_deletion.py b/invenio_rdm_records/services/components/record_deletion.py new file mode 100644 index 000000000..a4e6dad9f --- /dev/null +++ b/invenio_rdm_records/services/components/record_deletion.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 TU Wien. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""RDM service component for record deletion.""" + +from flask import current_app +from invenio_drafts_resources.services.records.components import ServiceComponent +from invenio_i18n.proxies import current_i18n + +from ...records.systemfields.deletion_status import RecordDeletionStatusEnum +from ...resources.serializers.csl import ( + CSLJSONSerializer, + get_citation_string, + get_style_location, +) + + +class RecordDeletionComponent(ServiceComponent): + """Service component for record deletion.""" + + def delete_record(self, identity, data=None, record=None, **kwargs): + """Set the record's deletion status and tombstone information.""" + # If no `citation_text` has been supplied, create one + if not data.get("citation_text", None): + default_citation_style = current_app.config.get( + "RDM_CITATION_STYLES_DEFAULT", "apa" + ) + + serializer = CSLJSONSerializer() + style = get_style_location(default_citation_style) + default_citation = get_citation_string( + serializer.dump_obj(record), + record.pid.pid_value, + style, + locale=current_i18n.language, + ) + + data["citation_text"] = default_citation + + # Set the record's deletion status and tombstone information + record.deletion_status = RecordDeletionStatusEnum.DELETED + record.tombstone = data + + # Set `removed_by` information for the tombstone + record.tombstone.removed_by = identity.id + + def update_tombstone(self, identity, data=None, record=None, **kwargs): + """Update the record's tombstone information.""" + record.tombstone = data + + def restore_record(self, identity, data=None, record=None, **kwargs): + """Reset the record's deletion status and tombstone information.""" + record.deletion_status = RecordDeletionStatusEnum.PUBLISHED + + # Remove the tombstone information + record.tombstone = None + + # Set a record to 'metadata only' if its files got cleaned up + if not record.files.entries: + record.files.enabled = False + + def mark_record(self, identity, data=None, record=None, **kwargs): + """Mark the record for purge.""" + record.deletion_status = RecordDeletionStatusEnum.MARKED + record.tombstone = record.tombstone + + def unmark_record(self, identity, data=None, record=None, **kwargs): + """Unmark the record for purge, resetting it to soft-deleted state.""" + record.deletion_status = RecordDeletionStatusEnum.DELETED + record.tombstone = record.tombstone diff --git a/invenio_rdm_records/services/components/record_files.py b/invenio_rdm_records/services/components/record_files.py new file mode 100644 index 000000000..e02f29976 --- /dev/null +++ b/invenio_rdm_records/services/components/record_files.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2020-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Record components.""" + +from invenio_drafts_resources.services.records.components import ServiceComponent + + +class RecordFilesProcessorComponent(ServiceComponent): + """Service component for RecordFilesProcessor.""" + + def publish(self, identity, draft=None, record=None): + """Publish handler.""" + for processor in self.service.config.record_file_processors: + processor(draft, record, uow=self.uow) + + # TODO: Add this method to a new "RDMRecordServiceComponent" class + def lift_embargo(self, identity, draft=None, record=None): + """Lift embargo handler.""" + for processor in self.service.config.record_file_processors: + processor(draft, record, uow=self.uow) diff --git a/invenio_rdm_records/services/components/review.py b/invenio_rdm_records/services/components/review.py index ff79b6ce1..c6b7eea24 100644 --- a/invenio_rdm_records/services/components/review.py +++ b/invenio_rdm_records/services/components/review.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2023 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -8,7 +8,6 @@ """RDM service component for request integration.""" - from invenio_drafts_resources.services.records.components import ServiceComponent from invenio_i18n import lazy_gettext as _ from invenio_requests import current_requests_service diff --git a/invenio_rdm_records/services/components/signal.py b/invenio_rdm_records/services/components/signal.py new file mode 100644 index 000000000..4c1944c5e --- /dev/null +++ b/invenio_rdm_records/services/components/signal.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""RDM service component for Software Heritage integration.""" + +from invenio_drafts_resources.services.records.components import ServiceComponent +from invenio_records_resources.services.uow import TaskOp + +from invenio_rdm_records.services.tasks import send_post_published_signal + + +class SignalComponent(ServiceComponent): + """Service component to trigger signals on publish.""" + + def publish(self, identity, draft=None, record=None): + """Publish record.""" + self.uow.register(TaskOp(send_post_published_signal, pid=record["id"])) diff --git a/invenio_rdm_records/services/components/verified.py b/invenio_rdm_records/services/components/verified.py index 7e0da02fc..7b700f992 100644 --- a/invenio_rdm_records/services/components/verified.py +++ b/invenio_rdm_records/services/components/verified.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -9,23 +9,91 @@ from flask import current_app from invenio_access.permissions import system_identity from invenio_drafts_resources.services.records.components import ServiceComponent -from invenio_i18n import lazy_gettext as _ +from invenio_records_resources.services.uow import TaskOp from invenio_requests.tasks import request_moderation -class ContentModerationComponent(ServiceComponent): - """Service component for content moderation.""" +class BaseHandler: + """Base class for content moderation handlers.""" + + def update_draft( + self, identity, data=None, record=None, errors=None, uow=None, **kwargs + ): + """Update draft handler.""" + pass + + def delete_draft( + self, identity, draft=None, record=None, force=False, uow=None, **kwargs + ): + """Delete draft handler.""" + pass + + def edit(self, identity, draft=None, record=None, uow=None, **kwargs): + """Edit a record handler.""" + pass + + def new_version(self, identity, draft=None, record=None, uow=None, **kwargs): + """New version handler.""" + pass + + def publish(self, identity, draft=None, record=None, uow=None, **kwargs): + """Publish handler.""" + pass + + def post_publish( + self, identity, record=None, is_published=False, uow=None, **kwargs + ): + """Post publish handler.""" + pass + + +class UserModerationHandler(BaseHandler): + """Creates user moderation request if the user publishing is not verified.""" + + @property + def enabled(self): + """Check if user moderation is enabled.""" + return current_app.config["RDM_USER_MODERATION_ENABLED"] - def publish(self, identity, draft=None, record=None): - """Create a moderation request if the user is not verified.""" - if current_app.config["RDM_USER_MODERATION_ENABLED"]: + def run(self, identity, record=None, uow=None): + """Calculate the moderation score for a given record or draft.""" + if self.enabled: # If the publisher is the system process, we don't want to create a moderation request. # Even if the record being published is owned by a user that is not system if identity == system_identity: return is_verified = record.parent.is_verified - if not is_verified: # Spawn a task to request moderation. - request_moderation.delay(record.parent.access.owner.owner_id) + user_id = record.parent.access.owner.owner_id + uow.register(TaskOp(request_moderation, user_id=user_id)) + + def publish(self, identity, draft=None, record=None, uow=None, **kwargs): + """Handle publish.""" + self.run(identity, record=record, uow=uow) + + +class ContentModerationComponent(ServiceComponent): + """Service component for content moderation.""" + + def handler_for(action): + """Get the handlers for an action.""" + + def _handler_method(self, *args, **kwargs): + handlers = current_app.config.get("RDM_CONTENT_MODERATION_HANDLERS", []) + for handler in handlers: + action_method = getattr(handler, action, None) + if action_method: + action_method(*args, **kwargs, uow=self.uow) + + return _handler_method + + update_draft = handler_for("update_draft") + delete_draft = handler_for("delete_draft") + edit = handler_for("edit") + publish = handler_for("publish") + post_publish = handler_for("post_publish") + new_version = handler_for("new_version") + + del handler_for diff --git a/invenio_rdm_records/services/config.py b/invenio_rdm_records/services/config.py index aaa235717..160071860 100644 --- a/invenio_rdm_records/services/config.py +++ b/invenio_rdm_records/services/config.py @@ -1,25 +1,27 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020-2021 Northwestern University. # Copyright (C) 2021 TU Wien. # Copyright (C) 2021-2023 Graz University of Technology. -# Copyright (C) 2022 Universität Hamburg +# Copyright (C) 2022 Universität Hamburg +# Copyright (C) 2024 KTH Royal Institute of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """RDM Record Service.""" +import itertools +from copy import deepcopy from os.path import splitext +from pathlib import Path from flask import current_app +from invenio_administration.permissions import administration_permission from invenio_communities.communities.records.api import Community from invenio_drafts_resources.services.records.components import ( - DraftFilesComponent, DraftMediaFilesComponent, - PIDComponent, - RelationsComponent, ) from invenio_drafts_resources.services.records.config import ( RecordServiceConfig, @@ -31,7 +33,12 @@ ) from invenio_drafts_resources.services.records.search_params import AllVersionsParam from invenio_indexer.api import RecordIndexer -from invenio_records_resources.services import ConditionalLink, FileServiceConfig +from invenio_records_resources.services import ( + ConditionalLink, + FileServiceConfig, + RecordLink, + pagination_links, +) from invenio_records_resources.services.base.config import ( ConfiguratorMixin, FromConfig, @@ -39,8 +46,13 @@ SearchOptionsMixin, ServiceConfig, ) -from invenio_records_resources.services.base.links import Link +from invenio_records_resources.services.base.links import ( + Link, + NestedLinks, + preprocess_vars, +) from invenio_records_resources.services.files.links import FileLink +from invenio_records_resources.services.files.schema import FileSchema from invenio_records_resources.services.records.config import ( RecordServiceConfig as BaseRecordServiceConfig, ) @@ -56,19 +68,14 @@ from invenio_requests.services.requests import RequestItem, RequestList from invenio_requests.services.requests.config import RequestSearchOptions from requests import Request +from werkzeug.local import LocalProxy + +from invenio_rdm_records.records.processors.tiles import TilesProcessor from ..records import RDMDraft, RDMRecord from ..records.api import RDMDraftMediaFiles, RDMRecordMediaFiles from . import facets -from .components import ( - AccessComponent, - ContentModerationComponent, - CustomFieldsComponent, - MetadataComponent, - ParentPIDsComponent, - PIDsComponent, - ReviewComponent, -) +from .components import DefaultRecordsComponents from .customizations import ( FromConfigConditionalPIDs, FromConfigPIDsProviders, @@ -76,34 +83,48 @@ ) from .permissions import RDMRecordPermissionPolicy from .result_items import GrantItem, GrantList, SecretLinkItem, SecretLinkList +from .results import RDMRecordList from .schemas import RDMParentSchema, RDMRecordSchema from .schemas.community_records import CommunityRecordsSchema from .schemas.parent.access import AccessSettingsSchema from .schemas.parent.access import Grant as GrantSchema +from .schemas.parent.access import Grants as GrantsSchema +from .schemas.parent.access import RequestAccessSchema from .schemas.parent.access import SecretLink as SecretLinkSchema +from .schemas.parent.communities import CommunitiesSchema +from .schemas.quota import QuotaSchema from .schemas.record_communities import RecordCommunitiesSchema +from .schemas.tombstone import TombstoneSchema +from .search_params import ( + MetricsParam, + MyDraftsParam, + PublishedRecordsParam, + StatusParam, +) from .sort import VerifiedRecordsSortParam def is_draft_and_has_review(record, ctx): - """Determine if submit review link should be included.""" + """Determine if draft has doi.""" return is_draft(record, ctx) and record.parent.review is not None def is_record_and_has_doi(record, ctx): - """Determine if submit review link should be included.""" + """Determine if record has doi.""" return is_record(record, ctx) and has_doi(record, ctx) -def is_record_and_has_parent_doi(record, ctx): - """Determine if submit review link should be included.""" - return is_record(record, ctx) and has_doi(record.parent, ctx) +def is_record_or_draft_and_has_parent_doi(record, ctx): + """Determine if draft or record has parent doi.""" + return (is_record(record, ctx) or is_draft(record, ctx)) and has_doi( + record.parent, ctx + ) def has_doi(record, ctx): """Determine if a record has a DOI.""" pids = record.pids or {} - return "doi" in pids + return "doi" in pids and pids["doi"].get("identifier") is not None def is_iiif_compatible(file_, ctx): @@ -117,12 +138,17 @@ def archive_download_enabled(record, ctx): return current_app.config["RDM_ARCHIVE_DOWNLOAD_ENABLED"] +def _groups_enabled(record, ctx): + """Return if groups are enabled.""" + return current_app.config.get("USERS_RESOURCES_GROUPS_ENABLED", False) + + def is_datacite_test(record, ctx): """Return if the datacite test mode is being used.""" return current_app.config["DATACITE_TEST_MODE"] -def lock_edit_published_files(record): +def lock_edit_published_files(service, identity, record=None, draft=None): """Return if files once published should be locked when editing the record. Return False to allow editing of published files or True otherwise. @@ -130,6 +156,57 @@ def lock_edit_published_files(record): return True +def has_image_files(record, ctx): + """Return if the record has any image file.""" + for file in record.files.entries: + file_ext = splitext(file)[1].replace(".", "").lower() + if file_ext in current_app.config["IIIF_FORMATS"]: + return True + + +def record_thumbnail_sizes(): + """Return configured sizes for thumbnails.""" + return current_app.config.get("APP_RDM_RECORD_THUMBNAIL_SIZES", []) + + +def get_record_thumbnail_file(record, **kwargs): + """Generate the URL for a record's thumbnail.""" + files = record.files + default_preview = files.get("default_preview") + file_entries = files.entries + image_extensions = current_app.config["IIIF_FORMATS"] + if file_entries: + # Verify file has allowed extension and select the default preview file if present else the first valid file + file_key = next( + ( + key + for key in itertools.chain([default_preview], file_entries) + if key and Path(key).suffix[1:] in image_extensions + ), + None, + ) + return file_key + + +class RecordPIDLink(Link): + """Record PID link.""" + + def vars(self, record, vars): + """Add record PID to vars.""" + vars.update( + { + f"pid_{scheme}": pid["identifier"] + for (scheme, pid) in record.pids.items() + } + ) + vars.update( + { + f"parent_pid_{scheme}": pid["identifier"] + for (scheme, pid) in record.parent.pids.items() + } + ) + + # # Default search configuration # @@ -149,6 +226,9 @@ class RDMSearchOptions(SearchOptions, SearchOptionsMixin): PaginationParam, FacetsParam, VerifiedRecordsSortParam, + StatusParam, + PublishedRecordsParam, + MetricsParam, ] @@ -162,21 +242,32 @@ class RDMSearchDraftsOptions(SearchDraftsOptions, SearchOptionsMixin): "is_published": facets.is_published, } + params_interpreters_cls = [ + MyDraftsParam + ] + SearchDraftsOptions.params_interpreters_cls + class RDMSearchVersionsOptions(SearchVersionsOptions, SearchOptionsMixin): """Search options for record versioning search.""" + params_interpreters_cls = [ + PublishedRecordsParam + ] + SearchVersionsOptions.params_interpreters_cls + class RDMRecordCommunitiesConfig(ServiceConfig, ConfiguratorMixin): """Record communities service config.""" service_id = "record-communities" - record_cls = RDMRecord + + record_cls = FromConfig("RDM_RECORD_CLS", default=RDMRecord) + draft_cls = FromConfig("RDM_DRAFT_CLS", default=RDMDraft) permission_policy_cls = FromConfig( "RDM_PERMISSION_POLICY", default=RDMRecordPermissionPolicy, import_string=True ) schema = RecordCommunitiesSchema + communities_schema = CommunitiesSchema indexer_cls = RecordIndexer indexer_queue_name = service_id @@ -191,7 +282,7 @@ class RDMRecordCommunitiesConfig(ServiceConfig, ConfiguratorMixin): class RDMRecordRequestsConfig(ServiceConfig, ConfiguratorMixin): """Record community inclusion config.""" - request_record_cls = RDMRecord + request_record_cls = FromConfig("RDM_RECORD_CLS", default=RDMRecord) service_id = "record-requests" permission_policy_cls = FromConfig( "RDM_PERMISSION_POLICY", default=RDMRecordPermissionPolicy, import_string=True @@ -207,51 +298,107 @@ class RDMRecordRequestsConfig(ServiceConfig, ConfiguratorMixin): index_dumper = None -class RDMCommunityRecordsConfig(BaseRecordServiceConfig, ConfiguratorMixin): - """Community records service config.""" +# +# Default service configuration +# +class RDMFileRecordServiceConfig(FileServiceConfig, ConfiguratorMixin): + """Configuration for record files.""" + + record_cls = FromConfig("RDM_RECORD_CLS", default=RDMRecord) - service_id = "community-records" - record_cls = RDMRecord - community_cls = Community permission_policy_cls = FromConfig( - "RDM_PERMISSION_POLICY", default=RDMRecordPermissionPolicy, import_string=True + "RDM_PERMISSION_POLICY", default=RDMRecordPermissionPolicy ) - # Search configuration - search = FromConfigSearchOptions( - "RDM_SEARCH", - "RDM_SORT_OPTIONS", - "RDM_FACETS", - search_option_cls=RDMSearchOptions, - ) - search_versions = FromConfigSearchOptions( - "RDM_SEARCH_VERSIONING", - "RDM_SORT_OPTIONS", - "RDM_FACETS", - search_option_cls=RDMSearchVersionsOptions, - ) + max_files_count = FromConfig("RDM_RECORDS_MAX_FILES_COUNT", 100) - # Service schemas - community_record_schema = CommunityRecordsSchema - schema = RDMRecordSchema + file_links_list = { + **FileServiceConfig.file_links_list, + "archive": RecordLink( + "{+api}/records/{id}/files-archive", + when=archive_download_enabled, + ), + } - # Max n. records that can be removed at once - max_number_of_removals = 10 + file_links_item = { + **FileServiceConfig.file_links_item, + # FIXME: filename instead + "iiif_canvas": FileLink( + "{+api}/iiif/record:{id}/canvas/{+key}", when=is_iiif_compatible + ), + "iiif_base": FileLink( + "{+api}/iiif/record:{id}:{+key}", when=is_iiif_compatible + ), + "iiif_info": FileLink( + "{+api}/iiif/record:{id}:{+key}/info.json", when=is_iiif_compatible + ), + "iiif_api": FileLink( + "{+api}/iiif/record:{id}:{+key}/{region=full}" + "/{size=full}/{rotation=0}/{quality=default}.{format=png}", + when=is_iiif_compatible, + ), + } - links_search_community_records = pagination_links( - "{+api}/communities/{id}/records{?args*}" + file_schema = FileSchema + + components = FromConfig( + "RDM_FILES_SERVICE_COMPONENTS", default=FileServiceConfig.components ) -# -# Default service configuration -# +class ThumbnailLinks(RecordLink): + """RDM thumbnail links dictionary.""" + + def __init__(self, *args, sizes=None, **kwargs): + """Constructor.""" + self._sizes = sizes + super().__init__(*args, **kwargs) + + def expand(self, obj, context): + """Expand the thumbs size dictionary of URIs.""" + vars = {} + vars.update(deepcopy(context)) + self.vars(obj, vars) + if self._vars_func: + self._vars_func(obj, vars) + vars = preprocess_vars(vars) + + thumbnail_links = {} + vars["file_key"] = get_record_thumbnail_file(record=obj) + for size in self._sizes: + vars["size"] = size + thumbnail_links[str(size)] = self._uritemplate.expand(**vars) + return thumbnail_links + + +# Helper link definitions +record_doi_link = ConditionalLink( + cond=is_datacite_test, + if_=RecordPIDLink("https://handle.stage.datacite.org/{+pid_doi}", when=has_doi), + else_=RecordPIDLink("https://doi.org/{+pid_doi}", when=has_doi), +) +record_doi_html_link = RecordPIDLink("{+ui}/doi/{+pid_doi}", when=is_record_and_has_doi) +parent_doi_link = ConditionalLink( + cond=is_datacite_test, + if_=RecordPIDLink( + "https://handle.stage.datacite.org/{+parent_pid_doi}", + when=is_record_or_draft_and_has_parent_doi, + ), + else_=RecordPIDLink( + "https://doi.org/{+parent_pid_doi}", when=is_record_or_draft_and_has_parent_doi + ), +) +parent_doi_html_link = RecordPIDLink( + "{+ui}/doi/{+parent_pid_doi}", when=is_record_or_draft_and_has_parent_doi +) + + class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): """RDM record draft service config.""" # Record and draft classes - record_cls = RDMRecord - draft_cls = RDMDraft + record_cls = FromConfig("RDM_RECORD_CLS", default=RDMRecord) + draft_cls = FromConfig("RDM_DRAFT_CLS", default=RDMDraft) # Schemas schema = RDMRecordSchema @@ -259,6 +406,10 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): schema_access_settings = AccessSettingsSchema schema_secret_link = SecretLinkSchema schema_grant = GrantSchema + schema_grants = GrantsSchema + schema_request_access = RequestAccessSchema + schema_tombstone = TombstoneSchema + schema_quota = QuotaSchema # Permission policy permission_policy_cls = FromConfig( @@ -270,6 +421,7 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): link_result_list_cls = SecretLinkList grant_result_item_cls = GrantItem grant_result_list_cls = GrantList + result_list_cls = RDMRecordList default_files_enabled = FromConfig("RDM_DEFAULT_FILES_ENABLED", default=True) @@ -288,6 +440,7 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): "RDM_SORT_OPTIONS", "RDM_FACETS", search_option_cls=RDMSearchOptions, + search_option_cls_key="RDM_SEARCH_OPTIONS_CLS", ) search_drafts = FromConfigSearchOptions( "RDM_SEARCH_DRAFTS", @@ -318,24 +471,14 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): ) # Components - order matters! - components = [ - MetadataComponent, - CustomFieldsComponent, - AccessComponent, - DraftFilesComponent, - DraftMediaFilesComponent, - # for the internal `pid` field - PIDComponent, - # for the `pids` field (external PIDs) - PIDsComponent, - ParentPIDsComponent, - RelationsComponent, - ReviewComponent, - ContentModerationComponent, - ] + # Service components + components = FromConfig( + "RDM_RECORDS_SERVICE_COMPONENTS", default=DefaultRecordsComponents + ) # Links links_item = { + # Record "self": ConditionalLink( cond=is_record, if_=RecordLink("{+api}/records/{id}"), @@ -346,39 +489,9 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): if_=RecordLink("{+ui}/records/{id}"), else_=RecordLink("{+ui}/uploads/{id}"), ), - "self_doi": Link( - "{+ui}/doi/{+pid_doi}", - when=is_record_and_has_doi, - vars=lambda record, vars: vars.update( - { - f"pid_{scheme}": pid["identifier"] - for (scheme, pid) in record.pids.items() - } - ), - ), - "doi": ConditionalLink( - cond=is_datacite_test, - if_=Link( - "https://handle.stage.datacite.org/{+pid_doi}", - when=has_doi, - vars=lambda record, vars: vars.update( - { - f"pid_{scheme}": pid["identifier"] - for (scheme, pid) in record.pids.items() - } - ), - ), - else_=Link( - "https://doi.org/{+pid_doi}", - when=has_doi, - vars=lambda record, vars: vars.update( - { - f"pid_{scheme}": pid["identifier"] - for (scheme, pid) in record.pids.items() - } - ), - ), - ), + "doi": record_doi_link, + "self_doi": record_doi_link, + "self_doi_html": record_doi_html_link, # Parent "parent": RecordLink( "{+api}/records/{+parent_id}", @@ -394,16 +507,9 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): {"parent_id": record.parent.pid.pid_value} ), ), - "parent_doi": Link( - "{+ui}/doi/{+pid_doi}", - when=is_record_and_has_parent_doi, - vars=lambda record, vars: vars.update( - { - f"pid_{scheme}": pid["identifier"] - for (scheme, pid) in record.parent.pids.items() - } - ), - ), + "parent_doi": parent_doi_link, + "parent_doi_html": parent_doi_html_link, + # IIIF "self_iiif_manifest": ConditionalLink( cond=is_record, if_=RecordLink("{+api}/iiif/record:{id}/manifest"), @@ -414,6 +520,7 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): if_=RecordLink("{+api}/iiif/record:{id}/sequence/default"), else_=RecordLink("{+api}/iiif/draft:{id}/sequence/default"), ), + # Files "files": ConditionalLink( cond=is_record, if_=RecordLink("{+api}/records/{id}/files"), @@ -424,6 +531,11 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): if_=RecordLink("{+api}/records/{id}/media-files"), else_=RecordLink("{+api}/records/{id}/draft/media-files"), ), + "thumbnails": ThumbnailLinks( + "{+api}/iiif/record:{id}:{file_key}/full/^{size},/0/default.jpg", + sizes=LocalProxy(record_thumbnail_sizes), + when=has_image_files, + ), "archive": ConditionalLink( cond=is_record, if_=RecordLink( @@ -435,13 +547,27 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): when=archive_download_enabled, ), ), + "archive_media": ConditionalLink( + cond=is_record, + if_=RecordLink( + "{+api}/records/{id}/media-files-archive", + when=archive_download_enabled, + ), + else_=RecordLink( + "{+api}/records/{id}/draft/media-files-archive", + when=archive_download_enabled, + ), + ), + # Versioning "latest": RecordLink("{+api}/records/{id}/versions/latest", when=is_record), "latest_html": RecordLink("{+ui}/records/{id}/latest", when=is_record), + "versions": RecordLink("{+api}/records/{id}/versions"), "draft": RecordLink("{+api}/records/{id}/draft", when=is_record), "record": RecordLink("{+api}/records/{id}", when=is_draft), # TODO: record_html temporarily needed for DOI registration, until # problems with self_doi has been fixed "record_html": RecordLink("{+ui}/records/{id}", when=is_draft), + # Actions "publish": RecordLink( "{+api}/records/{id}/draft/actions/publish", when=is_draft ), @@ -450,17 +576,88 @@ class RDMRecordServiceConfig(RecordServiceConfig, ConfiguratorMixin): "{+api}/records/{id}/draft/actions/submit-review", when=is_draft_and_has_review, ), - "versions": RecordLink("{+api}/records/{id}/versions"), - "access_links": RecordLink("{+api}/records/{id}/access/links"), # TODO: only include link when DOI support is enabled. "reserve_doi": RecordLink("{+api}/records/{id}/draft/pids/doi"), + # Access + "access_links": RecordLink("{+api}/records/{id}/access/links"), + "access_grants": RecordLink("{+api}/records/{id}/access/grants"), + "access_users": RecordLink("{+api}/records/{id}/access/users"), + "access_groups": RecordLink( + "{+api}/records/{id}/access/groups", when=_groups_enabled + ), + "access_request": RecordLink("{+api}/records/{id}/access/request"), + "access": RecordLink("{+api}/records/{id}/access"), + # Communities "communities": RecordLink("{+api}/records/{id}/communities"), "communities-suggestions": RecordLink( "{+api}/records/{id}/communities-suggestions" ), + # Requests "requests": RecordLink("{+api}/records/{id}/requests"), } + nested_links_item = [ + NestedLinks( + links=RDMFileRecordServiceConfig.file_links_item, + key="files.entries", + context_func=lambda identity, record, key, value: { + "id": record.pid.pid_value, + "key": key, + }, + ), + NestedLinks( + links=RDMFileRecordServiceConfig.file_links_item, + key="media_files.entries", + context_func=lambda identity, record, key, value: { + "id": record.pid.pid_value, + "key": key, + }, + ), + ] + + record_file_processors = FromConfig( + "RDM_RECORD_FILE_PROCESSORS", default=[TilesProcessor()] + ) + + +class RDMCommunityRecordsConfig(BaseRecordServiceConfig, ConfiguratorMixin): + """Community records service config.""" + + service_id = "community-records" + record_cls = FromConfig("RDM_RECORD_CLS", default=RDMRecord) + community_cls = Community + permission_policy_cls = FromConfig( + "RDM_PERMISSION_POLICY", default=RDMRecordPermissionPolicy, import_string=True + ) + + # Search configuration + search = FromConfigSearchOptions( + "RDM_SEARCH", + "RDM_SORT_OPTIONS", + "RDM_FACETS", + search_option_cls=RDMSearchOptions, + search_option_cls_key="RDM_SEARCH_OPTIONS_CLS", + ) + search_versions = FromConfigSearchOptions( + "RDM_SEARCH_VERSIONING", + "RDM_SORT_OPTIONS", + "RDM_FACETS", + search_option_cls=RDMSearchVersionsOptions, + ) + + # Service schemas + community_record_schema = CommunityRecordsSchema + schema = RDMRecordSchema + + # Max n. records that can be removed at once + max_number_of_removals = 10 + + links_search_community_records = pagination_links( + "{+api}/communities/{id}/records{?args*}" + ) + + links_item = RDMRecordServiceConfig.links_item + class RDMRecordMediaFilesServiceConfig(RDMRecordServiceConfig): """RDM Record with media files service config.""" @@ -474,61 +671,45 @@ class RDMRecordMediaFilesServiceConfig(RDMRecordServiceConfig): ] -class RDMFileRecordServiceConfig(FileServiceConfig, ConfiguratorMixin): - """Configuration for record files.""" +class RDMMediaFileRecordServiceConfig(FileServiceConfig, ConfiguratorMixin): + """Configuration for record media files.""" - record_cls = RDMRecord + record_cls = RDMRecordMediaFiles permission_policy_cls = FromConfig( "RDM_PERMISSION_POLICY", default=RDMRecordPermissionPolicy ) + permission_action_prefix = "media_" + + max_files_count = FromConfig("RDM_RECORDS_MAX_MEDIA_FILES_COUNT", 100) file_links_list = { - **FileServiceConfig.file_links_list, + "self": RecordLink("{+api}/records/{id}/media-files"), "archive": RecordLink( - "{+api}/records/{id}/files-archive", + "{+api}/records/{id}/media-files-archive", when=archive_download_enabled, ), } file_links_item = { - **FileServiceConfig.file_links_item, - # FIXME: filename instead + "self": FileLink("{+api}/records/{id}/media-files/{key}"), + "content": FileLink("{+api}/records/{id}/media-files/{key}/content"), "iiif_canvas": FileLink( - "{+api}/iiif/record:{id}/canvas/{key}", when=is_iiif_compatible + "{+api}/iiif/record:{id}/canvas/{+key}", when=is_iiif_compatible + ), + "iiif_base": FileLink( + "{+api}/iiif/record:{id}:{+key}", when=is_iiif_compatible ), - "iiif_base": FileLink("{+api}/iiif/record:{id}:{key}", when=is_iiif_compatible), "iiif_info": FileLink( - "{+api}/iiif/record:{id}:{key}/info.json", when=is_iiif_compatible + "{+api}/iiif/record:{id}:{+key}/info.json", when=is_iiif_compatible ), "iiif_api": FileLink( - "{+api}/iiif/record:{id}:{key}/{region=full}" + "{+api}/iiif/record:{id}:{+key}/{region=full}" "/{size=full}/{rotation=0}/{quality=default}.{format=png}", when=is_iiif_compatible, ), } - -class RDMMediaFileRecordServiceConfig(FileServiceConfig, ConfiguratorMixin): - """Configuration for record media files.""" - - record_cls = RDMRecordMediaFiles - permission_policy_cls = FromConfig( - "RDM_PERMISSION_POLICY", default=RDMRecordPermissionPolicy - ) - permission_action_prefix = "media_" - - file_links_list = { - "self": RecordLink("{+api}/records/{id}/media-files"), - "archive": RecordLink( - "{+api}/records/{id}/media-files-archive", # TODO needed? - when=archive_download_enabled, - ), - } - - file_links_item = { - "self": FileLink("{+api}/records/{id}/media-files/{key}"), - "content": FileLink("{+api}/records/{id}/media-files/{key}/content"), - } + file_schema = FileSchema class RDMFileDraftServiceConfig(FileServiceConfig, ConfiguratorMixin): @@ -536,12 +717,15 @@ class RDMFileDraftServiceConfig(FileServiceConfig, ConfiguratorMixin): service_id = "draft-files" - record_cls = RDMDraft + record_cls = FromConfig("RDM_DRAFT_CLS", default=RDMDraft) + permission_action_prefix = "draft_" permission_policy_cls = FromConfig( "RDM_PERMISSION_POLICY", default=RDMRecordPermissionPolicy ) + max_files_count = FromConfig("RDM_RECORDS_MAX_FILES_COUNT", 100) + file_links_list = { "self": RecordLink("{+api}/records/{id}/draft/files"), "archive": RecordLink( @@ -551,24 +735,30 @@ class RDMFileDraftServiceConfig(FileServiceConfig, ConfiguratorMixin): } file_links_item = { - "self": FileLink("{+api}/records/{id}/draft/files/{key}"), - "content": FileLink("{+api}/records/{id}/draft/files/{key}/content"), - "commit": FileLink("{+api}/records/{id}/draft/files/{key}/commit"), + "self": FileLink("{+api}/records/{id}/draft/files/{+key}"), + "content": FileLink("{+api}/records/{id}/draft/files/{+key}/content"), + "commit": FileLink("{+api}/records/{id}/draft/files/{+key}/commit"), # FIXME: filename instead "iiif_canvas": FileLink( - "{+api}/iiif/draft:{id}/canvas/{key}", when=is_iiif_compatible + "{+api}/iiif/draft:{id}/canvas/{+key}", when=is_iiif_compatible ), - "iiif_base": FileLink("{+api}/iiif/draft:{id}:{key}", when=is_iiif_compatible), + "iiif_base": FileLink("{+api}/iiif/draft:{id}:{+key}", when=is_iiif_compatible), "iiif_info": FileLink( - "{+api}/iiif/draft:{id}:{key}/info.json", when=is_iiif_compatible + "{+api}/iiif/draft:{id}:{+key}/info.json", when=is_iiif_compatible ), "iiif_api": FileLink( - "{+api}/iiif/draft:{id}:{key}/{region=full}" + "{+api}/iiif/draft:{id}:{+key}/{region=full}" "/{size=full}/{rotation=0}/{quality=default}.{format=png}", when=is_iiif_compatible, ), } + file_schema = FileSchema + + components = FromConfig( + "RDM_DRAFT_FILES_SERVICE_COMPONENTS", default=FileServiceConfig.components + ) + class RDMMediaFileDraftServiceConfig(FileServiceConfig, ConfiguratorMixin): """Configuration for draft media files.""" @@ -581,10 +771,12 @@ class RDMMediaFileDraftServiceConfig(FileServiceConfig, ConfiguratorMixin): "RDM_PERMISSION_POLICY", default=RDMRecordPermissionPolicy ) + max_files_count = FromConfig("RDM_RECORDS_MAX_MEDIA_FILES_COUNT", 100) + file_links_list = { "self": RecordLink("{+api}/records/{id}/draft/media-files"), "archive": RecordLink( - "{+api}/records/{id}/draft/media-files-archive", # TODO needed? + "{+api}/records/{id}/draft/media-files-archive", when=archive_download_enabled, ), } @@ -593,4 +785,18 @@ class RDMMediaFileDraftServiceConfig(FileServiceConfig, ConfiguratorMixin): "self": FileLink("{+api}/records/{id}/draft/media-files/{key}"), "content": FileLink("{+api}/records/{id}/draft/media-files/{key}/content"), "commit": FileLink("{+api}/records/{id}/draft/media-files/{key}/commit"), + "iiif_canvas": FileLink( + "{+api}/iiif/draft:{id}/canvas/{+key}", when=is_iiif_compatible + ), + "iiif_base": FileLink("{+api}/iiif/draft:{id}:{+key}", when=is_iiif_compatible), + "iiif_info": FileLink( + "{+api}/iiif/draft:{id}:{+key}/info.json", when=is_iiif_compatible + ), + "iiif_api": FileLink( + "{+api}/iiif/draft:{id}:{+key}/{region=full}" + "/{size=full}/{rotation=0}/{quality=default}.{format=png}", + when=is_iiif_compatible, + ), } + + file_schema = FileSchema diff --git a/invenio_rdm_records/services/customizations.py b/invenio_rdm_records/services/customizations.py index 8c2a6b5da..eea403342 100644 --- a/invenio_rdm_records/services/customizations.py +++ b/invenio_rdm_records/services/customizations.py @@ -2,6 +2,7 @@ # # Copyright (C) 2021-2023 CERN. # Copyright (C) 2022 Northwestern University. +# Copyright (C) 2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -38,12 +39,10 @@ def get_provider_dict(pid_config, pid_providers): pids = obj._app.config.get(self.pids_key, {}) providers = {p.name: p for p in obj._app.config.get(self.providers_key, [])} - doi_enabled = obj._app.config.get("DATACITE_ENABLED", False) - return { scheme: get_provider_dict(conf, providers) for scheme, conf in pids.items() - if scheme != "doi" or doi_enabled + if conf["is_enabled"](obj._app) } @@ -57,15 +56,10 @@ def __init__(self, pids_key=None): def __get__(self, obj, objtype=None): """Return required pids (descriptor protocol).""" pids = obj._app.config.get(self.pids_key, {}) - doi_enabled = obj._app.config.get("DATACITE_ENABLED", False) - - pids = { - scheme: conf - for (scheme, conf) in pids.items() - if scheme != "doi" or doi_enabled - } return [ - scheme for (scheme, conf) in pids.items() if conf.get("required", False) + scheme + for (scheme, conf) in pids.items() + if (conf["is_enabled"](obj._app) and conf.get("required", False)) ] diff --git a/invenio_rdm_records/services/decorators.py b/invenio_rdm_records/services/decorators.py new file mode 100644 index 000000000..288b64757 --- /dev/null +++ b/invenio_rdm_records/services/decorators.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""RDM services decorators.""" + +from functools import wraps + +from flask import current_app +from invenio_records_resources.services.errors import PermissionDeniedError + + +def groups_enabled(group_subject_type, **kwargs): + """Decorator to check if users are trying to access disabled feature.""" + + def decorator(f): + @wraps(f) + def inner(self, *args, **kwargs): + subject_type = kwargs["subject_type"] + if ( + not current_app.config.get("USERS_RESOURCES_GROUPS_ENABLED", False) + and subject_type == group_subject_type + ): + raise PermissionDeniedError() + + return f(self, *args, **kwargs) + + return inner + + return decorator diff --git a/invenio_rdm_records/services/errors.py b/invenio_rdm_records/services/errors.py index 7cedfe2fd..916cd25a0 100644 --- a/invenio_rdm_records/services/errors.py +++ b/invenio_rdm_records/services/errors.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2023 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -8,6 +8,7 @@ """RDM Record Service Errors.""" +from flask_principal import PermissionDenied from invenio_i18n import lazy_gettext as _ @@ -15,6 +16,30 @@ class RDMRecordsException(Exception): """Base exception for RDMRecords errors.""" +class GrantExistsError(RDMRecordsException): + """Exception raised when trying to create a grant that already exists for user/role.""" + + description = _("Grant for this user/role already exists within this record.") + + +class RecordDeletedException(RDMRecordsException): + """Exception denoting that the record was deleted.""" + + def __init__(self, record, result_item=None): + """Constructor.""" + self.record = record + self.result_item = result_item + + +class DeletionStatusException(RDMRecordsException): + """Indicator for the record being in the wrong deletion status for the action.""" + + def __init__(self, record, expected_status): + """Constructor.""" + self.expected_status = expected_status + self.record = record + + class EmbargoNotLiftedError(RDMRecordsException): """Embargo could not be lifted .""" @@ -26,9 +51,8 @@ def __init__(self, record_id): def description(self): """Exception's description.""" return _( - "Embargo could not be lifted for record: {record_id}".format( - record_id=self.record_id - ) + "Embargo could not be lifted for record: %(record_id)s", + record_id=self.record_id, ) @@ -136,9 +160,9 @@ def __init__(self, record_id, community_id): def description(self): """Exception description.""" return _( - "The record {record_id} in not included in the community {community_id}.".format( - record_id=self.record_id, community_id=self.community_id - ) + "The record %(rec_id)s in not included in the community %(com_id)s.", + rec_id=self.record_id, + com_id=self.community_id, ) @@ -152,34 +176,47 @@ def __init__(self, reason): @property def description(self): """Exception description.""" - return _("Cannot modify community visibility: {reason}".format(self.reason)) + return _("Cannot modify community visibility: %(reason)s", reason=self.reason) class AccessRequestException(RDMRecordsException): """Base class for errors related to access requests.""" -class DuplicateAccessRequestError(AccessRequestException): +class AccessRequestExistsError(AccessRequestException): """An identical access request already exists.""" - def __init__(self, request_ids): + def __init__(self, request_id): """Constructor.""" - self.request_ids = request_ids or [] + self.request_id = request_id @property def description(self): """Exception description.""" - if len(self.request_ids) > 1: - return _( - "Identical access requests already exist: %(request_ids)s", - request_id=self.request_ids, - ) - - elif self.request_ids: + if self.request_id: return _( - "An identical access request already exists: %(request_id)s", - request_id=self.request_ids[0], + "Identical access requests already exist: %(request_id)s", + request_id=self.request_id, ) - else: return _("The access request is a duplicate") + + +class RecordSubmissionClosedCommunityError(PermissionDenied): + """Record submission policy forbids non-members from submitting records to community.""" + + description = _( + "Submission to this community is only allowed to community members." + ) + + +class CommunityRequiredError(Exception): + """Error thrown when a record is being created/updated with less than 1 community.""" + + description = _("Cannot publish without a community.") + + +class CannotRemoveCommunityError(Exception): + """Error thrown when the last community is being removed from the record.""" + + description = _("A record should be part of at least 1 community.") diff --git a/invenio_rdm_records/services/facets.py b/invenio_rdm_records/services/facets.py index e85f472e0..ac73d81a0 100644 --- a/invenio_rdm_records/services/facets.py +++ b/invenio_rdm_records/services/facets.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2023 CERN. -# Copyright (C) 2020-2021 Northwestern University. +# Copyright (C) 2020-2024 CERN. +# Copyright (C) 2020-2024 Northwestern University. # Copyright (C) 2021 TU Wien. # Copyright (C) 2023 Graz University of Technology. # @@ -10,14 +10,19 @@ """Facet definitions.""" -from invenio_i18n import gettext as _ +from warnings import warn + +from invenio_i18n import lazy_gettext as _ from invenio_records_resources.services.records.facets import ( + CombinedTermsFacet, NestedTermsFacet, TermsFacet, ) from invenio_vocabularies.contrib.subjects import SubjectsLabels +from invenio_vocabularies.records.models import VocabularyScheme from invenio_vocabularies.services.facets import VocabularyLabels +from ..records.dumpers.combined_subjects import SPLITCHAR from ..records.systemfields.access.field.record import AccessStatusEnum access_status = TermsFacet( @@ -62,14 +67,44 @@ ) -subject_nested = NestedTermsFacet( - field="metadata.subjects.scheme", - subfield="metadata.subjects.subject.keyword", - label=_("Subjects"), - value_labels=SubjectsLabels(), -) +def deprecated_subject_nested(): + """Deprecated NestedTermsFacet. + + Will warn until this is completely removed. + """ + warn( + "subject_nested is deprecated. Use subject_combined instead.", + DeprecationWarning, + ) + return NestedTermsFacet( + field="metadata.subjects.scheme", + subfield="metadata.subjects.subject.keyword", + label=_("Subjects"), + value_labels=SubjectsLabels(), + ) + + +subject_nested = deprecated_subject_nested() + subject = TermsFacet( field="metadata.subjects.subject.keyword", label=_("Subjects"), ) + + +def get_subject_schemes(): + """Return subject schemes.""" + return [ + row.id for row in VocabularyScheme.query.filter_by(parent_id="subjects").all() + ] + + +subject_combined = CombinedTermsFacet( + field="metadata.subjects.scheme", + combined_field="metadata.combined_subjects", + parents=get_subject_schemes, + splitchar=SPLITCHAR, + label=_("Subjects"), + value_labels=SubjectsLabels(), +) diff --git a/invenio_rdm_records/services/files/__init__.py b/invenio_rdm_records/services/files/__init__.py new file mode 100644 index 000000000..46a8178e0 --- /dev/null +++ b/invenio_rdm_records/services/files/__init__.py @@ -0,0 +1,12 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""File Service API.""" + +from invenio_rdm_records.services.files.service import RDMFileService + +__all__ = ("RDMFileService",) diff --git a/invenio_rdm_records/services/files/service.py b/invenio_rdm_records/services/files/service.py new file mode 100644 index 000000000..80ff6f113 --- /dev/null +++ b/invenio_rdm_records/services/files/service.py @@ -0,0 +1,34 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""File Service API.""" + +from invenio_records_resources.services import FileService + +from invenio_rdm_records.services.errors import RecordDeletedException + + +class RDMFileService(FileService): + """A service for adding files support to records.""" + + def _check_record_deleted_permissions(self, record, identity): + """Ensure that the record exists (not deleted) or raise.""" + if record.is_draft: + return + if record.deletion_status.is_deleted: + can_read_deleted = self.check_permission( + identity, "read_deleted_files", record=record + ) + if not can_read_deleted: + raise RecordDeletedException(record) + + def _get_record(self, id_, identity, action, file_key=None): + """Get the associated record.""" + record = super()._get_record(id_, identity, action, file_key) + self._check_record_deleted_permissions(record, identity) + + return record diff --git a/invenio_rdm_records/services/generators.py b/invenio_rdm_records/services/generators.py index e383e8708..154fddc09 100644 --- a/invenio_rdm_records/services/generators.py +++ b/invenio_rdm_records/services/generators.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Copyright (C) 2021 Graz University of Technology. -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021 TU Wien. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -9,19 +9,32 @@ """Invenio-RDM-Records Permissions Generators.""" +import operator +from collections import namedtuple +from functools import partial, reduce +from itertools import chain + +from flask import g from flask_principal import UserNeed +from invenio_communities.config import COMMUNITIES_ROLES from invenio_communities.generators import CommunityRoleNeed, CommunityRoles from invenio_communities.proxies import current_roles from invenio_records_permissions.generators import ConditionalGenerator, Generator from invenio_records_resources.services.files.transfer import TransferType from invenio_search.engine import dsl -from invenio_rdm_records.records import RDMDraft - +from ..records import RDMDraft from ..records.systemfields.access.grants import Grant +from ..records.systemfields.deletion_status import RecordDeletionStatusEnum +from ..requests import CommunityInclusion from ..requests.access import AccessRequestTokenNeed from ..tokens.permissions import RATNeed +_Need = namedtuple("Need", ["method", "record"]) + +CommunityInclusionNeed = partial(_Need, "community-inclusion") +"""Defines a need for a community inclusion.""" + class IfRestricted(ConditionalGenerator): """IfRestricted. @@ -123,6 +136,71 @@ def _condition(self, record=None, **kwargs): return record.get("pids", {}).get("doi", {}).get("provider") == "external" +class IfDeleted(ConditionalGenerator): + """Conditional generator for deleted records.""" + + def _condition(self, record=None, **kwargs): + """Check if the record is deleted.""" + try: + return record.deletion_status.is_deleted + + except AttributeError: + # if the record doesn't have the attribute, we assume it's not deleted + return False + + +class IfRecordDeleted(Generator): + """Custom conditional generator for deleted records.""" + + def __init__(self, then_, else_): + """Constructor.""" + self.then_ = then_ + self.else_ = else_ + + def generators(self, record): + """Get the "then" or "else" generators.""" + if record is None: + # if no records, we assume it returns standard else response + return self.else_ + + is_deleted = record.deletion_status.is_deleted + return self.then_ if is_deleted else self.else_ + + def needs(self, record=None, **kwargs): + """Set of Needs granting permission.""" + needs = [g.needs(record=record, **kwargs) for g in self.generators(record)] + return set(chain.from_iterable(needs)) + + def excludes(self, record=None, **kwargs): + """Set of Needs denying permission.""" + needs = [g.excludes(record=record, **kwargs) for g in self.generators(record)] + return set(chain.from_iterable(needs)) + + def make_query(self, generators, **kwargs): + """Make a query for one set of generators.""" + queries = [g.query_filter(**kwargs) for g in generators] + queries = [q for q in queries if q] + return reduce(operator.or_, queries) if queries else None + + def query_filter(self, **kwargs): + """Filters for current identity.""" + q_then = dsl.Q("match_all") + q_else = dsl.Q( + "term", **{"deletion_status": RecordDeletionStatusEnum.PUBLISHED.value} + ) + then_query = self.make_query(self.then_, **kwargs) + else_query = self.make_query(self.else_, **kwargs) + + if then_query and else_query: + return (q_then & then_query) | (q_else & else_query) + elif then_query: + return (q_then & then_query) | q_else + elif else_query: + return q_else & else_query + else: + return q_else + + class RecordOwners(Generator): """Allows record owners.""" @@ -234,6 +312,21 @@ def needs(self, record=None, **kwargs): return [] +class CommunityInclusionReviewers(Generator): + """Needs for community members that have rights to curate the record of the inclusion-requests. + + WARNING: This is a TEMPORAL solution, meaning that it should not be reused around. This need is used to grant a + "one time" ticket to access a concrete view (in this case the community inclusion request details page of restricted + records). + """ + + def needs(self, record=None, **kwargs): + """Set of Needs granting permission.""" + if record is not None: + return [CommunityInclusionNeed(record.pid.pid_value)] + return [] + + class RecordCommunitiesAction(CommunityRoles): """Roles generators of all record's communities for a given member's action.""" @@ -321,3 +414,19 @@ def needs(self, request=None, **kwargs): return [AccessRequestTokenNeed(request["payload"]["token"])] return [] + + +class IfOneCommunity(ConditionalGenerator): + """Conditional generator for records always in communities case.""" + + def _condition(self, record=None, **kwargs): + """Check if the record is associated with one community.""" + return bool(record and len(record.parent.communities.ids) == 1) + + +class IfAtLeastOneCommunity(ConditionalGenerator): + """Conditional generator for records always in communities case.""" + + def _condition(self, record=None, **kwargs): + """Check if the record is associated with at least one community.""" + return bool(record and record.parent.communities.ids) diff --git a/invenio_rdm_records/services/github/metadata.py b/invenio_rdm_records/services/github/metadata.py index 1c300786e..8e650c1a7 100644 --- a/invenio_rdm_records/services/github/metadata.py +++ b/invenio_rdm_records/services/github/metadata.py @@ -1,17 +1,17 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """RDM github release metadata.""" + import yaml from flask import current_app from invenio_github.errors import CustomGitHubMetadataError from invenio_i18n import _ from marshmallow import Schema, ValidationError from mistune import markdown -from nameparser import HumanName class RDMReleaseMetadata(object): @@ -82,26 +82,26 @@ def default_metadata(self): @property def contributors(self): - """Serializes contributors retrieved from github.""" + """Serializes contributors retrieved from github. + + .. note:: + + `self.rdm_release.contributors` might fail with a `UnexpectedGithubResponse`. This is an error from which the RDM release + processing can't recover since `creators` is a mandatory field. + """ def serialize_author(gh_data): """Serializes github contributor data into RDM author.""" - login = gh_data["login"] - name = gh_data.get("name", login) - company = gh_data.get("company", "") - - human_name = HumanName(name) - given_name = human_name.first - family_name = human_name.surnames + gh_username = gh_data["login"] + # Default name to the user's login + name = gh_data.get("name") or gh_username + company = gh_data.get("company") rdm_contributor = { - "person_or_org": { - "type": "personal", - "given_name": given_name, - "family_name": family_name, - }, - "affiliations": [{"name": company}], + "person_or_org": {"type": "personal", "family_name": name}, } + if company: + rdm_contributor.update({"affiliations": [{"name": company}]}) return rdm_contributor contributors = [] @@ -109,7 +109,8 @@ def serialize_author(gh_data): # Get contributors from api for c in self.rdm_release.contributors: rdm_author = serialize_author(c) - contributors.append(rdm_author) + if rdm_author: + contributors.append(rdm_author) return contributors @@ -126,18 +127,19 @@ def citation_metadata(self): data = self.load_citation_file(citation_file_path) # Load metadata from citation file and serialize it - metadata = self.load_citation_metadata(data) - return self.serialize_citation_metadata(metadata) + return self.load_citation_metadata(data) except ValidationError as e: # Wrap the error into CustomGitHubMetadataError() so it can be handled upstream raise CustomGitHubMetadataError(file=citation_file_path, message=e.messages) - def serialize_citation_metadata(self, data): - """Serializes citation data to RDM.""" - if not data: - return {} - # TODO to be implemented - return data + @property + def extra_metadata(self): + """Get extra metadata for the release.""" + return self.load_extra_metadata() + + def load_extra_metadata(self): + """Get extra metadata for the release.""" + return {} def load_citation_file(self, citation_file_name): """Returns the citation file data.""" @@ -145,7 +147,7 @@ def load_citation_file(self, citation_file_name): return {} # Fetch the citation file and load it - content = self.retrieve_remote_file(citation_file_name) + content = self.rdm_release.retrieve_remote_file(citation_file_name) data = ( yaml.safe_load(content.decoded.decode("utf-8")) @@ -162,7 +164,7 @@ def load_citation_metadata(self, citation_data): citation_schema = current_app.config.get("GITHUB_CITATION_METADATA_SCHEMA") - assert isinstance(citation_schema, Schema), _( + assert issubclass(citation_schema, Schema), _( "Citation schema is needed to load citation metadata." ) diff --git a/invenio_rdm_records/services/github/release.py b/invenio_rdm_records/services/github/release.py index ea3bd538c..89b603631 100644 --- a/invenio_rdm_records/services/github/release.py +++ b/invenio_rdm_records/services/github/release.py @@ -7,27 +7,72 @@ """Github release API implementation.""" from flask import current_app -from invenio_access.permissions import system_identity +from invenio_access.permissions import authenticated_user, system_identity +from invenio_access.utils import get_identity from invenio_db import db from invenio_github.api import GitHubRelease from invenio_github.models import ReleaseStatus from invenio_records_resources.services.uow import UnitOfWork -from invenio_rdm_records.proxies import current_rdm_records_service -from invenio_rdm_records.resources.serializers.ui import UIJSONSerializer -from invenio_rdm_records.services.github.metadata import RDMReleaseMetadata -from invenio_rdm_records.services.github.utils import retrieve_recid_by_uuid +from ...proxies import current_rdm_records_service +from ...resources.serializers.ui import UIJSONSerializer +from ..errors import RecordDeletedException +from .metadata import RDMReleaseMetadata +from .utils import retrieve_recid_by_uuid + + +def _get_user_identity(user): + """Get user identity.""" + identity = get_identity(user) + identity.provides.add(authenticated_user) + return identity class RDMGithubRelease(GitHubRelease): """Implement release API instance for RDM.""" + metadata_cls = RDMReleaseMetadata + @property def metadata(self): """Extracts metadata to create an RDM draft.""" - metadata = RDMReleaseMetadata(self) + metadata = self.metadata_cls(self) output = metadata.default_metadata + output.update(metadata.extra_metadata) output.update(metadata.citation_metadata) + + if not output.get("creators"): + # Get owner from Github API + owner = self.get_owner() + if owner: + output.update({"creators": [owner]}) + + # Default to "Unkwnown" + if not output.get("creators"): + output.update( + { + "creators": [ + { + "person_or_org": { + "type": "personal", + "family_name": "Unknown", + }, + } + ] + } + ) + return output + + def get_owner(self): + """Retrieves repository owner and its affiliation, if any.""" + # `owner.name` is not required, `owner.login` is. + output = None + if self.owner: + name = getattr(self.owner, "name", self.owner.login) + company = getattr(self.owner, "company", None) + output = {"person_or_org": {"type": "personal", "family_name": name}} + if company: + output.update({"affiliations": [{"name": company}]}) return output def resolve_record(self): @@ -35,15 +80,20 @@ def resolve_record(self): if not self.release_object.record_id: return None recid = retrieve_recid_by_uuid(self.release_object.record_id) - return current_rdm_records_service.read(system_identity, recid.pid_value) + try: + return current_rdm_records_service.read(system_identity, recid.pid_value) + except RecordDeletedException: + return None - def _upload_files_to_draft(self, draft, draft_file_service, uow): + def _upload_files_to_draft(self, identity, draft, uow): """Upload files to draft.""" # Validate the release files are fetchable self.test_zipball() + draft_file_service = current_rdm_records_service.draft_files + draft_file_service.init_files( - self.user_identity, + identity, draft.id, data=[{"key": self.release_file_name}], uow=uow, @@ -51,7 +101,7 @@ def _upload_files_to_draft(self, draft, draft_file_service, uow): with self.fetch_zipball_file() as file_stream: draft_file_service.set_file_content( - self.user_identity, + identity, draft.id, self.release_file_name, file_stream, @@ -88,10 +138,10 @@ def publish(self): } if self.is_first_release(): - draft = current_rdm_records_service.create( - self.user_identity, data, uow=uow - ) - self._upload_files_to_draft(draft, draft_file_service, uow) + # For the first release, use the repo's owner identity. + identity = self.user_identity + draft = current_rdm_records_service.create(identity, data, uow=uow) + self._upload_files_to_draft(identity, draft, uow) else: # Retrieve latest record id and its recid latest_record_uuid = self.repository_object.latest_release( @@ -100,25 +150,31 @@ def publish(self): recid = retrieve_recid_by_uuid(latest_record_uuid) + # Use the previous record's owner as the new version owner + last_record = current_rdm_records_service.read( + system_identity, recid.pid_value, include_deleted=True + ) + owner = last_record._record.parent.access.owner.resolve() + + identity = _get_user_identity(owner) + # Create a new version and update its contents new_version_draft = current_rdm_records_service.new_version( - self.user_identity, recid.pid_value, uow=uow + identity, recid.pid_value, uow=uow ) - self._upload_files_to_draft( - new_version_draft, draft_file_service, uow - ) + self._upload_files_to_draft(identity, new_version_draft, uow) draft = current_rdm_records_service.update_draft( - self.user_identity, new_version_draft.id, data, uow=uow + identity, new_version_draft.id, data, uow=uow ) draft_file_service.commit_file( - self.user_identity, draft.id, self.release_file_name, uow=uow + identity, draft.id, self.release_file_name, uow=uow ) record = current_rdm_records_service.publish( - self.user_identity, draft.id, uow=uow + identity, draft.id, uow=uow ) # Update release weak reference and set status to PUBLISHED diff --git a/invenio_rdm_records/services/github/utils.py b/invenio_rdm_records/services/github/utils.py index 0c89b16cf..3d84e4507 100644 --- a/invenio_rdm_records/services/github/utils.py +++ b/invenio_rdm_records/services/github/utils.py @@ -6,9 +6,7 @@ # it under the terms of the MIT License; see LICENSE file for more details. """Utility functions.""" -from flask import current_app from invenio_pidstore.models import PersistentIdentifier -from marshmallow import Schema def retrieve_recid_by_uuid(rec_uuid): diff --git a/invenio_rdm_records/services/iiif/converter.py b/invenio_rdm_records/services/iiif/converter.py new file mode 100644 index 000000000..022d02224 --- /dev/null +++ b/invenio_rdm_records/services/iiif/converter.py @@ -0,0 +1,119 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""IIIF Tiles converter.""" + +from flask import current_app + +try: + import pyvips + + HAS_VIPS = True +except ModuleNotFoundError: + # Python module pyvips not installed + HAS_VIPS = False +except OSError: + # Underlying library libvips not installed + HAS_VIPS = False + + +class ImageConverter: + """Base class for Image converters.""" + + default_params = {} + + def __init__(self, params=None): + """Constructor.""" + self._params = params + + @property + def params(self): + """Get converter parameters.""" + return ( + self._params + or current_app.config.get("IIIF_TILES_CONVERTER_PARAMS", {}) + or self.default_params + ) + + def convert(self, in_stream, out_stream) -> bool: + """Convert image.""" + raise NotImplementedError() + + +class PyVIPSImageConverter(ImageConverter): + """PyVIPS image converter for pyramidal tifs.""" + + default_params = { + "compression": "jpeg", + "Q": 90, + "tile_width": 256, + "tile_height": 256, + } + + @staticmethod + def fp_source(input_file): + """File-like source generator for pyvips.""" + + def read_handler(size): + return input_file.read(size) + + # seek is optional, but may improve performance by reducing buffering + def seek_handler(offset, whence): + input_file.seek(offset, whence) + return input_file.tell() + + source = pyvips.SourceCustom() + source.on_read(read_handler) + source.on_seek(seek_handler) + + return source + + @staticmethod + def fp_target(output_file): + """File-like target generator for pyvips.""" + + def write_handler(chunk): + return output_file.write(chunk) + + def read_handler(size): + return output_file.read(size) + + def seek_handler(offset, whence): + output_file.seek(offset, whence) + return output_file.tell() + + def end_handler(): + try: + output_file.close() + except IOError: + return -1 + else: + return 0 + + target = pyvips.TargetCustom() + target.on_write(write_handler) + target.on_read(read_handler) + target.on_seek(seek_handler) + target.on_end(end_handler) + + return target + + def convert(self, in_stream, out_stream): + """Convert to ptifs.""" + if not HAS_VIPS: + return + + try: + source = self.fp_source(in_stream) + target = self.fp_target(out_stream) + + image = pyvips.Image.new_from_source(source, "", access="sequential") + image.tiffsave_target(target, tile=True, pyramid=True, **self.params) + return True + except Exception: + current_app.logger.exception("Image processing with pyvips failed") + return False diff --git a/invenio_rdm_records/services/iiif/service.py b/invenio_rdm_records/services/iiif/service.py index 74f66e9d2..e1d71b508 100644 --- a/invenio_rdm_records/services/iiif/service.py +++ b/invenio_rdm_records/services/iiif/service.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # Copyright (C) 2022 Universität Hamburg. # Copyright (C) 2023 Graz University of Technology. # @@ -9,6 +9,7 @@ """IIIF Service.""" +import io import tempfile import importlib_metadata as metadata @@ -24,6 +25,17 @@ # ImageMagick notinstalled HAS_IMAGEMAGICK = False +try: + import pyvips + + HAS_VIPS = True +except ModuleNotFoundError: + # Python module pyvips not installed + HAS_VIPS = False +except OSError: + # Underlying library libvips not installed + HAS_VIPS = False + class IIIFService(Service): """IIIF service. @@ -72,15 +84,35 @@ def read_record(self, identity, uuid): def _open_image(self, file_): fp = file_.get_stream("rb") - # If ImageMagick with Wand is installed, extract first page - # for PDF/text. - pages_mimetypes = {"application/pdf", "text/plain"} - if HAS_IMAGEMAGICK and file_.data["mimetype"] in pages_mimetypes: - first_page = Image(Image(fp).sequence[0]) - tempfile_ = tempfile.TemporaryFile() + # If the file is not a PDF or text, return the file + if file_.data["mimetype"] not in {"application/pdf", "text/plain"}: + return fp + + # If Wand (ImageMagick) or PyVIPS is installed, extract the first page + if HAS_VIPS: # prefer PyVIPS since it doesn't load the whole file in memory + + def _seek_handler(offset, whence): + fp.seek(offset, whence) + return fp.tell() + + source = pyvips.SourceCustom() + source.on_read(fp.read) + source.on_seek(_seek_handler) + + # PyVIPS returns by default the first page of the PDF + first_page = pyvips.Image.new_from_source(source, "", access="sequential") + # Convert to memory to be able to return a file-like object + first_page_buf = io.BytesIO(first_page.write_to_memory()) + fp.close() + return first_page_buf + elif HAS_IMAGEMAGICK: + first_page = Image(blob=fp) + first_page_buf = io.BytesIO() with first_page.convert(format="png") as converted: - converted.save(file=tempfile_) - return tempfile_ + converted.save(file=first_page_buf) + first_page_buf.seek(0) + fp.close() + return first_page_buf return fp diff --git a/invenio_rdm_records/services/iiif/storage.py b/invenio_rdm_records/services/iiif/storage.py new file mode 100644 index 000000000..31e7190d9 --- /dev/null +++ b/invenio_rdm_records/services/iiif/storage.py @@ -0,0 +1,155 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""IIIF Tiles generation storage.""" + +from pathlib import Path +from textwrap import wrap +from typing import Union + +from flask import current_app + +from invenio_rdm_records.records.api import RDMRecord +from invenio_rdm_records.services.iiif.converter import ( + ImageConverter, + PyVIPSImageConverter, +) + + +class TilesStorage: + """Base class for tile storage.""" + + def __init__(self, *, converter: Union[ImageConverter, dict]): + """Constructor.""" + self._converter = converter + + @property + def converter(self): + """Get converter.""" + if isinstance(self._converter, dict): + converter_cls = self._converter["cls"] + converter_params = self._converter.get("kwargs", {}) + return converter_cls(**converter_params) + + return self._converter + + def save(self, record: RDMRecord, filename: str): + """Save tiles.""" + pass + + def open(self, record: RDMRecord, filename: str): + """Open file in read mode.""" + pass + + def delete(self, record: RDMRecord, filename: str): + """Delete tiles file.""" + pass + + +class LocalTilesStorage(TilesStorage): + """Local tile storage implementation.""" + + default_converter = { + "cls": PyVIPSImageConverter, + } + + def __init__(self, *, base_path: Union[str, None] = None, **kwargs): + """Constructor.""" + self._base_path = base_path + kwargs.setdefault("converter", self.default_converter) + super().__init__(**kwargs) + + @property + def base_path(self): + """Return base path from object/config.""" + path = Path( + self._base_path or current_app.config.get("IIIF_TILES_STORAGE_BASE_PATH") + ) + if path.is_absolute(): + return path + # If relative path, resolve against instance path + return Path(current_app.instance_path) / path + + def _get_dir(self, record: RDMRecord) -> Path: + """Get directory.""" + recid = record.pid.pid_value + + recid_parts = wrap(recid.ljust(4, "_"), 2) + start_parts = recid_parts[:2] + end_parts = recid_parts[2:] + recid_path = "/".join(start_parts) + if end_parts: + recid_path += f"/{''.join(end_parts)}_" + else: + recid_path += "/_" + + path_partitions = recid_path.split("/") + + return ( + self.base_path / record.access.protection.files / Path(*path_partitions) + ).absolute() + + def _get_file_path(self, record: RDMRecord, filename: str) -> Path: + """Get file path.""" + # Partition record.id into 3 chunks of min. 2 characters (e.g. "12345678" -> ["12", "34", "5678"]) + return (self._get_dir(record) / (filename + ".ptif")).absolute() + + def save(self, record, filename, file_type): + """Convert and save to ptif.""" + # Get the files + file_source = getattr(record, file_type) + + # Get the output path and create necessary directories + outpath = self._get_file_path(record, filename) + self._get_dir(record).mkdir(parents=True, exist_ok=True) + + # Open the input stream and output stream + with file_source[filename].open_stream("rb") as fin: + fout = outpath.open("w+b") + # Convert the file and log an error if the conversion fails + if not self.converter.convert(fin, fout): + current_app.logger.info(f"Image conversion failed {record.id}") + return False + + return True + + def open(self, record, filename): + """Open the file in read mode.""" + return self._get_file_path(record, filename).open("rb") + + def update_access(self, record): + """Move files according to current files access of the record.""" + # NOTE: If we want to move the record from public -> restricted dir, uncomment + # access = record.access.protection.files + # directory = str(self._get_dir(record)) + # old_dir = str(directory).replace( + # access, + # "restricted" if access == "public" else "public", + # ) + # if os.path.exists(old_dir): + # shutil.move(old_dir, directory) + pass + + def delete(self, record, filename): + """Delete the ptif.""" + try: + Path(record.media_files[filename + ".ptif"].file.uri).unlink( + missing_ok=True + ) + except Exception: + current_app.logger.exception( + "Failed to delete tiles for record.", + extra={ + "record_id": record["id"], + "filename": filename, + }, + ) + return False + return True + + +tiles_storage = LocalTilesStorage() diff --git a/invenio_rdm_records/services/iiif/tasks.py b/invenio_rdm_records/services/iiif/tasks.py new file mode 100644 index 000000000..7dc604c1e --- /dev/null +++ b/invenio_rdm_records/services/iiif/tasks.py @@ -0,0 +1,60 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Tasks for statistics.""" + +from celery import shared_task +from invenio_db import db + +from invenio_rdm_records.proxies import current_rdm_records_service + +from .storage import tiles_storage + + +@shared_task(ignore_result=True) +def generate_tiles(record_id, file_key, file_type): + """Generate pyramidal TIFF.""" + record = current_rdm_records_service.record_cls.pid.resolve(record_id) + status_file = record.media_files[file_key + ".ptif"] + status_file.processor["status"] = "processing" + status_file.commit() + db.session.commit() + + conversion_state = tiles_storage.save(record, file_key, file_type) + + status_file.processor["status"] = "finished" if conversion_state else "failed" + status_file.file.file_model.uri = str( + tiles_storage._get_file_path(record, file_key) + ) + status_file.commit() + db.session.commit() + + +@shared_task( + ignore_result=True, + max_retries=4, + retry_backoff=10 * 60, +) +def cleanup_tiles_file(record_id, tile_file_key, retry=True): + """Cleanup pyramidal TIFF.""" + try: + record = current_rdm_records_service.record_cls.pid.resolve(record_id) + + deletion_status = tiles_storage.delete(record, tile_file_key[: -len(".ptif")]) + if deletion_status: + mf = record.media_files.get(tile_file_key) + fi = mf.file.file_model + record.media_files.delete( + tile_file_key, softdelete_obj=False, remove_rf=True + ) + fi.delete() + db.session.commit() + except Exception as exc: + if retry: + cleanup_tiles_file.retry(exc=exc) + else: + raise exc diff --git a/invenio_rdm_records/services/permissions.py b/invenio_rdm_records/services/permissions.py index eb6a5787a..8d6f06477 100644 --- a/invenio_rdm_records/services/permissions.py +++ b/invenio_rdm_records/services/permissions.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2019 CERN. +# Copyright (C) 2019-2024 CERN. # Copyright (C) 2019 Northwestern University. # Copyright (C) 2023 TU Wien. # @@ -9,6 +9,7 @@ """Permissions for Invenio RDM Records.""" +from invenio_administration.generators import Administration from invenio_communities.generators import CommunityCurators from invenio_records_permissions.generators import ( AnyUser, @@ -18,19 +19,25 @@ SystemProcess, ) from invenio_records_permissions.policies.records import RecordPermissionPolicy -from invenio_requests.services.generators import Creator, Receiver, Status +from invenio_requests.services.generators import Receiver, Status from invenio_requests.services.permissions import ( PermissionPolicy as RequestPermissionPolicy, ) +from invenio_users_resources.services.permissions import UserManager from ..requests.access import GuestAccessRequest from .generators import ( AccessGrant, + CommunityInclusionReviewers, GuestAccessRequestToken, + IfAtLeastOneCommunity, IfCreate, + IfDeleted, IfExternalDOIRecord, IfFileIsLocal, IfNewRecord, + IfOneCommunity, + IfRecordDeleted, IfRequestType, IfRestricted, RecordCommunitiesAction, @@ -54,12 +61,17 @@ class RDMRecordPermissionPolicy(RecordPermissionPolicy): "object-read": "read_files", } + # permission meant for global curators of the instance + # (for now applies to internal notes field only + # to be replaced with an adequate permission when it is defined) + can_manage_internal = [SystemProcess()] # # High-level permissions (used by low-level) # can_manage = [ RecordOwners(), RecordCommunitiesAction("curate"), + AccessGrant("manage"), SystemProcess(), ] can_curate = can_manage + [AccessGrant("edit"), SecretLinks("edit")] @@ -68,11 +80,13 @@ class RDMRecordPermissionPolicy(RecordPermissionPolicy): AccessGrant("preview"), SecretLinks("preview"), SubmissionReviewer(), + UserManager, ] can_view = can_preview + [ AccessGrant("view"), SecretLinks("view"), SubmissionReviewer(), + CommunityInclusionReviewers(), RecordCommunitiesAction("view"), ] @@ -97,6 +111,18 @@ class RDMRecordPermissionPolicy(RecordPermissionPolicy): can_read = [ IfRestricted("record", then_=can_view, else_=can_all), ] + + # Used for search filtering of deleted records + # cannot be implemented inside can_read - otherwise permission will + # kick in before tombstone renders + can_read_deleted = [ + IfRecordDeleted( + then_=[UserManager, SystemProcess()], + else_=can_read, + ) + ] + can_read_deleted_files = can_read_deleted + can_media_read_deleted_files = can_read_deleted_files # Allow reading the files of a record can_read_files = [ IfRestricted("files", then_=can_view, else_=can_all), @@ -167,7 +193,7 @@ class RDMRecordPermissionPolicy(RecordPermissionPolicy): # Actions # # Allow to put a record in edit mode (create a draft from record) - can_edit = can_curate + can_edit = [IfDeleted(then_=[Disable()], else_=can_curate)] # Allow deleting/discarding a draft and all associated files can_delete_draft = can_curate # Allow creating a new version of an existing published record. @@ -179,7 +205,18 @@ class RDMRecordPermissionPolicy(RecordPermissionPolicy): ), ] # Allow publishing a new record or changes to an existing record. - can_publish = can_review + can_publish = [ + IfConfig( + "RDM_COMMUNITY_REQUIRED_TO_PUBLISH", + then_=[ + IfAtLeastOneCommunity( + then_=can_review, + else_=[Administration(), SystemProcess()], + ), + ], + else_=can_review, + ) + ] # Allow lifting a record or draft. can_lift_embargo = can_manage @@ -189,13 +226,27 @@ class RDMRecordPermissionPolicy(RecordPermissionPolicy): # Who can add record to a community can_add_community = can_manage # Who can remove a community from a record - can_remove_community = [ + can_remove_community_ = [ RecordOwners(), CommunityCurators(), SystemProcess(), ] + can_remove_community = [ + IfConfig( + "RDM_COMMUNITY_REQUIRED_TO_PUBLISH", + then_=[ + IfOneCommunity( + then_=[Administration(), SystemProcess()], + else_=can_remove_community_, + ), + ], + else_=can_remove_community_, + ), + ] # Who can remove records from a community - can_remove_record = [CommunityCurators()] + can_remove_record = [CommunityCurators(), Administration(), SystemProcess()] + # Who can add records to a community in bulk + can_bulk_add = [SystemProcess()] # # Media files - draft @@ -228,24 +279,38 @@ class RDMRecordPermissionPolicy(RecordPermissionPolicy): # it was simpler and less coupling to implement this as permission check IfFileIsLocal(then_=can_read, else_=[SystemProcess()]) ] - can_media_create__files = [Disable()] + can_media_create_files = [Disable()] can_media_set_content_files = [Disable()] can_media_commit_files = [Disable()] can_media_update_files = [Disable()] can_media_delete_files = [Disable()] + # + # Record deletion workflows + # + can_delete = [Administration(), SystemProcess()] + can_delete_files = [SystemProcess()] + can_purge = [SystemProcess()] + + # + # Record and user quota + # + + can_manage_quota = [ + # moderators + UserManager, + SystemProcess(), + ] # # Disabled actions (these should not be used or changed) # # - Records/files are updated/deleted via drafts so we don't support # using below actions. can_update = [Disable()] - can_delete = [Disable()] can_create_files = [Disable()] can_set_content_files = [Disable()] can_commit_files = [Disable()] can_update_files = [Disable()] - can_delete_files = [Disable()] # Used to hide at the moment the `parent.is_verified` field. It should be set to # correct permissions based on which the field will be exposed only to moderators diff --git a/invenio_rdm_records/services/pids/errors.py b/invenio_rdm_records/services/pids/errors.py index 8c9e6d0e9..3ebb39c6f 100644 --- a/invenio_rdm_records/services/pids/errors.py +++ b/invenio_rdm_records/services/pids/errors.py @@ -1,13 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """RDM Record PIDs Service Errors.""" - from invenio_i18n import lazy_gettext as _ from ..errors import RDMRecordsException diff --git a/invenio_rdm_records/services/pids/manager.py b/invenio_rdm_records/services/pids/manager.py index 40621e7e0..bb9c91a4a 100644 --- a/invenio_rdm_records/services/pids/manager.py +++ b/invenio_rdm_records/services/pids/manager.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2023 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -24,7 +24,7 @@ class PIDManager: def __init__(self, providers, required_schemes=None): """Constructor for RecordService.""" self._providers = providers - self._required_schemes = required_schemes + self._required_schemes = required_schemes if required_schemes else [] def _get_provider(self, scheme, provider_name=None): """Get a provider.""" @@ -36,6 +36,21 @@ def _get_provider(self, scheme, provider_name=None): except KeyError: raise ProviderNotSupportedError(provider_name, scheme) + def _get_providers(self, pids): + """Get all providers.""" + schemes = set(pids.keys()) | set(self._required_schemes) + scheme_provider_names = [ + # provider_name for an absent-but-required pid will be None which will + # in turn select the default provider below + (scheme, pids.get(scheme, {}).get("provider")) + for scheme in schemes + ] + provider_pid_dicts = [ + (self._get_provider(scheme, provider_name), pids.get(scheme, {})) + for scheme, provider_name in scheme_provider_names + ] + return provider_pid_dicts + def _validate_pids_schemes(self, pids): """Validate the pid schemes that are supported by the service. @@ -96,17 +111,7 @@ def _validate_pids(self, pids, record, errors): # Validate according to the schemes that the draft has and the schemes that # the draft would be given. _required_schemes are schemes that would be given # (if not already on the draft). - schemes = set(pids.keys()) | set(self._required_schemes) - scheme_provider_names = [ - # provider_name for an absent-but-required pid will be None which will - # in turn select the default provider below - (scheme, pids.get(scheme, {}).get("provider")) - for scheme in schemes - ] - provider_pid_dicts = [ - (self._get_provider(scheme, provider_name), pids.get(scheme, {})) - for scheme, provider_name in scheme_provider_names - ] + provider_pid_dicts = self._get_providers(pids) for provider, pid_dict in provider_pid_dicts: success, provider_errors = provider.validate(record=record, **pid_dict) @@ -138,7 +143,7 @@ def create(self, draft, scheme, identifier=None, provider_name=None): """ provider = self._get_provider(scheme, provider_name) pid_attrs = {} - if identifier: + if identifier is not None: try: pid = provider.get(identifier) except PIDDoesNotExistError: @@ -231,11 +236,15 @@ def register(self, record, scheme, url): provider.register(pid, record=record, url=url) - def discard(self, scheme, identifier, provider_name=None): + def discard(self, scheme, identifier, provider_name=None, soft_delete=False): """Discard a PID.""" provider = self._get_provider(scheme, provider_name) pid = provider.get(identifier) - if not provider.can_modify(pid): + + # soft delete defines if the action comes from an admin or a regular user + # regular user never tries to soft delete + # TODO come up with better architecture + if not provider.can_modify(pid) and not soft_delete: raise ValidationError( message=[ { @@ -248,16 +257,53 @@ def discard(self, scheme, identifier, provider_name=None): ] ) - provider.delete(pid) + # the provider should check the conditions of deletion + provider.delete(pid, soft_delete=soft_delete) - def discard_all(self, pids): - """Discard all PIDs.""" + def restore(self, scheme, identifier, provider_name=None): + """Restore previously invalidated DOI.""" + provider = self._get_provider(scheme, provider_name) + pid = provider.get(identifier) + provider.restore(pid) + + def restore_all(self, pids): + """Restore all pids.""" for scheme, pid_attrs in pids.items(): try: - self.discard( + self.restore( scheme, pid_attrs["identifier"], pid_attrs["provider"], ) except PIDDoesNotExistError: pass # might not have been saved to DB yet + + def discard_all(self, pids, soft_delete=False): + """Discard all PIDs.""" + for scheme, pid_attrs in pids.items(): + try: + self.discard( + scheme, + pid_attrs.get("identifier"), + pid_attrs.get("provider"), + soft_delete=soft_delete, + ) + except PIDDoesNotExistError: + pass # might not have been saved to DB yet + + def validate_restriction_level(self, record, **kwargs): + """Validates that the record has correct restriction levels to crate the PIDs.""" + pids = record.get("pids", {}) + provider_pid_dicts = self._get_providers(pids) + + for provider, pid_dict in provider_pid_dicts: + provider.validate_restriction_level( + record, identifier=pid_dict.get("identifier") + ) + + def create_and_reserve(self, record, **kwargs): + """Create and reserve a PID for the given record, and update the record with the reserved PID.""" + pids = record.get("pids", {}) + provider_pid_dicts = self._get_providers(pids) + for provider, _ in provider_pid_dicts: + provider.create_and_reserve(record) diff --git a/invenio_rdm_records/services/pids/providers/base.py b/invenio_rdm_records/services/pids/providers/base.py index 0c3a8dd91..f2bc3188b 100644 --- a/invenio_rdm_records/services/pids/providers/base.py +++ b/invenio_rdm_records/services/pids/providers/base.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Copyright (C) 2021 CERN. -# Copyright (C) 2021-2023 Graz University of Technology. +# Copyright (C) 2021-2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -39,6 +39,11 @@ def generate_id(self, record, **kwargs): """Generates an identifier value.""" raise NotImplementedError + @classmethod + def is_enabled(cls): + """Determine if the pid is enabled or not.""" + raise NotImplementedError + def is_managed(self): """Determine if the provider is managed or unmanaged. @@ -125,12 +130,17 @@ def update(self, pid, **kwargs): """Update information about the persistent identifier.""" pass - def delete(self, pid, **kwargs): + def restore(self, pid, **kwargs): + """Update information about the persistent identifier.""" + pass + + def delete(self, pid, soft_delete=False, **kwargs): """Delete a persistent identifier. See: :meth:`invenio_pidstore.models.PersistentIdentifier.delete`. """ - return pid.delete() + if not soft_delete: + return pid.delete() def validate(self, record, identifier=None, provider=None, **kwargs): """Validate the attributes of the identifier. @@ -198,3 +208,11 @@ def _insert_pid_type_error_msg(self, errors, error_msg): error["messages"].extend(error_msg) else: error["messages"].append(error_msg) + + def validate_restriction_level(self, record, identifier, **kwargs): + """Validates that the record has correct restriction levels to crate the PID.""" + pass + + def create_and_reserve(self, record, **kwargs): + """Create and reserve a PID for a record.""" + pass diff --git a/invenio_rdm_records/services/pids/providers/datacite.py b/invenio_rdm_records/services/pids/providers/datacite.py index 48553d938..15b287822 100644 --- a/invenio_rdm_records/services/pids/providers/datacite.py +++ b/invenio_rdm_records/services/pids/providers/datacite.py @@ -2,7 +2,7 @@ # # Copyright (C) 2021 CERN. # Copyright (C) 2023 Northwestern University. -# Copyright (C) 2023 Graz University of Technology. +# Copyright (C) 2023-2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -15,13 +15,18 @@ from json import JSONDecodeError from datacite import DataCiteRESTClient -from datacite.errors import DataCiteError, DataCiteNoContentError, DataCiteServerError +from datacite.errors import ( + DataCiteError, + DataCiteNoContentError, + DataCiteNotFoundError, + DataCiteServerError, +) from flask import current_app from invenio_i18n import lazy_gettext as _ from invenio_pidstore.models import PIDStatus -from invenio_rdm_records.resources.serializers import DataCite43JSONSerializer - +from ....resources.serializers import DataCite43JSONSerializer +from ....utils import ChainObject from .base import PIDProvider @@ -138,6 +143,11 @@ def generate_id(self, record, **kwargs): # Delegate to client return self.client.generate_doi(record) + @classmethod + def is_enabled(cls, app): + """Determine if datacite is enabled or not.""" + return app.config.get("DATACITE_ENABLED", False) + def can_modify(self, pid, **kwargs): """Checks if the PID can be modified.""" return not pid.is_registered() and not pid.is_reserved() @@ -149,6 +159,12 @@ def register(self, pid, record, **kwargs): :param record: the record metadata for the DOI. :returns: `True` if is registered successfully. """ + if isinstance(record, ChainObject): + if record._child["access"]["record"] == "restricted": + return False + elif record["access"]["record"] == "restricted": + return False + local_success = super().register(pid) if not local_success: return False @@ -174,10 +190,22 @@ def update(self, pid, record, url=None, **kwargs): :param record: the record metadata for the DOI. :returns: `True` if is updated successfully. """ + hide = False + if isinstance(record, ChainObject): + if record._child["access"]["record"] == "restricted": + hide = True + elif record["access"]["record"] == "restricted": + hide = True + try: - # Set metadata - doc = self.serializer.dump_obj(record) - self.client.api.update_doi(metadata=doc, doi=pid.pid_value, url=url) + if hide: + self.client.api.hide_doi(doi=pid.pid_value) + else: + doc = self.serializer.dump_obj(record) + doc["event"] = ( + "publish" # Required for DataCite to make the DOI findable in the case it was hidden before. See https://support.datacite.org/docs/how-do-i-make-a-findable-doi-with-the-rest-api + ) + self.client.api.update_doi(metadata=doc, doi=pid.pid_value, url=url) except DataCiteError as e: current_app.logger.warning( f"DataCite provider error when updating DOI for {pid.pid_value}" @@ -191,6 +219,14 @@ def update(self, pid, record, url=None, **kwargs): return True + def restore(self, pid, **kwargs): + """Restore previously deactivated DOI.""" + try: + self.client.api.show_doi(pid.pid_value) + except DataCiteNotFoundError as e: + if not current_app.config["DATACITE_TEST_MODE"]: + raise e + def delete(self, pid, **kwargs): """Delete/unregister a registered DOI. @@ -248,3 +284,21 @@ def validate(self, record, identifier=None, provider=None, **kwargs): ) return not bool(errors), errors + + def validate_restriction_level(self, record, identifier=None, **kwargs): + """Remove the DOI if the record is restricted.""" + if identifier and record["access"]["record"] == "restricted": + pid = self.get(identifier) + if pid.status in [PIDStatus.NEW]: + self.delete(pid) + del record["pids"][self.pid_type] + + def create_and_reserve(self, record, **kwargs): + """Create and reserve a DOI for the given record, and update the record with the reserved DOI.""" + if "doi" not in record.pids: + pid = self.create(record) + self.reserve(pid, record=record) + pid_attrs = {"identifier": pid.pid_value, "provider": self.name} + if self.client: + pid_attrs["client"] = self.client.name + record.pids["doi"] = pid_attrs diff --git a/invenio_rdm_records/services/pids/providers/external.py b/invenio_rdm_records/services/pids/providers/external.py index bd032a4dc..975e277ea 100644 --- a/invenio_rdm_records/services/pids/providers/external.py +++ b/invenio_rdm_records/services/pids/providers/external.py @@ -2,7 +2,7 @@ # # Copyright (C) 2021 CERN. # Copyright (C) 2023 Northwestern University. -# Copyright (C) 2023 Graz University of Technology. +# Copyright (C) 2023-2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -41,9 +41,9 @@ def __call__(self, record, identifier, provider, errors): for p in self.prefixes: if identifier.startswith(p): errors.append( - _("The prefix '{prefix}' is administrated locally.").format( - prefix=p - ) + _( + "The prefix '{prefix}' is managed by {sitename}. Please supply an external DOI or select 'No' to have a DOI generated for you." + ).format(prefix=p, sitename=current_app.config["THEME_SITENAME"]) ) # Bail early return @@ -61,6 +61,13 @@ def __init__(self, name, pid_type, validators=None, **kwargs): super().__init__(name, pid_type=pid_type, managed=False, **kwargs) self._validators = validators or [] + @classmethod + def is_enabled(cls, app): + """Determine if datacite is enabled or not.""" + # TODO: not used at the moment, but this should be implemented when the + # ui distinguish between datacite and external doi's + return NotImplementedError + def validate(self, record, identifier=None, provider=None, client=None, **kwargs): """Validate the pid attributes and record. @@ -79,7 +86,7 @@ def validate(self, record, identifier=None, provider=None, client=None, **kwargs success, errors = super().validate(record, identifier, provider, **kwargs) if not identifier: - error = self._insert_pid_type_error_msg( + self._insert_pid_type_error_msg( errors, _("Missing {scheme} for required field.").format(scheme=self.label), ) diff --git a/invenio_rdm_records/services/pids/providers/oai.py b/invenio_rdm_records/services/pids/providers/oai.py index 73be00252..e8d943545 100644 --- a/invenio_rdm_records/services/pids/providers/oai.py +++ b/invenio_rdm_records/services/pids/providers/oai.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Copyright (C) 2021 CERN. -# Copyright (C) 2021-2023 Graz University of Technology. +# Copyright (C) 2021-2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -35,6 +35,11 @@ def generate_id(self, record, **kwargs): prefix = current_app.config.get("OAISERVER_ID_PREFIX", "") return f"oai:{prefix}:{record.pid.pid_value}" + @classmethod + def is_enabled(cls, app): + """Determine if datacite is enabled or not.""" + return True + def reserve(self, pid, record, **kwargs): """Constant True. diff --git a/invenio_rdm_records/services/pids/service.py b/invenio_rdm_records/services/pids/service.py index e356630c3..ecfb1a9bf 100644 --- a/invenio_rdm_records/services/pids/service.py +++ b/invenio_rdm_records/services/pids/service.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -10,12 +10,16 @@ from invenio_drafts_resources.services.records import RecordService from invenio_pidstore.errors import PIDDoesNotExistError from invenio_pidstore.models import PersistentIdentifier +from invenio_records_resources.services.errors import ( + PermissionDeniedError, + RecordPermissionDeniedError, +) from invenio_records_resources.services.uow import RecordCommitOp, unit_of_work from invenio_requests.services.results import EntityResolverExpandableField from sqlalchemy.orm.exc import NoResultFound -from invenio_rdm_records.services.results import ParentCommunitiesExpandableField -from invenio_rdm_records.utils import ChainObject +from ...utils import ChainObject +from ..results import ParentCommunitiesExpandableField class PIDsService(RecordService): @@ -35,6 +39,7 @@ def expandable_fields(self): return [ EntityResolverExpandableField("parent.review.receiver"), ParentCommunitiesExpandableField("parent.communities.default"), + EntityResolverExpandableField("parent.access.owned_by"), ] @property @@ -57,7 +62,9 @@ def pid_manager(self): @property def parent_pid_manager(self): """Parent PID Manager.""" - return self.manager_cls(self.config.parent_pids_providers) + return self.manager_cls( + self.config.parent_pids_providers, self.config.parent_pids_required + ) def resolve(self, identity, id_, scheme, expand=False): """Resolve PID to a record (not draft).""" @@ -80,7 +87,10 @@ def resolve(self, identity, id_, scheme, expand=False): if record is None: raise PIDDoesNotExistError(scheme, id_) - self.require_permission(identity, "read", record=record) + try: + self.require_permission(identity, "read", record=record) + except PermissionDeniedError: + raise RecordPermissionDeniedError(action_name="read", record=record) return self.result_item( self, @@ -189,9 +199,28 @@ def register_or_update( # Determine landing page (use scheme specific if available) links = self.links_item_tpl.expand(identity, record) link_prefix = "parent" if parent else "self" - url = links[f"{link_prefix}_html"] - if f"{link_prefix}_{scheme}" in links: - url = links[f"{link_prefix}_{scheme}"] + link_choices = [ + f"{link_prefix}_{scheme}_html", + f"{link_prefix}_html", + ] + for link_id in link_choices: + if link_id in links: + url = links[link_id] + break + + # NOTE: This is not the best place to do this, since we shouldn't be aware of + # the fact that the record has a `RelationsField``. However, without + # dereferencing, we're not able to serialize the record properly for + # registration/updates (e.g. for the DataCite DOIs). + # Some possible alternatives: + # + # - Fetch the record from the service, so that it is already in a + # serializable dereferenced state. + # - Bake-in the dereferencing in the serializer, though this would + # be not very consistent regarding the architecture layers. + relations = getattr(pid_record, "relations", None) + if relations: + relations.dereference() if pid.is_registered(): self.require_permission(identity, "pid_update", record=record) diff --git a/invenio_rdm_records/services/pids/tasks.py b/invenio_rdm_records/services/pids/tasks.py index 598a93ae0..bca558d82 100644 --- a/invenio_rdm_records/services/pids/tasks.py +++ b/invenio_rdm_records/services/pids/tasks.py @@ -10,7 +10,7 @@ from celery import shared_task from invenio_access.permissions import system_identity -from invenio_rdm_records.proxies import current_rdm_records +from ...proxies import current_rdm_records @shared_task(ignore_result=True) diff --git a/invenio_rdm_records/services/queryparser.py b/invenio_rdm_records/services/queryparser.py new file mode 100644 index 000000000..f5edf58f9 --- /dev/null +++ b/invenio_rdm_records/services/queryparser.py @@ -0,0 +1,16 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Query Parser module for InvenioRdmRecords.""" +from luqum.tree import Word + + +def word_internal_notes(node): + """Rewrite the internal notes.""" + if not node.value.startswith("internal_notes"): + return node + return Word(" ") diff --git a/invenio_rdm_records/services/requests/service.py b/invenio_rdm_records/services/requests/service.py index 0ae083b22..560fa053a 100644 --- a/invenio_rdm_records/services/requests/service.py +++ b/invenio_rdm_records/services/requests/service.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -32,7 +32,7 @@ def search( search_preference=None, expand=False, extra_filter=None, - **kwargs + **kwargs, ): """Search for record's requests.""" record = self.record_cls.pid.resolve(record_pid) @@ -52,5 +52,5 @@ def search( search_preference=search_preference, expand=expand, extra_filter=search_filter, - **kwargs + **kwargs, ) diff --git a/invenio_rdm_records/services/results.py b/invenio_rdm_records/services/results.py index 9ac0076b9..12b10287d 100644 --- a/invenio_rdm_records/services/results.py +++ b/invenio_rdm_records/services/results.py @@ -1,7 +1,8 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2022 CERN. +# Copyright (C) 2022-2024 CERN. # Copyright (C) 2023 TU Wien. +# Copyright (C) 2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -11,7 +12,10 @@ from invenio_communities.communities.entity_resolvers import pick_fields from invenio_communities.communities.schema import CommunityGhostSchema from invenio_communities.proxies import current_communities -from invenio_records_resources.services.records.results import ExpandableField +from invenio_records_resources.services.records.results import ( + ExpandableField, + RecordList, +) from invenio_users_resources.proxies import current_user_resources from .dummy import DummyExpandingService @@ -69,3 +73,35 @@ def get_value_service(self, value): def pick(self, identity, resolved_rec): """Pick fields defined in the entity resolver.""" return resolved_rec + + +class RDMRecordList(RecordList): + """Record list with custom fields.""" + + @property + def hits(self): + """Iterator over the hits.""" + for hit in self._results: + # Load dump + record_dict = hit.to_dict() + + index_name = self._service.record_cls.index._name + if index_name in hit.meta["index"]: + record = self._service.record_cls.loads(record_dict) + else: + record = self._service.draft_cls.loads(record_dict) + + # Project the record + projection = self._schema.dump( + record, + context=dict( + identity=self._identity, + record=record, + ), + ) + if self._links_item_tpl: + projection["links"] = self._links_item_tpl.expand( + self._identity, record + ) + + yield projection diff --git a/invenio_rdm_records/services/review/service.py b/invenio_rdm_records/services/review/service.py index 5005a670d..aeeac42c3 100644 --- a/invenio_rdm_records/services/review/service.py +++ b/invenio_rdm_records/services/review/service.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2022 CERN. +# Copyright (C) 2022-2024 CERN. # Copyright (C) 2023 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -9,14 +9,12 @@ """RDM Review Service.""" from flask import current_app +from invenio_communities import current_communities from invenio_drafts_resources.services.records import RecordService +from invenio_drafts_resources.services.records.uow import ParentRecordCommitOp from invenio_i18n import lazy_gettext as _ from invenio_notifications.services.uow import NotificationOp -from invenio_records_resources.services.uow import ( - RecordCommitOp, - RecordIndexOp, - unit_of_work, -) +from invenio_records_resources.services.uow import RecordIndexOp, unit_of_work from invenio_requests import current_request_type_registry, current_requests_service from invenio_requests.resolvers.registry import ResolverRegistry from marshmallow import ValidationError @@ -24,7 +22,12 @@ from ...notifications.builders import CommunityInclusionSubmittedNotificationBuilder from ...proxies import current_rdm_records from ...requests.decorators import request_next_link -from ..errors import ReviewExistsError, ReviewNotFoundError, ReviewStateError +from ..errors import ( + RecordSubmissionClosedCommunityError, + ReviewExistsError, + ReviewNotFoundError, + ReviewStateError, +) class ReviewService(RecordService): @@ -86,7 +89,7 @@ def create(self, identity, data, record, uow=None): # Set the request on the record and commit the record record.parent.review = request_item._request - uow.register(RecordCommitOp(record.parent)) + uow.register(ParentRecordCommitOp(record.parent)) return request_item @@ -147,7 +150,7 @@ def delete(self, identity, id_, revision_id=None, uow=None): current_requests_service.delete(identity, draft.parent.review.id, uow=uow) # Unset on record draft.parent.review = None - uow.register(RecordCommitOp(draft.parent)) + uow.register(ParentRecordCommitOp(draft.parent)) uow.register(RecordIndexOp(draft, indexer=self.indexer)) return True @@ -175,6 +178,18 @@ def submit(self, identity, id_, data=None, require_review=False, uow=None): # Check permission self.require_permission(identity, "update_draft", record=draft) + community_id = ( + draft.parent.review.get_object().get("receiver", {}).get("community", "") + ) + can_submit_record = current_communities.service.config.permission_policy_cls( + "submit_record", + community_id=community_id, + record=community, + ).allows(identity) + + if not can_submit_record: + raise RecordSubmissionClosedCommunityError() + # create review request request_item = current_rdm_records.community_inclusion_service.submit( identity, draft, community, draft.parent.review, data, uow @@ -185,7 +200,8 @@ def submit(self, identity, id_, data=None, require_review=False, uow=None): # in the review systemfield, the review should be set with the updated # request object draft.parent.review = request - uow.register(RecordCommitOp(draft.parent)) + uow.register(ParentRecordCommitOp(draft.parent)) + uow.register(RecordIndexOp(draft, indexer=self.indexer)) if not require_review: request_item = current_rdm_records.community_inclusion_service.include( @@ -195,9 +211,8 @@ def submit(self, identity, id_, data=None, require_review=False, uow=None): uow.register( NotificationOp( CommunityInclusionSubmittedNotificationBuilder.build( - request_item._request + request_item._request, ) ) ) - uow.register(RecordIndexOp(draft, indexer=self.indexer)) return request_item diff --git a/invenio_rdm_records/services/schemas/__init__.py b/invenio_rdm_records/services/schemas/__init__.py index f9e0c759f..27eb1e81d 100644 --- a/invenio_rdm_records/services/schemas/__init__.py +++ b/invenio_rdm_records/services/schemas/__init__.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020-2021 Northwestern University. # Copyright (C) 2021-2023 TU Wien. # Copyright (C) 2021-2023 Graz University of Technology. @@ -9,6 +9,7 @@ # it under the terms of the MIT License; see LICENSE file for more details. """RDM record schemas.""" + from .metadata import MetadataSchema from .parent import RDMParentSchema from .record import RDMRecordSchema diff --git a/invenio_rdm_records/services/schemas/files.py b/invenio_rdm_records/services/schemas/files.py index cae924ff7..f3e9db1a7 100644 --- a/invenio_rdm_records/services/schemas/files.py +++ b/invenio_rdm_records/services/schemas/files.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2023 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020-2021 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -16,15 +16,50 @@ from marshmallow_utils.permissions import FieldPermissionsMixin +class MetadataSchema(Schema): + """Schema for file metadata.""" + + page = fields.Integer() + type = fields.String() + language = fields.String() + encoding = fields.String() + charset = fields.String() + previewer = fields.String() + width = fields.Integer() + height = fields.Integer() + + +class AccessSchema(Schema): + """Schema for file access.""" + + hidden = fields.Bool() + + +class ProcessorSchema(Schema): + """Schema for file processor.""" + + type = fields.String() + status = fields.String() + source_file_id = fields.String() + props = fields.Dict() + + class FileSchema(Schema): """File schema.""" - checksum = fields.String() + # File fields + id = fields.String(attribute="file.id") + checksum = fields.String(attribute="file.checksum") ext = fields.String(attribute="file.ext") - key = SanitizedUnicode() - metadata = fields.Dict() - mimetype = fields.String(attribute="file.mimetype") size = fields.Integer(attribute="file.size") + mimetype = fields.String(attribute="file.mimetype") + storage_class = fields.String(attribute="file.storage_class") + + # FileRecord fields + key = SanitizedUnicode() + metadata = fields.Nested(MetadataSchema) + access = fields.Nested(AccessSchema) + processor = fields.Nested(ProcessorSchema) class FilesSchema(Schema, FieldPermissionsMixin): diff --git a/invenio_rdm_records/services/schemas/metadata.py b/invenio_rdm_records/services/schemas/metadata.py index 90c5a2454..3269b003a 100644 --- a/invenio_rdm_records/services/schemas/metadata.py +++ b/invenio_rdm_records/services/schemas/metadata.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2022 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020 Northwestern University. # Copyright (C) 2021-2023 Graz University of Technology. # @@ -8,7 +8,6 @@ # it under the terms of the MIT License; see LICENSE file for more details. """RDM record schemas.""" - from functools import partial from urllib import parse @@ -32,7 +31,9 @@ ) from marshmallow_utils.fields import ( EDTFDateString, + EDTFDateTimeString, IdentifierSet, + IdentifierValueSet, SanitizedHTML, SanitizedUnicode, ) @@ -138,6 +139,25 @@ def update_names(self, data, **kwargs): return data +def validate_affiliations_data(data): + """Validate affiliations.""" + affiliations = data.get("affiliations", []) + # return early If there are no affiliations + if not affiliations: + return + # avoid nesting + seen_names = { + affiliation.get("name", affiliation.get("id")) for affiliation in affiliations + } + if len(seen_names) != len(affiliations): + # provide more specific info + messages = [ + _("Duplicated affiliations: ") + + ", ".join(set(name for name in seen_names if name)) + ] + raise ValidationError({"affiliations": messages}) + + class CreatorSchema(Schema): """Creator schema.""" @@ -145,6 +165,11 @@ class CreatorSchema(Schema): role = fields.Nested(VocabularySchema) affiliations = fields.List(fields.Nested(AffiliationRelationSchema)) + @validates_schema + def validate_affiliations(self, data, **kwargs): + """Validate names.""" + validate_affiliations_data(data) + class ContributorSchema(Schema): """Contributor schema.""" @@ -153,6 +178,11 @@ class ContributorSchema(Schema): role = fields.Nested(VocabularySchema, required=True) affiliations = fields.List(fields.Nested(AffiliationRelationSchema)) + @validates_schema + def validate_affiliations(self, data, **kwargs): + """Validate names.""" + validate_affiliations_data(data) + class TitleSchema(Schema): """Schema for the additional title.""" @@ -207,7 +237,7 @@ def validate_description(self, value): @validates_schema def validate_rights(self, data, **kwargs): - """Validates that id xor name are present.""" + """Validates that id xor title are present.""" id_ = data.get("id") title = data.get("title") @@ -228,7 +258,7 @@ def validate_rights(self, data, **kwargs): class DateSchema(Schema): """Schema for date intervals.""" - date = EDTFDateString(required=True) + date = EDTFDateTimeString(required=True) type = fields.Nested(VocabularySchema, required=True) description = fields.Str() @@ -271,7 +301,7 @@ def __init__(self, **kwargs): super().__init__( allowed_schemes=record_identifiers_schemes, identifier_required=False, - **kwargs + **kwargs, ) reference = SanitizedUnicode(required=True) @@ -340,7 +370,7 @@ class MetadataSchema(Schema): dates = fields.List(fields.Nested(DateSchema)) languages = fields.List(fields.Nested(VocabularySchema)) # alternate identifiers - identifiers = IdentifierSet( + identifiers = IdentifierValueSet( fields.Nested( partial(IdentifierSchema, allowed_schemes=record_identifiers_schemes) ) diff --git a/invenio_rdm_records/services/schemas/parent/__init__.py b/invenio_rdm_records/services/schemas/parent/__init__.py index 9f8fd68db..1211d9783 100644 --- a/invenio_rdm_records/services/schemas/parent/__init__.py +++ b/invenio_rdm_records/services/schemas/parent/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # # Copyright (C) 2021 TU Wien. -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -13,7 +13,7 @@ from invenio_i18n import lazy_gettext as _ from invenio_requests.services.schemas import GenericRequestSchema from marshmallow import ValidationError, fields, post_dump, pre_load -from marshmallow_utils.fields import SanitizedUnicode +from marshmallow_utils.fields import NestedAttribute, SanitizedUnicode from marshmallow_utils.permissions import FieldPermissionsMixin from ..pids import PIDSchema @@ -41,7 +41,7 @@ class RDMParentSchema(ParentSchema, FieldPermissionsMixin): access = fields.Nested(ParentAccessSchema, dump_only=True) review = fields.Nested(GenericRequestSchema, allow_none=False) - communities = fields.Nested(CommunitiesSchema, dump_only=True) + communities = NestedAttribute(CommunitiesSchema, dump_only=True) pids = fields.Dict( keys=SanitizedUnicode(validate=validate_scheme), diff --git a/invenio_rdm_records/services/schemas/parent/access.py b/invenio_rdm_records/services/schemas/parent/access.py index c0d723387..2f765b8ff 100644 --- a/invenio_rdm_records/services/schemas/parent/access.py +++ b/invenio_rdm_records/services/schemas/parent/access.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020 Northwestern University. # Copyright (C) 2021 TU Wien. # @@ -11,10 +11,10 @@ # TODO: Replace with invenio_records_resources.services.base.schema import * - from datetime import timezone -from marshmallow import Schema, fields, pre_load, validate +from marshmallow import Schema, fields, validate +from marshmallow.validate import OneOf from marshmallow_utils.fields import ( ISODateString, SanitizedHTML, @@ -39,6 +39,20 @@ class Grant(Schema): permission = fields.String(required=True) subject = fields.Nested(GrantSubject, required=True) origin = fields.String(required=False) + message = SanitizedUnicode() + notify = fields.Bool() + + +class Grants(Schema): + """Grants Schema.""" + + grants = fields.List( + fields.Nested(Grant), + # max is on purpose to limit the max number of additions/changes/ + # removals per request as they all run in a single transaction and + # requires resources to hold. + validate=validate.Length(min=1, max=100), + ) class SecretLink(Schema): @@ -60,7 +74,7 @@ class SecretLink(Schema): class Agent(Schema): """An agent schema.""" - user = fields.Integer(required=True) + user = fields.String(required=True) class AccessSettingsSchema(Schema): @@ -79,9 +93,8 @@ class ParentAccessSchema(Schema, FieldPermissionsMixin): field_dump_permissions = { # omit fields from dumps except for users with 'manage' permissions - # allow only 'settings' + # allow only 'settings' and 'owned_by' "grants": "manage", - "owned_by": "manage", "links": "manage", } @@ -89,3 +102,13 @@ class ParentAccessSchema(Schema, FieldPermissionsMixin): owned_by = fields.Nested(Agent) links = fields.List(fields.Nested(SecretLink)) settings = fields.Nested(AccessSettingsSchema) + + +class RequestAccessSchema(Schema): + """Access request schema.""" + + permission = fields.Constant("view") + email = fields.Email() + full_name = SanitizedUnicode() + message = SanitizedUnicode() + consent_to_share_personal_data = fields.String(validate=OneOf(["true", "false"])) diff --git a/invenio_rdm_records/services/schemas/parent/communities.py b/invenio_rdm_records/services/schemas/parent/communities.py index a34fc7013..89007e243 100644 --- a/invenio_rdm_records/services/schemas/parent/communities.py +++ b/invenio_rdm_records/services/schemas/parent/communities.py @@ -1,17 +1,24 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Community schema.""" -from marshmallow import Schema, fields +from invenio_communities.communities.schema import CommunitySchema +from marshmallow import Schema, fields, post_dump class CommunitiesSchema(Schema): - """Community schema.""" + """Communities schema.""" ids = fields.List(fields.String()) - default = fields.String() + default = fields.String(attribute="default.id") + entries = fields.List(fields.Nested(CommunitySchema)) + + @post_dump + def clear_none_values(self, data, **kwargs): + """Remove empty values from the dump.""" + return {k: v for k, v in data.items() if v} diff --git a/invenio_rdm_records/services/schemas/quota.py b/invenio_rdm_records/services/schemas/quota.py new file mode 100644 index 000000000..d5f4c0758 --- /dev/null +++ b/invenio_rdm_records/services/schemas/quota.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Schemas related to record deletion status and tombstones.""" + +from marshmallow import Schema, fields +from marshmallow_utils.fields import SanitizedUnicode + + +class QuotaSchema(Schema): + """Storage quota schema.""" + + quota_size = fields.Number(required=True) + max_file_size = fields.Number(required=True) + notes = SanitizedUnicode() diff --git a/invenio_rdm_records/services/schemas/record.py b/invenio_rdm_records/services/schemas/record.py index c2eaac9be..9abcb7c30 100644 --- a/invenio_rdm_records/services/schemas/record.py +++ b/invenio_rdm_records/services/schemas/record.py @@ -9,21 +9,29 @@ # it under the terms of the MIT License; see LICENSE file for more details. """RDM record schemas.""" - +from datetime import datetime, timezone from functools import partial from flask import current_app from invenio_drafts_resources.services.records.schema import RecordSchema from invenio_i18n import lazy_gettext as _ +from invenio_pidstore.providers.recordid_v2 import RecordIdProviderV2 from invenio_records_resources.services.custom_fields import CustomFieldsSchema -from marshmallow import EXCLUDE, ValidationError, fields, post_dump -from marshmallow_utils.fields import NestedAttribute, SanitizedUnicode +from marshmallow import EXCLUDE, Schema, ValidationError, fields, post_dump, pre_load +from marshmallow_utils.fields import ( + EDTFDateTimeString, + NestedAttribute, + SanitizedHTML, + SanitizedUnicode, + TZDateTime, +) from marshmallow_utils.permissions import FieldPermissionsMixin from .access import AccessSchema from .files import FilesSchema from .metadata import MetadataSchema from .parent import RDMParentSchema +from .parent.access import Agent from .pids import PIDSchema from .stats import StatsSchema from .tombstone import DeletionStatusSchema, TombstoneSchema @@ -36,6 +44,20 @@ def validate_scheme(scheme): raise ValidationError(_("Invalid persistent identifier scheme.")) +class InternalNoteSchema(Schema): + """Schema for internal notes.""" + + id = SanitizedUnicode() + timestamp = EDTFDateTimeString(dump_only=True) + added_by = fields.Nested(Agent, dump_only=True) + note = SanitizedHTML() + + class Meta: + """Meta attributes for the schema.""" + + unknown = EXCLUDE + + class RDMRecordSchema(RecordSchema, FieldPermissionsMixin): """Record schema.""" @@ -61,19 +83,25 @@ class Meta: access = NestedAttribute(AccessSchema) files = NestedAttribute(FilesSchema) media_files = NestedAttribute(FilesSchema) - # notes = fields.List(fields.Nested(InternalNoteSchema)) revision = fields.Integer(dump_only=True) versions = NestedAttribute(VersionsSchema, dump_only=True) parent = NestedAttribute(RDMParentSchema) - is_deleted = fields.Boolean(dump_only=True) + is_published = fields.Boolean(dump_only=True) status = fields.String(dump_only=True) - tombstone = fields.Nested(TombstoneSchema, dump_only=True) deletion_status = fields.Nested(DeletionStatusSchema, dump_only=True) - + internal_notes = fields.List(fields.Nested(InternalNoteSchema)) stats = NestedAttribute(StatsSchema, dump_only=True) # schema_version = fields.Integer(dump_only=True) + field_dump_permissions = { + "internal_notes": "manage_internal", + } + + field_load_permissions = { + "internal_notes": "manage_internal", + } + def default_nested(self, data): """Serialize fields as empty dict for partial drafts. @@ -88,19 +116,14 @@ def default_nested(self, data): data["pids"] = {} if not data.get("custom_fields"): data["custom_fields"] = {} - return data - def hide_tombstone_or_metadata(self, data): + def hide_tombstone(self, data): """Hide tombstone info if the record isn't deleted and metadata if it is.""" - is_deleted = data.get("deletion_status", {}).get("is_deleted", False) - - if is_deleted: - keys_to_keep = ["tombstone", "deletion_status", "id", "pids", "links"] - for key in [k for k in data if k in keys_to_keep]: - data.pop(key, None) + is_deleted = (data.get("deletion_status") or {}).get("is_deleted", False) + tombstone_visible = (data.get("tombstone") or {}).get("is_visible", True) - else: + if not is_deleted or not tombstone_visible: data.pop("tombstone", None) return data @@ -109,5 +132,5 @@ def hide_tombstone_or_metadata(self, data): def post_dump(self, data, many, **kwargs): """Perform some updates on the dumped data.""" data = self.default_nested(data) - data = self.hide_tombstone_or_metadata(data) + data = self.hide_tombstone(data) return data diff --git a/invenio_rdm_records/services/schemas/tombstone.py b/invenio_rdm_records/services/schemas/tombstone.py index b8161ed87..13d643638 100644 --- a/invenio_rdm_records/services/schemas/tombstone.py +++ b/invenio_rdm_records/services/schemas/tombstone.py @@ -9,7 +9,7 @@ from invenio_vocabularies.services.schema import VocabularyRelationSchema from marshmallow import Schema, fields -from marshmallow_utils.fields import ISODateString, NestedAttribute, SanitizedUnicode +from marshmallow_utils.fields import ISODateString, SanitizedUnicode from .parent.access import Agent as BaseAgentSchema diff --git a/invenio_rdm_records/services/schemas/utils.py b/invenio_rdm_records/services/schemas/utils.py index 7f6ae6a89..03a746f16 100644 --- a/invenio_rdm_records/services/schemas/utils.py +++ b/invenio_rdm_records/services/schemas/utils.py @@ -31,7 +31,7 @@ def dump_empty(schema_or_field): if isinstance(schema_or_field, fields.List): field = schema_or_field return [dump_empty(field.inner)] - if isinstance(schema_or_field, NestedAttribute): + if isinstance(schema_or_field, (NestedAttribute, fields.Nested)): field = schema_or_field return dump_empty(field.nested) diff --git a/invenio_rdm_records/services/search_params.py b/invenio_rdm_records/services/search_params.py new file mode 100644 index 000000000..36b7423f7 --- /dev/null +++ b/invenio_rdm_records/services/search_params.py @@ -0,0 +1,94 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# +# Invenio-Rdm-Records is free software; you can redistribute it and/or +# modify it under the terms of the MIT License; see LICENSE file for more +# details. + +"""Sort parameter interpreter API.""" + +from invenio_access.permissions import authenticated_user +from invenio_records_resources.services.records.params.base import ParamInterpreter + +from invenio_rdm_records.records.systemfields.deletion_status import ( + RecordDeletionStatusEnum, +) + + +class StatusParam(ParamInterpreter): + """Evaluates the 'status' parameter.""" + + def apply(self, identity, search, params): + """Evaluate the status parameter on the search.""" + value = params.pop("status", None) + if value is not None and value in [x.value for x in RecordDeletionStatusEnum]: + search = search.filter("term", **{"deletion_status": value}) + return search + + +class PublishedRecordsParam(ParamInterpreter): + """Evaluates the include_deleted parameter.""" + + def apply(self, identity, search, params): + """Evaluate the include_deleted parameter on the search.""" + value = params.pop("include_deleted", None) + # Filter prevents from displaying deleted records on mainsite search + # deleted records should appear only in admins panel + if value is None: + search = search.filter( + "term", **{"deletion_status": RecordDeletionStatusEnum.PUBLISHED.value} + ) + return search + + +class MyDraftsParam(ParamInterpreter): + """Evaluates the include_deleted parameter.""" + + def apply(self, identity, search, params): + """Evaluate the include_deleted parameter on the search.""" + value = params.pop("include_deleted", None) + + # Filter prevents from other users' drafts from displaying on Moderator's + # dashboard + def is_user_authenticated(): + return authenticated_user in identity.provides + + if value is None and is_user_authenticated(): + search = search.filter( + "term", **{"parent.access.owned_by.user": identity.id} + ) + return search + + +class MetricsParam(ParamInterpreter): + """Evaluates the metrics parameter.""" + + def apply(self, identity, search, params): + """Evaluate the metrics parameter on the search. + + Usage: + + .. code-block:: python + + "params": { + ... + "metrics": { + "total_data": { + "name": "total_data", + "type": "sum", + "kwargs": { + "field": "files.totalbytes" + } + } + } + } + """ + value = params.pop("metrics", {}) + for key, metric_params in value.items(): + name = metric_params.get("name", key) + _type = metric_params.get("type", None) + kwargs = metric_params.get("kwargs", {}) + if name and _type: + search.aggs.metric(name, _type, **kwargs) + return search diff --git a/invenio_rdm_records/services/services.py b/invenio_rdm_records/services/services.py index 66794f393..e99d0761a 100644 --- a/invenio_rdm_records/services/services.py +++ b/invenio_rdm_records/services/services.py @@ -1,8 +1,8 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2023 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020-2021 Northwestern University. -# Copyright (C) 2021 TU Wien. +# Copyright (C) 2021-2023 TU Wien. # Copyright (C) 2021 Graz University of Technology. # Copyright (C) 2022 Universität Hamburg. # @@ -11,14 +11,39 @@ """RDM Record Service.""" +from datetime import datetime import arrow +from flask import current_app +from invenio_accounts.models import User +from invenio_db import db from invenio_drafts_resources.services.records import RecordService -from invenio_records_resources.services.uow import RecordCommitOp, unit_of_work +from invenio_drafts_resources.services.records.uow import ParentRecordCommitOp +from invenio_records_resources.services import LinksTemplate, ServiceSchemaWrapper +from invenio_records_resources.services.errors import PermissionDeniedError +from invenio_records_resources.services.uow import ( + RecordCommitOp, + RecordIndexDeleteOp, + RecordIndexOp, + TaskOp, + unit_of_work, +) from invenio_requests.services.results import EntityResolverExpandableField +from invenio_search.engine import dsl +from marshmallow import ValidationError +from sqlalchemy.exc import NoResultFound -from invenio_rdm_records.services.errors import EmbargoNotLiftedError -from invenio_rdm_records.services.results import ParentCommunitiesExpandableField +from invenio_rdm_records.records.models import RDMRecordQuota, RDMUserQuota +from invenio_rdm_records.services.pids.tasks import register_or_update_pid + +from ..records.systemfields.deletion_status import RecordDeletionStatusEnum +from .errors import ( + CommunityRequiredError, + DeletionStatusException, + EmbargoNotLiftedError, + RecordDeletedException, +) +from .results import ParentCommunitiesExpandableField class RDMRecordService(RecordService): @@ -69,8 +94,19 @@ def expandable_fields(self): return [ EntityResolverExpandableField("parent.review.receiver"), ParentCommunitiesExpandableField("parent.communities.default"), + EntityResolverExpandableField("parent.access.owned_by"), ] + @property + def schema_tombstone(self): + """Schema for tombstone information.""" + return ServiceSchemaWrapper(self, schema=self.config.schema_tombstone) + + @property + def schema_quota(self): + """Returns the featured data schema instance.""" + return ServiceSchemaWrapper(self, schema=self.config.schema_quota) + # # Service methods # @@ -99,7 +135,25 @@ def lift_embargo(self, identity, _id, uow=None): if not record.access.lift_embargo(): raise EmbargoNotLiftedError(_id) + # Run components + self.run_components( + "lift_embargo", identity, draft=draft, record=record, uow=uow + ) + + self._pids.pid_manager.create_and_reserve(record) uow.register(RecordCommitOp(record, indexer=self.indexer)) + uow.register(TaskOp(register_or_update_pid, record["id"], "doi", parent=False)) + # If the record was previously public it will still keep the parent PID + if not record.parent.pids: + self._pids.parent_pid_manager.create_and_reserve(record.parent) + uow.register( + ParentRecordCommitOp( + record.parent, + ) + ) + uow.register( + TaskOp(register_or_update_pid, record["id"], "doi", parent=True) + ) def scan_expired_embargos(self, identity): """Scan for records with an expired embargo.""" @@ -109,7 +163,7 @@ def scan_expired_embargos(self, identity): f"access.embargo.active:true AND access.embargo.until:[* TO {today}]" ) - return self.scan(identity=identity, q=embargoed_q) + return self.scan(identity=identity, q=embargoed_q, params={"allversions": True}) def oai_result_item(self, identity, oai_record_source): """Get a result item from a record source in the OAI server. @@ -128,3 +182,552 @@ def oai_result_item(self, identity, oai_record_source): record, links_tpl=self.links_item_tpl, ) + + # + # Deletion workflows + # + @unit_of_work() + def delete_record( + self, identity, id_, data, expand=False, uow=None, revision_id=None + ): + """(Soft) delete a published record.""" + record = self.record_cls.pid.resolve(id_) + # Check permissions + self.require_permission(identity, "delete", record=record) + + self.check_revision_id(record, revision_id) + + if record.deletion_status.is_deleted: + raise DeletionStatusException(record, RecordDeletionStatusEnum.PUBLISHED) + + # Load tombstone data with the schema + data, errors = self.schema_tombstone.load( + data, + context={ + "identity": identity, + "pid": record.pid, + "record": record, + }, + raise_errors=True, + ) + + # Run components + self.run_components( + "delete_record", identity, data=data, record=record, uow=uow + ) + + new_record_latest_version = None + if record.versions.is_latest is True: + # set latest to the previous non deleted record + new_record_latest_version = ( + self.record_cls.next_latest_published_record_by_parent(record.parent) + ) + if new_record_latest_version: + new_record_latest_version.versions.set_latest() + + # Commit and reindex record + uow.register(RecordCommitOp(record, indexer=self.indexer)) + + # delete associated draft from index + try: + draft = self.draft_cls.pid.resolve(id_) + uow.register(RecordIndexDeleteOp(draft, indexer=self.draft_indexer)) + except NoResultFound: + pass + + # Commit and reindex new latest record + if new_record_latest_version: + uow.register( + RecordCommitOp(new_record_latest_version, indexer=self.indexer) + ) + + return self.result_item( + self, + identity, + record, + links_tpl=self.links_item_tpl, + expandable_fields=self.expandable_fields, + expand=expand, + ) + + @unit_of_work() + def update_tombstone(self, identity, id_, data, expand=False, uow=None): + """Update the tombstone information for the (soft) deleted record.""" + record = self.record_cls.pid.resolve(id_) + if not record.deletion_status.is_deleted: + # strictly speaking, it's two expected statuses: DELETED or MARKED + raise DeletionStatusException(record, RecordDeletionStatusEnum.DELETED) + + # Check permissions + self.require_permission(identity, "delete", record=record) + + # Load tombstone data with the schema and set it + data, errors = self.schema_tombstone.load( + data, + context={ + "identity": identity, + "pid": record.pid, + "record": record, + }, + raise_errors=True, + ) + + # Run components + self.run_components( + "update_tombstone", identity, data=data, record=record, uow=uow + ) + + # Commit and reindex record + uow.register(RecordCommitOp(record, indexer=self.indexer)) + + return self.result_item( + self, + identity, + record, + links_tpl=self.links_item_tpl, + expandable_fields=self.expandable_fields, + expand=expand, + ) + + @unit_of_work() + def cleanup_record(self, identity, id_, uow=None): + """Clean up a (soft) deleted record.""" + record = self.record_cls.pid.resolve(id_) + if not record.deletion_status.is_deleted: + # strictly speaking, it's two expected statuses: DELETED or MARKED + raise DeletionStatusException(record, RecordDeletionStatusEnum.DELETED) + + raise NotImplementedError() + + @unit_of_work() + def restore_record(self, identity, id_, expand=False, uow=None): + """Restore a record that has been (soft) deleted.""" + record = self.record_cls.pid.resolve(id_) + if record.deletion_status != RecordDeletionStatusEnum.DELETED: + raise DeletionStatusException(RecordDeletionStatusEnum.DELETED, record) + + # Check permissions + self.require_permission(identity, "delete", record=record) + + # Run components + self.run_components("restore_record", identity, record=record, uow=uow) + + # set latest to the previous non deleted record + latest_record_version = self.record_cls.get_latest_published_by_parent( + record.parent + ) + + if not latest_record_version: + # if all records were deleted then make the restored record latest + record.versions.set_latest() + elif record.versions.index > latest_record_version.versions.index: + # set current restored record as latest + record.versions.set_latest() + + # Commit and reindex record + uow.register(RecordCommitOp(record, indexer=self.indexer)) + + # reindex associated draft + try: + draft = self.draft_cls.pid.resolve(id_) + uow.register(RecordIndexOp(draft, indexer=self.draft_indexer)) + except NoResultFound: + pass + + # commit and reindex the old latest record + if latest_record_version and record.id != latest_record_version.id: + uow.register(RecordCommitOp(latest_record_version, indexer=self.indexer)) + + return self.result_item( + self, + identity, + record, + links_tpl=self.links_item_tpl, + expandable_fields=self.expandable_fields, + expand=expand, + ) + + @unit_of_work() + def mark_record_for_purge(self, identity, id_, expand=False, uow=None): + """Mark a (soft) deleted record for purge.""" + record = self.record_cls.pid.resolve(id_) + if record.deletion_status != RecordDeletionStatusEnum.DELETED: + raise DeletionStatusException(record, RecordDeletionStatusEnum.DELETED) + + # Check permissions + self.require_permission(identity, "purge", record=record) + + # Run components + self.run_components("mark_record", identity, record=record, uow=uow) + + # Commit and reindex record + uow.register(RecordCommitOp(record, indexer=self.indexer)) + + return self.result_item( + self, + identity, + record, + links_tpl=self.links_item_tpl, + expandable_fields=self.expandable_fields, + expand=expand, + ) + + @unit_of_work() + def unmark_record_for_purge(self, identity, id_, expand=False, uow=None): + """Remove the mark for deletion from a record, returning it to deleted state.""" + record = self.record_cls.pid.resolve(id_) + if record.deletion_status != RecordDeletionStatusEnum.MARKED: + raise DeletionStatusException(record, RecordDeletionStatusEnum.MARKED) + + # Check permissions + self.require_permission(identity, "purge", record=record) + + # Run components + self.run_components("unmark_record", identity, record=record, uow=uow) + + # Commit and reindex the record + uow.register(RecordCommitOp(record, indexer=self.indexer)) + + return self.result_item( + self, + identity, + record, + links_tpl=self.links_item_tpl, + expandable_fields=self.expandable_fields, + expand=expand, + ) + + @unit_of_work() + def purge_record(self, identity, id_, uow=None): + """Purge a record that has been marked.""" + record = self.record_cls.pid.resolve(id_) + if record.deletion_status != RecordDeletionStatusEnum.MARKED: + raise DeletionStatusException(record, RecordDeletionStatusEnum.MARKED) + + raise NotImplementedError() + + @unit_of_work() + def publish(self, identity, id_, uow=None, expand=False): + """Publish a draft. + + Check for permissions to publish a draft and then call invenio_drafts_resourcs.services.records.services.publish() + """ + try: + draft = self.draft_cls.pid.resolve(id_, registered_only=False) + self.require_permission(identity, "publish", record=draft) + # By default, admin/superuser has permission to do everything, so PermissionDeniedError won't be raised for admin in any case + except PermissionDeniedError as exc: + # If user doesn't have permission to publish, determine which error to raise, based on config + community_required = current_app.config["RDM_COMMUNITY_REQUIRED_TO_PUBLISH"] + is_community_missing = len(draft.parent.communities.ids) < 1 + if community_required and is_community_missing: + raise CommunityRequiredError() + else: + # If the config wasn't enabled, then raise the PermissionDeniedError + raise exc + + return super().publish(identity, id_, uow=uow, expand=expand) + + # + # Search functions + # + def search( + self, + identity, + params=None, + search_preference=None, + expand=False, + extra_filter=None, + **kwargs, + ): + """Search for published records matching the querystring.""" + return super().search( + identity, + params, + search_preference, + expand, + extra_filter=extra_filter, + permission_action="read_deleted", + **kwargs, + ) + + def search_drafts( + self, + identity, + params=None, + search_preference=None, + expand=False, + extra_filter=None, + **kwargs, + ): + """Search for drafts that have not been marked as deleted.""" + # ATTENTION: super() applies dsl.Q("term", has_draft=False) & search_filter + # + # The "has_draft=False" ensures that we return either: + # - a record without a draft, or + # - a draft + # + # To filter out deleted records we apply the following logic: + # deletion_status=="P" or "deletion_status" not in data + search_filter = dsl.query.Q( + "bool", + should=[ + dsl.query.Q( + "bool", + must=[ + dsl.query.Q( + "term", + deletion_status=RecordDeletionStatusEnum.PUBLISHED.value, + ) + ], + ), + # Drafts does not have deletion_status so this clause is needed to + # prevent the above clause from filtering out the drafts + # TODO: ensure draft also has the needed data. + dsl.query.Q( + "bool", must_not=[dsl.query.Q("exists", field="deletion_status")] + ), + ], + ) + if extra_filter: + search_filter &= extra_filter + return super().search_drafts( + identity, + params=params, + search_preference=search_preference, + expand=expand, + extra_filter=search_filter, + **kwargs, + ) + + def search_versions( + self, identity, id_, params=None, search_preference=None, expand=False, **kwargs + ): + """Search for published records matching the querystring.""" + return super().search_versions( + identity, + id_, + params, + search_preference, + expand, + permission_action="read_deleted", + **kwargs, + ) + + def scan_versions( + self, + identity, + id_, + params=None, + search_preference=None, + expand=False, + permission_action="read_deleted", + **kwargs, + ): + """Search for record's versions.""" + try: + record = self.record_cls.pid.resolve(id_, registered_only=False) + except NoResultFound: + record = self.draft_cls.pid.resolve(id_, registered_only=False) + + self.require_permission(identity, "read", record=record) + extra_filter = dsl.Q("term", **{"parent.id": str(record.parent.pid.pid_value)}) + if filter_ := kwargs.pop("extra_filter", None): + extra_filter = filter_ & extra_filter + + # Prepare and execute the search + params = params or {} + + search_result = self._search( + "search_versions", + identity, + params, + search_preference, + record_cls=self.record_cls, + search_opts=self.config.search_versions, + extra_filter=extra_filter, + permission_action=permission_action, + **kwargs, + ).scan() + return self.result_list( + self, + identity, + search_result, + params, + links_tpl=LinksTemplate( + self.config.links_search_versions, context={"id": id_, "args": params} + ), + links_item_tpl=self.links_item_tpl, + expandable_fields=self.expandable_fields, + expand=expand, + ) + + # + # Base methods, extended with handling of deleted records + # + def read(self, identity, id_, expand=False, include_deleted=False): + """Retrieve a record.""" + record = self.record_cls.pid.resolve(id_) + result = super().read(identity, id_, expand=expand) + + if not include_deleted and record.deletion_status.is_deleted: + raise RecordDeletedException(record, result_item=result) + if include_deleted and record.deletion_status.is_deleted: + can_read_deleted = self.check_permission( + identity, "read_deleted", record=record + ) + + if not can_read_deleted: + # displays tombstone + raise RecordDeletedException(record, result_item=result) + + return result + + def read_draft(self, identity, id_, expand=False): + """Retrieve a draft of a record. + + If the draft has a "deleted" published record then we return 410. + """ + result = super().read_draft(identity, id_, expand=expand) + # check that if there is a published deleted record then return 410 + draft = result._record + if draft.is_published: + record = self.record_cls.pid.resolve(id_) + if record.deletion_status.is_deleted: + result = super().read(identity, id_, expand=expand) + raise RecordDeletedException(record, result_item=result) + + return result + + @unit_of_work() + def update_draft( + self, identity, id_, data, revision_id=None, uow=None, expand=False + ): + """Replace a draft.""" + draft = self.draft_cls.pid.resolve(id_, registered_only=False) + + # can not make record restricted after grace period + current_draft_is_public = ( + draft.get("access", {}).get("record", None) == "public" + ) + is_update_to_restricted = ( + data.get("access", {}).get("record", None) == "restricted" + ) + allow_restriction = current_app.config[ + "RDM_RECORDS_ALLOW_RESTRICTION_AFTER_GRACE_PERIOD" + ] + + if ( + not allow_restriction + and current_draft_is_public + and is_update_to_restricted + ): + end_of_grace_period = ( + draft.created + + current_app.config["RDM_RECORDS_RESTRICTION_GRACE_PERIOD"] + ) + if end_of_grace_period <= datetime.now(): + raise ValidationError( + "Record visibility can not be changed to restricted " + "anymore. Please contact support if you still need to make these changes." + ) + + return super().update_draft( + identity, + id_, + data, + revision_id=revision_id, + uow=uow, + expand=expand, + ) + + # + # Record file quota handling + # + def _update_quota(self, record, quota_size, max_file_size, notes): + """Update record with quota values.""" + record.quota_size = quota_size + if max_file_size: + record.max_file_size = max_file_size + if notes: + record.notes = notes + + @unit_of_work() + def set_quota( + self, + identity, + id_, + data, + files_attr="files", + uow=None, + ): + """Set draft files quota.""" + draft = self.draft_cls.pid.resolve(id_, registered_only=False) + parent = draft.parent + self.require_permission(identity, "manage_quota", record=draft) + data, errors = self.schema_quota.load( + data, + context={ + "identity": identity, + }, + raise_errors=True, + ) + # Set quota + draft_quota = RDMRecordQuota.query.filter( + RDMRecordQuota.parent_id == str(parent.id) + ).one_or_none() + + if not draft_quota: + draft_quota = RDMRecordQuota( + parent_id=str(parent.id), + user_id=parent.access.owned_by.owner_id, + **data, + ) + else: + # update record quota + self._update_quota(draft_quota, **data) + + db.session.add(draft_quota) + + # files_attr can be set to "media_files" + getattr(draft, files_attr).set_quota( + quota_size=data["quota_size"], max_file_size=data["max_file_size"] + ) + return True + + # + # NOTE this should potentially be moved to users service. Added here for + # fast tracking its development + @unit_of_work() + def set_user_quota( + self, + identity, + id_, + data, + uow=None, + ): + """Set user files quota.""" + user = User.query.get(id_) + + self.require_permission(identity, "manage_quota", record=user) + + data, errors = self.schema_quota.load( + data, + context={ + "identity": identity, + }, + raise_errors=True, + ) + # Set quota + user_quota = RDMUserQuota.query.filter( + RDMUserQuota.user_id == user.id + ).one_or_none() + if not user_quota: + user_quota = RDMUserQuota(user_id=user.id, **data) + else: + # update user quota + self._update_quota(user_quota, **data) + + db.session.add(user_quota) + + return True diff --git a/invenio_rdm_records/services/signals/__init__.py b/invenio_rdm_records/services/signals/__init__.py new file mode 100644 index 000000000..fa1bd0bcc --- /dev/null +++ b/invenio_rdm_records/services/signals/__init__.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Service signals.""" + +from .signals import post_publish_signal + +__all__ = ("post_publish_signal",) diff --git a/invenio_rdm_records/services/signals/signals.py b/invenio_rdm_records/services/signals/signals.py new file mode 100644 index 000000000..7f876f6b7 --- /dev/null +++ b/invenio_rdm_records/services/signals/signals.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Software Heritage signals.""" + +from blinker import Namespace + +_signals = Namespace() + +post_publish_signal = _signals.signal("record-post-publish") +"""Signal to be sent after a record is published.""" diff --git a/invenio_rdm_records/services/sort.py b/invenio_rdm_records/services/sort.py index 8767bb0f6..fb9860997 100644 --- a/invenio_rdm_records/services/sort.py +++ b/invenio_rdm_records/services/sort.py @@ -21,6 +21,5 @@ def apply(self, identity, search, params): """ if current_app.config["RDM_SEARCH_SORT_BY_VERIFIED"]: fields = self._compute_sort_fields(params) - fields.insert(0, "-parent.is_verified") - return search.sort(*fields) + return search.sort(*["-parent.is_verified", *fields]) return super().apply(identity, search, params) diff --git a/invenio_rdm_records/services/tasks.py b/invenio_rdm_records/services/tasks.py index f3a97803f..b140fae75 100644 --- a/invenio_rdm_records/services/tasks.py +++ b/invenio_rdm_records/services/tasks.py @@ -7,13 +7,35 @@ """Celery tasks.""" +import math +from datetime import datetime, timedelta + from celery import shared_task +from celery.schedules import crontab from flask import current_app from invenio_access.permissions import system_identity -from invenio_i18n import lazy_gettext as _ +from invenio_search.engine import dsl +from invenio_search.proxies import current_search_client +from invenio_search.utils import prefix_index +from invenio_stats.bookmark import BookmarkAPI + +from invenio_rdm_records.services.signals import post_publish_signal + +from ..proxies import current_rdm_records +from .errors import EmbargoNotLiftedError -from invenio_rdm_records.proxies import current_rdm_records -from invenio_rdm_records.services.errors import EmbargoNotLiftedError +# runs every hour at minute 10 for a consistent offset from process and aggregate +# event statistics. +StatsRDMReindexTask = { + "task": "invenio_rdm_records.services.tasks.reindex_stats", + "schedule": crontab(minute=10), + "args": [ + ( + "stats-record-view", + "stats-file-download", + ) + ], +} @shared_task(ignore_result=True) @@ -28,3 +50,45 @@ def update_expired_embargos(): except EmbargoNotLiftedError as ex: current_app.logger.warning(ex.description) continue + + +@shared_task(ignore_result=True) +def reindex_stats(stats_indices): + """Reindex the documents where the stats have changed.""" + bm = BookmarkAPI(current_search_client, "stats_reindex", "day") + last_run = bm.get_bookmark() + if not last_run: + # If this is the first time that we run, let's do it for the documents of the last week + last_run = (datetime.utcnow() - timedelta(days=7)).isoformat() + reindex_start_time = datetime.utcnow().isoformat() + indices = ",".join(map(lambda x: prefix_index(x) + "*", stats_indices)) + + all_parents = set() + query = dsl.Search( + using=current_search_client, + index=indices, + ).filter({"range": {"updated_timestamp": {"gte": last_run}}}) + + for result in query.scan(): + parent_id = result.parent_recid + all_parents.add(parent_id) + + if all_parents: + all_parents_list = list(all_parents) + step = 10000 + end = len(list(all_parents)) + for i in range(0, end, step): + records_q = dsl.Q("terms", parent__id=all_parents_list[i : i + step]) + current_rdm_records.records_service.reindex( + params={"allversions": True}, + identity=system_identity, + search_query=records_q, + ) + bm.set_bookmark(reindex_start_time) + return "%d documents reindexed" % len(all_parents) + + +@shared_task(ignore_result=True) +def send_post_published_signal(pid): + """Sends a signal for a published record.""" + post_publish_signal.send(current_app._get_current_object(), pid=pid) diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.accept.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.accept.jinja new file mode 100644 index 000000000..e8ab874c4 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.accept.jinja @@ -0,0 +1,77 @@ +{% set submission_request = notification.context.request %} +{% set community = submission_request.receiver %} +{% set creator = submission_request.created_by %} +{% set record = submission_request.topic %} +{% set request_id = submission_request.id %} +{% set executing_user = notification.context.executing_user %} +{% set message = notification.context.message | safe if notification.context.message else '' %} +{% set community_title = community.metadata.title %} +{% set record_title = record.metadata.title %} +{% set curator_name = executing_user.username or executing_user.profile.full_name %} + +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("✅ Community inclusion accepted for '{record_title}'").format(record_title=record_title) }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + {% if message %} + + {% endif %} + + + + + + + + + + +
{{ _("The community curator '@{curator_name}' accepted the record '{record_title}' into the community '{community_title}'").format(curator_name=curator_name, community_title=community_title, record_title=record_title) }} + {% if message %} + {{ _(" with the following message:")}} + {% endif %} +
{{message}}
{{ _("Check out the submission request")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body %} + +{%- block plain_body -%} +{{ _("The community curator @{curator_name} accepted the record '{record_title}' into the community '{community_title}'").format(curator_name=curator_name, community_title=community_title, record_title=record_title) }} + +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +[{{ _("Check out the submission request") }}]({{ request_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body %} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("The community curator *@{curator_name}* accepted the record *{record_title}* into the community *{community_title}*").format(curator_name=curator_name, community_title=community_title, record_title=record_title) }} + +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +[{{ _("Check out the submission request") }}]({{ request_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body %} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.cancel.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.cancel.jinja new file mode 100644 index 000000000..f13c07418 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.cancel.jinja @@ -0,0 +1,54 @@ +{% set submission_request = notification.context.request %} +{% set community = submission_request.receiver %} +{% set creator = submission_request.created_by %} +{% set record = submission_request.topic %} +{% set request_id = submission_request.id %} +{% set executing_user = notification.context.executing_user %} + +{% set community_title = community.metadata.title %} +{% set record_title = record.metadata.title %} +{% set cancel_name = executing_user.username or executing_user.profile.full_name %} + +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("❌ Community inclusion cancelled for '{record_title}'").format(record_title=record_title) }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + + + + + + + + +
{{ _("The record submission for your community '{community_title}' was cancelled by '@{cancel_name}'.").format(cancel_name=cancel_name, community_title=community_title) }}
{{ _("Check out the submission request")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body -%} + +{%- block plain_body -%} +{{ _("The record submission for your community '{community_title}' was cancelled by @'{cancel_name}'.").format(cancel_name=cancel_name, community_title=community_title) }} + +{{ _("Check out the submission request: {request_link}").format(request_link=request_link) }} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("The record submission for your community *'{community_title}'* was cancelled by *'{cancel_name}'*.").format(cancel_name=cancel_name, community_title=community_title) }} + +[{{ _("Check out the submission request") }}]({{ request_link }}) +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.decline.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.decline.jinja new file mode 100644 index 000000000..e9ed11b38 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.decline.jinja @@ -0,0 +1,77 @@ +{% set submission_request = notification.context.request %} +{% set community = submission_request.receiver %} +{% set creator = submission_request.created_by %} +{% set record = submission_request.topic %} +{% set request_id = submission_request.id %} +{% set executing_user = notification.context.executing_user %} +{% set message = notification.context.message | safe if notification.context.message else '' %} +{% set community_title = community.metadata.title %} +{% set record_title = record.metadata.title %} +{% set curator_name = executing_user.username or executing_user.profile.full_name %} + +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("⛔️ Community inclusion declined for '{record_title}'").format(record_title=record_title) }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + {% if message %} + + {% endif %} + + + + + + + + + + +
{{ _("The community curator '@{curator_name}' declined the record '{record_title}' into the community '{community_title}'").format(curator_name=curator_name, community_title=community_title, record_title=record_title) }} + {% if message %} + {{ _(" with the following message:")}} + {% endif %} +
{{message}}
{{ _("Check out the submission request")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body %} + +{%- block plain_body -%} +{{ _("The community curator @{curator_name} declined the record '{record_title}' into the community '{community_title}'").format(curator_name=curator_name, community_title=community_title, record_title=record_title) }} + +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +{{ _("Check out the submission request: {request_link}").format(request_link=request_link) }} + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body %} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("The community curator *@{curator_name}* declined the record *{record_title}* into the community *{community_title}*").format(curator_name=curator_name, community_title=community_title, record_title=record_title) }} + +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +[{{_("Check out the submission request")}}]({{request_link}}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body %} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.expire.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.expire.jinja new file mode 100644 index 000000000..e71af92bf --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.expire.jinja @@ -0,0 +1,56 @@ +{% set submission_request = notification.context.request %} +{% set community = submission_request.receiver %} +{% set creator = submission_request.created_by %} +{% set record = submission_request.topic %} +{% set request_id = submission_request.id %} + +{% set community_title = community.metadata.title %} +{% set record_title = record.metadata.title %} + +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("⌛️ Community inclusion expired for '{record_title}'").format(record_title=record_title) }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + + + + + + + + +
{{ _("The submission for your record has expired.") }}
{{ _("Check out the submission request")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body %} + +{%- block plain_body -%} +{{ _("The submission for your record has expired.") }} + +{{ _("Check out the submission request: {request_link}").format(request_link=request_link) }} + +{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}} +{%- endblock plain_body %} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("The submission for your record has expired.") }} + +[{{_("Check out the submission request")}}]({{request_link}}) + +[{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}}]({{account_settings_link}}) +{%- endblock md_body %} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.submit.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.submit.jinja index 26762fb98..e0632b195 100644 --- a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.submit.jinja +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/community-submission.submit.jinja @@ -3,38 +3,74 @@ {% set creator = submission_request.created_by %} {% set record = submission_request.topic %} {% set request_id = submission_request.id %} - +{% set creator_name = creator.username or creator.profile.full_name %} {% set community_title = community.metadata.title %} {% set record_title = record.metadata.title %} -{% set creator_name = creator.username %} +{% set message = notification.context.message | safe if notification.context.message else '' %} {# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} {% set request_link = "{ui}/me/requests/{id}".format( ui=config.SITE_UI_URL, id=request_id ) %} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} {%- block subject -%} - {{ _("New record submission for your community '{community_title}' submitted by '{creator_name}'").format(community_title=community_title, creator_name=creator_name) }} + {{ _("📥 New record submission to your community '{community_title}'").format(community_title=community_title) }} {%- endblock subject -%} {%- block html_body -%} -

- {{ _("The record '{record_title}' was submitted to your community '{community_title}' by '{creator_name}'.").format(record_title=record_title, community_title=community_title, creator_name=creator_name) }} -

- -
{{ _("Review the submission request") }} -{%- endblock html_body -%} + + + + + + {% if message %} + + {% endif %} + + + + + + + + + + +
{{ _("The record '{record_title}' was submitted to your community '{community_title}' by '@{creator_name}'").format(record_title=record_title, community_title=community_title, creator_name=creator_name) }} + {% if message %} + {{ _(" with the following message:")}} + {% endif %} +
{{message}}
{{ _("Review the submission request")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body %} {%- block plain_body -%} - {{ _("The record '{record_title}' was submitted to your community '{community_title}' by '{creator_name}'.").format(record_title=record_title, community_title=community_title, creator_name=creator_name) }} + {{ _("The record '{record_title}' was submitted to your community '{community_title}' by @'{creator_name}'.").format(record_title=record_title, community_title=community_title, creator_name=creator_name) }} - {{ _("Review the submission request: {request_link}").format(request_link=request_link) }} -{%- endblock plain_body -%} +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +[{{ _("Review the submission request") }}]({{ request_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body %} {# Markdown for Slack/Mattermost/chat #} {%- block md_body -%} - {{ _("The record *{record_title}* was submitted to your community *{community_title}* by *{creator_name}*.").format(record_title=record_title, community_title=community_title, creator_name=creator_name) }} +{{ _("The record *'{record_title}'* was submitted to your community *'{community_title}'* by *@'{creator_name}'*.").format(record_title=record_title, community_title=community_title, creator_name=creator_name) }} + +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +[{{ _("Review the submission request") }}]({{ request_link }}) - [{{ _("Review the submission request") }}]({{ request_link }}) -{%- endblock md_body -%} +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body %} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/grant-user-access.create.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/grant-user-access.create.jinja new file mode 100644 index 000000000..b5fe7db36 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/grant-user-access.create.jinja @@ -0,0 +1,97 @@ +{% set record = notification.context.record %} +{% set receiver = notification.context.receiver %} +{% set message = notification.context.message | safe if notification.context.message else '' %} +{% set permission = notification.context.permission %} + +{% set record_title = record.metadata.title %} +{# Determine shared link #} +{%- if not record.is_published and permission == "preview" -%} + {% set shared_link = record.links.record_html + "?preview=1" %} +{%- else -%} + {% set shared_link = record.links.self_html %} +{%- endif -%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {%- if record.is_published -%} + {{ _("👤✔️ You were granted {permission} access to all versions of the record '{record_title}'").format(permission=permission, record_title=record_title) }} + {%- else -%} + {%- if record_title -%} + {{ _("👤✔️ You were granted {permission} access to draft '{record_title}'").format(permission=permission, record_title=record_title) }} + {%- else -%} + {{ _("👤✔️ You were granted {permission} access to a draft").format(permission=permission) }} + {%- endif -%} + {%- endif -%} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + {% if message %} + + {% endif %} + + + + + + + + + + +
+ {%- if record.is_published -%} + {{ _("You have now permission to {permission} all versions of the record '{record_title}'.").format(record_title=record_title, permission=permission)}} + {%- else -%} + {%- if record_title -%} + {{ _("You have now permission to {permission} the draft '{record_title}'.").format(record_title=record_title, permission=permission)}} + {%- else -%} + {{ _("You have now permission to {permission} a draft.").format(permission=permission)}} + {%- endif -%} + {%- endif -%} + + {% if message %} +
+
+ {{ _("Message:")}} + {% endif %} +
{{message}}
+ + {{ _("View the record") if record.is_published else _("View the draft") }} + +
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body -%} + +{# + Because of whitespace interpretation for plain text we have to: indent, format and strip jinja blocks (-) + just so to get the right output. This is unfortunate for code readability but required for output. +#} +{%- block plain_body -%} +{%- if record.is_published -%} + {{ _("You have now permission to {permission} all versions of the record '{record_title}'.").format(record_title=record_title, permission=permission)}} +{%- else -%} + {%- if record_title -%} + {{ _("You have now permission to {permission} the draft '{record_title}'.").format(record_title=record_title, permission=permission)}} + {%- else -%} + {{ _("You have now permission to {permission} the draft.").format(permission=permission)}} + {%- endif -%} +{%- endif -%} + +{% if message %} + +{{ _("Message:") }} + +{{ message }} +{%- endif %} + +{{ _("View the record: ") if record.is_published else _("View the draft: ") }}{{ shared_link }} + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings: ")}}{{ account_settings_link }} . +{%- endblock plain_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request-token.create.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request-token.create.jinja new file mode 100644 index 000000000..b1d9d4d33 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request-token.create.jinja @@ -0,0 +1,43 @@ +{% set access_request = notification.context.request %} +{% set record = notification.context.record %} +{% set verify_url = notification.context.verify_url %} + +{% set record_title = record.metadata.title %} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("❗️Access request for '{record_title}' requires action").format(record_title=record_title) }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + + + + + + + + +
{{ _("Please verify the email address in order to submit the access request")}}
{{ _("Verify e-mail address") }}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body -%} + +{%- block plain_body -%} +{{ _("Please verify your e-mail address via the following link in order to submit the access request for the record '%(record_title)s'.", record_title=record_title) }} + +{{ _("Verify e-mail address: %(url)s", url=verify_url ) }} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("Please verify your e-mail address via the following link in order to submit the access request for the record *%(record_title)s*.", record_title=record_title) }} + +{{ _("Verify e-mail address: %(url)s", url=verify_url ) }} +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.accept.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.accept.jinja new file mode 100644 index 000000000..d812ab062 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.accept.jinja @@ -0,0 +1,34 @@ +{% set access_request = notification.context.request %} +{% set record = access_request.topic %} +{% set access_url = notification.context.access_url %} + +{% set record_title = record.metadata.title %} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("✅ Access request for '{record_title}' was accepted.").format(record_title=record_title) }} +{%- endblock subject -%} + +{%- block html_body -%} +

+ {{ _("Your access request for '{record_title}' was accepted.").format(record_title=record_title) }} +

+ + {{ _("Access the record") }} +{%- endblock html_body -%} + +{%- block plain_body -%} +{{ _("Your access request for '{record_title}' was accepted.").format(record_title=record_title) }} + +{{ _("Access the record here: {url}").format(url=access_url) }} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("Your access request for *'{record_title}'* was accepted.").format(record_title=record_title) }} + +[{{ _("Access the record") }}]({{ access_url }}) +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.cancel.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.cancel.jinja new file mode 100644 index 000000000..05d4db072 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.cancel.jinja @@ -0,0 +1,72 @@ +{% set submission_request = notification.context.request %} +{% set record = submission_request.topic %} +{% set request_id = submission_request.id %} + +{% set record_link = record.links.self_html %} + +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("❌ Access request canceled") }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + {% if message %} + + {% endif %} + + + + + + + + + + +
{{ _("Your access request has been canceled") }} + {% if message %} + {{ _(" with the following message:")}} + {% endif %} +
{{message}}
{{ _("View the record")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body %} + +{%- block plain_body -%} +{{ _("Your access request has been canceled") }} +{% if message %} + +{{ _("with the following message:")}} +{{message}} + +{% endif %} +{{ _("View the record: ") }}{{ record_link }} + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("Your access request has been canceled") }} +{% if message %} + +{{ _("with the following message:")}} +{{message}} + +{% endif %} +[{{ _("View the record") }}]({{ record_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.decline.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.decline.jinja new file mode 100644 index 000000000..2974fd97d --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.decline.jinja @@ -0,0 +1,73 @@ +{% set submission_request = notification.context.request %} +{% set record = submission_request.topic %} +{% set request_id = submission_request.id %} + +{% set record_title = record.metadata.title %} +{% set record_link = record.links.self_html %} + +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("⛔️ Access request declined") }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + {% if message %} + + {% endif %} + + + + + + + + + + +
{{ _("The owner of '{record_title}' has declined your access request").format(record_title=record_title)}} + {% if message %} + {{ _(" with the following message:")}} + {% endif %} +
{{message}}
{{ _("View the record")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body %} + +{%- block plain_body -%} +{{ _("The owner of '{record_title}' has rejected your access request").format(record_title=record_title)}} +{% if message %} + +{{ _("with the following message:")}} +{{message}} + +{% endif %} +{{ _("View the record: ") }}({{ record_link }} + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("The owner of *{record_title}* has rejected your access request").format(record_title=record_title)}} +{% if message %} + +{{ _("with the following message:")}} +{{message}} + +{% endif %} +[{{ _("View the record") }}]({{ record_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.submit.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.submit.jinja new file mode 100644 index 000000000..a3d2f1a31 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.submit.jinja @@ -0,0 +1,56 @@ +{% set access_request = notification.context.request %} +{% set creator_email = access_request.created_by %} +{% set record = access_request.topic %} + +{% set record_title = record.metadata.title %} +{% set request_id = access_request.id %} +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("📥 New access request for your record '{record_title}'").format(record_title=record_title) }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + + + + + + + + + + + +
{{ _("An access request was submitted for your record '{record_title}'.").format(record_title=record_title) }}
{{ _("The requestor's e-mail address: {email}").format(email=creator_email) }}
{{ _("See request details")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body -%} + +{%- block plain_body -%} +{{ _("An access request was submitted for your record.") }} + +[{{ _("See request details") }}]({{ request_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("An access request was submitted for your record.") }} + +[{{ _("See request details") }}]({{ request_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.submitted.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.submitted.jinja new file mode 100644 index 000000000..b6920ff74 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/guest-access-request.submitted.jinja @@ -0,0 +1,48 @@ +{% set access_request = notification.context.request %} +{% set request_id = access_request.id %} +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} +{%- block subject -%} + {{ _("📥 Your access request was submitted successfully") }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + + + + + + + + +
{{ _("Your access request was submitted successfully. The request details are available at:") }}
{{ _("View request details")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body -%} + +{%- block plain_body -%} +{{ _("Your access request was submitted successfully. The request details are available at:") }} + +{{ _("View request details: ") }}{{ request_link }} + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} {{ account_settings_link }} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("Your access request was submitted successfully. The request details are available at:") }} + +[{{ _("View request details") }}]({{ request_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} {{ account_settings_link }} +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.accept.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.accept.jinja new file mode 100644 index 000000000..fdf0e8712 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.accept.jinja @@ -0,0 +1,67 @@ +{% set access_request = notification.context.request %} +{% set creator = access_request.created_by %} +{% set record = access_request.topic %} + +{% set record_title = record.metadata.title %} +{% set record_link = record.links.self_html %} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("✅ Access request accepted") }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + {% if message %} + + {% endif %} + + + + + + + + + + +
{{ _("The owner of '{record_title}' has accepted your access request").format(record_title=record_title)}} + {% if message %} + {{ _(" with the following message:")}} + {% endif %} +
{{message}}
{{ _("View the record")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body -%} + +{%- block plain_body -%} +{{ _("The owner of '{record_title}' has accepted your access request").format(record_title=record_title)}} + +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +[{{ _("View the record") }}]({{ record_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("The owner of *{record_title}* has accepted your access request").format(record_title=record_title)}} + +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +[{{ _("View the record") }}]({{ record_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.cancel.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.cancel.jinja new file mode 100644 index 000000000..c2b0937e5 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.cancel.jinja @@ -0,0 +1,77 @@ +{% set submission_request = notification.context.request %} +{% set community = submission_request.receiver %} +{% set creator = submission_request.created_by %} +{% set record = submission_request.topic %} +{% set request_id = submission_request.id %} +{% set executing_user = notification.context.executing_user %} + +{% set community_title = community.metadata.title %} +{% set record_title = record.metadata.title %} +{% set cancel_name = executing_user.username or executing_user.profile.full_name %} + +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("❌ Access request canceled") }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + {% if message %} + + {% endif %} + + + + + + + + + + +
{{ _("Your access request has been canceled by {cancel_name}").format(cancel_name=cancel_name)}} + {% if message %} + {{ _(" with the following message:")}} + {% endif %} +
{{message}}
{{ _("View the record")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body %} + +{%- block plain_body -%} +{{_("Your access request has been canceled by {cancel_name}").format(cancel_name=cancel_name)}} +{% if message %} + +{{ _("with the following message:")}} +{{message}} + +{% endif %} +[{{ _("View the record") }}]({{ record_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{_("Your access request has been canceled by {cancel_name}").format(cancel_name=cancel_name)}} +{% if message %} + +{{ _("with the following message:")}} +{{message}} + +{% endif %} +[{{ _("View the record") }}]({{ record_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.decline.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.decline.jinja new file mode 100644 index 000000000..a55690477 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.decline.jinja @@ -0,0 +1,72 @@ +{% set submission_request = notification.context.request %} +{% set record = submission_request.topic %} +{% set request_id = submission_request.id %} + +{% set record_title = record.metadata.title %} + +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("⛔️ Access request declined") }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + {% if message %} + + {% endif %} + + + + + + + + + + +
{{ _("The owner of '{record_title}' has declined your access request").format(record_title=record_title)}} + {% if message %} + {{ _(" with the following message:")}} + {% endif %} +
{{message}}
{{ _("View the record")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body %} + +{%- block plain_body -%} +{{ _("The owner of '{record_title}' has rejected your access request").format(record_title=record_title)}} + +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +[{{ _("View the record") }}]({{ record_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("The owner of *{record_title}* has rejected your access request").format(record_title=record_title)}} + +{% if message %} +{{ _("with the following message:")}} +{{message}} +{% endif %} + +[{{ _("View the record") }}]({{ record_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body -%} diff --git a/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.submit.jinja b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.submit.jinja new file mode 100644 index 000000000..b45e143c9 --- /dev/null +++ b/invenio_rdm_records/templates/semantic-ui/invenio_notifications/user-access-request.submit.jinja @@ -0,0 +1,56 @@ +{% set access_request = notification.context.request %} +{% set creator = access_request.created_by %} +{% set record = access_request.topic %} + +{% set record_title = record.metadata.title %} +{% set request_id = access_request.id %} +{# TODO: use request.links.self_html when issue issue is resolved: https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 #} +{% set request_link = "{ui}/me/requests/{id}".format( + ui=config.SITE_UI_URL, id=request_id + ) +%} +{% set account_settings_link = "{ui}/account/settings/notifications".format( + ui=config.SITE_UI_URL + ) +%} + +{%- block subject -%} + {{ _("📥 New access request for your record '{record_title}'").format(record_title=record_title) }} +{%- endblock subject -%} + +{%- block html_body -%} + + + + + + + + + + + + + + + + +
{{ _("An access request was submitted for your record '{record_title}'.").format(record_title=record_title) }}
{{ _("The requestor's e-mail address: {email}").format(email=creator.email) }}
{{ _("See request details")}}
_
{{ _("This is an auto-generated message. To manage notifications, visit your")}} {{ _("account settings")}}.
+{%- endblock html_body -%} + +{%- block plain_body -%} +{{ _("An access request was submitted for your record.") }} + +[{{ _("See request details") }}]({{ request_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock plain_body -%} + +{# Markdown for Slack/Mattermost/chat #} +{%- block md_body -%} +{{ _("An access request was submitted for your record.") }} + +[{{ _("See request details") }}]({{ request_link }}) + +{{ _("This is an auto-generated message. To manage notifications, visit your account settings")}} +{%- endblock md_body -%} diff --git a/invenio_rdm_records/tokens/errors.py b/invenio_rdm_records/tokens/errors.py index 11ab701e5..dd99e0341 100644 --- a/invenio_rdm_records/tokens/errors.py +++ b/invenio_rdm_records/tokens/errors.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Resource access tokens module errors.""" + from invenio_i18n import _ from invenio_rest.errors import RESTException @@ -19,25 +20,43 @@ class ResourceAccessTokenError(RESTException): class MissingTokenIDError(ResourceAccessTokenError): """Resource access token error for missing token ID.""" - description = _('Missing "kid" key with personal access token ID in JWT header.') + description = _( + 'Missing "kid" key with personal access token ID in JWT header of ' + "resource access token." + ) class InvalidTokenIDError(ResourceAccessTokenError): """Resource access token error for invalid token ID.""" - description = _('"kid" JWT header value not a valid personal access token ID.') + description = _( + '"kid" JWT header value of resource access token not a valid personal ' + "access token ID." + ) + + +class TokenDecodeError(ResourceAccessTokenError): + """Resource access token error for token decoding errors.""" + + description = _("Failed to decode resource access token.") class InvalidTokenError(ResourceAccessTokenError): """Resource access token error for invalid token.""" - description = _("The token is invalid.") + description = _("The resource access token is invalid.") + + +class InvalidTokenSubjectError(ResourceAccessTokenError): + """Resource access token error for invalid subject of a token.""" + + description = _("The resource access token subject is invalid.") class ExpiredTokenError(InvalidTokenError): """Resource access token error for expired token.""" - description = _("The token is expired.") + description = _("The resource access token is expired.") class RATFeatureDisabledError(ResourceAccessTokenError): diff --git a/invenio_rdm_records/tokens/resource_access.py b/invenio_rdm_records/tokens/resource_access.py index 09268cd28..37ddb92c4 100644 --- a/invenio_rdm_records/tokens/resource_access.py +++ b/invenio_rdm_records/tokens/resource_access.py @@ -1,33 +1,45 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Resource access tokens API.""" -from datetime import datetime, timedelta +from datetime import datetime, timedelta, timezone import jwt from flask import current_app from invenio_oauth2server.models import Token +from marshmallow import Schema, fields from .errors import ( ExpiredTokenError, InvalidTokenError, InvalidTokenIDError, MissingTokenIDError, + TokenDecodeError, ) from .scopes import tokens_generate_scope +class SubjectSchema(Schema): + """Resource access token JWT subject schema.""" + + pid_value = fields.Str(data_key="record_id", required=True) + file_key = fields.Str(data_key="file", missing=None) + permission = fields.Str(data_key="access", missing=None) + + def validate_rat(token): """Decodes a JWT token's payload and signer and performs validation.""" # Retrieve token ID from "kid" try: headers = jwt.get_unverified_header(token) access_token_id = headers.get("kid") + except jwt.DecodeError: + raise TokenDecodeError() except jwt.InvalidTokenError: raise InvalidTokenError() @@ -51,17 +63,29 @@ def validate_rat(token): "RDM_RESOURCE_ACCESS_TOKENS_WHITELISTED_JWT_ALGORITHMS", ["HS256", "HS384", "HS512"], ), - options={"require_iat": True}, + options={ + # Based on the JWT spec (https://datatracker.ietf.org/doc/html/rfc7519#section-4.1.2) + # the "sub" claim has to be a string. However, we are not enforcing this + # and are assuming that the "sub" claim is an object/dictionary. + # PyJWT v2.10.0 started enforcing this and we are disabling this check. + "verify_sub": False, + "require": ["iat", "sub"], + }, ) + if not isinstance(payload.get("sub"), dict): + raise InvalidTokenError() + token_lifetime = current_app.config.get( "RDM_RESOURCE_ACCESS_TOKENS_JWT_LIFETIME", timedelta(minutes=30) ) # Verify that the token is not expired based on its issue time - issued_at = datetime.utcfromtimestamp(payload["iat"]) - if (issued_at + token_lifetime) < datetime.utcnow(): + issued_at = datetime.fromtimestamp(payload["iat"], tz=timezone.utc) + if (issued_at + token_lifetime) < datetime.now(timezone.utc): raise ExpiredTokenError() + except jwt.DecodeError: + raise TokenDecodeError() except jwt.InvalidTokenError: raise InvalidTokenError() diff --git a/invenio_rdm_records/translations/messages.pot b/invenio_rdm_records/translations/messages.pot index a25874b56..4e118269a 100644 --- a/invenio_rdm_records/translations/messages.pot +++ b/invenio_rdm_records/translations/messages.pot @@ -1,242 +1,430 @@ # Translations template for invenio-rdm-records. -# Copyright (C) 2022 CERN +# Copyright (C) 2024 CERN # This file is distributed under the same license as the invenio-rdm-records # project. -# FIRST AUTHOR , 2022. +# FIRST AUTHOR , 2024. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: invenio-rdm-records 0.39.1\n" +"Project-Id-Version: invenio-rdm-records 11.7.0\n" "Report-Msgid-Bugs-To: info@inveniosoftware.org\n" -"POT-Creation-Date: 2022-10-12 09:35+0000\n" +"POT-Creation-Date: 2024-08-14 06:30+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: Babel 2.10.3\n" +"Generated-By: Babel 2.16.0\n" -#: invenio_rdm_records/config.py:52 +#: invenio_rdm_records/config.py:75 invenio_rdm_records/config.py:330 +#: invenio_rdm_records/config.py:337 invenio_rdm_records/config.py:360 +#: tests/conftest.py:268 tests/conftest.py:275 +msgid "DOI" +msgstr "" + +#: invenio_rdm_records/config.py:342 tests/conftest.py:280 +msgid "OAI ID" +msgstr "" + +#: invenio_rdm_records/config.py:388 invenio_rdm_records/config.py:398 +#: tests/conftest.py:289 +msgid "Concept DOI" +msgstr "" + +#: invenio_rdm_records/config.py:56 msgid "ORCID" msgstr "" -#: invenio_rdm_records/config.py:53 invenio_rdm_records/config.py:92 +#: invenio_rdm_records/config.py:57 invenio_rdm_records/config.py:86 msgid "ISNI" msgstr "" -#: invenio_rdm_records/config.py:54 +#: invenio_rdm_records/config.py:58 msgid "GND" msgstr "" -#: invenio_rdm_records/config.py:55 +#: invenio_rdm_records/config.py:59 msgid "ROR" msgstr "" -#: invenio_rdm_records/config.py:60 +#: invenio_rdm_records/config.py:63 msgid "ARK" msgstr "" -#: invenio_rdm_records/config.py:61 +#: invenio_rdm_records/config.py:64 msgid "arXiv" msgstr "" -#: invenio_rdm_records/config.py:63 +#: invenio_rdm_records/config.py:66 msgid "Bibcode" msgstr "" -#: invenio_rdm_records/config.py:67 invenio_rdm_records/config.py:277 -#: invenio_rdm_records/config.py:284 invenio_rdm_records/config.py:308 -#: tests/conftest.py:280 tests/conftest.py:287 -msgid "DOI" +#: invenio_rdm_records/config.py:71 +msgid "Crossref Funder ID" msgstr "" -#: invenio_rdm_records/config.py:68 +#: invenio_rdm_records/config.py:76 msgid "EAN13" msgstr "" -#: invenio_rdm_records/config.py:69 +#: invenio_rdm_records/config.py:77 msgid "EISSN" msgstr "" -#: invenio_rdm_records/config.py:71 +#: invenio_rdm_records/config.py:78 +msgid "GRID" +msgstr "" + +#: invenio_rdm_records/config.py:80 msgid "Handle" msgstr "" -#: invenio_rdm_records/config.py:75 +#: invenio_rdm_records/config.py:84 msgid "IGSN" msgstr "" -#: invenio_rdm_records/config.py:76 +#: invenio_rdm_records/config.py:85 +#: invenio_rdm_records/contrib/imprint/custom_fields.py:83 +#: invenio_rdm_records/templates/semantic-ui/imprint.html:12 msgid "ISBN" msgstr "" -#: invenio_rdm_records/config.py:77 +#: invenio_rdm_records/config.py:87 +#: invenio_rdm_records/contrib/journal/custom_fields.py:103 +#: invenio_rdm_records/templates/semantic-ui/journal.html:23 msgid "ISSN" msgstr "" -#: invenio_rdm_records/config.py:78 +#: invenio_rdm_records/config.py:88 msgid "ISTC" msgstr "" -#: invenio_rdm_records/config.py:79 +#: invenio_rdm_records/config.py:89 msgid "LISSN" msgstr "" -#: invenio_rdm_records/config.py:80 +#: invenio_rdm_records/config.py:90 msgid "LSID" msgstr "" -#: invenio_rdm_records/config.py:81 +#: invenio_rdm_records/config.py:91 msgid "PMID" msgstr "" -#: invenio_rdm_records/config.py:82 +#: invenio_rdm_records/config.py:92 msgid "PURL" msgstr "" -#: invenio_rdm_records/config.py:83 +#: invenio_rdm_records/config.py:93 msgid "UPC" msgstr "" -#: invenio_rdm_records/config.py:84 +#: invenio_rdm_records/config.py:94 msgid "URL" msgstr "" -#: invenio_rdm_records/config.py:85 +#: invenio_rdm_records/config.py:95 msgid "URN" msgstr "" -#: invenio_rdm_records/config.py:86 +#: invenio_rdm_records/config.py:96 msgid "W3ID" msgstr "" -#: invenio_rdm_records/config.py:93 -msgid "GRID" -msgstr "" - -#: invenio_rdm_records/config.py:94 -msgid "Crossref Funder ID" -msgstr "" - -#: invenio_rdm_records/config.py:95 +#: invenio_rdm_records/config.py:97 msgid "Other" msgstr "" -#: invenio_rdm_records/config.py:98 +#: invenio_rdm_records/config.py:102 msgid "Wikidata" msgstr "" -#: invenio_rdm_records/config.py:99 +#: invenio_rdm_records/config.py:103 msgid "GeoNames" msgstr "" -#: invenio_rdm_records/config.py:167 +#: invenio_rdm_records/config.py:207 msgid "Best match" msgstr "" -#: invenio_rdm_records/config.py:171 +#: invenio_rdm_records/config.py:211 msgid "Newest" msgstr "" -#: invenio_rdm_records/config.py:175 +#: invenio_rdm_records/config.py:215 msgid "Oldest" msgstr "" -#: invenio_rdm_records/config.py:179 +#: invenio_rdm_records/config.py:219 msgid "Version" msgstr "" -#: invenio_rdm_records/config.py:183 +#: invenio_rdm_records/config.py:223 msgid "Recently updated" msgstr "" -#: invenio_rdm_records/config.py:187 +#: invenio_rdm_records/config.py:227 msgid "Least recently updated" msgstr "" -#: invenio_rdm_records/administration/views/oai.py:38 -#: invenio_rdm_records/administration/views/oai.py:67 -#: invenio_rdm_records/administration/views/oai.py:107 -#: invenio_rdm_records/administration/views/oai.py:147 -#: invenio_rdm_records/config.py:245 -msgid "Set name" +#: invenio_rdm_records/config.py:231 +msgid "Most viewed" msgstr "" -#: invenio_rdm_records/administration/views/oai.py:37 -#: invenio_rdm_records/administration/views/oai.py:72 -#: invenio_rdm_records/administration/views/oai.py:112 -#: invenio_rdm_records/administration/views/oai.py:148 -#: invenio_rdm_records/config.py:249 -msgid "Set spec" +#: invenio_rdm_records/config.py:234 +msgid "Most downloaded" msgstr "" #: invenio_rdm_records/administration/views/oai.py:40 +#: invenio_rdm_records/administration/views/oai.py:69 +#: invenio_rdm_records/administration/views/oai.py:109 +#: invenio_rdm_records/administration/views/oai.py:149 +#: invenio_rdm_records/config.py:298 +msgid "Set name" +msgstr "" + +#: invenio_rdm_records/administration/views/oai.py:39 +#: invenio_rdm_records/administration/views/oai.py:74 +#: invenio_rdm_records/administration/views/oai.py:114 #: invenio_rdm_records/administration/views/oai.py:150 -#: invenio_rdm_records/config.py:253 -#: invenio_rdm_records/oaiserver/services/config.py:59 -msgid "Created" +#: invenio_rdm_records/config.py:302 +msgid "Set spec" msgstr "" -#: invenio_rdm_records/administration/views/oai.py:41 -#: invenio_rdm_records/administration/views/oai.py:151 -#: invenio_rdm_records/config.py:257 -#: invenio_rdm_records/oaiserver/services/config.py:63 -msgid "Updated" +#: invenio_rdm_records/administration/views/oai.py:42 +#: invenio_rdm_records/administration/views/oai.py:152 +#: invenio_rdm_records/config.py:306 +#: invenio_rdm_records/oaiserver/services/config.py:55 +msgid "Created" msgstr "" -#: invenio_rdm_records/config.py:289 tests/conftest.py:292 -msgid "OAI ID" +#: invenio_rdm_records/administration/views/oai.py:43 +#: invenio_rdm_records/administration/views/oai.py:153 +#: invenio_rdm_records/config.py:310 +#: invenio_rdm_records/oaiserver/services/config.py:59 +msgid "Updated" msgstr "" -#: invenio_rdm_records/config.py:315 +#: invenio_rdm_records/config.py:368 msgid "OAI" msgstr "" -#: invenio_rdm_records/ext.py:68 +#: invenio_rdm_records/utils.py:117 msgid "Your shared link has expired." msgstr "" -#: invenio_rdm_records/administration/views/oai.py:39 -#: invenio_rdm_records/administration/views/oai.py:80 -#: invenio_rdm_records/administration/views/oai.py:120 -#: invenio_rdm_records/administration/views/oai.py:149 +#: invenio_rdm_records/administration/views/oai.py:41 +#: invenio_rdm_records/administration/views/oai.py:82 +#: invenio_rdm_records/administration/views/oai.py:122 +#: invenio_rdm_records/administration/views/oai.py:151 msgid "Search query" msgstr "" -#: invenio_rdm_records/administration/views/oai.py:68 -#: invenio_rdm_records/administration/views/oai.py:108 +#: invenio_rdm_records/administration/views/oai.py:70 +#: invenio_rdm_records/administration/views/oai.py:110 msgid "A short human-readable string naming the set." msgstr "" -#: invenio_rdm_records/administration/views/oai.py:73 -#: invenio_rdm_records/administration/views/oai.py:113 +#: invenio_rdm_records/administration/views/oai.py:75 +#: invenio_rdm_records/administration/views/oai.py:115 msgid "" "An identifier for the set, which cannot be edited after the set is " "created." msgstr "" -#: invenio_rdm_records/administration/views/oai.py:81 -#: invenio_rdm_records/administration/views/oai.py:121 +#: invenio_rdm_records/administration/views/oai.py:83 +#: invenio_rdm_records/administration/views/oai.py:123 msgid "" "See the supported query syntax in the Search " "Guide." msgstr "" -#: invenio_rdm_records/oaiserver/services/config.py:40 +#: invenio_rdm_records/contrib/codemeta/custom_fields.py:53 +msgid "Software" +msgstr "" + +#: invenio_rdm_records/contrib/codemeta/custom_fields.py:100 +msgid "Development status" +msgstr "" + +#: invenio_rdm_records/contrib/codemeta/custom_fields.py:110 +msgid "Programming language" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:35 +msgid "Please provide a valid ISBN." +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:69 +msgid "Book / Report / Chapter" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:76 +msgid "Imprint (Book, Chapter, or Report)" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:78 +#: invenio_rdm_records/contrib/meeting/custom_fields.py:102 +#: invenio_rdm_records/templates/semantic-ui/imprint.html:7 +#: invenio_rdm_records/templates/semantic-ui/meeting.html:19 +msgid "Place" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:79 +msgid "e.g. city, country" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:80 +msgid "Place where the book or report was published" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:84 +msgid "e.g. 0-06-251587-X" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:85 +msgid "International Standard Book Number" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:88 +msgid "Book or report title" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:90 +msgid "Title of the book or report which this upload is part of" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:95 +msgid "Pagination" +msgstr "" + +#: invenio_rdm_records/contrib/imprint/custom_fields.py:96 +msgid "e.g. 15-23 or 158" +msgstr "" + +#: invenio_rdm_records/contrib/journal/custom_fields.py:37 +msgid "Please provide a valid ISSN." +msgstr "" + +#: invenio_rdm_records/contrib/journal/custom_fields.py:72 +#: invenio_rdm_records/contrib/journal/custom_fields.py:79 +msgid "Journal" +msgstr "" + +#: invenio_rdm_records/contrib/journal/custom_fields.py:81 +#: invenio_rdm_records/contrib/meeting/custom_fields.py:87 +#: invenio_rdm_records/templates/semantic-ui/imprint.html:22 +#: invenio_rdm_records/templates/semantic-ui/journal.html:3 +#: invenio_rdm_records/templates/semantic-ui/meeting.html:4 +msgid "Title" +msgstr "" + +#: invenio_rdm_records/contrib/journal/custom_fields.py:83 +msgid "Title of the journal in which the article was published" +msgstr "" + +#: invenio_rdm_records/contrib/journal/custom_fields.py:88 +#: invenio_rdm_records/templates/semantic-ui/journal.html:8 +msgid "Volume" +msgstr "" + +#: invenio_rdm_records/contrib/journal/custom_fields.py:93 +#: invenio_rdm_records/templates/semantic-ui/journal.html:13 +msgid "Issue" +msgstr "" + +#: invenio_rdm_records/contrib/journal/custom_fields.py:98 +msgid "Page range or article number" +msgstr "" + +#: invenio_rdm_records/contrib/journal/custom_fields.py:105 +msgid "International Standard Serial Number" +msgstr "" + +#: invenio_rdm_records/contrib/journal/sort.py:14 +msgid "Journal [Newest]" +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:79 +msgid "Conference" +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:92 +#: invenio_rdm_records/templates/semantic-ui/meeting.html:9 +msgid "Acronym" +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:97 +#: invenio_rdm_records/templates/semantic-ui/meeting.html:14 +msgid "Dates" +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:98 +msgid "e.g. 21-22 November 2022." +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:104 +msgid "Location where the conference took place." +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:107 +#: invenio_rdm_records/templates/semantic-ui/meeting.html:24 +msgid "Website" +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:112 +#: invenio_rdm_records/templates/semantic-ui/meeting.html:29 +msgid "Session" +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:113 +msgid "e.g. VI" +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:114 +msgid "Session within the conference." +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:117 +msgid "Part" +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:118 +msgid "e.g. 1" +msgstr "" + +#: invenio_rdm_records/contrib/meeting/custom_fields.py:119 +msgid "Part within the session." +msgstr "" + +#: invenio_rdm_records/contrib/meeting/sort.py:14 +msgid "Conference session [Newest]" +msgstr "" + +#: invenio_rdm_records/contrib/thesis/custom_fields.py:27 +#: invenio_rdm_records/contrib/thesis/custom_fields.py:33 +msgid "Thesis" +msgstr "" + +#: invenio_rdm_records/contrib/thesis/custom_fields.py:36 +msgid "Awarding university" +msgstr "" + +#: invenio_rdm_records/oaiserver/services/config.py:36 msgid "Ascending" msgstr "" -#: invenio_rdm_records/oaiserver/services/config.py:44 +#: invenio_rdm_records/oaiserver/services/config.py:40 msgid "Descending" msgstr "" -#: invenio_rdm_records/oaiserver/services/config.py:51 +#: invenio_rdm_records/oaiserver/services/config.py:47 msgid "Name" msgstr "" -#: invenio_rdm_records/oaiserver/services/config.py:55 +#: invenio_rdm_records/oaiserver/services/config.py:51 msgid "Spec" msgstr "" @@ -256,193 +444,397 @@ msgstr "" msgid "The set with id {id} is not editable." msgstr "" -#: invenio_rdm_records/oaiserver/services/services.py:74 +#: invenio_rdm_records/oaiserver/services/services.py:82 msgid "The spec must not start with any of the following list '{prefix}'." msgstr "" -#: invenio_rdm_records/oaiserver/services/services.py:86 +#: invenio_rdm_records/oaiserver/services/services.py:94 msgid "The spec must only consist of letters, numbers or {marks}." msgstr "" -#: invenio_rdm_records/records/systemfields/draft_status.py:82 +#: invenio_rdm_records/records/systemfields/draft_status.py:83 msgid "Unknown draft status for review: {reviewstatus}." msgstr "" -#: invenio_rdm_records/records/systemfields/draft_status.py:88 +#: invenio_rdm_records/records/systemfields/draft_status.py:89 msgid "Unknown draft status." msgstr "" -#: invenio_rdm_records/requests/community_submission.py:131 +#: invenio_rdm_records/requests/community_inclusion.py:99 +msgid "Community inclusion" +msgstr "" + +#: invenio_rdm_records/requests/community_submission.py:179 msgid "Community submission" msgstr "" -#: invenio_rdm_records/resources/config.py:107 +#: invenio_rdm_records/requests/community_transfer.py:27 +msgid "Community transfer" +msgstr "" + +#: invenio_rdm_records/requests/access/requests.py:244 +#: invenio_rdm_records/requests/access/requests.py:276 +msgid "Access request" +msgstr "" + +#: invenio_rdm_records/resources/config.py:198 msgid "Citation string style not found." msgstr "" -#: invenio_rdm_records/resources/config.py:113 +#: invenio_rdm_records/resources/config.py:204 msgid "Review for draft not found" msgstr "" -#: invenio_rdm_records/resources/serializers/datacite/schema.py:248 +#: invenio_rdm_records/resources/config.py:242 +#: invenio_rdm_records/resources/config.py:269 +#: invenio_rdm_records/resources/config.py:318 +msgid "Record not found" +msgstr "" + +#: invenio_rdm_records/resources/config.py:246 +#: invenio_rdm_records/resources/config.py:273 +#: invenio_rdm_records/resources/config.py:322 +msgid "Record deleted" +msgstr "" + +#: invenio_rdm_records/resources/config.py:371 +msgid "No secret link found with the given ID." +msgstr "" + +#: invenio_rdm_records/resources/config.py:379 +msgid "No grant found with the given ID." +msgstr "" + +#: invenio_rdm_records/resources/config.py:392 +msgid "No grant found by given user id." +msgstr "" + +#: invenio_rdm_records/resources/config.py:399 +msgid "No grant found by given group id." +msgstr "" + +#: invenio_rdm_records/resources/iiif.py:99 +msgid "Image size limit exceeded" +msgstr "" + +#: invenio_rdm_records/resources/iiif.py:105 +msgid "" +"The record associated with this file has been deleted. See deletion " +"notice." +msgstr "" + +#: invenio_rdm_records/resources/deserializers/rocrate/__init__.py:31 +msgid "Invalid RO-Crate metadata format, missing '@graph' key." +msgstr "" + +#: invenio_rdm_records/resources/deserializers/rocrate/schema.py:32 +#: invenio_rdm_records/services/schemas/metadata.py:362 +msgid "Missing data for required field." +msgstr "" + +#: invenio_rdm_records/resources/deserializers/rocrate/schema.py:101 +msgid "'@type' must be 'Person' or 'Organization'" +msgstr "" + +#: invenio_rdm_records/resources/deserializers/rocrate/schema.py:138 +msgid "Format must be a list of strings." +msgstr "" + +#: invenio_rdm_records/resources/serializers/datacite/schema.py:273 msgid "Invalid publication date value." msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:36 -#: invenio_rdm_records/services/facets.py:26 +#: invenio_rdm_records/resources/serializers/iiif/schema.py:167 +msgid "Current Page Order" +msgstr "" + +#: invenio_rdm_records/resources/serializers/iiif/schema.py:194 +msgid "Manifest generated by InvenioRDM" +msgstr "" + +#: invenio_rdm_records/resources/serializers/iiif/schema.py:213 +msgid "Publication Date" +msgstr "" + +#: invenio_rdm_records/resources/serializers/ui/fields.py:35 +#: invenio_rdm_records/services/facets.py:32 msgid "Open" msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:37 -#: invenio_rdm_records/services/facets.py:27 +#: invenio_rdm_records/resources/serializers/ui/fields.py:36 +#: invenio_rdm_records/services/facets.py:33 msgid "Embargoed" msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:38 -#: invenio_rdm_records/services/facets.py:28 +#: invenio_rdm_records/resources/serializers/ui/fields.py:37 +#: invenio_rdm_records/services/facets.py:34 msgid "Restricted" msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:39 -#: invenio_rdm_records/services/facets.py:29 +#: invenio_rdm_records/resources/serializers/ui/fields.py:38 +#: invenio_rdm_records/services/facets.py:35 msgid "Metadata-only" msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:66 +#: invenio_rdm_records/resources/serializers/ui/fields.py:65 msgid "The record and files are publicly accessible." msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:67 +#: invenio_rdm_records/resources/serializers/ui/fields.py:66 msgid "No files are available for this record." msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:76 +#: invenio_rdm_records/resources/serializers/ui/fields.py:75 #, python-format msgid "The record and files will be made publicly available on %(date)s." msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:81 +#: invenio_rdm_records/resources/serializers/ui/fields.py:80 msgid "The record and files are restricted to users with access." msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:90 +#: invenio_rdm_records/resources/serializers/ui/fields.py:89 #, python-format msgid "The record will be made publicly available on %(date)s." msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:94 +#: invenio_rdm_records/resources/serializers/ui/fields.py:93 msgid "The record is restricted to users with access." msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:102 +#: invenio_rdm_records/resources/serializers/ui/fields.py:101 #, python-format msgid "The files will be made publicly available on %(date)s." msgstr "" -#: invenio_rdm_records/resources/serializers/ui/fields.py:106 +#: invenio_rdm_records/resources/serializers/ui/fields.py:105 msgid "" "The record is publicly accessible, but files are restricted to users with" " access." msgstr "" -#: invenio_rdm_records/services/errors.py:34 +#: invenio_rdm_records/resources/serializers/ui/schema.py:102 +msgid "Unknown" +msgstr "" + +#: invenio_rdm_records/resources/serializers/ui/schema.py:109 +msgid "System (automatic)" +msgstr "" + +#: invenio_rdm_records/resources/serializers/ui/schema.py:111 +msgid "Admin" +msgstr "" + +#: invenio_rdm_records/services/errors.py:21 +msgid "Grant for this user/role already exists within this record." +msgstr "" + +#: invenio_rdm_records/services/errors.py:52 +#, python-format +msgid "Embargo could not be lifted for record: %(record_id)s" +msgstr "" + +#: invenio_rdm_records/services/errors.py:65 msgid "Review not found." msgstr "" -#: invenio_rdm_records/services/errors.py:51 -msgid "Record submitted to restricted community cannot be public." +#: invenio_rdm_records/services/errors.py:83 +msgid "The record is already included in this community." +msgstr "" + +#: invenio_rdm_records/services/errors.py:93 +msgid "A public record cannot be included in a restricted community." +msgstr "" + +#: invenio_rdm_records/services/errors.py:106 +msgid "There is already an open inclusion request for this community." +msgstr "" + +#: invenio_rdm_records/services/errors.py:161 +#, python-format +msgid "The record %(rec_id)s in not included in the community %(com_id)s." msgstr "" -#: invenio_rdm_records/services/facets.py:24 +#: invenio_rdm_records/services/errors.py:178 +#, python-format +msgid "Cannot modify community visibility: %(reason)s" +msgstr "" + +#: invenio_rdm_records/services/errors.py:196 +#, python-format +msgid "Identical access requests already exist: %(request_id)s" +msgstr "" + +#: invenio_rdm_records/services/errors.py:201 +msgid "The access request is a duplicate" +msgstr "" + +#: invenio_rdm_records/services/facets.py:30 msgid "Access status" msgstr "" -#: invenio_rdm_records/services/facets.py:36 +#: invenio_rdm_records/services/facets.py:42 msgid "Status" msgstr "" -#: invenio_rdm_records/services/facets.py:37 +#: invenio_rdm_records/services/facets.py:43 msgid "Published" msgstr "" -#: invenio_rdm_records/services/facets.py:37 +#: invenio_rdm_records/services/facets.py:43 msgid "Unpublished" msgstr "" -#: invenio_rdm_records/services/facets.py:43 +#: invenio_rdm_records/services/facets.py:49 +msgid "File type" +msgstr "" + +#: invenio_rdm_records/services/facets.py:56 msgid "Languages" msgstr "" -#: invenio_rdm_records/services/facets.py:52 +#: invenio_rdm_records/services/facets.py:65 msgid "Resource types" msgstr "" -#: invenio_rdm_records/services/facets.py:60 -#: invenio_rdm_records/services/facets.py:66 +#: invenio_rdm_records/services/facets.py:82 +#: invenio_rdm_records/services/facets.py:92 +#: invenio_rdm_records/services/facets.py:108 msgid "Subjects" msgstr "" +#: invenio_rdm_records/services/access/service.py:129 +#: invenio_rdm_records/services/access/service.py:163 +msgid "Expiration date must be set to the future" +msgstr "" + +#: invenio_rdm_records/services/access/service.py:157 +msgid "Cannot postpone expiration of links" +msgstr "" + +#: invenio_rdm_records/services/access/service.py:184 +msgid "An access permission level is required" +msgstr "" + +#: invenio_rdm_records/services/access/service.py:199 +msgid "Invalid access permission level." +msgstr "" + +#: invenio_rdm_records/services/access/service.py:409 +#: invenio_rdm_records/services/access/service.py:514 +#: invenio_rdm_records/services/access/service.py:939 +msgid "Could not find the specified subject." +msgstr "" + +#: invenio_rdm_records/services/access/service.py:734 +msgid "Verification link sent out, please check your e-mail inbox" +msgstr "" + +#: invenio_rdm_records/services/communities/components.py:53 +msgid "Cannot restrict a community with public records." +msgstr "" + +#: invenio_rdm_records/services/communities/service.py:171 +msgid "Community not found." +msgstr "" + +#: invenio_rdm_records/services/community_inclusion/service.py:71 +msgid "" +"This request has been automatically accepted, as the uploader can submit " +"to community directly without review." +msgstr "" + +#: invenio_rdm_records/services/community_records/service.py:131 +msgid "The record does not exist." +msgstr "" + +#: invenio_rdm_records/services/community_records/service.py:138 +msgid "Permission denied." +msgstr "" + +#: invenio_rdm_records/services/components/access.py:39 +msgid "You don't have permissions to manage record access." +msgstr "" + #: invenio_rdm_records/services/components/review.py:36 msgid "" "You cannot delete a draft with an open review. Please cancel the review " "first." msgstr "" -#: invenio_rdm_records/services/pids/manager.py:79 +#: invenio_rdm_records/services/github/metadata.py:59 +msgid "No description provided." +msgstr "" + +#: invenio_rdm_records/services/github/metadata.py:167 +msgid "Citation schema is needed to load citation metadata." +msgstr "" + +#: invenio_rdm_records/services/pids/errors.py:21 +msgid "No configuration defined for PIDs {schemes}" +msgstr "" + +#: invenio_rdm_records/services/pids/manager.py:86 msgid "Invalid {scheme}" msgstr "" -#: invenio_rdm_records/services/pids/manager.py:130 +#: invenio_rdm_records/services/pids/manager.py:162 msgid "A PID already exists for type {scheme}" msgstr "" -#: invenio_rdm_records/services/pids/manager.py:137 +#: invenio_rdm_records/services/pids/manager.py:169 msgid "External identifier value is required." msgstr "" -#: invenio_rdm_records/services/pids/manager.py:172 -#: invenio_rdm_records/services/pids/manager.py:198 +#: invenio_rdm_records/services/pids/manager.py:204 +#: invenio_rdm_records/services/pids/manager.py:230 msgid "PID not found for type {scheme}" msgstr "" -#: invenio_rdm_records/services/pids/manager.py:216 +#: invenio_rdm_records/services/pids/manager.py:252 msgid "Cannot discard a reserved or registered persistent identifier." msgstr "" -#: invenio_rdm_records/services/pids/providers/base.py:158 +#: invenio_rdm_records/services/pids/providers/base.py:175 msgid "{pid_type}:{identifier} already exists." msgstr "" -#: invenio_rdm_records/services/pids/providers/external.py:42 -msgid "The prefix '{prefix}' is administrated locally." +#: invenio_rdm_records/services/pids/providers/datacite.py:281 +msgid "Missing publisher field required for DOI registration." msgstr "" -#: invenio_rdm_records/services/pids/providers/external.py:80 +#: invenio_rdm_records/services/pids/providers/external.py:44 +msgid "" +"The prefix '{prefix}' is managed by {sitename}. Please supply an external" +" DOI or select 'No' to have a DOI generated for you." +msgstr "" + +#: invenio_rdm_records/services/pids/providers/external.py:91 msgid "Missing {scheme} for required field." msgstr "" -#: invenio_rdm_records/services/review/service.py:57 -msgid "A review already exists for this record" +#: invenio_rdm_records/services/review/service.py:52 +msgid "Invalid review type." msgstr "" -#: invenio_rdm_records/services/review/service.py:61 -msgid "You cannot create a review for an already published record." +#: invenio_rdm_records/services/review/service.py:59 +msgid "A review already exists for this record" msgstr "" -#: invenio_rdm_records/services/review/service.py:67 -msgid "Invalid review type." +#: invenio_rdm_records/services/review/service.py:63 +msgid "You cannot create a review for an already published record." msgstr "" -#: invenio_rdm_records/services/review/service.py:125 +#: invenio_rdm_records/services/review/service.py:131 msgid "You cannot delete a review for a draft that has already been published." msgstr "" -#: invenio_rdm_records/services/review/service.py:132 +#: invenio_rdm_records/services/review/service.py:138 msgid "An open review cannot be deleted." msgstr "" -#: invenio_rdm_records/services/schemas/__init__.py:34 -msgid "Invalid persistent identifier scheme." +#: invenio_rdm_records/services/review/service.py:157 +msgid "Must be a boolean, true or false" msgstr "" #: invenio_rdm_records/services/schemas/access.py:39 @@ -457,74 +849,130 @@ msgstr "" msgid "'{field_name}' must be either 'public' or 'restricted'" msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:78 +#: invenio_rdm_records/services/schemas/community_records.py:34 +msgid "Too many records passed, {max_number} max allowed." +msgstr "" + +#: invenio_rdm_records/services/schemas/community_records.py:51 +msgid "Duplicated records {rec_ids}." +msgstr "" + +#: invenio_rdm_records/services/schemas/metadata.py:73 msgid "Only one value is accepted." msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:80 +#: invenio_rdm_records/services/schemas/metadata.py:75 msgid "Not a valid locale." msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:92 -#: invenio_rdm_records/services/schemas/metadata.py:96 +#: invenio_rdm_records/services/schemas/metadata.py:87 +#: invenio_rdm_records/services/schemas/metadata.py:91 msgid "Invalid value. Choose one of {NAMES}." msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:119 +#: invenio_rdm_records/services/schemas/metadata.py:114 msgid "Family name cannot be blank." msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:124 +#: invenio_rdm_records/services/schemas/metadata.py:119 msgid "Name cannot be blank." msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:190 -#: invenio_rdm_records/services/schemas/metadata.py:202 +#: invenio_rdm_records/services/schemas/metadata.py:155 +msgid "Duplicated affiliations: " +msgstr "" + +#: invenio_rdm_records/services/schemas/metadata.py:214 +#: invenio_rdm_records/services/schemas/metadata.py:226 msgid "Not a valid URL." msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:222 +#: invenio_rdm_records/services/schemas/metadata.py:246 msgid "An existing id or a free text title must be present" msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:226 +#: invenio_rdm_records/services/schemas/metadata.py:250 msgid "" "Only an existing id or free text title/description/link is accepted, but " "not both cases at the same time" msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:316 +#: invenio_rdm_records/services/schemas/metadata.py:340 msgid "" "At least one of ['geometry', 'place', identifiers', " "'description'] must be present." msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:338 -msgid "Missing data for required field." -msgstr "" - -#: invenio_rdm_records/services/schemas/metadata.py:356 +#: invenio_rdm_records/services/schemas/metadata.py:380 msgid "Size cannot be a blank string." msgstr "" -#: invenio_rdm_records/services/schemas/metadata.py:359 +#: invenio_rdm_records/services/schemas/metadata.py:383 msgid "Format cannot be a blank string." msgstr "" -#: invenio_rdm_records/services/secret_links/service.py:68 -#: invenio_rdm_records/services/secret_links/service.py:100 -msgid "Expiration date must be set to the future" +#: invenio_rdm_records/services/schemas/record.py:36 +msgid "Invalid persistent identifier scheme." msgstr "" -#: invenio_rdm_records/services/secret_links/service.py:94 -msgid "Cannot postpone expiration of links" +#: invenio_rdm_records/services/schemas/record_communities.py:37 +msgid "Too many communities passed, {max_number} max allowed." msgstr "" -#: invenio_rdm_records/services/secret_links/service.py:121 -msgid "An access permission level is required" +#: invenio_rdm_records/services/schemas/record_communities.py:54 +msgid "Duplicated communities {com_ids}." msgstr "" -#: invenio_rdm_records/services/secret_links/service.py:134 -msgid "Invalid access permission level." +#: invenio_rdm_records/services/schemas/parent/__init__.py:28 +msgid "Invalid persistent identifier scheme {scheme}." +msgstr "" + +#: invenio_rdm_records/templates/semantic-ui/imprint.html:2 +msgid "Publisher" +msgstr "" + +#: invenio_rdm_records/templates/semantic-ui/imprint.html:17 +#: invenio_rdm_records/templates/semantic-ui/journal.html:18 +msgid "Pages" +msgstr "" + +#: invenio_rdm_records/templates/semantic-ui/meeting.html:34 +msgid "Session part" +msgstr "" + +#: invenio_rdm_records/tokens/errors.py:23 +msgid "" +"Missing \"kid\" key with personal access token ID in JWT header of " +"resource access token." +msgstr "" + +#: invenio_rdm_records/tokens/errors.py:32 +msgid "" +"\"kid\" JWT header value of resource access token not a valid personal " +"access token ID." +msgstr "" + +#: invenio_rdm_records/tokens/errors.py:41 +msgid "Failed to decode resource access token." +msgstr "" + +#: invenio_rdm_records/tokens/errors.py:47 +msgid "The resource access token is invalid." +msgstr "" + +#: invenio_rdm_records/tokens/errors.py:53 +msgid "The resource access token subject is invalid." +msgstr "" + +#: invenio_rdm_records/tokens/errors.py:59 +msgid "The resource access token is expired." +msgstr "" + +#: invenio_rdm_records/tokens/errors.py:65 +msgid "Resource Access Tokens feature is currently disabled." +msgstr "" + +#: invenio_rdm_records/tokens/scopes.py:16 +msgid "Allow generation of granular access JWT tokens." msgstr "" diff --git a/invenio_rdm_records/utils.py b/invenio_rdm_records/utils.py index 3f5dc1da2..d34727f09 100644 --- a/invenio_rdm_records/utils.py +++ b/invenio_rdm_records/utils.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2022 CERN. +# Copyright (C) 2022-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -17,16 +17,22 @@ from invenio_i18n import _ from invenio_users_resources.services.users.tasks import reindex_users from itsdangerous import SignatureExpired +from marshmallow import ValidationError from .requests.access.permissions import AccessRequestTokenNeed from .secret_links import LinkNeed, SecretLink from .tokens import RATNeed, validate_rat -from .tokens.errors import RATFeatureDisabledError +from .tokens.errors import ( + InvalidTokenSubjectError, + RATFeatureDisabledError, + TokenDecodeError, +) def get_or_create_user(email): """Get or create a user.""" - user = current_datastore.get_user(email) + with db.session.no_autoflush: + user = current_datastore.get_user(email) if not user: user = current_datastore.create_user( email=email, @@ -65,7 +71,7 @@ def __getattr__(self, name): objs = super().__getattribute__("_objs") for o in objs: - if getattr(o, name): + if getattr(o, name, None): return getattr(o, name) raise AttributeError() @@ -82,34 +88,66 @@ def get(self, key, default=None): def verify_token(identity): """Verify the token and provide identity with corresponding need.""" - token = request.args.get("token", session.get("token", None)) + secret_link_token_arg = "token" + token = None + token_source = None + has_secret_link_token = False + arg_token = request.args.get(secret_link_token_arg, None) + session_token = session.get(secret_link_token_arg, None) + if arg_token: + token = arg_token + token_source = "arg" + elif session_token: + token = session_token + token_source = "session" - session["token"] = token if token: try: data = SecretLink.load_token(token) if data: identity.provides.add(LinkNeed(data["id"])) + # In order for anonymous users with secret link to perform vulnerable HTTP requests + # ("POST", "PUT", "PATCH", "DELETE"), CSRF token must be set + request.csrf_cookie_needs_reset = True + session[secret_link_token_arg] = token + has_secret_link_token = True except SignatureExpired: - flash(_("Your shared link has expired.")) - - resource_access_token = request.args.get( - current_app.config.get("RDM_RESOURCE_ACCESS_TOKEN_REQUEST_ARG", None), None - ) - if resource_access_token: - if not current_app.config.get("RDM_RESOURCE_ACCESS_TOKENS_ENABLED", False): + # It the token came from "args", we notify that the link has expired + if token_source == "arg": + flash(_("Your shared link has expired.")) + # We remove the token from the session to avoid flashing the message + session.pop(secret_link_token_arg, None) + + # NOTE: This logic is getting very complex becuase of possible arg naming conflicts + # for the Zenodo use-case. It can be simplified once the conflict changes + rat_enabled = current_app.config.get("RDM_RESOURCE_ACCESS_TOKENS_ENABLED", False) + rat_arg = current_app.config.get("RDM_RESOURCE_ACCESS_TOKEN_REQUEST_ARG", None) + # we can have a "naming conflict" if both secret links and RATs use the same arg key + rat_arg_name_conflict = rat_arg == secret_link_token_arg + rat = request.args.get(rat_arg, None) + if rat and not (rat_arg_name_conflict and has_secret_link_token): + if not rat_enabled: raise RATFeatureDisabledError() - rat_signer, payload = validate_rat(resource_access_token) - identity.provides.add( - RATNeed( - rat_signer, payload["record_id"], payload["file"], payload["access"] + try: + rat_signer, payload = validate_rat(rat) + schema_cls = current_app.config.get( + "RDM_RESOURCE_ACCESS_TOKENS_SUBJECT_SCHEMA" ) - ) + if schema_cls: + try: + rat_need_data = schema_cls().load(payload) + except ValidationError: + raise InvalidTokenSubjectError() + else: + rat_need_data = payload + identity.provides.add(RATNeed(rat_signer, **rat_need_data)) + except TokenDecodeError: + pass access_request_token = request.args.get( "access_request_token", session.get("access_request_token", None) ) - session["access_request_token"] = access_request_token if access_request_token: + session["access_request_token"] = access_request_token identity.provides.add(AccessRequestTokenNeed(access_request_token)) diff --git a/invenio_rdm_records/views.py b/invenio_rdm_records/views.py index 60adc0cad..0956c770a 100644 --- a/invenio_rdm_records/views.py +++ b/invenio_rdm_records/views.py @@ -1,142 +1,18 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2022 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2021 TU Wien. # Copyright (C) 2022 Universität Hamburg. +# Copyright (C) 2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Views.""" -from flask import ( - Blueprint, - abort, - current_app, - g, - redirect, - render_template, - request, - url_for, -) -from invenio_access.permissions import system_identity -from invenio_i18n import lazy_gettext as _ -from invenio_mail.tasks import send_email -from invenio_pidstore.errors import PIDDeletedError, PIDDoesNotExistError -from invenio_records_resources.services.errors import PermissionDeniedError -from invenio_requests.proxies import current_requests_service -from invenio_requests.views.decorators import pass_request -from invenio_requests.views.ui import ( - not_found_error, - record_permission_denied_error, - record_tombstone_error, -) - -from .proxies import current_rdm_records_service as current_service -from .requests.access.requests import GuestAcceptAction -from .services.errors import DuplicateAccessRequestError +from flask import Blueprint blueprint = Blueprint("invenio_rdm_records_ext", __name__) -# Register error handlers -blueprint.register_error_handler(PermissionDeniedError, record_permission_denied_error) -blueprint.register_error_handler(PIDDeletedError, record_tombstone_error) -blueprint.register_error_handler(PIDDoesNotExistError, not_found_error) - - -@blueprint.record_once -def init(state): - """Init app.""" - app = state.app - # Register services - cannot be done in extension because - # Invenio-Records-Resources might not have been initialized. - sregistry = app.extensions["invenio-records-resources"].registry - ext = app.extensions["invenio-rdm-records"] - sregistry.register(ext.records_service, service_id="records") - sregistry.register(ext.records_service.files, service_id="files") - sregistry.register(ext.records_service.draft_files, service_id="draft-files") - sregistry.register(ext.records_media_files_service, service_id="record-media-files") - sregistry.register(ext.records_media_files_service.files, service_id="media-files") - sregistry.register( - ext.records_media_files_service.draft_files, service_id="draft-media-files" - ) - sregistry.register(ext.oaipmh_server_service, service_id="oaipmh-server") - sregistry.register(ext.iiif_service, service_id="rdm-iiif") - # Register indexers - iregistry = app.extensions["invenio-indexer"].registry - iregistry.register(ext.records_service.indexer, indexer_id="records") - iregistry.register(ext.records_service.draft_indexer, indexer_id="records-drafts") - - -@blueprint.route("/access-requests/verify") -def verify_access_request_token(): - """UI endpoint for verifying guest access request tokens. - - When the token is verified successfully, a new guest access request will be created - and the token object will be deleted from the database. - The token value will be stored with the newly created request and grant access - permissions to the request details. - """ - token = request.args.get("access_request_token") - access_request = None - try: - access_request = current_service.access.create_guest_access_request( - identity=g.identity, token=token - ) - except DuplicateAccessRequestError as e: - if e.request_ids: - duplicate_request = current_requests_service.read( - identity=system_identity, id_=e.request_ids[0] - ) - url = duplicate_request.links["self_html"] - token = duplicate_request.data["payload"]["token"] - return redirect(f"{url}?access_request_token={token}") - - if access_request is None: - abort(404) - - url = f"{access_request.links['self_html']}?access_request_token={token}" - - send_email( - { - "subject": _("Access request submitted successfully"), - "html_body": _( - ( - "Your access request was submitted successfully. " - 'The request details are available here.' - ), - url=url, - ), - "body": _( - ( - "Your access request was submitted successfully. " - "The request details are available at: %(url)s" - ), - url=url, - ), - "recipients": [access_request._request["created_by"]["email"]], - "sender": current_app.config["MAIL_DEFAULT_SENDER"], - } - ) - - return redirect(url) - - -@blueprint.route("/access-requests/requests/") -@pass_request(expand=True) -def read_request(request, **kwargs): - """UI endpoint for the guest access request details.""" - request_type = request["type"] - request_is_accepted = request["status"] == GuestAcceptAction.status_to - - # NOTE: this template is defined in Invenio-App-RDM - return render_template( - f"invenio_requests/{request_type}/index.html", - user_avatar="", - record=None, - permissions={}, - invenio_request=request.to_dict(), - request_is_accepted=request_is_accepted, - ) def create_records_bp(app): @@ -181,6 +57,18 @@ def create_parent_grants_bp(app): return ext.parent_grants_resource.as_blueprint() +def create_grant_user_access_bp(app): + """Create grant user access blueprint.""" + ext = app.extensions["invenio-rdm-records"] + return ext.grant_user_access_resource.as_blueprint() + + +def create_grant_group_access_bp(app): + """Create grant group access blueprint.""" + ext = app.extensions["invenio-rdm-records"] + return ext.grant_group_access_resource.as_blueprint() + + def create_pid_resolver_resource_bp(app): """Create pid resource blueprint.""" ext = app.extensions["invenio-rdm-records"] @@ -214,3 +102,9 @@ def create_iiif_bp(app): """Create IIIF blueprint.""" ext = app.extensions["invenio-rdm-records"] return ext.iiif_resource.as_blueprint() + + +def create_collections_bp(app): + """Create collections blueprint.""" + ext = app.extensions["invenio-rdm-records"] + return ext.collections_resource.as_blueprint() diff --git a/invenio_rdm_records/webpack.py b/invenio_rdm_records/webpack.py index 756e539f9..4d06b72e7 100644 --- a/invenio_rdm_records/webpack.py +++ b/invenio_rdm_records/webpack.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2019-2022 CERN. +# Copyright (C) 2019-2024 CERN. # Copyright (C) 2019-2022 Northwestern University. # Copyright (C) 2022 TU Wien. # Copyright (C) 2022 Graz University of Technology. @@ -24,8 +24,7 @@ }, dependencies={ "@babel/runtime": "^7.9.0", - "@ckeditor/ckeditor5-build-classic": "^16.0.0", - "@ckeditor/ckeditor5-react": "^2.1.0", + "@tinymce/tinymce-react": "^4.3.0", "formik": "^2.1.0", "i18next": "^20.3.0", "i18next-browser-languagedetector": "^6.1.0", @@ -37,11 +36,12 @@ "react-dnd-html5-backend": "^11.1.0", "react-dropzone": "^11.0.0", "react-i18next": "^11.11.0", - "react-invenio-forms": "^2.0.0", - "react-searchkit": "^2.0.0", + "react-invenio-forms": "^4.0.0", + "react-searchkit": "^3.0.0", + "tinymce": "^6.7.2", "yup": "^0.32.0", "@semantic-ui-react/css-patch": "^1.0.0", - "axios": "^0.21.0", + "axios": "^1.7.7", "react": "^16.13.0", "react-dom": "^16.13.0", "react-redux": "^7.2.0", diff --git a/setup.cfg b/setup.cfg index bb0cd8afd..6c57b8c56 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2019 CERN. +# Copyright (C) 2019-2024 CERN. # Copyright (C) 2019 Northwestern University. # Copyright (C) 2022 Universität Hamburg. # Copyright (C) 2022 Graz University of Technology. @@ -29,30 +29,39 @@ python_requires = >=3.7 zip_safe = False install_requires = arrow>=0.17.0 + babel-edtf>=1.2.0 citeproc-py-styles>=0.1.2,<1.0.0 citeproc-py>=0.6.0 + commonmeta-py>=0.8.4,<0.8.7 datacite>=1.1.1,<2.0.0 dcxml>=0.1.2,<1.0.0 Faker>=2.0.3 - flask-iiif>=0.6.2,<1.0.0 + flask-iiif>=1.0.0,<2.0.0 ftfy>=4.4.3,<5.0.0 - invenio-administration>=1.2.0,<2.0.0 - invenio-communities>=7.0.0,<8.0.0 - invenio-drafts-resources>=1.4.1,<2.0.0 + invenio-administration>=2.0.0,<3.0.0 + invenio-communities>=17.0.0,<18.0.0 + invenio-drafts-resources>=5.0.0,<6.0.0 + invenio-records-resources>=6.0.0,<7.0.0 invenio-github>=1.0.0,<2.0.0 invenio-i18n>=2.0.0,<3.0.0 + invenio-jobs>=1.0.0,<2.0.0 invenio-oaiserver>=2.0.0,<3.0.0 - invenio-oauth2server>=2.0.0,<2.1.0 - invenio-vocabularies>=1.2.0,<2.0.0 + invenio-oauth2server>=2.0.0 + invenio-stats>=4.0.0,<5.0.0 + invenio-vocabularies>=6.0.0,<7.0.0 nameparser>=1.1.1 + pycountry>=22.3.5 + pydash>=6.0.0,<7.0.0 pytz>=2020.4 pyyaml>=5.4.0 python-slugify>=8.0.1 + # Upper pinning due to commonmeta-py + types-requests<2.31.0.7 [options.extras_require] tests = - pytest-black>=0.3.0 - invenio-app>=1.3.4,<2.0.0 + pytest-black-ng>=0.4.0 + invenio-app>=1.4.0,<2.0.0 invenio-db[postgresql,mysql]>=1.0.14,<2.0.0 pytest-invenio>=2.1.0,<3.0.0 pytest-mock>=1.6.0 @@ -79,6 +88,8 @@ invenio_base.api_blueprints = invenio_rdm_records_ext = invenio_rdm_records.views:blueprint invenio_rdm_records_parent_links = invenio_rdm_records.views:create_parent_record_links_bp invenio_rdm_records_parent_grants = invenio_rdm_records.views:create_parent_grants_bp + invenio_rdm_records_user_access = invenio_rdm_records.views:create_grant_user_access_bp + invenio_rdm_records_group_access = invenio_rdm_records.views:create_grant_group_access_bp invenio_rdm_records_record_files = invenio_rdm_records.views:create_record_files_bp invenio_rdm_records_record_media_files = invenio_rdm_records.views:create_record_media_files_bp invenio_rdm_community_records = invenio_rdm_records.views:create_community_records_bp @@ -86,14 +97,23 @@ invenio_base.api_blueprints = invenio_rdm_record_communities = invenio_rdm_records.views:create_record_communities_bp invenio_rdm_record_requests = invenio_rdm_records.views:create_record_requests_bp invenio_iiif = invenio_rdm_records.views:create_iiif_bp + invenio_rdm_records_collections = invenio_rdm_records.views:create_collections_bp +invenio_base.api_finalize_app = + invenio_rdm_records = invenio_rdm_records.ext:api_finalize_app invenio_base.blueprints = invenio_rdm_records_ext = invenio_rdm_records.views:blueprint +invenio_base.finalize_app = + invenio_rdm_records = invenio_rdm_records.ext:finalize_app invenio_celery.tasks = invenio_rdm_records_fixtures = invenio_rdm_records.fixtures.tasks invenio_rdm_records_services = invenio_rdm_records.services.tasks invenio_rdm_records_access_requests = invenio_rdm_records.requests.access.tasks + invenio_rdm_records_iiif = invenio_rdm_records.services.iiif.tasks + invenio_rdm_records_user_moderation = invenio_rdm_records.requests.user_moderation.tasks + invenio_rdm_records_collections = invenio_rdm_records.collections.tasks invenio_db.models = invenio_rdm_records = invenio_rdm_records.records.models + invenio_rdm_records_collections = invenio_rdm_records.collections.models invenio_db.alembic = invenio_rdm_records = invenio_rdm_records:alembic invenio_jsonschemas.schemas = @@ -123,6 +143,8 @@ invenio_users_resources.moderation.actions = block = invenio_rdm_records.requests.user_moderation.actions:on_block restore = invenio_rdm_records.requests.user_moderation.actions:on_restore approve = invenio_rdm_records.requests.user_moderation.actions:on_approve +invenio_jobs.jobs = + update_expired_embargos = invenio_rdm_records.jobs.jobs:update_expired_embargos_cls [build_sphinx] source-dir = docs/ diff --git a/tests/collections/__init__.py b/tests/collections/__init__.py new file mode 100644 index 000000000..03664b765 --- /dev/null +++ b/tests/collections/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Tests for collections.""" diff --git a/tests/collections/test_collections_api.py b/tests/collections/test_collections_api.py new file mode 100644 index 000000000..ddb91e10b --- /dev/null +++ b/tests/collections/test_collections_api.py @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Test suite for the collections programmatic API.""" + +from invenio_search.engine import dsl + +from invenio_rdm_records.collections.api import Collection, CollectionTree + + +def test_create(running_app, db, community, community_owner): + """Test collection creation via API.""" + tree = CollectionTree.create( + title="Tree 1", + order=10, + community_id=community.id, + slug="tree-1", + ) + + collection = Collection.create( + title="My Collection", + query="*:*", + slug="my-collection", + ctree=tree, + ) + + read_c = Collection.read(id_=collection.id) + assert read_c.id == collection.id + assert read_c.title == "My Collection" + assert read_c.collection_tree.id == tree.id + + # Use collection tree id + collection = Collection.create( + title="My Collection 2", + query="*:*", + slug="my-collection-2", + ctree=tree.id, + ) + + read_c = Collection.read(id_=collection.id) + assert read_c.id == collection.id + assert collection.title == "My Collection 2" + assert collection.collection_tree.id == tree.id + + +def test_resolve(running_app, db, community): + """Test collection resolution.""" + tree = CollectionTree.create( + title="Tree 1", + order=10, + community_id=community.id, + slug="tree-1", + ) + + collection = Collection.create( + title="My Collection", + query="*:*", + slug="my-collection", + ctree=tree, + ) + + # Read by ID + read_by_id = Collection.read(id_=collection.id) + assert read_by_id.id == collection.id + + # Read by slug + read_by_slug = Collection.read(slug="my-collection", ctree_id=tree.id) + assert read_by_slug.id == read_by_id.id == collection.id + + +def test_query_build(running_app, db): + """Test query building.""" + tree = CollectionTree.create( + title="Tree 1", + order=10, + slug="tree-1", + ) + c1 = Collection.create( + title="My Collection", + query="metadata.title:hello", + slug="my-collection", + ctree=tree, + ) + c2 = Collection.create( + title="My Collection 2", + query="metadata.creators.name:john", + slug="my-collection-2", + parent=c1, + ) + assert c2.query == c1.query & dsl.Q("query_string", query=c2.search_query) + + +def test_children(running_app, db): + """Test children property.""" + tree = CollectionTree.create( + title="Tree 1", + order=10, + slug="tree-1", + ) + c1 = Collection.create( + title="My Collection", + query="*:*", + slug="my-collection", + ctree=tree, + ) + c2 = Collection.create( + title="My Collection 2", + query="*:*", + slug="my-collection-2", + parent=c1, + ) + c3 = Collection.create( + title="My Collection 3", + query="*:*", + slug="my-collection-3", + parent=c2, + ) + assert c1.children == [c2] + assert c2.children == [c3] + assert c3.children == [] diff --git a/tests/collections/test_collections_tasks.py b/tests/collections/test_collections_tasks.py new file mode 100644 index 000000000..85bd63d99 --- /dev/null +++ b/tests/collections/test_collections_tasks.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Test celery tasks of collections.""" + +from copy import deepcopy + +from invenio_rdm_records.collections.api import Collection, CollectionTree +from invenio_rdm_records.collections.tasks import update_collections_size + + +def test_update_collections_size(app, db, record_factory, minimal_record, community): + """Test update_collections_size task.""" + tree = CollectionTree.create( + title="Tree 1", + order=10, + community_id=community.id, + slug="tree-1", + ) + + collection = Collection.create( + title="My Collection", + query="metadata.title:foo", + slug="my-collection", + ctree=tree, + ) + update_collections_size() + + # Check that the collections have been updated + collection = Collection.read(id_=collection.id) + assert collection.num_records == 0 + + # Add a record that matches the collection + rec = deepcopy(minimal_record) + rec["metadata"]["title"] = "foo" + record = record_factory.create_record(record_dict=rec, community=community) + + update_collections_size() + + collection = Collection.read(id_=collection.id) + assert collection.num_records == 1 diff --git a/tests/conftest.py b/tests/conftest.py index d07b16f16..d617af76a 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2019-2022 CERN. +# Copyright (C) 2019-2024 CERN. # Copyright (C) 2019-2022 Northwestern University. # Copyright (C) 2021 TU Wien. # Copyright (C) 2022-2023 Graz University of Technology. @@ -13,6 +13,7 @@ See https://pytest-invenio.readthedocs.io/ for documentation on which test fixtures are available. """ + from invenio_rdm_records.services.permissions import RDMRequestsPermissionPolicy # Monkey patch Werkzeug 2.1 @@ -36,12 +37,12 @@ from collections import namedtuple from copy import deepcopy from datetime import datetime +from io import BytesIO from unittest import mock import arrow import pytest from dateutil import tz -from flask import g from flask_principal import Identity, Need, RoleNeed, UserNeed from flask_security import login_user from flask_security.utils import hash_password @@ -58,6 +59,7 @@ CommunityInvitationSubmittedNotificationBuilder, ) from invenio_notifications.backends import EmailNotificationBackend +from invenio_notifications.proxies import current_notifications_manager from invenio_notifications.services.builders import NotificationBuilder from invenio_oauth2server.models import Client from invenio_pidstore.errors import PIDDoesNotExistError @@ -67,7 +69,6 @@ from invenio_requests.notifications.builders import ( CommentRequestEventCreateNotificationBuilder, ) -from invenio_requests.proxies import current_user_moderation_service as mod_service from invenio_users_resources.permissions import user_management_action from invenio_users_resources.proxies import current_users_service from invenio_users_resources.records.api import UserAggregate @@ -83,14 +84,28 @@ from invenio_vocabularies.proxies import current_service as vocabulary_service from invenio_vocabularies.records.api import Vocabulary from marshmallow import fields +from werkzeug.local import LocalProxy from invenio_rdm_records import config from invenio_rdm_records.notifications.builders import ( + CommunityInclusionAcceptNotificationBuilder, + CommunityInclusionCancelNotificationBuilder, + CommunityInclusionDeclineNotificationBuilder, + CommunityInclusionExpireNotificationBuilder, CommunityInclusionSubmittedNotificationBuilder, + GrantUserAccessNotificationBuilder, + GuestAccessRequestAcceptNotificationBuilder, + GuestAccessRequestSubmitNotificationBuilder, + GuestAccessRequestTokenCreateNotificationBuilder, + UserAccessRequestAcceptNotificationBuilder, + UserAccessRequestSubmitNotificationBuilder, ) from invenio_rdm_records.proxies import current_rdm_records_service from invenio_rdm_records.records.api import RDMDraft, RDMParent, RDMRecord -from invenio_rdm_records.requests.entity_resolvers import RDMRecordServiceResultResolver +from invenio_rdm_records.requests.entity_resolvers import ( + EmailResolver, + RDMRecordServiceResultResolver, +) from invenio_rdm_records.resources.serializers import DataCite43JSONSerializer from invenio_rdm_records.services.communities.components import ( CommunityServiceComponents, @@ -165,44 +180,78 @@ def app_config(app_config, mock_datacite_client): for config_key in supported_configurations: app_config[config_key] = getattr(config, config_key, None) - app_config[ - "RECORDS_REFRESOLVER_CLS" - ] = "invenio_records.resolver.InvenioRefResolver" - app_config[ - "RECORDS_REFRESOLVER_STORE" - ] = "invenio_jsonschemas.proxies.current_refresolver_store" + app_config["THEME_SITENAME"] = "Invenio" + + app_config["RECORDS_REFRESOLVER_CLS"] = ( + "invenio_records.resolver.InvenioRefResolver" + ) + app_config["RECORDS_REFRESOLVER_STORE"] = ( + "invenio_jsonschemas.proxies.current_refresolver_store" + ) # OAI Server - app_config["OAISERVER_ID_PREFIX"] = "oai:inveniosoftware.org:recid/" + app_config["OAISERVER_REPOSITORY_NAME"] = "InvenioRDM" + app_config["OAISERVER_ID_PREFIX"] = "inveniordm" app_config["OAISERVER_RECORD_INDEX"] = "rdmrecords-records" + app_config["OAISERVER_SEARCH_CLS"] = "invenio_rdm_records.oai:OAIRecordSearch" + app_config["OAISERVER_ID_FETCHER"] = "invenio_rdm_records.oai:oaiid_fetcher" + app_config["OAISERVER_LAST_UPDATE_KEY"] = "updated" + app_config["OAISERVER_CREATED_KEY"] = "created" + app_config["OAISERVER_RECORD_CLS"] = "invenio_rdm_records.records.api:RDMRecord" + app_config["OAISERVER_RECORD_SETS_FETCHER"] = ( + "invenio_oaiserver.percolator:find_sets_for_record" + ) + app_config["OAISERVER_GETRECORD_FETCHER"] = ( + "invenio_rdm_records.oai:getrecord_fetcher" + ) app_config["OAISERVER_METADATA_FORMATS"] = { + "marcxml": { + "serializer": "invenio_rdm_records.oai:marcxml_etree", + "schema": "https://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd", + "namespace": "https://www.loc.gov/standards/marcxml/", + }, "oai_dc": { "serializer": "invenio_rdm_records.oai:dublincore_etree", "schema": "http://www.openarchives.org/OAI/2.0/oai_dc.xsd", "namespace": "http://www.openarchives.org/OAI/2.0/oai_dc/", }, + "dcat": { + "serializer": "invenio_rdm_records.oai:dcat_etree", + "schema": "http://schema.datacite.org/meta/kernel-4/metadata.xsd", + "namespace": "https://www.w3.org/ns/dcat", + }, + "marc21": { + "serializer": "invenio_rdm_records.oai:marcxml_etree", + "schema": "https://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd", + "namespace": "https://www.loc.gov/standards/marcxml/", + }, "datacite": { "serializer": "invenio_rdm_records.oai:datacite_etree", - "schema": "http://schema.datacite.orgmeta/nonexistant/nonexistant.xsd", # noqa - "namespace": "http://datacite.org/schema/nonexistant", + "schema": "http://schema.datacite.org/meta/kernel-4.3/metadata.xsd", + "namespace": "http://datacite.org/schema/kernel-4", }, "oai_datacite": { "serializer": "invenio_rdm_records.oai:oai_datacite_etree", "schema": "http://schema.datacite.org/oai/oai-1.1/oai.xsd", "namespace": "http://schema.datacite.org/oai/oai-1.1/", }, - "oai_marcxml": { - "serializer": "invenio_rdm_records.oai:oai_marcxml_etree", - "schema": "https://www.loc.gov/standards/marcxml/schema/MARC21slim.xsd", - "namespace": "https://www.loc.gov/standards/marcxml/", + "datacite4": { + "serializer": "invenio_rdm_records.oai:datacite_etree", + "schema": "http://schema.datacite.org/meta/kernel-4.3/metadata.xsd", + "namespace": "http://datacite.org/schema/kernel-4", }, - "oai_dcat": { - "serializer": "invenio_rdm_records.oai:oai_dcat_etree", - "schema": "http://schema.datacite.org/meta/kernel-4/metadata.xsd", - "namespace": "https://www.w3.org/ns/dcat", + "oai_datacite4": { + "serializer": ("invenio_rdm_records.oai:oai_datacite_etree"), + "schema": "http://schema.datacite.org/oai/oai-1.1/oai.xsd", + "namespace": "http://schema.datacite.org/oai/oai-1.1/", }, } - app_config["INDEXER_DEFAULT_INDEX"] = "rdmrecords-records-record-v6.0.0" + records_index = LocalProxy( + lambda: current_rdm_records_service.record_cls.index._name + ) + app_config["OAISERVER_RECORD_INDEX"] = records_index + app_config["INDEXER_DEFAULT_INDEX"] = records_index + # Variable not used. We set it to silent warnings app_config["JSONSCHEMAS_HOST"] = "not-used" @@ -279,12 +328,23 @@ def app_config(app_config, mock_datacite_client): # Specifying dummy builders to avoid raising errors for most tests. Extend as needed. app_config["NOTIFICATIONS_BUILDERS"] = { CommentRequestEventCreateNotificationBuilder.type: DummyNotificationBuilder, + CommunityInclusionAcceptNotificationBuilder.type: DummyNotificationBuilder, + CommunityInclusionCancelNotificationBuilder.type: DummyNotificationBuilder, + CommunityInclusionDeclineNotificationBuilder.type: DummyNotificationBuilder, + CommunityInclusionExpireNotificationBuilder.type: DummyNotificationBuilder, CommunityInclusionSubmittedNotificationBuilder.type: DummyNotificationBuilder, CommunityInvitationSubmittedNotificationBuilder.type: DummyNotificationBuilder, + GuestAccessRequestTokenCreateNotificationBuilder.type: GuestAccessRequestTokenCreateNotificationBuilder, + GuestAccessRequestAcceptNotificationBuilder.type: GuestAccessRequestAcceptNotificationBuilder, + GuestAccessRequestSubmitNotificationBuilder.type: GuestAccessRequestSubmitNotificationBuilder, + UserAccessRequestAcceptNotificationBuilder.type: UserAccessRequestAcceptNotificationBuilder, + UserAccessRequestSubmitNotificationBuilder.type: UserAccessRequestSubmitNotificationBuilder, + GrantUserAccessNotificationBuilder.type: GrantUserAccessNotificationBuilder, } # Specifying default resolvers. Will only be used in specific test cases. app_config["NOTIFICATIONS_ENTITY_RESOLVERS"] = [ + EmailResolver(), RDMRecordServiceResultResolver(), ServiceResultResolver(service_id="users", type_key="user"), ServiceResultResolver(service_id="communities", type_key="community"), @@ -293,9 +353,9 @@ def app_config(app_config, mock_datacite_client): ] # Extending preferences schemas, to include notification preferences. Should not matter for most test cases - app_config[ - "ACCOUNTS_USER_PREFERENCES_SCHEMA" - ] = UserPreferencesNotificationsSchema() + app_config["ACCOUNTS_USER_PREFERENCES_SCHEMA"] = ( + UserPreferencesNotificationsSchema() + ) app_config["USERS_RESOURCES_SERVICE_SCHEMA"] = NotificationsUserSchema app_config["RDM_RESOURCE_ACCESS_TOKENS_ENABLED"] = True @@ -307,6 +367,14 @@ def app_config(app_config, mock_datacite_client): app_config["REQUESTS_PERMISSION_POLICY"] = RDMRequestsPermissionPolicy app_config["COMMUNITIES_OAI_SETS_PREFIX"] = "community-" + + app_config["APP_RDM_ROUTES"] = { + "record_detail": "/records/", + "record_file_download": "/records//files/", + } + + app_config["USERS_RESOURCES_GROUPS_ENABLED"] = True + return app_config @@ -360,7 +428,7 @@ def full_record(users): return { "pids": { "doi": { - "identifier": "10.5281/inveniordm.1234", + "identifier": "10.1234/inveniordm.1234", "provider": "datacite", "client": "inveniordm", }, @@ -432,7 +500,7 @@ def full_record(users): } ], "languages": [{"id": "dan"}, {"id": "eng"}], - "identifiers": [{"identifier": "1924MNRAS..84..308E", "scheme": "bibcode"}], + "identifiers": [{"identifier": "1924MNRAS..84..308E", "scheme": "ads"}], "related_identifiers": [ { "identifier": "10.1234/foo.bar", @@ -539,9 +607,10 @@ def full_record(users): def enhanced_full_record(users): """Full record data as dict coming from the external world.""" return { + "id": "w502q-xzh22", "pids": { "doi": { - "identifier": "10.5281/inveniordm.1234", + "identifier": "10.1234/inveniordm.1234", "provider": "datacite", "client": "inveniordm", }, @@ -625,7 +694,7 @@ def enhanced_full_record(users): ], }, "role": { - "id": "other", + "id": "datamanager", "title": { "de": "DatenmanagerIn", "en": "Data manager", @@ -641,10 +710,10 @@ def enhanced_full_record(users): "type": "personal", }, "role": { - "id": "other", + "id": "projectmanager", "title": { - "de": "VerteilerIn", - "en": "Other", + "de": "ProjektmanagerIn", + "en": "Project manager", }, }, }, @@ -676,7 +745,7 @@ def enhanced_full_record(users): }, }, ], - "identifiers": [{"identifier": "1924MNRAS..84..308E", "scheme": "bibcode"}], + "identifiers": [{"identifier": "1924MNRAS..84..308E", "scheme": "ads"}], "related_identifiers": [ { "identifier": "10.1234/foo.bar", @@ -793,8 +862,8 @@ def enhanced_full_record(users): "bucket": "81983514-22e5-473a-b521-24254bd5e049", "default_preview": "big-dataset.zip", "order": ["big-dataset.zip"], - "entries": [ - { + "entries": { + "big-dataset.zip": { "checksum": "md5:234245234213421342", "mimetype": "application/zip", "size": 1114324524355, @@ -808,7 +877,7 @@ def enhanced_full_record(users): "metadata": {}, "id": "445aaacd-9de1-41ab-af52-25ab6cb93df7", } - ], + }, "meta": {"big-dataset.zip": {"description": "File containing the data."}}, }, "notes": ["Under investigation for copyright infringement."], @@ -852,6 +921,19 @@ def minimal_record(): } +@pytest.fixture() +def empty_record(): + """Almost empty record data as dict coming from the external world.""" + return { + "pids": {}, + "access": {}, + "files": { + "enabled": False, # Most tests don't care about files + }, + "metadata": {}, + } + + @pytest.fixture() def minimal_restricted_record(minimal_record): """Data for restricted record.""" @@ -924,6 +1006,15 @@ def closed_review_minimal_community(minimal_community): return community +@pytest.fixture() +def closed_submission_minimal_community(minimal_community): + """Data for a minimal community that restricts record submission.""" + community = deepcopy(minimal_community) + community["slug"] = "closed-submission-community" + community["access"]["record_submission_policy"] = "closed" + return community + + @pytest.fixture() def minimal_oai_set(): """Data for a minimal OAI-PMH set.""" @@ -1038,6 +1129,16 @@ def identity_simple(users): return i +@pytest.fixture() +def anonymous_identity(users): + """Simple identity fixture.""" + user = users[1] + i = Identity(user.id) + i.provides.add(UserNeed(user.id)) + i.provides.add(Need(method="system_role", value="any_user")) + return i + + @pytest.fixture(scope="module") def languages_type(app): """Lanuage vocabulary type.""" @@ -1103,6 +1204,8 @@ def resource_type_v(app, resource_type_type): "schema.org": "https://schema.org/Dataset", "subtype": "", "type": "dataset", + "marc21_type": "dataset", + "marc21_subtype": "", }, "title": {"en": "Dataset"}, "tags": ["depositable", "linkable"], @@ -1120,10 +1223,12 @@ def resource_type_v(app, resource_type_type): "datacite_type": "", "openaire_resourceType": "25", "openaire_type": "dataset", - "eurepo": "info:eu-repo/semantic/other", + "eurepo": "info:eu-repo/semantics/other", "schema.org": "https://schema.org/ImageObject", "subtype": "", "type": "image", + "marc21_type": "image", + "marc21_subtype": "", }, "icon": "chart bar outline", "title": {"en": "Image"}, @@ -1132,6 +1237,30 @@ def resource_type_v(app, resource_type_type): }, ) + vocabulary_service.create( + system_identity, + { # create base resource type + "id": "software", + "props": { + "csl": "figure", + "datacite_general": "Software", + "datacite_type": "", + "openaire_resourceType": "0029", + "openaire_type": "software", + "eurepo": "info:eu-repo/semantics/other", + "schema.org": "https://schema.org/SoftwareSourceCode", + "subtype": "", + "type": "image", + "marc21_type": "software", + "marc21_subtype": "", + }, + "icon": "code", + "title": {"en": "Software"}, + "tags": ["depositable", "linkable"], + "type": "resourcetypes", + }, + ) + vocab = vocabulary_service.create( system_identity, { @@ -1142,10 +1271,12 @@ def resource_type_v(app, resource_type_type): "datacite_type": "Photo", "openaire_resourceType": "25", "openaire_type": "dataset", - "eurepo": "info:eu-repo/semantic/other", + "eurepo": "info:eu-repo/semantics/other", "schema.org": "https://schema.org/Photograph", "subtype": "image-photo", "type": "image", + "marc21_type": "image", + "marc21_subtype": "photo", }, "icon": "chart bar outline", "title": {"en": "Photo"}, @@ -1249,7 +1380,7 @@ def date_type_v(app, date_type): { "id": "other", "title": {"en": "Other"}, - "props": {"datacite": "Other"}, + "props": {"datacite": "Other", "marc": "oth"}, "type": "datetypes", }, ) @@ -1268,11 +1399,31 @@ def contributors_role_type(app): @pytest.fixture(scope="module") def contributors_role_v(app, contributors_role_type): """Contributor role vocabulary record.""" + vocabulary_service.create( + system_identity, + { + "id": "datamanager", + "props": {"datacite": "DataManager"}, + "title": {"en": "Data manager"}, + "type": "contributorsroles", + }, + ) + + vocabulary_service.create( + system_identity, + { + "id": "projectmanager", + "props": {"datacite": "ProjectManager"}, + "title": {"en": "Project manager"}, + "type": "contributorsroles", + }, + ) + vocab = vocabulary_service.create( system_identity, { "id": "other", - "props": {"datacite": "Other"}, + "props": {"datacite": "Other", "marc": "oth"}, "title": {"en": "Other"}, "type": "contributorsroles", }, @@ -1424,6 +1575,7 @@ def awards_v(app, funders_v): }, "funder": {"id": "00k4n6c32"}, "acronym": "HIT-CF", + "program": "H2020", }, ) @@ -1577,6 +1729,33 @@ def admin_role_need(db): return action_role.need +@pytest.fixture() +def embargoed_files_record(running_app, minimal_record, superuser_identity): + """Embargoed files record.""" + service = current_rdm_records_service + today = arrow.utcnow().date().isoformat() + + # Add embargo to record + with mock.patch("arrow.utcnow") as mock_arrow: + minimal_record["access"]["files"] = "restricted" + minimal_record["access"]["status"] = "embargoed" + minimal_record["access"]["embargo"] = dict( + active=True, until=today, reason=None + ) + + # We need to set the current date in the past to pass the validations + mock_arrow.return_value = arrow.get(datetime(1954, 9, 29), tz.gettz("UTC")) + draft = service.create(superuser_identity, minimal_record) + record = service.publish(id_=draft.id, identity=superuser_identity) + + RDMRecord.index.refresh() + + # Recover current date + mock_arrow.return_value = arrow.get(datetime.utcnow()) + + return record + + @pytest.fixture() def embargoed_record(running_app, minimal_record, superuser_identity): """Embargoed record.""" @@ -1585,7 +1764,7 @@ def embargoed_record(running_app, minimal_record, superuser_identity): # Add embargo to record with mock.patch("arrow.utcnow") as mock_arrow: - minimal_record["access"]["files"] = "restricted" + minimal_record["access"]["record"] = "restricted" minimal_record["access"]["status"] = "embargoed" minimal_record["access"]["embargo"] = dict( active=True, until=today, reason=None @@ -1821,6 +2000,19 @@ def closed_review_community( ) +@pytest.fixture() +def closed_submission_community( + running_app, + community_type_record, + community_owner, + closed_submission_minimal_community, +): + """Create community with close submission policy.""" + return _community_get_or_create( + closed_submission_minimal_community, community_owner.identity + ) + + @pytest.fixture() def record_community(db, uploader, minimal_record, community): """Creates a record that belongs to a community.""" @@ -1836,25 +2028,76 @@ def create_record( ): """Creates new record that belongs to the same community.""" # create draft - community_record = community._record draft = current_rdm_records_service.create(uploader.identity, record_dict) + record = draft._record + if community: + # add the record to the community + community_record = community._record + record.parent.communities.add(community_record, default=False) + record.parent.commit() + db.session.commit() + # publish and get record result_item = current_rdm_records_service.publish( uploader.identity, draft.id ) record = result_item._record - # add the record to the community - record.parent.communities.add(community_record, default=False) - record.parent.commit() - db.session.commit() current_rdm_records_service.indexer.index( record, arguments={"refresh": True} ) + return record return Record() +@pytest.fixture() +def record_factory(db, uploader, minimal_record, community, location): + """Creates a record that belongs to a community.""" + + class RecordFactory: + """Test record class.""" + + def create_record( + self, + record_dict=minimal_record, + uploader=uploader, + community=community, + file=None, + ): + """Creates new record that belongs to the same community.""" + service = current_rdm_records_service + files_service = service.draft_files + idty = uploader.identity + # create draft + if file: + record_dict["files"] = {"enabled": True} + draft = service.create(idty, record_dict) + + # add file to draft + if file: + files_service.init_files(idty, draft.id, data=[{"key": file}]) + files_service.set_file_content( + idty, draft.id, file, BytesIO(b"test file") + ) + files_service.commit_file(idty, draft.id, file) + + # publish and get record + result_item = service.publish(idty, draft.id) + record = result_item._record + if community: + # add the record to the community + community_record = community._record + record.parent.communities.add(community_record, default=False) + record.parent.commit() + db.session.commit() + service.indexer.index(record, arguments={"refresh": True}) + + return record + + return RecordFactory() + + @pytest.fixture(scope="session") def headers(): """Default headers for making requests.""" @@ -1921,3 +2164,25 @@ def _index(): current_users_service.record_cls.index.refresh() return _index + + +@pytest.fixture() +def replace_notification_builder(monkeypatch): + """Replace a notification builder and return a mock.""" + + def _replace(builder_cls): + mock_build = mock.MagicMock() + mock_build.side_effect = builder_cls.build + monkeypatch.setattr(builder_cls, "build", mock_build) + # setting specific builder for test case + monkeypatch.setattr( + current_notifications_manager, + "builders", + { + **current_notifications_manager.builders, + builder_cls.type: builder_cls, + }, + ) + return mock_build + + return _replace diff --git a/tests/contrib/codemeta/conftest.py b/tests/contrib/codemeta/conftest.py index 34a92b2ba..5d06f75f2 100644 --- a/tests/contrib/codemeta/conftest.py +++ b/tests/contrib/codemeta/conftest.py @@ -1,10 +1,11 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """CodeMeta specific test configs.""" + import pytest from invenio_access.permissions import system_identity from invenio_vocabularies.proxies import current_service as vocabulary_service diff --git a/tests/fake_datacite_client.py b/tests/fake_datacite_client.py index 7ea63f22a..88f1e4739 100644 --- a/tests/fake_datacite_client.py +++ b/tests/fake_datacite_client.py @@ -84,6 +84,17 @@ def hide_doi(self, doi): """ return Mock() + def show_doi(self, doi): + """Show a previously hidden DOI ... not. + + This DOI will no + longer be found in DataCite Search + + :param doi: DOI to hide e.g. 10.12345/1. + :return: + """ + return Mock() + def check_doi(self, doi): """Check doi structure. diff --git a/tests/fixtures/app_data/vocabularies.yaml b/tests/fixtures/app_data/vocabularies.yaml index dd94e8845..3706ecff9 100644 --- a/tests/fixtures/app_data/vocabularies.yaml +++ b/tests/fixtures/app_data/vocabularies.yaml @@ -1,10 +1,6 @@ affiliations: pid-type: aff - schemes: - - id: ROR - name: Research Organization Registry - uri: "https://ror.org/" - data-file: vocabularies/affiliations_ror.yaml + data-file: vocabularies/affiliations_ror.yaml resourcetypes: pid-type: rsrct data-file: vocabularies/resource_types.yaml diff --git a/tests/fixtures/data/vocabularies/awards.yaml b/tests/fixtures/data/vocabularies/awards.yaml index b133d3388..389fee92d 100644 --- a/tests/fixtures/data/vocabularies/awards.yaml +++ b/tests/fixtures/data/vocabularies/awards.yaml @@ -8,3 +8,4 @@ funder: id: 00k4n6c32 acronym: HIT-CF + program: H2020 diff --git a/tests/fixtures/data/vocabularies/resource_types.yaml b/tests/fixtures/data/vocabularies/resource_types.yaml index b723db708..05eb6e473 100644 --- a/tests/fixtures/data/vocabularies/resource_types.yaml +++ b/tests/fixtures/data/vocabularies/resource_types.yaml @@ -349,7 +349,7 @@ openaire_resourceType: "0006" openaire_type: publication eurepo: info:eu-repo/semantics/doctoralThesis - schema.org: https://schema.org/ScholarlyArticle + schema.org: https://schema.org/Thesis subtype: publication-thesis type: publication title: @@ -403,7 +403,7 @@ openaire_resourceType: "0044" openaire_type: publication eurepo: info:eu-repo/semantics/other - schema.org: https://schema.org/thesis + schema.org: https://schema.org/Thesis subtype: publication-dissertation type: publication title: @@ -493,7 +493,7 @@ openaire_resourceType: "0023" openaire_type: publication eurepo: info:eu-repo/semantics/other - schema.org: https://schema.org/event + schema.org: https://schema.org/Event subtype: "" type: event title: @@ -677,8 +677,26 @@ subtype: "" type: video title: - en: Video/Audio - de: Video/Audio + en: Video + de: Video + tags: + - depositable + - linkable +- id: audio + icon: volume up + props: + csl: document + datacite_general: Sound + datacite_type: "" + openaire_resourceType: "0033" + openaire_type: dataset + eurepo: info:eu-repo/semantics/other + schema.org: https://schema.org/MediaObject + subtype: "" + type: audio + title: + en: Audio + de: Audio tags: - depositable - linkable diff --git a/tests/fixtures/data/vocabularies/roles.yaml b/tests/fixtures/data/vocabularies/roles.yaml index 522c37b73..65180457d 100644 --- a/tests/fixtures/data/vocabularies/roles.yaml +++ b/tests/fixtures/data/vocabularies/roles.yaml @@ -1,15 +1,18 @@ - id: contactperson props: datacite: ContactPerson + marc: prc title: en: Contact person - id: datacollector props: datacite: DataCollector + marc: col title: en: Data collector - id: other props: datacite: Other + marc: oth title: en: Other diff --git a/tests/fixtures/test_cli.py b/tests/fixtures/test_cli.py index d5cbdc75e..3de715e0f 100644 --- a/tests/fixtures/test_cli.py +++ b/tests/fixtures/test_cli.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021-2022 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021-2022 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -8,7 +8,6 @@ """Tests for the CLI.""" - from invenio_access.permissions import system_identity from invenio_communities import current_communities from invenio_communities.communities.records.api import Community diff --git a/tests/fixtures/test_fixtures.py b/tests/fixtures/test_fixtures.py index 3ff9e5a94..a56151158 100644 --- a/tests/fixtures/test_fixtures.py +++ b/tests/fixtures/test_fixtures.py @@ -16,6 +16,7 @@ from invenio_pidstore.errors import PIDDoesNotExistError from invenio_records_resources.proxies import current_service_registry from invenio_vocabularies.proxies import current_service as vocabulary_service +from sqlalchemy.exc import NoResultFound from invenio_rdm_records.fixtures import RecordsFixture, create_demo_record from invenio_rdm_records.fixtures.communities import CommunitiesFixture @@ -23,7 +24,7 @@ from invenio_rdm_records.fixtures.vocabularies import ( GenericVocabularyEntry, PrioritizedVocabulariesFixtures, - VocabularyEntryWithSchemes, + VocabularyEntry, ) from invenio_rdm_records.proxies import current_rdm_records @@ -270,20 +271,13 @@ def test_load_records(app, db, location, vocabularies): def test_load_affiliations(app, db, admin_role, search_clear, affiliations_service): dir_ = Path(__file__).parent - affiliations = VocabularyEntryWithSchemes( + affiliations = VocabularyEntry( "affiliations", - Path(__file__).parent / "app_data", + dir_ / "app_data", "affiliations", { "pid-type": "aff", - "schemes": [ - { - "id": "ROR", - "name": "Research Organization Registry", - "uri": "https://ror.org/", - "data-file": "vocabularies/affiliations_ror.yaml", - } - ], + "data-file": "vocabularies/affiliations_ror.yaml", }, ) @@ -292,5 +286,5 @@ def test_load_affiliations(app, db, admin_role, search_clear, affiliations_servi cern = affiliations_service.read(identity=system_identity, id_="01ggx4157") assert cern["acronym"] == "CERN" - with pytest.raises(PIDDoesNotExistError): + with pytest.raises(NoResultFound): affiliations_service.read(system_identity, "cern") diff --git a/tests/oaiserver/test_oaipmh.py b/tests/oaiserver/test_oaipmh.py new file mode 100644 index 000000000..715670297 --- /dev/null +++ b/tests/oaiserver/test_oaipmh.py @@ -0,0 +1,95 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2019-2023 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Tests for the OAI-PMH endpoint.""" + +import itertools + +from flask import url_for + + +def test_identify(running_app, client, search_clear): + """Test the OAI-PMH Identify verb.""" + resp = client.get(url_for("invenio_oaiserver.response", verb="Identify")) + assert resp.status_code == 200 + assert "InvenioRDM" in resp.text + assert "http://localhost/oai2d" in resp.text + assert "2.0" in resp.text + assert "info@inveniosoftware.org" in resp.text + assert "0001-01-01T00:00:00Z" in resp.text + assert "no" in resp.text + assert "YYYY-MM-DDThh:mm:ssZ" in resp.text + + +def test_list_sets(running_app, client, community, search_clear): + """Test the OAI-PMH ListSets verb.""" + resp = client.get(url_for("invenio_oaiserver.response", verb="ListSets")) + assert resp.status_code == 200 + assert "community-blr" in resp.text + assert "Biodiversity Literature Repository" in resp.text + assert "" in resp.text + assert ( + "Records belonging to the community " + "'Biodiversity Literature Repository'" + ) in resp.text + + +def test_harvest(running_app, client, record_factory, search_clear): + """Test the OAI-PMH ListIdentifiers verb.""" + metadata_formats = running_app.app.config["OAISERVER_METADATA_FORMATS"].keys() + verbs = ["ListIdentifiers", "ListRecords"] + oai_sets = [None, "community-blr"] + url_params = itertools.product(verbs, metadata_formats, oai_sets) + + def _build_oai_url(verb, metadata_format, oai_set=None, identifier=None): + params = {"verb": verb, "metadataPrefix": metadata_format} + if oai_set: + params["set"] = oai_set + if identifier: + params["identifier"] = identifier + return url_for("invenio_oaiserver.response", **params) + + for verb, metadata_format, oai_set in url_params: + url = _build_oai_url(verb, metadata_format, oai_set) + resp = client.get(url) + assert resp.status_code == 422 + assert '' in resp.text + + # Create two records, one with a community and one without + no_community_record = record_factory.create_record(community=None, file="test.txt") + community_record = record_factory.create_record(file="test.txt") + + for verb, metadata_format, oai_set in url_params: + url = _build_oai_url(verb, metadata_format, oai_set) + resp = client.get(url) + assert resp.status_code == 200 + if oai_set: + assert ( + f"oai:inveniordm:{no_community_record['id']}" + not in resp.text + ) + else: + assert ( + f"oai:inveniordm:{no_community_record['id']}" + in resp.text + ) + assert ( + f"oai:inveniordm:{community_record['id']}" + in resp.text + ) + + for metadata_format, record in itertools.product( + metadata_formats, + [no_community_record, community_record], + ): + oai_id = f"oai:inveniordm:{record['id']}" + url = _build_oai_url("GetRecord", metadata_format, identifier=oai_id) + resp = client.get(url) + assert resp.status_code == 200 + assert f"{oai_id}" in resp.text + if record["id"] == community_record["id"]: + assert "community-blr" in resp.text diff --git a/tests/records/dumpers/test_combined_subjects_dumper.py b/tests/records/dumpers/test_combined_subjects_dumper.py new file mode 100644 index 000000000..e8d8740e7 --- /dev/null +++ b/tests/records/dumpers/test_combined_subjects_dumper.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 Northwestern University. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Test combined subjects dumper.""" + +from copy import deepcopy + +from invenio_rdm_records.records import RDMDraft, RDMRecord +from invenio_rdm_records.records.api import RDMParent + + +def test_combined_subjects_dumper(running_app, db, minimal_record): + input_subjects = [ + {"id": "http://id.nlm.nih.gov/mesh/A-D000007"}, + {"subject": "Capybara"}, + ] + minimal_record["metadata"]["subjects"] = input_subjects + parent = RDMParent.create({}) + + cases = [] + for api_cls in [RDMDraft, RDMRecord]: + data_input = deepcopy(minimal_record) + api_instance = api_cls.create(data_input, parent=parent) + dump = api_instance.dumps() + cases.append((dump, api_cls)) + + expected_combined_subjects = [ + "MeSH::Abdominal Injuries", + "Capybara", + ] + for dump, api_cls in cases: + assert expected_combined_subjects == dump["metadata"]["combined_subjects"] + + loaded = api_cls.loads(dump) + assert "combined_subjects" not in loaded["metadata"] + assert "subjects" in loaded["metadata"] diff --git a/tests/records/dumpers/test_files_dumpers.py b/tests/records/dumpers/test_files_dumpers.py new file mode 100644 index 000000000..b953afe44 --- /dev/null +++ b/tests/records/dumpers/test_files_dumpers.py @@ -0,0 +1,125 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021 TU Wien. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Tests for the files dumpers.""" + +from io import BytesIO + +from invenio_rdm_records.proxies import current_rdm_records +from invenio_rdm_records.records import RDMRecord + + +def attach_file(service, user, recid, key): + """Attach a file to a record.""" + service.draft_files.init_files(user, recid, data=[{"key": key}]) + service.draft_files.set_file_content(user, recid, key, BytesIO(b"test file")) + service.draft_files.commit_file(user, recid, key) + + +def test_files_dumper( + running_app, minimal_record, users, identity_simple, anonymous_identity, location +): + """Test that file dumper. + + Test that the dumper is hinding all files information from record indexing if the + latter is public with restricted files + """ + + # Create the record + service = current_rdm_records.records_service + minimal_record["files"] = {"enabled": True} + # restrict files + minimal_record["access"] = { + "record": "public", + "files": "restricted", + } + draft = service.create(identity_simple, minimal_record) + + # Add a file + attach_file(service, identity_simple, draft["id"], "test.pdf") + + # Publish the draft + record = service.publish(id_=draft["id"], identity=identity_simple) + RDMRecord.index.refresh() + + # Search for files count + assert ( + service.search( + identity_simple, + {"q": "files.count:>0"}, + ).total + == 0 + ) + + # Anonymous + assert ( + service.search( + anonymous_identity, + {"q": "files.count:>0"}, + ).total + == 0 + ) + + # Edit the record to make files public + draft = service.edit(identity_simple, record["id"]).to_dict() + + # open files + draft["access"] = { + "record": "public", + "files": "public", + } + draft = service.update_draft(id_=draft["id"], identity=identity_simple, data=draft) + record = service.publish(id_=draft["id"], identity=identity_simple) + RDMRecord.index.refresh() + + # Search for files count + assert ( + service.search( + identity_simple, + {"q": "files.count:>0"}, + ).total + == 1 + ) + + # Anonymous + assert ( + service.search( + anonymous_identity, + {"q": "files.count:>0"}, + ).total + == 1 + ) + + # Edit the record to make files resticted again + draft = service.edit(identity_simple, record["id"]).to_dict() + + # open files + draft["access"] = { + "record": "public", + "files": "restricted", + } + draft = service.update_draft(id_=draft["id"], identity=identity_simple, data=draft) + record = service.publish(id_=draft["id"], identity=identity_simple) + RDMRecord.index.refresh() + + # Search for files count + assert ( + service.search( + identity_simple, + {"q": "files.count:>0"}, + ).total + == 0 + ) + + # Anonymous + assert ( + service.search( + anonymous_identity, + {"q": "files.count:>0"}, + ).total + == 0 + ) diff --git a/tests/records/dumpers/test_location_dumpers.py b/tests/records/dumpers/test_location_dumpers.py index 2f07d6069..ee85d021e 100644 --- a/tests/records/dumpers/test_location_dumpers.py +++ b/tests/records/dumpers/test_location_dumpers.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020 CERN. +# Copyright (C) 2020-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Module tests.""" + import unittest.mock import pytest diff --git a/tests/records/dumpers/test_pids_dumper.py b/tests/records/dumpers/test_pids_dumper.py index daa08d132..669b8c7aa 100644 --- a/tests/records/dumpers/test_pids_dumper.py +++ b/tests/records/dumpers/test_pids_dumper.py @@ -21,7 +21,7 @@ def test_esdumper_with_externalpidsext(app, db, minimal_record, location): minimal_record["pids"] = { "doi": { - "identifier": "10.5281/zenodo.1234", + "identifier": "10.1234/zenodo.1234", "provider": "datacite", "client": "zenodo", }, diff --git a/tests/records/full-record.json b/tests/records/full-record.json index 603792193..71d60abc4 100644 --- a/tests/records/full-record.json +++ b/tests/records/full-record.json @@ -9,7 +9,7 @@ }, "pids": { "doi": { - "identifier": "10.5281/zenodo.1234", + "identifier": "10.1234/zenodo.1234", "provider": "datacite", "client": "zenodo" }, @@ -95,7 +95,7 @@ "identifiers": [ { "identifier": "1924MNRAS..84..308E", - "scheme": "bibcode" + "scheme": "ads" } ], "related_identifiers": [ diff --git a/tests/records/systemfields/test_permission_flags.py b/tests/records/systemfields/test_permission_flags.py index 7ba7d586d..98497f53d 100644 --- a/tests/records/systemfields/test_permission_flags.py +++ b/tests/records/systemfields/test_permission_flags.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN +# Copyright (C) 2023-2024 CERN # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Test permission flags system field.""" + import pytest from invenio_access.permissions import system_identity diff --git a/tests/records/test_jsonschema.py b/tests/records/test_jsonschema.py index ac5333e12..b6d4b89f8 100644 --- a/tests/records/test_jsonschema.py +++ b/tests/records/test_jsonschema.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020-2021 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -354,23 +354,6 @@ def test_related_identifiers(appctx): assert fails_meta( {"related_identifiers": [{"identifier": "10.1234/test", "invalid": "doi"}]} ) - # Unique - assert fails_meta( - { - "related_identifiers": [ - { - "identifier": "10.1234/test", - "scheme": "doi", - "relation_type": {"id": "cites"}, - }, - { - "identifier": "10.1234/test", - "scheme": "doi", - "relation_type": {"id": "cites"}, - }, - ] - } - ) def test_sizes(appctx): diff --git a/tests/records/test_records_communities.py b/tests/records/test_records_communities.py index a3e949bc8..04de1f0de 100644 --- a/tests/records/test_records_communities.py +++ b/tests/records/test_records_communities.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN +# Copyright (C) 2021-2024 CERN # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -18,15 +18,18 @@ @pytest.fixture() -def c(running_app, db): +def community(running_app, db): """A basic community fixture""" - _c = Community.create({}) - _c.commit() + comm = Community.create({}) + comm.slug = "test-community" + comm.metadata = {"title": "Test Community"} + comm.theme = {"brand": "test-theme-brand"} + comm.commit() db.session.commit() - return _c + return comm -def test_community_integration(db, c, running_app, minimal_record): +def test_community_integration(db, community, running_app, minimal_record): """Basic smoke test for communities integration.""" draft = RDMDraft.create(minimal_record) draft.commit() @@ -34,11 +37,20 @@ def test_community_integration(db, c, running_app, minimal_record): record = RDMRecord.publish(draft) record.commit() db.session.commit() - record.parent.communities.add(c, default=True) + record.parent.communities.add(community, default=True) record.parent.commit() record.commit() - assert record.dumps()["parent"]["communities"] == { - "default": str(c.id), - "ids": [str(c.id)], - } db.session.commit() + + assert record.parent.communities.entries[0] == community + dump = record.dumps() + assert dump["parent"]["communities"]["default"] == str(community.id) + assert dump["parent"]["communities"]["ids"] == [str(community.id)] + entries = dump["parent"]["communities"]["entries"] + assert len(entries) == 1 + assert entries[0]["id"] == str(community.id) + assert entries[0]["slug"] == "test-community" + assert entries[0]["metadata"]["title"] == "Test Community" + assert entries[0]["theme"]["brand"] == "test-theme-brand" + keys = entries[0].keys() + assert {"id", "slug", "metadata", "theme", "created", "updated"} <= keys diff --git a/tests/records/test_relations_affiliations.py b/tests/records/test_relations_affiliations.py index 3ba716830..c77b7ef1d 100644 --- a/tests/records/test_relations_affiliations.py +++ b/tests/records/test_relations_affiliations.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN +# Copyright (C) 2021-2024 CERN # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -54,7 +54,8 @@ def test_creator_affiliations_validation(running_app, minimal_record_with_creato # test it was saved properly aff = list(list(draft.relations.creator_affiliations())[0])[0] # since it is loaded it will contain more fields - assert aff["id"] == "cern" + assert aff.pid.pid_value == "cern" + assert aff["name"] == "CERN" def test_creator_affiliations_with_name_validation( @@ -78,7 +79,7 @@ def test_creator_affiliations_with_name_validation( assert len(aff_list) == 1 aff = aff_list[0] # since it is loaded it will contain more fields - assert aff["id"] == "cern" + assert aff.pid.pid_value == "cern" def test_creator_affiliations_with_name_cleanup_validation(running_app, minimal_record): @@ -97,7 +98,7 @@ def test_creator_affiliations_with_name_cleanup_validation(running_app, minimal_ # test it was saved properly aff = list(list(draft.relations.creator_affiliations())[0])[0] # since it is loaded it will contain more fields - assert aff["id"] == "cern" + assert aff.pid.pid_value == "cern" def test_creator_affiliations_indexing(running_app, minimal_record_with_creator): @@ -109,9 +110,13 @@ def test_creator_affiliations_indexing(running_app, minimal_record_with_creator) dump = draft.dumps() assert dump["metadata"]["creators"][0]["affiliations"] == [ { + "@v": f"{running_app.affiliations_v._record.id}::2", "id": "cern", + "identifiers": [ + {"identifier": "01ggx4157", "scheme": "ror"}, + {"identifier": "000000012156142X", "scheme": "isni"}, + ], "name": "CERN", - "@v": f"{running_app.affiliations_v._record.id}::1", } ] @@ -143,13 +148,6 @@ def test_creator_affiliations_invalid(running_app, minimal_record): minimal_record["metadata"]["creators"][0]["affiliations"] = [{"id": 1}] pytest.raises(ValidationError, RDMDraft.create, minimal_record) - # No duplicates - minimal_record["metadata"]["creators"][0]["affiliations"] = [ - {"id": "cern"}, - {"id": "cern"}, - ] - pytest.raises(ValidationError, RDMDraft.create, minimal_record) - # # Contributor Affiliations @@ -179,7 +177,7 @@ def test_contributor_affiliations_validation( # test it was saved properly aff = list(list(draft.relations.contributor_affiliations())[0])[0] # since it is loaded it will contain more fields - assert aff["id"] == "cern" + assert aff.pid.pid_value == "cern" def test_contributor_affiliations_indexing( @@ -193,9 +191,13 @@ def test_contributor_affiliations_indexing( dump = draft.dumps() assert dump["metadata"]["contributors"][0]["affiliations"] == [ { + "@v": f"{running_app.affiliations_v._record.id}::2", "id": "cern", + "identifiers": [ + {"identifier": "01ggx4157", "scheme": "ror"}, + {"identifier": "000000012156142X", "scheme": "isni"}, + ], "name": "CERN", - "@v": f"{running_app.affiliations_v._record.id}::1", } ] @@ -227,10 +229,3 @@ def test_contributor_affiliations_invalid(running_app, minimal_record_with_contr # non-string types are not allowed as id values minimal_record["metadata"]["contributors"][0]["affiliations"] = [{"id": 1}] pytest.raises(ValidationError, RDMDraft.create, minimal_record) - - # No duplicates - minimal_record["metadata"]["contributors"][0]["affiliations"] = [ - {"id": "cern"}, - {"id": "cern"}, - ] - pytest.raises(ValidationError, RDMDraft.create, minimal_record) diff --git a/tests/records/test_relations_languages.py b/tests/records/test_relations_languages.py index 661be878f..86531734a 100644 --- a/tests/records/test_relations_languages.py +++ b/tests/records/test_relations_languages.py @@ -85,7 +85,3 @@ def test_languages_invalid(running_app, minimal_record): # Extra keys are not allowed minimal_record["metadata"]["languages"] = [{"id": "eng", "title": "rm"}] pytest.raises(ValidationError, RDMDraft.create, minimal_record) - - # No duplicates - minimal_record["metadata"]["languages"] = [{"id": "eng"}, {"id": "eng"}] - pytest.raises(ValidationError, RDMDraft.create, minimal_record) diff --git a/tests/records/tombstone.json b/tests/records/tombstone.json index 56a534c8b..9a622e6a7 100644 --- a/tests/records/tombstone.json +++ b/tests/records/tombstone.json @@ -1,5 +1,5 @@ { - "$schema": "local://records/record-v6.0.0.json", + "$schema": "local://records/record-v7.0.0.json", "id": "abcde-12345", "pid": { "pk": 1, @@ -7,12 +7,12 @@ }, "pids": { "doi": { - "identifier": "10.5281/zenodo.1234", + "identifier": "10.1234/zenodo.1234", "provider": "datacite", "client": "zenodo" }, "concept-doi": { - "identifier": "10.5281/zenodo.1234", + "identifier": "10.1234/zenodo.1234", "provider": "datacite", "client": "zenodo" }, diff --git a/tests/requests/conftest.py b/tests/requests/conftest.py index 6a1248a63..27d1d8d29 100644 --- a/tests/requests/conftest.py +++ b/tests/requests/conftest.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2019-2021 CERN. +# Copyright (C) 2019-2024 CERN. # Copyright (C) 2019-2021 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -15,6 +15,8 @@ import pytest from invenio_records_permissions.generators import AuthenticatedUser, SystemProcess +import invenio_rdm_records.services.communities.moderation as communities_moderation +from invenio_rdm_records.services.components.verified import UserModerationHandler from invenio_rdm_records.services.permissions import RDMRecordPermissionPolicy @@ -35,4 +37,9 @@ def app_config(app_config): app_config["RDM_PERMISSION_POLICY"] = CustomRDMRecordPermissionPolicy # Enable user moderation app_config["RDM_USER_MODERATION_ENABLED"] = True + # Enable content moderation handlers + app_config["RDM_CONTENT_MODERATION_HANDLERS"] = [UserModerationHandler()] + app_config["RDM_COMMUNITY_CONTENT_MODERATION_HANDLERS"] = [ + communities_moderation.UserModerationHandler(), + ] return app_config diff --git a/tests/requests/test_user_moderation_actions.py b/tests/requests/test_user_moderation_actions.py index d72ddc58c..764eecd2b 100644 --- a/tests/requests/test_user_moderation_actions.py +++ b/tests/requests/test_user_moderation_actions.py @@ -1,10 +1,13 @@ # # -*- coding: utf-8 -*- # # -# # Copyright (C) 2023 CERN. +# # Copyright (C) 2023-2024 CERN. +# # Copyright (C) 2023 TU Wien. # # # # Invenio-RDM is free software; you can redistribute it and/or modify # # it under the terms of the MIT License; see LICENSE file for more details. """Test user moderation actions.""" + +import pytest from celery import Task from invenio_access.permissions import system_identity from invenio_db import db @@ -19,17 +22,18 @@ class MockRequestModerationTask(Task): """Mock celery task for moderation request.""" - def delay(*args): - user_id = args[0] + def apply_async(self, args=None, kwargs=None, **kwargs_): + user_id = kwargs["user_id"] with db.session.begin_nested(): try: current_user_moderation_service.request_moderation( system_identity, user_id=user_id, uow=None ) - except Exception as ex: + except Exception: pass +@pytest.mark.skip(reason="Faulty test") def test_user_moderation_approve( running_app, mod_identity, unverified_user, es_clear, minimal_record, mocker ): @@ -53,7 +57,7 @@ def test_user_moderation_approve( # This is a patch for tests only. mocker.patch( "invenio_rdm_records.services.components.verified.request_moderation", - MockRequestModerationTask, + MockRequestModerationTask(), ) new_record = records_service.publish( identity=unverified_user.identity, id_=new_version.id @@ -67,7 +71,7 @@ def test_user_moderation_approve( hits = pre_approval_records.to_dict()["hits"]["hits"] is_verified = all([hit["parent"]["is_verified"] for hit in hits]) - assert is_verified == False + assert is_verified is False # Fetch moderation request that was created on publish res = current_requests_service.search( @@ -93,4 +97,35 @@ def test_user_moderation_approve( assert post_approval_records.total == 2 hits = post_approval_records.to_dict()["hits"]["hits"] is_verified = all([hit["parent"]["is_verified"] for hit in hits]) - assert is_verified == True + assert is_verified is True + + +def test_user_moderation_decline( + running_app, mod_identity, unverified_user, es_clear, minimal_record, mocker +): + """Tests user moderation action after decline. + + All of the user's records should be deleted. + """ + # Create a record + draft = records_service.create(unverified_user.identity, minimal_record) + record = records_service.publish(id_=draft.id, identity=unverified_user.identity) + assert not record._record.deletion_status.is_deleted + assert record._record.tombstone is None + + # Fetch moderation request that was created on publish and decline the user + res = current_requests_service.search( + system_identity, params={"q": f"topic.user:{unverified_user.id}"} + ) + assert res.total == 1 + mod_request = res.to_dict()["hits"]["hits"][0] + current_requests_service.execute_action( + mod_identity, id_=mod_request["id"], action="decline" + ) + + # The user's record should now be deleted + record = records_service.read( + id_=draft.id, identity=system_identity, include_deleted=True + ) + assert record._record.deletion_status.is_deleted + assert record._record.tombstone is not None diff --git a/tests/resources/conftest.py b/tests/resources/conftest.py index b65382600..de5fe4a54 100644 --- a/tests/resources/conftest.py +++ b/tests/resources/conftest.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020 Northwestern University. # Copyright (C) 2021 TU Wien. # @@ -35,14 +35,14 @@ def link(url): @pytest.fixture(scope="function") def app_with_allowed_edits(running_app): """Allow editing of published records.""" - running_app.app.config["RDM_LOCK_EDIT_PUBLISHED_FILES"] = lambda x: False + running_app.app.config["RDM_LOCK_EDIT_PUBLISHED_FILES"] = lambda *_, **__: False return running_app @pytest.fixture(scope="function") def app_with_deny_edits(running_app): """Deny editing of published records.""" - running_app.app.config["RDM_LOCK_EDIT_PUBLISHED_FILES"] = lambda x: True + running_app.app.config["RDM_LOCK_EDIT_PUBLISHED_FILES"] = lambda *_, **__: True def init_file(client, recid, key, headers): @@ -69,3 +69,19 @@ def upload_file(client, recid, key): def commit_file(client, recid, key, headers): """Create draft and return its id.""" return client.post(f"/records/{recid}/draft/files/{key}/commit", headers=headers) + + +@pytest.fixture() +def publish_record(headers): + """Factory fixture that publishes a record.""" + + def _publish_record(client, json): + draft = client.post("/records", headers=headers, json=json) + assert 201 == draft.status_code + record = client.post(link(draft.json["links"]["publish"]), headers=headers) + assert 202 == record.status_code + record = client.get(link(record.json["links"]["self"]), headers=headers) + assert 200 == record.status_code + return record.json + + return _publish_record diff --git a/tests/resources/serializers/conftest.py b/tests/resources/serializers/conftest.py index d2c6ef508..1e4fe9d4c 100644 --- a/tests/resources/serializers/conftest.py +++ b/tests/resources/serializers/conftest.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -16,7 +16,7 @@ def parent_record(): return { "pids": { "doi": { - "identifier": "10.5281/inveniordm.1234.parent", + "identifier": "10.1234/inveniordm.1234.parent", "provider": "datacite", "client": "inveniordm", }, @@ -31,15 +31,579 @@ def full_record(full_record, parent_record): return full_record -@pytest.fixture -def minimal_record(minimal_record, parent_record): - """Minimal record metadata with added parent metadata.""" - minimal_record["parent"] = parent_record - return minimal_record - - @pytest.fixture def enhanced_full_record(enhanced_full_record, parent_record): """Enhanced full record metadata with added parent metadata.""" enhanced_full_record["parent"] = parent_record return enhanced_full_record + + +@pytest.fixture +def full_record_to_dict(): + """The to_dict() representation of a full record. + + THIS is the representation that a serializer gets as input. + + It's the static output of service().read().to_dict() (and equally projection in + RecordList.hits), so + - easier to test for specific id + - faster test (no DB hit) + - easier to make adjustments (e.g. removing DOI in the minimal_record_to_dict + version) + - easier to directly see content available when implementing a serializer + """ + return { + "access": { + "embargo": { + "active": True, + "reason": "Only for medical doctors.", + "until": "2131-01-01", + }, + "files": "restricted", + "record": "public", + "status": "embargoed", + }, + "created": "2023-11-14T18:30:55.738898+00:00", + "custom_fields": {}, + "deletion_status": { + "is_deleted": False, + "status": "P", + }, + "files": { + "count": 1, + "enabled": True, + "entries": { + "test.txt": { + "checksum": "md5:e795abeef2c38de2b064be9f6364ceae", + "ext": "txt", + "id": "d22bde05-5a36-48a3-86a7-acf2c4bb6f64", + "key": "test.txt", + "metadata": None, + "mimetype": "text/plain", + "size": 9, + } + }, + "order": [], + "total_bytes": 9, + }, + "id": "12345-abcde", + "is_draft": False, + "is_published": True, + "links": { + "access": "https://127.0.0.1:5000/api/records/12345-abcde/access", + "access_links": "https://127.0.0.1:5000/api/records/12345-abcde/access/links", # noqa + "access_request": "https://127.0.0.1:5000/api/records/12345-abcde/access/request", # noqa + "access_users": "https://127.0.0.1:5000/api/records/12345-abcde/access/users", # noqa + "access_groups": "https://127.0.0.1:5000/api/records/12345-abcde/access/groups", # noqa + "archive": "https://127.0.0.1:5000/api/records/12345-abcde/files-archive", + "archive_media": "https://127.0.0.1:5000/api/records/12345-abcde/media-files-archive", # noqa + "communities": "https://127.0.0.1:5000/api/records/12345-abcde/communities", + "communities-suggestions": "https://127.0.0.1:5000/api/records/12345-abcde/communities-suggestions", # noqa + "doi": "https://handle.stage.datacite.org/10.1234/inveniordm.1234", + "draft": "https://127.0.0.1:5000/api/records/12345-abcde/draft", + "files": "https://127.0.0.1:5000/api/records/12345-abcde/files", + "latest": "https://127.0.0.1:5000/api/records/12345-abcde/versions/latest", + "latest_html": "https://127.0.0.1:5000/records/12345-abcde/latest", + "media_files": "https://127.0.0.1:5000/api/records/12345-abcde/media-files", + "parent": "https://127.0.0.1:5000/api/records/pgfpj-at058", + "parent_doi": "https://127.0.0.1:5000/doi/10.1234/pgfpj-at058", + "parent_html": "https://127.0.0.1:5000/records/pgfpj-at058", + "requests": "https://127.0.0.1:5000/api/records/12345-abcde/requests", + "reserve_doi": "https://127.0.0.1:5000/api/records/12345-abcde/draft/pids/doi", # noqa + "self": "https://127.0.0.1:5000/api/records/12345-abcde", + "self_doi": "https://127.0.0.1:5000/doi/10.1234/inveniordm.1234", + "self_html": "https://127.0.0.1:5000/records/12345-abcde", + "self_iiif_manifest": "https://127.0.0.1:5000/api/iiif/record:12345-abcde/manifest", # noqa + "self_iiif_sequence": "https://127.0.0.1:5000/api/iiif/record:12345-abcde/sequence/default", # noqa + "versions": "https://127.0.0.1:5000/api/records/12345-abcde/versions", + }, + "media_files": { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + }, + "metadata": { + "additional_descriptions": [ + { + "description": "Bla bla bla", + "lang": { + "id": "eng", + "title": { + "da": "Engelsk", + "en": "English", + }, + }, + "type": { + "id": "methods", + "title": { + "en": "Methods", + }, + }, + }, + ], + "additional_titles": [ + { + "lang": { + "id": "eng", + "title": { + "da": "Engelsk", + "en": "English", + }, + }, + "title": "a research data management platform", + "type": { + "id": "subtitle", + "title": { + "en": "Subtitle", + }, + }, + }, + ], + "contributors": [ + { + "affiliations": [ + { + "id": "cern", + "name": "CERN", + }, + { + "name": "TU Wien", + }, + ], + "person_or_org": { + "family_name": "Nielsen", + "given_name": "Lars Holm", + "identifiers": [ + { + "identifier": "0000-0001-8135-3489", + "scheme": "orcid", + } + ], + "name": "Nielsen, Lars Holm", + "type": "personal", + }, + "role": { + "id": "other", + "title": { + "en": "Other", + }, + }, + }, + { + "person_or_org": { + "family_name": "Dirk", + "given_name": "Dirkin", + "name": "Dirk, Dirkin", + "type": "personal", + }, + "role": { + "id": "other", + "title": { + "en": "Other", + }, + }, + }, + ], + "creators": [ + { + "affiliations": [ + { + "id": "cern", + "name": "CERN", + }, + { + "name": "free-text", + }, + ], + "person_or_org": { + "family_name": "Nielsen", + "given_name": "Lars Holm", + "identifiers": [ + { + "identifier": "0000-0001-8135-3489", + "scheme": "orcid", + }, + ], + "name": "Nielsen, Lars Holm", + "type": "personal", + }, + }, + { + "person_or_org": { + "family_name": "Tom", + "given_name": "Blabin", + "name": "Tom, Blabin", + "type": "personal", + }, + }, + ], + "dates": [ + { + "date": "1939/1945", + "description": "A date", + "type": { + "id": "other", + "title": { + "en": "Other", + }, + }, + }, + ], + "description": "

A description

with HTML tags

", + "formats": [ + "application/pdf", + ], + "funding": [ + { + "award": { + "identifiers": [ + { + "identifier": "https://sandbox.zenodo.org/", + "scheme": "url", + } + ], + "number": "111023", + "title": { + "en": "Launching of the research program on meaning processing", # noqa + }, + }, + "funder": { + "id": "00k4n6c32", + "name": "European Commission", + }, + }, + ], + "identifiers": [ + { + "identifier": "1924MNRAS..84..308E", + "scheme": "ads", + } + ], + "languages": [ + { + "id": "dan", + "title": { + "da": "Dansk", + "en": "Danish", + }, + }, + { + "id": "eng", + "title": { + "da": "Engelsk", + "en": "English", + }, + }, + ], + "locations": { + "features": [ + { + "description": "test location description", + "geometry": { + "coordinates": [ + -32.94682, + -60.63932, + ], + "type": "Point", + }, + "identifiers": [ + { + "identifier": "12345abcde", + "scheme": "wikidata", + }, + { + "identifier": "12345abcde", + "scheme": "geonames", + }, + ], + "place": "test location place", + }, + ], + }, + "publication_date": "2018/2020-09", + "publisher": "InvenioRDM", + "references": [ + { + "reference": "Nielsen et al,..", + "identifier": "0000 0001 1456 7559", + "scheme": "isni", + }, + ], + "related_identifiers": [ + { + "identifier": "10.1234/foo.bar", + "relation_type": { + "id": "iscitedby", + "title": { + "en": "Is cited by", + }, + }, + "resource_type": { + "id": "dataset", + "title": { + "en": "Dataset", + }, + }, + "scheme": "doi", + }, + ], + "resource_type": { + "id": "image-photo", + "title": { + "en": "Photo", + }, + }, + "rights": [ + { + "description": { + "en": "A description", + }, + "link": "https://customlicense.org/licenses/by/4.0/", + "title": { + "en": "A custom license", + }, + }, + { + "description": { + "en": "The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.", # noqa + }, + "id": "cc-by-4.0", + "props": { + "scheme": "spdx", + "url": "https://creativecommons.org/licenses/by/4.0/legalcode", + }, + "title": { + "en": "Creative Commons Attribution 4.0 International", + }, + }, + ], + "sizes": [ + "11 pages", + ], + "subjects": [ + { + "id": "http://id.nlm.nih.gov/mesh/A-D000007", + "scheme": "MeSH", + "subject": "Abdominal Injuries", + }, + { + "subject": "custom", + }, + ], + "title": "InvenioRDM", + "version": "v1.0", + }, + "parent": { + "access": { + "grants": [], + "links": [], + "owned_by": { + "user": 2, + }, + "settings": { + "accept_conditions_text": None, + "allow_guest_requests": False, + "allow_user_requests": False, + "secret_link_expiration": 0, + }, + }, + "communities": {}, + "id": "pgfpj-at058", + "pids": { + "doi": { + "client": "datacite", + "identifier": "10.1234/pgfpj-at058", + "provider": "datacite", + }, + }, + }, + "pids": { + "doi": { + "client": "datacite", + "identifier": "10.1234/12345-abcde", + "provider": "datacite", + }, + "oai": { + "identifier": "oai:invenio-rdm.com:12345-abcde", + "provider": "oai", + }, + }, + "revision_id": 4, + "stats": { + "all_versions": { + "data_volume": 0.0, + "downloads": 0, + "unique_downloads": 0, + "unique_views": 0, + "views": 0, + }, + "this_version": { + "data_volume": 0.0, + "downloads": 0, + "unique_downloads": 0, + "unique_views": 0, + "views": 0, + }, + }, + "status": "published", + "updated": "2023-11-14T18:30:55.977122+00:00", + "versions": { + "index": 1, + "is_latest": True, + "is_latest_draft": True, + }, + } + + +@pytest.fixture +def minimal_record_to_dict(): + """The to_dict() representation of a minimal record. + + THIS is the representation that a serializer gets as input. + + See full_record_to_dict above for motivation. + """ + return { + "access": { + "embargo": { + "active": False, + "reason": None, + }, + "files": "public", + "record": "public", + "status": "metadata-only", + }, + "created": "2023-11-14T19:33:09.837080+00:00", + "custom_fields": {}, + "deletion_status": { + "is_deleted": False, + "status": "P", + }, + "files": { + "count": 0, + "enabled": False, # Most tests don't care about files + "entries": {}, + "order": [], + "total_bytes": 0, + }, + "id": "67890-fghij", + "is_draft": False, + "is_published": True, + "links": { + "access": "https://127.0.0.1:5000/api/records/67890-fghij/access", + "access_links": "https://127.0.0.1:5000/api/records/67890-fghij/access/links", # noqa + "access_request": "https://127.0.0.1:5000/api/records/67890-fghij/access/request", # noqa + "access_users": "https://127.0.0.1:5000/api/records/67890-fghij/access/users", # noqa + "access_groups": "https://127.0.0.1:5000/api/records/67890-fghij/access/groups", # noqa + "archive": "https://127.0.0.1:5000/api/records/67890-fghij/files-archive", + "archive_media": "https://127.0.0.1:5000/api/records/67890-fghij/media-files-archive", # noqa + "communities": "https://127.0.0.1:5000/api/records/67890-fghij/communities", + "communities-suggestions": "https://127.0.0.1:5000/api/records/67890-fghij/communities-suggestions", # noqa + "doi": "https://handle.stage.datacite.org/10.1234/67890-fghij", + "draft": "https://127.0.0.1:5000/api/records/67890-fghij/draft", + "files": "https://127.0.0.1:5000/api/records/67890-fghij/files", + "latest": "https://127.0.0.1:5000/api/records/67890-fghij/versions/latest", + "latest_html": "https://127.0.0.1:5000/records/67890-fghij/latest", + "media_files": "https://127.0.0.1:5000/api/records/67890-fghij/media-files", + "parent": "https://127.0.0.1:5000/api/records/pgfpj-at058", + "parent_doi": "https://127.0.0.1:5000/doi/10.1234/pgfpj-at058", + "parent_html": "https://127.0.0.1:5000/records/pgfpj-at058", + "requests": "https://127.0.0.1:5000/api/records/67890-fghij/requests", + "reserve_doi": "https://127.0.0.1:5000/api/records/67890-fghij/draft/pids/doi", # noqa + "self": "https://127.0.0.1:5000/api/records/67890-fghij", + "self_doi": "https://127.0.0.1:5000/doi/10.1234/67890-fghij", + "self_html": "https://127.0.0.1:5000/records/67890-fghij", + "self_iiif_manifest": "https://127.0.0.1:5000/api/iiif/record:67890-fghij/manifest", # noqa + "self_iiif_sequence": "https://127.0.0.1:5000/api/iiif/record:67890-fghij/sequence/default", # noqa + "versions": "https://127.0.0.1:5000/api/records/67890-fghij/versions", + }, + "media_files": { + "count": 0, + "enabled": False, + "entries": {}, + "order": [], + "total_bytes": 0, + }, + "metadata": { + "creators": [ + { + "person_or_org": { + "family_name": "Brown", + "given_name": "Troy", + "type": "personal", + }, + }, + { + "person_or_org": { + "name": "Troy Inc.", + "type": "organizational", + }, + }, + ], + "publication_date": "2020-06-01", + "publisher": "Acme Inc", + "resource_type": { + "id": "image-photo", + "title": { + "en": "Photo", + }, + }, + "title": "A Romans story", + }, + "parent": { + "access": { + "grants": [], + "links": [], + "owned_by": { + "user": 2, + }, + "settings": { + "accept_conditions_text": None, + "allow_guest_requests": False, + "allow_user_requests": False, + "secret_link_expiration": 0, + }, + }, + "communities": {}, + "id": "pgfpj-at058", + "pids": { + "doi": { + "client": "datacite", + "identifier": "10.1234/pgfpj-at058", + "provider": "datacite", + }, + }, + }, + "pids": { + "oai": { + "identifier": "oai:invenio-rdm.com:67890-fghij", + "provider": "oai", + }, + }, + "revision_id": 4, + "stats": { + "all_versions": { + "data_volume": 0.0, + "downloads": 0, + "unique_downloads": 0, + "unique_views": 0, + "views": 0, + }, + "this_version": { + "data_volume": 0.0, + "downloads": 0, + "unique_downloads": 0, + "unique_views": 0, + "views": 0, + }, + }, + "status": "published", + "updated": "2023-11-14T18:30:55.977122+00:00", + "versions": { + "index": 1, + "is_latest": True, + "is_latest_draft": True, + }, + } diff --git a/tests/resources/serializers/test_bibtex_serializer.py b/tests/resources/serializers/test_bibtex_serializer.py index c081c8f87..170881fdd 100644 --- a/tests/resources/serializers/test_bibtex_serializer.py +++ b/tests/resources/serializers/test_bibtex_serializer.py @@ -1,14 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN +# Copyright (C) 2023-2024 CERN # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Resources serializers tests.""" -from collections import Iterable - import pytest from invenio_rdm_records.resources.serializers.bibtex import BibtexSerializer @@ -30,14 +28,14 @@ def updated_minimal_record(minimal_record): @pytest.fixture(scope="function") -def updated_full_record(full_record): +def updated_full_record(full_record_to_dict): """Update fields (done after record create) for BibTex serializer.""" - full_record["access"]["status"] = "embargoed" - full_record["created"] = "2023-03-23T00:00:00.000000+00:00" - full_record["id"] = "abcde-fghij" - full_record["metadata"]["resource_type"]["id"] = "other" + full_record_to_dict["access"]["status"] = "embargoed" + full_record_to_dict["created"] = "2023-03-23T00:00:00.000000+00:00" + full_record_to_dict["id"] = "abcde-fghij" + full_record_to_dict["metadata"]["resource_type"]["id"] = "other" - return full_record + return full_record_to_dict def test_bibtex_serializer_minimal_record(running_app, updated_minimal_record): @@ -66,16 +64,386 @@ def test_bibtex_serializer_full_record(running_app, updated_full_record): serializer = BibtexSerializer() serialized_record = serializer.serialize_object(updated_full_record) + expected_data = ( + "@misc{nielsen_2023_abcde-fghij,\n" + " author = {Nielsen, Lars Holm and\n" + " Tom, Blabin},\n" + " title = {InvenioRDM},\n" + " month = mar,\n" + " year = 2023,\n" + " publisher = {InvenioRDM},\n" + " version = {v1.0},\n" + " doi = {10.1234/12345-abcde},\n" + " url = {https://doi.org/10.1234/12345-abcde}\n" + "}" + ) + + assert serialized_record == expected_data + + +@pytest.mark.parametrize( + "resource_type", + [ + ("publication"), + ("publication-annotationcollection"), + ("publication-section"), + ("publication-conferenceproceeding"), + ("publication-datamanagementplan"), + ("publication-journal"), + ("publication-patent"), + ("publication-peerreview"), + ("publication-deliverable"), + ("publication-milestone"), + ("publication-proposal"), + ("publication-report"), + ("publication-softwaredocumentation"), + ("publication-taxonomictreatment"), + ("publication-datapaper"), + ("publication-dissertation"), + ("publication-standard"), + ("publication-other"), + ("poster"), + ("presentation"), + ("event"), + ("image"), + ("image-figure"), + ("image-plot"), + ("image-drawing"), + ("image-diagram"), + ("image-photo"), + ("image-other"), + ("model"), + ("video"), + ("lesson"), + ("software-computationalnotebook"), + ("other"), + ("physicalobject"), + ("workflow"), + ], +) +def test_misc_types(running_app, updated_minimal_record, resource_type): + """Test bibtex misc formatter for each resource type.""" + updated_minimal_record["metadata"]["resource_type"]["id"] = resource_type + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@misc{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " month = mar,", + " year = 2023,", + " publisher = {Acme Inc},", + "}", + ] + ) + + assert serialized_record == expected_data + + +def test_serialize_publication_conferencepaper(running_app, updated_minimal_record): + """Test bibtex formatter for conference papers. + + It serializes into the following formats, depending on the data: + + - inproceedings + - proceedings + """ + updated_minimal_record["metadata"]["resource_type"][ + "id" + ] = "publication-conferencepaper" + + # Force serialization into 'inproceedings' + updated_minimal_record.update( + {"custom_fields": {"imprint:imprint": {"title": "book title"}}} + ) + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@inproceedings{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " booktitle = {book title},", + " year = 2023,", + " publisher = {Acme Inc},", + " month = mar,", + "}", + ] + ) + + assert serialized_record == expected_data + + # Force serialization into 'proceedings' + del updated_minimal_record["custom_fields"]["imprint:imprint"] + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@proceedings{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " year = 2023,", + " publisher = {Acme Inc},", + " month = mar,", + "}", + ] + ) + + +def test_serialize_publication_book(running_app, updated_minimal_record): + """Test bibtex formatter for books. + + It serializes into the following formats, depending on the data: + + - book + - booklet + """ + updated_minimal_record["metadata"]["resource_type"]["id"] = "publication-book" + + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@book{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " publisher = {Acme Inc},", + " year = 2023,", + " month = mar,", + "}", + ] + ) + + assert serialized_record == expected_data + + # Force serialization into 'booklet' + del updated_minimal_record["metadata"]["publisher"] + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@booklet{brown_2023_abcde-fghij,", + " title = {A Romans story},", + " author = {Name and", + " Troy Inc.},", + " month = mar,", + " year = 2023,", + "}", + ] + ) + assert serialized_record == expected_data + + +def test_serialize_publication_article(running_app, updated_minimal_record): + """Test bibtex formatter for articles. + + It serializes into 'article'. + """ + updated_minimal_record["metadata"]["resource_type"]["id"] = "publication-article" + + updated_minimal_record.update( + {"custom_fields": {"journal:journal": {"title": "journal title"}}} + ) + + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@article{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " journal = {journal title},", + " year = 2023,", + " month = mar,", + "}", + ] + ) + + assert serialized_record == expected_data + + +def test_serialize_publication_preprint(running_app, updated_minimal_record): + """Test bibtex formatter for preprints. + + It serializes into 'unpublished'. + """ + updated_minimal_record["metadata"]["resource_type"]["id"] = "publication-preprint" + + updated_minimal_record.update( + { + "additional_descriptions": [ + {"type": {"id": "other"}, "description": "a description"} + ] + } + ) + + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@unpublished{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " note = {a description},", + " month = mar,", + " year = 2023,", + "}", + ] + ) + + assert serialized_record == expected_data + + +def test_serialize_publication_thesis(running_app, updated_minimal_record): + """Test bibtex formatter for thesis. + + It serializes into 'phdthesis'. + """ + updated_minimal_record["metadata"]["resource_type"]["id"] = "publication-thesis" + + updated_minimal_record.update( + {"custom_fields": {"thesis:university": "A university"}} + ) + + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@phdthesis{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " school = {A university},", + " year = 2023,", + " month = mar,", + "}", + ] + ) + + assert serialized_record == expected_data + + +def test_serialize_publication_technicalnote(running_app, updated_minimal_record): + """Test bibtex formatter for technical note. + + It serializes into 'manual'. + """ + updated_minimal_record["metadata"]["resource_type"][ + "id" + ] = "publication-technicalnote" + + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@manual{brown_2023_abcde-fghij,", + " title = {A Romans story},", + " author = {Name and", + " Troy Inc.},", + " month = mar,", + " year = 2023,", + "}", + ] + ) + + assert serialized_record == expected_data + + +def test_serialize_publication_workingpaper(running_app, updated_minimal_record): + """Test bibtex formatter for working paper. + + It serializes into 'unpublished'. + """ + updated_minimal_record["metadata"]["resource_type"][ + "id" + ] = "publication-workingpaper" + + updated_minimal_record.update( + { + "additional_descriptions": [ + {"type": {"id": "other"}, "description": "a description"} + ] + } + ) + + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + expected_data = "\n".join( [ - "@misc{nielsen_2023_abcde-fghij,", - " author = {Nielsen, Lars Holm},", - " title = {InvenioRDM},", + "@unpublished{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " note = {a description},", " month = mar,", " year = 2023,", - " publisher = {InvenioRDM},", - " version = {v1.0},", - " doi = {10.5281/inveniordm.1234},", + "}", + ] + ) + + assert serialized_record == expected_data + + +def test_serialize_software(running_app, updated_minimal_record): + """Test bibtex formatter for software. + + It serializes into 'software'. + """ + updated_minimal_record["metadata"]["resource_type"]["id"] = "software" + + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@software{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " month = mar,", + " year = 2023,", + " publisher = {Acme Inc},", + "}", + ] + ) + + assert serialized_record == expected_data + + +def test_serialize_dataset(running_app, updated_minimal_record): + """Test bibtex formatter for dataset. + + It serializes into 'dataset'. + """ + updated_minimal_record["metadata"]["resource_type"]["id"] = "dataset" + + serializer = BibtexSerializer() + serialized_record = serializer.serialize_object(updated_minimal_record) + + expected_data = "\n".join( + [ + "@dataset{brown_2023_abcde-fghij,", + " author = {Name and", + " Troy Inc.},", + " title = {A Romans story},", + " month = mar,", + " year = 2023,", + " publisher = {Acme Inc},", "}", ] ) diff --git a/tests/resources/serializers/test_cff_serializer.py b/tests/resources/serializers/test_cff_serializer.py new file mode 100644 index 000000000..9f3ab7cf7 --- /dev/null +++ b/tests/resources/serializers/test_cff_serializer.py @@ -0,0 +1,63 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Test CFF serializer.""" + +from invenio_rdm_records.resources.serializers import CFFSerializer + + +def test_cff_serializer(running_app, full_record_to_dict): + """Test JSON CLS Serializer.""" + # if the record is created this field will be present + full_record_to_dict["id"] = "12345-abcde" + full_record_to_dict["metadata"]["resource_type"]["id"] = "software" + ri = full_record_to_dict["metadata"]["related_identifiers"] + full_record_to_dict["metadata"]["related_identifiers"] = [ + *ri, + { + "scheme": "url", + "identifier": "https://github.com/citation-file-format/cff-converter-python", + "resource_type": {"id": "software"}, + "relation_type": {"id": "issupplementto"}, + }, + ] + + serializer = CFFSerializer() + serialized_record = serializer.serialize_object(full_record_to_dict) + assert serialized_record == ( + "abstract:

A description

with HTML tags

\n" + "authors:\n" + "- affiliation: CERN\n" + " family-names: Nielsen\n" + " given-names: Lars Holm\n" + " orcid: 0000-0001-8135-3489\n" + "- family-names: Tom\n" + " given-names: Blabin\n" + "- affiliation: CERN\n" + " family-names: Nielsen\n" + " given-names: Lars Holm\n" + " orcid: 0000-0001-8135-3489\n" + "- family-names: Dirk\n" + " given-names: Dirkin\n" + "cff-version: 1.2.0\n" + "date-released: 2018/2020-09\n" + "doi: 10.1234/12345-abcde\n" + "identifiers:\n" + "- type: other\n" + " value: 1924MNRAS..84..308E\n" + "keywords:\n" + "- http://id.nlm.nih.gov/mesh/A-D000007\n" + "- Abdominal Injuries\n" + "- custom\n" + "license:\n" + "- cc-by-4.0\n" + "license-url: https://customlicense.org/licenses/by/4.0/\n" + "repository-code: " + "https://github.com/citation-file-format/cff-converter-python\n" + "title: InvenioRDM\n" + "type: software\n" + "version: v1.0\n" + ) diff --git a/tests/resources/serializers/test_csl_serializer.py b/tests/resources/serializers/test_csl_serializer.py index 782b2e6ae..319f63a3c 100644 --- a/tests/resources/serializers/test_csl_serializer.py +++ b/tests/resources/serializers/test_csl_serializer.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -21,36 +21,33 @@ from invenio_rdm_records.resources.serializers.csl.schema import CSLJSONSchema -def test_csl_json_serializer(running_app, full_record): +def test_csl_json_serializer(running_app, full_record_to_dict): """Test JSON CLS Serializer.""" # if the record is created this field will be present - full_record["id"] = "12345-abcde" + full_record_to_dict["id"] = "12345-abcde" expected_data = { - "publisher": "InvenioRDM", - "DOI": "10.5281/inveniordm.1234", - "language": "dan", - "title": "InvenioRDM", - "issued": {"date-parts": [["2018"], ["2020", "09"]]}, + "DOI": "10.1234/12345-abcde", "abstract": "A description \nwith HTML tags", "author": [ - { - "family": "Nielsen", - "given": "Lars Holm", - } + {"family": "Nielsen", "given": "Lars Holm"}, + {"family": "Tom", "given": "Blabin"}, ], - "note": "Funding by European Commission ROR 00k4n6c32.", - "version": "v1.0", - "type": "graphic", "id": "12345-abcde", + "issued": {"date-parts": [["2018"], ["2020", "09"]]}, + "language": "dan", + "publisher": "InvenioRDM", + "title": "InvenioRDM", + "type": "graphic", + "version": "v1.0", } serializer = CSLJSONSerializer() - serialized_record = serializer.dump_obj(full_record) + serialized_record = serializer.dump_obj(full_record_to_dict) assert serialized_record == expected_data # test wrong publication date - rec_wrong_date = deepcopy(full_record) + rec_wrong_date = deepcopy(full_record_to_dict) rec_wrong_date["metadata"]["publication_date"] = "wrong" expected = deepcopy(expected_data) del expected["issued"] # missing @@ -151,3 +148,14 @@ def test_citation_string_serializer_record( # in case of error, the response is JSON assert response.headers["content-type"] == "application/json" assert f"Citation string style not found." in body + + +def test_citation_string_serializer_empty_record(running_app, empty_record): + """Test Citation String Serializer for an empty record.""" + + expected_data = {} + + serializer = CSLJSONSchema() + serialized_record = serializer.dump(empty_record) + + assert serialized_record == expected_data diff --git a/tests/resources/serializers/test_datacite_serializer.py b/tests/resources/serializers/test_datacite_serializer.py index 389268a0a..967829aec 100644 --- a/tests/resources/serializers/test_datacite_serializer.py +++ b/tests/resources/serializers/test_datacite_serializer.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. -# Copyright (C) 2021 Caltech. +# Copyright (C) 2021-2024 CERN. +# Copyright (C) 2021-2024 Caltech. # Copyright (C) 2021 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -17,117 +17,188 @@ ) +@pytest.fixture(scope="function") +def minimal_record(minimal_record, parent_record): + """Minimal record metadata with added parent metadata.""" + minimal_record["parent"] = parent_record + minimal_record["links"] = dict(self_html="https://self-link.com") + return minimal_record + + @pytest.fixture -def full_modified_record(full_record): - full_record["pids"]["unknown-scheme"] = { +def full_modified_record(full_record_to_dict): + full_record_to_dict["pids"]["unknown-scheme"] = { "identifier": "unknown-1234", "provider": "unknown", "client": "unknown", } - full_record["metadata"]["identifiers"] = [ + full_record_to_dict["metadata"]["identifiers"] = [ {"identifier": "unknown-1234-a", "scheme": "unknown-scheme"} ] - full_record["metadata"]["related_identifiers"] = [ + full_record_to_dict["metadata"]["related_identifiers"] = [ { "identifier": "unknown-1234-b", "scheme": "unknown-scheme", - "relation_type": { - "id": "iscitedby", - "title": {"en": "Is cited by"}, - }, + "relation_type": {"id": "iscitedby", "title": {"en": "Is cited by"}}, } ] - full_record["metadata"]["creators"][0]["person_or_org"]["identifiers"] = [ + full_record_to_dict["metadata"]["creators"][0]["person_or_org"]["identifiers"] = [ {"identifier": "unknown-2345", "scheme": "unknown-scheme"} ] - return full_record + return full_record_to_dict + + +@pytest.fixture +def full_geolocation_box_record(full_record_to_dict): + full_record_to_dict["metadata"]["locations"]["features"] = [ + { + "geometry": { + "coordinates": [ + [ + [-105.92, 33.17], + [-106.0, 33.17], + [-106.0, 33.0], + [-105.92, 33.0], + [-105.92, 33.17], + ] + ], + "type": "Polygon", + } + } + ] + return full_record_to_dict + + +@pytest.fixture +def full_geolocation_polygon_record(full_record_to_dict): + full_record_to_dict["metadata"]["locations"]["features"] = [ + { + "geometry": { + "coordinates": [ + [ + [33.17, -105.92], + [33.17, -106.0], + [33.0, -106.0], + [33.0, -105.92], + [33.12, -105.92], + [33.17, -105.32], + ] + ], + "type": "Polygon", + } + } + ] + return full_record_to_dict + + +@pytest.fixture +def full_modified_date_record(full_record_to_dict): + full_record_to_dict["updated"] = "2022-12-12T22:50:10.573125+00:00" + return full_record_to_dict -def test_datacite43_serializer(running_app, full_record): +def test_datacite43_serializer(running_app, full_record_to_dict): """Test serializer to DataCite 4.3 JSON""" - full_record["metadata"]["rights"].append( + full_record_to_dict["metadata"]["rights"].append( { "title": {"en": "No rightsUri license"}, } ) + # for HTML stripping test purposes expected_data = { - "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, - "creators": [ + "contributors": [ { - "name": "Nielsen, Lars Holm", - "nameType": "Personal", - "givenName": "Lars Holm", + "affiliation": [{"name": "CERN"}, {"name": "TU Wien"}], + "contributorType": "Other", "familyName": "Nielsen", + "givenName": "Lars Holm", + "name": "Nielsen, Lars Holm", "nameIdentifiers": [ { "nameIdentifier": "0000-0001-8135-3489", "nameIdentifierScheme": "ORCID", } ], - "affiliation": [ - {"name": "free-text"}, - { - "name": "CERN", - "affiliationIdentifier": "https://ror.org/01ggx4157", - "affiliationIdentifierScheme": "ROR", - }, - ], - } - ], - "titles": [ - {"title": "InvenioRDM"}, - { - "title": "a research data management platform", - "titleType": "Subtitle", - "lang": "eng", + "nameType": "Personal", }, - ], - "publisher": "InvenioRDM", - "publicationYear": "2018", - "subjects": [ - {"subject": "custom"}, { - "subject": "Abdominal Injuries", - "subjectScheme": "MeSH", - "valueURI": "http://id.nlm.nih.gov/mesh/A-D000007", + "contributorType": "Other", + "familyName": "Dirk", + "givenName": "Dirkin", + "name": "Dirk, Dirkin", + "nameIdentifiers": [], + "nameType": "Personal", }, ], - "contributors": [ + "creators": [ { - "name": "Nielsen, Lars Holm", - "nameType": "Personal", - "contributorType": "Other", - "givenName": "Lars Holm", + "affiliation": [{"name": "CERN"}, {"name": "free-text"}], "familyName": "Nielsen", + "givenName": "Lars Holm", + "name": "Nielsen, Lars Holm", "nameIdentifiers": [ { "nameIdentifier": "0000-0001-8135-3489", "nameIdentifierScheme": "ORCID", } ], - "affiliation": [ - { - "name": "CERN", - "affiliationIdentifier": "https://ror.org/01ggx4157", - "affiliationIdentifierScheme": "ROR", - } - ], - } + "nameType": "Personal", + }, + { + "familyName": "Tom", + "givenName": "Blabin", + "name": "Tom, Blabin", + "nameIdentifiers": [], + "nameType": "Personal", + }, ], "dates": [ {"date": "2018/2020-09", "dateType": "Issued"}, - {"date": "1939/1945", "dateType": "Other", "dateInformation": "A date"}, + {"date": "1939/1945", "dateInformation": "A date", "dateType": "Other"}, + {"date": "2023-11-14", "dateType": "Updated"}, + ], + "descriptions": [ + { + "description": "A description \nwith HTML tags", + "descriptionType": "Abstract", + }, + {"description": "Bla bla bla", "descriptionType": "Methods", "lang": "eng"}, + ], + "formats": ["application/pdf"], + "fundingReferences": [ + { + "awardNumber": "111023", + "awardTitle": "Launching of the research program on " + "meaning processing", + "awardURI": "https://sandbox.zenodo.org/", + "funderName": "European Commission", + } + ], + "geoLocations": [ + { + "geoLocationPlace": "test location place", + "geoLocationPoint": { + "pointLatitude": "-60.63932", + "pointLongitude": "-32.94682", + }, + } ], - "language": "dan", "identifiers": [ - {"identifier": "10.5281/inveniordm.1234", "identifierType": "DOI"}, - {"identifier": "oai:vvv.com:abcde-fghij", "identifierType": "oai"}, + { + "identifier": "https://127.0.0.1:5000/records/12345-abcde", + "identifierType": "URL", + }, + {"identifier": "10.1234/12345-abcde", "identifierType": "DOI"}, + {"identifier": "oai:invenio-rdm.com:12345-abcde", "identifierType": "oai"}, {"identifier": "1924MNRAS..84..308E", "identifierType": "bibcode"}, ], + "language": "dan", + "publicationYear": "2018", + "publisher": "InvenioRDM", "relatedIdentifiers": [ { "relatedIdentifier": "10.1234/foo.bar", @@ -136,180 +207,198 @@ def test_datacite43_serializer(running_app, full_record): "resourceTypeGeneral": "Dataset", }, { - "relatedIdentifier": "10.5281/inveniordm.1234.parent", + "relatedIdentifier": "10.1234/pgfpj-at058", "relatedIdentifierType": "DOI", "relationType": "IsVersionOf", }, ], - "sizes": ["11 pages"], - "formats": ["application/pdf"], - "version": "v1.0", "rightsList": [ { "rights": "A custom license", "rightsUri": "https://customlicense.org/licenses/by/4.0/", }, - {"rights": "No rightsUri license"}, { "rights": "Creative Commons Attribution 4.0 International", - "rightsIdentifierScheme": "spdx", "rightsIdentifier": "cc-by-4.0", + "rightsIdentifierScheme": "spdx", "rightsUri": "https://creativecommons.org/licenses/by/4.0/legalcode", }, + {"rights": "No rightsUri license"}, ], - "descriptions": [ + "schemaVersion": "http://datacite.org/schema/kernel-4", + "sizes": ["11 pages"], + "subjects": [ { - "description": "A description \nwith HTML tags", - "descriptionType": "Abstract", + "subject": "Abdominal Injuries", + "subjectScheme": "MeSH", + "valueURI": "http://id.nlm.nih.gov/mesh/A-D000007", }, - {"description": "Bla bla bla", "descriptionType": "Methods", "lang": "eng"}, - ], - "geoLocations": [ - { - "geoLocationPoint": { - "pointLatitude": -32.94682, - "pointLongitude": -60.63932, - }, - "geoLocationPlace": "test location place", - } + {"subject": "custom"}, ], - "fundingReferences": [ + "titles": [ + {"title": "InvenioRDM"}, { - "funderName": "European Commission", - "funderIdentifier": "00k4n6c32", - "funderIdentifierType": "ROR", - "awardTitle": ( - "Personalised Treatment For Cystic Fibrosis Patients With " - "Ultra-rare CFTR Mutations (and beyond)" - ), - "awardNumber": "755021", - "awardURI": "https://cordis.europa.eu/project/id/755021", - } + "lang": "eng", + "title": "a research data management platform", + "titleType": "Subtitle", + }, ], - "schemaVersion": "http://datacite.org/schema/kernel-4", + "types": {"resourceType": "Photo", "resourceTypeGeneral": "Image"}, + "version": "v1.0", } serializer = DataCite43JSONSerializer() - serialized_record = serializer.dump_obj(full_record) + serialized_record = serializer.dump_obj(full_record_to_dict) assert serialized_record == expected_data -def test_datacite43_xml_serializer(running_app, full_record): - expected_data = [ - "", - '', # noqa - ' 10.5281/inveniordm.1234', # noqa - " ", - ' oai:vvv.com:abcde-fghij', - ' 1924MNRAS..84..308E', # noqa - " ", - " ", - " ", - ' Nielsen, Lars Holm', # noqa - " Lars Holm", - " Nielsen", - ' 0000-0001-8135-3489', # noqa - " free-text", - ' CERN', # noqa - " ", - " ", - " ", - " InvenioRDM", - ' a research data management platform', # noqa - " ", - " InvenioRDM", - " 2018", - " ", - " custom", - ' Abdominal Injuries', - " ", - " ", - ' ', - ' Nielsen, Lars Holm', # noqa - " Lars Holm", - " Nielsen", - ' 0000-0001-8135-3489', # noqa - ' CERN', # noqa - " ", - " ", - " ", - ' 2018/2020-09', - ' 1939/1945', # noqa - " ", - " dan", - ' Photo', - " ", - ' 10.1234/foo.bar', # noqa - ' 10.5281/inveniordm.1234.parent', # noqa - " ", - " ", - " 11 pages", - " ", - " ", - " application/pdf", - " ", - " v1.0", - " ", - ' A custom license', # noqa - ' Creative Commons Attribution 4.0 International', # noqa - " ", - " ", - ' A description ', - "with HTML tags", - ' Bla bla bla', # noqa - " ", - " ", - " ", - " test location place", - " ", - " -60.63932", - " -32.94682", - " ", - " ", - " ", - " ", - " ", - " European Commission", - ' 00k4n6c32', # noqa - " 755021", - " Personalised Treatment For Cystic Fibrosis Patients With Ultra-rare CFTR Mutations (and beyond)", # noqa - " ", - " ", - "", - "", # this is because of the split - ] +def test_datacite43_xml_serializer(running_app, full_record_to_dict): + expected_data = ( + "\n" + '\n' + ' 10.1234/12345-abcde\n' + " \n" + " https://127.0.0.1:5000/records/12345-abcde\n' + " oai:invenio-rdm.com:12345-abcde\n' + " 1924MNRAS..84..308E\n' + " \n" + " \n" + " \n" + ' Nielsen, Lars Holm\n' + " Lars Holm\n" + " Nielsen\n" + " 0000-0001-8135-3489\n' + " CERN\n" + " free-text\n" + " \n" + " \n" + ' Tom, Blabin\n' + " Blabin\n" + " Tom\n" + " \n" + " \n" + " \n" + " InvenioRDM\n" + ' a research data management ' + "platform\n" + " \n" + " InvenioRDM\n" + " 2018\n" + " \n" + ' Abdominal Injuries\n' + " custom\n" + " \n" + " \n" + ' \n' + ' Nielsen, Lars ' + "Holm\n" + " Lars Holm\n" + " Nielsen\n" + " 0000-0001-8135-3489\n' + " CERN\n" + " TU Wien\n" + " \n" + ' \n' + ' Dirk, Dirkin\n' + " Dirkin\n" + " Dirk\n" + " \n" + " \n" + " \n" + ' 2018/2020-09\n' + ' 1939/1945\n' + ' 2023-11-14\n' + " \n" + " dan\n" + ' Photo\n' + " \n" + ' 10.1234/foo.bar\n' + ' 10.1234/pgfpj-at058\n' + " \n" + " \n" + " 11 pages\n" + " \n" + " \n" + " application/pdf\n" + " \n" + " v1.0\n" + " \n" + ' A custom ' + "license\n" + " Creative Commons ' + "Attribution 4.0 International\n" + " \n" + " \n" + ' A description \n' + "with HTML tags\n" + ' Bla bla ' + "bla\n" + " \n" + " \n" + " \n" + " test location place\n" + " \n" + " -32.94682\n" + " -60.63932\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " European Commission\n" + " 111023\n" + " Launching of the research program on meaning " + "processing\n" + " \n" + " \n" + "\n" + ) serializer = DataCite43XMLSerializer() - serialized_record = serializer.serialize_object(full_record) + serialized_record = serializer.serialize_object(full_record_to_dict) - assert serialized_record == "\n".join(expected_data) + assert serialized_record == expected_data def test_datacite43_identifiers(running_app, minimal_record): """Test serialization of records with DOI alternate identifiers""" # Mimic user putting DOI in alternate identifier field minimal_record["metadata"]["identifiers"] = [ - {"identifier": "10.5281/inveniordm.1234", "scheme": "doi"} + {"identifier": "10.1234/inveniordm.1234", "scheme": "doi"} ] serializer = DataCite43JSONSerializer() serialized_record = serializer.dump_obj(minimal_record) - assert "identifiers" not in serialized_record + assert len(serialized_record["identifiers"]) == 1 minimal_record["pids"] = { "doi": { - "identifier": "10.5281/inveniordm.1234", + "identifier": "10.1234/inveniordm.1234", "provider": "datacite", "client": "inveniordm", - }, + } } serialized_record = serializer.dump_obj(minimal_record) - assert len(serialized_record["identifiers"]) == 1 + assert len(serialized_record["identifiers"]) == 2 identifier = serialized_record["identifiers"][0]["identifier"] - assert identifier == "10.5281/inveniordm.1234" + assert identifier == "https://self-link.com" + identifier = serialized_record["identifiers"][1]["identifier"] + assert identifier == "10.1234/inveniordm.1234" def test_datacite43_serializer_with_unknown_id_schemes( @@ -321,10 +410,7 @@ def test_datacite43_serializer_with_unknown_id_schemes( # if the behaviour of the datacite serializer is changed, the asserts # below should probably be adjusted accordingly - expected_pid_id = { - "identifier": "unknown-1234", - "identifierType": "unknown-scheme", - } + expected_pid_id = {"identifier": "unknown-1234", "identifierType": "unknown-scheme"} expected_pid_id_2 = { "identifier": "unknown-1234-a", "identifierType": "unknown-scheme", @@ -344,10 +430,10 @@ def test_datacite43_serializer_with_unknown_id_schemes( assert expected_pid_id in serialized_record["identifiers"] assert expected_pid_id_2 in serialized_record["identifiers"] - assert len(serialized_record["identifiers"]) == 4 + assert len(serialized_record["identifiers"]) == 5 - assert expected_related_id in serialized_record["relatedIdentifiers"] - assert len(serialized_record["relatedIdentifiers"]) == 2 + assert expected_related_id not in serialized_record["relatedIdentifiers"] + assert len(serialized_record["relatedIdentifiers"]) == 1 creator_ids = serialized_record["creators"][0]["nameIdentifiers"] assert expected_creator_id in creator_ids @@ -367,5 +453,74 @@ def test_datacite43_xml_serializer_with_unknown_id_schemes( assert expected_pid_id in serialized_record assert expected_pid_id_2 in serialized_record - assert expected_related_id in serialized_record + assert expected_related_id not in serialized_record assert expected_creator_id in serialized_record + + +def test_datacite43_serializer_with_box(running_app, full_geolocation_box_record): + """Test if the DataCite 4.3 JSON serializer handles geolocation boxes.""" + + expected_box = { + "geoLocationBox": { + "eastBoundLongitude": "-105.92", + "northBoundLatitude": "33.17", + "southBoundLatitude": "33.0", + "westBoundLongitude": "-106.0", + } + } + + serializer = DataCite43JSONSerializer() + + serialized_record_box = serializer.dump_obj(full_geolocation_box_record) + + assert expected_box in serialized_record_box["geoLocations"] + + +def test_datacite43_serializer_with_polygon( + running_app, full_geolocation_polygon_record +): + """Test if the DataCite 4.3 JSON serializer handles geolocation polygons.""" + + expected_polygon = { + "geoLocationPolygon": [ + {"polygonPoint": {"pointLongitude": "33.17", "pointLatitude": "-105.92"}}, + {"polygonPoint": {"pointLongitude": "33.17", "pointLatitude": "-106.0"}}, + {"polygonPoint": {"pointLongitude": "33.0", "pointLatitude": "-106.0"}}, + {"polygonPoint": {"pointLongitude": "33.0", "pointLatitude": "-105.92"}}, + {"polygonPoint": {"pointLongitude": "33.12", "pointLatitude": "-105.92"}}, + {"polygonPoint": {"pointLongitude": "33.17", "pointLatitude": "-105.32"}}, + ] + } + + serializer = DataCite43JSONSerializer() + + serialized_record_polygon = serializer.dump_obj(full_geolocation_polygon_record) + + assert expected_polygon in serialized_record_polygon["geoLocations"] + + +def test_datacite43_serializer_updated_date(running_app, full_modified_date_record): + """Test if the DataCite 4.3 JSON serializer adds system updated date.""" + + expected_dates = [ + {"date": "2018/2020-09", "dateType": "Issued"}, + {"date": "1939/1945", "dateType": "Other", "dateInformation": "A date"}, + {"date": "2022-12-12", "dateType": "Updated"}, + ] + + serializer = DataCite43JSONSerializer() + serialized_record = serializer.dump_obj(full_modified_date_record) + + assert expected_dates == serialized_record["dates"] + assert len(serialized_record["dates"]) == 3 + + +def test_datacite43_serializer_empty_record(running_app, empty_record): + """Test if the DataCite 4.3 JSON serializer handles an empty record.""" + + expected_data = {"schemaVersion": "http://datacite.org/schema/kernel-4"} + + serializer = DataCite43JSONSerializer() + serialized_record = serializer.dump_obj(empty_record) + + assert serialized_record == expected_data diff --git a/tests/resources/serializers/test_dcat_serializer.py b/tests/resources/serializers/test_dcat_serializer.py index 6502c0a04..cc6137b06 100644 --- a/tests/resources/serializers/test_dcat_serializer.py +++ b/tests/resources/serializers/test_dcat_serializer.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -10,152 +10,230 @@ from invenio_rdm_records.resources.serializers import DCATSerializer -def test_dcat_serializer(running_app, enhanced_full_record): - expected_data = [ - "", - '', # noqa - ' ', # noqa - ' ', # noqa - ' ', # noqa - ' https://doi.org/10.5281/inveniordm.1234', # noqa - ' ', # noqa - " ", - ' ', # noqa - ' ', # noqa - " Nielsen, Lars Holm", - " Lars Holm", - " Nielsen", - " ", - " ", - " free-text", - " ", - " ", - " ", - ' ', # noqa - ' https://ror.org/01ggx4157', # noqa - " CERN", - " ", - " ", - " ", - " ", - " ", - " ", - ' ', # noqa - " Tom, Blabin", - " Blabin", - " Tom", - " ", - " ", - " InvenioRDM", - " ", - " ", - " InvenioRDM", - " ", - " ", - ' 2018', # noqa - " custom", - " ", - " ", - ' 111023', # noqa - " Launching of the research program on meaning processing", - ' ', # noqa - " ", - " ", - ' ', # noqa - " ", - ' ', # noqa - ' ', # noqa - " Nielsen, Lars Holm", - " Lars Holm", - " Nielsen", - " ", - " ", - " TU Wien", - " ", - " ", - " ", - ' ', # noqa - ' https://ror.org/01ggx4157', # noqa - " CERN", - " ", - " ", - " ", - " ", - " ", - " ", - ' ', # noqa - " Dirk, Dirkin", - " Dirkin", - " Dirk", - " ", - " ", - ' 2018/2020-09', # noqa - ' 1939/1945', # noqa - ' ', # noqa - " ", - " ", - " oai:invenio-rdm.com:vs40t-1br10", - " oai", - " ", - " ", - ' ', # noqa - " ", - " ", - ' http://adsabs.harvard.edu/abs/1924MNRAS..84..308E', # noqa - " bibcode", - " ", - " ", - " ", - ' ', # noqa - " https://doi.org/10.1234/foo.bar", - ' ', # noqa - ' ', # noqa - " ", - " ", - " ", - ' ', # noqa - " https://doi.org/10.5281/inveniordm.1234.parent", # noqa - " ", - " ", - " v1.0", - " A description with HTML tags", - " ", - " ", - " Bla bla bla", - " ", - " ", - " ", - " ", - ' ', # noqa - " test location place", - " test location place", - ' ', # noqa - ' -60.63932 -32.94682]]>', # noqa - ' ', # noqa - " ", - " ", - " ", - " ", - " ", - " ", - " 11 pages", - " ", - " ", - ' ', # noqa - " ", - ' ', # noqa - " A custom license", - " ", - " ", - ' ', # noqa - ' ', # noqa - " ", - " ", - " ", - "", - "", # this is because of the split - ] +def test_dcat_serializer(running_app, full_record_to_dict): + full_record_to_dict["links"] = dict(self_html="https://self-link.com") + expected_data = ( + "\n" + '\n' + ' \n' + ' \n' + ' \n' + " https://doi.org/10.1234/12345-abcde\n' + ' \n' + " \n" + ' \n' + ' \n' + " Nielsen, Lars Holm\n" + " Lars Holm\n" + " Nielsen\n" + " \n" + " \n" + " CERN\n" + " \n" + " \n" + " \n" + " \n" + " free-text\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ' \n' + " Tom, Blabin\n" + " Blabin\n" + " Tom\n" + " \n" + " \n" + " InvenioRDM\n" + " \n" + " \n" + " InvenioRDM\n" + " \n" + " \n" + " 2018\n' + " \n" + " \n" + " Abdominal Injuries\n" + " \n" + " \n" + " MeSH\n" + " \n" + " \n" + " \n" + " \n" + " custom\n" + " \n" + " \n" + " 111023\n' + " Launching of the research program on meaning " + "processing\n" + " \n" + " \n" + " \n' + " European Commission\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n' + " European Commission\n" + " \n" + " \n" + " \n" + ' \n' + ' \n' + " Nielsen, Lars Holm\n" + " Lars Holm\n" + " Nielsen\n" + " \n" + " \n" + " CERN\n" + " \n" + " \n" + " \n" + " \n" + " TU Wien\n" + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + ' \n' + " Dirk, Dirkin\n" + " Dirkin\n" + " Dirk\n" + " \n" + " \n" + " 2018/2020-09\n' + " 1939/1945\n' + " 2023-11-14\n' + " \n' + ' \n' + " \n" + " \n" + " https://self-link.com\n' + " URL\n" + " \n" + " \n" + " \n" + " \n" + " oai:invenio-rdm.com:12345-abcde\n" + " oai\n" + " \n" + " \n" + " \n' + " \n" + " \n" + " http://adsabs.harvard.edu/abs/1924MNRAS..84..308E\n' + " bibcode\n" + " \n" + " \n" + " \n" + ' \n' + " https://doi.org/10.1234/foo.bar\n" + ' \n' + ' \n' + " \n" + " \n" + " \n" + ' \n' + " " + "https://doi.org/10.1234/pgfpj-at058\n" + " \n" + " \n" + " v1.0\n" + " A description with HTML tags\n" + " \n" + " \n" + " Bla bla bla\n" + " \n" + " \n" + " \n" + " \n" + " \n' + " test location place\n" + " test location place\n" + " \n" + " -32.94682 ' + "-60.63932]]>\n" + " \n' + " \n" + " \n" + " \n" + " \n" + " \n" + " \n" + " 11 pages\n" + " \n" + " \n" + " \n' + " \n" + " \n' + " A custom license\n" + " \n" + " \n" + " \n' + " \n' + " \n" + " \n" + " \n" + " \n" + " \n' + " text/plain\n" + " 9\n" + " \n' + " \n" + " \n" + " \n" + "\n" + ) serializer = DCATSerializer() - serialized_record = serializer.serialize_object(enhanced_full_record) - assert serialized_record == "\n".join(expected_data) + serialized_record = serializer.serialize_object(full_record_to_dict) + assert serialized_record == expected_data diff --git a/tests/resources/serializers/test_dublincore_serializer.py b/tests/resources/serializers/test_dublincore_serializer.py index 230a17e28..52c327d3d 100644 --- a/tests/resources/serializers/test_dublincore_serializer.py +++ b/tests/resources/serializers/test_dublincore_serializer.py @@ -16,18 +16,11 @@ from invenio_rdm_records.resources.serializers.errors import VocabularyItemNotFoundError -@pytest.fixture(scope="function") -def updated_full_record(full_record): - """Update fields (done after record create) for Dublin Core serializer.""" - full_record["access"]["status"] = "embargoed" - - return full_record - - @pytest.fixture(scope="function") def updated_minimal_record(minimal_record): """Update fields (done after record create) for Dublin Core serializer.""" minimal_record["access"]["status"] = "open" + minimal_record["parent"] = dict() for creator in minimal_record["metadata"]["creators"]: name = creator["person_or_org"].get("name") if not name: @@ -36,28 +29,32 @@ def updated_minimal_record(minimal_record): return minimal_record -def test_dublincorejson_serializer(running_app, updated_full_record): +def test_dublincorejson_serializer(running_app, full_record_to_dict): """Test serializer to Dublin Core JSON""" expected_data = { - "contributors": ["Nielsen, Lars Holm"], - "types": ["info:eu-repo/semantic/other"], - "relations": ["https://doi.org/10.1234/foo.bar"], - "descriptions": ["A description \nwith HTML tags", "Bla bla bla"], - "publishers": ["InvenioRDM"], + "contributors": ["Nielsen, Lars Holm", "Dirk, Dirkin"], + "creators": ["Nielsen, Lars Holm", "Tom, Blabin"], + "dates": ["2018/2020-09", "info:eu-repo/date/embargoEnd/2131-01-01"], + "descriptions": [ + "<h1>A description</h1> <p>with HTML " "tags</p>", + "Bla bla bla", + ], + "formats": ["application/pdf"], + "identifiers": [ + "https://doi.org/10.1234/12345-abcde", + "oai:invenio-rdm.com:12345-abcde", + "https://ui.adsabs.harvard.edu/#abs/1924MNRAS..84..308E", + ], "languages": ["dan", "eng"], "locations": [ - "name=test location place; description=test location description; lat=-32.94682; lon=-60.63932" + "name=test location place; description=test location " + "description; lat=-32.94682; lon=-60.63932" ], - "identifiers": [ - "https://doi.org/10.5281/inveniordm.1234", - "oai:vvv.com:abcde-fghij", - "bibcode:1924MNRAS..84..308E", + "publishers": ["InvenioRDM"], + "relations": [ + "https://doi.org/10.1234/foo.bar", + "https://doi.org/10.1234/pgfpj-at058", ], - "formats": ["application/pdf"], - "titles": ["InvenioRDM"], - "creators": ["Nielsen, Lars Holm"], - "subjects": ["custom"], - "dates": ["2018/2020-09", "info:eu-repo/date/embargoEnd/2131-01-01"], "rights": [ "info:eu-repo/semantics/embargoedAccess", "A custom license", @@ -65,10 +62,13 @@ def test_dublincorejson_serializer(running_app, updated_full_record): "Creative Commons Attribution 4.0 International", "https://creativecommons.org/licenses/by/4.0/legalcode", ], + "subjects": ["Abdominal Injuries", "custom"], + "titles": ["InvenioRDM"], + "types": ["info:eu-repo/semantics/other"], } serializer = DublinCoreJSONSerializer() - serialized_record = serializer.dump_obj(updated_full_record) + serialized_record = serializer.dump_obj(full_record_to_dict) assert serialized_record == expected_data @@ -76,7 +76,7 @@ def test_dublincorejson_serializer(running_app, updated_full_record): def test_dublincorejson_serializer_minimal(running_app, updated_minimal_record): """Test serializer to Dublin Core JSON with minimal record""" expected_data = { - "types": ["info:eu-repo/semantic/other"], + "types": ["info:eu-repo/semantics/other"], "titles": ["A Romans story"], "creators": ["Name", "Troy Inc."], "dates": ["2020-06-01"], @@ -90,6 +90,17 @@ def test_dublincorejson_serializer_minimal(running_app, updated_minimal_record): assert serialized_record == expected_data +def test_dublincorejson_serializer_empty_record(running_app, empty_record): + """Test serializer to Dublin Core JSON with an empty record""" + + expected_data = {} + + serializer = DublinCoreJSONSerializer() + serialized_record = serializer.dump_obj(empty_record) + + assert serialized_record == expected_data + + def test_vocabulary_type_error(running_app, updated_minimal_record): """Test error thrown on missing resource type.""" updated_minimal_record["metadata"]["resource_type"]["id"] = "invalid" @@ -98,37 +109,50 @@ def test_vocabulary_type_error(running_app, updated_minimal_record): DublinCoreJSONSerializer().dump_obj(updated_minimal_record) -def test_dublincorexml_serializer(running_app, updated_full_record): +def test_dublincorexml_serializer(running_app, full_record_to_dict): """Test serializer to Dublin Core XML""" - expected_data = [ - "Nielsen, Lars Holm", - "Nielsen, Lars Holm", - "2018/2020-09", - "info:eu-repo/date/embargoEnd/2131-01-01", - "A description \nwith HTML tags", - "Bla bla bla", - "application/pdf", - "https://doi.org/10.5281/inveniordm.1234", - "oai:vvv.com:abcde-fghij", - "bibcode:1924MNRAS..84..308E", - "dan", - "eng", - "InvenioRDM", - "https://doi.org/10.1234/foo.bar", - "info:eu-repo/semantics/embargoedAccess", - "A custom license", - "https://customlicense.org/licenses/by/4.0/", - "Creative Commons Attribution 4.0 " + "International", - "https://creativecommons.org/licenses/by/4.0/legalcode", - "InvenioRDM", - "info:eu-repo/semantic/other", - ] + expected_data = ( + "\n" + '\n' + " Nielsen, Lars Holm\n" + " Dirk, Dirkin\n" + " Nielsen, Lars Holm\n" + " Tom, Blabin\n" + " 2018/2020-09\n" + " info:eu-repo/date/embargoEnd/2131-01-01\n" + " &lt;h1&gt;A description&lt;/h1&gt; " + "&lt;p&gt;with HTML tags&lt;/p&gt;\n" + " Bla bla bla\n" + " application/pdf\n" + " https://doi.org/10.1234/12345-abcde\n" + " oai:invenio-rdm.com:12345-abcde\n" + " " + "https://ui.adsabs.harvard.edu/#abs/1924MNRAS..84..308E\n" + " dan\n" + " eng\n" + " InvenioRDM\n" + " https://doi.org/10.1234/foo.bar\n" + " https://doi.org/10.1234/pgfpj-at058\n" + " info:eu-repo/semantics/embargoedAccess\n" + " A custom license\n" + " https://customlicense.org/licenses/by/4.0/\n" + " Creative Commons Attribution 4.0 International\n" + " " + "https://creativecommons.org/licenses/by/4.0/legalcode\n" + " Abdominal Injuries\n" + " custom\n" + " InvenioRDM\n" + " info:eu-repo/semantics/other\n" + "\n" + ) serializer = DublinCoreXMLSerializer() - serialized_record = serializer.serialize_object(updated_full_record) - - for ed in expected_data: - assert ed in serialized_record + serialized_record = serializer.serialize_object(full_record_to_dict) + assert serialized_record == expected_data def test_dublincorexml_serializer_minimal(running_app, updated_minimal_record): @@ -139,7 +163,7 @@ def test_dublincorexml_serializer_minimal(running_app, updated_minimal_record): "2020-06-01", "info:eu-repo/semantics/openAccess", "A Romans story", - "info:eu-repo/semantic/other", + "info:eu-repo/semantics/other", ] serializer = DublinCoreXMLSerializer() @@ -150,30 +174,46 @@ def test_dublincorexml_serializer_minimal(running_app, updated_minimal_record): def test_dublincorexml_serializer_list( - running_app, updated_full_record, updated_minimal_record + running_app, full_record_to_dict, updated_minimal_record ): - expected_data_full = [ - "Nielsen, Lars Holm", - "Nielsen, Lars Holm", - "2018/2020-09", - "info:eu-repo/date/embargoEnd/2131-01-01", - "A description \nwith HTML tags", - "Bla bla bla", - "application/pdf", - "https://doi.org/10.5281/inveniordm.1234", - "bibcode:1924MNRAS..84..308E", - "dan", - "eng", - "InvenioRDM", - "https://doi.org/10.1234/foo.bar", - "info:eu-repo/semantics/embargoedAccess", - "A custom license", - "https://customlicense.org/licenses/by/4.0/", - "Creative Commons Attribution 4.0 " + "International", - "https://creativecommons.org/licenses/by/4.0/legalcode", - "InvenioRDM", - "info:eu-repo/semantic/other", - ] + expected_data_full = ( + "\n" + '\n' + " Nielsen, Lars Holm\n" + " Dirk, Dirkin\n" + " Nielsen, Lars Holm\n" + " Tom, Blabin\n" + " 2018/2020-09\n" + " info:eu-repo/date/embargoEnd/2131-01-01\n" + " &lt;h1&gt;A description&lt;/h1&gt; " + "&lt;p&gt;with HTML tags&lt;/p&gt;\n" + " Bla bla bla\n" + " application/pdf\n" + " https://doi.org/10.1234/12345-abcde\n" + " oai:invenio-rdm.com:12345-abcde\n" + " " + "https://ui.adsabs.harvard.edu/#abs/1924MNRAS..84..308E\n" + " dan\n" + " eng\n" + " InvenioRDM\n" + " https://doi.org/10.1234/foo.bar\n" + " https://doi.org/10.1234/pgfpj-at058\n" + " info:eu-repo/semantics/embargoedAccess\n" + " A custom license\n" + " https://customlicense.org/licenses/by/4.0/\n" + " Creative Commons Attribution 4.0 International\n" + " " + "https://creativecommons.org/licenses/by/4.0/legalcode\n" + " Abdominal Injuries\n" + " custom\n" + " InvenioRDM\n" + " info:eu-repo/semantics/other\n" + "\n" + ) expected_data_minimal = [ "Name", @@ -181,12 +221,12 @@ def test_dublincorexml_serializer_list( "2020-06-01", "info:eu-repo/semantics/openAccess", "A Romans story", - "info:eu-repo/semantic/other", + "info:eu-repo/semantics/other", ] serializer = DublinCoreXMLSerializer() serialized_records = serializer.serialize_object_list( - {"hits": {"hits": [updated_full_record, updated_minimal_record]}} + {"hits": {"hits": [full_record_to_dict, updated_minimal_record]}} ) for ed in expected_data_full: diff --git a/tests/resources/serializers/test_geojson_serializer.py b/tests/resources/serializers/test_geojson_serializer.py index cf90804e3..3c6523ab3 100644 --- a/tests/resources/serializers/test_geojson_serializer.py +++ b/tests/resources/serializers/test_geojson_serializer.py @@ -21,7 +21,7 @@ def test_geojson_serializer_no_records(): "types": ["info:eu-repo/semantic/other"], "relations": ["doi:10.1234/foo.bar"], "descriptions": ["A description \nwith HTML tags", "Bla bla bla"], - "identifiers": ["1924MNRAS..84..308E", "10.5281/inveniordm.1234"], + "identifiers": ["1924MNRAS..84..308E", "10.1234/inveniordm.1234"], "publishers": ["InvenioRDM"], "languages": ["dan", "eng"], "formats": ["application/pdf"], @@ -66,7 +66,7 @@ def test_geojson_serializer_single_records(): "types": ["info:eu-repo/semantic/other"], "relations": ["doi:10.1234/foo.bar"], "descriptions": ["A description \nwith HTML tags", "Bla bla bla"], - "identifiers": ["1924MNRAS..84..308E", "10.5281/inveniordm.1234"], + "identifiers": ["1924MNRAS..84..308E", "10.1234/inveniordm.1234"], "publishers": ["InvenioRDM"], "languages": ["dan", "eng"], "formats": ["application/pdf"], @@ -130,7 +130,7 @@ def test_geojson_serializer_multiple_records(): "types": ["info:eu-repo/semantic/other"], "relations": ["doi:10.1234/foo.bar"], "descriptions": ["A description \nwith HTML tags", "Bla bla bla"], - "identifiers": ["1924MNRAS..84..308E", "10.5281/inveniordm.1234"], + "identifiers": ["1924MNRAS..84..308E", "10.1234/inveniordm.1234"], "publishers": ["InvenioRDM"], "languages": ["dan", "eng"], "formats": ["application/pdf"], diff --git a/tests/resources/serializers/test_marcxml_serializer.py b/tests/resources/serializers/test_marcxml_serializer.py index 28472045c..504be2c43 100644 --- a/tests/resources/serializers/test_marcxml_serializer.py +++ b/tests/resources/serializers/test_marcxml_serializer.py @@ -1,175 +1,341 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN +# Copyright (C) 2023-2024 CERN # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Resources serializers tests.""" -from collections import Iterable - import pytest -from dojson.contrib.marc21.utils import GroupableOrderedDict, create_record +from dateutil.parser import parse +from invenio_access.permissions import system_identity +from invenio_rdm_records.proxies import current_rdm_records from invenio_rdm_records.resources.serializers.marcxml import MARCXMLSerializer -@pytest.fixture(scope="function") -def updated_minimal_record(minimal_record): - """Update fields (done after record create) for MARCXML serializer.""" - minimal_record["access"]["status"] = "open" - for creator in minimal_record["metadata"]["creators"]: - name = creator["person_or_org"].get("name") - if not name: - creator["person_or_org"]["name"] = "Name" - - return minimal_record +@pytest.fixture +def updated_full_record(full_record_to_dict): + """Record with added communities and custom fields.""" + # Add communities + full_record_to_dict["parent"]["communities"] = { + "default": "4078bbdf-4860-4f24-bc02-fd2899025ea7", + "entries": [ + { + "access": { + "member_policy": "open", + "members_visibility": "public", + "record_submission_policy": "open", + "review_policy": "closed", + "visibility": "public", + }, + "children": {"allow": False}, + "created": "2024-04-09T08:38:17.494903+00:00", + "custom_fields": {}, + "deletion_status": {"is_deleted": False, "status": "P"}, + "id": "4078bbdf-4860-4f24-bc02-fd2899025ea7", + "links": {}, + "metadata": { + "title": "Biodiversity " "Literature " "Repository", + "type": {"id": "topic"}, + }, + "revision_id": 2, + "slug": "blr", + "updated": "2024-04-09T08:38:17.537548+00:00", + }, + { + "access": { + "member_policy": "open", + "members_visibility": "public", + "record_submission_policy": "open", + "review_policy": "closed", + "visibility": "public", + }, + "children": {"allow": False}, + "created": "2024-04-09T08:38:17.573631+00:00", + "custom_fields": {}, + "deletion_status": {"is_deleted": False, "status": "P"}, + "id": "4818dcdb-f52f-4ef0-8b99-38a145b694a7", + "links": {}, + "metadata": { + "title": "Research Data " "Management", + "type": {"id": "topic"}, + }, + "revision_id": 2, + "slug": "rdm", + "updated": "2024-04-09T08:38:17.608333+00:00", + }, + ], + "ids": [ + "4078bbdf-4860-4f24-bc02-fd2899025ea7", + "4818dcdb-f52f-4ef0-8b99-38a145b694a7", + ], + } + # Add custom fields + full_record_to_dict["custom_fields"]["thesis:university"] = "A university" -@pytest.fixture(scope="function") -def updated_full_record(full_record): - """Update fields (done after record create) for MARCXML serializer.""" - full_record["access"]["status"] = "embargoed" + full_record_to_dict["custom_fields"]["journal:journal"] = { + "title": "Journal Title", + "pages": "100", + "volume": "5", + "issue": "10", + } - return full_record + # Add files + full_record_to_dict["files"] = { + "enabled": True, + "entries": { + "test.pdf": { + "uuid": "cbdf3e08-8077-430e-a7d2-0f37bbea0580", + "version_id": 3, + "metadata": {}, + "key": "test.pdf", + "checksum": "md5:d916d650dc8471cfccb92c807cdc5f98", + "mimetype": "application/pdf", + "size": 1934724, + "ext": "pdf", + "object_version_id": "cbdf3e08-8077-430e-a7d2-0f37bbea0580", + "file_id": "cbdf3e08-8077-430e-a7d2-0f37bbea0580", + } + }, + } -def test_marcxml_serializer_minimal_record(running_app, updated_minimal_record): - """Test serializer for MARCXML""" - serializer = MARCXMLSerializer() - serialized_record = create_record( - serializer.serialize_object(updated_minimal_record) - ) + # Add contributor with GND identifiers - expected_data = "\n".join( - [ - ' ', - ' ', - ' Acme Inc', - " ", - ' ', - ' Name', - ' Troy Inc.', - " ", - ' ', - ' info:eu-repo/semantics/openAccess', - " ", - ' ', - ' info:eu-repo/semantic/other', - " ", - ' ', - ' A Romans story', - " ", - ' ', - ' 2020-06-01', - " ", - " ", - ] + full_record_to_dict["metadata"]["contributors"].append( + { + "person_or_org": { + "name": "Doe, John the Contributor", + "type": "personal", + "given_name": "John the Contributor", + "family_name": "Doe", + "identifiers": [ + { + "scheme": "orcid", + "identifier": "0000-0001-8135-3489", + }, + { + "scheme": "gnd", + "identifier": "gnd:4079154-3", + }, + ], + }, + "role": {"id": "other"}, + "affiliations": [{"id": "cern", "name": "CERN"}, {"name": "free-text"}], + }, ) - expected_data = create_record(expected_data) - record1 = flatten(record_to_string_list(serialized_record)) - record2 = flatten(record_to_string_list(expected_data)) + return full_record_to_dict - record1 = set(record1) - record2 = set(record2) - - assert record1 == record2 +# Tests +def test_marcxml_serializer_minimal_record(running_app, minimal_record, parent): + """Test minimal serializer for MARCXML.""" + serializer = MARCXMLSerializer() + service = current_rdm_records.records_service + draft = service.create(system_identity, minimal_record) + record = service.publish(id_=draft.id, identity=system_identity) -def record_to_string_list(record): - """Recursively unnest all elements from GroupableOrderedDict""" - if isinstance(record, str): - return record - if isinstance(record, GroupableOrderedDict): - return record_to_string_list(record.values()) - elements = [] - for rec in record: - elements.append(record_to_string_list(rec)) - return elements + serialized_record = serializer.serialize_object(record.data) + expected_data = f"""\ + + + 00000nam##2200000uu#4500 + {record.id} + + doi + 10.1234/{record.id} + + + oai:inveniordm:{record.id} + + + Troy Inc. + + + A Romans story + + + Brown, Troy + + + info:eu-repo/semantics/metadata-onlyAccess + + + Acme Inc + 2020-06-01 + + + info:eu-repo/semantics/other + + + image + photo + + {parse(record["updated"]).strftime("%Y%m%d%H%M%S.0")} + + metadata-only + + + 10.1234/{record.data["parent"]["id"]} + isVersionOf + doi + + +""" -def flatten(elements): - """Flattens a n-dimensional irregular list""" - if isinstance(elements, Iterable) and not isinstance(elements, str): - return [a for i in elements for a in flatten(i)] - else: - return [elements] + assert serialized_record == expected_data -def test_marcxml_serializer_full_record(running_app, updated_full_record): - """Test serializer for MARCXML""" +def test_marcxml_serializer_full_record(db, running_app, updated_full_record): + """Test serializer for MARCXML with a full record.""" serializer = MARCXMLSerializer() - serialized_record = create_record(serializer.serialize_object(updated_full_record)) - - expected_data = "\n".join( - [ - '', - ' ', - ' info:eu-repo/semantics/embargoedAccess', - ' A custom license', - ' https://customlicense.org/licenses/by/4.0/', - ' Creative Commons Attribution 4.0 International', - ' https://creativecommons.org/licenses/by/4.0/legalcode', - " ", - ' ', - ' 2018/2020-09', - ' info:eu-repo/date/embargoEnd/2131-01-01', - " ", - ' ', - ' 11 pages', - " ", - ' ', - ' oai:vvv.com:abcde-fghij', - " ", - ' ', - ' custom', - " ", - ' ', - ' Nielsen, Lars Holm', - " ", - ' ', - ' A description ', - "with HTML tags", - ' Bla bla bla', - " ", - ' ', - ' application/pdf', - " ", - ' ', - ' InvenioRDM', - " ", - ' ', - ' InvenioRDM', - " ", - ' ', - ' info:eu-repo/semantic/other', - " ", - ' ', - ' Nielsen, Lars Holm', - " ", - ' ', - ' award_identifiers_scheme=null; award_identifiers_identifier=null; award_title=null; award_number=null; funder_id=00k4n6c32; funder_name=null; ', - " ", - ' ', - ' v1.0', - " ", - ' ', - ' doi:10.1234/foo.bar', - " ", - ' ', - ' 10.5281/inveniordm.1234', - ' doi', - " ", - "", - ] - ) - expected_data = create_record(expected_data) + serialized_record = serializer.serialize_object(updated_full_record) - record1 = flatten(record_to_string_list(serialized_record)) - record2 = flatten(record_to_string_list(expected_data)) + expected_data = f"""\ + + + 00000nam##2200000uu#4500 + 12345-abcde + + doi + 10.1234/12345-abcde + + + oai:invenio-rdm.com:12345-abcde + user-blr + user-rdm + + + Nielsen, Lars Holm + (orcid)0000-0001-8135-3489 + CERN + oth + + + Dirk, Dirkin + oth + + + Doe, John the Contributor + (orcid)0000-0001-8135-3489 + (gnd)gnd:4079154-3 + CERN + oth + + + Tom, Blabin + + + InvenioRDM + + + Nielsen, Lars Holm + (orcid)0000-0001-8135-3489 + CERN + + + doi:10.1234/foo.bar + + + info:eu-repo/semantics/embargoedAccess + + + A custom license + https://customlicense.org/licenses/by/4.0/ + + + Creative Commons Attribution 4.0 International + https://creativecommons.org/licenses/by/4.0/legalcode + + + + cc-by-4.0 + spdx + + + Abdominal Injuries + + + custom + + + &lt;h1&gt;A description&lt;/h1&gt; &lt;p&gt;with HTML tags&lt;/p&gt; + + + Bla bla bla + + + dan + + + eng + + + Nielsen et al,.. + + + InvenioRDM + 2018/2020-09 + info:eu-repo/date/embargoEnd/2131-01-01 + + + A university + + + user-blr + + + user-rdm + + + info:eu-repo/semantics/other + + + image + photo + + + application/pdf + + + 11 pages + + + 111023 + Launching of the research program on meaning processing + + 20231114183055.0 + + 1934724 + md5:d916d650dc8471cfccb92c807cdc5f98 + https://127.0.0.1:5000/records/12345-abcde/files/test.pdf + + + embargoed + + + 10.1234/foo.bar + Is cited by + doi + + + 10.1234/pgfpj-at058 + isVersionOf + doi + + + Journal Title + 5 + 10 + 100 + 2018/2020-09 + + +""" - record1 = set(record1) - record2 = set(record2) - assert record1 == record2 + assert serialized_record == expected_data diff --git a/tests/resources/serializers/test_schemaorg_serializer.py b/tests/resources/serializers/test_schemaorg_serializer.py new file mode 100644 index 000000000..6569a91ab --- /dev/null +++ b/tests/resources/serializers/test_schemaorg_serializer.py @@ -0,0 +1,193 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# Copyright (C) 2021 Caltech. +# Copyright (C) 2021 Northwestern University. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Resources serializers tests.""" + +from invenio_rdm_records.resources.serializers.schemaorg import ( + SchemaorgJSONLDSerializer, +) + + +def test_schemaorg_serializer_full_record(running_app, full_record_to_dict): + """Test Schemaorg JSON-LD serializer with full record.""" + + expected_data = { + "@context": "http://schema.org", + "@id": "https://doi.org/10.1234/12345-abcde", + "@type": "https://schema.org/Photograph", + "author": [ + { + "@id": "https://orcid.org/0000-0001-8135-3489", + "@type": "Person", + "affiliation": [ + {"@type": "Organization", "name": "CERN"}, + {"@type": "Organization", "name": "free-text"}, + ], + "familyName": "Nielsen", + "givenName": "Lars Holm", + "name": "Nielsen, Lars Holm", + }, + { + "@type": "Person", + "familyName": "Tom", + "givenName": "Blabin", + "name": "Tom, Blabin", + }, + ], + "contentSize": "9.0 B", + "creator": [ + { + "@id": "https://orcid.org/0000-0001-8135-3489", + "@type": "Person", + "affiliation": [ + {"@type": "Organization", "name": "CERN"}, + {"@type": "Organization", "name": "free-text"}, + ], + "familyName": "Nielsen", + "givenName": "Lars Holm", + "name": "Nielsen, Lars Holm", + }, + { + "@type": "Person", + "familyName": "Tom", + "givenName": "Blabin", + "name": "Tom, Blabin", + }, + ], + "datePublished": "2018", + "description": "

A description

with HTML tags

", + "editor": [ + { + "@id": "https://orcid.org/0000-0001-8135-3489", + "@type": "Person", + "affiliation": [ + {"@type": "Organization", "name": "CERN"}, + {"@type": "Organization", "name": "TU Wien"}, + ], + "familyName": "Nielsen", + "givenName": "Lars Holm", + "name": "Nielsen, Lars Holm", + }, + { + "@type": "Person", + "familyName": "Dirk", + "givenName": "Dirkin", + "name": "Dirk, Dirkin", + }, + ], + "encodingFormat": "application/pdf", + "funding": [ + { + "funder": { + "@id": "00k4n6c32", + "@type": "Organization", + "name": "European Commission", + }, + "name": "Launching of the research program on meaning processing " + "(111023)", + "url": {"identifier": "https://sandbox.zenodo.org/", "scheme": "url"}, + } + ], + "identifier": "https://doi.org/10.1234/12345-abcde", + "inLanguage": {"@type": "Language", "alternateName": "dan", "name": "Danish"}, + "keywords": "Abdominal Injuries, custom", + "license": "https://creativecommons.org/licenses/by/4.0/legalcode", + "name": "InvenioRDM", + "publisher": {"@type": "Organization", "name": "InvenioRDM"}, + "size": "9.0 B", + "temporal": ["1939/1945"], + "url": "https://127.0.0.1:5000/records/12345-abcde", + "version": "v1.0", + # "spatialCoverage": [ + # { + # "geoLocationPoint": { + # "pointLatitude": -32.94682, + # "pointLongitude": -60.63932, + # }, + # "geoLocationPlace": "test location place", + # } + # ], + # "funder": [ + # { + # "funderName": "European Commission", + # "funderIdentifier": "00k4n6c32", + # "funderIdentifierType": "ROR", + # "awardTitle": ( + # "Personalised Treatment For Cystic Fibrosis Patients With " + # "Ultra-rare CFTR Mutations (and beyond)" + # ), + # "awardNumber": "755021", + # "awardURI": "https://cordis.europa.eu/project/id/755021", + # } + # ], + } + + serializer = SchemaorgJSONLDSerializer() + serialized_record = serializer.dump_obj(full_record_to_dict) + + assert serialized_record["dateModified"] + assert serialized_record["dateCreated"] + + # Delete to facilitate the comparison with the expected data + del serialized_record["dateModified"] + del serialized_record["dateCreated"] + + assert serialized_record == expected_data + + +def test_schemaorg_serializer_minimal_record(running_app, minimal_record): + """Test Schemaorg JSON-LD serializer with minimal record.""" + + expected_data = { + "@context": "http://schema.org", + "@type": "https://schema.org/Photograph", + "author": [ + { + "@type": "Person", + "familyName": "Brown", + "givenName": "Troy", + }, + { + "@type": "Organization", + "name": "Troy Inc.", + }, + ], + "creator": [ + { + "@type": "Person", + "familyName": "Brown", + "givenName": "Troy", + }, + { + "@type": "Organization", + "name": "Troy Inc.", + }, + ], + "name": "A Romans story", + "publisher": {"@type": "Organization", "name": "Acme Inc"}, + "datePublished": "2020-06-01", + } + + serializer = SchemaorgJSONLDSerializer() + serialized_record = serializer.dump_obj(minimal_record) + + assert serialized_record == expected_data + + +def test_schemaorg_serializer_empty_record(running_app, empty_record): + """Test Schemaorg JSON-LD serializer with minimal record.""" + + expected_data = { + "@context": "http://schema.org", + } + + serializer = SchemaorgJSONLDSerializer() + serialized_record = serializer.dump_obj(empty_record) + + assert serialized_record == expected_data diff --git a/tests/resources/serializers/test_signposting_serializer.py b/tests/resources/serializers/test_signposting_serializer.py new file mode 100644 index 000000000..67551d342 --- /dev/null +++ b/tests/resources/serializers/test_signposting_serializer.py @@ -0,0 +1,220 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 Northwestern University. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Resources serializers tests.""" + +from invenio_rdm_records.resources.serializers import ( + FAIRSignpostingProfileLvl2Serializer, +) + + +def test_signposting_serializer_full(running_app, full_record_to_dict): + expected = { + "linkset": [ + # Landing page Link Context Object + { + "anchor": "https://127.0.0.1:5000/records/12345-abcde", + "author": [{"href": "https://orcid.org/0000-0001-8135-3489"}], + "cite-as": [{"href": "https://doi.org/10.1234/12345-abcde"}], + "describedby": [ + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/dcat+xml", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/json", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/ld+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/linkset+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/marcxml+xml", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/vnd.citationstyles.csl+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/vnd.datacite.datacite+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/vnd.datacite.datacite+xml", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/vnd.geo+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/vnd.inveniordm.v1+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/vnd.inveniordm.v1.full+csv", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/vnd.inveniordm.v1.simple+csv", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/x-bibtex", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "application/x-dc+xml", + }, + { + "href": "https://127.0.0.1:5000/api/records/12345-abcde", + "type": "text/x-bibliography", + }, + ], + "item": [ + { + "href": "https://127.0.0.1:5000/records/12345-abcde/files/test.txt", # noqa + "type": "text/plain", + } + ], + "license": [ + {"href": "https://customlicense.org/licenses/by/4.0/"}, + {"href": "https://creativecommons.org/licenses/by/4.0/legalcode"}, + ], + "type": [ + {"href": "https://schema.org/Photograph"}, + {"href": "https://schema.org/AboutPage"}, + ], + }, + # Content Resource (file) Link Context Object + { + "anchor": "https://127.0.0.1:5000/records/12345-abcde/files/test.txt", + "collection": [ + { + "href": "https://127.0.0.1:5000/records/12345-abcde", + "type": "text/html", + } + ], + }, + # Metadata Resource (mimetype format representation) Link Context Object + { + "anchor": "https://127.0.0.1:5000/api/records/12345-abcde", + "describes": [ + { + "href": "https://127.0.0.1:5000/records/12345-abcde", + "type": "text/html", + } + ], + }, + ] + } + + serialized = FAIRSignpostingProfileLvl2Serializer().dump_obj(full_record_to_dict) + + assert expected == serialized + + +def test_signposting_serializer_minimal(running_app, minimal_record_to_dict): + expected = { + "linkset": [ + # Landing page Link Context Object + { + "anchor": "https://127.0.0.1:5000/records/67890-fghij", + # No author since no associated PID + # No cite-as since no DOI + "describedby": [ + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/dcat+xml", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/json", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/ld+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/linkset+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/marcxml+xml", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/vnd.citationstyles.csl+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/vnd.datacite.datacite+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/vnd.datacite.datacite+xml", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/vnd.geo+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/vnd.inveniordm.v1+json", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/vnd.inveniordm.v1.full+csv", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/vnd.inveniordm.v1.simple+csv", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/x-bibtex", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "application/x-dc+xml", + }, + { + "href": "https://127.0.0.1:5000/api/records/67890-fghij", + "type": "text/x-bibliography", + }, + ], + # No license + "type": [ + {"href": "https://schema.org/Photograph"}, + {"href": "https://schema.org/AboutPage"}, + ], + }, + # No Content Resource (file) Link Context Object + # Metadata Resource (mimetype format representation) Link Context Object + { + "anchor": "https://127.0.0.1:5000/api/records/67890-fghij", + "describes": [ + { + "href": "https://127.0.0.1:5000/records/67890-fghij", + "type": "text/html", + } + ], + }, + ] + } + + serialized = FAIRSignpostingProfileLvl2Serializer().dump_obj(minimal_record_to_dict) + + assert expected == serialized diff --git a/tests/resources/serializers/test_ui_serializer.py b/tests/resources/serializers/test_ui_serializer.py index 7d7e90b78..89bf2d091 100644 --- a/tests/resources/serializers/test_ui_serializer.py +++ b/tests/resources/serializers/test_ui_serializer.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -18,7 +18,7 @@ def _add_affiliation_name(creatibutors): for idx_c, creator in enumerate(creatibutors): - affiliations = creatibutors[idx_c]["affiliations"] + affiliations = creatibutors[idx_c].get("affiliations", []) for idx_aff, affiliation in enumerate(affiliations): name = creatibutors[idx_c]["affiliations"][idx_aff].get("id") if name: @@ -31,10 +31,10 @@ def _add_affiliation_name(creatibutors): @pytest.fixture(scope="function") -def full_to_dict_record(full_record): +def full_to_dict_record(full_record_to_dict): """Full record dereferenced data, as is expected by the UI serializer.""" # TODO: Converge this and full record over time - to_dict_record = deepcopy(full_record) + to_dict_record = deepcopy(full_record_to_dict) to_dict_record["metadata"]["languages"] = [ {"id": "dan", "title": {"en": "Danish"}}, @@ -90,6 +90,17 @@ def full_to_dict_record(full_record): } ] + to_dict_record["metadata"]["locations"] = { + "features": [ + { + "geometry": {"type": "Point", "coordinates": [6.05, 46.23333]}, + "identifiers": [{"scheme": "geonames", "identifier": "2661235"}], + "place": "CERN", + "description": "Invenio birth place.", + }, + ] + } + _add_affiliation_name(to_dict_record["metadata"]["creators"]) _add_affiliation_name(to_dict_record["metadata"]["contributors"]) @@ -110,10 +121,10 @@ def test_ui_serializer(app, full_to_dict_record): "message_class": "warning", }, "contributors": { - "affiliations": [[1, "CERN", "cern"]], + "affiliations": [[1, "CERN", "cern"], [2, "TU Wien", None]], "contributors": [ { - "affiliations": [[1, "CERN"]], + "affiliations": [[1, "CERN"], [2, "TU Wien"]], "person_or_org": { "family_name": "Nielsen", "given_name": "Lars Holm", @@ -124,7 +135,16 @@ def test_ui_serializer(app, full_to_dict_record): "type": "personal", }, "role": {"id": "other", "title": "other"}, - } + }, + { + "person_or_org": { + "family_name": "Dirk", + "given_name": "Dirkin", + "name": "Dirk, Dirkin", + "type": "personal", + }, + "role": {"id": "other", "title": "Other"}, + }, ], }, "creators": { @@ -141,7 +161,15 @@ def test_ui_serializer(app, full_to_dict_record): "name": "Nielsen, Lars Holm", "type": "personal", }, - } + }, + { + "person_or_org": { + "family_name": "Tom", + "given_name": "Blabin", + "name": "Tom, Blabin", + "type": "personal", + } + }, ], }, "publication_date_l10n_long": "January 2018\u2009–\u2009September 2020", @@ -149,24 +177,29 @@ def test_ui_serializer(app, full_to_dict_record): "resource_type": {"id": "publication-article", "title_l10n": "Journal article"}, "additional_titles": [ { - "lang": {"id": "eng"}, + "lang": {"id": "eng", "title_l10n": "English"}, "title": "a research data management platform", - "type": {"id": "subtitle"}, + "type": {"id": "subtitle", "title_l10n": "Subtitle"}, } ], "additional_descriptions": [ { "description": "Bla bla bla", - "lang": {"id": "eng"}, - "type": {"id": "methods"}, + "lang": {"id": "eng", "title_l10n": "English"}, + "type": {"id": "methods", "title_l10n": "Methods"}, } ], + "is_draft": False, "languages": [ {"id": "dan", "title_l10n": "Danish"}, {"id": "eng", "title_l10n": "English"}, ], "dates": [ - {"date": "1939/1945", "description": "A date", "type": {"id": "other"}} + { + "date": "1939/1945", + "description": "A date", + "type": {"id": "other", "title_l10n": "Other"}, + } ], "rights": [ { @@ -174,7 +207,15 @@ def test_ui_serializer(app, full_to_dict_record): "link": "https://customlicense.org/licenses/by/4.0/", "title_l10n": "A custom license", }, - {"id": "cc-by-4.0"}, + { + "description_l10n": "The Creative Commons Attribution license allows re-distribution and re-use of a licensed work on the condition that the creator is appropriately credited.", + "id": "cc-by-4.0", + "props": { + "scheme": "spdx", + "url": "https://creativecommons.org/licenses/by/4.0/legalcode", + }, + "title_l10n": "Creative Commons Attribution 4.0 International", + }, ], "related_identifiers": [ { @@ -184,10 +225,11 @@ def test_ui_serializer(app, full_to_dict_record): "scheme": "doi", } ], + "custom_fields": {}, "description_stripped": "A description \nwith HTML tags", "version": "v1.0", - "created_date_l10n_long": "January 1, 2023", - "updated_date_l10n_long": "January 2, 2023", + "created_date_l10n_long": "November 14, 2023", + "updated_date_l10n_long": "November 14, 2023", "funding": [ { "award": { @@ -206,6 +248,16 @@ def test_ui_serializer(app, full_to_dict_record): }, } ], + "locations": { + "features": [ + { + "geometry": {"type": "Point", "coordinates": [6.05, 46.23333]}, + "identifiers": [{"scheme": "geonames", "identifier": "2661235"}], + "place": "CERN", + "description": "Invenio birth place.", + }, + ] + }, } serialized_record = UIJSONSerializer().dump_obj(full_to_dict_record) diff --git a/tests/resources/test_access_requests.py b/tests/resources/test_access_requests.py index 5c63716a3..c46d54a43 100644 --- a/tests/resources/test_access_requests.py +++ b/tests/resources/test_access_requests.py @@ -26,6 +26,7 @@ from invenio_requests.proxies import current_requests_service from invenio_rdm_records.proxies import current_rdm_records_service as service +from invenio_rdm_records.requests.access import AccessRequestTokenNeed def test_simple_guest_access_request_flow(running_app, client, users, minimal_record): @@ -67,11 +68,12 @@ def test_simple_guest_access_request_flow(running_app, client, users, minimal_re # The guest creates an access request response = client.post( - f"/records/{record.id}/access/request/guest", + f"/records/{record.id}/access/request", json={ "message": "This is not spam!", "email": "idle@montypython.com", "full_name": "Eric Idle", + "consent_to_share_personal_data": "true", }, ) assert response.status_code == 200 @@ -79,13 +81,15 @@ def test_simple_guest_access_request_flow(running_app, client, users, minimal_re verify_email_message = outbox[0] # Fetch the link from the response & parse the access request token - link_regex = re.compile(r"^.*(https?://.*?)\s?$") - match = link_regex.match(str(verify_email_message.body)) + link_regex = re.compile(r"(https?://.*?)\s?$") + match = link_regex.search(str(verify_email_message.body)) assert match verification_url = match.group(1) parsed = urllib.parse.urlparse(verification_url) args = {k: v for k, v in [kv.split("=") for kv in parsed.query.split("&")]} assert "access_request_token" in args + token = args["access_request_token"] + guest_identity.provides.add(AccessRequestTokenNeed(token)) # Create the access request from the token # NOTE: we're not going through a `ui_app.test_client` here because that would @@ -94,12 +98,17 @@ def test_simple_guest_access_request_flow(running_app, client, users, minimal_re identity=guest_identity, token=args["access_request_token"] ) + assert len(outbox) == 2 + submit_message = outbox[1] + # TODO: update to `req["links"]["self_html"]` when addressing https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 + assert "/me/requests/{}".format(request.id) in submit_message.html + # Accept the request # This is expected to send out another email, containing the new secret link current_requests_service.execute_action(identity, request.id, "accept", data={}) - assert len(outbox) == 2 - success_message = outbox[1] - match = link_regex.match(str(success_message.body)) + assert len(outbox) == 3 + success_message = outbox[2] + match = link_regex.search(str(success_message.body)) assert match access_url = match.group(1) parsed = urllib.parse.urlparse(access_url) @@ -133,62 +142,81 @@ def test_simple_guest_access_request_flow(running_app, client, users, minimal_re def test_simple_user_access_request_flow(running_app, client, users, minimal_record): """Test a the simple user-based access request flow.""" - # Log in a user (whose ID we need later) - record_owner, user = users - identity = Identity(record_owner.id) - identity.provides.add(any_user) - identity.provides.add(authenticated_user) - identity.provides.add(UserNeed(record_owner.id)) - login_user(user) - login_user_via_session(client, email=user.email) - # Create a public record with some restricted files - record_json = copy.deepcopy(minimal_record) - record_json["files"] = {"enabled": True} - record_json["access"]["record"] = "public" - record_json["access"]["files"] = "restricted" + with running_app.app.extensions["mail"].record_messages() as outbox: + # Log in a user (whose ID we need later) + record_owner, user = users + identity = Identity(record_owner.id) + identity.provides.add(any_user) + identity.provides.add(authenticated_user) + identity.provides.add(UserNeed(record_owner.id)) + login_user(user) + login_user_via_session(client, email=user.email) - draft = service.create(identity=identity, data=record_json) - service.draft_files.init_files(identity, draft.id, data=[{"key": "test.txt"}]) - service.draft_files.set_file_content( - identity, draft.id, "test.txt", io.BytesIO(b"test file") - ) - service.draft_files.commit_file(identity, draft.id, "test.txt") - record = service.publish(identity=identity, id_=draft.id) + # Create a public record with some restricted files + record_json = copy.deepcopy(minimal_record) + record_json["files"] = {"enabled": True} + record_json["access"]["record"] = "public" + record_json["access"]["files"] = "restricted" - # There's no access grants in the record yet - assert not record._obj.parent.access.grants + draft = service.create(identity=identity, data=record_json) + service.draft_files.init_files(identity, draft.id, data=[{"key": "test.txt"}]) + service.draft_files.set_file_content( + identity, draft.id, "test.txt", io.BytesIO(b"test file") + ) + service.draft_files.commit_file(identity, draft.id, "test.txt") + record = service.publish(identity=identity, id_=draft.id) - # The user can access the record, but not the files - assert client.get(f"/records/{record.id}").status_code == 200 - assert client.get(f"/records/{record.id}/files").status_code == 403 - assert client.get(f"/records/{record.id}/files/test.txt/content").status_code == 403 + # There's no access grants in the record yet + assert not record._obj.parent.access.grants - # The user creates an access request - response = client.post( - f"/records/{record.id}/access/request", - json={"message": "Please give me access!"}, - ) - request_id = response.json["id"] - assert response.status_code == 200 + # The user can access the record, but not the files + assert client.get(f"/records/{record.id}").status_code == 200 + assert client.get(f"/records/{record.id}/files").status_code == 403 + assert ( + client.get(f"/records/{record.id}/files/test.txt/content").status_code + == 403 + ) + + # The user creates an access request + response = client.post( + f"/records/{record.id}/access/request", + json={ + "message": "Please give me access!", + "email": user.email, + "full_name": "ABC", + }, + ) + request_id = response.json["id"] + assert response.status_code == 200 + assert len(outbox) == 1 + submit_message = outbox[0] + # TODO: update to `req["links"]["self_html"]` when addressing https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 + assert "/me/requests/{}".format(request_id) in submit_message.html - # The record owner approves the access request - current_requests_service.execute_action(identity, request_id, "accept", data={}) + # The record owner approves the access request + current_requests_service.execute_action(identity, request_id, "accept", data={}) + assert len(outbox) == 2 + success_message = outbox[1] + assert record.to_dict()["links"]["self_html"] in success_message.body - # Now, the user has permission to view the record's files! - assert client.get(f"/records/{record.id}").status_code == 200 - assert client.get(f"/records/{record.id}/files").status_code == 200 - assert client.get(f"/records/{record.id}/files/test.txt/content").status_code == 200 + # Now, the user has permission to view the record's files! + assert client.get(f"/records/{record.id}").status_code == 200 + assert client.get(f"/records/{record.id}/files").status_code == 200 + assert ( + client.get(f"/records/{record.id}/files/test.txt/content").status_code + == 200 + ) - # Verify the created access grant - record = service.read(identity=identity, id_=record.id) - grants = record._record.parent.access.grants - assert len(grants) == 1 - assert grants[0].to_dict() == { - "subject": {"type": "user", "id": str(user.id)}, - "permission": "view", - "origin": f"request:{request_id}", - } + # Verify the created access grant + record = service.read(identity=identity, id_=record.id) + grants = record._record.parent.access.grants + assert len(grants) == 1 + assert grants[0].to_dict() == { + "subject": {"type": "user", "id": str(user.id)}, + "permission": "view", + "origin": f"request:{request_id}", + } def test_access_grant_for_user( @@ -211,15 +239,19 @@ def test_access_grant_for_user( assert response.status_code == 403 # Grant access to the *current user* - service.access.create_grant( + service.access.bulk_create_grants( identity=system_identity, id_=record.id, data={ - "subject": { - "type": "user", - "id": str(user.id), - }, - "permission": "view", + "grants": [ + { + "subject": { + "type": "user", + "id": str(user.id), + }, + "permission": "view", + } + ] }, ) @@ -241,15 +273,19 @@ def test_access_grant_for_system_role( assert response.status_code == 403 # Grant access to *any authenticated user* - service.access.create_grant( + service.access.bulk_create_grants( identity=system_identity, id_=record.id, data={ - "subject": { - "type": "system_role", - "id": "authenticated_user", - }, - "permission": "view", + "grants": [ + { + "subject": { + "type": "system_role", + "id": "authenticated_user", + }, + "permission": "view", + } + ] }, ) @@ -280,15 +316,19 @@ def test_access_grant_for_role( assert response.status_code == 403 # Grant access to users with a specific role (i.e. in a specific group) - service.access.create_grant( + service.access.bulk_create_grants( identity=system_identity, id_=record.id, data={ - "subject": { - "type": "role", - "id": str(role.name), - }, - "permission": "view", + "grants": [ + { + "subject": { + "type": "role", + "id": str(role.name), + }, + "permission": "view", + } + ] }, ) diff --git a/tests/resources/test_draft_file_permissions.py b/tests/resources/test_draft_file_permissions.py index faafdc8f7..8521c3d31 100644 --- a/tests/resources/test_draft_file_permissions.py +++ b/tests/resources/test_draft_file_permissions.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -11,7 +11,6 @@ Not every case is tested, but enough high-level ones for it to be useful. """ - from io import BytesIO import pytest diff --git a/tests/resources/test_files.py b/tests/resources/test_files.py index a4398566b..0c67217ac 100644 --- a/tests/resources/test_files.py +++ b/tests/resources/test_files.py @@ -23,6 +23,13 @@ def create_draft(client, record, headers): return response.json +def delete_record(client, recid, headers): + """Soft delete a record.""" + response = client.delete(f"/records/{recid}/delete", json={}, headers=headers) + assert response.status_code == 204 + response.close() + + def attach_file(client, recid, key, headers): """Attach a file to a record.""" @@ -108,3 +115,243 @@ def test_published_record_files_deny_edit( # the upload of a file is the one that is affected when we lock the bucket assert response.status_code == 403 logout_user(client) + + +def test_files_api_flow_for_deleted_record( + client, headers, running_app, minimal_record, users, location, superuser +): + login_user(client, users[0]) + + draft = create_draft(client, minimal_record, headers) + recid = draft["id"] + + attach_file(client, recid, "test.pdf", headers) + + # publish the draft + response = client.post(link(draft["links"]["publish"]), headers=headers) + assert response.status_code == 202 + assert response.data + + logout_user(client) + + url = f"/records/{recid}/files" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files/test.pdf" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files/test.pdf/content" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files-archive" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + login_user(client, superuser.user) + + # We delete the record + delete_record(client, recid, headers) + + # Superuser has access to record + url = f"/records/{recid}/files" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files/test.pdf" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files/test.pdf/content" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files-archive" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + logout_user(client) + + # Non superuser users have no access to the record + url = f"/records/{recid}/files" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + url = f"/records/{recid}/files/test.pdf" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + url = f"/records/{recid}/files/test.pdf/content" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + url = f"/records/{recid}/files-archive" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + +def test_filename_with_slash_flow_for_deleted_record_( + client, headers, running_app, minimal_record, users, location, superuser +): + login_user(client, users[0]) + + draft = create_draft(client, minimal_record, headers) + recid = draft["id"] + filename = "folder/test.pdf" + + attach_file(client, recid, filename, headers) + + # publish the draft + response = client.post(link(draft["links"]["publish"]), headers=headers) + assert response.status_code == 202 + assert response.data + + logout_user(client) + + url = f"/records/{recid}/files" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files/{filename}" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files/{filename}/content" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files-archive" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + login_user(client, superuser.user) + + # We delete the record + delete_record(client, recid, headers) + + # Superuser has access to record + url = f"/records/{recid}/files" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files/{filename}" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files/{filename}/content" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/files-archive" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + logout_user(client) + + # Non superuser users have no access to the record + url = f"/records/{recid}/files" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + url = f"/records/{recid}/files/{filename}" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + url = f"/records/{recid}/files/{filename}/content" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + url = f"/records/{recid}/files-archive" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + +def test_upload_and_access_filename_with_slash( + client, headers, app_with_deny_edits, minimal_record, users, location, superuser +): + login_user(client, users[0]) + + draft = create_draft(client, minimal_record, headers) + recid = draft["id"] + + # Define a file name with a slash in it + file_name = "folder/test.pdf" + + # Attach the file with the slash in its name + attach_file(client, draft["id"], file_name, headers) + + draft = client.get(link(draft["links"]["self"])).json + assert draft["files"]["enabled"] + assert file_name in draft["files"]["entries"].keys() + assert draft["files"]["count"] == 1 + + # Publish the draft + published_record = client.post( + link(draft["links"]["publish"]), headers=headers + ).json + + # Access the uploaded file + url = f"/records/{recid}/files/{file_name}" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + # Access the content of the uploaded file + url = f"/records/{recid}/files/{file_name}/content" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + logout_user(client) diff --git a/tests/resources/test_iiif_image_api.py b/tests/resources/test_iiif_image_api.py index 5d38711bc..6dd079fd9 100644 --- a/tests/resources/test_iiif_image_api.py +++ b/tests/resources/test_iiif_image_api.py @@ -7,6 +7,7 @@ from io import BytesIO +import dictdiffer from PIL import Image from werkzeug.utils import secure_filename @@ -68,6 +69,16 @@ def test_file_links_depending_on_file_extensions( assert "iiif_info" in response.json["links"] assert "iiif_api" in response.json["links"] + ## Testing with filename with a slash ## + + file_id = "test/image.png" + recid = publish_record_with_images(client, file_id, minimal_record, headers) + response = client.get(f"/records/{recid}/files/{file_id}") + assert "iiif_canvas" in response.json["links"] + assert "iiif_base" in response.json["links"] + assert "iiif_info" in response.json["links"] + assert "iiif_api" in response.json["links"] + def test_iiif_base( running_app, search_clear, client, uploader, headers, minimal_record @@ -82,6 +93,17 @@ def test_iiif_base( == f"https://127.0.0.1:5000/api/iiif/record:{recid}:{file_id}/info.json" ) + ## Testing with filename with a slash ## + + file_id = "test/image.png" + recid = publish_record_with_images(client, file_id, minimal_record, headers) + response = client.get(f"/iiif/record:{recid}:{file_id}") + assert response.status_code == 301 + assert ( + response.json["location"] + == f"https://127.0.0.1:5000/api/iiif/record:{recid}:{file_id}/info.json" + ) + def test_iiif_info( running_app, search_clear, client, uploader, headers, minimal_record @@ -91,6 +113,27 @@ def test_iiif_info( recid = publish_record_with_images(client, file_id, minimal_record, headers) response = client.get(f"/iiif/record:{recid}:{file_id}/info.json") assert response.status_code == 200 + assert not list( + dictdiffer.diff( + response.json, + { + "@context": "http://iiif.io/api/image/2/context.json", + "profile": ["http://iiif.io/api/image/2/level2.json"], + "protocol": "http://iiif.io/api/image", + "@id": f"https://127.0.0.1:5000/api/iiif/record:{recid}:{file_id}", + "tiles": [{"width": 256, "scaleFactors": [1, 2, 4, 8, 16, 32, 64]}], + "width": 1280, + "height": 1024, + }, + ) + ) + + ## Testing with filename with a slash ## + + file_id = "test/image.png" + recid = publish_record_with_images(client, file_id, minimal_record, headers) + response = client.get(f"/iiif/record:{recid}:{file_id}/info.json") + assert response.status_code == 200 assert response.json == { "@context": "http://iiif.io/api/image/2/context.json", "profile": ["http://iiif.io/api/image/2/level2.json"], @@ -130,6 +173,21 @@ def test_iiif_base_restricted_files( response = client.get(f"/iiif/record:{recid}:{file_id}") assert response.status_code == 301 + ## Testing with filename with a slash ## + + file_id = "test/image.png" + recid = publish_record_with_images( + client, file_id, minimal_record, headers, restricted_files=True + ) + client = uploader.logout(client) + response = client.get(f"/iiif/record:{recid}:{file_id}") + assert response.status_code == 403 + + # Log in user and try again + client = uploader.login(client) + response = client.get(f"/iiif/record:{recid}:{file_id}") + assert response.status_code == 301 + def test_iiif_info_restricted_files( running_app, @@ -154,6 +212,20 @@ def test_iiif_info_restricted_files( response = client.get(f"/iiif/record:{recid}:{file_id}/info.json") assert response.status_code == 200 + ## Testing with filename with a slash ## + file_id = "test/image.png" + recid = publish_record_with_images( + client, file_id, minimal_record, headers, restricted_files=True + ) + client = uploader.logout(client) + response = client.get(f"/iiif/record:{recid}:{file_id}/info.json") + assert response.status_code == 403 + + # Log in user and try again + client = uploader.login(client) + response = client.get(f"/iiif/record:{recid}:{file_id}/info.json") + assert response.status_code == 200 + def test_iiif_image_api( running_app, search_clear, client, uploader, headers, minimal_record @@ -191,3 +263,31 @@ def test_iiif_image_api( ) assert response.status_code == 200 assert response.headers["Content-Disposition"] == f"attachment; filename={name}" + + ## Testing with filename with a slash ## + file_id = "test/image.png" + recid = publish_record_with_images(client, file_id, minimal_record, headers) + + response = client.get(f"/iiif/record:{recid}:{file_id}/full/full/0/default.png") + assert response.status_code == 200 + assert response.data == tmp_file.getvalue() + + response = client.get( + f"/iiif/record:{recid}:{file_id}/200,200,200,200/300,300/!50/color.pdf" + ) + assert response.status_code == 200 + + default_name = secure_filename( + f"record:{recid}:{file_id}-200200200200-300300-color-50.pdf" + ) + for dl, name in ( + ("", default_name), + ("1", default_name), + ("foo.pdf", "foo.pdf"), + ): + response = client.get( + f"/iiif/record:{recid}:{file_id}/" + f"200,200,200,200/300,300/!50/color.pdf?dl={dl}" + ) + assert response.status_code == 200 + assert response.headers["Content-Disposition"] == f"attachment; filename={name}" diff --git a/tests/resources/test_iiif_presentation_api.py b/tests/resources/test_iiif_presentation_api.py index 6a01f7463..759f1d9b0 100644 --- a/tests/resources/test_iiif_presentation_api.py +++ b/tests/resources/test_iiif_presentation_api.py @@ -9,7 +9,6 @@ from io import BytesIO -import pytest from PIL import Image from tripoli import IIIFValidator @@ -51,7 +50,6 @@ def publish_record_with_images( return id_ -@pytest.mark.skip("to be fixed, bug exposed during fixes in another scope") def test_iiif_manifest_schema( running_app, search_clear, client, uploader, headers, minimal_record ): @@ -65,7 +63,6 @@ def test_iiif_manifest_schema( assert not validator.errors -@pytest.mark.skip("to be fixed, bug exposed during fixes in another scope") def test_iiif_manifest( running_app, search_clear, client, uploader, headers, minimal_record ): @@ -125,7 +122,18 @@ def test_empty_iiif_manifest( assert not manifest["sequences"][0]["canvases"] -@pytest.mark.skip("to be fixed, bug exposed during fixes in another scope") +def test_empty_iiif_manifest_filename_with_slash( + running_app, search_clear, client, uploader, headers, minimal_record +): + client = uploader.login(client) + file_id = "test/image.zip" + recid = publish_record_with_images(client, file_id, minimal_record, headers) + response = client.get(f"/iiif/record:{recid}/manifest") + assert response.status_code == 200 + manifest = response.json + assert not manifest["sequences"][0]["canvases"] + + def test_iiif_manifest_restricted_files( running_app, search_clear, @@ -142,10 +150,75 @@ def test_iiif_manifest_restricted_files( ) client = uploader.logout(client) response = client.get(f"/iiif/record:{recid}/manifest") - # TODO: should we return only the parts the user has access to? - assert response.status_code == 403 + assert response.status_code == 200 + assert response.json == { + "@context": "http://iiif.io/api/presentation/2/context.json", + "@id": f"https://127.0.0.1:5000/api/iiif/record:{recid}/manifest", + "@type": "sc:Manifest", + "description": "Manifest generated by InvenioRDM", + "label": "A Romans story", + "metadata": [{"label": "Publication Date", "value": "2020-06-01"}], + "sequences": [ + { + "@id": f"https://127.0.0.1:5000/api/iiif/record:{recid}/sequence/default", + "@type": "sc:Sequence", + # No canvases since the files are restricted + "canvases": [], + "label": "Current Page Order", + "viewingDirection": "left-to-right", + "viewingHint": "individuals", + } + ], + } # Log in user and try again client = uploader.login(client) response = client.get(f"/iiif/record:{recid}/manifest") assert response.status_code == 200 + assert response.json == { + "@context": "http://iiif.io/api/presentation/2/context.json", + "@id": f"https://127.0.0.1:5000/api/iiif/record:{recid}/manifest", + "@type": "sc:Manifest", + "description": "Manifest generated by InvenioRDM", + "label": "A Romans story", + "metadata": [{"label": "Publication Date", "value": "2020-06-01"}], + "sequences": [ + { + "@id": f"https://127.0.0.1:5000/api/iiif/record:{recid}/sequence/default", + "@type": "sc:Sequence", + "canvases": [ + { + "@context": "http://iiif.io/api/presentation/2/context.json", + "@id": f"https://127.0.0.1:5000/api/iiif/record:{recid}/canvas/test_image.png", + "@type": "sc:Canvas", + "height": 1024, + "images": [ + { + "@context": "http://iiif.io/api/presentation/2/context.json", + "@type": "oa:Annotation", + "motivation": "sc:painting", + "on": f"https://127.0.0.1:5000/api/iiif/record:{recid}/canvas/test_image.png", + "resource": { + "@id": f"https://127.0.0.1:5000/api/iiif/record:{recid}:test_image.png/full/full/0/default.png", + "@type": "dctypes:Image", + "format": "image/png", + "height": 1024, + "service": { + "@context": "http://iiif.io/api/image/2/context.json", + "@id": f"https://127.0.0.1:5000/api/iiif/record:{recid}:test_image.png", + "profile": "http://iiif.io/api/image/2/level1.json", + }, + "width": 1280, + }, + } + ], + "label": "test_image.png", + "width": 1280, + } + ], + "label": "Current Page Order", + "viewingDirection": "left-to-right", + "viewingHint": "individuals", + } + ], + } diff --git a/tests/resources/test_media_files.py b/tests/resources/test_media_files.py index bd3f4eb62..eacc57017 100644 --- a/tests/resources/test_media_files.py +++ b/tests/resources/test_media_files.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -10,6 +10,7 @@ Not every case is tested, but enough high-level ones for it to be useful. """ + from io import BytesIO import pytest @@ -25,6 +26,21 @@ def create_draft(client, record, headers): return response.json["id"] +def publish_draft(client, recid, headers): + """Publish a draft and returns the id.""" + response = client.post(f"/records/{recid}/draft/actions/publish", headers=headers) + assert response.status_code == 202 + assert response.data + return recid + + +def delete_record(client, recid, headers): + """Soft delete a record.""" + response = client.delete(f"/records/{recid}/delete", json={}, headers=headers) + assert response.status_code == 204 + response.close() + + def init_file(client, recid, headers): """Init a file for draft with given recid.""" return client.post( @@ -160,3 +176,98 @@ def test_only_owners_can_list_draft_w_public_files( login_user(client, users[0]) response = client.get(url, headers=headers) assert 200 == response.status_code + + +def test_list_media_files_for_deleted_record( + client, headers, running_app, minimal_record, users, location, superuser +): + login_user(client, users[0]) + + recid = create_draft(client, minimal_record, headers) + init_file(client, recid, headers) + upload_file(client, recid) + # upload file and commit + response = commit_file(client, recid, headers) + assert response.status_code == 200 + assert response.data + publish_draft(client, recid, headers) + logout_user(client) + + url = f"/records/{recid}/media-files" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/media-files/test.pdf" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/media-files/test.pdf/content" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/media-files-archive" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + login_user(client, superuser.user) + + # We delete the record + delete_record(client, recid, headers) + + url = f"/records/{recid}/media-files" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/media-files/test.pdf?include_deleted=1" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/media-files/test.pdf/content" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + url = f"/records/{recid}/media-files-archive?include_deleted=1" + + response = client.get(url, headers=headers) + assert 200 == response.status_code + assert response.data + + logout_user(client) + + url = f"/records/{recid}/media-files" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + url = f"/records/{recid}/media-files/test.pdf" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + url = f"/records/{recid}/media-files/test.pdf/content" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data + + url = f"/records/{recid}/media-files-archive" + + response = client.get(url, headers=headers) + assert 410 == response.status_code + assert response.data diff --git a/tests/resources/test_publish_errors.py b/tests/resources/test_publish_errors.py index 738fe9982..52cf10be2 100644 --- a/tests/resources/test_publish_errors.py +++ b/tests/resources/test_publish_errors.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020-2021 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -8,7 +8,6 @@ """Test errors.""" - import pytest # Helpers diff --git a/tests/resources/test_record_file_permissions.py b/tests/resources/test_record_file_permissions.py index 3e8465cf8..26855fe42 100644 --- a/tests/resources/test_record_file_permissions.py +++ b/tests/resources/test_record_file_permissions.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021 Northwestern University. # Copyright (C) 2023 TU Wien. # @@ -12,7 +12,6 @@ Not every case is tested, but enough high-level ones for it to be useful. """ - from io import BytesIO import pytest diff --git a/tests/resources/test_resources.py b/tests/resources/test_resources.py index eaf7f80e9..d9d06ad91 100644 --- a/tests/resources/test_resources.py +++ b/tests/resources/test_resources.py @@ -10,15 +10,18 @@ """Module tests.""" import json +from copy import deepcopy from datetime import datetime, timedelta, timezone from io import BytesIO import arrow import pytest from invenio_requests import current_requests_service +from marshmallow_utils.permissions import FieldPermissionError from invenio_rdm_records.records import RDMDraft, RDMRecord from invenio_rdm_records.requests import CommunitySubmission +from tests.helpers import login_user, logout_user @pytest.fixture() @@ -272,7 +275,6 @@ def _create_and_publish(client, minimal_record, headers): """Create a draft and publish it.""" # Create the draft response = client.post("/records", json=minimal_record, headers=headers) - assert response.status_code == 201 recid = response.json["id"] _validate_access(response.json, minimal_record) @@ -449,7 +451,7 @@ def test_multiple_files_record( filename2 = "test2.txt" file_content2 = b"testfile2" - _create_and_assert_file(client, headers, recid, filename1, file_content2) + _create_and_assert_file(client, headers, recid, filename1, file_content1) _create_and_assert_file(client, headers, recid, filename2, file_content2) response = client.post(f"/records/{recid}/draft/actions/publish", headers=headers) @@ -796,6 +798,7 @@ def test_response_handlers(running_app, minimal_record, client_with_login): "application/x-dc+xml", "text/x-bibliography", "application/dcat+xml", + "application/linkset+json", ] headers = { @@ -943,3 +946,52 @@ def _create_and_include_in_community(): res = client.get(f"/communities/{community['id']}/records", headers=headers) assert res.json["hits"]["total"] == 1 + + +def test_search_internal_notes_fields( + running_app, client, minimal_record, headers, search_clear, superuser, users +): + + # login regular user + login_user(client, users[0]) + minimal_record_w_int_notes = deepcopy(minimal_record) + minimal_record_w_int_notes["internal_notes"] = [{"note": "abc"}] + + with pytest.raises(FieldPermissionError): + resp = client.post( + "/records", json={**minimal_record_w_int_notes}, headers=headers + ) + + # login admin + logout_user(client) + user = superuser.user + login_user(client, user) + + resp = client.post("/records", json={**minimal_record_w_int_notes}, headers=headers) + assert resp.status_code == 201 + + recid = resp.json["id"] + response = client.post( + "/records/{}/draft/actions/publish".format(recid), headers=headers + ) + + resp = client.get(f"/records/{recid}") + assert resp.json["id"] == recid + assert resp.json["internal_notes"][0]["note"] == "abc" + resp = client.get("/records?q=abc") + assert resp.json["hits"]["total"] == 0 + resp = client.get("/records?q=internal_notes.note:abc") + assert resp.json["hits"]["total"] == 1 + + # login user to check search and field perms + logout_user(client) + login_user(client, users[0]) + + resp = client.get(f"/records/{recid}") + assert "internal_notes" not in resp.json + + resp = client.get("/records?q=abc") + assert resp.json["hits"]["total"] == 0 + resp = client.get("/records?q=internal_notes.note:abc") + assert resp.json["hits"]["total"] == 0 + logout_user(client) diff --git a/tests/resources/test_resources_communities.py b/tests/resources/test_resources_communities.py index 2a0f59aa9..db56027e2 100644 --- a/tests/resources/test_resources_communities.py +++ b/tests/resources/test_resources_communities.py @@ -1,12 +1,13 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Tests record's communities resources.""" +from contextlib import contextmanager from copy import deepcopy import pytest @@ -18,6 +19,10 @@ ) from invenio_rdm_records.records.api import RDMDraft, RDMRecord from invenio_rdm_records.requests.community_inclusion import CommunityInclusion +from invenio_rdm_records.services.errors import ( + CommunityRequiredError, + InvalidAccessRestrictions, +) def _add_to_community(db, record, community): @@ -58,17 +63,23 @@ def test_uploader_add_record_to_communities( processed = response.json["processed"] assert len(processed) == 2 - # assert that no communities have been added yet - response = client.get( - f"/records/{record.pid.pid_value}", - headers=headers, - json=data, - ) - record_communities = response.json["parent"]["communities"]["ids"] - assert len(record_communities) == 1 - assert community.id in record_communities - assert open_review_community.id not in record_communities - assert closed_review_community.id not in record_communities + # assert that open review community has been added + response = client.get(f"/records/{record.pid.pid_value}", headers=headers) + record_communities_ids = response.json["parent"]["communities"]["ids"] + assert len(record_communities_ids) == 1 + assert community.id in record_communities_ids + assert open_review_community.id not in record_communities_ids + assert closed_review_community.id not in record_communities_ids + rec_comms = response.json["parent"]["communities"]["entries"] + assert len(rec_comms) == 1 + assert rec_comms[0]["id"] == str(community.id) + assert rec_comms[0]["created"] == community["created"] + assert rec_comms[0]["updated"] == community["updated"] + assert rec_comms[0]["revision_id"] == community["revision_id"] + assert rec_comms[0]["slug"] == community["slug"] + assert rec_comms[0]["metadata"]["title"] == community["metadata"]["title"] + assert rec_comms[0]["metadata"]["type"]["id"] == community["metadata"]["type"]["id"] + assert rec_comms[0]["access"] == community["access"] # assert that requests are "submitted", but not "accepted" for result in processed: @@ -76,7 +87,6 @@ def test_uploader_add_record_to_communities( response = client.get( f"/requests/{request_id}", headers=headers, - json=data, ) assert response.json["status"] == "submitted" assert response.json["type"] == CommunityInclusion.type_id @@ -92,10 +102,29 @@ def test_uploader_add_record_to_communities( response = client.get( f"/communities/{community_id}/records", headers=headers, - json=data, ) assert response.json["hits"]["total"] == expected_n_results + # check global search results + response = client.get("/records", headers=headers) + assert response.json["hits"]["total"] == 1 + record_hit = response.json["hits"]["hits"][0] + assert record_hit["id"] == record.pid.pid_value + assert record_hit["parent"]["communities"]["ids"] == [str(community.id)] + record_hit_comms = record_hit["parent"]["communities"]["entries"] + assert len(record_hit_comms) == 1 + assert record_hit_comms[0]["id"] == str(community.id) + assert record_hit_comms[0]["created"] == community["created"] + assert record_hit_comms[0]["updated"] == community["updated"] + assert record_hit_comms[0]["revision_id"] == community["revision_id"] + assert record_hit_comms[0]["slug"] == community["slug"] + assert record_hit_comms[0]["metadata"]["title"] == community["metadata"]["title"] + assert ( + record_hit_comms[0]["metadata"]["type"]["id"] + == community["metadata"]["type"]["id"] + ) + assert record_hit_comms[0]["access"] == community["access"] + def test_community_owner_add_record_to_communities( client, @@ -119,6 +148,11 @@ def test_community_owner_add_record_to_communities( inviter(curator.id, open_review_community.id, "curator") inviter(curator.id, closed_review_community.id, "curator") record = record_community.create_record(uploader=curator) + # create a draft of the record, to ensure that it is included even with a draft + response = client.post( + f"/records/{record.pid.pid_value}/draft", + headers=headers, + ) response = client.post( f"/records/{record.pid.pid_value}/communities", @@ -133,7 +167,6 @@ def test_community_owner_add_record_to_communities( response = client.get( f"/records/{record.pid.pid_value}", headers=headers, - json=data, ) record_communities = response.json["parent"]["communities"]["ids"] # assert that only the curator's community has been added @@ -149,7 +182,6 @@ def test_community_owner_add_record_to_communities( response = client.get( f"/requests/{request_id}", headers=headers, - json=data, ) request = response.json assert request["type"] == CommunityInclusion.type_id @@ -172,7 +204,6 @@ def test_community_owner_add_record_to_communities( response = client.get( f"/communities/{community_id}/records", headers=headers, - json=data, ) assert response.json["hits"]["total"] == expected_n_results @@ -217,7 +248,6 @@ def test_community_owner_add_record_to_communities_forcing_review_with_comment( response = client.get( f"/records/{record.pid.pid_value}", headers=headers, - json=data, ) record_communities = response.json["parent"]["communities"]["ids"] # assert that the community was not added @@ -235,7 +265,6 @@ def test_community_owner_add_record_to_communities_forcing_review_with_comment( response = client.get( f"/requests/{request_id}", headers=headers, - json=data, ) request = response.json assert request["type"] == CommunityInclusion.type_id @@ -246,7 +275,6 @@ def test_community_owner_add_record_to_communities_forcing_review_with_comment( response = client.get( f"/requests/{request_id}/timeline", headers=headers, - json=data, ) comments = response.json assert comments["hits"]["total"] == 1 @@ -262,7 +290,6 @@ def test_community_owner_add_record_to_communities_forcing_review_with_comment( response = client.get( f"/communities/{community_id}/records", headers=headers, - json=data, ) assert response.json["hits"]["total"] == expected_n_results @@ -308,12 +335,13 @@ def test_restrict_community_before_accepting_inclusion( assert response.status_code == 200 # accept request should fail - response = client.post( - f"/requests/{request_id}/actions/accept", - headers=headers, - json={}, - ) - assert response.status_code == 400 + # The error handlers for this action are defined in invenio-app-rdm, therefore we catch the exception here + with pytest.raises(InvalidAccessRestrictions): + client.post( + f"/requests/{request_id}/actions/accept", + headers=headers, + json={}, + ) def test_create_new_version_after_inclusion_request( @@ -412,15 +440,15 @@ def test_create_new_version_after_inclusion_request( assert hit["metadata"]["title"] == second_version_record["metadata"]["title"] -def test_include_public_record_in_restricted_community( +def test_accept_public_record_in_restricted_community( client, - uploader, record_community, headers, restricted_community, + community_owner, ): - """Test include public record in restricted community.""" - client = uploader.login(client) + """Test accept public record in restricted community.""" + client = community_owner.login(client) data = { "communities": [ @@ -433,12 +461,18 @@ def test_include_public_record_in_restricted_community( headers=headers, json=data, ) - assert response.status_code == 400 - assert response.json["errors"] - assert ( - "cannot be included in a restricted community" - in response.json["errors"][0]["message"] - ) + assert response.status_code == 200 + assert response.json["processed"] + assert len(response.json["processed"]) == 1 + request_id = response.json["processed"][0]["request_id"] + + # The error handlers for this action are defined in invenio-app-rdm, therefore we catch the exception here + with pytest.raises(InvalidAccessRestrictions): + client.post( + f"/requests/{request_id}/actions/accept", + headers=headers, + json={}, + ) def test_include_community_already_in( @@ -560,7 +594,6 @@ def test_remove_community( response = client.get( f"/communities/{community.id}/records", headers=headers, - json=data, ) assert response.json["hits"]["total"] == 0 @@ -582,7 +615,7 @@ def test_remove_missing_permission( assert response.status_code == 400 assert len(response.json["errors"]) == 1 record_saved = client.get(f"/records/{record.pid.pid_value}", headers=headers) - assert record_saved.json["parent"]["communities"] == {"ids": [str(community.id)]} + assert record_saved.json["parent"]["communities"]["ids"] == [str(community.id)] def test_remove_existing_non_existing_community( @@ -607,7 +640,11 @@ def test_remove_existing_non_existing_community( @pytest.mark.parametrize( "payload", - [[{"id": "wrong-id"}], [{"id": "duplicated-id"}, {"id": "duplicated-id"}], []], + ( + [{"id": "wrong-id"}], + [{"id": "duplicated-id"}, {"id": "duplicated-id"}], + [], + ), ) def test_add_remove_non_existing_community( client, uploader, record_community, headers, community, payload @@ -625,9 +662,7 @@ def test_add_remove_non_existing_community( ) assert response.status_code == 400 record_saved = client.get(f"/records/{record.pid.pid_value}", headers=headers) - assert record_saved.json["parent"]["communities"] == { - "ids": [str(community.id)] - } + assert record_saved.json["parent"]["communities"]["ids"] == [str(community.id)] def test_remove_another_community( @@ -713,3 +748,366 @@ def test_search_communities( headers=headers, ) assert response.status_code == 403 + + +def test_add_record_to_community_submission_closed_non_member( + client, + uploader, + record_community, + headers, + community2, + closed_submission_community, +): + """Test addition of record to community with closed submission.""" + client = uploader.login(client) + + data = { + "communities": [ + {"id": community2.id}, + {"id": closed_submission_community.id}, + ] + } + record = record_community.create_record() + response = client.post( + f"/records/{record.pid.pid_value}/communities", + headers=headers, + json=data, + ) + + assert response.status_code == 200 + assert ( + response.json["errors"][0]["message"] + == "Submission to this community is only allowed to community members." + ) + processed = response.json["processed"] + assert len(processed) == 1 + + +def test_add_record_to_community_submission_closed_member( + client, + community_owner, + record_community, + headers, + community2, + closed_submission_community, +): + """Test addition of record to community with closed submission.""" + client = community_owner.login(client) + + data = { + "communities": [ + {"id": community2.id}, + {"id": closed_submission_community.id}, + ] + } + record = record_community.create_record() + response = client.post( + f"/records/{record.pid.pid_value}/communities", + headers=headers, + json=data, + ) + assert response.status_code == 200 + assert not response.json.get("errors") + processed = response.json["processed"] + assert len(processed) == 2 + + +def test_add_record_to_community_submission_open_non_member( + client, + uploader, + record_community, + headers, + community2, +): + """Test addition of record to community with open submission.""" + client = uploader.login(client) + + data = { + "communities": [ + {"id": community2.id}, + ] + } + record = record_community.create_record() + response = client.post( + f"/records/{record.pid.pid_value}/communities", + headers=headers, + json=data, + ) + assert response.status_code == 200 + assert not response.json.get("errors") + processed = response.json["processed"] + assert len(processed) == 1 + + +def test_add_record_to_restricted_community_submission_open_non_member( + client, + uploader, + record_community, + headers, + restricted_community, +): + """Test addition of record to restricted community with open submission.""" + client = uploader.login(client) + + data = { + "communities": [ + {"id": restricted_community.id}, + ] + } + record = record_community.create_record() + response = client.post( + f"/records/{record.pid.pid_value}/communities", + headers=headers, + json=data, + ) + assert response.status_code == 400 + assert ( + response.json["errors"][0]["message"] + == "Submission to this community is only allowed to community members." + ) + assert not response.json.get("processed") + + +def test_add_record_to_restricted_community_submission_open_member( + client, + community_owner, + record_community, + headers, + restricted_community, +): + """Test addition of record to restricted community with open submission.""" + client = community_owner.login(client) + + data = { + "communities": [ + {"id": restricted_community.id}, + ] + } + record = record_community.create_record() + response = client.post( + f"/records/{record.pid.pid_value}/communities", + headers=headers, + json=data, + ) + assert response.status_code == 200 + assert not response.json.get("errors") + processed = response.json["processed"] + assert len(processed) == 1 + + +# Assure Records community exists tests +# ------------------------------------- + + +def test_restricted_record_creation( + app, + record_community, + uploader, + curator, + community_owner, + test_user, + superuser, + monkeypatch, +): + """Verify CommunityRequiredError is raised when direct publish a record""" + # You can directly publish a record when the config is disabled + monkeypatch.setitem(app.config, "RDM_COMMUNITY_REQUIRED_TO_PUBLISH", False) + rec = record_community.create_record(community=None) + assert rec.id + monkeypatch.setitem(app.config, "RDM_COMMUNITY_REQUIRED_TO_PUBLISH", True) + # You can't directly publish + users = [ + curator, + test_user, + uploader, + community_owner, + ] + for user in users: + with pytest.raises(CommunityRequiredError): + record_community.create_record(uploader=user, community=None) + + # Super user can! + super_user_rec = record_community.create_record(uploader=superuser, community=None) + assert super_user_rec.id + + +def test_republish_with_mulitple_communities( + app, + db, + headers, + client, + minimal_record, + open_review_community, + record_community, + community2, + uploader, + monkeypatch, +): + """Verify new version of record with multiple communities can be re-published""" + monkeypatch.setitem(app.config, "RDM_COMMUNITY_REQUIRED_TO_PUBLISH", True) + client = uploader.login(client) + comm = [ + community2, + open_review_community, + ] + record = record_community.create_record() + record_pid = record.pid.pid_value + for com in comm: + _add_to_community(db, record, com) + assert len(record.parent.communities.ids) == 3 + response = client.post( + f"/records/{record_pid}/versions", + headers=headers, + ) + assert response.is_json + assert response.status_code == 201 + current_rdm_records_service.update_draft( + uploader.identity, response.json["id"], minimal_record + ) + result_item = current_rdm_records_service.publish( + uploader.identity, response.json["id"] + ) + new_record_pid = result_item._record.pid.pid_value + + new_record = client.get(f"/records/{new_record_pid}", headers=headers) + assert len(new_record.json["parent"]["communities"]["ids"]) == 3 + + +def test_remove_last_existing_non_existing_community( + app, + client, + uploader, + record_community, + headers, + community, + monkeypatch, +): + """Test removal of an existing and non-existing community from the record, + while ensuring at least one community exists.""" + monkeypatch.setitem(app.config, "RDM_COMMUNITY_REQUIRED_TO_PUBLISH", True) + data = { + "communities": [ + {"id": "wrong-id"}, + {"id": community.id}, + {"id": "wrong-id2"}, + ] + } + + client = uploader.login(client) + record = record_community.create_record() + record_pid = record.pid.pid_value + response = client.delete( + f"/records/{record_pid}/communities", + headers=headers, + json=data, + ) + assert response.is_json + assert response.status_code == 400 + # Should get 3 errors: Can't remove community, 2 bad IDs + assert len(response.json["errors"]) == 3 + record_saved = client.get(f"/records/{record_pid}", headers=headers) + assert record_saved.json["parent"]["communities"] + + +def test_remove_last_community_api_error_handling( + record_community, + community, + uploader, + headers, + curator, + client, + app, + monkeypatch, +): + """Testing error message when trying to remove last community.""" + monkeypatch.setitem(app.config, "RDM_COMMUNITY_REQUIRED_TO_PUBLISH", True) + record = record_community.create_record() + record_pid = record.pid.pid_value + data = {"communities": [{"id": community.id}]} + for user in [uploader, curator]: + client = user.login(client) + response = client.get( + f"/communities/{community.id}/records", + headers=headers, + json=data, + ) + assert ( + len(response.json["hits"]["hits"][0]["parent"]["communities"]["ids"]) == 1 + ) + response = client.delete( + f"/records/{record_pid}/communities", + headers=headers, + json=data, + ) + assert response.is_json + assert response.status_code == 400 + + record_saved = client.get(f"/records/{record_pid}", headers=headers) + assert record_saved.json["parent"]["communities"] + assert len(response.json["errors"]) == 1 + + client = user.logout(client) + # check communities number + response = client.get( + f"/communities/{community.id}/records", + headers=headers, + json=data, + ) + assert ( + len(response.json["hits"]["hits"][0]["parent"]["communities"]["ids"]) == 1 + ) + + +def test_remove_record_last_community_with_multiple_communities( + closed_review_community, + open_review_community, + record_community, + community2, + uploader, + headers, + client, + app, + db, + monkeypatch, +): + """Testing correct removal of multiple communities""" + monkeypatch.setitem(app.config, "RDM_COMMUNITY_REQUIRED_TO_PUBLISH", True) + client = uploader.login(client) + + record = record_community.create_record() + record_pid = record.pid.pid_value + comm = [ + community2, + open_review_community, + closed_review_community, + ] # one more in the rec fixture so it's 4 + for com in comm: + _add_to_community(db, record, com) + assert len(record.parent.communities.ids) == 4 + + data = {"communities": [{"id": x} for x in record.parent.communities.ids]} + + response = client.delete( + f"/records/{record_pid}/communities", + headers=headers, + json=data, + ) + # You get res 200 with error msg if all communities you are deleting + assert response.status_code == 200 + assert "error" in str(response.data) + + rec_com_left = client.get(f"/records/{record_pid}", headers=headers) + assert len(rec_com_left.json["parent"]["communities"]["ids"]) == 1 + + # You get res 400 with error msg if you Delete the last one only. + response = client.delete( + f"/records/{record_pid}/communities", + headers=headers, + json={"communities": [{"id": str(record.parent.communities.ids[0])}]}, + ) + assert response.status_code == 400 + assert "error" in str(response.data) + + record_saved = client.get(f"/records/{record_pid}", headers=headers) + # check that only one community ID is associated with the record + assert len(record_saved.json["parent"]["communities"]["ids"]) == 1 diff --git a/tests/resources/test_resources_community_records.py b/tests/resources/test_resources_community_records.py index b4b2f77c6..7349145b5 100644 --- a/tests/resources/test_resources_community_records.py +++ b/tests/resources/test_resources_community_records.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Tests community records resources.""" + import pytest from invenio_rdm_records.proxies import current_community_records_service diff --git a/tests/resources/test_resources_pids.py b/tests/resources/test_resources_pids.py index 613b53063..9406928a5 100644 --- a/tests/resources/test_resources_pids.py +++ b/tests/resources/test_resources_pids.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -128,7 +128,9 @@ def test_external_doi_blocked_prefix( assert draft.json["errors"] == [ { "field": "pids.doi", - "messages": ["The prefix '10.1234' is administrated locally."], + "messages": [ + "The prefix '10.1234' is managed by Invenio. Please supply an external DOI or select 'No' to have a DOI generated for you." + ], } ] @@ -167,3 +169,27 @@ def test_pids_publish_validation_error( } ] assert expected == record.json["errors"] + + +def test_required_pids_removed( + running_app, client, minimal_record, headers, search_clear, uploader +): + """Tests that removed required PIDs are restored on publish.""" + client = uploader.login(client) + record = publish_record(client, minimal_record, headers) + first_publish_pids = deepcopy(record["pids"]) + + # Edit + draft = client.post(link(record["links"]["draft"])) + assert draft.status_code == 201 + # Update to remove (required) OAI PID + data = draft.json + data["pids"].pop("oai") + res = client.put(link(draft.json["links"]["self"]), headers=headers, json=data) + assert res.status_code == 200 + # Publish + record = client.post(link(draft.json["links"]["publish"]), headers=headers) + assert record.status_code == 202 + + # Check that the OAI PID was restored + assert record.json["pids"] == first_publish_pids diff --git a/tests/resources/test_resources_review.py b/tests/resources/test_resources_review.py index 424e4a078..9055e3926 100644 --- a/tests/resources/test_resources_review.py +++ b/tests/resources/test_resources_review.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. @@ -224,3 +224,233 @@ def test_delete_no_review( # Try to delete an open review - should not be possible req = client.delete(review_link, headers=headers) assert req.status_code == 400 + + +def test_submission_closed_non_member( + client, + minimal_record, + closed_submission_community, + headers, + uploader, +): + """Test non-member's ability to submit record to the public community with closed submission policy.""" + client = uploader.login(client) + + # Request a review + minimal_record["parent"] = { + "review": { + "type": CommunitySubmission.type_id, + "receiver": {"community": closed_submission_community.data["id"]}, + } + } + + # Create a draft + draft = client.post("/records", headers=headers, data=json.dumps(minimal_record)) + links = draft.json["links"] + review = draft.json["parent"]["review"] + assert draft.status_code == 201 + assert "submit-review" in links + assert "id" in review + assert review["receiver"] == {"community": closed_submission_community.data["id"]} + assert review["type"] == CommunitySubmission.type_id + assert draft.json["parent"]["communities"] == {} + + # Submit for review + # # as a non-member + response = client.post(link(links["submit-review"]), json={}, headers=headers) + assert response.status_code == 403 + assert ( + response.json["message"] + == "Submission to this community is only allowed to community members." + ) + + # # as an unauthorized user + client = uploader.logout(client) + response = client.post(link(links["submit-review"]), json={}, headers=headers) + assert response.status_code == 403 + assert response.json["message"] == "Permission denied." + + +def test_submission_closed_member( + client, + minimal_record, + closed_submission_community, + headers, + community_owner, +): + """Test member's ability to submit record to the public community with closed submission policy.""" + client = community_owner.login(client) + + # Request a review + minimal_record["parent"] = { + "review": { + "type": CommunitySubmission.type_id, + "receiver": {"community": closed_submission_community.data["id"]}, + } + } + + # Create a draft + draft = client.post("/records", headers=headers, data=json.dumps(minimal_record)) + links = draft.json["links"] + review = draft.json["parent"]["review"] + assert draft.status_code == 201 + assert "submit-review" in links + assert "id" in review + assert review["receiver"] == {"community": closed_submission_community.data["id"]} + assert review["type"] == CommunitySubmission.type_id + assert draft.json["parent"]["communities"] == {} + + # Submit for review + # # as a member + response = client.post(link(links["submit-review"]), json={}, headers=headers) + assert response.status_code == 202 + + +def test_submission_open_non_member( + client, + minimal_record, + community, + headers, + uploader, +): + """Test different users ability to submit record to the public community with open submission policy.""" + client = uploader.login(client) + + # Request a review + minimal_record["parent"] = { + "review": { + "type": CommunitySubmission.type_id, + "receiver": {"community": community.data["id"]}, + } + } + + # Create a draft + draft = client.post("/records", headers=headers, data=json.dumps(minimal_record)) + links = draft.json["links"] + review = draft.json["parent"]["review"] + assert draft.status_code == 201 + assert "submit-review" in links + assert "id" in review + assert review["receiver"] == {"community": community.data["id"]} + assert review["type"] == CommunitySubmission.type_id + assert draft.json["parent"]["communities"] == {} + + # Submit for review + # # as a non-member + response = client.post(link(links["submit-review"]), json={}, headers=headers) + assert response.status_code == 202 + + # # as an unauthorized user + client = uploader.logout(client) + response = client.post(link(links["submit-review"]), json={}, headers=headers) + assert response.status_code == 403 + assert response.json["message"] == "Permission denied." + + +def test_submission_open_member( + client, + minimal_record, + community, + headers, + community_owner, +): + """Test member's ability to submit record to the public community with open submission policy.""" + client = community_owner.login(client) + + # Request a review + minimal_record["parent"] = { + "review": { + "type": CommunitySubmission.type_id, + "receiver": {"community": community.data["id"]}, + } + } + + # Create a draft + draft = client.post("/records", headers=headers, data=json.dumps(minimal_record)) + links = draft.json["links"] + review = draft.json["parent"]["review"] + assert draft.status_code == 201 + assert "submit-review" in links + assert "id" in review + assert review["receiver"] == {"community": community.data["id"]} + assert review["type"] == CommunitySubmission.type_id + assert draft.json["parent"]["communities"] == {} + + # Submit for review + # # as a member + response = client.post(link(links["submit-review"]), json={}, headers=headers) + assert response.status_code == 202 + + +def test_submission_open_in_restricted_community_non_member( + client, + minimal_record, + restricted_community, + headers, + uploader, +): + """Test non-member's ability to submit record to the restricted community with open submission policy.""" + client = uploader.login(client) + + # Request a review + minimal_record["parent"] = { + "review": { + "type": CommunitySubmission.type_id, + "receiver": {"community": restricted_community.data["id"]}, + } + } + + # Create a draft + draft = client.post("/records", headers=headers, data=json.dumps(minimal_record)) + links = draft.json["links"] + review = draft.json["parent"]["review"] + assert draft.status_code == 201 + assert "submit-review" in links + assert "id" in review + assert review["receiver"] == {"community": restricted_community.data["id"]} + assert review["type"] == CommunitySubmission.type_id + assert draft.json["parent"]["communities"] == {} + + # Submit for review + # # as a non-member + response = client.post(link(links["submit-review"]), json={}, headers=headers) + assert response.status_code == 403 + assert ( + response.json["message"] + == "Submission to this community is only allowed to community members." + ) + + +def test_submission_open_in_restricted_community_member( + client, + minimal_record, + restricted_community, + headers, + community_owner, +): + """Test member's ability to submit record to the restricted community with open submission policy.""" + client = community_owner.login(client) + + # Request a review + minimal_record["parent"] = { + "review": { + "type": CommunitySubmission.type_id, + "receiver": {"community": restricted_community.data["id"]}, + } + } + + # Create a draft + draft = client.post("/records", headers=headers, data=json.dumps(minimal_record)) + links = draft.json["links"] + review = draft.json["parent"]["review"] + assert draft.status_code == 201 + assert "submit-review" in links + assert "id" in review + assert review["receiver"] == {"community": restricted_community.data["id"]} + assert review["type"] == CommunitySubmission.type_id + assert draft.json["parent"]["communities"] == {} + + # Submit for review + # # as a member + response = client.post(link(links["submit-review"]), json={}, headers=headers) + assert response.status_code == 202 diff --git a/tests/resources/test_resources_search.py b/tests/resources/test_resources_search.py new file mode 100644 index 000000000..6597b4395 --- /dev/null +++ b/tests/resources/test_resources_search.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023-2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Tests record search.""" + +from invenio_rdm_records.records.api import RDMRecord + + +def test_advance_record_search( + client, + headers, + record_community, + minimal_record, + uploader, +): + """Test search record's communities.""" + uploader.login(client) + + record_title = "A Römäns storÿ 123456789012" + minimal_record["metadata"]["title"] = record_title + record_community.create_record( + minimal_record, uploader + ) # Create record without community + + RDMRecord.index.refresh() + + # Search for accent title + res = client.get("/records", query_string={"q": "romans"}, headers=headers) + assert res.status_code == 200 + assert res.json["hits"]["total"] == 1 + records = res.json["hits"]["hits"] + assert records[0]["metadata"]["title"] == record_title + + # Search with regex + res = client.get("/records", query_string={"q": "/\d{12}/"}, headers=headers) + assert res.status_code == 200 + assert res.json["hits"]["total"] == 1 + records = res.json["hits"]["hits"] + assert records[0]["metadata"]["title"] == record_title + + # Search with forward slash + res = client.get("/records", query_string={"q": "/"}, headers=headers) + assert res.status_code == 200 + + # Search with punctuation on title.original subfield (standard) + res = client.get( + "/records", + query_string={"q": "metadata.title.original:romans!%20sto.ry"}, + headers=headers, + ) + assert res.status_code == 200 + assert res.json["hits"]["total"] == 0 + + # Search with punctuation on title field (analyzed) + res = client.get( + "/records", + query_string={"q": "metadata.title:romans!%20sto.ry"}, + headers=headers, + ) + assert res.status_code == 200 + assert res.json["hits"]["total"] == 1 + records = res.json["hits"]["hits"] + assert records[0]["metadata"]["title"] == record_title + + uploader.logout(client) diff --git a/tests/resources/test_resources_user_access.py b/tests/resources/test_resources_user_access.py new file mode 100644 index 000000000..36ba0ad9b --- /dev/null +++ b/tests/resources/test_resources_user_access.py @@ -0,0 +1,314 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Tests for RDMGrantsAccessResource.""" + +import json + +from tests.helpers import login_user, logout_user + + +def test_read_by_subject_found( + running_app, client, minimal_record, headers, community_owner, users +): + """Test read grant by user id.""" + # create record + login_user(client, users[0]) + response = client.post("/records", data=json.dumps(minimal_record), headers=headers) + assert response.status_code == 201 + recid = response.json["id"] + user_id = community_owner.id + + # create grant + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + } + ] + } + response = client.post( + f"/records/{recid}/access/grants", json=grant_payload, headers=headers + ) + assert response.status_code == 201 + + # read grant + response = client.get(f"/records/{recid}/access/users/{user_id}", headers=headers) + assert response.status_code == 200 + assert response.json["permission"] == "preview" + assert response.json["subject"]["id"] == user_id + assert response.json["subject"]["type"] == "user" + + # read as an anonymous user + logout_user(client) + response = client.get(f"/records/{recid}/access/users/{user_id}", headers=headers) + assert response.status_code == 403 + + # read as a different user + login_user(client, users[1]) + response = client.get(f"/records/{recid}/access/users/{user_id}", headers=headers) + assert response.status_code == 403 + + +def test_read_by_subject_not_found( + running_app, client_with_login, minimal_record, headers, community_owner +): + """Test read grant by user id. Not found.""" + # create record + client = client_with_login + response = client.post("/records", data=json.dumps(minimal_record), headers=headers) + assert response.status_code == 201 + recid = response.json["id"] + user_id = community_owner.id + + # create grant + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + } + ] + } + response = client.post( + f"/records/{recid}/access/grants", json=grant_payload, headers=headers + ) + assert response.status_code == 201 + + # read grant with different user id + response = client.get(f"/records/{recid}/access/users/3", headers=headers) + assert response.status_code == 404 + assert response.json["message"] == "No grant found by given user id." + + +def test_delete_by_subject_found( + running_app, client, users, minimal_record, headers, community_owner +): + """Test delete grant by user id.""" + # create record + login_user(client, users[0]) + response = client.post("/records", data=json.dumps(minimal_record), headers=headers) + assert response.status_code == 201 + recid = response.json["id"] + user_id = community_owner.id + + # create grant + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + } + ] + } + response = client.post( + f"/records/{recid}/access/grants", json=grant_payload, headers=headers + ) + assert response.status_code == 201 + + # read grant + response = client.get(f"/records/{recid}/access/users/{user_id}", headers=headers) + assert response.status_code == 200 + + # try to delete as an anonymous user + logout_user(client) + response = client.delete( + f"/records/{recid}/access/users/{user_id}", headers=headers + ) + assert response.status_code == 403 + + # try to delete as a different user + login_user(client, users[1]) + response = client.delete( + f"/records/{recid}/access/users/{user_id}", headers=headers + ) + assert response.status_code == 403 + logout_user(client) + + # delete grant + login_user(client, users[0]) + response = client.delete( + f"/records/{recid}/access/users/{user_id}", headers=headers + ) + assert response.status_code == 204 + + # read grant + response = client.get(f"/records/{recid}/access/users/{user_id}", headers=headers) + assert response.status_code == 404 + assert response.json["message"] == "No grant found by given user id." + + +def test_delete_by_subject_id_not_found( + running_app, client_with_login, minimal_record, headers +): + """Test delete grant by user id. Not found.""" + # create record + client = client_with_login + response = client.post("/records", data=json.dumps(minimal_record), headers=headers) + assert response.status_code == 201 + recid = response.json["id"] + + # delete grant + response = client.delete(f"/records/{recid}/access/users/2", headers=headers) + assert response.status_code == 404 + assert response.json["message"] == "No grant found by given user id." + + +def test_search_grants_by_subject( + running_app, client, users, minimal_record, headers, community_owner, curator +): + """Test get all user grants for record.""" + # create record + login_user(client, users[0]) + response = client.post("/records", data=json.dumps(minimal_record), headers=headers) + assert response.status_code == 201 + recid = response.json["id"] + + user_id = community_owner.id + user_id2 = curator.id + + # create user grants + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "edit", + } + ] + } + grant_payload2 = { + "grants": [ + { + "subject": {"type": "user", "id": user_id2}, + "permission": "preview", + } + ] + } + response = client.post( + f"/records/{recid}/access/grants", json=grant_payload2, headers=headers + ) + assert response.status_code == 201 + + response = client.post( + f"/records/{recid}/access/grants", json=grant_payload, headers=headers + ) + assert response.status_code == 201 + + # search user grants + response = client.get(f"/records/{recid}/access/users", headers=headers) + assert response.status_code == 200 + assert response.json["hits"]["total"] == 2 + assert response.json["hits"]["hits"][0]["subject"]["type"] == "user" + assert response.json["hits"]["hits"][0]["subject"]["id"] == user_id2 + assert response.json["hits"]["hits"][1]["subject"]["type"] == "user" + assert response.json["hits"]["hits"][1]["subject"]["id"] == user_id + + # search as an anonymous user + logout_user(client) + response = client.get(f"/records/{recid}/access/users", headers=headers) + assert response.status_code == 403 + + # search as a different user + login_user(client, users[1]) + response = client.get(f"/records/{recid}/access/users", headers=headers) + assert response.status_code == 403 + + +def test_search_grants_by_subject_not_found( + running_app, client_with_login, minimal_record, headers +): + """Test get all user grants for record. Not found.""" + # create record + client = client_with_login + response = client.post("/records", data=json.dumps(minimal_record), headers=headers) + assert response.status_code == 201 + recid = response.json["id"] + + # search user grants + response = client.get(f"/records/{recid}/access/users", headers=headers) + assert response.status_code == 200 + assert response.json["hits"]["total"] == 0 + + +def test_patch_grants_by_subject( + running_app, client, users, minimal_record, headers, community_owner +): + """Test partial update of user grants for record.""" + # create record + login_user(client, users[0]) + response = client.post("/records", data=json.dumps(minimal_record), headers=headers) + assert response.status_code == 201 + recid = response.json["id"] + user_id = community_owner.id + + # create user grants + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + "origin": "origin", + } + ] + } + response = client.post( + f"/records/{recid}/access/grants", json=grant_payload, headers=headers + ) + assert response.status_code == 201 + + payload = { + "permission": "manage", + } + + # update as an anonymous user + logout_user(client) + response = client.patch( + f"/records/{recid}/access/users/{user_id}", json=payload, headers=headers + ) + assert response.status_code == 403 + + # update as a different user + login_user(client, users[1]) + response = client.patch( + f"/records/{recid}/access/users/{user_id}", json=payload, headers=headers + ) + assert response.status_code == 403 + logout_user(client) + + # update grant + login_user(client, users[0]) + response = client.patch( + f"/records/{recid}/access/users/{user_id}", json=payload, headers=headers + ) + assert response.status_code == 200 + + # read grant + response = client.get(f"/records/{recid}/access/users/{user_id}", headers=headers) + assert response.status_code == 200 + assert response.json["permission"] == "manage" + + +def test_patch_grants_by_subject_not_found( + running_app, client_with_login, minimal_record, headers +): + """Test partial update of user grants for record. Not found""" + # create record + client = client_with_login + response = client.post("/records", data=json.dumps(minimal_record), headers=headers) + assert response.status_code == 201 + recid = response.json["id"] + + # update grant + payload = { + "permission": "manage", + } + response = client.patch( + f"/records/{recid}/access/users/55", json=payload, headers=headers + ) + assert response.status_code == 404 + assert response.json["message"] == "No grant found by given user id." diff --git a/tests/resources/test_serialized_links.py b/tests/resources/test_serialized_links.py index c02c5439d..3d0609725 100644 --- a/tests/resources/test_serialized_links.py +++ b/tests/resources/test_serialized_links.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020-2021 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020-2021 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -65,13 +65,20 @@ def test_draft_links(client, draft_json, minimal_record, headers): "files": f"https://127.0.0.1:5000/api/records/{pid_value}/draft/files", "media_files": f"https://127.0.0.1:5000/api/records/{pid_value}/draft/media-files", "archive": f"https://127.0.0.1:5000/api/records/{pid_value}/draft/files-archive", # noqa + "archive_media": f"https://127.0.0.1:5000/api/records/{pid_value}/draft/media-files-archive", # noqa "reserve_doi": f"https://127.0.0.1:5000/api/records/{pid_value}/draft/pids/doi", # noqa "self_iiif_manifest": f"https://127.0.0.1:5000/api/iiif/draft:{pid_value}/manifest", # noqa "self_iiif_sequence": f"https://127.0.0.1:5000/api/iiif/draft:{pid_value}/sequence/default", # noqa "communities": f"https://127.0.0.1:5000/api/records/{pid_value}/communities", # noqa "communities-suggestions": f"https://127.0.0.1:5000/api/records/{pid_value}/communities-suggestions", # noqa "requests": f"https://127.0.0.1:5000/api/records/{pid_value}/requests", # noqa + "access": f"https://127.0.0.1:5000/api/records/{pid_value}/access", + "access_request": f"https://127.0.0.1:5000/api/records/{pid_value}/access/request", + "access_grants": f"https://127.0.0.1:5000/api/records/{pid_value}/access/grants", + "access_users": f"https://127.0.0.1:5000/api/records/{pid_value}/access/users", + "access_groups": f"https://127.0.0.1:5000/api/records/{pid_value}/access/groups", } + assert expected_links == created_draft_links == read_draft_links @@ -88,15 +95,18 @@ def test_record_links(client, published_json, headers): expected_links = { "self": f"https://127.0.0.1:5000/api/records/{pid_value}", "self_html": f"https://127.0.0.1:5000/records/{pid_value}", - "self_doi": f"https://127.0.0.1:5000/doi/{doi_value}", "doi": f"https://handle.stage.datacite.org/{doi_value}", + "self_doi": f"https://handle.stage.datacite.org/{doi_value}", + "self_doi_html": f"https://127.0.0.1:5000/doi/{doi_value}", "draft": f"https://127.0.0.1:5000/api/records/{pid_value}/draft", "files": f"https://127.0.0.1:5000/api/records/{pid_value}/files", "media_files": f"https://127.0.0.1:5000/api/records/{pid_value}/media-files", "archive": f"https://127.0.0.1:5000/api/records/{pid_value}/files-archive", + "archive_media": f"https://127.0.0.1:5000/api/records/{pid_value}/media-files-archive", "parent": f"https://127.0.0.1:5000/api/records/{parent_pid_value}", - "parent_doi": f"https://127.0.0.1:5000/doi/{parent_doi_value}", "parent_html": f"https://127.0.0.1:5000/records/{parent_pid_value}", + "parent_doi": f"https://handle.stage.datacite.org/{parent_doi_value}", + "parent_doi_html": f"https://127.0.0.1:5000/doi/{parent_doi_value}", "versions": f"https://127.0.0.1:5000/api/records/{pid_value}/versions", "latest": f"https://127.0.0.1:5000/api/records/{pid_value}/versions/latest", # noqa "latest_html": f"https://127.0.0.1:5000/records/{pid_value}/latest", # noqa @@ -107,7 +117,13 @@ def test_record_links(client, published_json, headers): "communities": f"https://127.0.0.1:5000/api/records/{pid_value}/communities", # noqa "communities-suggestions": f"https://127.0.0.1:5000/api/records/{pid_value}/communities-suggestions", # noqa "requests": f"https://127.0.0.1:5000/api/records/{pid_value}/requests", # noqa + "access": f"https://127.0.0.1:5000/api/records/{pid_value}/access", + "access_request": f"https://127.0.0.1:5000/api/records/{pid_value}/access/request", + "access_grants": f"https://127.0.0.1:5000/api/records/{pid_value}/access/grants", + "access_users": f"https://127.0.0.1:5000/api/records/{pid_value}/access/users", + "access_groups": f"https://127.0.0.1:5000/api/records/{pid_value}/access/groups", } + assert expected_links == published_record_links == read_record_links diff --git a/tests/resources/test_signposting.py b/tests/resources/test_signposting.py new file mode 100644 index 000000000..c832fd34c --- /dev/null +++ b/tests/resources/test_signposting.py @@ -0,0 +1,55 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 Northwestern University. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Signposting resource tests.""" + + +def test_link_in_metadata_resource_response_headers( + running_app, client_with_login, minimal_record, publish_record +): + """Check content-negotiated API response contains API link.""" + record_json = publish_record(client_with_login, minimal_record) + record_id = record_json["id"] + + response = client_with_login.head( + f"/records/{record_id}", headers={"accept": "application/marcxml+xml"} + ) + + assert ( + response.headers["Link"] + == f' ; rel="linkset" ; type="application/linkset+json"' # noqa + ) + + +# Just a sanity check +def test_signposting_link_permissions( + client, client_with_login, minimal_restricted_record, publish_record +): + record_json = publish_record(client_with_login, minimal_restricted_record) + record_id = record_json["id"] + response = client_with_login.head( + f"/records/{record_id}", headers={"accept": "application/marcxml+xml"} + ) + link = response.headers["Link"] + + response = client.get(link, headers={"accept-type": "application/linkset+json"}) + + assert 404 == response.status_code + + +def test_linkset_endpoint( + running_app, client_with_login, minimal_record, publish_record +): + record_json = publish_record(client_with_login, minimal_record) + record_id = record_json["id"] + + response = client_with_login.get( + f"/records/{record_id}", headers={"accept": "application/linkset+json"} + ) + + assert 200 == response.status_code + assert "application/linkset+json" == response.headers["content-type"] diff --git a/tests/resources/vocabularies/test_names_vocabulary.py b/tests/resources/vocabularies/test_names_vocabulary.py index a696814a9..0bb7c32bc 100644 --- a/tests/resources/vocabularies/test_names_vocabulary.py +++ b/tests/resources/vocabularies/test_names_vocabulary.py @@ -21,6 +21,7 @@ def names_service(): def example_name(app, db, search_clear, superuser_identity, names_service): """Example name.""" data = { + "id": "0000-0001-8135-3489", "name": "Doe, John", "given_name": "John", "family_name": "Doe", @@ -38,20 +39,20 @@ def example_name(app, db, search_clear, superuser_identity, names_service): names_service.delete(superuser_identity, name.id) -def test_names_get(client, example_name, headers): +def test_names_get(client_with_login, example_name, headers): """Test the endpoint to retrieve a single item.""" id_ = example_name.id - res = client.get(f"/names/{id_}", headers=headers) + res = client_with_login.get(f"/names/{id_}", headers=headers) assert res.status_code == 200 assert res.json["id"] == id_ # Test links assert res.json["links"] == {"self": f"https://127.0.0.1:5000/api/names/{id_}"} -def test_names_search(client, example_name, headers): +def test_names_search(client_with_login, example_name, headers): """Test a successful search.""" - res = client.get("/names", headers=headers) + res = client_with_login.get("/names", headers=headers) assert res.status_code == 200 assert res.json["hits"]["total"] == 1 diff --git a/tests/secret_links/test_sharing.py b/tests/secret_links/test_sharing.py index 4875a4756..0b9e63550 100644 --- a/tests/secret_links/test_sharing.py +++ b/tests/secret_links/test_sharing.py @@ -15,7 +15,10 @@ from flask_principal import AnonymousIdentity, Identity, UserNeed from invenio_access.permissions import any_user, authenticated_user from invenio_db import db -from invenio_records_resources.services.errors import PermissionDeniedError +from invenio_records_resources.services.errors import ( + PermissionDeniedError, + RecordPermissionDeniedError, +) from marshmallow.exceptions import ValidationError from invenio_rdm_records.proxies import current_rdm_records @@ -85,7 +88,7 @@ def test_permission_levels(service, restricted_record, identity_simple, client): anon.provides.add(any_user) # Deny anonymous to read restricted record and draft - pytest.raises(PermissionDeniedError, service.read, anon, id_) + pytest.raises(RecordPermissionDeniedError, service.read, anon, id_) pytest.raises(PermissionDeniedError, service.files.list_files, anon, id_) pytest.raises(PermissionDeniedError, service.read_draft, anon, id_) with pytest.raises(PermissionDeniedError): diff --git a/tests/services/components/test_internal_notes_component.py b/tests/services/components/test_internal_notes_component.py new file mode 100644 index 000000000..36c5ca2a4 --- /dev/null +++ b/tests/services/components/test_internal_notes_component.py @@ -0,0 +1,110 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2021 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Tests for the service Metadata component.""" +from copy import deepcopy + +from invenio_rdm_records.proxies import current_rdm_records +from invenio_rdm_records.records import RDMRecord +from invenio_rdm_records.records.api import RDMDraft +from invenio_rdm_records.services.components.internal_notes import ( + InternalNotesComponent, +) + + +def test_notes_component(minimal_record, parent, identity_simple, location): + """Test the metadata component.""" + record = RDMRecord.create(minimal_record, parent=parent) + draft = RDMDraft.new_version(record) + + assert "publication_date" in record.metadata + assert "title" in record.metadata + + component = InternalNotesComponent(current_rdm_records.records_service) + new_data = deepcopy(draft) + new_data["internal_notes"] = [{"note": "abc"}] + # check if internal notes have correct attributes + component.update_draft(identity_simple, data=new_data, record=draft) + assert "internal_notes" in draft + notes = draft["internal_notes"] + assert "id" in notes[0] + assert "timestamp" in notes[0] + assert "added_by" in notes[0] + + # check if new internal note is added properly + new_data["internal_notes"] = notes + [{"note": "def"}] + component.update_draft(identity_simple, data=new_data, record=draft) + assert "internal_notes" in draft + updated_notes = draft["internal_notes"] + assert len(updated_notes) == len(notes) + 1 + + # check if internal note can be removed + existing_id = updated_notes[0]["id"] + del updated_notes[0] + new_data["internal_notes"] = updated_notes + component.update_draft(identity_simple, data=new_data, record=draft) + assert "internal_notes" in draft + updated_notes = draft["internal_notes"] + assert len(updated_notes) == 1 + assert updated_notes[0]["id"] != existing_id + + # check if internal note can be removed and add another one + existing_id = updated_notes[0]["id"] + del updated_notes[0] + new_data["internal_notes"] = updated_notes + [{"note": "def"}] + component.update_draft(identity_simple, data=new_data, record=draft) + assert "internal_notes" in draft + updated_notes = draft["internal_notes"] + assert len(updated_notes) == 1 + assert updated_notes[0]["id"] != existing_id + + # check if internal note once added, is immutable + new_data["internal_notes"] = [ + { + "note": "this text should not be taken into account", + "id": updated_notes[0]["id"], + } + ] + component.update_draft(identity_simple, data=new_data, record=draft) + assert "internal_notes" in draft + updated_notes = draft["internal_notes"] + assert len(updated_notes) == 1 + assert updated_notes[0]["id"] == updated_notes[0]["id"] + assert updated_notes[0]["note"] == "def" + + # test create + record = RDMRecord.create(minimal_record, parent=parent) + data = deepcopy(record) + data["internal_notes"] = [{"note": "abc"}] + component.create(identity_simple, data=data, record=record) + assert "internal_notes" in record + notes = record["internal_notes"] + assert "id" in notes[0] + assert "timestamp" in notes[0] + assert "added_by" in notes[0] + assert notes[0]["note"] == "abc" + + # test new version + draft = RDMDraft.new_version(record) + component.new_version(identity_simple, draft=draft, record=record) + assert "internal_notes" in draft + notes = draft["internal_notes"] + assert "id" in notes[0] + assert "timestamp" in notes[0] + assert "added_by" in notes[0] + assert notes[0]["note"] == "abc" + + # test publish + record = RDMRecord.publish(draft) + + component.publish(identity_simple, draft=draft, record=record) + assert "internal_notes" in record + notes = record["internal_notes"] + assert "id" in notes[0] + assert "timestamp" in notes[0] + assert "added_by" in notes[0] + assert notes[0]["note"] == "abc" diff --git a/tests/services/components/test_pids_component.py b/tests/services/components/test_pids_component.py index dee67b2b1..cbd3dc841 100644 --- a/tests/services/components/test_pids_component.py +++ b/tests/services/components/test_pids_component.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2023 Northwestern University. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify @@ -8,7 +8,6 @@ """Tests for the service PIDsComponent.""" - import pytest from invenio_pidstore.errors import PIDDoesNotExistError from invenio_pidstore.models import PIDStatus diff --git a/tests/services/components/test_signal_component.py b/tests/services/components/test_signal_component.py new file mode 100644 index 000000000..ea2116128 --- /dev/null +++ b/tests/services/components/test_signal_component.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Test signal component.""" + +from io import BytesIO +from zipfile import ZipFile + +import pytest + +from invenio_rdm_records.proxies import current_rdm_records +from invenio_rdm_records.services.components import DefaultRecordsComponents +from invenio_rdm_records.services.components.signal import SignalComponent +from invenio_rdm_records.services.signals import post_publish_signal + + +@pytest.fixture() +def service(running_app): + """The record service.""" + return current_rdm_records.records_service + + +@pytest.fixture(scope="module") +def zip_file(): + """Github repository ZIP fixture.""" + memfile = BytesIO() + zipfile = ZipFile(memfile, "w") + zipfile.writestr("test.txt", "hello world") + zipfile.close() + memfile.seek(0) + return memfile + + +def add_file_to_draft(identity, draft_id, file_name, file_contents): + """Add a file to the record.""" + draft_file_service = current_rdm_records.records_service.draft_files + + draft_file_service.init_files(identity, draft_id, data=[{"key": file_name}]) + draft_file_service.set_file_content(identity, draft_id, file_name, file_contents) + result = draft_file_service.commit_file(identity, draft_id, file_name) + return result + + +def test_publish_signal_fired( + running_app, service, minimal_record, identity_simple, monkeypatch, zip_file +): + """Test that the signal is fired.""" + sentinel = {"called": False} + + def _signal_sent(sender, **kwargs): + sentinel["called"] = True + + default_cmps = running_app.app.config.get( + "RDM_RECORDS_SERVICE_COMPONENTS", DefaultRecordsComponents + ) + monkeypatch.setitem( + running_app.app.config, + "RDM_RECORDS_SERVICE_COMPONENTS", + default_cmps + [SignalComponent], + ) + minimal_record["files"]["enabled"] = True + + # Create + draft = service.create(identity_simple, minimal_record) + add_file_to_draft(identity_simple, draft.id, "test.zip", zip_file) + + with post_publish_signal.connected_to(_signal_sent): + # Publish + assert sentinel["called"] == False + record = service.publish(identity_simple, draft.id) + assert sentinel["called"] == True diff --git a/tests/services/components/test_verified_component.py b/tests/services/components/test_verified_component.py index ba7cc93fe..255c75301 100644 --- a/tests/services/components/test_verified_component.py +++ b/tests/services/components/test_verified_component.py @@ -1,12 +1,11 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Tests for the service ContentModerationComponent.""" - import pytest from invenio_requests.proxies import current_requests_service diff --git a/tests/services/conftest.py b/tests/services/conftest.py index e63737075..7ef1b6052 100644 --- a/tests/services/conftest.py +++ b/tests/services/conftest.py @@ -36,7 +36,7 @@ def anyuser_identity(): @pytest.fixture(scope="function") def authenticated_identity(): """Authenticated identity fixture.""" - identity = Identity(1) - identity.provides.add(UserNeed(1)) + identity = Identity(100) + identity.provides.add(UserNeed(100)) identity.provides.add(authenticated_user) return identity diff --git a/tests/services/files/conftest.py b/tests/services/files/conftest.py index c9afd2caf..614ac6640 100644 --- a/tests/services/files/conftest.py +++ b/tests/services/files/conftest.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2020 CERN. +# Copyright (C) 2020-2024 CERN. # Copyright (C) 2020 Northwestern University. # Copyright (C) 2021 TU Wien. # @@ -47,7 +47,7 @@ def app_with_allowed_edits(running_app): sessions as we want to test sqlalchemy-continuum and the latter misbehaves when the default `pytest_invenio.db` fixture is used. Thus, """ - running_app.app.config["RDM_LOCK_EDIT_PUBLISHED_FILES"] = lambda x: False + running_app.app.config["RDM_LOCK_EDIT_PUBLISHED_FILES"] = lambda *_, **__: False return running_app diff --git a/tests/services/files/test_deleted_record_files.py b/tests/services/files/test_deleted_record_files.py new file mode 100644 index 000000000..5cc6ebd6f --- /dev/null +++ b/tests/services/files/test_deleted_record_files.py @@ -0,0 +1,105 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Test some permissions on deleted record files.""" + +from io import BytesIO + +import pytest +from invenio_records_resources.services.errors import PermissionDeniedError + +from invenio_rdm_records.proxies import current_rdm_records_service +from invenio_rdm_records.services.errors import RecordDeletedException + + +def attach_file(service, user, recid, key): + """Attach a file to a record.""" + service.draft_files.init_files(user, recid, data=[{"key": key}]) + service.draft_files.set_file_content(user, recid, key, BytesIO(b"test file")) + service.draft_files.commit_file(user, recid, key) + + +def test_deleted_records_file_flow( + location, minimal_record, identity_simple, superuser_identity, running_app +): + """Test the lifecycle of a deleted record file .""" + data = minimal_record.copy() + data["files"] = {"enabled": True} + service = current_rdm_records_service + + file_service = service.files + + # Create + draft = service.create(identity_simple, data) + + # Add a file + attach_file(service, identity_simple, draft.id, "test.pdf") + + # Publish + record = service.publish(identity_simple, draft.id) + recid = record["id"] + + # Delete record + service.delete_record(superuser_identity, record["id"], {}) + + # List files + with pytest.raises(RecordDeletedException): + file_service.list_files(identity_simple, recid) + + result = file_service.list_files(superuser_identity, recid) + assert result.to_dict()["entries"][0]["key"] == "test.pdf" + assert result.to_dict()["entries"][0]["storage_class"] == "L" + + # Read file metadata + with pytest.raises(RecordDeletedException): + file_service.read_file_metadata(identity_simple, recid, "test.pdf") + + result = file_service.read_file_metadata(superuser_identity, recid, "test.pdf") + assert result.to_dict()["key"] == "test.pdf" + assert result.to_dict()["storage_class"] == "L" + + # Retrieve file + with pytest.raises(RecordDeletedException): + file_service.get_file_content(identity_simple, recid, "test.pdf") + + result = file_service.get_file_content(superuser_identity, recid, "test.pdf") + assert result.file_id == "test.pdf" + + # Delete file + with pytest.raises(PermissionDeniedError): + file_service.delete_file(identity_simple, recid, "test.pdf") + + recid = record["id"] + file_to_initialise = [ + { + "key": "article.txt", + "checksum": "md5:c785060c866796cc2a1708c997154c8e", + "size": 17, # 2kB + "metadata": { + "description": "Published article PDF.", + }, + } + ] + + # Initialize file saving + with pytest.raises(PermissionDeniedError): + file_service.init_files(identity_simple, recid, file_to_initialise) + + # Update file content + with pytest.raises(PermissionDeniedError): + content = BytesIO(b"test file content") + file_service.set_file_content( + identity_simple, + recid, + file_to_initialise[0]["key"], + content, + content.getbuffer().nbytes, + ) + + # Commit file + with pytest.raises(PermissionDeniedError): + file_service.commit_file(identity_simple, recid, "article.txt") diff --git a/tests/services/files/test_metadata_files.py b/tests/services/files/test_metadata_files.py new file mode 100644 index 000000000..734b918c6 --- /dev/null +++ b/tests/services/files/test_metadata_files.py @@ -0,0 +1,79 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Test RDM records files (metadata).""" + +from io import BytesIO + +import pytest +from marshmallow.exceptions import ValidationError + +from invenio_rdm_records.proxies import current_rdm_records_service + + +def test_valid_metadata_set(running_app, db, location, minimal_record, identity_simple): + """Test setting file metadata.""" + data = minimal_record.copy() + data["files"] = {"enabled": True} + service = current_rdm_records_service + + file_service = service.files + + # Create + draft = service.create(identity_simple, data) + + # Initialize files and add valid metadata + metadata = { + "page": 1, + "encoding": "utf-8", + "language": "en", + "charset": "utf-8", + "type": "pdf", + } + service.draft_files.init_files( + identity_simple, + draft.id, + data=[{"key": "test.pdf", "metadata": metadata, "access": {"hidden": False}}], + ) + service.draft_files.set_file_content( + identity_simple, draft.id, "test.pdf", BytesIO(b"test file") + ) + service.draft_files.commit_file(identity_simple, draft.id, "test.pdf") + + # Publish the record + record = service.publish(identity_simple, draft.id) + + # Get file metadata + result = file_service.list_files(identity_simple, draft.id) + assert result.to_dict()["entries"][0]["metadata"] == metadata + assert result.to_dict()["entries"][0]["access"]["hidden"] is False # default value + + +@pytest.mark.skip(reason="We're not validating metadata correctly anyways.") +def test_invalid_metadata_set( + running_app, db, location, minimal_record, identity_simple +): + """Test setting file metadata with invalid data.""" + data = minimal_record.copy() + data["files"] = {"enabled": True} + service = current_rdm_records_service + + # Create + draft = service.create(identity_simple, data) + + # Initialize files and add valid metadata + metadata = { + "page": 1, + "encoding": "utf-8", + "language": "en", + "charset": "utf-8", + "type": "pdf", + "invalid": "invalid", + } + with pytest.raises(ValidationError): + service.draft_files.init_files( + identity_simple, draft.id, data=[{"key": "test.pdf", "metadata": metadata}] + ) diff --git a/tests/services/files/test_revert_of_deleted_files_in_published_record.py b/tests/services/files/test_revert_of_deleted_files_in_published_record.py index 36e8f30cd..93f5123eb 100644 --- a/tests/services/files/test_revert_of_deleted_files_in_published_record.py +++ b/tests/services/files/test_revert_of_deleted_files_in_published_record.py @@ -72,10 +72,14 @@ def test_revert_of_deleted_files_in_published_record( # list all files file_service_config = service.files.config file_cls = file_service_config.record_cls.files.file_cls - all_files = [ - f for f in file_cls.list_by_record(str(record._record.id), with_deleted=True) - ] - deleted_file = all_files[1] + all_files = { + f.key: f + for f in file_cls.list_by_record( + str(record._record.id), + with_deleted=True, + ) + } + deleted_file = all_files["test.pdf"] # revert deleted file deleted_file.revert(deleted_file.revision_id - 1) diff --git a/tests/services/pids/test_pids_service.py b/tests/services/pids/test_pids_service.py index 035f871d9..d6a0d7951 100644 --- a/tests/services/pids/test_pids_service.py +++ b/tests/services/pids/test_pids_service.py @@ -258,7 +258,7 @@ def test_pids_duplicates(running_app, search_clear, minimal_record): "field": "pids.doi", "messages": [ f"doi:{doi} already exists.", - "The prefix '10.1234' is administrated locally.", + "The prefix '10.1234' is managed by Invenio. Please supply an external DOI or select 'No' to have a DOI generated for you.", ], } assert error_msg in duplicated_draft.errors @@ -271,7 +271,7 @@ def test_pids_duplicates(running_app, search_clear, minimal_record): "field": "pids.doi", "messages": [ f"doi:{doi} already exists.", - "The prefix '10.1234' is administrated locally.", + "The prefix '10.1234' is managed by Invenio. Please supply an external DOI or select 'No' to have a DOI generated for you.", ], } assert error_msg in duplicated_draft.errors diff --git a/tests/services/pids/test_pids_tasks.py b/tests/services/pids/test_pids_tasks.py index df76a259c..819e8b152 100644 --- a/tests/services/pids/test_pids_tasks.py +++ b/tests/services/pids/test_pids_tasks.py @@ -1,6 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN +# Copyright (C) 2021-2024 CERN +# Copyright (C) 2024 Graz University of Technology. # # Invenio-RDM-Records is free software; you can redistribute it # and/or modify it under the terms of the MIT License; see LICENSE file for @@ -8,12 +9,16 @@ """PID service tasks tests.""" +from copy import deepcopy from unittest import mock import pytest from invenio_pidstore.models import PIDStatus from invenio_rdm_records.proxies import current_rdm_records +from invenio_rdm_records.records.systemfields.deletion_status import ( + RecordDeletionStatusEnum, +) from invenio_rdm_records.services.pids.tasks import register_or_update_pid @@ -81,6 +86,74 @@ def test_register_pid( ) +def test_register_restricted_pid( + running_app, + search_clear, + minimal_record, + superuser_identity, + mock_datacite_client, +): + """Test register restricted pid.""" + minimal_record["access"]["record"] = "restricted" + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + draft = service.pids.create(superuser_identity, draft.id, "doi") + doi = draft["pids"]["doi"]["identifier"] + provider = service.pids.pid_manager._get_provider("doi", "datacite") + pid = provider.get(pid_value=doi) + record = service.record_cls.publish(draft._record) + record.pids = {pid.pid_type: {"identifier": pid.pid_value, "provider": "datacite"}} + record.metadata = draft["metadata"] + record.access = draft["access"] + record.register() + record.commit() + assert pid.status == PIDStatus.NEW + pid.reserve() + assert pid.status == PIDStatus.RESERVED + register_or_update_pid(recid=record["id"], scheme="doi") + assert pid.status != PIDStatus.REGISTERED + mock_datacite_client.api.public_doi.assert_has_calls([]) + mock_datacite_client.api.draft_doi.assert_has_calls([]) + + access = draft["access"] + access["record"] = "public" + record.access = access + record.commit() + register_or_update_pid(recid=record["id"], scheme="doi") + assert pid.status == PIDStatus.REGISTERED + mock_datacite_client.api.public_doi.assert_has_calls( + [ + mock.call( + metadata={ + "identifiers": [{"identifier": doi, "identifierType": "DOI"}], + "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, + "publisher": "Acme Inc", + "creators": [ + { + "givenName": "Troy", + "nameIdentifiers": [], + "familyName": "Brown", + "nameType": "Personal", + "name": "Brown, Troy", + }, + { + "nameIdentifiers": [], + "nameType": "Organizational", + "name": "Troy Inc.", + }, + ], + "titles": [{"title": "A Romans story"}], + "schemaVersion": "http://datacite.org/schema/kernel-4", + "publicationYear": "2020", + "dates": [{"date": "2020-06-01", "dateType": "Issued"}], + }, + url=f"https://127.0.0.1:5000/doi/{doi}", + doi=doi, + ) + ] + ) + + def test_update_pid( running_app, search_clear, @@ -114,6 +187,7 @@ def test_update_pid( [ mock.call( metadata={ + "event": "publish", "schemaVersion": "http://datacite.org/schema/kernel-4", "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, "creators": [ @@ -154,6 +228,7 @@ def test_update_pid( ), mock.call( metadata={ + "event": "publish", "schemaVersion": "http://datacite.org/schema/kernel-4", "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, "creators": [ @@ -191,3 +266,547 @@ def test_update_pid( ], any_order=True, ) + + +def test_invalidate_pid( + running_app, + search_clear, + minimal_record, + mocker, + superuser_identity, + mock_datacite_client, +): + """No pid provided, creating one by default.""" + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + record = service.publish(superuser_identity, draft.id) + + oai = record["pids"]["oai"]["identifier"] + doi = record["pids"]["doi"]["identifier"] + parent_doi = record["parent"]["pids"]["doi"]["identifier"] + provider = service.pids.pid_manager._get_provider("doi", "datacite") + pid = provider.get(pid_value=doi) + assert pid.status == PIDStatus.REGISTERED + parent_provider = service.pids.parent_pid_manager._get_provider("doi", "datacite") + parent_pid = parent_provider.get(pid_value=parent_doi) + assert parent_pid.status == PIDStatus.REGISTERED + + tombstone_info = {"note": "no specific reason, tbh"} + + record = service.delete_record( + superuser_identity, id_=record.id, data=tombstone_info + ) + + assert mock_datacite_client.api.hide_doi.called is True + assert mock_datacite_client.api.update_doi.called is True + mock_datacite_client.api.update_doi.assert_has_calls( + [ + mock.call( + metadata={ + "event": "publish", + "schemaVersion": "http://datacite.org/schema/kernel-4", + "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, + "creators": [ + { + "name": "Brown, Troy", + "familyName": "Brown", + "nameIdentifiers": [], + "nameType": "Personal", + "givenName": "Troy", + }, + { + "familyName": "Troy Inc.", + "name": "Troy Inc.", + "nameIdentifiers": [], + "nameType": "Organizational", + }, + ], + "titles": [{"title": "A Romans story"}], + "dates": [{"date": "2020-06-01", "dateType": "Issued"}], + "identifiers": [ + {"identifier": parent_doi, "identifierType": "DOI"} + ], + "publicationYear": "2020", + "publisher": "Acme Inc", + }, + doi=parent_doi, + url=f"https://127.0.0.1:5000/doi/{parent_doi}", + ), + ] + ) + + # make sure we still have the PID registered for tombstone + assert record._record.pid.status == PIDStatus.REGISTERED + + +def test_invalidate_versions_pid( + running_app, + search_clear, + minimal_record, + mocker, + superuser_identity, + mock_datacite_client, +): + """No pid provided, creating one by default.""" + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + record = service.publish(superuser_identity, draft.id) + + oai = record["pids"]["oai"]["identifier"] + doi = record["pids"]["doi"]["identifier"] + parent_doi = record["parent"]["pids"]["doi"]["identifier"] + provider = service.pids.pid_manager._get_provider("doi", "datacite") + pid = provider.get(pid_value=doi) + assert pid.status == PIDStatus.REGISTERED + parent_provider = service.pids.parent_pid_manager._get_provider("doi", "datacite") + parent_pid = parent_provider.get(pid_value=parent_doi) + assert parent_pid.status == PIDStatus.REGISTERED + + minimal_record_v2 = deepcopy(minimal_record) + minimal_record_v2["metadata"]["title"] = f"{minimal_record['metadata']['title']} v2" + draft_v2 = service.new_version(superuser_identity, record.id) + service.update_draft(superuser_identity, draft_v2.id, minimal_record_v2) + record_v2 = service.publish(superuser_identity, draft_v2.id) + record_v2_doi = record_v2["pids"]["doi"]["identifier"] + + tombstone_info = {"note": "no specific reason, tbh"} + + # delete v1 + record = service.delete_record( + superuser_identity, id_=record.id, data=tombstone_info + ) + + assert mock_datacite_client.api.hide_doi.called is True + assert mock_datacite_client.api.update_doi.called is True + + expected_calls = [ + # UPDATE PARENT WITH BOTH VERSIONS (publish new) + mock.call( + metadata={ + "event": "publish", + "schemaVersion": "http://datacite.org/schema/kernel-4", + "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, + "creators": [ + { + "name": "Brown, Troy", + "familyName": "Brown", + "nameIdentifiers": [], + "nameType": "Personal", + "givenName": "Troy", + }, + { + "name": "Troy Inc.", + "nameIdentifiers": [], + "nameType": "Organizational", + }, + ], + "relatedIdentifiers": [ + { + "relatedIdentifier": record_v2_doi, + "relationType": "HasVersion", + "relatedIdentifierType": "DOI", + }, + { + "relatedIdentifier": doi, + "relationType": "HasVersion", + "relatedIdentifierType": "DOI", + }, + ], + "titles": [{"title": "A Romans story v2"}], + "dates": [{"date": "2020-06-01", "dateType": "Issued"}], + "identifiers": [{"identifier": parent_doi, "identifierType": "DOI"}], + "publicationYear": "2020", + "publisher": "Acme Inc", + }, + doi=parent_doi, + url=f"https://127.0.0.1:5000/doi/{parent_doi}", + ), + # REMOVE ONE VERSION FROM THE PARENT + mock.call( + metadata={ + "event": "publish", + "schemaVersion": "http://datacite.org/schema/kernel-4", + "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, + "creators": [ + { + "name": "Brown, Troy", + "familyName": "Brown", + "nameIdentifiers": [], + "nameType": "Personal", + "givenName": "Troy", + }, + { + "name": "Troy Inc.", + "nameIdentifiers": [], + "nameType": "Organizational", + }, + ], + "relatedIdentifiers": [ + { + "relatedIdentifier": record_v2_doi, + "relationType": "HasVersion", + "relatedIdentifierType": "DOI", + } + ], + "titles": [{"title": "A Romans story v2"}], + "dates": [{"date": "2020-06-01", "dateType": "Issued"}], + "identifiers": [ + {"identifier": parent_doi, "identifierType": "DOI"}, + ], + "publicationYear": "2020", + "publisher": "Acme Inc", + }, + doi=parent_doi, + url=f"https://127.0.0.1:5000/doi/{parent_doi}", + ), + ] + + mock_datacite_client.api.update_doi.assert_has_calls(expected_calls) + + # make sure we still have the PID registered for tombstone + assert record._record.pid.status == PIDStatus.REGISTERED + + # DELETE THE SECOND VERSION + record_v2_del = service.delete_record( + superuser_identity, id_=record_v2.id, data=tombstone_info + ) + + mock_datacite_client.api.update_doi.assert_has_calls( + expected_calls + + [ + # REMOVE LAST VERSION FROM THE PARENT + mock.call( + metadata={ + "event": "publish", + "schemaVersion": "http://datacite.org/schema/kernel-4", + "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, + "creators": [ + { + "name": "Brown, Troy", + "familyName": "Brown", + "nameIdentifiers": [], + "nameType": "Personal", + "givenName": "Troy", + }, + { + "name": "Troy Inc.", + "familyName": "Troy Inc.", + "nameIdentifiers": [], + "nameType": "Organizational", + }, + ], + "titles": [{"title": "A Romans story v2"}], + "dates": [{"date": "2020-06-01", "dateType": "Issued"}], + "identifiers": [ + {"identifier": parent_doi, "identifierType": "DOI"}, + ], + "publicationYear": "2020", + "publisher": "Acme Inc", + }, + doi=parent_doi, + url=f"https://127.0.0.1:5000/doi/{parent_doi}", + ), + ], + ) + + +def test_restore_pid( + running_app, + search_clear, + minimal_record, + mocker, + superuser_identity, + mock_datacite_client, +): + """No pid provided, creating one by default.""" + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + record = service.publish(superuser_identity, draft.id) + + oai = record["pids"]["oai"]["identifier"] + doi = record["pids"]["doi"]["identifier"] + parent_doi = record["parent"]["pids"]["doi"]["identifier"] + provider = service.pids.pid_manager._get_provider("doi", "datacite") + pid = provider.get(pid_value=doi) + assert pid.status == PIDStatus.REGISTERED + parent_provider = service.pids.parent_pid_manager._get_provider("doi", "datacite") + parent_pid = parent_provider.get(pid_value=parent_doi) + assert parent_pid.status == PIDStatus.REGISTERED + + tombstone_info = {"note": "no specific reason, tbh"} + + record = service.delete_record( + superuser_identity, id_=record.id, data=tombstone_info + ) + + assert mock_datacite_client.api.hide_doi.called is True + assert mock_datacite_client.api.update_doi.called is True + + expected_calls = [ + mock.call( + metadata={ + "event": "publish", + "schemaVersion": "http://datacite.org/schema/kernel-4", + "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, + "creators": [ + { + "name": "Brown, Troy", + "familyName": "Brown", + "nameIdentifiers": [], + "nameType": "Personal", + "givenName": "Troy", + }, + { + "familyName": "Troy Inc.", + "name": "Troy Inc.", + "nameIdentifiers": [], + "nameType": "Organizational", + }, + ], + "titles": [{"title": "A Romans story"}], + "dates": [{"date": "2020-06-01", "dateType": "Issued"}], + "identifiers": [{"identifier": parent_doi, "identifierType": "DOI"}], + "publicationYear": "2020", + "publisher": "Acme Inc", + }, + doi=parent_doi, + url=f"https://127.0.0.1:5000/doi/{parent_doi}", + ), + ] + mock_datacite_client.api.update_doi.assert_has_calls(expected_calls) + + # make sure we still have the PID registered for tombstone + assert record._record.pid.status == PIDStatus.REGISTERED + + restored_rec = service.restore_record(superuser_identity, record.id) + + # once for parent + once for the record + assert mock_datacite_client.api.show_doi.call_count == 2 + + mock_datacite_client.api.update_doi.assert_has_calls( + expected_calls + + [ + mock.call( + metadata={ + "event": "publish", + "schemaVersion": "http://datacite.org/schema/kernel-4", + "types": {"resourceTypeGeneral": "Image", "resourceType": "Photo"}, + "creators": [ + { + "name": "Brown, Troy", + "familyName": "Brown", + "nameIdentifiers": [], + "nameType": "Personal", + "givenName": "Troy", + }, + { + "name": "Troy Inc.", + "familyName": "Troy Inc.", + "nameIdentifiers": [], + "nameType": "Organizational", + }, + ], + "relatedIdentifiers": [ + { + "relatedIdentifier": doi, # restored version DOI + "relationType": "HasVersion", + "relatedIdentifierType": "DOI", + }, + ], + "titles": [{"title": "A Romans story"}], + "dates": [{"date": "2020-06-01", "dateType": "Issued"}], + "identifiers": [ + {"identifier": parent_doi, "identifierType": "DOI"} + ], + "publicationYear": "2020", + "publisher": "Acme Inc", + }, + doi=parent_doi, + url=f"https://127.0.0.1:5000/doi/{parent_doi}", + ), + ] + ) + + assert restored_rec._obj.deletion_status == RecordDeletionStatusEnum.PUBLISHED + + +def test_full_record_register( + running_app, + search_clear, + full_record, + superuser_identity, + mock_datacite_client, +): + """Registers a PID for a full record.""" + full_record["pids"] = {} + + service = current_rdm_records.records_service + draft = service.create(superuser_identity, full_record) + draft = service.pids.create(superuser_identity, draft.id, "doi") + doi = draft["pids"]["doi"]["identifier"] + provider = service.pids.pid_manager._get_provider("doi", "datacite") + pid = provider.get(pid_value=doi) + record = service.record_cls.publish(draft._record) + record.pids = {pid.pid_type: {"identifier": pid.pid_value, "provider": "datacite"}} + record.metadata = draft["metadata"] + record.register() + record.commit() + assert pid.status == PIDStatus.NEW + pid.reserve() + assert pid.status == PIDStatus.RESERVED + register_or_update_pid(recid=record["id"], scheme="doi") + assert pid.status == PIDStatus.REGISTERED + + mock_datacite_client.api.public_doi.assert_has_calls( + [ + mock.call( + metadata={ + "contributors": [ + { + "affiliation": [ + { + "affiliationIdentifier": "https://ror.org/01ggx4157", + "affiliationIdentifierScheme": "ROR", + "name": "CERN", + } + ], + "contributorType": "Other", + "familyName": "Nielsen", + "givenName": "Lars Holm", + "name": "Nielsen, Lars Holm", + "nameIdentifiers": [ + { + "nameIdentifier": "0000-0001-8135-3489", + "nameIdentifierScheme": "ORCID", + } + ], + "nameType": "Personal", + } + ], + "creators": [ + { + "affiliation": [ + { + "affiliationIdentifier": "https://ror.org/01ggx4157", + "affiliationIdentifierScheme": "ROR", + "name": "CERN", + }, + {"name": "free-text"}, + ], + "familyName": "Nielsen", + "givenName": "Lars Holm", + "name": "Nielsen, Lars Holm", + "nameIdentifiers": [ + { + "nameIdentifier": "0000-0001-8135-3489", + "nameIdentifierScheme": "ORCID", + } + ], + "nameType": "Personal", + } + ], + "dates": [ + {"date": "2018/2020-09", "dateType": "Issued"}, + { + "date": "1939/1945", + "dateInformation": "A date", + "dateType": "Other", + }, + ], + "descriptions": [ + { + "description": "A description \nwith HTML tags", + "descriptionType": "Abstract", + }, + { + "description": "Bla bla bla", + "descriptionType": "Methods", + "lang": "eng", + }, + ], + "formats": ["application/pdf"], + "fundingReferences": [ + { + "awardNumber": "755021", + "awardTitle": "Personalised Treatment For " + "Cystic Fibrosis Patients " + "With Ultra-rare CFTR " + "Mutations (and beyond)", + "awardURI": "https://cordis.europa.eu/project/id/755021", + "funderIdentifier": "00k4n6c32", + "funderIdentifierType": "ROR", + "funderName": "European Commission", + } + ], + "geoLocations": [ + { + "geoLocationPlace": "test location place", + "geoLocationPoint": { + "pointLatitude": "-60.63932", + "pointLongitude": "-32.94682", + }, + } + ], + "identifiers": [ + { + "identifier": doi, + "identifierType": "DOI", + }, + { + "identifier": "1924MNRAS..84..308E", + "identifierType": "bibcode", + }, + ], + "language": "dan", + "publicationYear": "2018", + "publisher": "InvenioRDM", + "relatedIdentifiers": [ + { + "relatedIdentifier": "10.1234/foo.bar", + "relatedIdentifierType": "DOI", + "relationType": "IsCitedBy", + "resourceTypeGeneral": "Dataset", + } + ], + "rightsList": [ + { + "rights": "A custom license", + "rightsUri": "https://customlicense.org/licenses/by/4.0/", + }, + { + "rights": "Creative Commons Attribution 4.0 " + "International", + "rightsIdentifier": "cc-by-4.0", + "rightsIdentifierScheme": "spdx", + "rightsUri": "https://creativecommons.org/licenses/by/4.0/legalcode", + }, + ], + "schemaVersion": "http://datacite.org/schema/kernel-4", + "sizes": ["11 pages"], + "subjects": [ + { + "subject": "Abdominal Injuries", + "subjectScheme": "MeSH", + "valueURI": "http://id.nlm.nih.gov/mesh/A-D000007", + }, + {"subject": "custom"}, + ], + "titles": [ + {"title": "InvenioRDM"}, + { + "lang": "eng", + "title": "a research data management platform", + "titleType": "Subtitle", + }, + ], + "types": { + "resourceType": "Photo", + "resourceTypeGeneral": "Image", + }, + "version": "v1.0", + }, + url=f"https://127.0.0.1:5000/doi/{doi}", + doi=doi, + ) + ] + ) diff --git a/tests/services/schemas/test_creator_contributor.py b/tests/services/schemas/test_creator_contributor.py index 0e3d75162..1159a83c7 100644 --- a/tests/services/schemas/test_creator_contributor.py +++ b/tests/services/schemas/test_creator_contributor.py @@ -355,6 +355,30 @@ def test_contributor_invalid_role(app): ) +def test_contributor_duplicated_affiliation(app): + invalid_role = { + "person_or_org": { + "name": "Julio Cesar", + "type": "personal", + "given_name": "Julio", + "family_name": "Cesar", + "identifiers": [ + { + "scheme": "orcid", + "identifier": "0000-0002-1825-0097", + } + ], + }, + "role": {"id": "rightsholder"}, + "affiliations": [{"name": "test"}, {"name": "test"}], + } + + assert_raises_messages( + lambda: ContributorSchema().load(invalid_role), + {"affiliations": ["Duplicated affiliations: test"]}, + ) + + def test_metadata_requires_non_empty_creators(app, minimal_metadata): del minimal_metadata["creators"] assert_raises_messages( diff --git a/tests/services/schemas/test_identifier.py b/tests/services/schemas/test_identifier.py index ab449ce88..0c8c6e824 100644 --- a/tests/services/schemas/test_identifier.py +++ b/tests/services/schemas/test_identifier.py @@ -20,7 +20,7 @@ def test_valid_identifier(): - valid = {"identifier": "10.5281/rdm.9999999", "scheme": "doi"} + valid = {"identifier": "10.1234/rdm.9999999", "scheme": "doi"} loaded = IdentifierSchema(allowed_schemes=allowed_schemes).load(valid) assert valid == loaded @@ -28,7 +28,7 @@ def test_valid_identifier(): def test_valid_no_schema(): """It is valid becuase the schema is detected by the schema.""" valid_identifier = { - "identifier": "10.5281/rdm.9999999", + "identifier": "10.1234/rdm.9999999", } loaded = IdentifierSchema(allowed_schemes=allowed_schemes).load(valid_identifier) valid_identifier["scheme"] = "doi" @@ -51,28 +51,46 @@ def test_valid_empty_list(app, minimal_record): def test_valid_multiple_identifiers(app, minimal_record): metadata = minimal_record["metadata"] metadata["identifiers"] = [ - {"identifier": "10.5281/rdm.9999999", "scheme": "doi"}, + {"identifier": "10.1234/rdm.9999999", "scheme": "doi"}, {"identifier": "ark:/123/456", "scheme": "ark"}, ] data = MetadataSchema().load(metadata) assert data["identifiers"] == metadata["identifiers"] -def test_invalid_duplicate_scheme(app, minimal_record): - # NOTE: Duplicates are accepted, there is no de-duplication +def test_invalid_duplicate_scheme_and_value(app, minimal_record): metadata = minimal_record["metadata"] metadata["identifiers"] = [ - {"identifier": "10.5281/rdm.9999999", "scheme": "doi"}, - {"identifier": "10.5281/rdm.0000000", "scheme": "doi"}, + {"identifier": "10.1234/rdm.9999999", "scheme": "doi"}, + {"identifier": "10.1234/rdm.9999999", "scheme": "doi"}, ] with pytest.raises(ValidationError): data = MetadataSchema().load(metadata) metadata["identifiers"] = [ - {"identifier": "10.5281/rdm.9999999", "scheme": "doi"}, - {"identifier": "10.5281/rdm.0000000"}, + {"identifier": "10.1234/rdm.9999999", "scheme": "doi"}, + {"identifier": "10.1234/rdm.9999999"}, ] with pytest.raises(ValidationError): data = MetadataSchema().load(metadata) + + +def test_valid_duplicate_scheme_with_different_values(app, minimal_record): + metadata = minimal_record["metadata"] + metadata["identifiers"] = [ + {"identifier": "10.1234/rdm.9999999", "scheme": "doi"}, + {"identifier": "10.1234/rdm.0000000", "scheme": "doi"}, + ] + + # it should not raise + MetadataSchema().load(metadata) + + metadata["identifiers"] = [ + {"identifier": "10.1234/rdm.9999999", "scheme": "doi"}, + {"identifier": "10.1234/rdm.0000000"}, + ] + + # it should not raise + MetadataSchema().load(metadata) diff --git a/tests/services/schemas/test_pids.py b/tests/services/schemas/test_pids.py index f3db48dd4..9a93bf1a0 100644 --- a/tests/services/schemas/test_pids.py +++ b/tests/services/schemas/test_pids.py @@ -16,7 +16,7 @@ def test_valid_pid(): """Test pids schema.""" valid_full = { - "identifier": "10.5281/zenodo.1234", + "identifier": "10.1234/zenodo.1234", "provider": "datacite", "client": "zenodo", } @@ -35,14 +35,14 @@ def test_invalid_no_identifier(): def test_invalid_no_provider(): - invalid_no_provider = {"identifier": "10.5281/zenodo.1234", "client": "zenodo"} + invalid_no_provider = {"identifier": "10.1234/zenodo.1234", "client": "zenodo"} with pytest.raises(ValidationError): data = PIDSchema().load(invalid_no_provider) def test_invalid_extra_field(): invalid_extra = { - "identifier": "10.5281/zenodo.1234", + "identifier": "10.1234/zenodo.1234", "provider": "datacite", "client": "zenodo", "extra": "field", diff --git a/tests/services/schemas/test_publication_date.py b/tests/services/schemas/test_publication_date.py index d047123b8..521bc2241 100644 --- a/tests/services/schemas/test_publication_date.py +++ b/tests/services/schemas/test_publication_date.py @@ -62,6 +62,10 @@ def test_asymmetric_interval(app, minimal_record): _assert_meta(minimal_record["metadata"], "2020-01/2020-12-01") +def test_unknown_bound_interval(app, minimal_record): + _assert_meta(minimal_record["metadata"], "/2020-12") + _assert_meta(minimal_record["metadata"], "2020-12/") + + def test_invalid_interval(app, minimal_record): _assert_fails(minimal_record["metadata"], "2021-01/2020-12") - _assert_fails(minimal_record["metadata"], "/2020-12") diff --git a/tests/services/schemas/test_rdm_record_schema.py b/tests/services/schemas/test_rdm_record_schema.py index 8d0d03e8f..3ec33d83a 100644 --- a/tests/services/schemas/test_rdm_record_schema.py +++ b/tests/services/schemas/test_rdm_record_schema.py @@ -19,7 +19,7 @@ def test_valid_pid(app, db, minimal_record, location): # based on the scheme value valid_full = { "doi": { - "identifier": "10.5281/zenodo.1234", + "identifier": "10.1234/zenodo.1234", "provider": "datacite", "client": "zenodo", } @@ -32,7 +32,7 @@ def test_valid_pid(app, db, minimal_record, location): def test_valid_external(app, db, minimal_record, location): valid_full = { "doi": { - "identifier": "10.5281/zenodo.1234", + "identifier": "10.1234/zenodo.1234", "provider": "external", } } diff --git a/tests/services/schemas/test_related_identifier.py b/tests/services/schemas/test_related_identifier.py index db3e6633e..692ed31b2 100644 --- a/tests/services/schemas/test_related_identifier.py +++ b/tests/services/schemas/test_related_identifier.py @@ -19,7 +19,7 @@ def test_valid_related_identifiers(app): valid_full = { - "identifier": "10.5281/rdm.9999988", + "identifier": "10.1234/rdm.9999988", "scheme": "doi", "relation_type": {"id": "requires"}, "resource_type": {"id": "image-photo"}, @@ -31,7 +31,7 @@ def test_valid_related_identifiers(app): def test_valid_minimal_related_identifiers(app): valid_minimal = { - "identifier": "10.5281/rdm.9999988", + "identifier": "10.1234/rdm.9999988", "scheme": "doi", "relation_type": {"id": "requires"}, } @@ -43,7 +43,7 @@ def test_valid_minimal_related_identifiers(app): def test_valid_no_scheme_related_identifiers(app): """It is valid becuase the schema is detected by the schema.""" valid_no_scheme = { - "identifier": "10.5281/zenodo.9999988", + "identifier": "10.1234/zenodo.9999988", "relation_type": {"id": "requires"}, "resource_type": {"id": "image-photo"}, } @@ -64,7 +64,7 @@ def test_invalid_no_identifiers_related_identifiers(app): def test_invalid_scheme_related_identifiers(app): invalid_scheme = { - "identifier": "10.5281/rdm.9999988", + "identifier": "10.1234/rdm.9999988", "scheme": "INVALID", "relation_type": {"id": "requires"}, "resource_type": {"id": "image-photo"}, @@ -76,7 +76,7 @@ def test_invalid_scheme_related_identifiers(app): def test_invalid_no_type_related_identifiers(app): invalid_no_relation_type = { - "identifier": "10.5281/rdm.9999988", + "identifier": "10.1234/rdm.9999988", "scheme": "doi", "resource_type": {"id": "image-photo"}, } @@ -86,7 +86,7 @@ def test_invalid_no_type_related_identifiers(app): def test_invalid_relation_type_related_identifiers(app): invalid_relation_type = { - "identifier": "10.5281/rdm.9999988", + "identifier": "10.1234/rdm.9999988", "scheme": "doi", "relation_type": "INVALID", "resource_type": {"id": "image-photo"}, @@ -97,7 +97,7 @@ def test_invalid_relation_type_related_identifiers(app): def test_invalid_extra_field_related_identifiers(app): invalid_extra = { - "identifier": "10.5281/rdm.9999988", + "identifier": "10.1234/rdm.9999988", "scheme": "doi", "relation_type": {"id": "requires"}, "resource_type": {"id": "image-photo"}, @@ -111,13 +111,13 @@ def test_valid_related_identifiers_in_schema(app, minimal_record): metadata = minimal_record["metadata"] metadata["related_identifiers"] = [ { - "identifier": "10.5281/rdm.9999988", + "identifier": "10.1234/rdm.9999988", "scheme": "doi", "relation_type": {"id": "requires"}, "resource_type": {"id": "image-photo"}, }, { - "identifier": "10.5281/rdm.9999977", + "identifier": "10.1234/rdm.9999977", "scheme": "doi", "relation_type": {"id": "requires"}, }, @@ -129,7 +129,7 @@ def test_valid_related_identifiers_in_schema(app, minimal_record): def test_invalid_related_identifiers(app, minimal_record): metadata = minimal_record["metadata"] metadata["related_identifiers"] = { - "identifier": "10.5281/rdm.9999988", + "identifier": "10.1234/rdm.9999988", "scheme": "doi", "relation_type": {"id": "requires"}, "resource_type": {"id": "image-photo"}, diff --git a/tests/services/test_collections_service.py b/tests/services/test_collections_service.py new file mode 100644 index 000000000..8915b02b7 --- /dev/null +++ b/tests/services/test_collections_service.py @@ -0,0 +1,336 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Test suite for the collections service.""" + +import dictdiffer +import pytest + +from invenio_rdm_records.collections.api import Collection, CollectionTree +from invenio_rdm_records.proxies import current_rdm_records + + +@pytest.fixture() +def collections_service(): + """Get collections service fixture.""" + return current_rdm_records.collections_service + + +@pytest.fixture(autouse=True) +def add_collections(running_app, db, community): + """Create collections on demand.""" + + def _inner(): + """Add collections to the app.""" + tree = CollectionTree.create( + title="Tree 1", + order=10, + community_id=community.id, + slug="tree-1", + ) + c1 = Collection.create( + title="Collection 1", + query="metadata.title:foo", + slug="collection-1", + ctree=tree, + ) + c2 = Collection.create( + title="Collection 2", + query="metadata.title:bar", + slug="collection-2", + ctree=tree, + parent=c1, + ) + return [c1, c2] + + return _inner + + +def test_collections_read( + running_app, db, add_collections, collections_service, community, community_owner +): + """Test collections service.""" + collections = add_collections() + c0 = collections[0] + c1 = collections[1] + + # Read by id + res = collections_service.read(identity=community_owner.identity, id_=c0.id) + assert res._collection.id == c0.id + + # Read by slug + res = collections_service.read( + identity=community_owner.identity, + community_id=community.id, + tree_slug=c0.collection_tree.slug, + slug=c0.slug, + ) + assert res._collection.id == c0.id + + +def test_collections_create( + running_app, db, collections_service, community, community_owner +): + """Test collection creation via service.""" + tree = CollectionTree.create( + title="Tree 1", + order=10, + community_id=community.id, + slug="tree-1", + ) + collection = collections_service.create( + community_owner.identity, + community.id, + tree_slug="tree-1", + slug="my-collection", + title="My Collection", + query="*:*", + ) + + # Get the API object, just for the sake of testing + collection = collection._collection + + assert collection.title == "My Collection" + assert collection.collection_tree.id == tree.id + + read_collection = collections_service.read( + identity=community_owner.identity, id_=collection.id + ) + assert read_collection._collection.id == collection.id + assert read_collection._collection.title == "My Collection" + + +def test_collections_add( + running_app, db, collections_service, add_collections, community_owner +): + """Test adding a collection to another via service.""" + collections = add_collections() + c1 = collections[0] + c2 = collections[1] + + c3 = collections_service.add( + community_owner.identity, + collection=c2, + slug="collection-3", + title="Collection 3", + query="metadata.title:baz", + ) + + # Get the API object, just for the sake of testing + c3 = c3._collection + + # Read the collection + res = collections_service.read(identity=community_owner.identity, id_=c3.id) + assert res._collection.id == c3.id + assert res._collection.title == "Collection 3" + + # Read the parent collection + res = collections_service.read(identity=community_owner.identity, id_=c2.id) + assert res.to_dict()[c2.id]["children"] == [c3.id] + + +def test_collections_results( + running_app, db, add_collections, collections_service, community_owner +): + """Test collection results. + + The goal is to test the format returned by the service, based on the required depth. + """ + collections = add_collections() + c0 = collections[0] + c1 = collections[1] + c3 = collections_service.add( + community_owner.identity, + c1, + slug="collection-3", + title="Collection 3", + query="metadata.title:baz", + ) + # Read the collection tree up to depth 2 + res = collections_service.read( + identity=community_owner.identity, id_=c0.id, depth=2 + ) + r_dict = res.to_dict() + + expected = { + "root": c0.id, + c0.id: { + "breadcrumbs": [ + { + "link": "/communities/blr/collections/tree-1/collection-1", + "title": "Collection 1", + } + ], + "children": [c1.id], + "depth": 0, + "id": c0.id, + "links": { + "search": "/api/communities/blr/records", + "self_html": "/communities/blr/collections/tree-1/collection-1", + "search": f"/api/collections/{c0.id}/records", + }, + "num_records": 0, + "order": c0.order, + "slug": "collection-1", + "title": "Collection 1", + }, + c1.id: { + "children": [], + "depth": 1, + "id": c1.id, + "links": { + "search": "/api/communities/blr/records", + "self_html": "/communities/blr/collections/tree-1/collection-2", + "search": f"/api/collections/{c1.id}/records", + }, + "num_records": 0, + "order": c1.order, + "slug": "collection-2", + "title": "Collection 2", + }, + } + assert not list(dictdiffer.diff(expected, r_dict)) + + # Read the collection tree up to depth 3 + res = collections_service.read( + identity=community_owner.identity, id_=c0.id, depth=3 + ) + r_dict = res.to_dict() + + # Get the API object, just for the sake of testing + c3 = c3._collection + expected = { + "root": c0.id, + c0.id: { + "breadcrumbs": [ + { + "link": "/communities/blr/collections/tree-1/collection-1", + "title": "Collection 1", + } + ], + "children": [c1.id], + "depth": 0, + "id": c0.id, + "links": { + "search": "/api/communities/blr/records", + "self_html": "/communities/blr/collections/tree-1/collection-1", + "search": f"/api/collections/{c0.id}/records", + }, + "num_records": 0, + "order": c0.order, + "slug": "collection-1", + "title": "Collection 1", + }, + c1.id: { + "children": [c3.id], + "depth": 1, + "id": c1.id, + "links": { + "search": "/api/communities/blr/records", + "self_html": "/communities/blr/collections/tree-1/collection-2", + "search": f"/api/collections/{c1.id}/records", + }, + "num_records": 0, + "order": c1.order, + "slug": "collection-2", + "title": "Collection 2", + }, + c3.id: { + "children": [], + "depth": 2, + "id": c3.id, + "links": { + "search": "/api/communities/blr/records", + "self_html": "/communities/blr/collections/tree-1/collection-3", + "search": f"/api/collections/{c3.id}/records", + }, + "num_records": 0, + "order": c3.order, + "slug": "collection-3", + "title": "Collection 3", + }, + } + + assert not list(dictdiffer.diff(expected, r_dict)) + + +def test_update(running_app, db, add_collections, collections_service, community_owner): + """Test updating a collection.""" + collections = add_collections() + c0 = collections[0] + + # Update by ID + collections_service.update( + community_owner.identity, + c0.id, + data={"slug": "New slug"}, + ) + + res = collections_service.read( + identity=community_owner.identity, + id_=c0.id, + ) + + assert res.to_dict()[c0.id]["slug"] == "New slug" + + # Update by object + collections_service.update( + community_owner.identity, + c0, + data={"slug": "New slug 2"}, + ) + + res = collections_service.read( + identity=community_owner.identity, + id_=c0.id, + ) + assert res.to_dict()[c0.id]["slug"] == "New slug 2" + + +def test_read_many( + running_app, db, add_collections, collections_service, community_owner +): + """Test reading multiple collections.""" + collections = add_collections() + c0 = collections[0] + c1 = collections[1] + + # Read two collections + res = collections_service.read_many( + community_owner.identity, + ids_=[c0.id, c1.id], + depth=0, + ) + + res = res.to_dict() + assert len(res) == 2 + assert res[0]["root"] == c0.id + assert res[1]["root"] == c1.id + + +def test_read_all( + running_app, db, add_collections, collections_service, community_owner +): + """Test reading all collections.""" + collections = add_collections() + c0 = collections[0] + c1 = collections[1] + + # Read all collections + res = collections_service.read_all(community_owner.identity, depth=0) + + res = res.to_dict() + assert len(res) == 2 + assert res[0]["root"] == c0.id + assert res[1]["root"] == c1.id + + +def test_read_invalid(running_app, db, collections_service, community_owner): + """Test reading a non-existing collection.""" + with pytest.raises(ValueError): + collections_service.read( + identity=community_owner.identity, + ) diff --git a/tests/services/test_oai_service.py b/tests/services/test_oai_service.py index d394ddb8f..47d47d0d5 100644 --- a/tests/services/test_oai_service.py +++ b/tests/services/test_oai_service.py @@ -11,12 +11,16 @@ import pytest from invenio_db import db from invenio_oaiserver.models import OAISet +from invenio_search import current_search_client from marshmallow import ValidationError from invenio_rdm_records.oaiserver.services.config import OAIPMHServerServiceConfig from invenio_rdm_records.oaiserver.services.errors import OAIPMHSetNotEditable from invenio_rdm_records.oaiserver.services.services import OAIPMHServerService -from invenio_rdm_records.proxies import current_oaipmh_server_service +from invenio_rdm_records.proxies import ( + current_oaipmh_server_service, + current_rdm_records_service, +) def test_minimal_set_creation_and_edit(running_app, search_clear, minimal_oai_set): @@ -74,3 +78,42 @@ def test_reserved_prefixes(running_app, search_clear, minimal_oai_set): # Must fail as "cds-" is a reserved prefix with pytest.raises(ValidationError): service.create(superuser_identity, minimal_oai_set) + + +def test_rebuild_index(running_app, search_clear, minimal_oai_set): + superuser_identity = running_app.superuser_identity + service = current_oaipmh_server_service + + oai_record_index = current_rdm_records_service.record_cls.index._name + percolators_index = f"{oai_record_index}-percolators" + current_search_client.indices.delete(index=percolators_index, ignore=[404]) + current_search_client.indices.refresh() + + oai_item = service.create(superuser_identity, minimal_oai_set) + oai_dict = oai_item.to_dict() + assert oai_dict["name"] == "name" + + current_search_client.indices.refresh() + res = current_search_client.search(index=percolators_index) + assert res["hits"]["total"]["value"] == 1 + oai_hit = res["hits"]["hits"][0] + assert oai_hit["_id"] == "oaiset-spec" + assert oai_hit["_source"] == { + "query": {"query_string": {"query": "is_published:true"}} + } + + # Delete the percolator index + current_search_client.indices.delete(index=percolators_index) + current_search_client.indices.refresh() + assert current_search_client.indices.exists(index=percolators_index) is False + + # Rebuild the OAI sets percolator index + service.rebuild_index(superuser_identity) + current_search_client.indices.refresh(index=percolators_index) + + res = current_search_client.search(index=percolators_index) + assert res["hits"]["total"]["value"] == 1 + assert oai_hit["_id"] == "oaiset-spec" + assert oai_hit["_source"] == { + "query": {"query_string": {"query": "is_published:true"}} + } diff --git a/tests/services/test_rdm_service.py b/tests/services/test_rdm_service.py index 186c0fa7c..ae1158d99 100644 --- a/tests/services/test_rdm_service.py +++ b/tests/services/test_rdm_service.py @@ -2,6 +2,7 @@ # # Copyright (C) 2021 Graz University of Technology. # Copyright (C) 2021 TU Wien. +# Copyright (C) 2024 California Institute of Technology. # # Invenio-RDM-Records is free software; you can redistribute it # and/or modify it under the terms of the MIT License; see LICENSE file for @@ -45,11 +46,90 @@ def test_draft_w_languages_creation(running_app, search_clear, minimal_record): ] +# Test restricted record with doi creation + + +def test_publish_public_record_with_default_doi( + running_app, search_clear, minimal_record +): + superuser_identity = running_app.superuser_identity + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + record = service.publish(id_=draft.id, identity=superuser_identity) + assert "doi" in record._record.pids + + +def test_publish_public_record_with_optional_doi( + running_app, search_clear, minimal_record +): + running_app.app.config["RDM_PERSISTENT_IDENTIFIERS"]["doi"]["required"] = False + superuser_identity = running_app.superuser_identity + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + record = service.publish(id_=draft.id, identity=superuser_identity) + assert "doi" not in record._record.pids + # Reset the running_app config for next tests + running_app.app.config["RDM_PERSISTENT_IDENTIFIERS"]["doi"]["required"] = True + + +def test_publish_restricted_record_without_default_doi( + running_app, search_clear, minimal_restricted_record +): + superuser_identity = running_app.superuser_identity + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_restricted_record) + record = service.publish(id_=draft.id, identity=superuser_identity) + assert ( + "doi" not in record._record.pids + ) # Restricted records do not create by default a doi + + +def test_publish_restricted_record_with_external_doi( + running_app, search_clear, minimal_restricted_record +): + superuser_identity = running_app.superuser_identity + minimal_restricted_record["pids"]["doi"] = { + "identifier": "10.1235/rdm.5678", + "provider": "external", + } + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_restricted_record) + record = service.publish(id_=draft.id, identity=superuser_identity) + assert "doi" in record._record.pids + assert record._record.pids["doi"]["identifier"] == "10.1235/rdm.5678" + assert record._record.pids["doi"]["provider"] == "external" + + +def test_embargo_lift_creates_doi(running_app, search_clear, embargoed_record): + superuser_identity = running_app.superuser_identity + service = current_rdm_records.records_service + assert "doi" not in embargoed_record._record.pids + service.lift_embargo(_id=embargoed_record["id"], identity=superuser_identity) + record_lifted = service.record_cls.pid.resolve(embargoed_record["id"]) + assert "doi" in record_lifted.pids + + +def test_public_record_to_restricted_keeps_doi( + running_app, search_clear, minimal_record +): + superuser_identity = running_app.superuser_identity + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + record = service.publish(id_=draft.id, identity=superuser_identity) + assert "doi" in record._record.pids + + draft = service.edit(superuser_identity, record.id) + draft["access"]["record"] = "restricted" + draft = service.update_draft(superuser_identity, draft.id, draft.data) + record = service.publish(superuser_identity, draft.id) + assert "doi" in record._record.pids + + # # Embargo lift # -def test_embargo_lift_without_draft(embargoed_record, running_app, search_clear): - record = embargoed_record +def test_embargo_lift_without_draft(embargoed_files_record, running_app, search_clear): + record = embargoed_files_record service = current_rdm_records.records_service service.lift_embargo(_id=record["id"], identity=running_app.superuser_identity) @@ -61,8 +141,10 @@ def test_embargo_lift_without_draft(embargoed_record, running_app, search_clear) assert record_lifted.access.status.value == "metadata-only" -def test_embargo_lift_with_draft(embargoed_record, search_clear, superuser_identity): - record = embargoed_record +def test_embargo_lift_with_draft( + embargoed_files_record, search_clear, superuser_identity +): + record = embargoed_files_record service = current_rdm_records.records_service # Edit a draft @@ -82,9 +164,9 @@ def test_embargo_lift_with_draft(embargoed_record, search_clear, superuser_ident def test_embargo_lift_with_updated_draft( - embargoed_record, superuser_identity, search_clear + embargoed_files_record, superuser_identity, search_clear ): - record = embargoed_record + record = embargoed_files_record service = current_rdm_records.records_service # This draft simulates an existing one while lifting the record diff --git a/tests/services/test_record_deletion.py b/tests/services/test_record_deletion.py new file mode 100644 index 000000000..40fd2d29f --- /dev/null +++ b/tests/services/test_record_deletion.py @@ -0,0 +1,266 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2023 TU Wien. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Service-level tests for record deletion.""" + +from copy import deepcopy +from datetime import datetime + +import arrow +import pytest + +from invenio_rdm_records.proxies import current_rdm_records +from invenio_rdm_records.records.api import RDMRecord +from invenio_rdm_records.records.systemfields.deletion_status import ( + RecordDeletionStatusEnum, +) +from invenio_rdm_records.services.errors import DeletionStatusException + + +def assert_parent_resolved_to_record( + service, identity, parent_pid, record, status=RecordDeletionStatusEnum.PUBLISHED +): + """.""" + # resolve parent pid to latest + resolved_rec = service.pids.resolve(identity, parent_pid, "recid") + assert resolved_rec._record.pid.pid_value == record._record.pid.pid_value + assert resolved_rec._obj.deletion_status == status + + +def test_record_deletion(running_app, minimal_record, search_clear): + """Test simple record deletion of a record.""" + superuser_identity = running_app.superuser_identity + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + record = service.publish(superuser_identity, draft.id) + + assert record._obj.deletion_status == RecordDeletionStatusEnum.PUBLISHED + + # delete the record + tombstone_info = {"note": "no specific reason, tbh"} + record = service.delete_record(superuser_identity, record.id, tombstone_info) + tombstone = record._obj.tombstone + + # check if the tombstone information got added as expected + assert record._record.deletion_status == RecordDeletionStatusEnum.DELETED + assert tombstone.is_visible + assert tombstone.removed_by == {"user": str(superuser_identity.id)} + assert tombstone.removal_reason is None + assert tombstone.note == tombstone_info["note"] + assert tombstone.citation_text + assert arrow.get(tombstone.removal_date).date() == datetime.utcnow().date() + + # mark the record for purge + record = service.mark_record_for_purge(superuser_identity, record.id) + assert record._obj.deletion_status == RecordDeletionStatusEnum.MARKED + assert record._obj.deletion_status.is_deleted + assert record._obj.tombstone is not None + + # remove the mark again, we don't wanna purge it after all + record = service.unmark_record_for_purge(superuser_identity, record.id) + assert record._obj.deletion_status == RecordDeletionStatusEnum.DELETED + assert record._obj.deletion_status.is_deleted + assert record._obj.tombstone is not None + + # restore the record, it wasn't so bad after all + record = service.restore_record(superuser_identity, record.id) + assert record._obj.deletion_status == RecordDeletionStatusEnum.PUBLISHED + assert not record._obj.deletion_status.is_deleted + assert record._obj.tombstone is None + + +def test_invalid_record_deletion_workflows(running_app, minimal_record, search_clear): + """Test the wrong order of deletion operations.""" + superuser_identity = running_app.superuser_identity + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + record = service.publish(superuser_identity, draft.id) + + assert record._obj.deletion_status == RecordDeletionStatusEnum.PUBLISHED + + # we cannot restore a published record + with pytest.raises(DeletionStatusException): + service.restore_record(superuser_identity, record.id) + + # we cannot mark a published record for purge + with pytest.raises(DeletionStatusException): + service.mark_record_for_purge(superuser_identity, record.id) + + # we cannot unmark a published record + with pytest.raises(DeletionStatusException): + service.unmark_record_for_purge(superuser_identity, record.id) + + record = service.delete_record(superuser_identity, record.id, {}) + assert record._obj.deletion_status == RecordDeletionStatusEnum.DELETED + + # we cannot unmark a deleted record + with pytest.raises(DeletionStatusException): + service.unmark_record_for_purge(superuser_identity, record.id) + + record = service.mark_record_for_purge(superuser_identity, record.id) + assert record._obj.deletion_status == RecordDeletionStatusEnum.MARKED + + # we cannot directly restore a record marked for purge + with pytest.raises(DeletionStatusException): + service.restore_record(superuser_identity, record.id) + + +def test_record_deletion_of_specific_version(running_app, minimal_record, search_clear): + """Test record deletion of a specific version.""" + superuser_identity = running_app.superuser_identity + service = current_rdm_records.records_service + draft = service.create(superuser_identity, minimal_record) + record_v1 = service.publish(superuser_identity, draft.id) + published_parent_pid = record_v1._record.parent.pid.pid_value + + # publish v2 + minimal_record_v2 = deepcopy(minimal_record) + minimal_record_v2["metadata"]["title"] = f"{minimal_record['metadata']['title']} v2" + draft_v2 = service.new_version(superuser_identity, record_v1.id) + service.update_draft(superuser_identity, draft_v2.id, minimal_record_v2) + record_v2 = service.publish(superuser_identity, draft_v2.id) + + assert record_v2._obj.deletion_status == RecordDeletionStatusEnum.PUBLISHED + + # resolve parent pid to record v2 + assert_parent_resolved_to_record( + service, superuser_identity, published_parent_pid, record_v2 + ) + + # search + res = service.search( + superuser_identity, + params={ + "status": RecordDeletionStatusEnum.PUBLISHED.value, + "allversions": True, + }, + ) + assert res.total == 2 + + # delete the record v1 + tombstone_info = {"note": "no specific reason, tbh"} + record = service.delete_record(superuser_identity, record_v1.id, tombstone_info) + + # resolve parent pid to record v1 + assert_parent_resolved_to_record( + service, superuser_identity, published_parent_pid, record_v2 + ) + + RDMRecord.index.refresh() + + # search + res = service.search( + superuser_identity, + params={ + "status": RecordDeletionStatusEnum.PUBLISHED.value, + "allversions": True, + }, + ) + assert res.total == 1 + + # delete the record v2 + tombstone_info = {"note": "no specific reason, tbh"} + record = service.delete_record(superuser_identity, record_v2.id, tombstone_info) + tombstone = record._obj.tombstone + + # resolve parent pid to record v2 but deleted (v2 was the last version) + assert_parent_resolved_to_record( + service, + superuser_identity, + published_parent_pid, + record_v2, # resolved rec + status=RecordDeletionStatusEnum.DELETED, + ) + assert tombstone.note == tombstone_info["note"] + + RDMRecord.index.refresh() + + # search + res = service.search( + superuser_identity, + params={ + "status": RecordDeletionStatusEnum.PUBLISHED.value, + "allversions": True, + }, + ) + assert res.total == 0 + + # restore the record v1 + record = service.restore_record(superuser_identity, record_v1.id) + assert record._obj.deletion_status == RecordDeletionStatusEnum.PUBLISHED + assert not record._obj.deletion_status.is_deleted + assert record._obj.tombstone is None + + # resolve parent pid to record v1 + assert_parent_resolved_to_record( + service, superuser_identity, published_parent_pid, record_v1 + ) + + RDMRecord.index.refresh() + + # search + res = service.search( + superuser_identity, + params={ + "status": RecordDeletionStatusEnum.PUBLISHED.value, + "allversions": True, + }, + ) + assert res.total == 1 + + # create new version from restored v1 + minimal_record_v2 = deepcopy(minimal_record) + minimal_record_v2["metadata"]["title"] = f"{minimal_record['metadata']['title']} v3" + draft_v3 = service.new_version(superuser_identity, record_v1.id) + service.update_draft(superuser_identity, draft_v3.id, minimal_record_v2) + record_v3 = service.publish(superuser_identity, draft_v3.id) + + # resolve parent pid to record v3 + assert_parent_resolved_to_record( + service, superuser_identity, published_parent_pid, record_v3 + ) + + RDMRecord.index.refresh() + + # search + res = service.search( + superuser_identity, + params={ + "status": RecordDeletionStatusEnum.PUBLISHED.value, + "allversions": True, + }, + ) + assert res.total == 2 + + # restore the record v2 + record = service.restore_record(superuser_identity, record_v2.id) + assert record._obj.deletion_status == RecordDeletionStatusEnum.PUBLISHED + assert not record._obj.deletion_status.is_deleted + assert record._obj.tombstone is None + + # resolve parent pid to record v3 + assert_parent_resolved_to_record( + service, superuser_identity, published_parent_pid, record_v3 + ) + + RDMRecord.index.refresh() + + # search + res = service.search( + superuser_identity, + params={ + "status": RecordDeletionStatusEnum.PUBLISHED.value, + "allversions": True, + }, + ) + + assert res.total == 3 + hits = [(hit["id"], hit["versions"]["index"]) for hit in res.hits] + # assert the correct order of (id, version.index) + assert hits[0] == (record_v3.id, 3) + assert hits[1] == (record_v2.id, 2) + assert hits[2] == (record_v1.id, 1) diff --git a/tests/services/test_service_access.py b/tests/services/test_service_access.py new file mode 100644 index 000000000..83aac3dbc --- /dev/null +++ b/tests/services/test_service_access.py @@ -0,0 +1,714 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-Records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. + +"""Tests for RecordAccessService.""" + +import pytest +from invenio_records_resources.services.errors import PermissionDeniedError + +from invenio_rdm_records.proxies import current_rdm_records +from invenio_rdm_records.services.errors import GrantExistsError + + +def test_cant_create_multiple_grants_for_same_user(running_app, minimal_record, users): + """Test that grant for the same record can not be created more than 1 time for a certain user.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grant + user_id = str(users[0].id) + access_service = records_service.access + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + } + ] + } + + grant = access_service.bulk_create_grants( + superuser_identity, record.id, grant_payload + ) + + assert grant.to_dict() == { + "hits": { + "hits": [ + { + "permission": "preview", + "subject": {"id": user_id, "type": "user"}, + "origin": None, + "id": 0, + } + ], + "total": 1, + } + } + + # try to create again + with pytest.raises(GrantExistsError): + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + +def test_cant_create_multiple_grants_for_same_role(running_app, minimal_record, roles): + """Test that grant for the same record can not be created more than 1 time for a certain role.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grant + access_service = records_service.access + grant_payload = { + "grants": [ + { + "subject": {"type": "role", "id": "test"}, + "permission": "preview", + } + ] + } + grant = access_service.bulk_create_grants( + superuser_identity, record.id, grant_payload + ) + + assert grant.to_dict() == { + "hits": { + "hits": [ + { + "permission": "preview", + "subject": {"id": "test", "type": "role"}, + "origin": None, + "id": 0, + } + ], + "total": 1, + } + } + + # try to create again + with pytest.raises(GrantExistsError): + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + +def test_create_multiple_grants(running_app, minimal_record, users): + """Test creating multiple grants at the same time.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grants + user_id = str(users[0].id) + user_id2 = str(users[1].id) + access_service = records_service.access + grants_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + }, + { + "subject": {"type": "user", "id": user_id2}, + "permission": "manage", + }, + ] + } + + access_service.bulk_create_grants(superuser_identity, record.id, grants_payload) + + read_grants = access_service.read_all_grants( + superuser_identity, + record.id, + ) + + assert read_grants.to_dict() == { + "hits": { + "hits": [ + { + "permission": "preview", + "subject": {"id": user_id, "type": "user"}, + "origin": None, + "id": 0, + }, + { + "permission": "manage", + "subject": {"id": user_id2, "type": "user"}, + "origin": None, + "id": 1, + }, + ], + "total": 2, + } + } + + +def test_create_multiple_grants_one_exists(running_app, minimal_record, users): + """Test creating multiple grants at the same time. One grant already exists. None added in the end.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grant + user_id = str(users[0].id) + access_service = records_service.access + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + }, + ] + } + + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # create 2 grants, one of them already exists + user_id2 = str(users[1].id) + grants_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + }, + { + "subject": {"type": "user", "id": user_id2}, + "permission": "manage", + }, + ] + } + + with pytest.raises(GrantExistsError): + access_service.bulk_create_grants(superuser_identity, record.id, grants_payload) + + # assert that second grant wasn't added + grants = access_service.read_all_grants( + superuser_identity, + record.id, + ) + + assert grants.to_dict() == { + "hits": { + "hits": [ + { + "permission": "preview", + "subject": {"id": user_id, "type": "user"}, + "origin": None, + "id": 0, + } + ], + "total": 1, + } + } + + +def test_read_grant_by_subjectid_found(running_app, minimal_record, users): + """Test read grant by user id.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grant + subject_type = "user" + access_service = records_service.access + user_id = str(users[0].id) + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # read grant + grant = access_service.read_grant_by_subject( + superuser_identity, record.id, user_id, subject_type=subject_type + ) + assert grant.to_dict() == { + "permission": "preview", + "subject": {"id": user_id, "type": "user"}, + "origin": None, + } + + +def test_read_grant_by_subjectid_not_found(running_app, minimal_record, users): + """Test read grant by user id. Not found.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grant for user + subject_type = "user" + user_id = str(users[0].id) + access_service = records_service.access + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # try to read grant for different user + access_service = records_service.access + with pytest.raises(LookupError): + access_service.read_grant_by_subject( + superuser_identity, record.id, "10000000", subject_type=subject_type + ) + + +def test_read_grant_by_subjectid_no_grants(running_app, minimal_record, users): + """Test read grant by user id. No grants.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # try to read grant + subject_type = "user" + user_id = str(users[0].id) + access_service = records_service.access + with pytest.raises(LookupError): + access_service.read_grant_by_subject( + superuser_identity, record.id, user_id, subject_type=subject_type + ) + + +def test_read_grant_by_subjectid_provide_role(running_app, minimal_record, roles): + """Test read grant by user id while searching by role""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grant for role "test" + subject_type = "user" + access_service = records_service.access + grant_payload = { + "grants": [ + { + "subject": {"type": "role", "id": "test"}, + "permission": "preview", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # try to read grant by role "test" + access_service = records_service.access + with pytest.raises(LookupError): + access_service.read_grant_by_subject( + superuser_identity, record.id, "test", subject_type=subject_type + ) + + +def test_delete_grant_by_subjectid_found(running_app, minimal_record, users): + """Test delete grant by user id.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grant + subject_type = "user" + access_service = records_service.access + user_id = str(users[0].id) + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # delete grant + grant = access_service.delete_grant_by_subject( + superuser_identity, record.id, user_id, subject_type=subject_type + ) + assert grant is True + + # try to read grant + with pytest.raises(LookupError): + access_service.read_grant_by_subject( + superuser_identity, record.id, user_id, subject_type=subject_type + ) + + +def test_delete_grant_by_subjectid_not_found(running_app, minimal_record, users): + """Test delete grant by user id. Not found.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grant for user + subject_type = "user" + user_id = str(users[0].id) + access_service = records_service.access + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # try to delete grant for different user + access_service = records_service.access + with pytest.raises(LookupError): + access_service.delete_grant_by_subject( + superuser_identity, record.id, "10000000", subject_type=subject_type + ) + + +def test_delete_grant_by_subjectid_no_grants(running_app, minimal_record, users): + """Test delete grant by user id. No grants.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # try to read grant + subject_type = "user" + access_service = records_service.access + with pytest.raises(LookupError): + access_service.delete_grant_by_subject( + superuser_identity, record.id, str(users[0].id), subject_type=subject_type + ) + + +def test_delete_grant_by_subjectid_provide_role(running_app, minimal_record, roles): + """Test delete grant by user id while searching by role""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create grant for role "test" + subject_type = "user" + access_service = records_service.access + grant_payload = { + "grants": [ + { + "subject": {"type": "role", "id": "test"}, + "permission": "preview", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # try to read grant by role "test" + access_service = records_service.access + with pytest.raises(LookupError): + access_service.delete_grant_by_subject( + superuser_identity, record.id, "test", subject_type=subject_type + ) + + +def test_read_all_grants_by_subject_found(running_app, minimal_record, users, roles): + """Test read user grants.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create user grants + subject_type = "user" + access_service = records_service.access + user_id = str(users[0].id) + user_id2 = str(users[1].id) + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + } + ] + } + grant_payload2 = { + "grants": [ + { + "subject": {"type": "user", "id": user_id2}, + "permission": "preview", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload2) + + # create role grants + grant_payload = { + "grants": [ + { + "subject": {"type": "role", "id": "test"}, + "permission": "preview", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # search user grants + grants = access_service.read_all_grants_by_subject( + superuser_identity, record.id, subject_type=subject_type + ) + assert grants.to_dict()["hits"]["total"] == 2 + assert grants.to_dict()["hits"]["hits"][0]["subject"]["type"] == "user" + assert grants.to_dict()["hits"]["hits"][0]["subject"]["id"] == user_id + assert grants.to_dict()["hits"]["hits"][1]["subject"]["type"] == "user" + assert grants.to_dict()["hits"]["hits"][1]["subject"]["id"] == user_id2 + + +def test_read_all_grants_by_subject_not_found( + running_app, minimal_record, users, roles +): + """Test read user grants. Not found.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + access_service = records_service.access + + # create role grants + grant_payload = { + "grants": [ + { + "subject": {"type": "role", "id": "test"}, + "permission": "preview", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # search user grants + subject_type = "user" + grants = access_service.read_all_grants_by_subject( + superuser_identity, record.id, subject_type=subject_type + ) + assert grants.to_dict()["hits"]["total"] == 0 + + +def test_update_grant_by_subject_found(running_app, minimal_record, users): + """Test partial update of user grant.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create user grant + subject_type = "user" + access_service = records_service.access + user_id = str(users[0].id) + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + "origin": "origin", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # update user grant + payload = {"permission": "manage"} + result = access_service.update_grant_by_subject( + superuser_identity, + id_=record.id, + subject_id=user_id, + subject_type=subject_type, + data=payload, + ) + assert result.to_dict()["permission"] == "manage" + + # read grant + grant = access_service.read_grant_by_subject( + superuser_identity, record.id, user_id, subject_type=subject_type + ) + assert grant.to_dict()["permission"] == "manage" + + +def test_update_grant_by_subject_not_found(running_app, minimal_record, roles): + """Test partial update of user grant. Not found.""" + # create record + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(superuser_identity, minimal_record) + record = records_service.publish(superuser_identity, draft.id) + + # create role grant + access_service = records_service.access + grant_payload = { + "grants": [ + { + "subject": {"type": "role", "id": "test"}, + "permission": "preview", + "origin": "origin", + } + ] + } + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # update user grant + payload = {"permission": "manage"} + subject_type = "user" + with pytest.raises(LookupError): + access_service.update_grant_by_subject( + superuser_identity, + id_=record.id, + subject_id="test", + subject_type=subject_type, + data=payload, + ) + + +def test_update_grant_by_subject_permissions( + running_app, minimal_record, uploader, users, test_user +): + """Test permissions when you partially update a user grant.""" + # create record (owner - uploader) + records_service = current_rdm_records.records_service + draft = records_service.create(uploader.identity, minimal_record) + record = records_service.publish(uploader.identity, draft.id) + + # grant manage access to user + subject_type = "user" + access_service = records_service.access + user_with_grant = test_user + user_with_grant_id = user_with_grant.id + grant_payload = { + "grants": [ + { + "subject": {"type": subject_type, "id": user_with_grant_id}, + "permission": "manage", + "origin": "origin", + } + ] + } + + access_service.bulk_create_grants( + running_app.superuser_identity, record.id, grant_payload + ) + + # assert that user can manage record - they can create a new version + res = records_service.new_version(user_with_grant.identity, id_=record.id) + assert res.data["versions"]["index"] == 2 + + # update user grant - view access + payload = {"permission": "view"} + result = access_service.update_grant_by_subject( + uploader.identity, + id_=record.id, + subject_id=user_with_grant_id, + subject_type=subject_type, + data=payload, + ) + assert result.to_dict()["permission"] == "view" + + # assert that now user can not create a new version + with pytest.raises(PermissionDeniedError): + records_service.new_version(user_with_grant.identity, id_=record.id) + + +def test_delete_grant_by_subject_permissions( + running_app, minimal_record, uploader, users, test_user +): + """Test permissions when you delete a user grant.""" + # create record (owner - uploader) + superuser_identity = running_app.superuser_identity + records_service = current_rdm_records.records_service + draft = records_service.create(uploader.identity, minimal_record) + record = records_service.publish(uploader.identity, draft.id) + + # grant manage access to user + subject_type = "user" + access_service = records_service.access + user_with_grant = test_user + user_with_grant_id = user_with_grant.id + grant_payload = { + "grants": [ + { + "subject": {"type": subject_type, "id": user_with_grant_id}, + "permission": "manage", + "origin": "origin", + } + ] + } + + access_service.bulk_create_grants(superuser_identity, record.id, grant_payload) + + # assert that user can manage record - they can create a new version + res = records_service.new_version(user_with_grant.identity, id_=record.id) + assert res.data["versions"]["index"] == 2 + + # delete user grant + access_service.delete_grant_by_subject( + superuser_identity, record.id, user_with_grant_id, subject_type=subject_type + ) + + # assert that now user can not create a new version + with pytest.raises(PermissionDeniedError): + records_service.new_version(user_with_grant.identity, id_=record.id) + + +def test_preview_draft_link_in_email( + running_app, uploader, minimal_record, community_owner +): + # services + records_service = current_rdm_records.records_service + access_service = records_service.access + # instances + draft = records_service.create(uploader.identity, minimal_record) + + # community_owner is not used because this has anything to do with + # communities. It is used simply because it is a user with "visibility": "public" + # like it is in test_resources_user_access.py + user_id = str(community_owner.id) + grant_payload = { + "grants": [ + { + "subject": {"type": "user", "id": user_id}, + "permission": "preview", + "notify": True, + } + ] + } + mail = running_app.app.extensions.get("mail") + + with mail.record_messages() as outbox: + # This triggers an email notification because of "notify": True + access_service.bulk_create_grants(uploader.identity, draft.id, grant_payload) + + sent_mail = outbox[0] + assert f"/records/{draft.id}?preview=1" in sent_mail.html + assert f"/records/{draft.id}?preview=1" in sent_mail.body diff --git a/tests/services/test_service_community_records.py b/tests/services/test_service_community_records.py index 9a8695a7d..67885f4bb 100644 --- a/tests/services/test_service_community_records.py +++ b/tests/services/test_service_community_records.py @@ -1,16 +1,19 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Test community records service.""" +from copy import deepcopy + import pytest from invenio_records_resources.services.errors import PermissionDeniedError from marshmallow import ValidationError +from invenio_rdm_records.collections.api import Collection, CollectionTree from invenio_rdm_records.proxies import ( current_community_records_service, current_rdm_records_service, diff --git a/tests/services/test_service_record_communities.py b/tests/services/test_service_record_communities.py new file mode 100644 index 000000000..c5326b5c8 --- /dev/null +++ b/tests/services/test_service_record_communities.py @@ -0,0 +1,70 @@ +# -*- coding: utf-8 -*- +# +# Copyright (C) 2024 CERN. +# +# Invenio-RDM-records is free software; you can redistribute it and/or modify +# it under the terms of the MIT License; see LICENSE file for more details. +"""Test community records service.""" + +import pytest +from invenio_access.permissions import system_identity +from invenio_records_resources.services.errors import PermissionDeniedError + +from invenio_rdm_records.proxies import ( + current_rdm_records_service, + current_record_communities_service, +) +from invenio_rdm_records.services.errors import CommunityAlreadyExists + + +def test_bulk_add_non_authorized_permission(community, uploader, record_factory): + """Test adding multiple records from a non-authorized user.""" + record = record_factory.create_record(uploader=uploader, community=None) + + with pytest.raises(PermissionDeniedError): + current_record_communities_service.bulk_add( + uploader.identity, str(community.id), [record["id"]] + ) + + +def test_bulk_add_by_system_permission(community, community_owner, record_factory): + """Test bulk add by system.""" + record = record_factory.create_record(uploader=community_owner, community=None) + + current_record_communities_service.bulk_add( + system_identity, str(community.id), [record["id"]] + ) + + _rec = current_rdm_records_service.record_cls.pid.resolve(record["id"]) + assert community.id in _rec.parent.communities.ids + + +def test_bulk_add(community, uploader, record_factory): + """Test bulk add functionality.""" + TOTAL_RECS = 3 + recs = [ + record_factory.create_record(uploader=uploader, community=None) + for _ in range(TOTAL_RECS) + ] + + current_record_communities_service.bulk_add( + system_identity, str(community.id), [rec["id"] for rec in recs] + ) + for rec in recs: + _rec = current_rdm_records_service.record_cls.pid.resolve(rec["id"]) + assert community.id in _rec.parent.communities.ids + + +def test_bulk_add_already_in_community(community, uploader, record_factory): + """Test failed addition when the record is already in the community.""" + record = record_factory.create_record(uploader=uploader, community=community) + + assert current_record_communities_service.bulk_add( + system_identity, str(community.id), [record["id"]] + ) == [ + { + "record_id": record["id"], + "community_id": str(community.id), + "message": "Community already included.", + } + ] diff --git a/tests/services/test_service_review.py b/tests/services/test_service_review.py index 9603f8bf2..44f13903a 100644 --- a/tests/services/test_service_review.py +++ b/tests/services/test_service_review.py @@ -1,27 +1,29 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # # Invenio-RDM-Records is free software; you can redistribute it and/or modify # it under the terms of the MIT License; see LICENSE file for more details. """Test of the review deposit integration.""" -from unittest.mock import MagicMock - import pytest from flask_principal import Identity, UserNeed -from invenio_access.permissions import any_user, authenticated_user +from invenio_access.permissions import any_user, authenticated_user, system_identity from invenio_communities.communities.records.api import Community from invenio_communities.generators import CommunityRoleNeed from invenio_communities.members.records.api import Member -from invenio_notifications.proxies import current_notifications_manager +from invenio_pidstore.errors import PIDDoesNotExistError from invenio_records_resources.services.errors import PermissionDeniedError from invenio_requests import current_requests_service from marshmallow.exceptions import ValidationError from sqlalchemy.orm.exc import NoResultFound from invenio_rdm_records.notifications.builders import ( + CommunityInclusionAcceptNotificationBuilder, + CommunityInclusionCancelNotificationBuilder, + CommunityInclusionDeclineNotificationBuilder, + CommunityInclusionExpireNotificationBuilder, CommunityInclusionSubmittedNotificationBuilder, ) from invenio_rdm_records.proxies import current_rdm_records @@ -90,6 +92,26 @@ def draft_for_open_review( return service.create(community_owner.identity, minimal_record) +@pytest.fixture() +def draft_for_open_review_user( + minimal_record, + open_review_community, + service, + uploader, + authenticated_identity, + db, +): + minimal_record["parent"] = { + "review": { + "type": CommunitySubmission.type_id, + "receiver": {"community": open_review_community.data["id"]}, + } + } + + # Create draft with review + return service.create(uploader.identity, minimal_record) + + @pytest.fixture() def draft_for_closed_review( minimal_record, closed_review_community, service, community_owner, db @@ -174,7 +196,7 @@ def test_simple_flow(draft, running_app, community, service, requests_service): assert record["status"] == "published" # ### Read draft (which should have been removed) - with pytest.raises(NoResultFound): + with pytest.raises(PIDDoesNotExistError): service.read_draft(running_app.superuser_identity, draft.id) # ### Create a new version (still part of community) @@ -216,6 +238,17 @@ def test_direct_include_to_open_review_community( ) assert record["status"] == "published" + # check that record shows up in the user serach results, but the draft doesn't + service.record_cls.index.refresh() + service.draft_cls.index.refresh() + search_res = service.search_drafts(identity) + + data = list(search_res.hits) + assert len(data) == 1 + assert data[0]["is_draft"] is False + assert data[0]["is_published"] is True + assert data[0]["status"] == "published" + # ### Create a new version (still part of community) draft = service.new_version(identity, draft_for_open_review.id).to_dict() assert "review" not in draft["parent"] @@ -377,14 +410,16 @@ def test_create_review_after_draft(running_app, community, service, minimal_reco assert draft["status"] == DraftStatus.review_to_draft_statuses[req["status"]] -def test_submit_public_record_review_to_restricted_community( - running_app, public_draft_review_restricted, service +def test_accept_public_record_review_to_restricted_community( + running_app, public_draft_review_restricted, service, requests_service ): - """Test creation of review after draft was created.""" - # Create draft + """Test invalid record/community restrictions on accept.""" + request = service.review.submit( + running_app.superuser_identity, public_draft_review_restricted.id + ) with pytest.raises(InvalidAccessRestrictions): - service.review.submit( - running_app.superuser_identity, public_draft_review_restricted.id + requests_service.execute_action( + running_app.superuser_identity, request.id, "accept", {} ) @@ -608,60 +643,223 @@ def test_review_gives_access_to_curator(running_app, draft, service, requests_se item = service.read_draft(identity, draft.pid.pid_value) -def test_review_notification( - draft_for_open_review, +def test_review_submit_notification( + draft_for_open_review_user, running_app, open_review_community, curator, community_owner, + uploader, service, inviter, - monkeypatch, + replace_notification_builder, ): - """Test notifcation being built on review submit.""" + """Test notification being built on review submit.""" original_builder = CommunityInclusionSubmittedNotificationBuilder + # mock build to observe calls + mock_build = replace_notification_builder(original_builder) + assert not mock_build.called + inviter(curator.id, open_review_community.id, "curator") + + mail = running_app.app.extensions.get("mail") + assert mail + + with mail.record_messages() as outbox: + # Validate that email was sent + req = service.review.submit( + uploader.identity, draft_for_open_review_user.id + ).to_dict() + assert req["status"] == "submitted" + # check notification is build on submit + assert mock_build.called + assert len(outbox) == 2 + sent_mail = outbox[0] + sent_mail_2 = outbox[1] + # TODO: update to `req["links"]["self_html"]` when addressing https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 + assert "/me/requests/{}".format(req["id"]) in sent_mail.html + assert community_owner.email in sent_mail.recipients + assert ( + uploader.email not in sent_mail.recipients + and uploader.email not in sent_mail_2.recipients + ) + assert curator.email in sent_mail_2.recipients + + +def test_review_accept_notification( + draft_for_open_review_user, + running_app, + open_review_community, + curator, + uploader, + authenticated_identity, + service, + requests_service, + inviter, + replace_notification_builder, +): + """Test notification being built on review submit.""" + + original_builder = CommunityInclusionAcceptNotificationBuilder # mock build to observe calls - mock_build = MagicMock() - mock_build.side_effect = original_builder.build - monkeypatch.setattr(original_builder, "build", mock_build) - # setting specific builder for test case - monkeypatch.setattr( - current_notifications_manager, - "builders", - { - **current_notifications_manager.builders, - original_builder.type: original_builder, - }, - ) + mock_build = replace_notification_builder(original_builder) + assert not mock_build.called inviter(curator.id, open_review_community.id, "curator") - # check draft status - assert ( - draft_for_open_review["status"] - == DraftStatus.review_to_draft_statuses["created"] - ) + mail = running_app.app.extensions.get("mail") + assert mail + + req = service.review.submit( + uploader.identity, draft_for_open_review_user.id + ).to_dict() + + with mail.record_messages() as outbox: + # Validate that email was sent + req = requests_service.execute_action( + curator.identity, req["id"], "accept", {} + ).to_dict() + # check notification is build on submit + assert mock_build.called + assert len(outbox) == 1 + sent_mail = outbox[0] + # TODO: update to `req["links"]["self_html"]` when addressing https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 + assert "/me/requests/{}".format(req["id"]) in sent_mail.html + assert uploader.email in sent_mail.recipients + assert curator.email not in sent_mail.recipients + + +def test_review_cancel_notification( + draft_for_open_review_user, + running_app, + open_review_community, + curator, + uploader, + community_owner, + service, + requests_service, + inviter, + replace_notification_builder, +): + """Test notification being built on review submit.""" + + original_builder = CommunityInclusionCancelNotificationBuilder + # mock build to observe calls + mock_build = replace_notification_builder(original_builder) assert not mock_build.called + inviter(curator.id, open_review_community.id, "curator") + mail = running_app.app.extensions.get("mail") assert mail + req = service.review.submit( + uploader.identity, draft_for_open_review_user.id + ).to_dict() + with mail.record_messages() as outbox: # Validate that email was sent - req = service.review.submit( - community_owner.identity, draft_for_open_review.id + req = requests_service.execute_action( + uploader.identity, req["id"], "cancel", {} + ).to_dict() + # check notification is build on submit + assert mock_build.called + assert len(outbox) == 2 + sent_mail = outbox[0] + sent_mail_2 = outbox[1] + # TODO: update to `req["links"]["self_html"]` when addressing https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 + assert "/me/requests/{}".format(req["id"]) in sent_mail.html + assert ( + uploader.email not in sent_mail.recipients + and not uploader.email in sent_mail_2.recipients + ) + assert community_owner.email in sent_mail.recipients + assert curator.email in sent_mail_2.recipients + + +def test_review_decline_notification( + draft_for_open_review_user, + running_app, + open_review_community, + curator, + uploader, + service, + requests_service, + inviter, + replace_notification_builder, +): + """Test notification being built on review submit.""" + + original_builder = CommunityInclusionDeclineNotificationBuilder + # mock build to observe calls + mock_build = replace_notification_builder(original_builder) + assert not mock_build.called + + inviter(curator.id, open_review_community.id, "curator") + + mail = running_app.app.extensions.get("mail") + assert mail + + req = service.review.submit( + uploader.identity, draft_for_open_review_user.id + ).to_dict() + + with mail.record_messages() as outbox: + # Validate that email was sent + req = requests_service.execute_action( + curator.identity, req["id"], "decline", {} + ).to_dict() + # check notification is build on submit + assert mock_build.called + assert len(outbox) == 1 + sent_mail = outbox[0] + # TODO: update to `req["links"]["self_html"]` when addressing https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 + assert "/me/requests/{}".format(req["id"]) in sent_mail.html + assert uploader.email in sent_mail.recipients + assert curator.email not in sent_mail.recipients + + +def test_review_expire_notification( + draft_for_open_review_user, + running_app, + open_review_community, + curator, + uploader, + service, + requests_service, + inviter, + replace_notification_builder, +): + """Test notification being built on review submit.""" + + original_builder = CommunityInclusionExpireNotificationBuilder + # mock build to observe calls + mock_build = replace_notification_builder(original_builder) + assert not mock_build.called + + inviter(curator.id, open_review_community.id, "curator") + + mail = running_app.app.extensions.get("mail") + assert mail + + req = service.review.submit( + uploader.identity, draft_for_open_review_user.id + ).to_dict() + + with mail.record_messages() as outbox: + # Validate that email was sent + req = requests_service.execute_action( + system_identity, req["id"], "expire", {} ).to_dict() - assert req["status"] == "submitted" # check notification is build on submit assert mock_build.called assert len(outbox) == 1 sent_mail = outbox[0] # TODO: update to `req["links"]["self_html"]` when addressing https://github.com/inveniosoftware/invenio-rdm-records/issues/1327 assert "/me/requests/{}".format(req["id"]) in sent_mail.html - assert community_owner.email not in sent_mail.recipients - assert curator.email in sent_mail.recipients + assert uploader.email in sent_mail.recipients + assert curator.email not in sent_mail.recipients # TODO tests: diff --git a/tests/services/test_service_tasks.py b/tests/services/test_service_tasks.py index 8b28df1c7..200c6ecf1 100644 --- a/tests/services/test_service_tasks.py +++ b/tests/services/test_service_tasks.py @@ -14,19 +14,21 @@ from invenio_rdm_records.services.tasks import update_expired_embargos -def test_embargo_lift_without_draft(embargoed_record, running_app, search_clear): +def test_embargo_lift_without_draft(embargoed_files_record, running_app, search_clear): update_expired_embargos() service = current_rdm_records.records_service - record_lifted = service.record_cls.pid.resolve(embargoed_record["id"]) + record_lifted = service.record_cls.pid.resolve(embargoed_files_record["id"]) assert record_lifted.access.embargo.active is False assert record_lifted.access.protection.files == "public" assert record_lifted.access.protection.record == "public" assert record_lifted.access.status.value == "metadata-only" -def test_embargo_lift_with_draft(embargoed_record, search_clear, superuser_identity): - record = embargoed_record +def test_embargo_lift_with_draft( + embargoed_files_record, search_clear, superuser_identity +): + record = embargoed_files_record service = current_rdm_records.records_service # Edit a draft @@ -48,9 +50,9 @@ def test_embargo_lift_with_draft(embargoed_record, search_clear, superuser_ident def test_embargo_lift_with_updated_draft( - embargoed_record, superuser_identity, search_clear + embargoed_files_record, superuser_identity, search_clear ): - record = embargoed_record + record = embargoed_files_record service = current_rdm_records.records_service # This draft simulates an existing one while lifting the record diff --git a/tests/services/test_sort.py b/tests/services/test_sort.py index 77a761462..c5c9a6939 100644 --- a/tests/services/test_sort.py +++ b/tests/services/test_sort.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2021 CERN. +# Copyright (C) 2021-2024 CERN. # Copyright (C) 2021 Northwestern University. # # Invenio-Records-Resources is free software; you can redistribute it and/or @@ -9,7 +9,6 @@ """Sort tests.""" - import pytest from invenio_rdm_records.proxies import current_rdm_records diff --git a/tests/tokens/test_feature_flag.py b/tests/tokens/test_feature_flag.py index 56244866d..30af5aba8 100644 --- a/tests/tokens/test_feature_flag.py +++ b/tests/tokens/test_feature_flag.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. """Test Resource access tokens feature flag.""" + import pytest diff --git a/tests/tokens/test_resource_access.py b/tests/tokens/test_resource_access.py index 1ffff90a8..c15054700 100644 --- a/tests/tokens/test_resource_access.py +++ b/tests/tokens/test_resource_access.py @@ -1,11 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2023 CERN. +# Copyright (C) 2023-2024 CERN. # # Invenio is free software; you can redistribute it and/or modify it # under the terms of the MIT License; see LICENSE file for more details. """Test Resource access tokens.""" + from datetime import datetime, timedelta from io import BytesIO @@ -19,6 +20,7 @@ InvalidTokenError, InvalidTokenIDError, MissingTokenIDError, + TokenDecodeError, ) from invenio_rdm_records.tokens.scopes import tokens_generate_scope @@ -105,7 +107,7 @@ def create_record_w_file(client, record, headers, is_published=True): def test_rat_validation_failed(app, db, uploader, superuser_identity, oauth2_client): """Test possible validation failings of Resource access tokens.""" # case: no headers in the token - with pytest.raises(InvalidTokenError): + with pytest.raises(TokenDecodeError): validate_rat("not_a.valid_jwt") # case: headers don't have "kid" @@ -134,9 +136,16 @@ def test_rat_validation_failed(app, db, uploader, superuser_identity, oauth2_cli # generate token issued an hour ago validate_rat( _rat_gen( - pat["token"], payload={"iat": datetime.utcnow() - timedelta(hours=1)} + pat["token"], + payload={"iat": datetime.utcnow() - timedelta(hours=1), "sub": {}}, ) ) + # case: RAT is missing "sub" key + with pytest.raises(InvalidTokenError): + validate_rat(_rat_gen(pat["token"])) + # case: RAT has a non-dictionary "sub" key + with pytest.raises(InvalidTokenError): + validate_rat(_rat_gen(pat["token"], payload={"sub": "test-string-sub"})) def test_rec_files_permissions_with_rat( @@ -528,7 +537,7 @@ def test_rec_files_permissions_with_rat_invalid_token_error( record_file_url, query_string={"resource_access_token": rat_token} ) assert res.status_code == 400 - assert res.json["message"] == "The token is invalid." + assert res.json["message"] == "The resource access token is invalid." uploader.logout(client) # other user with token can NOT access the files @@ -537,13 +546,13 @@ def test_rec_files_permissions_with_rat_invalid_token_error( record_file_url, query_string={"resource_access_token": rat_token} ) assert res.status_code == 400 - assert res.json["message"] == "The token is invalid." + assert res.json["message"] == "The resource access token is invalid." test_user.logout(client) # anonymous user with token can NOT access the files res = client.get(record_file_url, query_string={"resource_access_token": rat_token}) assert res.status_code == 400 - assert res.json["message"] == "The token is invalid." + assert res.json["message"] == "The resource access token is invalid." def test_rec_files_permissions_with_rat_missing_token_id_error( @@ -589,7 +598,7 @@ def test_rec_files_permissions_with_rat_missing_token_id_error( assert res.status_code == 400 assert ( res.json["message"] - == 'Missing "kid" key with personal access token ID in JWT header.' + == 'Missing "kid" key with personal access token ID in JWT header of resource access token.' ) uploader.logout(client) @@ -601,7 +610,7 @@ def test_rec_files_permissions_with_rat_missing_token_id_error( assert res.status_code == 400 assert ( res.json["message"] - == 'Missing "kid" key with personal access token ID in JWT header.' + == 'Missing "kid" key with personal access token ID in JWT header of resource access token.' ) test_user.logout(client) @@ -610,7 +619,7 @@ def test_rec_files_permissions_with_rat_missing_token_id_error( assert res.status_code == 400 assert ( res.json["message"] - == 'Missing "kid" key with personal access token ID in JWT header.' + == 'Missing "kid" key with personal access token ID in JWT header of resource access token.' ) @@ -657,7 +666,7 @@ def test_rec_files_permissions_with_rat_invalid_token_id_error( assert res.status_code == 400 assert ( res.json["message"] - == '"kid" JWT header value not a valid personal access token ID.' + == '"kid" JWT header value of resource access token not a valid personal access token ID.' ) uploader.logout(client) @@ -669,7 +678,7 @@ def test_rec_files_permissions_with_rat_invalid_token_id_error( assert res.status_code == 400 assert ( res.json["message"] - == '"kid" JWT header value not a valid personal access token ID.' + == '"kid" JWT header value of resource access token not a valid personal access token ID.' ) test_user.logout(client) @@ -678,7 +687,7 @@ def test_rec_files_permissions_with_rat_invalid_token_id_error( assert res.status_code == 400 assert ( res.json["message"] - == '"kid" JWT header value not a valid personal access token ID.' + == '"kid" JWT header value of resource access token not a valid personal access token ID.' ) @@ -703,7 +712,7 @@ def test_rec_files_permissions_with_rat_expired_token_error( # generate expired RAT pat = _generate_pat_token(db, uploader, oauth2_client, "rat_token")["token"] rat_token = jwt.encode( - payload={"iat": datetime.utcnow() - timedelta(hours=1)}, + payload={"iat": datetime.utcnow() - timedelta(hours=1), "sub": {}}, key=pat.access_token, algorithm="HS256", headers={"kid": str(pat.id)}, @@ -716,7 +725,7 @@ def test_rec_files_permissions_with_rat_expired_token_error( record_file_url, query_string={"resource_access_token": rat_token} ) assert res.status_code == 400 - assert res.json["message"] == "The token is expired." + assert res.json["message"] == "The resource access token is expired." uploader.logout(client) # other user with token can NOT access the files @@ -725,13 +734,13 @@ def test_rec_files_permissions_with_rat_expired_token_error( record_file_url, query_string={"resource_access_token": rat_token} ) assert res.status_code == 400 - assert res.json["message"] == "The token is expired." + assert res.json["message"] == "The resource access token is expired." test_user.logout(client) # anonymous user with token can NOT access the files res = client.get(record_file_url, query_string={"resource_access_token": rat_token}) assert res.status_code == 400 - assert res.json["message"] == "The token is expired." + assert res.json["message"] == "The resource access token is expired." def test_rec_files_permissions_with_rat_wrong_file(