@platforma-open/milaboratories.immune-assay-data.model 1.5.1 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +5 -5
- package/.turbo/turbo-lint.log +1 -1
- package/.turbo/turbo-type-check.log +1 -1
- package/CHANGELOG.md +14 -0
- package/dist/bundle.js +703 -28
- package/dist/bundle.js.map +1 -1
- package/dist/index.cjs +62 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +46 -21
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +63 -3
- package/dist/index.js.map +1 -1
- package/dist/label.cjs +22 -0
- package/dist/label.cjs.map +1 -0
- package/dist/label.d.ts +7 -0
- package/dist/label.d.ts.map +1 -0
- package/dist/label.js +20 -0
- package/dist/label.js.map +1 -0
- package/dist/model.json +1 -1
- package/package.json +5 -5
- package/src/index.ts +90 -1
- package/src/label.ts +27 -0
package/dist/index.cjs
CHANGED
|
@@ -1,10 +1,33 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var model$1 = require('@platforma-sdk/model');
|
|
4
|
+
var label = require('./label.cjs');
|
|
4
5
|
|
|
6
|
+
function getColumns(ctx) {
|
|
7
|
+
const anchor = ctx.args.datasetRef;
|
|
8
|
+
if (anchor === undefined)
|
|
9
|
+
return undefined;
|
|
10
|
+
const anchorSpec = ctx.resultPool.getPColumnSpecByRef(anchor);
|
|
11
|
+
if (anchorSpec === undefined)
|
|
12
|
+
return undefined;
|
|
13
|
+
// all clone properties
|
|
14
|
+
const props = (ctx.resultPool.getAnchoredPColumns({ main: anchor }, [
|
|
15
|
+
{
|
|
16
|
+
axes: [{ anchor: 'main', idx: 1 }],
|
|
17
|
+
},
|
|
18
|
+
]) ?? [])
|
|
19
|
+
.filter((p) => p.spec.annotations?.['pl7.app/sequence/isAnnotation'] !== 'true');
|
|
20
|
+
return {
|
|
21
|
+
props: props,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
5
24
|
const model = model$1.BlockModel.create()
|
|
6
25
|
.withArgs({
|
|
7
|
-
defaultBlockLabel:
|
|
26
|
+
defaultBlockLabel: label.getDefaultBlockLabel({
|
|
27
|
+
similarityType: 'alignment-score',
|
|
28
|
+
identity: 0.9,
|
|
29
|
+
coverageThreshold: 0.95,
|
|
30
|
+
}),
|
|
8
31
|
customBlockLabel: '',
|
|
9
32
|
settings: {
|
|
10
33
|
coverageThreshold: 0.95, // default value matching MMseqs2 default
|
|
@@ -15,6 +38,7 @@ const model = model$1.BlockModel.create()
|
|
|
15
38
|
})
|
|
16
39
|
.withUiState({
|
|
17
40
|
tableState: model$1.createPlDataTableStateV2(),
|
|
41
|
+
alignmentModel: {},
|
|
18
42
|
})
|
|
19
43
|
.argsValid((ctx) => ctx.args.datasetRef !== undefined
|
|
20
44
|
&& ctx.args.fileHandle !== undefined
|
|
@@ -79,6 +103,42 @@ const model = model$1.BlockModel.create()
|
|
|
79
103
|
if (cols === undefined)
|
|
80
104
|
return undefined;
|
|
81
105
|
return model$1.createPlDataTableV2(ctx, cols, ctx.uiState.tableState);
|
|
106
|
+
})
|
|
107
|
+
.output('pf', (ctx) => {
|
|
108
|
+
if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson()) {
|
|
109
|
+
return undefined;
|
|
110
|
+
}
|
|
111
|
+
const cols = ctx.outputs?.resolve('table')?.getPColumns();
|
|
112
|
+
if (cols === undefined)
|
|
113
|
+
return undefined;
|
|
114
|
+
return model$1.createPFrameForGraphs(ctx, cols);
|
|
115
|
+
})
|
|
116
|
+
.output('assaySequenceSpec', (ctx) => {
|
|
117
|
+
if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson()) {
|
|
118
|
+
return undefined;
|
|
119
|
+
}
|
|
120
|
+
const cols = ctx.outputs?.resolve('table')?.getPColumns();
|
|
121
|
+
if (cols === undefined)
|
|
122
|
+
return undefined;
|
|
123
|
+
// Return only sequence column
|
|
124
|
+
return cols.find((c) => c.spec.name === 'pl7.app/vdj/sequence'
|
|
125
|
+
&& c.spec.axesSpec[0].name === 'pl7.app/vdj/assay/sequenceId')?.spec;
|
|
126
|
+
})
|
|
127
|
+
.output('msaPf', (ctx) => {
|
|
128
|
+
if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson()) {
|
|
129
|
+
return undefined;
|
|
130
|
+
}
|
|
131
|
+
const cols = ctx.outputs?.resolve('table')?.getPColumns();
|
|
132
|
+
if (cols === undefined)
|
|
133
|
+
return undefined;
|
|
134
|
+
const msaCols = ctx.outputs?.resolve('assayLinkerPframe')?.getPColumns();
|
|
135
|
+
if (!msaCols)
|
|
136
|
+
return undefined;
|
|
137
|
+
const columns = getColumns(ctx);
|
|
138
|
+
if (columns === undefined) {
|
|
139
|
+
return undefined;
|
|
140
|
+
}
|
|
141
|
+
return model$1.createPFrameForGraphs(ctx, [...msaCols, ...cols, ...columns.props]);
|
|
82
142
|
})
|
|
83
143
|
.output('isRunning', (ctx) => ctx.outputs?.getIsReadyOrError() === false)
|
|
84
144
|
.title(() => 'Immune Assay Data')
|
|
@@ -88,5 +148,6 @@ const model = model$1.BlockModel.create()
|
|
|
88
148
|
]))
|
|
89
149
|
.done(2);
|
|
90
150
|
|
|
151
|
+
exports.getDefaultBlockLabel = label.getDefaultBlockLabel;
|
|
91
152
|
exports.model = model;
|
|
92
153
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import type {\n ImportFileHandle,\n PlDataTableStateV2,\n PlRef,\n SUniversalPColumnId,\n} from '@platforma-sdk/model';\nimport {\n BlockModel,\n createPlDataTableStateV2,\n createPlDataTableV2,\n} from '@platforma-sdk/model';\n\ntype Settings = {\n coverageThreshold: number; // fraction of aligned residues required\n identity: number;\n similarityType: 'sequence-identity' | 'alignment-score';\n};\n\nexport type ImportColumnInfo = {\n header: string;\n type: 'Int' | 'Double' | 'String';\n /** If this column is a sequence column, the type of the sequence */\n sequenceType?: 'nucleotide' | 'aminoacid';\n};\n\nexport type BlockArgs = {\n defaultBlockLabel: string;\n customBlockLabel: string;\n datasetRef?: PlRef;\n targetRef?: SUniversalPColumnId;\n fileHandle?: ImportFileHandle;\n fileExtension?: string;\n importColumns?: ImportColumnInfo[];\n sequenceColumnHeader?: string;\n selectedColumns: string[];\n settings: Settings;\n};\n\nexport type UiState = {\n fileImportError?: string;\n tableState: PlDataTableStateV2;\n};\n\nexport const model = BlockModel.create()\n\n .withArgs<BlockArgs>({\n defaultBlockLabel: '',\n customBlockLabel: '',\n settings: {\n coverageThreshold: 0.95, // default value matching MMseqs2 default\n identity: 0.9,\n similarityType: 'alignment-score',\n },\n selectedColumns: [],\n })\n\n .withUiState<UiState>({\n tableState: createPlDataTableStateV2(),\n })\n\n .argsValid((ctx) =>\n ctx.args.datasetRef !== undefined\n && ctx.args.fileHandle !== undefined\n && ctx.args.importColumns !== undefined\n && ctx.args.sequenceColumnHeader !== undefined\n && ctx.args.targetRef !== undefined\n && ctx.uiState.fileImportError === undefined,\n )\n\n .output('datasetOptions', (ctx) =>\n ctx.resultPool.getOptions([{\n axes: [\n { name: 'pl7.app/sampleId' },\n { name: 'pl7.app/vdj/clonotypeKey' },\n ],\n annotations: { 'pl7.app/isAnchor': 'true' },\n }, {\n axes: [\n { name: 'pl7.app/sampleId' },\n { name: 'pl7.app/vdj/scClonotypeKey' },\n ],\n annotations: { 'pl7.app/isAnchor': 'true' },\n }], { refsWithEnrichments: true }),\n )\n\n .output('targetOptions', (ctx) => {\n const ref = ctx.args.datasetRef;\n if (ref === undefined) return undefined;\n\n const isSingleCell = ctx.resultPool.getPColumnSpecByRef(ref)?.axesSpec[1].name === 'pl7.app/vdj/scClonotypeKey';\n const sequenceMatchers = [];\n // const allowedFeatures = ['CDR1', 'CDR2', 'CDR3', 'FR1', 'FR2',\n // 'FR3', 'FR4', 'VDJRegion'];\n // for (const feature of allowedFeatures) {\n if (isSingleCell) {\n sequenceMatchers.push({\n axes: [{ anchor: 'main', idx: 1 }],\n name: 'pl7.app/vdj/sequence',\n domain: {\n // 'pl7.app/vdj/feature': feature,\n 'pl7.app/vdj/scClonotypeChain/index': 'primary',\n },\n });\n } else {\n sequenceMatchers.push({\n axes: [{ anchor: 'main', idx: 1 }],\n name: 'pl7.app/vdj/sequence',\n domain: {\n // 'pl7.app/vdj/feature': feature,\n },\n });\n }\n\n return ctx.resultPool.getCanonicalOptions(\n { main: ref },\n sequenceMatchers,\n {\n ignoreMissingDomains: true,\n labelOps: {\n includeNativeLabel: true,\n },\n });\n })\n\n .output(\n 'dataImportHandle',\n (ctx) => ctx.outputs?.resolve('dataImportHandle')?.getImportProgress(),\n { isActive: true },\n )\n\n .outputWithStatus('table', (ctx) => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n\n return createPlDataTableV2(\n ctx,\n cols,\n ctx.uiState.tableState,\n );\n })\n\n .output('isRunning', (ctx) => ctx.outputs?.getIsReadyOrError() === false)\n\n .title(() => 'Immune Assay Data')\n\n .subtitle((ctx) => ctx.args.customBlockLabel || ctx.args.defaultBlockLabel)\n\n .sections((_ctx) => ([\n { type: 'link', href: '/', label: 'Main' },\n ]))\n\n .done(2);\n"],"names":["BlockModel","createPlDataTableStateV2","createPlDataTableV2"],"mappings":";;;;AA2CO,MAAM,KAAK,GAAGA,kBAAU,CAAC,MAAM;AAEnC,KAAA,QAAQ,CAAY;AACnB,IAAA,iBAAiB,EAAE,EAAE;AACrB,IAAA,gBAAgB,EAAE,EAAE;AACpB,IAAA,QAAQ,EAAE;QACR,iBAAiB,EAAE,IAAI;AACvB,QAAA,QAAQ,EAAE,GAAG;AACb,QAAA,cAAc,EAAE,iBAAiB;AAClC,KAAA;AACD,IAAA,eAAe,EAAE,EAAE;CACpB;AAEA,KAAA,WAAW,CAAU;IACpB,UAAU,EAAEC,gCAAwB,EAAE;CACvC;AAEA,KAAA,SAAS,CAAC,CAAC,GAAG,KACb,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK;AACrB,OAAA,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK;AACxB,OAAA,GAAG,CAAC,IAAI,CAAC,aAAa,KAAK;AAC3B,OAAA,GAAG,CAAC,IAAI,CAAC,oBAAoB,KAAK;AAClC,OAAA,GAAG,CAAC,IAAI,CAAC,SAAS,KAAK;AACvB,OAAA,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS;AAG7C,KAAA,MAAM,CAAC,gBAAgB,EAAE,CAAC,GAAG,KAC5B,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AACzB,QAAA,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC5B,EAAE,IAAI,EAAE,0BAA0B,EAAE;AACrC,SAAA;AACD,QAAA,WAAW,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE;KAC5C,EAAE;AACD,QAAA,IAAI,EAAE;YACJ,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC5B,EAAE,IAAI,EAAE,4BAA4B,EAAE;AACvC,SAAA;AACD,QAAA,WAAW,EAAE,EAAE,kBAAkB,EAAE,MAAM,EAAE;AAC5C,KAAA,CAAC,EAAE,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;AAGnC,KAAA,MAAM,CAAC,eAAe,EAAE,CAAC,GAAG,KAAI;AAC/B,IAAA,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU;IAC/B,IAAI,GAAG,KAAK,SAAS;AAAE,QAAA,OAAO,SAAS;AAEvC,IAAA,MAAM,YAAY,GAAG,GAAG,CAAC,UAAU,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,4BAA4B;IAC/G,MAAM,gBAAgB,GAAG,EAAE;;;;IAI3B,IAAI,YAAY,EAAE;QAChB,gBAAgB,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAClC,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,MAAM,EAAE;;AAEN,gBAAA,oCAAoC,EAAE,SAAS;AAChD,aAAA;AACF,SAAA,CAAC;IACJ;SAAO;QACL,gBAAgB,CAAC,IAAI,CAAC;YACpB,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAClC,YAAA,IAAI,EAAE,sBAAsB;AAC5B,YAAA,MAAM,EAAE;;AAEP,aAAA;AACF,SAAA,CAAC;IACJ;AAEA,IAAA,OAAO,GAAG,CAAC,UAAU,CAAC,mBAAmB,CACvC,EAAE,IAAI,EAAE,GAAG,EAAE,EACb,gBAAgB,EAChB;AACE,QAAA,oBAAoB,EAAE,IAAI;AAC1B,QAAA,QAAQ,EAAE;AACR,YAAA,kBAAkB,EAAE,IAAI;AACzB,SAAA;AACF,KAAA,CAAC;AACN,CAAC;KAEA,MAAM,CACL,kBAAkB,EAClB,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,EAAE,EACtE,EAAE,QAAQ,EAAE,IAAI,EAAE;AAGnB,KAAA,gBAAgB,CAAC,OAAO,EAAE,CAAC,GAAG,KAAI;AACjC,IAAA,IAAI,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,EAAE,aAAa,EAAW,EAAE;AAClE,QAAA,OAAO,SAAS;IAClB;AACA,IAAA,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE;IACzD,IAAI,IAAI,KAAK,SAAS;AACpB,QAAA,OAAO,SAAS;AAElB,IAAA,OAAOC,2BAAmB,CACxB,GAAG,EACH,IAAI,EACJ,GAAG,CAAC,OAAO,CAAC,UAAU,CACvB;AACH,CAAC;AAEA,KAAA,MAAM,CAAC,WAAW,EAAE,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,KAAK;AAEvE,KAAA,KAAK,CAAC,MAAM,mBAAmB;AAE/B,KAAA,QAAQ,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,gBAAgB,IAAI,GAAG,CAAC,IAAI,CAAC,iBAAiB;AAEzE,KAAA,QAAQ,CAAC,CAAC,IAAI,MAAM;IACnB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE;AAC3C,CAAA,CAAC;KAED,IAAI,CAAC,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"index.cjs","sources":["../src/index.ts"],"sourcesContent":["import type {\n DataInfo,\n ImportFileHandle,\n PColumn,\n PColumnSpec,\n PColumnValues,\n PlDataTableStateV2,\n PlMultiSequenceAlignmentModel,\n PlRef,\n RenderCtxLegacy,\n SUniversalPColumnId,\n TreeNodeAccessor,\n} from '@platforma-sdk/model';\nimport {\n BlockModel,\n createPFrameForGraphs,\n createPlDataTableStateV2,\n createPlDataTableV2,\n} from '@platforma-sdk/model';\nimport { getDefaultBlockLabel } from './label';\n\ntype Settings = {\n coverageThreshold: number; // fraction of aligned residues required\n identity: number;\n similarityType: 'sequence-identity' | 'alignment-score';\n};\n\nexport type ImportColumnInfo = {\n header: string;\n type: 'Int' | 'Double' | 'String';\n /** If this column is a sequence column, the type of the sequence */\n sequenceType?: 'nucleotide' | 'aminoacid';\n};\n\nexport type BlockArgs = {\n defaultBlockLabel: string;\n customBlockLabel: string;\n datasetRef?: PlRef;\n targetRef?: SUniversalPColumnId;\n fileHandle?: ImportFileHandle;\n fileExtension?: string;\n importColumns?: ImportColumnInfo[];\n sequenceColumnHeader?: string;\n selectedColumns: string[];\n settings: Settings;\n};\n\nexport type UiState = {\n fileImportError?: string;\n tableState: PlDataTableStateV2;\n alignmentModel: PlMultiSequenceAlignmentModel;\n};\n\ntype Column = PColumn<DataInfo<TreeNodeAccessor> | TreeNodeAccessor | PColumnValues>;\n\ntype Columns = {\n props: Column[];\n};\n\nfunction getColumns(ctx: RenderCtxLegacy<BlockArgs, UiState>): Columns | undefined {\n const anchor = ctx.args.datasetRef;\n if (anchor === undefined)\n return undefined;\n\n const anchorSpec = ctx.resultPool.getPColumnSpecByRef(anchor);\n if (anchorSpec === undefined)\n return undefined;\n\n // all clone properties\n const props = (ctx.resultPool.getAnchoredPColumns(\n { main: anchor },\n [\n {\n axes: [{ anchor: 'main', idx: 1 }],\n },\n ]) ?? [])\n .filter((p) => p.spec.annotations?.['pl7.app/sequence/isAnnotation'] !== 'true');\n\n return {\n props: props,\n };\n}\n\nexport const model = BlockModel.create()\n\n .withArgs<BlockArgs>({\n defaultBlockLabel: getDefaultBlockLabel({\n similarityType: 'alignment-score',\n identity: 0.9,\n coverageThreshold: 0.95,\n }),\n customBlockLabel: '',\n settings: {\n coverageThreshold: 0.95, // default value matching MMseqs2 default\n identity: 0.9,\n similarityType: 'alignment-score',\n },\n selectedColumns: [],\n })\n\n .withUiState<UiState>({\n tableState: createPlDataTableStateV2(),\n alignmentModel: {},\n })\n\n .argsValid((ctx) =>\n ctx.args.datasetRef !== undefined\n && ctx.args.fileHandle !== undefined\n && ctx.args.importColumns !== undefined\n && ctx.args.sequenceColumnHeader !== undefined\n && ctx.args.targetRef !== undefined\n && ctx.uiState.fileImportError === undefined,\n )\n\n .output('datasetOptions', (ctx) =>\n ctx.resultPool.getOptions([{\n axes: [\n { name: 'pl7.app/sampleId' },\n { name: 'pl7.app/vdj/clonotypeKey' },\n ],\n annotations: { 'pl7.app/isAnchor': 'true' },\n }, {\n axes: [\n { name: 'pl7.app/sampleId' },\n { name: 'pl7.app/vdj/scClonotypeKey' },\n ],\n annotations: { 'pl7.app/isAnchor': 'true' },\n }], { refsWithEnrichments: true }),\n )\n\n .output('targetOptions', (ctx) => {\n const ref = ctx.args.datasetRef;\n if (ref === undefined) return undefined;\n\n const isSingleCell = ctx.resultPool.getPColumnSpecByRef(ref)?.axesSpec[1].name === 'pl7.app/vdj/scClonotypeKey';\n const sequenceMatchers = [];\n // const allowedFeatures = ['CDR1', 'CDR2', 'CDR3', 'FR1', 'FR2',\n // 'FR3', 'FR4', 'VDJRegion'];\n // for (const feature of allowedFeatures) {\n if (isSingleCell) {\n sequenceMatchers.push({\n axes: [{ anchor: 'main', idx: 1 }],\n name: 'pl7.app/vdj/sequence',\n domain: {\n // 'pl7.app/vdj/feature': feature,\n 'pl7.app/vdj/scClonotypeChain/index': 'primary',\n },\n });\n } else {\n sequenceMatchers.push({\n axes: [{ anchor: 'main', idx: 1 }],\n name: 'pl7.app/vdj/sequence',\n domain: {\n // 'pl7.app/vdj/feature': feature,\n },\n });\n }\n\n return ctx.resultPool.getCanonicalOptions(\n { main: ref },\n sequenceMatchers,\n {\n ignoreMissingDomains: true,\n labelOps: {\n includeNativeLabel: true,\n },\n });\n })\n\n .output(\n 'dataImportHandle',\n (ctx) => ctx.outputs?.resolve('dataImportHandle')?.getImportProgress(),\n { isActive: true },\n )\n\n .outputWithStatus('table', (ctx) => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n\n return createPlDataTableV2(\n ctx,\n cols,\n ctx.uiState.tableState,\n );\n })\n\n .output('pf', (ctx) => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n\n return createPFrameForGraphs(ctx, cols);\n })\n\n .output('assaySequenceSpec', (ctx): PColumnSpec | undefined => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n // Return only sequence column\n return cols.find((c) => c.spec.name === 'pl7.app/vdj/sequence'\n && c.spec.axesSpec[0].name === 'pl7.app/vdj/assay/sequenceId')?.spec;\n })\n\n .output('msaPf', (ctx) => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n\n const msaCols = ctx.outputs?.resolve('assayLinkerPframe')?.getPColumns();\n if (!msaCols) return undefined;\n\n const columns = getColumns(ctx);\n if (columns === undefined) {\n return undefined;\n }\n\n return createPFrameForGraphs(ctx, [...msaCols, ...cols, ...columns.props]);\n })\n\n .output('isRunning', (ctx) => ctx.outputs?.getIsReadyOrError() === false)\n\n .title(() => 'Immune Assay Data')\n\n .subtitle((ctx) => ctx.args.customBlockLabel || ctx.args.defaultBlockLabel)\n\n .sections((_ctx) => ([\n { type: 'link', href: '/', label: 'Main' },\n ]))\n\n .done(2);\n\nexport { getDefaultBlockLabel } from './label';\n"],"names":["BlockModel","getDefaultBlockLabel","createPlDataTableStateV2","createPlDataTableV2","createPFrameForGraphs"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ImportFileHandle, PlDataTableStateV2, PlRef, SUniversalPColumnId } from '@platforma-sdk/model';
|
|
1
|
+
import type { ImportFileHandle, PlDataTableStateV2, PlMultiSequenceAlignmentModel, PlRef, SUniversalPColumnId } from '@platforma-sdk/model';
|
|
2
2
|
type Settings = {
|
|
3
3
|
coverageThreshold: number;
|
|
4
4
|
identity: number;
|
|
@@ -25,9 +25,10 @@ export type BlockArgs = {
|
|
|
25
25
|
export type UiState = {
|
|
26
26
|
fileImportError?: string;
|
|
27
27
|
tableState: PlDataTableStateV2;
|
|
28
|
+
alignmentModel: PlMultiSequenceAlignmentModel;
|
|
28
29
|
};
|
|
29
|
-
export declare const model: import("@platforma-sdk/model").PlatformaExtended<import("@platforma-sdk/model").PlatformaV2<BlockArgs, {
|
|
30
|
-
datasetOptions: import("@platforma-sdk/model").
|
|
30
|
+
export declare const model: import("@platforma-sdk/model").PlatformaExtended<import("@platforma-sdk/model").PlatformaV2<BlockArgs, import("@platforma-sdk/model").InferOutputsFromConfigs<BlockArgs, {
|
|
31
|
+
datasetOptions: import("@platforma-sdk/model").ConfigRenderLambda<{
|
|
31
32
|
readonly ref: {
|
|
32
33
|
readonly __isRef: true;
|
|
33
34
|
readonly blockId: string;
|
|
@@ -35,28 +36,52 @@ export declare const model: import("@platforma-sdk/model").PlatformaExtended<imp
|
|
|
35
36
|
readonly requireEnrichments?: true | undefined;
|
|
36
37
|
};
|
|
37
38
|
readonly label: string;
|
|
38
|
-
}[]
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
targetOptions: import("@platforma-sdk/model").OutputWithStatus<{
|
|
39
|
+
}[]>;
|
|
40
|
+
} & {
|
|
41
|
+
targetOptions: import("@platforma-sdk/model").ConfigRenderLambda<{
|
|
42
42
|
label: string;
|
|
43
43
|
value: SUniversalPColumnId;
|
|
44
|
-
}[] | undefined
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
};
|
|
50
|
-
table: import("@platforma-sdk/model").OutputWithStatus<{
|
|
44
|
+
}[] | undefined>;
|
|
45
|
+
} & {
|
|
46
|
+
dataImportHandle: import("@platforma-sdk/model").ConfigRenderLambda<import("@platforma-sdk/model").ImportProgress | undefined>;
|
|
47
|
+
} & {
|
|
48
|
+
table: import("@platforma-sdk/model").ConfigRenderLambda<{
|
|
51
49
|
sourceId: string | null;
|
|
52
50
|
fullTableHandle: import("@platforma-sdk/model").PTableHandle;
|
|
53
51
|
visibleTableHandle: import("@platforma-sdk/model").PTableHandle;
|
|
54
|
-
}> & {
|
|
55
|
-
|
|
52
|
+
} | undefined> & {
|
|
53
|
+
withStatus: true;
|
|
56
54
|
};
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
} & {
|
|
56
|
+
pf: import("@platforma-sdk/model").ConfigRenderLambda<import("@platforma-sdk/model").PFrameHandle | undefined>;
|
|
57
|
+
} & {
|
|
58
|
+
assaySequenceSpec: import("@platforma-sdk/model").ConfigRenderLambda<{
|
|
59
|
+
readonly kind: "PColumn";
|
|
60
|
+
readonly name: string;
|
|
61
|
+
readonly domain?: {
|
|
62
|
+
[x: string]: string;
|
|
63
|
+
} | undefined;
|
|
64
|
+
readonly annotations?: {
|
|
65
|
+
[x: string]: string;
|
|
66
|
+
} | undefined;
|
|
67
|
+
readonly valueType: "Int" | "Double" | "String" | "Long" | "Float" | "Bytes";
|
|
68
|
+
readonly parentAxes?: number[] | undefined;
|
|
69
|
+
readonly axesSpec: {
|
|
70
|
+
readonly type: import("@platforma-sdk/model").ValueType;
|
|
71
|
+
readonly name: string;
|
|
72
|
+
readonly domain?: {
|
|
73
|
+
[x: string]: string;
|
|
74
|
+
} | undefined;
|
|
75
|
+
readonly annotations?: {
|
|
76
|
+
[x: string]: string;
|
|
77
|
+
} | undefined;
|
|
78
|
+
readonly parentAxes?: number[] | undefined;
|
|
79
|
+
}[];
|
|
80
|
+
} | undefined>;
|
|
81
|
+
} & {
|
|
82
|
+
msaPf: import("@platforma-sdk/model").ConfigRenderLambda<import("@platforma-sdk/model").PFrameHandle | undefined>;
|
|
83
|
+
} & {
|
|
84
|
+
isRunning: import("@platforma-sdk/model").ConfigRenderLambda<boolean>;
|
|
85
|
+
}, UiState>, UiState, "/">>;
|
|
86
|
+
export { getDefaultBlockLabel } from './label';
|
|
62
87
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,gBAAgB,EAIhB,kBAAkB,EAClB,6BAA6B,EAC7B,KAAK,EAEL,mBAAmB,EAEpB,MAAM,sBAAsB,CAAC;AAS9B,KAAK,QAAQ,GAAG;IACd,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,mBAAmB,GAAG,iBAAiB,CAAC;CACzD,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAClC,oEAAoE;IACpE,YAAY,CAAC,EAAE,YAAY,GAAG,WAAW,CAAC;CAC3C,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC;IACnB,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,EAAE,QAAQ,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,OAAO,GAAG;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,kBAAkB,CAAC;IAC/B,cAAc,EAAE,6BAA6B,CAAC;CAC/C,CAAC;AAgCF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BA+JR,CAAC;AAEX,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,31 @@
|
|
|
1
|
-
import { BlockModel, createPlDataTableStateV2, createPlDataTableV2 } from '@platforma-sdk/model';
|
|
1
|
+
import { BlockModel, createPlDataTableStateV2, createPlDataTableV2, createPFrameForGraphs } from '@platforma-sdk/model';
|
|
2
|
+
import { getDefaultBlockLabel } from './label.js';
|
|
2
3
|
|
|
4
|
+
function getColumns(ctx) {
|
|
5
|
+
const anchor = ctx.args.datasetRef;
|
|
6
|
+
if (anchor === undefined)
|
|
7
|
+
return undefined;
|
|
8
|
+
const anchorSpec = ctx.resultPool.getPColumnSpecByRef(anchor);
|
|
9
|
+
if (anchorSpec === undefined)
|
|
10
|
+
return undefined;
|
|
11
|
+
// all clone properties
|
|
12
|
+
const props = (ctx.resultPool.getAnchoredPColumns({ main: anchor }, [
|
|
13
|
+
{
|
|
14
|
+
axes: [{ anchor: 'main', idx: 1 }],
|
|
15
|
+
},
|
|
16
|
+
]) ?? [])
|
|
17
|
+
.filter((p) => p.spec.annotations?.['pl7.app/sequence/isAnnotation'] !== 'true');
|
|
18
|
+
return {
|
|
19
|
+
props: props,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
3
22
|
const model = BlockModel.create()
|
|
4
23
|
.withArgs({
|
|
5
|
-
defaultBlockLabel:
|
|
24
|
+
defaultBlockLabel: getDefaultBlockLabel({
|
|
25
|
+
similarityType: 'alignment-score',
|
|
26
|
+
identity: 0.9,
|
|
27
|
+
coverageThreshold: 0.95,
|
|
28
|
+
}),
|
|
6
29
|
customBlockLabel: '',
|
|
7
30
|
settings: {
|
|
8
31
|
coverageThreshold: 0.95, // default value matching MMseqs2 default
|
|
@@ -13,6 +36,7 @@ const model = BlockModel.create()
|
|
|
13
36
|
})
|
|
14
37
|
.withUiState({
|
|
15
38
|
tableState: createPlDataTableStateV2(),
|
|
39
|
+
alignmentModel: {},
|
|
16
40
|
})
|
|
17
41
|
.argsValid((ctx) => ctx.args.datasetRef !== undefined
|
|
18
42
|
&& ctx.args.fileHandle !== undefined
|
|
@@ -77,6 +101,42 @@ const model = BlockModel.create()
|
|
|
77
101
|
if (cols === undefined)
|
|
78
102
|
return undefined;
|
|
79
103
|
return createPlDataTableV2(ctx, cols, ctx.uiState.tableState);
|
|
104
|
+
})
|
|
105
|
+
.output('pf', (ctx) => {
|
|
106
|
+
if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson()) {
|
|
107
|
+
return undefined;
|
|
108
|
+
}
|
|
109
|
+
const cols = ctx.outputs?.resolve('table')?.getPColumns();
|
|
110
|
+
if (cols === undefined)
|
|
111
|
+
return undefined;
|
|
112
|
+
return createPFrameForGraphs(ctx, cols);
|
|
113
|
+
})
|
|
114
|
+
.output('assaySequenceSpec', (ctx) => {
|
|
115
|
+
if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson()) {
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
const cols = ctx.outputs?.resolve('table')?.getPColumns();
|
|
119
|
+
if (cols === undefined)
|
|
120
|
+
return undefined;
|
|
121
|
+
// Return only sequence column
|
|
122
|
+
return cols.find((c) => c.spec.name === 'pl7.app/vdj/sequence'
|
|
123
|
+
&& c.spec.axesSpec[0].name === 'pl7.app/vdj/assay/sequenceId')?.spec;
|
|
124
|
+
})
|
|
125
|
+
.output('msaPf', (ctx) => {
|
|
126
|
+
if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson()) {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
const cols = ctx.outputs?.resolve('table')?.getPColumns();
|
|
130
|
+
if (cols === undefined)
|
|
131
|
+
return undefined;
|
|
132
|
+
const msaCols = ctx.outputs?.resolve('assayLinkerPframe')?.getPColumns();
|
|
133
|
+
if (!msaCols)
|
|
134
|
+
return undefined;
|
|
135
|
+
const columns = getColumns(ctx);
|
|
136
|
+
if (columns === undefined) {
|
|
137
|
+
return undefined;
|
|
138
|
+
}
|
|
139
|
+
return createPFrameForGraphs(ctx, [...msaCols, ...cols, ...columns.props]);
|
|
80
140
|
})
|
|
81
141
|
.output('isRunning', (ctx) => ctx.outputs?.getIsReadyOrError() === false)
|
|
82
142
|
.title(() => 'Immune Assay Data')
|
|
@@ -86,5 +146,5 @@ const model = BlockModel.create()
|
|
|
86
146
|
]))
|
|
87
147
|
.done(2);
|
|
88
148
|
|
|
89
|
-
export { model };
|
|
149
|
+
export { getDefaultBlockLabel, model };
|
|
90
150
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type {\n ImportFileHandle,\n PlDataTableStateV2,\n PlRef,\n SUniversalPColumnId,\n} from '@platforma-sdk/model';\nimport {\n BlockModel,\n createPlDataTableStateV2,\n createPlDataTableV2,\n} from '@platforma-sdk/model';\n\ntype Settings = {\n coverageThreshold: number; // fraction of aligned residues required\n identity: number;\n similarityType: 'sequence-identity' | 'alignment-score';\n};\n\nexport type ImportColumnInfo = {\n header: string;\n type: 'Int' | 'Double' | 'String';\n /** If this column is a sequence column, the type of the sequence */\n sequenceType?: 'nucleotide' | 'aminoacid';\n};\n\nexport type BlockArgs = {\n defaultBlockLabel: string;\n customBlockLabel: string;\n datasetRef?: PlRef;\n targetRef?: SUniversalPColumnId;\n fileHandle?: ImportFileHandle;\n fileExtension?: string;\n importColumns?: ImportColumnInfo[];\n sequenceColumnHeader?: string;\n selectedColumns: string[];\n settings: Settings;\n};\n\nexport type UiState = {\n fileImportError?: string;\n tableState: PlDataTableStateV2;\n};\n\nexport const model = BlockModel.create()\n\n .withArgs<BlockArgs>({\n defaultBlockLabel: '',\n customBlockLabel: '',\n settings: {\n coverageThreshold: 0.95, // default value matching MMseqs2 default\n identity: 0.9,\n similarityType: 'alignment-score',\n },\n selectedColumns: [],\n })\n\n .withUiState<UiState>({\n tableState: createPlDataTableStateV2(),\n })\n\n .argsValid((ctx) =>\n ctx.args.datasetRef !== undefined\n && ctx.args.fileHandle !== undefined\n && ctx.args.importColumns !== undefined\n && ctx.args.sequenceColumnHeader !== undefined\n && ctx.args.targetRef !== undefined\n && ctx.uiState.fileImportError === undefined,\n )\n\n .output('datasetOptions', (ctx) =>\n ctx.resultPool.getOptions([{\n axes: [\n { name: 'pl7.app/sampleId' },\n { name: 'pl7.app/vdj/clonotypeKey' },\n ],\n annotations: { 'pl7.app/isAnchor': 'true' },\n }, {\n axes: [\n { name: 'pl7.app/sampleId' },\n { name: 'pl7.app/vdj/scClonotypeKey' },\n ],\n annotations: { 'pl7.app/isAnchor': 'true' },\n }], { refsWithEnrichments: true }),\n )\n\n .output('targetOptions', (ctx) => {\n const ref = ctx.args.datasetRef;\n if (ref === undefined) return undefined;\n\n const isSingleCell = ctx.resultPool.getPColumnSpecByRef(ref)?.axesSpec[1].name === 'pl7.app/vdj/scClonotypeKey';\n const sequenceMatchers = [];\n // const allowedFeatures = ['CDR1', 'CDR2', 'CDR3', 'FR1', 'FR2',\n // 'FR3', 'FR4', 'VDJRegion'];\n // for (const feature of allowedFeatures) {\n if (isSingleCell) {\n sequenceMatchers.push({\n axes: [{ anchor: 'main', idx: 1 }],\n name: 'pl7.app/vdj/sequence',\n domain: {\n // 'pl7.app/vdj/feature': feature,\n 'pl7.app/vdj/scClonotypeChain/index': 'primary',\n },\n });\n } else {\n sequenceMatchers.push({\n axes: [{ anchor: 'main', idx: 1 }],\n name: 'pl7.app/vdj/sequence',\n domain: {\n // 'pl7.app/vdj/feature': feature,\n },\n });\n }\n\n return ctx.resultPool.getCanonicalOptions(\n { main: ref },\n sequenceMatchers,\n {\n ignoreMissingDomains: true,\n labelOps: {\n includeNativeLabel: true,\n },\n });\n })\n\n .output(\n 'dataImportHandle',\n (ctx) => ctx.outputs?.resolve('dataImportHandle')?.getImportProgress(),\n { isActive: true },\n )\n\n .outputWithStatus('table', (ctx) => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n\n return createPlDataTableV2(\n ctx,\n cols,\n ctx.uiState.tableState,\n );\n })\n\n .output('isRunning', (ctx) => ctx.outputs?.getIsReadyOrError() === false)\n\n .title(() => 'Immune Assay Data')\n\n .subtitle((ctx) => ctx.args.customBlockLabel || ctx.args.defaultBlockLabel)\n\n .sections((_ctx) => ([\n { type: 'link', href: '/', label: 'Main' },\n ]))\n\n .done(2);\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type {\n DataInfo,\n ImportFileHandle,\n PColumn,\n PColumnSpec,\n PColumnValues,\n PlDataTableStateV2,\n PlMultiSequenceAlignmentModel,\n PlRef,\n RenderCtxLegacy,\n SUniversalPColumnId,\n TreeNodeAccessor,\n} from '@platforma-sdk/model';\nimport {\n BlockModel,\n createPFrameForGraphs,\n createPlDataTableStateV2,\n createPlDataTableV2,\n} from '@platforma-sdk/model';\nimport { getDefaultBlockLabel } from './label';\n\ntype Settings = {\n coverageThreshold: number; // fraction of aligned residues required\n identity: number;\n similarityType: 'sequence-identity' | 'alignment-score';\n};\n\nexport type ImportColumnInfo = {\n header: string;\n type: 'Int' | 'Double' | 'String';\n /** If this column is a sequence column, the type of the sequence */\n sequenceType?: 'nucleotide' | 'aminoacid';\n};\n\nexport type BlockArgs = {\n defaultBlockLabel: string;\n customBlockLabel: string;\n datasetRef?: PlRef;\n targetRef?: SUniversalPColumnId;\n fileHandle?: ImportFileHandle;\n fileExtension?: string;\n importColumns?: ImportColumnInfo[];\n sequenceColumnHeader?: string;\n selectedColumns: string[];\n settings: Settings;\n};\n\nexport type UiState = {\n fileImportError?: string;\n tableState: PlDataTableStateV2;\n alignmentModel: PlMultiSequenceAlignmentModel;\n};\n\ntype Column = PColumn<DataInfo<TreeNodeAccessor> | TreeNodeAccessor | PColumnValues>;\n\ntype Columns = {\n props: Column[];\n};\n\nfunction getColumns(ctx: RenderCtxLegacy<BlockArgs, UiState>): Columns | undefined {\n const anchor = ctx.args.datasetRef;\n if (anchor === undefined)\n return undefined;\n\n const anchorSpec = ctx.resultPool.getPColumnSpecByRef(anchor);\n if (anchorSpec === undefined)\n return undefined;\n\n // all clone properties\n const props = (ctx.resultPool.getAnchoredPColumns(\n { main: anchor },\n [\n {\n axes: [{ anchor: 'main', idx: 1 }],\n },\n ]) ?? [])\n .filter((p) => p.spec.annotations?.['pl7.app/sequence/isAnnotation'] !== 'true');\n\n return {\n props: props,\n };\n}\n\nexport const model = BlockModel.create()\n\n .withArgs<BlockArgs>({\n defaultBlockLabel: getDefaultBlockLabel({\n similarityType: 'alignment-score',\n identity: 0.9,\n coverageThreshold: 0.95,\n }),\n customBlockLabel: '',\n settings: {\n coverageThreshold: 0.95, // default value matching MMseqs2 default\n identity: 0.9,\n similarityType: 'alignment-score',\n },\n selectedColumns: [],\n })\n\n .withUiState<UiState>({\n tableState: createPlDataTableStateV2(),\n alignmentModel: {},\n })\n\n .argsValid((ctx) =>\n ctx.args.datasetRef !== undefined\n && ctx.args.fileHandle !== undefined\n && ctx.args.importColumns !== undefined\n && ctx.args.sequenceColumnHeader !== undefined\n && ctx.args.targetRef !== undefined\n && ctx.uiState.fileImportError === undefined,\n )\n\n .output('datasetOptions', (ctx) =>\n ctx.resultPool.getOptions([{\n axes: [\n { name: 'pl7.app/sampleId' },\n { name: 'pl7.app/vdj/clonotypeKey' },\n ],\n annotations: { 'pl7.app/isAnchor': 'true' },\n }, {\n axes: [\n { name: 'pl7.app/sampleId' },\n { name: 'pl7.app/vdj/scClonotypeKey' },\n ],\n annotations: { 'pl7.app/isAnchor': 'true' },\n }], { refsWithEnrichments: true }),\n )\n\n .output('targetOptions', (ctx) => {\n const ref = ctx.args.datasetRef;\n if (ref === undefined) return undefined;\n\n const isSingleCell = ctx.resultPool.getPColumnSpecByRef(ref)?.axesSpec[1].name === 'pl7.app/vdj/scClonotypeKey';\n const sequenceMatchers = [];\n // const allowedFeatures = ['CDR1', 'CDR2', 'CDR3', 'FR1', 'FR2',\n // 'FR3', 'FR4', 'VDJRegion'];\n // for (const feature of allowedFeatures) {\n if (isSingleCell) {\n sequenceMatchers.push({\n axes: [{ anchor: 'main', idx: 1 }],\n name: 'pl7.app/vdj/sequence',\n domain: {\n // 'pl7.app/vdj/feature': feature,\n 'pl7.app/vdj/scClonotypeChain/index': 'primary',\n },\n });\n } else {\n sequenceMatchers.push({\n axes: [{ anchor: 'main', idx: 1 }],\n name: 'pl7.app/vdj/sequence',\n domain: {\n // 'pl7.app/vdj/feature': feature,\n },\n });\n }\n\n return ctx.resultPool.getCanonicalOptions(\n { main: ref },\n sequenceMatchers,\n {\n ignoreMissingDomains: true,\n labelOps: {\n includeNativeLabel: true,\n },\n });\n })\n\n .output(\n 'dataImportHandle',\n (ctx) => ctx.outputs?.resolve('dataImportHandle')?.getImportProgress(),\n { isActive: true },\n )\n\n .outputWithStatus('table', (ctx) => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n\n return createPlDataTableV2(\n ctx,\n cols,\n ctx.uiState.tableState,\n );\n })\n\n .output('pf', (ctx) => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n\n return createPFrameForGraphs(ctx, cols);\n })\n\n .output('assaySequenceSpec', (ctx): PColumnSpec | undefined => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n // Return only sequence column\n return cols.find((c) => c.spec.name === 'pl7.app/vdj/sequence'\n && c.spec.axesSpec[0].name === 'pl7.app/vdj/assay/sequenceId')?.spec;\n })\n\n .output('msaPf', (ctx) => {\n if (ctx.outputs?.resolve('emptyResults')?.getDataAsJson<boolean>()) {\n return undefined;\n }\n const cols = ctx.outputs?.resolve('table')?.getPColumns();\n if (cols === undefined)\n return undefined;\n\n const msaCols = ctx.outputs?.resolve('assayLinkerPframe')?.getPColumns();\n if (!msaCols) return undefined;\n\n const columns = getColumns(ctx);\n if (columns === undefined) {\n return undefined;\n }\n\n return createPFrameForGraphs(ctx, [...msaCols, ...cols, ...columns.props]);\n })\n\n .output('isRunning', (ctx) => ctx.outputs?.getIsReadyOrError() === false)\n\n .title(() => 'Immune Assay Data')\n\n .subtitle((ctx) => ctx.args.customBlockLabel || ctx.args.defaultBlockLabel)\n\n .sections((_ctx) => ([\n { type: 'link', href: '/', label: 'Main' },\n ]))\n\n .done(2);\n\nexport { getDefaultBlockLabel } from './label';\n"],"names":[],"mappings":"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"}
|
package/dist/label.cjs
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
function getDefaultBlockLabel(data) {
|
|
4
|
+
const parts = [];
|
|
5
|
+
// Add file name if available
|
|
6
|
+
if (data.fileName) {
|
|
7
|
+
parts.push(data.fileName);
|
|
8
|
+
}
|
|
9
|
+
// Add similarity type label
|
|
10
|
+
const similarityLabel = data.similarityType === 'alignment-score' ? 'BLOSUM' : 'Exact Match';
|
|
11
|
+
if (similarityLabel) {
|
|
12
|
+
parts.push(similarityLabel);
|
|
13
|
+
}
|
|
14
|
+
// Add identity threshold
|
|
15
|
+
parts.push(`ident:${data.identity}`);
|
|
16
|
+
// Add coverage threshold
|
|
17
|
+
parts.push(`cov:${data.coverageThreshold}`);
|
|
18
|
+
return parts.filter(Boolean).join(', ');
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
exports.getDefaultBlockLabel = getDefaultBlockLabel;
|
|
22
|
+
//# sourceMappingURL=label.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.cjs","sources":["../src/label.ts"],"sourcesContent":["export function getDefaultBlockLabel(data: {\n fileName?: string;\n similarityType: 'alignment-score' | 'sequence-identity';\n identity: number;\n coverageThreshold: number;\n}) {\n const parts: string[] = [];\n\n // Add file name if available\n if (data.fileName) {\n parts.push(data.fileName);\n }\n\n // Add similarity type label\n const similarityLabel = data.similarityType === 'alignment-score' ? 'BLOSUM' : 'Exact Match';\n if (similarityLabel) {\n parts.push(similarityLabel);\n }\n\n // Add identity threshold\n parts.push(`ident:${data.identity}`);\n\n // Add coverage threshold\n parts.push(`cov:${data.coverageThreshold}`);\n\n return parts.filter(Boolean).join(', ');\n}\n"],"names":[],"mappings":";;AAAM,SAAU,oBAAoB,CAAC,IAKpC,EAAA;IACC,MAAM,KAAK,GAAa,EAAE;;AAG1B,IAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3B;;AAGA,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,KAAK,iBAAiB,GAAG,QAAQ,GAAG,aAAa;IAC5F,IAAI,eAAe,EAAE;AACnB,QAAA,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;IAC7B;;IAGA,KAAK,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;;IAGpC,KAAK,CAAC,IAAI,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,iBAAiB,CAAA,CAAE,CAAC;IAE3C,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC;;;;"}
|
package/dist/label.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../src/label.ts"],"names":[],"mappings":"AAAA,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,iBAAiB,GAAG,mBAAmB,CAAC;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B,UAqBA"}
|
package/dist/label.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
function getDefaultBlockLabel(data) {
|
|
2
|
+
const parts = [];
|
|
3
|
+
// Add file name if available
|
|
4
|
+
if (data.fileName) {
|
|
5
|
+
parts.push(data.fileName);
|
|
6
|
+
}
|
|
7
|
+
// Add similarity type label
|
|
8
|
+
const similarityLabel = data.similarityType === 'alignment-score' ? 'BLOSUM' : 'Exact Match';
|
|
9
|
+
if (similarityLabel) {
|
|
10
|
+
parts.push(similarityLabel);
|
|
11
|
+
}
|
|
12
|
+
// Add identity threshold
|
|
13
|
+
parts.push(`ident:${data.identity}`);
|
|
14
|
+
// Add coverage threshold
|
|
15
|
+
parts.push(`cov:${data.coverageThreshold}`);
|
|
16
|
+
return parts.filter(Boolean).join(', ');
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { getDefaultBlockLabel };
|
|
20
|
+
//# sourceMappingURL=label.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"label.js","sources":["../src/label.ts"],"sourcesContent":["export function getDefaultBlockLabel(data: {\n fileName?: string;\n similarityType: 'alignment-score' | 'sequence-identity';\n identity: number;\n coverageThreshold: number;\n}) {\n const parts: string[] = [];\n\n // Add file name if available\n if (data.fileName) {\n parts.push(data.fileName);\n }\n\n // Add similarity type label\n const similarityLabel = data.similarityType === 'alignment-score' ? 'BLOSUM' : 'Exact Match';\n if (similarityLabel) {\n parts.push(similarityLabel);\n }\n\n // Add identity threshold\n parts.push(`ident:${data.identity}`);\n\n // Add coverage threshold\n parts.push(`cov:${data.coverageThreshold}`);\n\n return parts.filter(Boolean).join(', ');\n}\n"],"names":[],"mappings":"AAAM,SAAU,oBAAoB,CAAC,IAKpC,EAAA;IACC,MAAM,KAAK,GAAa,EAAE;;AAG1B,IAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACjB,QAAA,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3B;;AAGA,IAAA,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,KAAK,iBAAiB,GAAG,QAAQ,GAAG,aAAa;IAC5F,IAAI,eAAe,EAAE;AACnB,QAAA,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;IAC7B;;IAGA,KAAK,CAAC,IAAI,CAAC,CAAA,MAAA,EAAS,IAAI,CAAC,QAAQ,CAAA,CAAE,CAAC;;IAGpC,KAAK,CAAC,IAAI,CAAC,CAAA,IAAA,EAAO,IAAI,CAAC,iBAAiB,CAAA,CAAE,CAAC;IAE3C,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;AACzC;;;;"}
|