diff --git a/.changeset/poor-ways-join.md b/.changeset/poor-ways-join.md new file mode 100644 index 0000000..74f343b --- /dev/null +++ b/.changeset/poor-ways-join.md @@ -0,0 +1,5 @@ +--- +'@platforma-open/milaboratories.rarefaction': patch +--- + +Block metadata updated. diff --git a/block/package.json b/block/package.json index d1a8759..987f36a 100644 --- a/block/package.json +++ b/block/package.json @@ -27,8 +27,9 @@ "title": "Rarefaction analysis", "logo": "file:../logos/block-logo.png", "url": "https://github.com/platforma-open/rarefaction", + "docs": "https://docs.platforma.bio/guides/vdj-analysis/rarefaction/", "support": "mailto:support@milaboratories.com", - "description": "Performs rarefaction analysis on clonotype data to assess species richness.", + "description": "Performs rarefaction analysis on clonotype data to assess repertoire diversity and compare clonotype richness across samples with different sequencing depths.", "longDescription": "file:../docs/description.md", "changelog": "file:../CHANGELOG.md", "tags": [ diff --git a/docs/description.md b/docs/description.md index 65c42e2..8783070 100644 --- a/docs/description.md +++ b/docs/description.md @@ -1,7 +1,5 @@ # Overview -Rarefaction is a technique used to assess species richness from the results of sampling. Specifically, it is used to compare the clonal diversity of immune repertoires of different sizes. +Performs rarefaction analysis on clonotype data from immune receptor repertoires (TCR or BCR) to assess repertoire diversity and compare clonotype richness across samples with different sequencing depths. Rarefaction is a statistical technique that estimates the expected number of unique clonotypes as a function of sampling depth, enabling fair comparison of diversity between repertoires of different sizes. -This block performs rarefaction analysis on clonotype data. It calculates the mean number of unique clonotypes for various subsampling depths for each sample, providing insight into the clonal richness of the repertoires. - -The analysis is based on a random subsampling of clonotypes from each repertoire at different depths. At each depth, the number of unique clonotypes is recorded. This process is repeated multiple times to generate a smooth rarefaction curve, which represents the expected number of unique clonotypes as a function of the number of sampled clonotypes. The shape of the curve can be used to compare the diversity of different repertoires. For example, a steeper curve indicates a higher diversity. +The block processes clonotype count data from VDJ processing blocks and performs random subsampling at multiple depths for each sample. At each subsampling depth, the number of unique clonotypes is recorded, and this process is repeated multiple times to generate smooth rarefaction curves representing the mean expected number of unique clonotypes. The shape and slope of these curves provide insights into repertoire diversity: steeper curves indicate higher diversity and suggest that additional sequencing would reveal more unique clonotypes, while plateauing curves indicate that most diversity has been captured at the current sequencing depth. diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a3f14c1..d748b56 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ catalogs: specifier: ^1.4.9 version: 1.4.11 '@platforma-sdk/block-tools': - specifier: ^2.6.16 - version: 2.6.16 + specifier: ^2.6.21 + version: 2.6.21 '@platforma-sdk/blocks-deps-updater': specifier: ^2.0.0 version: 2.0.0 @@ -95,7 +95,7 @@ importers: devDependencies: '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.6.16 + version: 2.6.21 model: dependencies: @@ -108,7 +108,7 @@ importers: devDependencies: '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.6.16 + version: 2.6.21 '@platforma-sdk/eslint-config': specifier: 'catalog:' version: 1.1.0(@eslint/js@9.23.0)(@stylistic/eslint-plugin@2.13.0(eslint@9.23.0)(typescript@5.5.4))(eslint-plugin-n@17.15.1(eslint@9.23.0))(eslint-plugin-vue@9.32.0(eslint@9.23.0))(eslint@9.23.0)(globals@15.14.0)(typescript-eslint@8.24.0(eslint@9.23.0)(typescript@5.5.4))(typescript@5.5.4) @@ -1122,12 +1122,18 @@ packages: '@milaboratories/pl-model-common@1.21.4': resolution: {integrity: sha512-k0dqRSWF2npDXEI00F+on6g/B6LDIOlRTJTZ5Pc+vyj9n4GvlR2lT93GKJwJXEx4jok8H//2FwZabC+EFxTYpQ==} + '@milaboratories/pl-model-common@1.21.6': + resolution: {integrity: sha512-PU+LYdpz3bxmdVrZyjGDzxRNBgMn4FJC/D+vxZjNCp+LjxCgQkQ2K9tBy0xlkOVG6pCfAY8QhavZJciZJZZgrQ==} + '@milaboratories/pl-model-middle-layer@1.8.34': resolution: {integrity: sha512-0VdpZ67nmX0bWjCjcCR0paGqzJleZ/1TVLdbK71gWuq2jwN6wmBA90t5rDAfRWj7Ju9RkUU7LR5QyuwB/L0OfQ==} '@milaboratories/pl-model-middle-layer@1.8.35': resolution: {integrity: sha512-fNYE4nWcmDn5CAK7IOwSR9htq10F7mPpfIunEcOHDXS1pSrPxc+QGiw6fJRWcV4KE8Qt55xfmmrl0zO/r2aCvg==} + '@milaboratories/pl-model-middle-layer@1.8.40': + resolution: {integrity: sha512-xwAhayvUYR1TmmIKtj/EOIc6TttvN18kXZcU0Ai/IfyjVqNw7GVPKywBLgD8Gt1yhg4Y8BTxilxpXTibRT3PCw==} + '@milaboratories/pl-tree@1.8.8': resolution: {integrity: sha512-EKXHZCs5G1lmpXNMzKcr60JF54k8FuZqhwQmFQSN8NRtRNkSTXy1BFIcP918cOpdSXKEUukNE0OrVbJdIY6zww==} engines: {node: '>=22.19.0'} @@ -1149,10 +1155,17 @@ packages: '@milaboratories/ts-helpers-oclif@1.1.30': resolution: {integrity: sha512-jBl6/pqsJMK+j1j+hTD9UyVHsxY8EZiVCdsVBHFgRtpTtzhSRvcUYQJVbMn5j3PifFEyDxShOICCce9RZ0umJA==} + '@milaboratories/ts-helpers-oclif@1.1.33': + resolution: {integrity: sha512-1200VRTW3L5GNvjAiBXrsbLnvMGycuiyXMa6WyY154wk8D3oERaOCpzUDNtTDIf+QnXmJNrc9GSlI4940eCl7A==} + '@milaboratories/ts-helpers@1.5.1': resolution: {integrity: sha512-o8w+/6leOpELVk/GN7+bKnTWgTiL+lsIKq/UDtRGNhk6hYIsKfE+vWHGoTswKMvgoqfA0C3cZQ2HjUvo4VDE+w==} engines: {node: '>=22.19.0'} + '@milaboratories/ts-helpers@1.5.4': + resolution: {integrity: sha512-Inpyk9sYn1e+59KwgAQW9uFBIR6hmMozDgTfOmz7sx38a2ZftBkYQtSCHwzztbV5tg8covugxbFEbpDKfDDF6A==} + engines: {node: '>=22.19.0'} + '@milaboratories/uikit@2.5.0': resolution: {integrity: sha512-977B+x3kmg1MXhekg4JpieXEyoNmmMxVwQKCbXQLokq4PtYNBzbVnL/T4XvDhEtmQel2bhYs4eeUhiqqAmhn9A==} @@ -1246,6 +1259,10 @@ packages: resolution: {integrity: sha512-a5eo8UJ5dV3E3Ps4W9Vv7C/qkuu10oM1F1YUiSeRAOFwBnlsY3RpEfCckQBbPftX6yFs5U0ctGGdTvCuCtg3hQ==} hasBin: true + '@platforma-sdk/block-tools@2.6.21': + resolution: {integrity: sha512-X5B094uOZF8QiSNQg7FhjhWtwpAHTmYBsiwwOVhfo5e0yd0x6DBns82Jp0wWwXvocv7VQnS4mYWoXCy6NVzIvw==} + hasBin: true + '@platforma-sdk/blocks-deps-updater@2.0.0': resolution: {integrity: sha512-cef5ysA011ub5bofbWQJ3EM9rZ7A4ixGMKhFIsF2VNwYrCu5XRHsayA6vDeFOBjX4Jnq9D0QztW0JUxXD73bpw==} hasBin: true @@ -6967,6 +6984,12 @@ snapshots: canonicalize: 2.1.0 zod: 3.23.8 + '@milaboratories/pl-model-common@1.21.6': + dependencies: + '@milaboratories/pl-error-like': 1.12.5 + canonicalize: 2.1.0 + zod: 3.23.8 + '@milaboratories/pl-model-middle-layer@1.8.34': dependencies: '@milaboratories/pl-model-common': 1.21.3 @@ -6981,6 +7004,13 @@ snapshots: utility-types: 3.11.0 zod: 3.23.8 + '@milaboratories/pl-model-middle-layer@1.8.40': + dependencies: + '@milaboratories/pl-model-common': 1.21.6 + remeda: 2.32.0 + utility-types: 3.11.0 + zod: 3.23.8 + '@milaboratories/pl-tree@1.8.8': dependencies: '@milaboratories/computable': 2.7.1 @@ -7009,11 +7039,21 @@ snapshots: '@milaboratories/ts-helpers': 1.5.1 '@oclif/core': 4.2.6 + '@milaboratories/ts-helpers-oclif@1.1.33': + dependencies: + '@milaboratories/ts-helpers': 1.5.4 + '@oclif/core': 4.2.6 + '@milaboratories/ts-helpers@1.5.1': dependencies: canonicalize: 2.1.0 denque: 2.1.0 + '@milaboratories/ts-helpers@1.5.4': + dependencies: + canonicalize: 2.1.0 + denque: 2.1.0 + '@milaboratories/uikit@2.5.0(typescript@5.5.4)': dependencies: '@milaboratories/helpers': 1.12.0 @@ -7168,6 +7208,28 @@ snapshots: - aws-crt - supports-color + '@platforma-sdk/block-tools@2.6.21': + dependencies: + '@aws-sdk/client-s3': 3.859.0 + '@milaboratories/pl-http': 1.2.0 + '@milaboratories/pl-model-common': 1.21.6 + '@milaboratories/pl-model-middle-layer': 1.8.40 + '@milaboratories/resolve-helper': 1.1.1 + '@milaboratories/ts-helpers': 1.5.4 + '@milaboratories/ts-helpers-oclif': 1.1.33 + '@oclif/core': 4.2.6 + canonicalize: 2.1.0 + lru-cache: 11.2.2 + mime-types: 2.1.35 + remeda: 2.32.0 + tar: 7.4.3 + undici: 7.16.0 + yaml: 2.8.1 + zod: 3.23.8 + transitivePeerDependencies: + - aws-crt + - supports-color + '@platforma-sdk/blocks-deps-updater@2.0.0': dependencies: yaml: 2.8.1 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ddbbe1d..fc1f2c9 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -10,7 +10,7 @@ catalog: "@platforma-sdk/model": ^1.45.0 "@platforma-sdk/ui-vue": ^1.45.13 "@platforma-sdk/workflow-tengo": ^5.5.12 - "@platforma-sdk/block-tools": ^2.6.16 + "@platforma-sdk/block-tools": ^2.6.21 "@platforma-sdk/test": ^1.45.15 "@platforma-sdk/tengo-builder": ^2.3.3 "@platforma-sdk/package-builder": ^3.10.7