From 4fa3f3f1e2bd6272e42e84fcbfdc0da98527f8d2 Mon Sep 17 00:00:00 2001 From: Dmitry Bolotin Date: Tue, 14 Jan 2025 21:15:23 +0200 Subject: [PATCH 1/4] Migration of #65 code, SDK upgrade --- pnpm-lock.yaml | 156 ++++++++++++++++++++++++++++++++------------ pnpm-workspace.yaml | 9 +-- ui/package.json | 3 +- ui/vite.config.ts | 6 +- 4 files changed, 128 insertions(+), 46 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e652b71..7d5a6c7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,8 +16,8 @@ catalogs: specifier: 2.1.5 version: 2.1.5 '@platforma-open/milaboratories.samples-and-data': - specifier: ^1.9.4 - version: 1.9.4 + specifier: ^1.9.5 + version: 1.9.5 '@platforma-open/milaboratories.samples-and-data.model': specifier: ^1.9.0 version: 1.9.0 @@ -28,8 +28,8 @@ catalogs: specifier: ^1.15.6 version: 1.15.6 '@platforma-sdk/block-tools': - specifier: ^2.5.3 - version: 2.5.3 + specifier: ^2.5.5 + version: 2.5.5 '@platforma-sdk/model': specifier: ^1.21.20 version: 1.21.20 @@ -37,14 +37,17 @@ catalogs: specifier: ^1.17.5 version: 1.17.5 '@platforma-sdk/test': - specifier: ^1.21.22 - version: 1.21.22 + specifier: ^1.21.28 + version: 1.21.28 '@platforma-sdk/ui-vue': - specifier: ^1.21.24 - version: 1.21.24 + specifier: ^1.21.25 + version: 1.21.25 '@platforma-sdk/workflow-tengo': specifier: ^2.9.6 version: 2.9.6 + '@rollup/plugin-url': + specifier: ^8.0.2 + version: 8.0.2 '@vitejs/plugin-vue': specifier: ^5.2.1 version: 5.2.1 @@ -57,6 +60,9 @@ catalogs: ag-grid-vue3: specifier: ^33.0.3 version: 33.0.3 + rollup-plugin-sourcemaps2: + specifier: ^0.4.3 + version: 0.4.3 tsup: specifier: ~8.1.2 version: 8.1.2 @@ -113,7 +119,7 @@ importers: devDependencies: '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.5.3 + version: 2.5.5 model: dependencies: @@ -126,7 +132,7 @@ importers: devDependencies: '@platforma-sdk/block-tools': specifier: 'catalog:' - version: 2.5.3 + version: 2.5.5 tsup: specifier: 'catalog:' version: 8.1.2(postcss@8.4.49)(typescript@5.5.4)(yaml@2.6.1) @@ -147,7 +153,7 @@ importers: version: link:../model '@platforma-open/milaboratories.samples-and-data': specifier: 'catalog:' - version: 1.9.4 + version: 1.9.5 '@platforma-open/milaboratories.samples-and-data.model': specifier: 'catalog:' version: 1.9.0 @@ -160,7 +166,7 @@ importers: devDependencies: '@platforma-sdk/test': specifier: 'catalog:' - version: 1.21.22(@types/node@22.7.5) + version: 1.21.28(@types/node@22.7.5) typescript: specifier: 'catalog:' version: 5.5.4 @@ -181,7 +187,7 @@ importers: version: 1.21.20 '@platforma-sdk/ui-vue': specifier: 'catalog:' - version: 1.21.24(typescript@5.5.4) + version: 1.21.25(typescript@5.5.4) '@vueuse/core': specifier: 'catalog:' version: 12.4.0(typescript@5.5.4) @@ -201,9 +207,15 @@ importers: specifier: 'catalog:' version: 3.23.8 devDependencies: + '@rollup/plugin-url': + specifier: 'catalog:' + version: 8.0.2(rollup@4.24.0) '@vitejs/plugin-vue': specifier: 'catalog:' version: 5.2.1(vite@6.0.7(@types/node@22.7.5)(yaml@2.6.1))(vue@3.5.13(typescript@5.5.4)) + rollup-plugin-sourcemaps2: + specifier: 'catalog:' + version: 0.4.3(@types/node@22.7.5)(rollup@4.24.0) typescript: specifier: 'catalog:' version: 5.5.4 @@ -233,7 +245,7 @@ importers: version: 1.17.5 '@platforma-sdk/test': specifier: 'catalog:' - version: 1.21.22(@types/node@22.7.5) + version: 1.21.28(@types/node@22.7.5) '@platforma-sdk/workflow-tengo': specifier: 'catalog:' version: 2.9.6 @@ -1014,8 +1026,8 @@ packages: '@milaboratories/pl-local@1.10.0': resolution: {integrity: sha512-achfzJQ7/TtZXdt34t1WA/1ox15TpGLKS0VUDLU9gW+KF2AvoXqaQFkOum2UvkWVHBIJomQhgLvHUqm44NjNQg==} - '@milaboratories/pl-middle-layer@1.24.0': - resolution: {integrity: sha512-ZVoxzaSYgnSU5dHD9Ay3tV8wbrCgek+Pd2E52rx1yaCrAflEIFBvOMkMrwtviCzmUl18SoYOLPllVQol2fpo/Q==} + '@milaboratories/pl-middle-layer@1.25.2': + resolution: {integrity: sha512-HjQVaI1rf9X3DSZVR8soQ04H1vRNoyDs5WNwVhAUZHnnNnggqUdKw+RzPeHx7ah+EAR4tTvCUHH8Hp9iMggcqw==} '@milaboratories/pl-model-backend@1.0.1': resolution: {integrity: sha512-vYqTIjOx04sOW9sroXiscKoDGu49iLz7K9n9lLf8y9TfYWXwiO3PTNF/EI4s7IW2hEoRFObsObY3DIY56AdZnw==} @@ -1026,8 +1038,8 @@ packages: '@milaboratories/pl-model-middle-layer@1.6.10': resolution: {integrity: sha512-UYGSr/8SaXAB/7YxyAv2ecHJBfmizMH8HbFDbgE+r1IUERJBPgpB10tNlZFEtO+sMFP54TkuLj+h9q1kGR+qhw==} - '@milaboratories/pl-model-middle-layer@1.6.11': - resolution: {integrity: sha512-5Sg+aYjmZl7Bp1SUESYdxUqU2GVuKrLrqfr56l7uetq3G6oPmvEbLGgbte6FFQ0Te8HptL1CEZcIJRdvs1SSXQ==} + '@milaboratories/pl-model-middle-layer@1.7.0': + resolution: {integrity: sha512-NZxOrQ0RJh9FCdYo6wqCfxMy35HXNGYTqTliwn6ozQpCI85XoQp7QL2tWIOOwc085T9uRBSUFU2XxJe+egVUmg==} '@milaboratories/pl-tree@1.4.21': resolution: {integrity: sha512-P0AtoEi02ViNOz4mzP1BNoyYfaBpSJxFZHxLqqpPUsN4e1Zf85W80n7s/mS4dk/lmRTQFxjUxngJR69Oca9nfw==} @@ -1049,8 +1061,8 @@ packages: '@milaboratories/ts-helpers@1.1.3': resolution: {integrity: sha512-6eBGVodry75ZQlg7n9oPEpDblu/5mHW3Tci7smOt/Nd7IH1zSrZRcNUc18oGY1nj1Vx+Kx+TkVw+9rIgp6HVVg==} - '@milaboratories/uikit@2.2.47': - resolution: {integrity: sha512-8WoX0q2uFYuBL9ABbDd/RJ9f7S/98DhR6DcLmeQRsTevazmICDxyEewNz7vUDIXWiQsHFLCMGySc0xpWL26EJw==} + '@milaboratories/uikit@2.2.48': + resolution: {integrity: sha512-02eDjHfDpktLdTPgfXNXAdAhVbrtKZG/zVwLHPkjPavyeYE2M51069AyJDxYUytSvYMRIXiC3J/t7iO/Qvmydw==} '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} @@ -1081,8 +1093,8 @@ packages: '@platforma-open/milaboratories.samples-and-data.workflow@1.10.0': resolution: {integrity: sha512-u4GIYYxWrjZnhiUUR6FHPtkqlYhmno3txqAU7FTQ7j4241nzL+sinckOM0GfU3bkpB5+Wd9pIs5uTyKW6xwc/g==} - '@platforma-open/milaboratories.samples-and-data@1.9.4': - resolution: {integrity: sha512-mW27TORvCIkzbxPrsN+fS9nlNpOTtEyDA2Y3z2J4LPxGwMthNwuAlFJpab1ZyBN6pkY3fBPYePFbw92LpxQOmw==} + '@platforma-open/milaboratories.samples-and-data@1.9.5': + resolution: {integrity: sha512-WWf+B5hV4j1eKzfZrtrM1kIhmbRjboOWQh/V2PXdmKDcykKXOqTra25FZIJYvOw2KTJVYx9i5GhIjmsKTEfoQQ==} '@platforma-open/milaboratories.software-mixcr@4.7.0-133-develop': resolution: {integrity: sha512-b7jnFwjbO+tmlCEstILbTqVYYF3a5tYk2albcWNsfrJW8oP+of1KIBVCKMKVBr0UyshmsFjOLtLyrtLEa/ObGQ==} @@ -1126,8 +1138,8 @@ packages: '@platforma-open/milaboratories.software-small-binaries@1.15.6': resolution: {integrity: sha512-5DwOZseYx6/sas3wIS2WuE2FtOPlgcKpFIw1eoP2YCuzPWRcSiTVu68IKvVz9f3Nv+HKi4glDBK83xsS3e9gIA==} - '@platforma-sdk/block-tools@2.5.3': - resolution: {integrity: sha512-XdP95HcL+14mleZJR1oaMYi3r1LoubhoqkUQQledsCHHA1mSIg2IUObu1/ILxSrK4FNJtNyfg9bztXTzi2AMSA==} + '@platforma-sdk/block-tools@2.5.5': + resolution: {integrity: sha512-8trUinpMiAyuSaGyWY0Uyaaf6KBJp5n9WJsM9ChjYQmZS9IAR6Uel/RVTLkfBQFVbaQh7kXewBFbxIzqli5WEw==} hasBin: true '@platforma-sdk/model@1.21.20': @@ -1137,11 +1149,11 @@ packages: resolution: {integrity: sha512-9nhNUIZFvPPoX6K4+d26pV9UicKafCG2vSH2nizDgoYt0GNL9FfYUPt52L+i/hHEY4ezHjOBGoZQa9tWLwqN9g==} hasBin: true - '@platforma-sdk/test@1.21.22': - resolution: {integrity: sha512-ZtSF0UUBUjZqjFxOtd+AgLrdGaTputoF87q7Yri6G7WzhsTNEREKwnjVsb7lUOdMh/KHPqjbG9oD3gtxSlgjWA==} + '@platforma-sdk/test@1.21.28': + resolution: {integrity: sha512-3a5oeO53k2uWIqI4KCGWbz2IM/apqSPgSXoOkV06hf6jhUEJPR6p12khwek2o8y2gEGfe/l62MdlDFysyDJ9OA==} - '@platforma-sdk/ui-vue@1.21.24': - resolution: {integrity: sha512-6gYVNzRmS6LCvoXMSaSnfTANcvqBINXFfDxSb4eexFFaRoJrlO88OBGZ/z6eefx17vHyaLf2mzjQopvXa0/kPQ==} + '@platforma-sdk/ui-vue@1.21.25': + resolution: {integrity: sha512-oa7H4OLnqwo0pGu9o9Z69Xbf7vokWIgHcseO0KZJXNqK3H6WiDPKSZs/yvsuw+GyJH3Y+CBrrQ7GPmZ0I7Ns4w==} '@platforma-sdk/workflow-tengo@2.9.6': resolution: {integrity: sha512-8PjlA6zr/7f96i1c9WvkDif2IAvIJtVe40IPzhAQRJNBSBF8VTKUKel6noB1yK/qspS8ikLziFJGOG9FpFVz5Q==} @@ -1198,6 +1210,24 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} + '@rollup/plugin-url@8.0.2': + resolution: {integrity: sha512-5yW2LP5NBEgkvIRSSEdJkmxe5cUNZKG3eenKtfJvSkxVm/xTTu7w+ayBtNwhozl1ZnTUCU0xFaRQR+cBl2H7TQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.3': + resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.24.0': resolution: {integrity: sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==} cpu: [arm] @@ -2473,6 +2503,11 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} + mime@3.0.0: + resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} + engines: {node: '>=10.0.0'} + hasBin: true + mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -2649,6 +2684,10 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + pify@2.3.0: resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} engines: {node: '>=0.10.0'} @@ -2772,6 +2811,16 @@ packages: robust-predicates@3.0.2: resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup-plugin-sourcemaps2@0.4.3: + resolution: {integrity: sha512-q+50FHvE0RJVlSlQ2xf5AVuJHMnohSfev0j0VARr3gZSvAgh+s27cGz+w/yt3z8DpYnQVx9LKo2FFsEJ0uECkw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@types/node': '>=18.0.0' + rollup: '>=4' + peerDependenciesMeta: + '@types/node': + optional: true + rollup@4.24.0: resolution: {integrity: sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -4371,7 +4420,7 @@ snapshots: yaml: 2.6.1 zod: 3.23.8 - '@milaboratories/pl-middle-layer@1.24.0': + '@milaboratories/pl-middle-layer@1.25.2': dependencies: '@milaboratories/computable': 2.3.4 '@milaboratories/pframes-node': 2.1.5(@milaboratories/pl-model-common@1.10.3) @@ -4382,11 +4431,11 @@ snapshots: '@milaboratories/pl-local': 1.10.0 '@milaboratories/pl-model-backend': 1.0.1 '@milaboratories/pl-model-common': 1.10.3 - '@milaboratories/pl-model-middle-layer': 1.6.11 + '@milaboratories/pl-model-middle-layer': 1.7.0 '@milaboratories/pl-tree': 1.4.21 '@milaboratories/resolve-helper': 1.0.2 '@milaboratories/ts-helpers': 1.1.3 - '@platforma-sdk/block-tools': 2.5.3 + '@platforma-sdk/block-tools': 2.5.5 '@platforma-sdk/model': 1.21.20 '@platforma-sdk/workflow-tengo': 2.9.6 canonicalize: 2.0.0 @@ -4420,7 +4469,7 @@ snapshots: utility-types: 3.11.0 zod: 3.23.8 - '@milaboratories/pl-model-middle-layer@1.6.11': + '@milaboratories/pl-model-middle-layer@1.7.0': dependencies: '@milaboratories/pl-model-common': 1.10.3 remeda: 2.19.0 @@ -4453,7 +4502,7 @@ snapshots: dependencies: denque: 2.1.0 - '@milaboratories/uikit@2.2.47(typescript@5.5.4)': + '@milaboratories/uikit@2.2.48(typescript@5.5.4)': dependencies: d3: 7.9.0 vue: 3.5.13(typescript@5.5.4) @@ -4505,7 +4554,7 @@ snapshots: '@platforma-open/milaboratories.samples-and-data.workflow@1.10.0': {} - '@platforma-open/milaboratories.samples-and-data@1.9.4': + '@platforma-open/milaboratories.samples-and-data@1.9.5': dependencies: '@platforma-open/milaboratories.samples-and-data.model': 1.9.0 '@platforma-open/milaboratories.samples-and-data.ui': 1.16.0 @@ -4553,11 +4602,11 @@ snapshots: '@platforma-open/milaboratories.software-small-binaries.small-asset': 1.1.3 '@platforma-open/milaboratories.software-small-binaries.table-converter': 1.2.3 - '@platforma-sdk/block-tools@2.5.3': + '@platforma-sdk/block-tools@2.5.5': dependencies: '@aws-sdk/client-s3': 3.726.0 '@milaboratories/pl-http': 1.0.2 - '@milaboratories/pl-model-middle-layer': 1.6.11 + '@milaboratories/pl-model-middle-layer': 1.7.0 '@milaboratories/resolve-helper': 1.0.2 '@milaboratories/ts-helpers': 1.1.3 '@milaboratories/ts-helpers-oclif': 1.1.12 @@ -4590,11 +4639,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@platforma-sdk/test@1.21.22(@types/node@22.7.5)': + '@platforma-sdk/test@1.21.28(@types/node@22.7.5)': dependencies: '@milaboratories/computable': 2.3.4 '@milaboratories/pl-client': 2.7.2 - '@milaboratories/pl-middle-layer': 1.24.0 + '@milaboratories/pl-middle-layer': 1.25.2 '@milaboratories/pl-tree': 1.4.21 '@milaboratories/ts-helpers': 1.1.3 '@platforma-sdk/model': 1.21.20 @@ -4618,9 +4667,9 @@ snapshots: - supports-color - terser - '@platforma-sdk/ui-vue@1.21.24(typescript@5.5.4)': + '@platforma-sdk/ui-vue@1.21.25(typescript@5.5.4)': dependencies: - '@milaboratories/uikit': 2.2.47(typescript@5.5.4) + '@milaboratories/uikit': 2.2.48(typescript@5.5.4) '@platforma-sdk/model': 1.21.20 ag-grid-enterprise: 33.0.3 ag-grid-vue3: 33.0.3(vue@3.5.13(typescript@5.5.4)) @@ -4685,6 +4734,22 @@ snapshots: '@protobufjs/utf8@1.1.0': {} + '@rollup/plugin-url@8.0.2(rollup@4.24.0)': + dependencies: + '@rollup/pluginutils': 5.1.3(rollup@4.24.0) + make-dir: 3.1.0 + mime: 3.0.0 + optionalDependencies: + rollup: 4.24.0 + + '@rollup/pluginutils@5.1.3(rollup@4.24.0)': + dependencies: + '@types/estree': 1.0.6 + estree-walker: 2.0.2 + picomatch: 4.0.2 + optionalDependencies: + rollup: 4.24.0 + '@rollup/rollup-android-arm-eabi@4.24.0': optional: true @@ -6155,6 +6220,8 @@ snapshots: dependencies: mime-db: 1.52.0 + mime@3.0.0: {} + mimic-fn@2.1.0: {} minimatch@3.1.2: @@ -6289,6 +6356,8 @@ snapshots: picomatch@2.3.1: {} + picomatch@4.0.2: {} + pify@2.3.0: {} pify@3.0.0: {} @@ -6407,6 +6476,13 @@ snapshots: robust-predicates@3.0.2: {} + rollup-plugin-sourcemaps2@0.4.3(@types/node@22.7.5)(rollup@4.24.0): + dependencies: + '@rollup/pluginutils': 5.1.3(rollup@4.24.0) + rollup: 4.24.0 + optionalDependencies: + '@types/node': 22.7.5 + rollup@4.24.0: dependencies: '@types/estree': 1.0.6 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 57e2125..11f0e33 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -8,11 +8,11 @@ packages: catalog: '@platforma-sdk/workflow-tengo': ^2.9.6 '@platforma-sdk/model': ^1.21.20 - '@platforma-sdk/ui-vue': ^1.21.24 + '@platforma-sdk/ui-vue': ^1.21.25 '@platforma-sdk/tengo-builder': ^1.17.5 - '@platforma-sdk/block-tools': ^2.5.3 + '@platforma-sdk/block-tools': ^2.5.5 - '@platforma-sdk/test': ^1.21.22 + '@platforma-sdk/test': ^1.21.28 '@milaboratories/helpers': ^1.6.11 '@milaboratories/software-pframes-conv': 2.1.5 @@ -32,6 +32,7 @@ catalog: 'vite': ^6.0.7 'vitest': ^2.1.8 '@vitejs/plugin-vue': ^5.2.1 + 'rollup-plugin-sourcemaps2': ^0.4.3 '@vueuse/core': ^12.4.0 @@ -42,5 +43,5 @@ catalog: # other blocks used in tests - '@platforma-open/milaboratories.samples-and-data': ^1.9.4 + '@platforma-open/milaboratories.samples-and-data': ^1.9.5 '@platforma-open/milaboratories.samples-and-data.model': ^1.9.0 diff --git a/ui/package.json b/ui/package.json index 7747090..b48e829 100644 --- a/ui/package.json +++ b/ui/package.json @@ -25,6 +25,7 @@ "typescript": "catalog:", "vite": "catalog:", "vitest": "catalog:", - "vue-tsc": "catalog:" + "vue-tsc": "catalog:", + "rollup-plugin-sourcemaps2": "catalog:" } } \ No newline at end of file diff --git a/ui/vite.config.ts b/ui/vite.config.ts index ceba5c1..c2f3209 100644 --- a/ui/vite.config.ts +++ b/ui/vite.config.ts @@ -1,11 +1,15 @@ import { defineConfig } from 'vite'; import vue from '@vitejs/plugin-vue'; +import sourcemaps from 'rollup-plugin-sourcemaps2'; // https://vitejs.dev/config/ export default defineConfig({ plugins: [vue()], base: './', build: { - sourcemap: true + sourcemap: true, + rollupOptions: { + plugins: [sourcemaps()] + } } }); From 1e378d023249fcd7a6fb771dba53e82e200727c6 Mon Sep 17 00:00:00 2001 From: Dmitry Bolotin Date: Wed, 15 Jan 2025 10:15:11 +0200 Subject: [PATCH 2/4] excessive quotation removed from "JSON" structures --- .../src/calculate-pfconv-params.tpl.tengo | 22 +- workflow/src/get-preset.tpl.tengo | 4 +- workflow/src/pfconv_params.lib.tengo | 1156 ++++++++--------- workflow/src/process.tpl.tengo | 8 +- 4 files changed, 595 insertions(+), 595 deletions(-) diff --git a/workflow/src/calculate-pfconv-params.tpl.tengo b/workflow/src/calculate-pfconv-params.tpl.tengo index f360cd3..aa7c05e 100644 --- a/workflow/src/calculate-pfconv-params.tpl.tengo +++ b/workflow/src/calculate-pfconv-params.tpl.tengo @@ -9,9 +9,9 @@ json := import("json") // self.validateInputs({ // "__options__,closed": "", -// "request": { +// request: { // "__options__,closed": "", -// "blockId": ["not", validation.resource()], +// blockId: ["not", validation.resource()], // "specs,omitempty": ["not", validation.resource()] // } // }) @@ -61,7 +61,7 @@ self.body(func(inputs) { imputed := false assemblingFeature := undefined if !is_undefined(specs.assemblingFeature) { - assemblingFeature = specs["assemblingFeature"][0] + assemblingFeature = specs.assemblingFeature[0] } else { assemblingFeature = "VDJRegion" imputed = true @@ -90,7 +90,7 @@ self.body(func(inputs) { if feature == "CDR3" { columnsList += ["nSeq"+feature, "aaSeq"+feature] } else { - columnsList += ["nSeqImputed"+feature, "aaSeqImputed"+feature, + columnsList += ["nSeqImputed"+feature, "aaSeqImputed"+feature, "nSeq"+feature, "aaSeq"+feature] } } else { @@ -101,7 +101,7 @@ self.body(func(inputs) { // add columns with covered feature sequences if assemblingFeature != "CDR3" { if imputed { - columnsList += ["nSeqImputed"+assemblingFeature, "aaSeqImputed"+assemblingFeature, + columnsList += ["nSeqImputed"+assemblingFeature, "aaSeqImputed"+assemblingFeature, "nSeq"+assemblingFeature, "aaSeq"+assemblingFeature] } else { columnsList += ["nSeq"+assemblingFeature, "aaSeq"+assemblingFeature] @@ -138,8 +138,8 @@ self.body(func(inputs) { if hasUmi { for column in columns { - if contains(targetColumns, column["column"]) { - column["spec"]["annotations"]["pl7.app/table/visibility"] = "optional" + if contains(targetColumns, column.column) { + column.spec.annotations["pl7.app/table/visibility"] = "optional" } } } @@ -154,10 +154,10 @@ self.body(func(inputs) { return { params: { - "axes": axes, - "columns": columns, - "storageFormat": "Binary", - "partitionKeyLength": 0 + axes: axes, + columns: columns, + storageFormat: "Binary", + partitionKeyLength: 0 }, featureParams: { assemblingFeature: assemblingFeature, diff --git a/workflow/src/get-preset.tpl.tengo b/workflow/src/get-preset.tpl.tengo index 2645871..0b96f8e 100644 --- a/workflow/src/get-preset.tpl.tengo +++ b/workflow/src/get-preset.tpl.tengo @@ -9,8 +9,8 @@ mixcr := import(":mixcr") self.validateInputs({ "__options__,closed": "", - "preset": "any", - "params": { + preset: "any", + params: { "__options__,closed": "", "species,omitempty": "string" } diff --git a/workflow/src/pfconv_params.lib.tengo b/workflow/src/pfconv_params.lib.tengo index 437cbe9..f4f76f0 100644 --- a/workflow/src/pfconv_params.lib.tengo +++ b/workflow/src/pfconv_params.lib.tengo @@ -17,20 +17,20 @@ getColumns := func(blockId, featureParams) { cellTagsList := [] if len(cellTags) > 0 { for tag in cellTags { - + } } cols := { - "axes": [ + axes: [ { - "column": "cloneId", - "spec": { - "name": "pl7.app/vdj/cloneId", - "type": "Long", - "domain": { + column: "cloneId", + spec: { + name: "pl7.app/vdj/cloneId", + type: "Long", + domain: { "pl7.app/blockId": blockId }, - "annotations": { + annotations: { "pl7.app/min": "0", "pl7.app/label": "Clone id", "pl7.app/table/visibility": "optional", @@ -39,16 +39,16 @@ getColumns := func(blockId, featureParams) { } } ], - "columns": [ - { - "column": "cellGroup", - "id": "cell-group", - "naRegex": "undefined|contamination", - "allowNA": true, - "spec": { - "name": "pl7.app/vdj/cellGroup", - "valueType": "Long", - "annotations": { + columns: [ + { + column: "cellGroup", + id: "cell-group", + naRegex: "undefined|contamination", + allowNA: true, + spec: { + name: "pl7.app/vdj/cellGroup", + valueType: "Long", + annotations: { "pl7.app/min": "0", "pl7.app/label": "Cell group number", "pl7.app/table/visibility": "default", @@ -57,13 +57,13 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "readCount", - "id": "read-count", - "allowNA": false, - "spec": { - "name": "pl7.app/vdj/readCount", - "valueType": "Long", - "annotations": { + column: "readCount", + id: "read-count", + allowNA: false, + spec: { + name: "pl7.app/vdj/readCount", + valueType: "Long", + annotations: { "pl7.app/min": "1", "pl7.app/label": "Number Of Reads", "pl7.app/table/visibility": "default", @@ -72,13 +72,13 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "readFraction", - "id": "read-fraction", - "allowNA": false, - "spec": { - "name": "pl7.app/vdj/readFraction", - "valueType": "Double", - "annotations": { + column: "readFraction", + id: "read-fraction", + allowNA: false, + spec: { + name: "pl7.app/vdj/readFraction", + valueType: "Double", + annotations: { "pl7.app/min": "0", "pl7.app/max": "1", "pl7.app/label": "Fraction of reads", @@ -88,13 +88,13 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "uniqueMoleculeCount", - "id": "umi-count", - "allowNA": false, - "spec": { - "name": "pl7.app/vdj/uniqueMoleculeCount", - "valueType": "Long", - "annotations": { + column: "uniqueMoleculeCount", + id: "umi-count", + allowNA: false, + spec: { + name: "pl7.app/vdj/uniqueMoleculeCount", + valueType: "Long", + annotations: { "pl7.app/min": "1", "pl7.app/label": "Number of UMI", "pl7.app/table/visibility": "default", @@ -103,13 +103,13 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "uniqueMoleculeFraction", - "id": "umi-fraction", - "allowNA": false, - "spec": { - "name": "pl7.app/vdj/uniqueMoleculeFraction", - "valueType": "Double", - "annotations": { + column: "uniqueMoleculeFraction", + id: "umi-fraction", + allowNA: false, + spec: { + name: "pl7.app/vdj/uniqueMoleculeFraction", + valueType: "Double", + annotations: { "pl7.app/min": "0", "pl7.app/max": "1", "pl7.app/label": "Fraction of UMI", @@ -119,18 +119,18 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "targetSequences", - "id": "n-seq-clonal-sequences", - "naRegex": "", - "allowNA": false, - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "targetSequences", + id: "n-seq-clonal-sequences", + naRegex: "", + allowNA: false, + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/sequence": "clonalSequence", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/type": "sequence", "pl7.app/label": "Clonal sequences", "pl7.app/table/visibility": "default", @@ -139,18 +139,18 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "targetQualities", - "id": "clonal-qualities", - "naRegex": "", - "allowNA": false, - "spec": { - "name": "pl7.app/vdj/sequenceQuality", - "valueType": "String", - "domain": { + column: "targetQualities", + id: "clonal-qualities", + naRegex: "", + allowNA: false, + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "String", + domain: { "pl7.app/vdj/quality": "clonalQuality" }, - "annotations": { - "type": "quality string", + annotations: { + type: "quality string", "pl7.app/label": "Clonal qualities", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "4000" @@ -158,18 +158,18 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "bestVHit", - "id": "best-v-hit", - "naRegex": "", - "allowNA": false, - "spec": { - "name": "pl7.app/vdj/geneHit", - "valueType": "String", - "domain": { + column: "bestVHit", + id: "best-v-hit", + naRegex: "", + allowNA: false, + spec: { + name: "pl7.app/vdj/geneHit", + valueType: "String", + domain: { "pl7.app/vdj/reference": "VGene" }, - "annotations": { - "type": "V gene name", + annotations: { + type: "V gene name", "pl7.app/label": "Best V hit", "pl7.app/table/visibility": "default", "pl7.app/table/orderPriority": "21000" @@ -177,17 +177,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "bestDHit", - "id": "best-d-hit", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/geneHit", - "valueType": "String", - "domain": { + column: "bestDHit", + id: "best-d-hit", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/geneHit", + valueType: "String", + domain: { "pl7.app/vdj/reference": "DGene" }, - "annotations": { - "type": "D gene name", + annotations: { + type: "D gene name", "pl7.app/label": "Best D hit", "pl7.app/table/visibility": "default", "pl7.app/table/orderPriority": "20500" @@ -195,18 +195,18 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "bestJHit", - "id": "best-j-hit", - "naRegex": "region_not_covered", - "allowNA": false, - "spec": { - "name": "pl7.app/vdj/geneHit", - "valueType": "String", - "domain": { + column: "bestJHit", + id: "best-j-hit", + naRegex: "region_not_covered", + allowNA: false, + spec: { + name: "pl7.app/vdj/geneHit", + valueType: "String", + domain: { "pl7.app/vdj/reference": "JGene" }, - "annotations": { - "type": "J gene name", + annotations: { + type: "J gene name", "pl7.app/label": "Best J hit", "pl7.app/table/visibility": "default", "pl7.app/table/orderPriority": "20000" @@ -214,17 +214,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "bestCHit", - "id": "best-c-hit", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/geneHit", - "valueType": "String", - "domain": { + column: "bestCHit", + id: "best-c-hit", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/geneHit", + valueType: "String", + domain: { "pl7.app/vdj/reference": "CGene" }, - "annotations": { - "type": "C gene name", + annotations: { + type: "C gene name", "pl7.app/label": "Best C hit", "pl7.app/table/visibility": "default", "pl7.app/table/orderPriority": "19500" @@ -232,17 +232,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqFR1", - "id": "n-seq-fr1", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqFR1", + id: "n-seq-fr1", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "FR1", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "FR1 nt", "pl7.app/table/visibility": "optional", @@ -251,17 +251,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "minQualFR1", - "id": "min-qual-fr1", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequenceQuality", - "valueType": "Int", - "domain": { + column: "minQualFR1", + id: "min-qual-fr1", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { "pl7.app/vdj/quality": "minQuality", "pl7.app/vdj/feature": "FR1" }, - "annotations": { + annotations: { "pl7.app/min": "0", "pl7.app/max": "50", "pl7.app/label": "Min quality FR1", @@ -271,17 +271,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqFR2", - "id": "n-seq-fr2", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqFR2", + id: "n-seq-fr2", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "FR2", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "FR2 nt", "pl7.app/table/visibility": "optional", @@ -290,17 +290,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "minQualFR2", - "id": "min-qual-fr2", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequenceQuality", - "valueType": "Int", - "domain": { + column: "minQualFR2", + id: "min-qual-fr2", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { "pl7.app/vdj/quality": "minQuality", "pl7.app/vdj/feature": "FR2" }, - "annotations": { + annotations: { "pl7.app/min": "0", "pl7.app/max": "50", "pl7.app/label": "Min quality FR2", @@ -310,17 +310,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqFR3", - "id": "n-seq-fr3", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqFR3", + id: "n-seq-fr3", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "FR3", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "FR3 nt", "pl7.app/table/visibility": "optional", @@ -329,17 +329,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "minQualFR3", - "id": "min-qual-fr3", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequenceQuality", - "valueType": "Int", - "domain": { + column: "minQualFR3", + id: "min-qual-fr3", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { "pl7.app/vdj/quality": "minQuality", "pl7.app/vdj/feature": "FR3" }, - "annotations": { + annotations: { "pl7.app/min": "0", "pl7.app/max": "50", "pl7.app/label": "Min quality FR3", @@ -349,17 +349,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqFR4", - "id": "n-seq-fr4", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqFR4", + id: "n-seq-fr4", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "FR4", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "FR4 nt", "pl7.app/table/visibility": "optional", @@ -368,17 +368,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "minQualFR4", - "id": "min-qual-fr4", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequenceQuality", - "valueType": "Int", - "domain": { + column: "minQualFR4", + id: "min-qual-fr4", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { "pl7.app/vdj/quality": "minQuality", "pl7.app/vdj/feature": "FR4" }, - "annotations": { + annotations: { "pl7.app/min": "0", "pl7.app/max": "50", "pl7.app/label": "Min quality FR4", @@ -388,17 +388,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqCDR1", - "id": "n-seq-cdr1", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqCDR1", + id: "n-seq-cdr1", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "CDR1", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "CDR1 nt", "pl7.app/table/visibility": "optional", @@ -407,17 +407,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "minQualCDR1", - "id": "min-qual-cdr1", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/minQualCDR1", - "valueType": "Int", - "domain": { + column: "minQualCDR1", + id: "min-qual-cdr1", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/minQualCDR1", + valueType: "Int", + domain: { "pl7.app/vdj/quality": "minQuality", "pl7.app/vdj/feature": "CDR1" }, - "annotations": { + annotations: { "pl7.app/min": "0", "pl7.app/max": "50", "pl7.app/label": "Min quality CDR1", @@ -427,17 +427,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqCDR2", - "id": "n-seq-cdr2", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqCDR2", + id: "n-seq-cdr2", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "CDR2", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "CDR2 nt", "pl7.app/table/visibility": "optional", @@ -446,17 +446,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "minQualCDR2", - "id": "min-qual-cdr2", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequenceQuality", - "valueType": "Int", - "domain": { + column: "minQualCDR2", + id: "min-qual-cdr2", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { "pl7.app/vdj/quality": "minQuality", "pl7.app/vdj/feature": "CDR2" }, - "annotations": { + annotations: { "pl7.app/min": "0", "pl7.app/max": "50", "pl7.app/label": "Min quality CDR2", @@ -466,17 +466,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqCDR3", - "id": "n-seq-cdr3", - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "nSeqCDR3", + id: "n-seq-cdr3", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "CDR3", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "CDR3 nt", "pl7.app/table/visibility": "default", @@ -485,17 +485,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "minQualCDR3", - "id": "min-qual-cdr3", - "naRegex": "region_not_covered", - "spec": { - "name": "pl7.app/vdj/sequenceQuality", - "valueType": "Int", - "domain": { + column: "minQualCDR3", + id: "min-qual-cdr3", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { "pl7.app/vdj/quality": "minQuality", "pl7.app/vdj/feature": "CDR3" }, - "annotations": { + annotations: { "pl7.app/min": "0", "pl7.app/max": "50", "pl7.app/label": "Min quality CDR3", @@ -505,17 +505,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqFR1", - "id": "aa-seq-fr1", - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqFR1", + id: "aa-seq-fr1", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "FR1", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "FR1 aa", "pl7.app/table/visibility": "optional", @@ -524,17 +524,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqFR2", - "id": "aa-seq-fr2", - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqFR2", + id: "aa-seq-fr2", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "FR2", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "FR2 aa", "pl7.app/table/visibility": "optional", @@ -543,17 +543,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqFR3", - "id": "aa-seq-fr3", - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqFR3", + id: "aa-seq-fr3", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "FR3", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "FR3 aa", "pl7.app/table/visibility": "optional", @@ -562,17 +562,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqFR4", - "id": "aa-seq-fr4", - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqFR4", + id: "aa-seq-fr4", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "FR4", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "FR4 aa", "pl7.app/table/visibility": "optional", @@ -581,17 +581,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqCDR1", - "id": "aa-seq-cdr1", - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqCDR1", + id: "aa-seq-cdr1", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "CDR1", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "CDR1 aa", "pl7.app/table/visibility": "optional", @@ -600,17 +600,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqCDR2", - "id": "aa-seq-cdr2", - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqCDR2", + id: "aa-seq-cdr2", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "CDR2", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "CDR2 aa", "pl7.app/table/visibility": "optional", @@ -619,17 +619,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqCDR3", - "id": "aa-seq-cdr3", - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqCDR3", + id: "aa-seq-cdr3", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "CDR3", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "CDR3 aa", "pl7.app/table/visibility": "default", @@ -638,17 +638,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqImputedFR1", - "id": "n-seq-imputed-fr1", - "naRegex": "", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqImputedFR1", + id: "n-seq-imputed-fr1", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "FR1", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "FR1 imputed nt", "pl7.app/table/visibility": "optional", @@ -657,17 +657,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqImputedFR2", - "id": "n-seq-imputed-fr2", - "naRegex": "", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqImputedFR2", + id: "n-seq-imputed-fr2", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "FR2", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "FR2 imputed nt", "pl7.app/table/visibility": "optional", @@ -676,17 +676,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqImputedFR3", - "id": "n-seq-imputed-fr3", - "naRegex": "", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqImputedFR3", + id: "n-seq-imputed-fr3", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "FR3", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "FR3 imputed nt", "pl7.app/table/visibility": "optional", @@ -695,17 +695,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqImputedFR4", - "id": "n-seq-imputed-fr4", - "naRegex": "", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqImputedFR4", + id: "n-seq-imputed-fr4", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "FR4", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "FR4 imputed nt", "pl7.app/table/visibility": "optional", @@ -714,17 +714,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqImputedCDR1", - "id": "n-seq-imputed-cdr1", - "naRegex": "", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqImputedCDR1", + id: "n-seq-imputed-cdr1", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "CDR1", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "CDR1 imputed nt", "pl7.app/table/visibility": "optional", @@ -733,17 +733,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqImputedCDR2", - "id": "n-seq-imputed-cdr2", - "naRegex": "", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqImputedCDR2", + id: "n-seq-imputed-cdr2", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "CDR2", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "CDR2 imputed nt", "pl7.app/table/visibility": "optional", @@ -752,17 +752,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqImputedCDR3", - "id": "n-seq-imputed-CDR3", - "naRegex": "", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqImputedCDR3", + id: "n-seq-imputed-CDR3", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "CDR3", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "CDR3 imputed nt", "pl7.app/table/visibility": "optional", @@ -771,17 +771,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqImputedFR1", - "id": "aa-seq-imputed-fr1", - "naRegex": "", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqImputedFR1", + id: "aa-seq-imputed-fr1", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "FR1", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "FR1 imputed aa", "pl7.app/table/visibility": "optional", @@ -790,17 +790,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqImputedFR2", - "id": "aa-seq-imputed-fr2", - "naRegex": "", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqImputedFR2", + id: "aa-seq-imputed-fr2", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "FR2", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "FR2 imputed aa", "pl7.app/table/visibility": "optional", @@ -809,17 +809,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqImputedFR3", - "id": "aa-seq-imputed-fr3", - "naRegex": "", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqImputedFR3", + id: "aa-seq-imputed-fr3", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "FR3", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "FR3 imputed aa", "pl7.app/table/visibility": "optional", @@ -828,17 +828,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqImputedFR4", - "id": "aa-seq-imputed-fr4", - "naRegex": "", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqImputedFR4", + id: "aa-seq-imputed-fr4", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "FR4", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "FR4 imputed aa", "pl7.app/table/visibility": "optional", @@ -847,17 +847,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqImputedCDR1", - "id": "aa-seq-imputed-cdr1", - "naRegex": "", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqImputedCDR1", + id: "aa-seq-imputed-cdr1", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "CDR1", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "CDR1 imputed aa", "pl7.app/table/visibility": "optional", @@ -866,17 +866,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqImputedCDR2", - "id": "aa-seq-imputed-cdr2", - "naRegex": "", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqImputedCDR2", + id: "aa-seq-imputed-cdr2", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "CDR2", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "CDR2 imputed aa", "pl7.app/table/visibility": "optional", @@ -885,17 +885,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqImputedCDR3", - "id": "aa-seq-imputed-CDR3", - "naRegex": "", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqImputedCDR3", + id: "aa-seq-imputed-CDR3", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": "CDR3", "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": "CDR3 imputed aa", "pl7.app/table/visibility": "optional", @@ -904,13 +904,13 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "isotype", - "id": "isotype", - "naRegex": "", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/isotype", - "annotations": { + column: "isotype", + id: "isotype", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/isotype", + annotations: { "pl7.app/label": "IG isotype", "pl7.app/table/visibility": "default", "pl7.app/table/orderPriority": "19000" @@ -918,14 +918,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "topChains", - "id": "top-chains", - "naRegex": "", - "allowNA": false, - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/chain", - "annotations": { + column: "topChains", + id: "top-chains", + naRegex: "", + allowNA: false, + spec: { + valueType: "String", + name: "pl7.app/vdj/chain", + annotations: { "pl7.app/label": "Chain", "pl7.app/table/visibility": "default", "pl7.app/table/orderPriority": "21500" @@ -933,13 +933,13 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "isProductive" + productiveFeature, - "id": "is-productive-" + assemblingFeature, - "allowNA": false, - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence/productive", - "annotations": { + column: "isProductive" + productiveFeature, + id: "is-productive-" + assemblingFeature, + allowNA: false, + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/productive", + annotations: { "pl7.app/label": "Productive", "pl7.app/table/visibility": "default", "pl7.app/table/orderPriority": "21400" @@ -947,13 +947,13 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "isOOF" + productiveFeature, - "id": "is-oof-" + assemblingFeature, - "allowNA": false, - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence/containsOOF", - "annotations": { + column: "isOOF" + productiveFeature, + id: "is-oof-" + assemblingFeature, + allowNA: false, + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/containsOOF", + annotations: { "pl7.app/label": "Contains OOF", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "20" @@ -961,13 +961,13 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "hasStopsIn" + productiveFeature, - "id": "has-stops-in-" + assemblingFeature, - "allowNA": false, - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence/containsStopCodons", - "annotations": { + column: "hasStopsIn" + productiveFeature, + id: "has-stops-in-" + assemblingFeature, + allowNA: false, + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/containsStopCodons", + annotations: { "pl7.app/label": "Contains stop codons", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "10" @@ -975,16 +975,16 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqVRegionOfGermline", - "id": "n-seq-vregion-germline", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqVRegionOfGermline", + id: "n-seq-vregion-germline", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "VRegion", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "V germline", "pl7.app/table/visibility": "optional", @@ -993,16 +993,16 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqDRegionOfGermline", - "id": "n-seq-dregion-germline", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqDRegionOfGermline", + id: "n-seq-dregion-germline", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "DRegion", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "D germline", "pl7.app/table/visibility": "optional", @@ -1011,16 +1011,16 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nSeqJRegionOfGermline", - "id": "n-seq-jregion-germline", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqJRegionOfGermline", + id: "n-seq-jregion-germline", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": "JRegion", "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": "J germline", "pl7.app/table/visibility": "optional", @@ -1029,22 +1029,22 @@ getColumns := func(blockId, featureParams) { } } ], - "storageFormat": "Binary", - "partitionKeyLength": 0 + storageFormat: "Binary", + partitionKeyLength: 0 } if addColumns { featureColumns := [{ - "column": "nSeq" + assemblingFeature, - "id": "n-seq-" + assemblingFeature, - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "nSeq" + assemblingFeature, + id: "n-seq-" + assemblingFeature, + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": assemblingFeature, "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": assemblingFeature + " nt", "pl7.app/table/visibility": "default", @@ -1053,17 +1053,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeq" + assemblingFeature, - "id": "aa-seq-" + assemblingFeature, - "naRegex": "region_not_covered", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeq" + assemblingFeature, + id: "aa-seq-" + assemblingFeature, + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": assemblingFeature, "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "false", "pl7.app/label": assemblingFeature + " aa", "pl7.app/table/visibility": "default", @@ -1072,17 +1072,17 @@ getColumns := func(blockId, featureParams) { } }] featureColumnsImputed := [{ - "column": "nSeqImputed" + assemblingFeature, - "id": "n-seq-imputed-" + assemblingFeature, - "naRegex": "", - "spec": { - "name": "pl7.app/vdj/sequence", - "valueType": "String", - "domain": { + column: "nSeqImputed" + assemblingFeature, + id: "n-seq-imputed-" + assemblingFeature, + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { "pl7.app/vdj/feature": assemblingFeature, "pl7.app/alphabet": "nucleotide" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": assemblingFeature + " imputed nt", "pl7.app/table/visibility": "default", @@ -1091,17 +1091,17 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaSeqImputed" + assemblingFeature, - "id": "aa-seq-imputed-" + assemblingFeature, - "naRegex": "", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence", - "domain": { + column: "aaSeqImputed" + assemblingFeature, + id: "aa-seq-imputed-" + assemblingFeature, + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { "pl7.app/vdj/feature": assemblingFeature, "pl7.app/alphabet": "aminoacid" }, - "annotations": { + annotations: { "pl7.app/vdj/imputed": "true", "pl7.app/label": assemblingFeature + " imputed aa", "pl7.app/table/visibility": "default", @@ -1110,14 +1110,14 @@ getColumns := func(blockId, featureParams) { } }] mutationColumns := [{ - "column": "nMutations" + mutationVFeature, - "id": "n-mutations-" + assemblingFeature, - "allowNA": true, - "naRegex": "None", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence/nMutations", - "annotations": { + column: "nMutations" + mutationVFeature, + id: "n-mutations-" + assemblingFeature, + allowNA: true, + naRegex: "None", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/nMutations", + annotations: { "pl7.app/label": "Nt mutations in V gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "50" @@ -1125,14 +1125,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaMutations" + mutationVFeature, - "id": "aa-mutations-" + assemblingFeature, - "allowNA": true, - "naRegex": "None", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence/aaMutations", - "annotations": { + column: "aaMutations" + mutationVFeature, + id: "aa-mutations-" + assemblingFeature, + allowNA: true, + naRegex: "None", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/aaMutations", + annotations: { "pl7.app/label": "AA mutations in V gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "60" @@ -1140,14 +1140,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nMutationsFR4", - "id": "n-mutations-FR4", - "allowNA": true, - "naRegex": "None", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence/nMutations", - "annotations": { + column: "nMutationsFR4", + id: "n-mutations-FR4", + allowNA: true, + naRegex: "None", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/nMutations", + annotations: { "pl7.app/label": "Nt mutations in J gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "30" @@ -1155,14 +1155,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaMutationsFR4", - "id": "aa-mutations-FR4", - "allowNA": true, - "naRegex": "None", - "spec": { - "valueType": "String", - "name": "pl7.app/vdj/sequence/aaMutations", - "annotations": { + column: "aaMutationsFR4", + id: "aa-mutations-FR4", + allowNA: true, + naRegex: "None", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/aaMutations", + annotations: { "pl7.app/label": "AA mutations in J gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "40" @@ -1170,14 +1170,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nMutationsCount" + mutationVFeature, - "id": "n-mutations-count-" + assemblingFeature, - "allowNA": true, - "naRegex": "region_not_covered", - "spec": { - "valueType": "Int", - "name": "pl7.app/vdj/sequence/nMutationsCount", - "annotations": { + column: "nMutationsCount" + mutationVFeature, + id: "n-mutations-count-" + assemblingFeature, + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Int", + name: "pl7.app/vdj/sequence/nMutationsCount", + annotations: { "pl7.app/label": "Nt mutations count in V gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "70" @@ -1185,14 +1185,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaMutationsCount" + mutationVFeature, - "id": "aa-mutations-count-" + assemblingFeature, - "allowNA": true, - "naRegex": "region_not_covered", - "spec": { - "valueType": "Int", - "name": "pl7.app/vdj/sequence/aaMutationsCount", - "annotations": { + column: "aaMutationsCount" + mutationVFeature, + id: "aa-mutations-count-" + assemblingFeature, + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Int", + name: "pl7.app/vdj/sequence/aaMutationsCount", + annotations: { "pl7.app/label": "AA mutations count in V gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "80" @@ -1200,14 +1200,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nMutationsRate" + mutationVFeature, - "id": "n-mutations-rate-" + assemblingFeature, - "allowNA": true, - "naRegex": "region_not_covered", - "spec": { - "valueType": "Double", - "name": "pl7.app/vdj/sequence/nMutationsRate", - "annotations": { + column: "nMutationsRate" + mutationVFeature, + id: "n-mutations-rate-" + assemblingFeature, + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Double", + name: "pl7.app/vdj/sequence/nMutationsRate", + annotations: { "pl7.app/label": "Nt mutations rate in V gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "90" @@ -1215,28 +1215,28 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaMutationsRate" + mutationVFeature, - "id": "aa-mutations-rate-" + assemblingFeature, - "allowNA": true, - "naRegex": "region_not_covered", - "spec": { - "valueType": "Double", - "name": "pl7.app/vdj/sequence/aaMutationsRate", - "annotations": { + column: "aaMutationsRate" + mutationVFeature, + id: "aa-mutations-rate-" + assemblingFeature, + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Double", + name: "pl7.app/vdj/sequence/aaMutationsRate", + annotations: { "pl7.app/label": "AA mutations rate in V gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "100" } } }, { - "column": "nMutationsCountFR4", - "id": "n-mutations-count-fr4", - "allowNA": true, - "naRegex": "region_not_covered", - "spec": { - "valueType": "Int", - "name": "pl7.app/vdj/sequence/nMutationsCount", - "annotations": { + column: "nMutationsCountFR4", + id: "n-mutations-count-fr4", + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Int", + name: "pl7.app/vdj/sequence/nMutationsCount", + annotations: { "pl7.app/label": "Nt mutations count in J gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "60" @@ -1244,14 +1244,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaMutationsCountFR4", - "id": "aa-mutations-count-fr4", - "allowNA": true, - "naRegex": "region_not_covered", - "spec": { - "valueType": "Int", - "name": "pl7.app/vdj/sequence/aaMutationsCount", - "annotations": { + column: "aaMutationsCountFR4", + id: "aa-mutations-count-fr4", + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Int", + name: "pl7.app/vdj/sequence/aaMutationsCount", + annotations: { "pl7.app/label": "AA mutations count in J gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "50" @@ -1259,14 +1259,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "nMutationsRateFR4", - "id": "n-mutations-rate-fr4", - "allowNA": true, - "naRegex": "region_not_covered", - "spec": { - "valueType": "Double", - "name": "pl7.app/vdj/sequence/nMutationsRate", - "annotations": { + column: "nMutationsRateFR4", + id: "n-mutations-rate-fr4", + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Double", + name: "pl7.app/vdj/sequence/nMutationsRate", + annotations: { "pl7.app/label": "Nt mutations rate in J gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "40" @@ -1274,14 +1274,14 @@ getColumns := func(blockId, featureParams) { } }, { - "column": "aaMutationsRateFR4", - "id": "aa-mutations-rate-fr4", - "allowNA": true, - "naRegex": "region_not_covered", - "spec": { - "valueType": "Double", - "name": "pl7.app/vdj/sequence/aaMutationsRate", - "annotations": { + column: "aaMutationsRateFR4", + id: "aa-mutations-rate-fr4", + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Double", + name: "pl7.app/vdj/sequence/aaMutationsRate", + annotations: { "pl7.app/label": "AA mutations rate in J gene", "pl7.app/table/visibility": "optional", "pl7.app/table/orderPriority": "30" @@ -1289,9 +1289,9 @@ getColumns := func(blockId, featureParams) { } }] if imputed { - cols["columns"] = cols["columns"] + featureColumns + featureColumnsImputed + cols.columns = cols.columns + featureColumns + featureColumnsImputed } else { - cols["columns"] = cols["columns"] + featureColumns + mutationColumns + cols.columns = cols.columns + featureColumns + mutationColumns } cellTagsList := [] @@ -1306,12 +1306,12 @@ getColumns := func(blockId, featureParams) { } cols.axes += [ { - "column": "tagValue" + tag, - "naRegex": "", - "spec": { - "name": "pl7.app/vdj/tagValueCELL", - "type": "String", - "annotations": { + column: "tagValue" + tag, + naRegex: "", + spec: { + name: "pl7.app/vdj/tagValueCELL", + type: "String", + annotations: { "pl7.app/label": label, "pl7.app/table/visibility": "default", "pl7.app/table/orderPriority": string(priority) diff --git a/workflow/src/process.tpl.tengo b/workflow/src/process.tpl.tengo index f10ff7d..ded18e7 100644 --- a/workflow/src/process.tpl.tengo +++ b/workflow/src/process.tpl.tengo @@ -75,9 +75,9 @@ self.body(func(inputs) { cColumnsAdditionalAxesSpec := [sampleAxis] if !hasAssembleCells { cColumnsAdditionalAxesSpec = append(cColumnsAdditionalAxesSpec, { - "name": "pl7.app/vdj/chain", - "type": "String", - "annotations": { + name: "pl7.app/vdj/chain", + type: "String", + annotations: { "pl7.app/label": "Chain", "pl7.app/axisNature": "scaleCompatible" } @@ -268,6 +268,6 @@ self.body(func(inputs) { }), "clns.data": mixcrResults.output("clns"), - "clones": clones + clones: clones } }) From 3d6528a82ec397b40d3d501bb31a46f36b63d629 Mon Sep 17 00:00:00 2001 From: Dmitry Bolotin Date: Wed, 15 Jan 2025 10:32:30 +0200 Subject: [PATCH 3/4] Additional formatting --- .../src/calculate-pfconv-params.tpl.tengo | 20 +- workflow/src/check-feature.lib.tengo | 6 +- workflow/src/mixcr.lib.tengo | 2 +- workflow/src/pfconv_params.lib.tengo | 2634 ++++++++--------- 4 files changed, 1331 insertions(+), 1331 deletions(-) diff --git a/workflow/src/calculate-pfconv-params.tpl.tengo b/workflow/src/calculate-pfconv-params.tpl.tengo index aa7c05e..b852d1a 100644 --- a/workflow/src/calculate-pfconv-params.tpl.tengo +++ b/workflow/src/calculate-pfconv-params.tpl.tengo @@ -35,12 +35,12 @@ self.body(func(inputs) { // contains function contains := func(list, value) { - for item in list { - if item == value { - return true - } - } - return false + for item in list { + if item == value { + return true + } + } + return false } fieldsToColumns := { @@ -91,7 +91,7 @@ self.body(func(inputs) { columnsList += ["nSeq"+feature, "aaSeq"+feature] } else { columnsList += ["nSeqImputed"+feature, "aaSeqImputed"+feature, - "nSeq"+feature, "aaSeq"+feature] + "nSeq"+feature, "aaSeq"+feature] } } else { columnsList += ["nSeq"+feature, "aaSeq"+feature] @@ -102,7 +102,7 @@ self.body(func(inputs) { if assemblingFeature != "CDR3" { if imputed { columnsList += ["nSeqImputed"+assemblingFeature, "aaSeqImputed"+assemblingFeature, - "nSeq"+assemblingFeature, "aaSeq"+assemblingFeature] + "nSeq"+assemblingFeature, "aaSeq"+assemblingFeature] } else { columnsList += ["nSeq"+assemblingFeature, "aaSeq"+assemblingFeature] } @@ -120,8 +120,8 @@ self.body(func(inputs) { if assemblingFeature != "CDR3" { mutationVFeature := featureSpec.mutationVFeature columnsList += ["nMutations"+mutationVFeature, "aaMutations"+mutationVFeature, "nMutationsCount"+mutationVFeature, - "aaMutationsCount"+mutationVFeature, "nMutationsRate"+mutationVFeature, "aaMutationsRate"+mutationVFeature, - "nMutationsFR4", "aaMutationsFR4", "nMutationsCountFR4", "aaMutationsCountFR4", "nMutationsRateFR4", "aaMutationsRateFR4"] + "aaMutationsCount"+mutationVFeature, "nMutationsRate"+mutationVFeature, "aaMutationsRate"+mutationVFeature, + "nMutationsFR4", "aaMutationsFR4", "nMutationsCountFR4", "aaMutationsCountFR4", "nMutationsRateFR4", "aaMutationsRateFR4"] } // filter pfconvParams by column name and get a list of fields from it diff --git a/workflow/src/check-feature.lib.tengo b/workflow/src/check-feature.lib.tengo index c33aff3..dc25b07 100644 --- a/workflow/src/check-feature.lib.tengo +++ b/workflow/src/check-feature.lib.tengo @@ -4,7 +4,7 @@ text := import("text") getProductiveFeature := func(assemblingFeature, imputed) { productiveFeature := undefined mutationVFeature := assemblingFeature - if assemblingFeature == "CDR3" || imputed { + if assemblingFeature == "CDR3" || imputed { productiveFeature = "CDR3" } else if assemblingFeature == "VDJRegion" { productiveFeature = "VDJRegion(0,-1)" @@ -19,7 +19,7 @@ getProductiveFeature := func(assemblingFeature, imputed) { mutationVFeature = "{"+splittedFeature[0]+":FR3End}" } } - return { + return { productiveFeature: productiveFeature, mutationVFeature: mutationVFeature } @@ -27,4 +27,4 @@ getProductiveFeature := func(assemblingFeature, imputed) { export ll.toStrict({ getProductiveFeature: getProductiveFeature -}) \ No newline at end of file +}) diff --git a/workflow/src/mixcr.lib.tengo b/workflow/src/mixcr.lib.tengo index 3b10e6b..10441d7 100644 --- a/workflow/src/mixcr.lib.tengo +++ b/workflow/src/mixcr.lib.tengo @@ -34,7 +34,7 @@ addAdditionalColumnArgs := func(mixcrCmdBuilder, featureParams) { arg("--append-export-clones-field"). arg("-hasStops").arg("CDR3") - + if addColumns { if imputed { mixcrCmdBuilder. diff --git a/workflow/src/pfconv_params.lib.tengo b/workflow/src/pfconv_params.lib.tengo index f4f76f0..c5dfc39 100644 --- a/workflow/src/pfconv_params.lib.tengo +++ b/workflow/src/pfconv_params.lib.tengo @@ -3,1326 +3,1326 @@ getFeature := import(":check-feature") text := import("text") getColumns := func(blockId, featureParams) { - assemblingFeature := featureParams.assemblingFeature - imputed := featureParams.imputed - cellTags := featureParams.cellTags - featureSpec := getFeature.getProductiveFeature(assemblingFeature, imputed) - productiveFeature := featureSpec.productiveFeature - mutationVFeature := featureSpec.mutationVFeature - addColumns := true - if assemblingFeature == "CDR3" { - addColumns = false - } + assemblingFeature := featureParams.assemblingFeature + imputed := featureParams.imputed + cellTags := featureParams.cellTags + featureSpec := getFeature.getProductiveFeature(assemblingFeature, imputed) + productiveFeature := featureSpec.productiveFeature + mutationVFeature := featureSpec.mutationVFeature + addColumns := true + if assemblingFeature == "CDR3" { + addColumns = false + } - cellTagsList := [] - if len(cellTags) > 0 { - for tag in cellTags { + cellTagsList := [] + if len(cellTags) > 0 { + for tag in cellTags { - } - } - cols := { - axes: [ - { - column: "cloneId", - spec: { - name: "pl7.app/vdj/cloneId", - type: "Long", - domain: { - "pl7.app/blockId": blockId - }, - annotations: { - "pl7.app/min": "0", - "pl7.app/label": "Clone id", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "90000" - } - } - } - ], - columns: [ - { - column: "cellGroup", - id: "cell-group", - naRegex: "undefined|contamination", - allowNA: true, - spec: { - name: "pl7.app/vdj/cellGroup", - valueType: "Long", - annotations: { - "pl7.app/min": "0", - "pl7.app/label": "Cell group number", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "24000" - } - } - }, - { - column: "readCount", - id: "read-count", - allowNA: false, - spec: { - name: "pl7.app/vdj/readCount", - valueType: "Long", - annotations: { - "pl7.app/min": "1", - "pl7.app/label": "Number Of Reads", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "23500" - } - } - }, - { - column: "readFraction", - id: "read-fraction", - allowNA: false, - spec: { - name: "pl7.app/vdj/readFraction", - valueType: "Double", - annotations: { - "pl7.app/min": "0", - "pl7.app/max": "1", - "pl7.app/label": "Fraction of reads", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "23000" - } - } - }, - { - column: "uniqueMoleculeCount", - id: "umi-count", - allowNA: false, - spec: { - name: "pl7.app/vdj/uniqueMoleculeCount", - valueType: "Long", - annotations: { - "pl7.app/min": "1", - "pl7.app/label": "Number of UMI", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "22500" - } - } - }, - { - column: "uniqueMoleculeFraction", - id: "umi-fraction", - allowNA: false, - spec: { - name: "pl7.app/vdj/uniqueMoleculeFraction", - valueType: "Double", - annotations: { - "pl7.app/min": "0", - "pl7.app/max": "1", - "pl7.app/label": "Fraction of UMI", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "22000" - } - } - }, - { - column: "targetSequences", - id: "n-seq-clonal-sequences", - naRegex: "", - allowNA: false, - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/sequence": "clonalSequence", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/type": "sequence", - "pl7.app/label": "Clonal sequences", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "18500" - } - } - }, - { - column: "targetQualities", - id: "clonal-qualities", - naRegex: "", - allowNA: false, - spec: { - name: "pl7.app/vdj/sequenceQuality", - valueType: "String", - domain: { - "pl7.app/vdj/quality": "clonalQuality" - }, - annotations: { - type: "quality string", - "pl7.app/label": "Clonal qualities", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "4000" - } - } - }, - { - column: "bestVHit", - id: "best-v-hit", - naRegex: "", - allowNA: false, - spec: { - name: "pl7.app/vdj/geneHit", - valueType: "String", - domain: { - "pl7.app/vdj/reference": "VGene" - }, - annotations: { - type: "V gene name", - "pl7.app/label": "Best V hit", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "21000" - } - } - }, - { - column: "bestDHit", - id: "best-d-hit", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/geneHit", - valueType: "String", - domain: { - "pl7.app/vdj/reference": "DGene" - }, - annotations: { - type: "D gene name", - "pl7.app/label": "Best D hit", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "20500" - } - } - }, - { - column: "bestJHit", - id: "best-j-hit", - naRegex: "region_not_covered", - allowNA: false, - spec: { - name: "pl7.app/vdj/geneHit", - valueType: "String", - domain: { - "pl7.app/vdj/reference": "JGene" - }, - annotations: { - type: "J gene name", - "pl7.app/label": "Best J hit", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "20000" - } - } - }, - { - column: "bestCHit", - id: "best-c-hit", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/geneHit", - valueType: "String", - domain: { - "pl7.app/vdj/reference": "CGene" - }, - annotations: { - type: "C gene name", - "pl7.app/label": "Best C hit", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "19500" - } - } - }, - { - column: "nSeqFR1", - id: "n-seq-fr1", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "FR1", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "FR1 nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "18000" - } - } - }, - { - column: "minQualFR1", - id: "min-qual-fr1", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequenceQuality", - valueType: "Int", - domain: { - "pl7.app/vdj/quality": "minQuality", - "pl7.app/vdj/feature": "FR1" - }, - annotations: { - "pl7.app/min": "0", - "pl7.app/max": "50", - "pl7.app/label": "Min quality FR1", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "3500" - } - } - }, - { - column: "nSeqFR2", - id: "n-seq-fr2", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "FR2", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "FR2 nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "17000" - } - } - }, - { - column: "minQualFR2", - id: "min-qual-fr2", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequenceQuality", - valueType: "Int", - domain: { - "pl7.app/vdj/quality": "minQuality", - "pl7.app/vdj/feature": "FR2" - }, - annotations: { - "pl7.app/min": "0", - "pl7.app/max": "50", - "pl7.app/label": "Min quality FR2", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "2500" - } - } - }, - { - column: "nSeqFR3", - id: "n-seq-fr3", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "FR3", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "FR3 nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "16000" - } - } - }, - { - column: "minQualFR3", - id: "min-qual-fr3", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequenceQuality", - valueType: "Int", - domain: { - "pl7.app/vdj/quality": "minQuality", - "pl7.app/vdj/feature": "FR3" - }, - annotations: { - "pl7.app/min": "0", - "pl7.app/max": "50", - "pl7.app/label": "Min quality FR3", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "1500" - } - } - }, - { - column: "nSeqFR4", - id: "n-seq-fr4", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "FR4", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "FR4 nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "15000" - } - } - }, - { - column: "minQualFR4", - id: "min-qual-fr4", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequenceQuality", - valueType: "Int", - domain: { - "pl7.app/vdj/quality": "minQuality", - "pl7.app/vdj/feature": "FR4" - }, - annotations: { - "pl7.app/min": "0", - "pl7.app/max": "50", - "pl7.app/label": "Min quality FR4", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "500" - } - } - }, - { - column: "nSeqCDR1", - id: "n-seq-cdr1", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "CDR1", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "CDR1 nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "17500" - } - } - }, - { - column: "minQualCDR1", - id: "min-qual-cdr1", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/minQualCDR1", - valueType: "Int", - domain: { - "pl7.app/vdj/quality": "minQuality", - "pl7.app/vdj/feature": "CDR1" - }, - annotations: { - "pl7.app/min": "0", - "pl7.app/max": "50", - "pl7.app/label": "Min quality CDR1", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "3000" - } - } - }, - { - column: "nSeqCDR2", - id: "n-seq-cdr2", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "CDR2", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "CDR2 nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "16500" - } - } - }, - { - column: "minQualCDR2", - id: "min-qual-cdr2", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequenceQuality", - valueType: "Int", - domain: { - "pl7.app/vdj/quality": "minQuality", - "pl7.app/vdj/feature": "CDR2" - }, - annotations: { - "pl7.app/min": "0", - "pl7.app/max": "50", - "pl7.app/label": "Min quality CDR2", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "2000" - } - } - }, - { - column: "nSeqCDR3", - id: "n-seq-cdr3", - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "CDR3", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "CDR3 nt", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "15500" - } - } - }, - { - column: "minQualCDR3", - id: "min-qual-cdr3", - naRegex: "region_not_covered", - spec: { - name: "pl7.app/vdj/sequenceQuality", - valueType: "Int", - domain: { - "pl7.app/vdj/quality": "minQuality", - "pl7.app/vdj/feature": "CDR3" - }, - annotations: { - "pl7.app/min": "0", - "pl7.app/max": "50", - "pl7.app/label": "Min quality CDR3", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "1000" - } - } - }, - { - column: "aaSeqFR1", - id: "aa-seq-fr1", - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "FR1", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "FR1 aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "14500" - } - } - }, - { - column: "aaSeqFR2", - id: "aa-seq-fr2", - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "FR2", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "FR2 aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "13500" - } - } - }, - { - column: "aaSeqFR3", - id: "aa-seq-fr3", - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "FR3", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "FR3 aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "12500" - } - } - }, - { - column: "aaSeqFR4", - id: "aa-seq-fr4", - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "FR4", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "FR4 aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "11500" - } - } - }, - { - column: "aaSeqCDR1", - id: "aa-seq-cdr1", - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "CDR1", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "CDR1 aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "14000" - } - } - }, - { - column: "aaSeqCDR2", - id: "aa-seq-cdr2", - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "CDR2", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "CDR2 aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "13000" - } - } - }, - { - column: "aaSeqCDR3", - id: "aa-seq-cdr3", - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "CDR3", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "CDR3 aa", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "12000" - } - } - }, - { - column: "nSeqImputedFR1", - id: "n-seq-imputed-fr1", - naRegex: "", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "FR1", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "FR1 imputed nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "11000" - } - } - }, - { - column: "nSeqImputedFR2", - id: "n-seq-imputed-fr2", - naRegex: "", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "FR2", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "FR2 imputed nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "10000" - } - } - }, - { - column: "nSeqImputedFR3", - id: "n-seq-imputed-fr3", - naRegex: "", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "FR3", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "FR3 imputed nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "9000" - } - } - }, - { - column: "nSeqImputedFR4", - id: "n-seq-imputed-fr4", - naRegex: "", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "FR4", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "FR4 imputed nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "8000" - } - } - }, - { - column: "nSeqImputedCDR1", - id: "n-seq-imputed-cdr1", - naRegex: "", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "CDR1", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "CDR1 imputed nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "10500" - } - } - }, - { - column: "nSeqImputedCDR2", - id: "n-seq-imputed-cdr2", - naRegex: "", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "CDR2", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "CDR2 imputed nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "9500" - } - } - }, - { - column: "nSeqImputedCDR3", - id: "n-seq-imputed-CDR3", - naRegex: "", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "CDR3", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "CDR3 imputed nt", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "8500" - } - } - }, - { - column: "aaSeqImputedFR1", - id: "aa-seq-imputed-fr1", - naRegex: "", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "FR1", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "FR1 imputed aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "7500" - } - } - }, - { - column: "aaSeqImputedFR2", - id: "aa-seq-imputed-fr2", - naRegex: "", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "FR2", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "FR2 imputed aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "6500" - } - } - }, - { - column: "aaSeqImputedFR3", - id: "aa-seq-imputed-fr3", - naRegex: "", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "FR3", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "FR3 imputed aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "5500" - } - } - }, - { - column: "aaSeqImputedFR4", - id: "aa-seq-imputed-fr4", - naRegex: "", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "FR4", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "FR4 imputed aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "4500" - } - } - }, - { - column: "aaSeqImputedCDR1", - id: "aa-seq-imputed-cdr1", - naRegex: "", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "CDR1", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "CDR1 imputed aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "7000" - } - } - }, - { - column: "aaSeqImputedCDR2", - id: "aa-seq-imputed-cdr2", - naRegex: "", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "CDR2", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "CDR2 imputed aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "6000" - } - } - }, - { - column: "aaSeqImputedCDR3", - id: "aa-seq-imputed-CDR3", - naRegex: "", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": "CDR3", - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": "CDR3 imputed aa", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "5000" - } - } - }, - { - column: "isotype", - id: "isotype", - naRegex: "", - spec: { - valueType: "String", - name: "pl7.app/vdj/isotype", - annotations: { - "pl7.app/label": "IG isotype", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "19000" - } - } - }, - { - column: "topChains", - id: "top-chains", - naRegex: "", - allowNA: false, - spec: { - valueType: "String", - name: "pl7.app/vdj/chain", - annotations: { - "pl7.app/label": "Chain", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "21500" - } - } - }, - { - column: "isProductive" + productiveFeature, - id: "is-productive-" + assemblingFeature, - allowNA: false, - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence/productive", - annotations: { - "pl7.app/label": "Productive", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "21400" - } - } - }, - { - column: "isOOF" + productiveFeature, - id: "is-oof-" + assemblingFeature, - allowNA: false, - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence/containsOOF", - annotations: { - "pl7.app/label": "Contains OOF", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "20" - } - } - }, - { - column: "hasStopsIn" + productiveFeature, - id: "has-stops-in-" + assemblingFeature, - allowNA: false, - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence/containsStopCodons", - annotations: { - "pl7.app/label": "Contains stop codons", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "10" - } - } - }, - { - column: "nSeqVRegionOfGermline", - id: "n-seq-vregion-germline", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "VRegion", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "V germline", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "400" - } - } - }, - { - column: "nSeqDRegionOfGermline", - id: "n-seq-dregion-germline", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "DRegion", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "D germline", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "300" - } - } - }, - { - column: "nSeqJRegionOfGermline", - id: "n-seq-jregion-germline", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": "JRegion", - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": "J germline", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "200" - } - } - } - ], - storageFormat: "Binary", - partitionKeyLength: 0 - } - if addColumns { - featureColumns := [{ - column: "nSeq" + assemblingFeature, - id: "n-seq-" + assemblingFeature, - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": assemblingFeature, - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": assemblingFeature + " nt", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "11000" - } - } - }, - { - column: "aaSeq" + assemblingFeature, - id: "aa-seq-" + assemblingFeature, - naRegex: "region_not_covered", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": assemblingFeature, - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "false", - "pl7.app/label": assemblingFeature + " aa", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "10500" - } - } - }] - featureColumnsImputed := [{ - column: "nSeqImputed" + assemblingFeature, - id: "n-seq-imputed-" + assemblingFeature, - naRegex: "", - spec: { - name: "pl7.app/vdj/sequence", - valueType: "String", - domain: { - "pl7.app/vdj/feature": assemblingFeature, - "pl7.app/alphabet": "nucleotide" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": assemblingFeature + " imputed nt", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "4000" - } - } - }, - { - column: "aaSeqImputed" + assemblingFeature, - id: "aa-seq-imputed-" + assemblingFeature, - naRegex: "", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence", - domain: { - "pl7.app/vdj/feature": assemblingFeature, - "pl7.app/alphabet": "aminoacid" - }, - annotations: { - "pl7.app/vdj/imputed": "true", - "pl7.app/label": assemblingFeature + " imputed aa", - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": "3500" - } - } - }] - mutationColumns := [{ - column: "nMutations" + mutationVFeature, - id: "n-mutations-" + assemblingFeature, - allowNA: true, - naRegex: "None", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence/nMutations", - annotations: { - "pl7.app/label": "Nt mutations in V gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "50" - } - } - }, - { - column: "aaMutations" + mutationVFeature, - id: "aa-mutations-" + assemblingFeature, - allowNA: true, - naRegex: "None", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence/aaMutations", - annotations: { - "pl7.app/label": "AA mutations in V gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "60" - } - } - }, - { - column: "nMutationsFR4", - id: "n-mutations-FR4", - allowNA: true, - naRegex: "None", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence/nMutations", - annotations: { - "pl7.app/label": "Nt mutations in J gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "30" - } - } - }, - { - column: "aaMutationsFR4", - id: "aa-mutations-FR4", - allowNA: true, - naRegex: "None", - spec: { - valueType: "String", - name: "pl7.app/vdj/sequence/aaMutations", - annotations: { - "pl7.app/label": "AA mutations in J gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "40" - } - } - }, - { - column: "nMutationsCount" + mutationVFeature, - id: "n-mutations-count-" + assemblingFeature, - allowNA: true, - naRegex: "region_not_covered", - spec: { - valueType: "Int", - name: "pl7.app/vdj/sequence/nMutationsCount", - annotations: { - "pl7.app/label": "Nt mutations count in V gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "70" - } - } - }, - { - column: "aaMutationsCount" + mutationVFeature, - id: "aa-mutations-count-" + assemblingFeature, - allowNA: true, - naRegex: "region_not_covered", - spec: { - valueType: "Int", - name: "pl7.app/vdj/sequence/aaMutationsCount", - annotations: { - "pl7.app/label": "AA mutations count in V gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "80" - } - } - }, - { - column: "nMutationsRate" + mutationVFeature, - id: "n-mutations-rate-" + assemblingFeature, - allowNA: true, - naRegex: "region_not_covered", - spec: { - valueType: "Double", - name: "pl7.app/vdj/sequence/nMutationsRate", - annotations: { - "pl7.app/label": "Nt mutations rate in V gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "90" - } - } - }, - { - column: "aaMutationsRate" + mutationVFeature, - id: "aa-mutations-rate-" + assemblingFeature, - allowNA: true, - naRegex: "region_not_covered", - spec: { - valueType: "Double", - name: "pl7.app/vdj/sequence/aaMutationsRate", - annotations: { - "pl7.app/label": "AA mutations rate in V gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "100" - } - } - }, { - column: "nMutationsCountFR4", - id: "n-mutations-count-fr4", - allowNA: true, - naRegex: "region_not_covered", - spec: { - valueType: "Int", - name: "pl7.app/vdj/sequence/nMutationsCount", - annotations: { - "pl7.app/label": "Nt mutations count in J gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "60" - } - } - }, - { - column: "aaMutationsCountFR4", - id: "aa-mutations-count-fr4", - allowNA: true, - naRegex: "region_not_covered", - spec: { - valueType: "Int", - name: "pl7.app/vdj/sequence/aaMutationsCount", - annotations: { - "pl7.app/label": "AA mutations count in J gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "50" - } - } - }, - { - column: "nMutationsRateFR4", - id: "n-mutations-rate-fr4", - allowNA: true, - naRegex: "region_not_covered", - spec: { - valueType: "Double", - name: "pl7.app/vdj/sequence/nMutationsRate", - annotations: { - "pl7.app/label": "Nt mutations rate in J gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "40" - } - } - }, - { - column: "aaMutationsRateFR4", - id: "aa-mutations-rate-fr4", - allowNA: true, - naRegex: "region_not_covered", - spec: { - valueType: "Double", - name: "pl7.app/vdj/sequence/aaMutationsRate", - annotations: { - "pl7.app/label": "AA mutations rate in J gene", - "pl7.app/table/visibility": "optional", - "pl7.app/table/orderPriority": "30" - } - } - }] - if imputed { - cols.columns = cols.columns + featureColumns + featureColumnsImputed - } else { - cols.columns = cols.columns + featureColumns + mutationColumns - } + } + } + cols := { + axes: [ + { + column: "cloneId", + spec: { + name: "pl7.app/vdj/cloneId", + type: "Long", + domain: { + "pl7.app/blockId": blockId + }, + annotations: { + "pl7.app/min": "0", + "pl7.app/label": "Clone id", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "90000" + } + } + } + ], + columns: [ + { + column: "cellGroup", + id: "cell-group", + naRegex: "undefined|contamination", + allowNA: true, + spec: { + name: "pl7.app/vdj/cellGroup", + valueType: "Long", + annotations: { + "pl7.app/min": "0", + "pl7.app/label": "Cell group number", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "24000" + } + } + }, + { + column: "readCount", + id: "read-count", + allowNA: false, + spec: { + name: "pl7.app/vdj/readCount", + valueType: "Long", + annotations: { + "pl7.app/min": "1", + "pl7.app/label": "Number Of Reads", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "23500" + } + } + }, + { + column: "readFraction", + id: "read-fraction", + allowNA: false, + spec: { + name: "pl7.app/vdj/readFraction", + valueType: "Double", + annotations: { + "pl7.app/min": "0", + "pl7.app/max": "1", + "pl7.app/label": "Fraction of reads", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "23000" + } + } + }, + { + column: "uniqueMoleculeCount", + id: "umi-count", + allowNA: false, + spec: { + name: "pl7.app/vdj/uniqueMoleculeCount", + valueType: "Long", + annotations: { + "pl7.app/min": "1", + "pl7.app/label": "Number of UMI", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "22500" + } + } + }, + { + column: "uniqueMoleculeFraction", + id: "umi-fraction", + allowNA: false, + spec: { + name: "pl7.app/vdj/uniqueMoleculeFraction", + valueType: "Double", + annotations: { + "pl7.app/min": "0", + "pl7.app/max": "1", + "pl7.app/label": "Fraction of UMI", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "22000" + } + } + }, + { + column: "targetSequences", + id: "n-seq-clonal-sequences", + naRegex: "", + allowNA: false, + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/sequence": "clonalSequence", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/type": "sequence", + "pl7.app/label": "Clonal sequences", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "18500" + } + } + }, + { + column: "targetQualities", + id: "clonal-qualities", + naRegex: "", + allowNA: false, + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "String", + domain: { + "pl7.app/vdj/quality": "clonalQuality" + }, + annotations: { + type: "quality string", + "pl7.app/label": "Clonal qualities", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "4000" + } + } + }, + { + column: "bestVHit", + id: "best-v-hit", + naRegex: "", + allowNA: false, + spec: { + name: "pl7.app/vdj/geneHit", + valueType: "String", + domain: { + "pl7.app/vdj/reference": "VGene" + }, + annotations: { + type: "V gene name", + "pl7.app/label": "Best V hit", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "21000" + } + } + }, + { + column: "bestDHit", + id: "best-d-hit", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/geneHit", + valueType: "String", + domain: { + "pl7.app/vdj/reference": "DGene" + }, + annotations: { + type: "D gene name", + "pl7.app/label": "Best D hit", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "20500" + } + } + }, + { + column: "bestJHit", + id: "best-j-hit", + naRegex: "region_not_covered", + allowNA: false, + spec: { + name: "pl7.app/vdj/geneHit", + valueType: "String", + domain: { + "pl7.app/vdj/reference": "JGene" + }, + annotations: { + type: "J gene name", + "pl7.app/label": "Best J hit", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "20000" + } + } + }, + { + column: "bestCHit", + id: "best-c-hit", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/geneHit", + valueType: "String", + domain: { + "pl7.app/vdj/reference": "CGene" + }, + annotations: { + type: "C gene name", + "pl7.app/label": "Best C hit", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "19500" + } + } + }, + { + column: "nSeqFR1", + id: "n-seq-fr1", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "FR1", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "FR1 nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "18000" + } + } + }, + { + column: "minQualFR1", + id: "min-qual-fr1", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { + "pl7.app/vdj/quality": "minQuality", + "pl7.app/vdj/feature": "FR1" + }, + annotations: { + "pl7.app/min": "0", + "pl7.app/max": "50", + "pl7.app/label": "Min quality FR1", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "3500" + } + } + }, + { + column: "nSeqFR2", + id: "n-seq-fr2", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "FR2", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "FR2 nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "17000" + } + } + }, + { + column: "minQualFR2", + id: "min-qual-fr2", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { + "pl7.app/vdj/quality": "minQuality", + "pl7.app/vdj/feature": "FR2" + }, + annotations: { + "pl7.app/min": "0", + "pl7.app/max": "50", + "pl7.app/label": "Min quality FR2", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "2500" + } + } + }, + { + column: "nSeqFR3", + id: "n-seq-fr3", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "FR3", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "FR3 nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "16000" + } + } + }, + { + column: "minQualFR3", + id: "min-qual-fr3", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { + "pl7.app/vdj/quality": "minQuality", + "pl7.app/vdj/feature": "FR3" + }, + annotations: { + "pl7.app/min": "0", + "pl7.app/max": "50", + "pl7.app/label": "Min quality FR3", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "1500" + } + } + }, + { + column: "nSeqFR4", + id: "n-seq-fr4", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "FR4", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "FR4 nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "15000" + } + } + }, + { + column: "minQualFR4", + id: "min-qual-fr4", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { + "pl7.app/vdj/quality": "minQuality", + "pl7.app/vdj/feature": "FR4" + }, + annotations: { + "pl7.app/min": "0", + "pl7.app/max": "50", + "pl7.app/label": "Min quality FR4", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "500" + } + } + }, + { + column: "nSeqCDR1", + id: "n-seq-cdr1", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "CDR1", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "CDR1 nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "17500" + } + } + }, + { + column: "minQualCDR1", + id: "min-qual-cdr1", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/minQualCDR1", + valueType: "Int", + domain: { + "pl7.app/vdj/quality": "minQuality", + "pl7.app/vdj/feature": "CDR1" + }, + annotations: { + "pl7.app/min": "0", + "pl7.app/max": "50", + "pl7.app/label": "Min quality CDR1", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "3000" + } + } + }, + { + column: "nSeqCDR2", + id: "n-seq-cdr2", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "CDR2", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "CDR2 nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "16500" + } + } + }, + { + column: "minQualCDR2", + id: "min-qual-cdr2", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { + "pl7.app/vdj/quality": "minQuality", + "pl7.app/vdj/feature": "CDR2" + }, + annotations: { + "pl7.app/min": "0", + "pl7.app/max": "50", + "pl7.app/label": "Min quality CDR2", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "2000" + } + } + }, + { + column: "nSeqCDR3", + id: "n-seq-cdr3", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "CDR3", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "CDR3 nt", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "15500" + } + } + }, + { + column: "minQualCDR3", + id: "min-qual-cdr3", + naRegex: "region_not_covered", + spec: { + name: "pl7.app/vdj/sequenceQuality", + valueType: "Int", + domain: { + "pl7.app/vdj/quality": "minQuality", + "pl7.app/vdj/feature": "CDR3" + }, + annotations: { + "pl7.app/min": "0", + "pl7.app/max": "50", + "pl7.app/label": "Min quality CDR3", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "1000" + } + } + }, + { + column: "aaSeqFR1", + id: "aa-seq-fr1", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "FR1", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "FR1 aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "14500" + } + } + }, + { + column: "aaSeqFR2", + id: "aa-seq-fr2", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "FR2", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "FR2 aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "13500" + } + } + }, + { + column: "aaSeqFR3", + id: "aa-seq-fr3", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "FR3", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "FR3 aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "12500" + } + } + }, + { + column: "aaSeqFR4", + id: "aa-seq-fr4", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "FR4", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "FR4 aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "11500" + } + } + }, + { + column: "aaSeqCDR1", + id: "aa-seq-cdr1", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "CDR1", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "CDR1 aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "14000" + } + } + }, + { + column: "aaSeqCDR2", + id: "aa-seq-cdr2", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "CDR2", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "CDR2 aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "13000" + } + } + }, + { + column: "aaSeqCDR3", + id: "aa-seq-cdr3", + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "CDR3", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "CDR3 aa", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "12000" + } + } + }, + { + column: "nSeqImputedFR1", + id: "n-seq-imputed-fr1", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "FR1", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "FR1 imputed nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "11000" + } + } + }, + { + column: "nSeqImputedFR2", + id: "n-seq-imputed-fr2", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "FR2", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "FR2 imputed nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "10000" + } + } + }, + { + column: "nSeqImputedFR3", + id: "n-seq-imputed-fr3", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "FR3", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "FR3 imputed nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "9000" + } + } + }, + { + column: "nSeqImputedFR4", + id: "n-seq-imputed-fr4", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "FR4", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "FR4 imputed nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "8000" + } + } + }, + { + column: "nSeqImputedCDR1", + id: "n-seq-imputed-cdr1", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "CDR1", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "CDR1 imputed nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "10500" + } + } + }, + { + column: "nSeqImputedCDR2", + id: "n-seq-imputed-cdr2", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "CDR2", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "CDR2 imputed nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "9500" + } + } + }, + { + column: "nSeqImputedCDR3", + id: "n-seq-imputed-CDR3", + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "CDR3", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "CDR3 imputed nt", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "8500" + } + } + }, + { + column: "aaSeqImputedFR1", + id: "aa-seq-imputed-fr1", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "FR1", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "FR1 imputed aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "7500" + } + } + }, + { + column: "aaSeqImputedFR2", + id: "aa-seq-imputed-fr2", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "FR2", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "FR2 imputed aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "6500" + } + } + }, + { + column: "aaSeqImputedFR3", + id: "aa-seq-imputed-fr3", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "FR3", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "FR3 imputed aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "5500" + } + } + }, + { + column: "aaSeqImputedFR4", + id: "aa-seq-imputed-fr4", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "FR4", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "FR4 imputed aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "4500" + } + } + }, + { + column: "aaSeqImputedCDR1", + id: "aa-seq-imputed-cdr1", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "CDR1", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "CDR1 imputed aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "7000" + } + } + }, + { + column: "aaSeqImputedCDR2", + id: "aa-seq-imputed-cdr2", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "CDR2", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "CDR2 imputed aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "6000" + } + } + }, + { + column: "aaSeqImputedCDR3", + id: "aa-seq-imputed-CDR3", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": "CDR3", + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": "CDR3 imputed aa", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "5000" + } + } + }, + { + column: "isotype", + id: "isotype", + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/isotype", + annotations: { + "pl7.app/label": "IG isotype", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "19000" + } + } + }, + { + column: "topChains", + id: "top-chains", + naRegex: "", + allowNA: false, + spec: { + valueType: "String", + name: "pl7.app/vdj/chain", + annotations: { + "pl7.app/label": "Chain", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "21500" + } + } + }, + { + column: "isProductive" + productiveFeature, + id: "is-productive-" + assemblingFeature, + allowNA: false, + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/productive", + annotations: { + "pl7.app/label": "Productive", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "21400" + } + } + }, + { + column: "isOOF" + productiveFeature, + id: "is-oof-" + assemblingFeature, + allowNA: false, + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/containsOOF", + annotations: { + "pl7.app/label": "Contains OOF", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "20" + } + } + }, + { + column: "hasStopsIn" + productiveFeature, + id: "has-stops-in-" + assemblingFeature, + allowNA: false, + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/containsStopCodons", + annotations: { + "pl7.app/label": "Contains stop codons", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "10" + } + } + }, + { + column: "nSeqVRegionOfGermline", + id: "n-seq-vregion-germline", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "VRegion", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "V germline", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "400" + } + } + }, + { + column: "nSeqDRegionOfGermline", + id: "n-seq-dregion-germline", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "DRegion", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "D germline", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "300" + } + } + }, + { + column: "nSeqJRegionOfGermline", + id: "n-seq-jregion-germline", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": "JRegion", + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": "J germline", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "200" + } + } + } + ], + storageFormat: "Binary", + partitionKeyLength: 0 + } + if addColumns { + featureColumns := [{ + column: "nSeq" + assemblingFeature, + id: "n-seq-" + assemblingFeature, + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": assemblingFeature, + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": assemblingFeature + " nt", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "11000" + } + } + }, + { + column: "aaSeq" + assemblingFeature, + id: "aa-seq-" + assemblingFeature, + naRegex: "region_not_covered", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": assemblingFeature, + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "false", + "pl7.app/label": assemblingFeature + " aa", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "10500" + } + } + }] + featureColumnsImputed := [{ + column: "nSeqImputed" + assemblingFeature, + id: "n-seq-imputed-" + assemblingFeature, + naRegex: "", + spec: { + name: "pl7.app/vdj/sequence", + valueType: "String", + domain: { + "pl7.app/vdj/feature": assemblingFeature, + "pl7.app/alphabet": "nucleotide" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": assemblingFeature + " imputed nt", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "4000" + } + } + }, + { + column: "aaSeqImputed" + assemblingFeature, + id: "aa-seq-imputed-" + assemblingFeature, + naRegex: "", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence", + domain: { + "pl7.app/vdj/feature": assemblingFeature, + "pl7.app/alphabet": "aminoacid" + }, + annotations: { + "pl7.app/vdj/imputed": "true", + "pl7.app/label": assemblingFeature + " imputed aa", + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "3500" + } + } + }] + mutationColumns := [{ + column: "nMutations" + mutationVFeature, + id: "n-mutations-" + assemblingFeature, + allowNA: true, + naRegex: "None", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/nMutations", + annotations: { + "pl7.app/label": "Nt mutations in V gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "50" + } + } + }, + { + column: "aaMutations" + mutationVFeature, + id: "aa-mutations-" + assemblingFeature, + allowNA: true, + naRegex: "None", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/aaMutations", + annotations: { + "pl7.app/label": "AA mutations in V gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "60" + } + } + }, + { + column: "nMutationsFR4", + id: "n-mutations-FR4", + allowNA: true, + naRegex: "None", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/nMutations", + annotations: { + "pl7.app/label": "Nt mutations in J gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "30" + } + } + }, + { + column: "aaMutationsFR4", + id: "aa-mutations-FR4", + allowNA: true, + naRegex: "None", + spec: { + valueType: "String", + name: "pl7.app/vdj/sequence/aaMutations", + annotations: { + "pl7.app/label": "AA mutations in J gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "40" + } + } + }, + { + column: "nMutationsCount" + mutationVFeature, + id: "n-mutations-count-" + assemblingFeature, + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Int", + name: "pl7.app/vdj/sequence/nMutationsCount", + annotations: { + "pl7.app/label": "Nt mutations count in V gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "70" + } + } + }, + { + column: "aaMutationsCount" + mutationVFeature, + id: "aa-mutations-count-" + assemblingFeature, + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Int", + name: "pl7.app/vdj/sequence/aaMutationsCount", + annotations: { + "pl7.app/label": "AA mutations count in V gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "80" + } + } + }, + { + column: "nMutationsRate" + mutationVFeature, + id: "n-mutations-rate-" + assemblingFeature, + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Double", + name: "pl7.app/vdj/sequence/nMutationsRate", + annotations: { + "pl7.app/label": "Nt mutations rate in V gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "90" + } + } + }, + { + column: "aaMutationsRate" + mutationVFeature, + id: "aa-mutations-rate-" + assemblingFeature, + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Double", + name: "pl7.app/vdj/sequence/aaMutationsRate", + annotations: { + "pl7.app/label": "AA mutations rate in V gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "100" + } + } + }, { + column: "nMutationsCountFR4", + id: "n-mutations-count-fr4", + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Int", + name: "pl7.app/vdj/sequence/nMutationsCount", + annotations: { + "pl7.app/label": "Nt mutations count in J gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "60" + } + } + }, + { + column: "aaMutationsCountFR4", + id: "aa-mutations-count-fr4", + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Int", + name: "pl7.app/vdj/sequence/aaMutationsCount", + annotations: { + "pl7.app/label": "AA mutations count in J gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "50" + } + } + }, + { + column: "nMutationsRateFR4", + id: "n-mutations-rate-fr4", + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Double", + name: "pl7.app/vdj/sequence/nMutationsRate", + annotations: { + "pl7.app/label": "Nt mutations rate in J gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "40" + } + } + }, + { + column: "aaMutationsRateFR4", + id: "aa-mutations-rate-fr4", + allowNA: true, + naRegex: "region_not_covered", + spec: { + valueType: "Double", + name: "pl7.app/vdj/sequence/aaMutationsRate", + annotations: { + "pl7.app/label": "AA mutations rate in J gene", + "pl7.app/table/visibility": "optional", + "pl7.app/table/orderPriority": "30" + } + } + }] + if imputed { + cols.columns = cols.columns + featureColumns + featureColumnsImputed + } else { + cols.columns = cols.columns + featureColumns + mutationColumns + } - cellTagsList := [] - label := undefined - priority := 100000 - if len(cellTags) > 0 { - for tag in cellTags { - if tag == "CELL" { - label = "Cell tag" - } else { - label = text.to_title(tag[:4]) + " " + text.to_lower(tag[4:]) - } - cols.axes += [ - { - column: "tagValue" + tag, - naRegex: "", - spec: { - name: "pl7.app/vdj/tagValueCELL", - type: "String", - annotations: { - "pl7.app/label": label, - "pl7.app/table/visibility": "default", - "pl7.app/table/orderPriority": string(priority) - } - } - } - ] - priority -= 1 - } - } - } + cellTagsList := [] + label := undefined + priority := 100000 + if len(cellTags) > 0 { + for tag in cellTags { + if tag == "CELL" { + label = "Cell tag" + } else { + label = text.to_title(tag[:4]) + " " + text.to_lower(tag[4:]) + } + cols.axes += [ + { + column: "tagValue" + tag, + naRegex: "", + spec: { + name: "pl7.app/vdj/tagValueCELL", + type: "String", + annotations: { + "pl7.app/label": label, + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": string(priority) + } + } + } + ] + priority -= 1 + } + } + } return cols } From f997bab1962c9a99961dd35570d24079045a77f8 Mon Sep 17 00:00:00 2001 From: Dmitry Bolotin Date: Wed, 15 Jan 2025 21:13:12 +0200 Subject: [PATCH 4/4] WIP --- pnpm-lock.yaml | 41 +++++------------ pnpm-workspace.yaml | 1 + workflow/package.json | 1 + .../src/calculate-pfconv-params.tpl.tengo | 46 +++++++++++++++---- workflow/src/pfconv_params.lib.tengo | 6 --- 5 files changed, 51 insertions(+), 44 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7d5a6c7..23a5554 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,6 +24,9 @@ catalogs: '@platforma-open/milaboratories.software-mixcr': specifier: 4.7.0-133-develop version: 4.7.0-133-develop + '@platforma-open/milaboratories.software-ptransform': + specifier: ^1.1.0 + version: 1.1.0 '@platforma-open/milaboratories.software-small-binaries': specifier: ^1.15.6 version: 1.15.6 @@ -45,9 +48,6 @@ catalogs: '@platforma-sdk/workflow-tengo': specifier: ^2.9.6 version: 2.9.6 - '@rollup/plugin-url': - specifier: ^8.0.2 - version: 8.0.2 '@vitejs/plugin-vue': specifier: ^5.2.1 version: 5.2.1 @@ -207,9 +207,6 @@ importers: specifier: 'catalog:' version: 3.23.8 devDependencies: - '@rollup/plugin-url': - specifier: 'catalog:' - version: 8.0.2(rollup@4.24.0) '@vitejs/plugin-vue': specifier: 'catalog:' version: 5.2.1(vite@6.0.7(@types/node@22.7.5)(yaml@2.6.1))(vue@3.5.13(typescript@5.5.4)) @@ -237,6 +234,9 @@ importers: '@platforma-open/milaboratories.software-mixcr': specifier: 'catalog:' version: 4.7.0-133-develop + '@platforma-open/milaboratories.software-ptransform': + specifier: 'catalog:' + version: 1.1.0 '@platforma-open/milaboratories.software-small-binaries': specifier: 'catalog:' version: 1.15.6 @@ -1099,6 +1099,9 @@ packages: '@platforma-open/milaboratories.software-mixcr@4.7.0-133-develop': resolution: {integrity: sha512-b7jnFwjbO+tmlCEstILbTqVYYF3a5tYk2albcWNsfrJW8oP+of1KIBVCKMKVBr0UyshmsFjOLtLyrtLEa/ObGQ==} + '@platforma-open/milaboratories.software-ptransform@1.1.0': + resolution: {integrity: sha512-iX4guha/vuxP5VCo9CTeDTDih7P94cEgF2stwgGJlMWsijNyu/fq6IjWW29KLvjUKqVP1Wbd0U9NJhNmJkMBvw==} + '@platforma-open/milaboratories.software-small-binaries.guided-command@1.0.4': resolution: {integrity: sha512-LD8XQDnR+L9oRD7JXE0VWGmv1/0cm+J71flrwBUWeIbuaenPC8Nsza8oy7JjLJ8AX+bm8XAyyJALuqBBqkL95Q==} @@ -1210,15 +1213,6 @@ packages: '@protobufjs/utf8@1.1.0': resolution: {integrity: sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==} - '@rollup/plugin-url@8.0.2': - resolution: {integrity: sha512-5yW2LP5NBEgkvIRSSEdJkmxe5cUNZKG3eenKtfJvSkxVm/xTTu7w+ayBtNwhozl1ZnTUCU0xFaRQR+cBl2H7TQ==} - engines: {node: '>=14.0.0'} - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - '@rollup/pluginutils@5.1.3': resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==} engines: {node: '>=14.0.0'} @@ -2503,11 +2497,6 @@ packages: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} - mime@3.0.0: - resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} - engines: {node: '>=10.0.0'} - hasBin: true - mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} @@ -4563,6 +4552,8 @@ snapshots: '@platforma-open/milaboratories.software-mixcr@4.7.0-133-develop': {} + '@platforma-open/milaboratories.software-ptransform@1.1.0': {} + '@platforma-open/milaboratories.software-small-binaries.guided-command@1.0.4': {} '@platforma-open/milaboratories.software-small-binaries.hello-world-py@1.0.4': {} @@ -4734,14 +4725,6 @@ snapshots: '@protobufjs/utf8@1.1.0': {} - '@rollup/plugin-url@8.0.2(rollup@4.24.0)': - dependencies: - '@rollup/pluginutils': 5.1.3(rollup@4.24.0) - make-dir: 3.1.0 - mime: 3.0.0 - optionalDependencies: - rollup: 4.24.0 - '@rollup/pluginutils@5.1.3(rollup@4.24.0)': dependencies: '@types/estree': 1.0.6 @@ -6220,8 +6203,6 @@ snapshots: dependencies: mime-db: 1.52.0 - mime@3.0.0: {} - mimic-fn@2.1.0: {} minimatch@3.1.2: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 11f0e33..1b6f1f4 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -18,6 +18,7 @@ catalog: '@milaboratories/software-pframes-conv': 2.1.5 '@platforma-open/milaboratories.software-small-binaries': ^1.15.6 '@platforma-open/milaboratories.software-mixcr': 4.7.0-133-develop + '@platforma-open/milaboratories.software-ptransform': ^1.1.0 'vue': ^3.5.13 'vue-tsc': ^2.2.0 diff --git a/workflow/package.json b/workflow/package.json index 11f6a03..daa9a5a 100644 --- a/workflow/package.json +++ b/workflow/package.json @@ -16,6 +16,7 @@ "@milaboratories/software-pframes-conv": "catalog:", "@platforma-open/milaboratories.software-small-binaries": "catalog:", "@platforma-open/milaboratories.software-mixcr": "catalog:", + "@platforma-open/milaboratories.software-ptransform": "catalog:", "@platforma-sdk/test": "catalog:", "vitest": "catalog:", "typescript": "catalog:" diff --git a/workflow/src/calculate-pfconv-params.tpl.tengo b/workflow/src/calculate-pfconv-params.tpl.tengo index b852d1a..68b4bc6 100644 --- a/workflow/src/calculate-pfconv-params.tpl.tengo +++ b/workflow/src/calculate-pfconv-params.tpl.tengo @@ -1,6 +1,7 @@ // calculate-pfconv-params self := import("@platforma-sdk/workflow-tengo:tpl") // validation := import("@platforma-sdk/workflow-tengo:validation") +maps := import("@platforma-sdk/workflow-tengo:maps") pfconvParamsLib := import(":pfconv_params") getFeature := import(":check-feature") @@ -18,6 +19,15 @@ json := import("json") self.defineOutputs("params", "featureParams") +toCombinedDomainKey := func(spec) { + result := [spec.name] + // getKeys sort keys + for domain in maps.getKeys(spec.domain) { + result = append(result, [domain, spec.domain[domain]]) + } + return result +} + self.body(func(inputs) { blockId := inputs.blockId @@ -77,7 +87,7 @@ self.body(func(inputs) { columnsList += ["uniqueMoleculeCount", "uniqueMoleculeFraction", "readCount", "readFraction"] } - //filter columns by fieldsToColumns + // filter columns by fieldsToColumns for field in preset.exportClones.fields { if !is_undefined(fieldsToColumns[field.field]) { columnsList = append(columnsList, fieldsToColumns[field.field]) @@ -100,11 +110,9 @@ self.body(func(inputs) { // add columns with covered feature sequences if assemblingFeature != "CDR3" { + columnsList += ["nSeq"+assemblingFeature, "aaSeq"+assemblingFeature] if imputed { - columnsList += ["nSeqImputed"+assemblingFeature, "aaSeqImputed"+assemblingFeature, - "nSeq"+assemblingFeature, "aaSeq"+assemblingFeature] - } else { - columnsList += ["nSeq"+assemblingFeature, "aaSeq"+assemblingFeature] + columnsList += ["nSeqImputed"+assemblingFeature, "aaSeqImputed"+assemblingFeature] } } @@ -127,10 +135,31 @@ self.body(func(inputs) { // filter pfconvParams by column name and get a list of fields from it pfconvParams := pfconvParamsLib.getColumns(blockId, {assemblingFeature: assemblingFeature, imputed: imputed, cellTags: specs.cellTags}) + // column (i.e. in tsv) -> pfconv params + columnsMap := {} + axesMap := {} + for col in pfconvParams.columns { + columnsMap[col.column] = col + } + for axis in pfconvParams.axes { + axesMap[axis.column] = axis + } + columns := [] for col in columnsList { - getColumn := filter(pfconvParams.columns, func(item) { return item.column == col}) - columns += getColumn + // getColumn := filter(pfconvParams.columns, func(item) { return item.column == col}) + columns += [columnsMap[col]] // getColumn + } + + clonotypeKeyColumns := ["nSeq"+assemblingFeature] + if specs.splitByV { + clonotypeKeyColumns = append(clonotypeKeyColumns, "bestVHit") + } + if specs.splitByJ { + clonotypeKeyColumns = append(clonotypeKeyColumns, "bestJHit") + } + if specs.splitByC { + clonotypeKeyColumns = append(clonotypeKeyColumns, "bestCHit") } // if UMI in data make visibility of "readCount" and "readFraction" columns optional @@ -147,7 +176,7 @@ self.body(func(inputs) { // create axes fields axes := [] if len(specs.cellTags) == 0 { - axes = filter(pfconvParams.axes, func(item) { return item.column == "cloneId" }) + axes = [axesMap["cloneId"]] // filter(pfconvParams.axes, func(item) { return item.column == "cloneId" }) } else { axes = pfconvParams.axes } @@ -159,6 +188,7 @@ self.body(func(inputs) { storageFormat: "Binary", partitionKeyLength: 0 }, + clonotypeKeyColumns: clonotypeKeyColumns, featureParams: { assemblingFeature: assemblingFeature, imputed: imputed diff --git a/workflow/src/pfconv_params.lib.tengo b/workflow/src/pfconv_params.lib.tengo index c5dfc39..7384639 100644 --- a/workflow/src/pfconv_params.lib.tengo +++ b/workflow/src/pfconv_params.lib.tengo @@ -14,12 +14,6 @@ getColumns := func(blockId, featureParams) { addColumns = false } - cellTagsList := [] - if len(cellTags) > 0 { - for tag in cellTags { - - } - } cols := { axes: [ {