From 09417cb9e8ef8dca6f13104eec7f0d799752e4ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oriol=20L=C3=B3pez-Doriga?= Date: Wed, 21 Jun 2023 16:23:56 +0200 Subject: [PATCH 01/25] correcting typo in index.md --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 5f5682d43..6d03a7655 100644 --- a/docs/index.md +++ b/docs/index.md @@ -5,7 +5,7 @@ discovery of genomic (and phenoclinic) data in biomedical research and clinical Beacon facilitates the discovery of genomic variants and biomedical data in single or distributed resources with the goal to empower _federated_ data models - _i.e._ the discovery (and potential retrieval) of data from different -orgnisational and geographic locations. +organisational and geographic locations.
![Beacon v2 Cartoon](img/Beacon-Networks-v2-graphics/Beacon-Networks-v2-graphics-Michael.003.png){: style="width: 600px; margin-top: -30px; margin-bottom: -30px;" } From 4c5527e34cdd58705b174d5bbbfea35f979cbd77 Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Mon, 3 Jul 2023 12:19:00 +0200 Subject: [PATCH 02/25] doc comma-contatenation * repetition of comma-concatenation for list values documentation --- docs/filters.md | 6 ++++++ docs/variant-queries.md | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs/filters.md b/docs/filters.md index db8de74b7..3e985c585 100644 --- a/docs/filters.md +++ b/docs/filters.md @@ -87,6 +87,12 @@ For all query types, the logical `AND` is implied between Filters. The Filter `i In this case general filter defaults apply (e.g. `{ "includeDescendantTerms": true }`). Generally, use of filters other than CURIE values for filter ids is discouraged. +!!! Attention "List Parameters in GET Requests" + + Since the direct interpretation of list parameters in queries is not supported by + some server environments (e.g. PHP, GO…), list parameters such as `start` and `end` + should be provided as **comma-concatenated** strings when using them in GET requests. + ### CURIE based filters query (type "OntologyFilters") !!! note "Hierarchical term expansion" diff --git a/docs/variant-queries.md b/docs/variant-queries.md index b8827aa68..656215cba 100644 --- a/docs/variant-queries.md +++ b/docs/variant-queries.md @@ -208,6 +208,12 @@ differing in their exact base extents. Bracket queries require the use of **two** `start` and `end` parameters, in contrast to _Range Queries_. +!!! Attention "List Parameters in GET Requests" + + Since the direct interpretation of list parameters in queries is not supported by + some server environments (e.g. PHP, GO…), list parameters such as `start` and `end` + should be provided as **comma-concatenated** strings when using them in GET requests. + #### Example: CNV Query - _TP53_ Deletion Query by Coordinates @@ -230,12 +236,6 @@ larger than approx. 5Mb (operational definitions of focality vary between 1 and * `datasetIds=__some-dataset-ids__` * `filters` ... - !!! Attention "List Parameters in GET Requests" - - Since the direct interpretation of list parameters in queries is not supported by - some server environments (e.g. PHP, GO…), list parameters such as `start` and `end` - should be provided as **comma-concatenated** strings when using them in GET requests. - === "Beacon v2 POST" From 4d8c40b61b175ee779cc27fb8a7e946d457e519a Mon Sep 17 00:00:00 2001 From: Michael Baudis Date: Mon, 10 Jul 2023 18:35:55 +0200 Subject: [PATCH 03/25] re-activating mermaid2 plugin ... accidentally commented -> no schema graph ... --- mkdocs.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yaml b/mkdocs.yaml index bd8f9501d..50a6e5186 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -64,7 +64,7 @@ plugins: # author: Beacon API Development Team # output_path: pdf/beacon.pdf - macros - # - mermaid2 + - mermaid2 markdown_extensions: - toc: From 597d171f4d91f55a54cb83632a8594be53d32670 Mon Sep 17 00:00:00 2001 From: Michael Baudis Date: Mon, 10 Jul 2023 19:31:52 +0200 Subject: [PATCH 04/25] fixing website mkdocs action Some branch SNAFU had deleted mk-beacon-docs - pushing a fix here ... --- .github/workflows/github-actions-demo-yml | 18 ------------------ .github/workflows/github-actions-demo.yml | 18 ------------------ .github/workflows/mk-docs.yaml | 19 +++++++++++++++++++ 3 files changed, 19 insertions(+), 36 deletions(-) delete mode 100644 .github/workflows/github-actions-demo-yml delete mode 100644 .github/workflows/github-actions-demo.yml create mode 100644 .github/workflows/mk-docs.yaml diff --git a/.github/workflows/github-actions-demo-yml b/.github/workflows/github-actions-demo-yml deleted file mode 100644 index 8a9c1ffdf..000000000 --- a/.github/workflows/github-actions-demo-yml +++ /dev/null @@ -1,18 +0,0 @@ -name: GitHub Actions Demo -run-name: ${{ github.actor }} is testing out GitHub Actions πŸš€ -on: [push] -jobs: - Explore-GitHub-Actions: - runs-on: ubuntu-latest - steps: - - run: echo "πŸŽ‰ The job was automatically triggered by a ${{ github.event_name }} event." - - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" - - run: echo "πŸ”Ž The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - - name: Check out repository code - uses: actions/checkout@v3 - - run: echo "πŸ’‘ The ${{ github.repository }} repository has been cloned to the runner." - - run: echo "πŸ–₯️ The workflow is now ready to test your code on the runner." - - name: List files in the repository - run: | - ls ${{ github.workspace }} - - run: echo "🍏 This job's status is ${{ job.status }}." \ No newline at end of file diff --git a/.github/workflows/github-actions-demo.yml b/.github/workflows/github-actions-demo.yml deleted file mode 100644 index 8a9c1ffdf..000000000 --- a/.github/workflows/github-actions-demo.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: GitHub Actions Demo -run-name: ${{ github.actor }} is testing out GitHub Actions πŸš€ -on: [push] -jobs: - Explore-GitHub-Actions: - runs-on: ubuntu-latest - steps: - - run: echo "πŸŽ‰ The job was automatically triggered by a ${{ github.event_name }} event." - - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" - - run: echo "πŸ”Ž The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - - name: Check out repository code - uses: actions/checkout@v3 - - run: echo "πŸ’‘ The ${{ github.repository }} repository has been cloned to the runner." - - run: echo "πŸ–₯️ The workflow is now ready to test your code on the runner." - - name: List files in the repository - run: | - ls ${{ github.workspace }} - - run: echo "🍏 This job's status is ${{ job.status }}." \ No newline at end of file diff --git a/.github/workflows/mk-docs.yaml b/.github/workflows/mk-docs.yaml new file mode 100644 index 000000000..db681603a --- /dev/null +++ b/.github/workflows/mk-docs.yaml @@ -0,0 +1,19 @@ +name: mk-progenetix-docs +on: + push: + branches: + - website-docs +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: 3.x + - run: pip install mkdocs-material + - run: pip install mkdocs-macros-plugin + - run: pip install pymdown-extensions + - run: pip install mkdocs-mermaid2-plugin + - run: pip install mdx_gh_links + - run: mkdocs gh-deploy --force From fb8bfc56c9f2d4e0e580d4c2c656fdcf7b7531c1 Mon Sep 17 00:00:00 2001 From: Michael Baudis Date: Tue, 11 Jul 2023 14:54:49 +0200 Subject: [PATCH 05/25] Update framework.md some cleanup & adding pagination note (may be moved somewhere else i the future, or be extended around w/ more implementation info). --- docs/framework.md | 48 ++++++++++++++++++++++++++++++++++------------- 1 file changed, 35 insertions(+), 13 deletions(-) diff --git a/docs/framework.md b/docs/framework.md index a9d620cd2..9920436a4 100644 --- a/docs/framework.md +++ b/docs/framework.md @@ -86,9 +86,11 @@ An unrestricted query like `/datasets` should return the list of all datasets in * anything else would probably be a request parameter. ### The Responses + The Beacon concept includes several types of responses: some informative or informational and some with actual data payloads, and the error one. -#### The Informational responses +#### Informational responses + A Beacon is able to return information, details, about itself. Many of the schema responses included in the `responses` folder have a 1-to-1 relationship with the corresponding configuration documents and their equivalent root endpoints, e.g. the `beaconEntryTypeResponse.json` is the schema of a response that wraps the `beaconConfiguration.json` document, and is then used as the payload of the `/entry_types` root endpoint. Schematically: * *configuration/an_schema.json*: describes the schema of the configuration file itself. * *responses/an_schema_response.json*: describes the format of the response that returns these configuration information. @@ -96,24 +98,45 @@ A Beacon is able to return information, details, about itself. Many of the schem The following schemas refer to informational responses: *beaconConfigurationResponse*, *beaconEntryTypeResponse*, *beaconFilteringTermsResponse*, Γ’nd *beaconMapResponse*. -#### The results responses +#### Data Responses + A Beacon could return responses at different granularity levels: -* **boolean response:** only returns `exists: true` ('Yes') or `exists: false` ('No') to a given query. -* **count response:** returns `Yes`/`No` and the number of matching results. -* **resultset response:** returns `Yes`/`No`, the number of matching results and details of them per every collection (e.g. every dataset or cohort) and, if granted, details on every record that matches the query. +* **boolean**: only returns `exists: true` ('Yes') or `exists: false` ('No') to a given query. +* **count**: returns `Yes`/`No` and the number of matching results. +* **record** returns `Yes`/`No`, the number of matching results and all documents + corresponding to the requested entities. Documents are wrapped in "result set" + objects for every collection (e.g. every dataset or cohort). Even for _record_ + level responses each beacon can control the details of data exposed in record + besides the minimal requirements of the entry type's schema. Each of these granularity levels has an equivalent response schema: * **boolean**: `beaconBooleanResponse` * **count**: `beaconCountResponse` -* **resultset** (with or w/o record details): `beaconResultSetsResponse` +* **record**: `beaconResultSetsResponse` An additional schema, *beaconCollectionsResponse*, describes such responses that returns details about the collections in a Beacon, but not the collection content themselves. Otherwise said, the response describes a dataset, but not returns the contents of any dataset. -### The common components +### Common Components + +Some elements are transerval to the Framework and to any model, e.g. the schema +for describing an ontology term or the reference to an external schema (like the +reference to GA4GH Phenopackets or GA4GH Service Info schemas). + +#### Pagination - `skip` and `limit` + +Record level responses potentially may return **many** (_i.e._ thousands and beyond) +documents which usually would be "paginated", _i.e._ split into may chunks ("pages"). +Beacon handles _pagination_ through the `skip` and `limit` parameters as part of the +request: + +* `limit` in the request tells the server the maximum number of records that should + be returned in a single response (_i.e._ the "page size") +* `skip` indicates how many of those pages should be skipped over when delivering + the results -Some elements are transerval to the Framework and to any model, e.g. the schema for describing an ontology term or the reference to an external schema (like the reference to GA4GH Phenopackets or GA4GH Service Info schemas). +Therefore, `skip: 2` and `limit: 8` will return records 17-24 (if those exist). ### Testing the compliance of an implementation with *testMode* @@ -136,12 +159,11 @@ Except when testing, most of the Beacon queries are expected to be answered by ' * **defaultGranularity:** Default granularity of the responses. Some responses could return higher detail, but this would be the granularity by default. * **securityLevels:** All access levels supported by the Beacon. Any combination is valid, as every option would apply to different parts of the Beacon. Available options are: -Granularity|Description +Granularity | Description -----------|----------- -`boolean`|returns 'true/false' responses. -`count`|adds the total number of positive results found. -`aggregated`|returns summary, aggregated or distribution like responses per collection. -`record`|returns details for every row. +`boolean` | returns 'true/false' responses. +`count` | adds the total number of positive results found. +`record` | returns details for every row. For those cases where a Beacon prefers to return records with less, not all, attributes, different strategies have been considered, e.g.: keep non-mandatory attributes empty, or Beacon to provide a minimal record definition, but these strategies still need to be tested in real world cases and hence no design decision has been taken yet. From 89e3b9deb8add3d4261a772ca13e3219484bd56e Mon Sep 17 00:00:00 2001 From: Michael Baudis Date: Tue, 11 Jul 2023 16:51:59 +0200 Subject: [PATCH 06/25] Update framework.md --- docs/framework.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/framework.md b/docs/framework.md index 9920436a4..d21521619 100644 --- a/docs/framework.md +++ b/docs/framework.md @@ -67,12 +67,12 @@ Contains the Json schema files that describe the Beacon configuration, its conte Contains the following Json schemas: -* **beaconRequestBody.json:** Schema for the whole Beacon request. It is named `RequestBody` to keep the same nomenclature used by OpenAPI v3, but it actually contains the definition of the whole HTTP POST request payload. -* **beaconRequestMeta.json:** Meta section of the Beacon request. It includes request context details relevant for the Beacon server when processing the request, like the Beacon API version used to format the request or the schemas expected for the entry types in the response. -* **filteringTerms.json:** defines the schema for the filters included in the request. -* **requestParameters.json** defines the, very free, schema of the parameters included in the request. -* **examples-fullDocuments folder:** includes examples of "actual" requests. The example labelled with `MIN` in the name shows the minimal required attributes for the request to be compliant. The example labelled with `MAX` in the name includes a richer case with all the sections filled in. -* **examples-sections folder:** includes examples of "actual" sections of the requests. It is included to allow specification designers and Beacon implementers to check the compliance with a single section instead of having to implement a whole request. Such way, We aim to facilitate an "incremental" implementation of an instance. +* `beaconRequestBody.json:` Schema for the whole Beacon request. It is named `RequestBody` to keep the same nomenclature used by OpenAPI v3, but it actually contains the definition of the whole HTTP POST request payload. +* `beaconRequestMeta.json:` Meta section of the Beacon request. It includes request context details relevant for the Beacon server when processing the request, like the Beacon API version used to format the request or the schemas expected for the entry types in the response. +* `filteringTerms.json:` defines the schema for the filters included in the request. +* `requestParameters.json` defines the, very free, schema of the parameters included in the request. +* `examples-fullDocuments` folder: includes examples of "actual" requests. The example labelled with `MIN` in the name shows the minimal required attributes for the request to be compliant. The example labelled with `MAX` in the name includes a richer case with all the sections filled in. +* `examples-sections` folder: includes examples of "actual" sections of the requests. It is included to allow specification designers and Beacon implementers to check the compliance with a single section instead of having to implement a whole request. Such way, We aim to facilitate an "incremental" implementation of an instance. #### Differences between FilteringTerms and RequestParameters Both, the filters (*filteringTerms*) and the parameters (*requestParameters*), are used to refine the query. The availability of two mechanisms to refine the queries could sound initially confusing, but that separation is taylored to facilitate the interpretation of the request by the Beacon server. @@ -91,7 +91,13 @@ The Beacon concept includes several types of responses: some informative or info #### Informational responses -A Beacon is able to return information, details, about itself. Many of the schema responses included in the `responses` folder have a 1-to-1 relationship with the corresponding configuration documents and their equivalent root endpoints, e.g. the `beaconEntryTypeResponse.json` is the schema of a response that wraps the `beaconConfiguration.json` document, and is then used as the payload of the `/entry_types` root endpoint. Schematically: +A Beacon is able to return information, details, about itself. Many of the schema +responses included in the `responses` folder have a 1-to-1 relationship with the +corresponding configuration documents and their equivalent root endpoints, e.g. +the `beaconEntryTypeResponse.json` is the schema of a response that wraps the +`beaconConfiguration.json` document, and is then used as the payload of the +`/entry_types` root endpoint. Schematically: + * *configuration/an_schema.json*: describes the schema of the configuration file itself. * *responses/an_schema_response.json*: describes the format of the response that returns these configuration information. * *root/endpoints.json*: describes the API endpoints to be called and parameters to be used to retrieve such responses. From a793c8cde88e2fb3a6419ebb89ec3418c8dc6969 Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Tue, 8 Aug 2023 17:14:22 +0200 Subject: [PATCH 07/25] FAQ, Boolean (non-)use --- docs/FAQ.md | 13 +++++++++++++ docs/filters.md | 16 +++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index 93f331662..7ec8aaf3a 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -149,5 +149,18 @@ representations and will be adopted by Beacon v2.n after reaching a release state. +?? faq "Does the Beacon protocol support Boolean expressions?" + +!!! Note "Boolean Logic Between Filtering Terms" + + No (...but). Beacon queries as of v2 always assume a logical **AND** between query parameters + and individual filters, _i.e._ all conditions have to be met. There is currently + no support for Boolean expressions. + However, a logical exception is the use of multiple filters for the same parameter which + a Beacon implementation should treat as a logical **OR** since they otherwise + would fail in most instances. E.g. the query using `NCIT:C3493` and `NCIT:C2926` + (mapped against `biosample.histological_diagnosis.id`) would match both + _Lung Non-Small Cell Carcinoma_ (NCIT:C2926) and _Lung Squamous Cell Carcinoma_ + (NCIT:C3493) which are exclusive diagnoses. diff --git a/docs/filters.md b/docs/filters.md index 3e985c585..1d13f5cca 100644 --- a/docs/filters.md +++ b/docs/filters.md @@ -79,7 +79,21 @@ Alphanumerical value Filter types contain: ## Using Filters in Queries -For all query types, the logical `AND` is implied between Filters. The Filter `id` is required for all query types. +The Filter `id` is required for all query types. For all query types, the logical +**AND** is _implied_ between Filters. + +!!! Note "Boolean Logic Between Filtering Terms" + + Beacon queries as of v2 always assume a logical **AND** between query parameters + and individual filters, _i.e._ all conditions have to be met. There is currently + no support for Boolean expressions. + However, a logical exception is the use of multiple filters for the same parameter which + a Beacon implementation should treat as a logical **OR** since they otherwise + would fail in most instances. E.g. the query using `NCIT:C3493` and `NCIT:C2926` + (mapped against `biosample.histological_diagnosis.id`) would match both + _Lung Non-Small Cell Carcinoma_ (NCIT:C2926) and _Lung Squamous Cell Carcinoma_ + (NCIT:C3493) which are exclusive diagnoses. + !!! Note "Filters in `GET` Requests" From 898b22b8e3a8634191527b6c820cd509d4ec8ada Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Tue, 8 Aug 2023 17:15:10 +0200 Subject: [PATCH 08/25] Update FAQ.md --- docs/FAQ.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index 7ec8aaf3a..23f7beb2d 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -149,7 +149,7 @@ representations and will be adopted by Beacon v2.n after reaching a release state. -?? faq "Does the Beacon protocol support Boolean expressions?" +?? faq "Does the Beacon protocol support Boolean expressions? " !!! Note "Boolean Logic Between Filtering Terms" From 8680e9f77a0faed254168e0728713144cd0e1a97 Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Tue, 8 Aug 2023 17:15:37 +0200 Subject: [PATCH 09/25] Update FAQ.md --- docs/FAQ.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/docs/FAQ.md b/docs/FAQ.md index 23f7beb2d..11758f132 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -149,9 +149,7 @@ representations and will be adopted by Beacon v2.n after reaching a release state. -?? faq "Does the Beacon protocol support Boolean expressions? " - -!!! Note "Boolean Logic Between Filtering Terms" +??? faq "Does the Beacon protocol support Boolean expressions? " No (...but). Beacon queries as of v2 always assume a logical **AND** between query parameters and individual filters, _i.e._ all conditions have to be met. There is currently From c09c3efc9ffb703ab5e42f4e447001bed7e8930c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oriol=20L=C3=B3pez-Doriga?= Date: Thu, 17 Aug 2023 11:06:16 +0200 Subject: [PATCH 10/25] updating branch organization description --- docs/code-organization.md | 112 +++++++++++++++++++++++++++++++++++++- 1 file changed, 111 insertions(+), 1 deletion(-) diff --git a/docs/code-organization.md b/docs/code-organization.md index 4c7769ac6..70e5d4fc2 100644 --- a/docs/code-organization.md +++ b/docs/code-organization.md @@ -22,7 +22,117 @@ Changes to the Markdown files in the `/docs` directory (and its children) will i The `gh-pages` branch is generated from the `/docs` directory through its `mkdocs` workflow and contains the website itself. **Do not edit** -## Topic branches +## Hotfix branches + +These are the branches that are meant to fix some bugs that break the specifications and need an urgent fix. The branches are directly deployed towards the `main` branch. + +### `entry-type-definitions-cleanup` + +This branch aims to redefine the wording of the entry types in a way that makes more clear what are the entry types. As the old definitions could mislead to some confusions, this is a sensible change that is needed to directly affect the current modification. + +Current status:Waiting for PR to be accepted. + +### `hotfix_filteringTermsResults` + +As the beaconFilteringTermsResults.json "type" property of the FilteringTerm is ambiguous, this branch has the objective to fix this and make filtering terms object to be operative and ready to point to the filtering terms type. + +Current status:Waiting for PR to be accepted. + +### `schema-urgent-fixes` + +Some of the instances of the schema were missing attributes and other aspects that are required to make a beacon work. This is mandatory to be urgently fixed and this is the purpose of this branch deployment. + +Current status:Waiting for PR to be accepted. + +## Feature and subfeature branches + +The feature branches are the branches that bring a lot of changes together to change some specific part of the specifications. They can be composed by different subfeature branches that commit to them or just have one single working branch. The feature branches commit to the `develop` branch as they are the changes that will lead beacon to be upgraded to a new version. The subfeature branches commit to their parent feature branch, as they are a microchange of all the aspects that have to change in a new feature that is being developed. The branches are named as the main purpose of them, so it is made very clear what is the working area of them and the subfeature branches add the name of the feature branch they belong as a prefix followed by an underscore. The list of these feature branches with their subfeature branches is the one shown next: + +### `clean-up` + +#### `clean-up_sticky_modified_files` + +Current status:Last commit by @jrambla. + +#### `clean-up_renaming_entity_to_entry_type` + +Current status:Added in framework-refactor-entry-type-definitions branch by @mbaudis and waiting for a PR to be accepted. + +#### `clean-up_decouple-model-framework-refs` + +Current status:Last commit by @mbaudis. + +#### `clean-up_move-CURIE-to-beaconCommonComponents` + +Current status:This branch has not had any commit. + +#### `clean-up_de-snakify-token-names` + +Current status:This branch has not had any commit. + +#### `clean-up_refactor-analysys-pipeline-info` + +Current status:Last commit by @mbaudis. + +### `resultsets` + +#### `resultsets_remove-requirement-results-resultsCount` + +Current status:Last commit by @mbaudis. + +### `requestParameters` + +#### `requestParameters_genomicVariations-fix` + +Current status:Last commit by @mbaudis. + +#### `requestParameters_list-parameters-with-comma` + +Current status:This branch has not had any commit. + +### `phenopackets` + +#### `phenopackets_standards-alignment` + +Current status:Last commit by @mbaudis. + +### `network` + +#### `network_aggregator-and-networks-support` + +Current status:This branch has not had any commit. + +#### `network_meta-add-aggregator-flag` + +Current status:Last commit by @mbaudis. + +### `anyOf` + +#### `anyOf_filteringTerms` + +Current status:This branch has not had any commit. + +### `genomicVariations` + +Current status:Waiting for PR to be accepted. + +### `received-filters` + +Current status:Waiting for PR to be accepted. + +### `response-meta-add-warnings` + +Current status:Waiting for PR to be accepted. + +### `framework-refactor-entry-type-definitions` + +Current status:Waiting for PR to be accepted. + + + + + + ==TBD== From e2190ef3a9248c63f2963f4fb568a7190990dfec Mon Sep 17 00:00:00 2001 From: redmitry Date: Tue, 5 Sep 2023 11:15:17 +0200 Subject: [PATCH 11/25] add scopes[] to the FilteringTerm --- .../sections/beaconFilteringTermsResults.json | 10 ++++++++++ .../sections/beaconFilteringTermsResults.yaml | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/framework/json/responses/sections/beaconFilteringTermsResults.json b/framework/json/responses/sections/beaconFilteringTermsResults.json index e7a0ab74a..daaf0fc92 100644 --- a/framework/json/responses/sections/beaconFilteringTermsResults.json +++ b/framework/json/responses/sections/beaconFilteringTermsResults.json @@ -28,6 +28,16 @@ "alphanumeric" ], "type": "string" + }, + "scopes": { + "description": "Entry types this filter may be applied to.", + "examples": [ + "[\"individual\", \"biosample\"]" + ], + "type": "array", + "items": { + "type": "string" + } } }, "required": [ diff --git a/framework/src/responses/sections/beaconFilteringTermsResults.yaml b/framework/src/responses/sections/beaconFilteringTermsResults.yaml index 4c3bd96c3..ff1474355 100644 --- a/framework/src/responses/sections/beaconFilteringTermsResults.yaml +++ b/framework/src/responses/sections/beaconFilteringTermsResults.yaml @@ -46,6 +46,14 @@ definitions: examples: - 'B Lymphoblastic Leukemia/Lymphoma' - 'Aplasia/Hypoplasia of the middle ear' + scopes: + description: >- + Entry types this filter may be applied to. + examples: + - '["individual", "biosample"]' + type: array + items: + type: string Resource: type: object description: >- From 8c1340d0b1dc015551f3daae53ebe457a9ae2a3d Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Wed, 20 Sep 2023 15:06:39 -0700 Subject: [PATCH 12/25] Removing the AND exception note --- docs/filters.md | 7 ------- 1 file changed, 7 deletions(-) diff --git a/docs/filters.md b/docs/filters.md index 1d13f5cca..ddfa7d17a 100644 --- a/docs/filters.md +++ b/docs/filters.md @@ -87,13 +87,6 @@ The Filter `id` is required for all query types. For all query types, the logica Beacon queries as of v2 always assume a logical **AND** between query parameters and individual filters, _i.e._ all conditions have to be met. There is currently no support for Boolean expressions. - However, a logical exception is the use of multiple filters for the same parameter which - a Beacon implementation should treat as a logical **OR** since they otherwise - would fail in most instances. E.g. the query using `NCIT:C3493` and `NCIT:C2926` - (mapped against `biosample.histological_diagnosis.id`) would match both - _Lung Non-Small Cell Carcinoma_ (NCIT:C2926) and _Lung Squamous Cell Carcinoma_ - (NCIT:C3493) which are exclusive diagnoses. - !!! Note "Filters in `GET` Requests" From 394a4099c0a0d3a7bddf39aa213a8c51e6a7d0ed Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Wed, 20 Sep 2023 15:07:28 -0700 Subject: [PATCH 13/25] Update filters.md --- docs/filters.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/filters.md b/docs/filters.md index ddfa7d17a..3b5ce709c 100644 --- a/docs/filters.md +++ b/docs/filters.md @@ -79,12 +79,11 @@ Alphanumerical value Filter types contain: ## Using Filters in Queries -The Filter `id` is required for all query types. For all query types, the logical -**AND** is _implied_ between Filters. +The Filter `id` is required for all query types. !!! Note "Boolean Logic Between Filtering Terms" - Beacon queries as of v2 always assume a logical **AND** between query parameters + Beacon queries as of v2 always omply a logical **AND** between query parameters and individual filters, _i.e._ all conditions have to be met. There is currently no support for Boolean expressions. From 401a0cb345b87f269a8b7f3dbd1d22b3e9cac7ea Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Tue, 10 Oct 2023 21:41:03 +0900 Subject: [PATCH 14/25] Update filters.md --- docs/filters.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/filters.md b/docs/filters.md index 3b5ce709c..ff343c4ba 100644 --- a/docs/filters.md +++ b/docs/filters.md @@ -72,8 +72,7 @@ Alphanumerical value Filter types contain: "type": "alphanumeric", "id": "PATO:0000011", "label": "age" - }, - ... + } ] ``` From c1e8f5f2a3154580e15227fbef57055088e3f11e Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Tue, 31 Oct 2023 17:16:54 +0100 Subject: [PATCH 15/25] Update variant-queries.md --- docs/variant-queries.md | 42 +++++++++++++++++++++++++++++++++++------ 1 file changed, 36 insertions(+), 6 deletions(-) diff --git a/docs/variant-queries.md b/docs/variant-queries.md index 656215cba..b12c0f7f8 100644 --- a/docs/variant-queries.md +++ b/docs/variant-queries.md @@ -186,6 +186,36 @@ a positional translation is being applied. ?geneId=EIF4A1&variantMaxLength=1000000&variantType=DEL ``` +=== "Beacon v2 POST for `geneId` (deletion CNV)" + + ``` + { + "$schema":"https://raw.githubusercontent.com/ga4gh-beacon/beacon-v2/main/framework/json/requests/beaconRequestBody.json", + "meta": { + "apiVersion": "2.0", + "requestedSchemas": [ + { + "entityType": "genomicVariation", + "schema:": "https://raw.githubusercontent.com/ga4gh-beacon/beacon-v2/main/models/json/beacon-v2-default-model/genomicVariations/defaultSchema.json" + } + ] + }, + "query": { + "requestParameters": { + "g_variant": + "geneId": "EIF4A1", + "variantType": "EFO:0030067" + } + } + }, + "requestedGranularity": "record", + "pagination": { + "skip": 0, + "limit": 5 + } + } + ``` + ## Beacon _Bracket Queries_ @@ -292,27 +322,27 @@ larger than approx. 5Mb (operational definitions of focality vary between 1 and ## Genomic Allele Query (Short Form) -==TBD== +When available variants can be identified through their genomic HGVS short form. === "Beacon v2 GET" ``` - ?allele=NM_004006.2:c.4375C>T + ?genomicAlleleShortForm=NM_004006.2:c.4375C>T ``` - ==to be completed== ## Aminoacid Change Query -==TBD== +Annotated variants can potentiallyqueried using the single amino acid replacement +format. The `aminoacidChange` parameter may be combined with e.g. a `geneId` to increase +specificity === "Beacon v2 GET" ``` - ?aminoacidChange=V600E + ?aminoacidChange=V600E&geneId=BRAF ``` - ==to be completed== ## `variantType` Parameter Interpretation From 492181029ac141a93b3ae647e56a87d0c43f436d Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Thu, 9 Nov 2023 16:14:37 +0100 Subject: [PATCH 16/25] BeaconGeneQuery-graphics --- docs/img/BeaconGeneQuery-graphics.png | Bin 0 -> 88016 bytes docs/variant-queries.md | 5 ++++- 2 files changed, 4 insertions(+), 1 deletion(-) create mode 100644 docs/img/BeaconGeneQuery-graphics.png diff --git a/docs/img/BeaconGeneQuery-graphics.png b/docs/img/BeaconGeneQuery-graphics.png new file mode 100644 index 0000000000000000000000000000000000000000..aa646eeac3eac5a088e954f430f3e74ee320e157 GIT binary patch literal 88016 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 wsns<92~89x{!b3<|3Ci!*8;4T|GgZzpCH%qyE9 Date: Sun, 12 Nov 2023 11:28:44 +0100 Subject: [PATCH 17/25] Update BeaconGeneQuery-graphics.png --- docs/img/BeaconGeneQuery-graphics.png | Bin 88016 -> 80160 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/img/BeaconGeneQuery-graphics.png b/docs/img/BeaconGeneQuery-graphics.png index aa646eeac3eac5a088e954f430f3e74ee320e157..7f75655d41bf3d8a8922b30e0e75f47fed6b7e84 100644 GIT binary patch delta 44062 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

Pl82j{yRhUIx^yy1zSJux&i7v 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�Mb5gUd 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 Oh=Qz&Or@0B=l=^JqvI<8 From c1ccadc316d63a57d354aa247ebb91fdd4325fe7 Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Tue, 14 Nov 2023 08:20:13 +0100 Subject: [PATCH 18/25] query options first order nav links --- mkdocs.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/mkdocs.yaml b/mkdocs.yaml index 50a6e5186..8a4786bf1 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -22,9 +22,8 @@ nav: - Changes: changes-todo - Beacon News ↗: https://beacon-project.io/news/ - Using Beacons: - - Data Discovery: - - Genomic Queries: variant-queries - - Phenotypes and More...: /filters/#using-filters-in-queries + - Genomic Queries: variant-queries + - Phenotypes and More...: /filters/#using-filters-in-queries - Data Delivery: - Biosamples, Variants...: records - Data Handovers: handovers From edf561ed1a4c612efd3921beecbb5f6378c684f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oriol=20L=C3=B3pez-Doriga?= Date: Wed, 20 Mar 2024 16:02:44 +0100 Subject: [PATCH 19/25] filtering terms results example listed --- .../sections/beaconFilteringTermsResults.json | 2 +- .../sections/beaconFilteringTermsResults.yaml | 13 ++++++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/framework/json/responses/sections/beaconFilteringTermsResults.json b/framework/json/responses/sections/beaconFilteringTermsResults.json index daaf0fc92..29a1761bd 100644 --- a/framework/json/responses/sections/beaconFilteringTermsResults.json +++ b/framework/json/responses/sections/beaconFilteringTermsResults.json @@ -30,7 +30,7 @@ "type": "string" }, "scopes": { - "description": "Entry types this filter may be applied to.", + "description": "Entry types affected by this filter.", "examples": [ "[\"individual\", \"biosample\"]" ], diff --git a/framework/src/responses/sections/beaconFilteringTermsResults.yaml b/framework/src/responses/sections/beaconFilteringTermsResults.yaml index ff1474355..5c4ddec4a 100644 --- a/framework/src/responses/sections/beaconFilteringTermsResults.yaml +++ b/framework/src/responses/sections/beaconFilteringTermsResults.yaml @@ -48,9 +48,16 @@ definitions: - 'Aplasia/Hypoplasia of the middle ear' scopes: description: >- - Entry types this filter may be applied to. - examples: - - '["individual", "biosample"]' + Entry types affected by this filter. + examples: + - + - individual + - biosample + - analysis + - run + - genomicVariation + - + - biosample type: array items: type: string From 1447418ae20062d48c6644b705a4e0c31b8355af Mon Sep 17 00:00:00 2001 From: Dmitry Repchevsky Date: Wed, 20 Mar 2024 16:28:22 +0100 Subject: [PATCH 20/25] fix "examples" beaconFilteringTermsResults.json should be an array of arrays... --- .../json/responses/sections/beaconFilteringTermsResults.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/framework/json/responses/sections/beaconFilteringTermsResults.json b/framework/json/responses/sections/beaconFilteringTermsResults.json index 29a1761bd..a821680e8 100644 --- a/framework/json/responses/sections/beaconFilteringTermsResults.json +++ b/framework/json/responses/sections/beaconFilteringTermsResults.json @@ -32,7 +32,8 @@ "scopes": { "description": "Entry types affected by this filter.", "examples": [ - "[\"individual\", \"biosample\"]" + ["individual", "biosample", "analysis", "run", "genomicVariation"], + ["biosample"] ], "type": "array", "items": { @@ -114,4 +115,4 @@ } }, "type": "object" -} \ No newline at end of file +} From d3c26923f23d2fa9715ba2c41ddd2842d004ae08 Mon Sep 17 00:00:00 2001 From: Michael Baudis <675030+mbaudis@users.noreply.github.com> Date: Fri, 22 Mar 2024 09:40:26 +0100 Subject: [PATCH 21/25] link fix and different TOC style --- docs/formats-standards.md | 2 +- mkdocs.yaml | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/formats-standards.md b/docs/formats-standards.md index d2da97509..d5f42384d 100644 --- a/docs/formats-standards.md +++ b/docs/formats-standards.md @@ -376,5 +376,5 @@ Beacon directly uses the (IMO preferable) [representation through an ontology te ##### LINK: [Phenopackets Documentation](https://phenopacket-schema.readthedocs.io/en/latest/index.html) -[^1]: Source: [@andrewyatz](https://github.com/@andrewyatz/) at [SchemaBlocks {S}[B]](https://schemablocks.org/standards/genome-coordinates.html) +[^1]: Source: [@andrewyatz](https://github.com/@andrewyatz/) at [GenomeStandards](https://genomestandards.org/standards/genome-coordinates/) diff --git a/mkdocs.yaml b/mkdocs.yaml index 8a4786bf1..d2803ef51 100644 --- a/mkdocs.yaml +++ b/mkdocs.yaml @@ -115,13 +115,11 @@ theme: - navigation.instant - navigation.tracking - navigation.sections - - toc.integrate + # - toc.integrate # Options extra: social: - - icon: fontawesome/brands/twitter - link: https://twitter.com/genomebeacons - icon: fontawesome/brands/github link: https://github.com/ga4gh-beacon From aaf202858760664cf92377afba47f2eaec41dc4f Mon Sep 17 00:00:00 2001 From: Manuel Rueda Date: Tue, 26 Mar 2024 17:23:13 +0100 Subject: [PATCH 22/25] Fix file naming conflict error in schemas-md on macOS APFS (case-insensitive) --- .gitignore | 1 - bin/SCHEMAS2MD.md | 2 +- bin/{jsonref2json.py => _jsonref2json.py} | 0 bin/beacon_yaml2md.pl | 60 ++++++++++++++--------- bin/transform_json2md.sh | 11 +++-- docs/schemas-md/beacon_terms.md | 4 +- docs/schemas-md/obj/AgeRange_PXF.md | 3 ++ docs/schemas-md/obj/Complex Value.md | 2 +- docs/schemas-md/obj/Value_PXF.md | 3 ++ docs/schemas-md/obj/ageAtProcedure.md | 2 +- docs/schemas-md/obj/ageOfOnset.md | 2 +- docs/schemas-md/obj/alternateBases.md | 2 +- docs/schemas-md/obj/date.md | 2 +- docs/schemas-md/obj/geneIds.md | 2 +- docs/schemas-md/obj/id.md | 2 +- docs/schemas-md/obj/measurementValue.md | 2 +- docs/schemas-md/obj/notes.md | 2 +- docs/schemas-md/obj/observationMoment.md | 2 +- docs/schemas-md/obj/onset.md | 2 +- docs/schemas-md/obj/population.md | 2 +- docs/schemas-md/obj/referenceBases.md | 2 +- docs/schemas-md/obj/resolution.md | 2 +- docs/schemas-md/obj/unit.md | 2 +- docs/schemas-md/obj/value.md | 2 +- docs/schemas-md/obj/variantType.md | 2 +- 25 files changed, 68 insertions(+), 50 deletions(-) rename bin/{jsonref2json.py => _jsonref2json.py} (100%) create mode 100644 docs/schemas-md/obj/AgeRange_PXF.md create mode 100644 docs/schemas-md/obj/Value_PXF.md diff --git a/.gitignore b/.gitignore index ff647f764..bd691366a 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,3 @@ site .DS_Store models/.DS_Store /.vs -docs/schemas-md diff --git a/bin/SCHEMAS2MD.md b/bin/SCHEMAS2MD.md index cc7ff5b63..7ae735205 100644 --- a/bin/SCHEMAS2MD.md +++ b/bin/SCHEMAS2MD.md @@ -132,7 +132,7 @@ _NB:_ The script was built to work with the Beacon v2 Model schemas and the auth _NB:_ The decission to take YAMLs (and not JSON) as an input is deliberate and made by the author. -_NB:_ The script only processes the `Terms` nested **up to 3 degrees of hierarchy**. Before Adoption of VRS/PHX that limit was OK. +_NB:_ The script only processes the `Terms` nested **up to 3 degrees of hierarchy**. Before Adoption of VRS/PXF that limit was OK. _NB:_ The script also includes the Beacon v2 Models examples from [beacon-v2 repo](https://github.com/ga4gh-beacon/beacon-v2) in JSON format. diff --git a/bin/jsonref2json.py b/bin/_jsonref2json.py similarity index 100% rename from bin/jsonref2json.py rename to bin/_jsonref2json.py diff --git a/bin/beacon_yaml2md.pl b/bin/beacon_yaml2md.pl index 9c8be4f38..96e59c17f 100755 --- a/bin/beacon_yaml2md.pl +++ b/bin/beacon_yaml2md.pl @@ -2,11 +2,11 @@ # # Script to convert Beacon v2 Models schemas to Markdown tables # -# Last Modified: May/05/2022 +# Last Modified: Mar/26/2024 # # Version 2.0.0 # -# Copyright (C) 2021-2022 Manuel Rueda (manuel.rueda@crg.eu) +# Copyright (C) 2021-2024 Manuel Rueda (manuel.rueda@cnag.eu) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -236,6 +236,10 @@ sub yaml2md_obj { # We parse $yaml to get paths and more... my ( $base, $dir, $ext ) = fileparse( $yaml, '.yaml' ); $ext =~ s/\.yaml/.md/; + + # Ad hoc fix for two files that have same namex except for uc/lc + # AgeRange == ageRange and Value == value on MacOS cwAPFS (Case insensitive) + $base = $base . '_PXF' if ( $base eq 'AgeRange' || $base eq 'Value' ); my $file = catfile( $mo_dir, $base . $ext ); # Note -> $base.$ext write_file( $file, $out_str ); @@ -278,11 +282,11 @@ sub yaml_slicer { # one YAML file for each property and then re-use code from the 'main' schema ########################################## - # **** Note about VRS / PHX adoption *** # + # **** Note about VRS / PXF adoption *** # ########################################## # The adoption of those standards had technical implications. The script expects objects to have - # for the object and then . VRS/PHX follow JSON schemas that include /oneOf allOf anyOf/ + # for the object and then . VRS/PXF follow JSON schemas that include /oneOf allOf anyOf/ # plus other complex intructions such as . # This becomes a real challenge with $ref as, for instance, in we can not find the key for # 'MolecularVariation', 'SystemicVariation', 'LegacyVariation' @@ -352,7 +356,7 @@ sub yaml_slicer { sub table_content { my ( $yaml_properties, $ra_properties, $headers, $obj, $link ) = @_; - my @lc_headers = map { lc } @$headers; # Copy array uc to avoid modifying original $ref + my @lc_headers = map { lc } @$headers; # Copy array uc to avoid modifying original $ref my $out_str = ''; #---------------------------------------------------------| @@ -394,10 +398,10 @@ sub table_content { if $header eq 'example'; # Slice differentely if $object->{type} eq 'array' - if ($object->{type} eq 'array' ) { - for ('description', 'properties'){ - $value_header = $object->{items}{$_} if $header eq $_; - } + if ( $object->{type} eq 'array' ) { + for ( 'description', 'properties' ) { + $value_header = $object->{items}{$_} if $header eq $_; + } } # Now convert data structure to string @@ -454,7 +458,7 @@ sub ref2str { # string or undef else { - $out_str = defined $data->[0] ? join ', ', @$data : 'NA'; # Note ', ' to allow HTML column rendering + $out_str = defined $data->[0] ? join ', ', @$data : 'NA'; # Note ', ' to allow HTML column rendering } } elsif ( ref $data eq 'HASH' ) { @@ -480,15 +484,20 @@ sub add_external_links { my ( $tmp_str, $key ) = @_; # Note: This is an ad hoc solution to fix errors with deeply-nested data - my @phx = qw( typedQuantities days weeks Quantity high low); - my @vrs = qw(_id state type CURIE Location); + my @pxf = qw( typedQuantities days weeks Quantity high low); + my @vrs = qw(_id state type CURIE Location); my @framework = ("ontologyTerm"); - return ( any { ( $_ eq $key ) } @phx ) + + return ( any { ( $_ eq $key ) } @pxf ) ? "[$key](https://phenopacket-schema.readthedocs.io/en/latest/building-blocks.html)" : ( any { ( $_ eq $key ) } @vrs ) ? "[$key](https://vrs.ga4gh.org/en/stable/terms_and_model.html#$key)" - : ( any { ( $_ eq $key ) } @framework ) - ? "[$key](https://github.com/ga4gh-beacon/beacon-v2/blob/main/framework/src/common/$key.yaml)" + : ( any { ( $_ eq $key ) } @framework ) + ? "[$key](https://github.com/ga4gh-beacon/beacon-v2/blob/main/framework/src/common/$key.yaml)" + + # NB: Ad hoc solution for properties having equal name (lc) + : ( $key eq 'AgeRange' || $key eq 'Value' ) + ? "[$key]($tmp_str/${key}_PXF.md)" : "[$key]($tmp_str/$key.md)"; } @@ -588,7 +597,7 @@ sub create_str_yaml { ## ontologyTerm.yaml is needed due to a bug with jsonref2json.js that overrided "parent" field - my $str_ontologyTerm = < [ 'MolecularVariation', 'SystemicVariation', 'LegacyVariation' ], 'SystemicVariation' => ['CopyNumber'], - 'MolecularVariation' => [ 'Allele', 'Haplotype' ], - 'location' => [ 'CURIE', 'Location' ], + 'MolecularVariation' => [ 'Allele', 'Haplotype' ], + 'location' => [ 'CURIE', 'Location' ], 'state' => [ 'SequenceState', 'SequenceExpression' ], - 'Value' => [ 'Quantity', 'ontologyTerm' ] + 'Value' => [ 'Quantity', 'ontologyTerm' ] }; # We'll be checking @@ -699,14 +708,17 @@ sub parse_json_keywords { # my $const = $pointer->get("/$keyword/$property/$count/properties/type/const"); # $tmp_hash->{properties}{$const} = $elements; #} else{ - my $tmp_term = ( $pointer->contains("/$keyword/$count/title") && $pointer->get("/$keyword/$count/title") ne 'Ontology Term' ) + my $tmp_term = + ( $pointer->contains("/$keyword/$count/title") + && $pointer->get("/$keyword/$count/title") ne + 'Ontology Term' ) ? $pointer->get("/$keyword/$count/title") : @{ $terms->{$property} }[$count]; - $tmp_hash->{properties}{$tmp_term} = $elements if $tmp_term; # Ad-hoc some terms appear duplicated and come empty.... - #} + $tmp_hash->{properties}{$tmp_term} = $elements if $tmp_term; # Ad-hoc some terms appear duplicated and come empty.... + #} $count++; } - $data = $tmp_hash; # Adding new reference + $data = $tmp_hash; # Adding new reference } } return $data; @@ -872,7 +884,7 @@ =head1 HOW TO RUN BEACON_YAML2MD I The decission to take YAMLs (and not JSON) as an input is deliberate and made by the author. -I The script only processes the C nested B. Before Adoption of VRS/PHX that limit was OK. +I The script only processes the C nested B. Before Adoption of VRS/PXF that limit was OK. I The script also includes the Beacon v2 Models examples from L in JSON format. diff --git a/bin/transform_json2md.sh b/bin/transform_json2md.sh index 371471265..ce73254fc 100755 --- a/bin/transform_json2md.sh +++ b/bin/transform_json2md.sh @@ -2,11 +2,11 @@ # # Script to convert Beacon v2 Models to Markdown # -# Last Modified: Jul/20/2022 +# Last Modified: Mar/26/2022 # # Version 2.0.0 # -# Copyright (C) 2021-2022 Manuel Rueda (manuel.rueda@crg.eu) +# Copyright (C) 2021-2024 Manuel Rueda (manuel.rueda@cnag.eu) # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,11 +26,12 @@ set -eu mod_dir=../models/json/beacon-v2-default-model fwk_dir=../framework/json -adhoc_url='https://raw.githubusercontent.com/ga4gh-beacon/beacon-v2/main/bin/adhoc' +#adhoc_url='https://raw.githubusercontent.com/g4gh-beacon/beacon-v2/main/bin/adhoc' +adhoc_url='https://raw.githubusercontent.com/mrueda/beacon-v2/main/bin/adhoc' out_dir=./deref_schemas jsonref='node ./jsonref2json.js' yaml2md=./beacon_yaml2md.pl -yaml2json='perl -MYAML -MJSON -0777 -wnl -e' +yaml2json='perl -MYAML::XS -MJSON::XS -0777 -wnl -e' mkdir -p $out_dir/obj @@ -75,7 +76,7 @@ do rm $out_dir/$schema/defaultSchema.mod.json echo "Transforming $schema JSON to YAML ..." - $yaml2json 'print YAML::Dump(decode_json($_))' $out_dir/$schema/defaultSchema.json | perl -pe 's/ \*(\d+)$/ $1/' > $out_dir/$schema/defaultSchema.yaml + $yaml2json 'print YAML::XS::Dump(decode_json($_))' $out_dir/$schema/defaultSchema.json | perl -pe 's/ \*(\d+)$/ $1/' > $out_dir/$schema/defaultSchema.yaml echo "---" done diff --git a/docs/schemas-md/beacon_terms.md b/docs/schemas-md/beacon_terms.md index 79b4edc88..cefc4a524 100644 --- a/docs/schemas-md/beacon_terms.md +++ b/docs/schemas-md/beacon_terms.md @@ -5,7 +5,7 @@ * [ageAtProcedure](./obj/ageAtProcedure.md) * [ageOfOnset](./obj/ageOfOnset.md) * [ageRange](./obj/ageRange.md) -* [AgeRange](./obj/AgeRange.md) +* [AgeRange_PXF](./obj/AgeRange_PXF.md) * [aligner](./obj/aligner.md) * [Allele](./obj/Allele.md) * [alleleFrequency](./obj/alleleFrequency.md) @@ -167,8 +167,8 @@ * [tumorProgression](./obj/tumorProgression.md) * [unit](./obj/unit.md) * [updateDateTime](./obj/updateDateTime.md) -* [Value](./obj/Value.md) * [value](./obj/value.md) +* [Value_PXF](./obj/Value_PXF.md) * [variantAlternativeIds](./obj/variantAlternativeIds.md) * [variantCaller](./obj/variantCaller.md) * [variantInternalId](./obj/variantInternalId.md) diff --git a/docs/schemas-md/obj/AgeRange_PXF.md b/docs/schemas-md/obj/AgeRange_PXF.md new file mode 100644 index 000000000..3c339728a --- /dev/null +++ b/docs/schemas-md/obj/AgeRange_PXF.md @@ -0,0 +1,3 @@ +|Term | Description | Type | Properties | Example | Enum| +| ---| ---| ---| ---| ---| --- | +| AgeRange | Age range definition. Provenance: GA4GH Phenopackets v2 `AgeRange` | object | [end](./end.md), [start](./start.md) | NA | NA| diff --git a/docs/schemas-md/obj/Complex Value.md b/docs/schemas-md/obj/Complex Value.md index c2ef54bca..fcfd3be4a 100644 --- a/docs/schemas-md/obj/Complex Value.md +++ b/docs/schemas-md/obj/Complex Value.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| Complex Value | Definition of a complex value class. Provenance: GA4GH Phenopackets v2 `TypedQuantity` | object | [typedQuantities](https://phenopacket-schema.readthedocs.io/en/latest/building-blocks.html) | NA | NA| +| Complex Value | Definition of a complex value class. Provenance: GA4GH Phenopackets v2 `TypedQuantity` | object | [required](./required.md), [typedQuantities](https://phenopacket-schema.readthedocs.io/en/latest/building-blocks.html) | NA | NA| diff --git a/docs/schemas-md/obj/Value_PXF.md b/docs/schemas-md/obj/Value_PXF.md new file mode 100644 index 000000000..e4923d337 --- /dev/null +++ b/docs/schemas-md/obj/Value_PXF.md @@ -0,0 +1,3 @@ +|Term | Description | Type | Properties | Example | Enum| +| ---| ---| ---| ---| ---| --- | +| Value | NA | oneOf | [Quantity](https://phenopacket-schema.readthedocs.io/en/latest/building-blocks.html), [ontologyTerm](https://github.com/ga4gh-beacon/beacon-v2/blob/main/framework/src/common/ontologyTerm.yaml) | NA | NA| diff --git a/docs/schemas-md/obj/ageAtProcedure.md b/docs/schemas-md/obj/ageAtProcedure.md index 30a208cf2..159874807 100644 --- a/docs/schemas-md/obj/ageAtProcedure.md +++ b/docs/schemas-md/obj/ageAtProcedure.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| ageAtProcedure | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| +| ageAtProcedure | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange_PXF.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| diff --git a/docs/schemas-md/obj/ageOfOnset.md b/docs/schemas-md/obj/ageOfOnset.md index db5e513d8..8d7a32bdd 100644 --- a/docs/schemas-md/obj/ageOfOnset.md +++ b/docs/schemas-md/obj/ageOfOnset.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| ageOfOnset | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| +| ageOfOnset | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange_PXF.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| diff --git a/docs/schemas-md/obj/alternateBases.md b/docs/schemas-md/obj/alternateBases.md index f564a83b5..1b51c83e5 100644 --- a/docs/schemas-md/obj/alternateBases.md +++ b/docs/schemas-md/obj/alternateBases.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| alternateBases | Alternate bases for this variant (starting from `start`). * Accepted values: IUPAC codes for nucleotides (e.g. `https://www.bioinformatics.org/sms/iupac.html`). * N is a wildcard, that denotes the position of any base, and can beused as a standalone base of any type or within a partially knownsequence. As example, a query of `ANNT` the Ns can take take any form of[ACGT] and will match `ANNT`, `ACNT`, `ACCT`, `ACGT` ... and so forth.* an *empty value* is used in the case of deletions with the maximally trimmed, deleted sequence being indicated in `ReferenceBases`* Categorical variant queries, e.g. such *not* being represented through sequence & position, make use of the `variantType` parameter.* Either `alternateBases` or `variantType` is required.' | string | NA | T, G, N, AG, | NA| +| alternateBases | Alternate bases for this variant (starting from `start`). * Accepted values: IUPAC codes for nucleotides (e.g. `https://www.bioinformatics.org/sms/iupac.html`). * N is a wildcard, that denotes the position of any base, and can be used as a standalone base of any type or within a partially known sequence.* an *empty value* is used in the case of deletions with the maximally trimmed, deleted sequence being indicated in `ReferenceBases` | string | NA | T, G, N, AG, | NA| diff --git a/docs/schemas-md/obj/date.md b/docs/schemas-md/obj/date.md index 265b422f2..0a06f4730 100644 --- a/docs/schemas-md/obj/date.md +++ b/docs/schemas-md/obj/date.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| date | Date of the exposure in ISO8601 format. | string | NA | NA | NA| +| date | Date of measurement. Addition compared to Phenopackets model. | string | NA | NA | NA| diff --git a/docs/schemas-md/obj/geneIds.md b/docs/schemas-md/obj/geneIds.md index e6bfc8ee0..f49486aa2 100644 --- a/docs/schemas-md/obj/geneIds.md +++ b/docs/schemas-md/obj/geneIds.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| geneIds | NA | array | NA | `["ACE2"]`,
`["BRCA1"]` | NA| +| geneIds | NA | array | NA | `["ACE2"]`,
`["BRCA1", "ENSG00000012048"]` | NA| diff --git a/docs/schemas-md/obj/id.md b/docs/schemas-md/obj/id.md index 75ad8e9c2..9b1a75368 100644 --- a/docs/schemas-md/obj/id.md +++ b/docs/schemas-md/obj/id.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| id | Run ID. | string | NA | SRR10903401 | NA| +| id | A CURIE identifier, e.g. as `id` for an ontology term. | string | NA | ga4gh:GA.01234abcde, DUO:0000004, orcid:0000-0003-3463-0775, PMID:15254584 | NA| diff --git a/docs/schemas-md/obj/measurementValue.md b/docs/schemas-md/obj/measurementValue.md index 51ef7d07c..7a7d07e97 100644 --- a/docs/schemas-md/obj/measurementValue.md +++ b/docs/schemas-md/obj/measurementValue.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| measurementValue | NA | oneOf | [Complex Value](./Complex Value.md), [Value](./Value.md) | NA | NA| +| measurementValue | NA | oneOf | [Complex Value](./Complex Value.md), [Value](./Value_PXF.md) | NA | NA| diff --git a/docs/schemas-md/obj/notes.md b/docs/schemas-md/obj/notes.md index 34da3f8f7..8c32f7e29 100644 --- a/docs/schemas-md/obj/notes.md +++ b/docs/schemas-md/obj/notes.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| notes | Unstructured text to describe additional properties of this disease instance. | string | NA | Some free text | NA| +| notes | Unstructured text to describe this measurement. Addition compared to Phenopackets model. | string | NA | Some free text | NA| diff --git a/docs/schemas-md/obj/observationMoment.md b/docs/schemas-md/obj/observationMoment.md index fc75d56bb..4e0e8bdf1 100644 --- a/docs/schemas-md/obj/observationMoment.md +++ b/docs/schemas-md/obj/observationMoment.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| observationMoment | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| +| observationMoment | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange_PXF.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| diff --git a/docs/schemas-md/obj/onset.md b/docs/schemas-md/obj/onset.md index fc975e055..254bb2206 100644 --- a/docs/schemas-md/obj/onset.md +++ b/docs/schemas-md/obj/onset.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| onset | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| +| onset | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange_PXF.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| diff --git a/docs/schemas-md/obj/population.md b/docs/schemas-md/obj/population.md index cbe5a0719..f68bc1929 100644 --- a/docs/schemas-md/obj/population.md +++ b/docs/schemas-md/obj/population.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| population | A name for the population. A population could an ethnic, geographical one or just the `members`of a study. | string | NA | East Asian, ICGC Chronic Lymphocytic Leukemia-ES, Men, Children | NA| +| population | A name for the population. A population could an ethnic, geographical one or just the members of a study. | string | NA | East Asian, ICGC Chronic Lymphocytic Leukemia-ES, Men, Children | NA| diff --git a/docs/schemas-md/obj/referenceBases.md b/docs/schemas-md/obj/referenceBases.md index 52d7f35d9..9065277f6 100644 --- a/docs/schemas-md/obj/referenceBases.md +++ b/docs/schemas-md/obj/referenceBases.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| referenceBases | Reference bases for this variant (starting from `start`). * Accepted values: IUPAC codes for nucleotides (e.g. `https://www.bioinformatics.org/sms/iupac.html`). * N is a wildcard, that denotes the position of any base, and can be used as a standalone base of any type or within a partially known sequence. As example, a query of `ANNT` the Ns can take take any form of `[ACGT]` and will match `ANNT`, `ACNT`, `ACCT`, `ACGT` ... and so forth.* an *empty value* is used in the case of insertions with the maximally trimmed, inserted sequence being indicated in `AlternateBases`.NOTE: Beacon instances may not support UIPAC codes and it is not mandatory for them to do so. In such cases the use of [ACGTN] is mandated. | string | NA | A, T, N, , ACG | NA| +| referenceBases | Reference bases for this variant (starting from `start`). * Accepted values: IUPAC codes for nucleotides (e.g. `https://www.bioinformatics.org/sms/iupac.html`). * N is a wildcard, that denotes the position of any base, and can be used as a standalone base of any type or within a partially known sequence.* an *empty value* is used in the case of insertions with the maximally trimmed, inserted sequence being indicated in `AlternateBases`. | string | NA | A, T, N, , ACG | NA| diff --git a/docs/schemas-md/obj/resolution.md b/docs/schemas-md/obj/resolution.md index c435266b9..302e9b009 100644 --- a/docs/schemas-md/obj/resolution.md +++ b/docs/schemas-md/obj/resolution.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| resolution | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| +| resolution | NA | oneOf | [Age](./Age.md), [AgeRange](./AgeRange_PXF.md), [GestationalAge](./GestationalAge.md), [TimeInterval](./TimeInterval.md) | NA | NA| diff --git a/docs/schemas-md/obj/unit.md b/docs/schemas-md/obj/unit.md index b7f641e54..be78d0896 100644 --- a/docs/schemas-md/obj/unit.md +++ b/docs/schemas-md/obj/unit.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| unit | The kind of unit. Recommended from NCIT Unit of Category ontology term (NCIT:C42568) descendants | object | [id](./id.md), [label](./label.md) | `[{"id": "NCIT:C70575", "label": "Roentgen"}, {"id": "NCIT:C28252", "label": "Kilogram"}, {"id": "NCIT:C28253", "label": "Milligram"}]` | NA| +| unit | Unit of the exposure. Recommended from NCIT Unit of Category ontology term (NCIT:C42568) descendants. | object | [id](./id.md), [label](./label.md) | `[{"id": "NCIT:C70575", "label": "Roentgen"}, {"id": "NCIT:C28252", "label": "Kilogram"}, {"id": "NCIT:C28253", "label": "Milligram"}]` | NA| diff --git a/docs/schemas-md/obj/value.md b/docs/schemas-md/obj/value.md index 9f7ec9ebd..efbfedc5c 100644 --- a/docs/schemas-md/obj/value.md +++ b/docs/schemas-md/obj/value.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| value | The value of the quantity in the units | number | NA | NA | NA| +| value | Quantification of the exposure. | number | NA | NA | NA| diff --git a/docs/schemas-md/obj/variantType.md b/docs/schemas-md/obj/variantType.md index e2f950ad2..6b3ab66be 100644 --- a/docs/schemas-md/obj/variantType.md +++ b/docs/schemas-md/obj/variantType.md @@ -1,3 +1,3 @@ |Term | Description | Type | Properties | Example | Enum| | ---| ---| ---| ---| ---| --- | -| variantType | The `variantType` declares the nature of the variation in relation to a reference. In a response, it is used to describe the variation. In a request, it is used to declare the type of event the Beacon client is looking for. If in queries variants can not be defined through a sequence of one or more bases (`precise` variants) it can be used standalone (i.e. without `alternateBases`) together with positional parameters. Examples here are e.g. queries for structural variants such as `DUP` (increased allelic count of material from the genomic region between `start` and `end` positions without assumption about the placement of the additional sequence) or `DEL` (deletion of sequence following `start`). Either `alternateBases` or `variantType` is required, with the exception of range queries (single `start` and `end` parameters). | string | NA | SNP, DEL, DUP, BND | NA| +| variantType | The `variantType` declares the nature of the variation in relation to a reference. In a response, it is used to describe the variation. Examples here are e.g. structural variants such as `DUP` (increased allelic count of material from the genomic region between `start` and `end` positions without assumption about the placement of the additional sequence) or `DEL` (deletion of sequence following `start`). Either `alternateBases` or `variantType` is required in representing a `LegacyVariation`. | string | NA | SNP, DEL, DUP, BND | NA| From f2f08cacb306cd9990241a51d28b56076d1a3467 Mon Sep 17 00:00:00 2001 From: Manuel Rueda Date: Tue, 26 Mar 2024 17:24:58 +0100 Subject: [PATCH 23/25] Remove clashing files --- docs/schemas-md/obj/AgeRange.md | 3 --- docs/schemas-md/obj/Value.md | 3 --- 2 files changed, 6 deletions(-) delete mode 100644 docs/schemas-md/obj/AgeRange.md delete mode 100644 docs/schemas-md/obj/Value.md diff --git a/docs/schemas-md/obj/AgeRange.md b/docs/schemas-md/obj/AgeRange.md deleted file mode 100644 index 3c339728a..000000000 --- a/docs/schemas-md/obj/AgeRange.md +++ /dev/null @@ -1,3 +0,0 @@ -|Term | Description | Type | Properties | Example | Enum| -| ---| ---| ---| ---| ---| --- | -| AgeRange | Age range definition. Provenance: GA4GH Phenopackets v2 `AgeRange` | object | [end](./end.md), [start](./start.md) | NA | NA| diff --git a/docs/schemas-md/obj/Value.md b/docs/schemas-md/obj/Value.md deleted file mode 100644 index e4923d337..000000000 --- a/docs/schemas-md/obj/Value.md +++ /dev/null @@ -1,3 +0,0 @@ -|Term | Description | Type | Properties | Example | Enum| -| ---| ---| ---| ---| ---| --- | -| Value | NA | oneOf | [Quantity](https://phenopacket-schema.readthedocs.io/en/latest/building-blocks.html), [ontologyTerm](https://github.com/ga4gh-beacon/beacon-v2/blob/main/framework/src/common/ontologyTerm.yaml) | NA | NA| From b154ddaeb17b88ca39f6e0396feba4447ade12de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oriol=20L=C3=B3pez-Doriga?= Date: Thu, 11 Apr 2024 15:35:03 +0200 Subject: [PATCH 24/25] complexValue required relocated to correct level --- models/json/beacon-v2-default-model/common/complexValue.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/models/json/beacon-v2-default-model/common/complexValue.json b/models/json/beacon-v2-default-model/common/complexValue.json index aba373e2f..fd9993392 100644 --- a/models/json/beacon-v2-default-model/common/complexValue.json +++ b/models/json/beacon-v2-default-model/common/complexValue.json @@ -38,9 +38,9 @@ "$ref": "#/definitions/TypedQuantity" }, "type": "array" - }, - "required": [ "typedQuantities" ] + } }, + "required": [ "typedQuantities" ], "title": "Complex Value", "type": "object" } \ No newline at end of file From f5be698a78da255986d6b3b02d21eba7c0b36641 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oriol=20L=C3=B3pez-Doriga?= Date: Fri, 3 May 2024 15:45:04 +0200 Subject: [PATCH 25/25] adding github actions demo file --- .github/workflows/github-actions-demo.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 .github/workflows/github-actions-demo.yml diff --git a/.github/workflows/github-actions-demo.yml b/.github/workflows/github-actions-demo.yml new file mode 100644 index 000000000..8a9c1ffdf --- /dev/null +++ b/.github/workflows/github-actions-demo.yml @@ -0,0 +1,18 @@ +name: GitHub Actions Demo +run-name: ${{ github.actor }} is testing out GitHub Actions πŸš€ +on: [push] +jobs: + Explore-GitHub-Actions: + runs-on: ubuntu-latest + steps: + - run: echo "πŸŽ‰ The job was automatically triggered by a ${{ github.event_name }} event." + - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" + - run: echo "πŸ”Ž The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." + - name: Check out repository code + uses: actions/checkout@v3 + - run: echo "πŸ’‘ The ${{ github.repository }} repository has been cloned to the runner." + - run: echo "πŸ–₯️ The workflow is now ready to test your code on the runner." + - name: List files in the repository + run: | + ls ${{ github.workspace }} + - run: echo "🍏 This job's status is ${{ job.status }}." \ No newline at end of file