@platforma-open/milaboratories.immune-assay-data.model 1.2.0 → 1.3.0
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 +11 -11
- package/CHANGELOG.md +6 -0
- package/dist/bundle.js +17 -29
- package/dist/bundle.js.map +1 -1
- package/dist/index.cjs +17 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -29
- package/dist/index.js.map +1 -1
- package/dist/model.json +1 -1
- package/package.json +1 -1
- package/src/index.ts +20 -21
package/dist/index.cjs
CHANGED
|
@@ -36,35 +36,23 @@ var model = model$1.BlockModel.create().withArgs({
|
|
|
36
36
|
if (ref === void 0) return void 0;
|
|
37
37
|
const isSingleCell = ctx.resultPool.getPColumnSpecByRef(ref)?.axesSpec[1].name === "pl7.app/vdj/scClonotypeKey";
|
|
38
38
|
const sequenceMatchers = [];
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
"pl7.app/vdj/scClonotypeChain/index": "primary"
|
|
57
|
-
}
|
|
58
|
-
});
|
|
59
|
-
} else {
|
|
60
|
-
sequenceMatchers.push({
|
|
61
|
-
axes: [{ anchor: "main", idx: 1 }],
|
|
62
|
-
name: "pl7.app/vdj/sequence",
|
|
63
|
-
domain: {
|
|
64
|
-
"pl7.app/vdj/feature": feature
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
}
|
|
39
|
+
if (isSingleCell) {
|
|
40
|
+
sequenceMatchers.push({
|
|
41
|
+
axes: [{ anchor: "main", idx: 1 }],
|
|
42
|
+
name: "pl7.app/vdj/sequence",
|
|
43
|
+
domain: {
|
|
44
|
+
// 'pl7.app/vdj/feature': feature,
|
|
45
|
+
"pl7.app/vdj/scClonotypeChain/index": "primary"
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
} else {
|
|
49
|
+
sequenceMatchers.push({
|
|
50
|
+
axes: [{ anchor: "main", idx: 1 }],
|
|
51
|
+
name: "pl7.app/vdj/sequence",
|
|
52
|
+
domain: {
|
|
53
|
+
// 'pl7.app/vdj/feature': feature,
|
|
54
|
+
}
|
|
55
|
+
});
|
|
68
56
|
}
|
|
69
57
|
return ctx.resultPool.getCanonicalOptions(
|
|
70
58
|
{ main: ref },
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":["BlockModel","createPlDataTableStateV2","createPlDataTableV2"],"mappings":";;;;;AA2CO,IAAM,KAAQ,GAAAA,kBAAA,CAAW,MAAO,EAAA,CAEpC,QAAoB,CAAA;AAAA,EACnB,QAAU,EAAA;AAAA,IACR,iBAAmB,EAAA,IAAA;AAAA;AAAA,IACnB,QAAU,EAAA,GAAA;AAAA,IACV,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,iBAAiB;AACnB,CAAC,EAEA,WAAqB,CAAA;AAAA,EACpB,KAAO,EAAA,mBAAA;AAAA,EACP,YAAYC,gCAAyB;AACvC,CAAC,CAEA,CAAA,SAAA;AAAA,EAAU,CAAC,GACV,KAAA,GAAA,CAAI,IAAK,CAAA,UAAA,KAAe,UACrB,GAAI,CAAA,IAAA,CAAK,UAAe,KAAA,MAAA,IACxB,GAAI,CAAA,IAAA,CAAK,kBAAkB,MAC3B,IAAA,GAAA,CAAI,IAAK,CAAA,oBAAA,KAAyB,MAClC,IAAA,GAAA,CAAI,KAAK,SAAc,KAAA,MAAA,IACvB,GAAI,CAAA,OAAA,CAAQ,eAAoB,KAAA;AACrC,CAEC,CAAA,MAAA;AAAA,EAAO,gBAAA;AAAA,EAAkB,CAAC,GAAA,KACzB,GAAI,CAAA,UAAA,CAAW,WAAW,CAAC;AAAA,IACzB,IAAM,EAAA;AAAA,MACJ,EAAE,MAAM,kBAAmB,EAAA;AAAA,MAC3B,EAAE,MAAM,0BAA2B;AAAA,KACrC;AAAA,IACA,WAAA,EAAa,EAAE,kBAAA,EAAoB,MAAO;AAAA,GACzC,EAAA;AAAA,IACD,IAAM,EAAA;AAAA,MACJ,EAAE,MAAM,kBAAmB,EAAA;AAAA,MAC3B,EAAE,MAAM,4BAA6B;AAAA,KACvC;AAAA,IACA,WAAA,EAAa,EAAE,kBAAA,EAAoB,MAAO;AAAA,GAC3C,CAAA,EAAG,EAAE,mBAAA,EAAqB,MAAM;AACnC,CAEC,CAAA,MAAA,CAAO,eAAiB,EAAA,CAAC,GAAQ,KAAA;AAChC,EAAM,MAAA,GAAA,GAAM,IAAI,IAAK,CAAA,UAAA;AACrB,EAAI,IAAA,GAAA,KAAQ,QAAkB,OAAA,MAAA;AAE9B,EAAM,MAAA,YAAA,GAAe,IAAI,UAAW,CAAA,mBAAA,CAAoB,GAAG,CAAG,EAAA,QAAA,CAAS,CAAC,CAAA,CAAE,IAAS,KAAA,4BAAA;AACnF,EAAA,MAAM,mBAAmB,EAAC;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["BlockModel","createPlDataTableStateV2","createPlDataTableV2"],"mappings":"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","file":"index.cjs","sourcesContent":["import type {\n ImportFileHandle,\n InferOutputsType,\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 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 title: string;\n fileImportError?: string;\n tableState: PlDataTableStateV2;\n};\n\nexport const model = BlockModel.create()\n\n .withArgs<BlockArgs>({\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 title: 'Immune Assay Data',\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 .output('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((ctx) => ctx.uiState.title)\n\n .sections((_ctx) => ([\n { type: 'link', href: '/', label: 'Main' },\n ]))\n\n .done();\n\nexport type BlockOutputs = InferOutputsType<typeof model>;\n"]}
|
package/dist/index.js
CHANGED
|
@@ -34,35 +34,23 @@ var model = BlockModel.create().withArgs({
|
|
|
34
34
|
if (ref === void 0) return void 0;
|
|
35
35
|
const isSingleCell = ctx.resultPool.getPColumnSpecByRef(ref)?.axesSpec[1].name === "pl7.app/vdj/scClonotypeKey";
|
|
36
36
|
const sequenceMatchers = [];
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"pl7.app/vdj/scClonotypeChain/index": "primary"
|
|
55
|
-
}
|
|
56
|
-
});
|
|
57
|
-
} else {
|
|
58
|
-
sequenceMatchers.push({
|
|
59
|
-
axes: [{ anchor: "main", idx: 1 }],
|
|
60
|
-
name: "pl7.app/vdj/sequence",
|
|
61
|
-
domain: {
|
|
62
|
-
"pl7.app/vdj/feature": feature
|
|
63
|
-
}
|
|
64
|
-
});
|
|
65
|
-
}
|
|
37
|
+
if (isSingleCell) {
|
|
38
|
+
sequenceMatchers.push({
|
|
39
|
+
axes: [{ anchor: "main", idx: 1 }],
|
|
40
|
+
name: "pl7.app/vdj/sequence",
|
|
41
|
+
domain: {
|
|
42
|
+
// 'pl7.app/vdj/feature': feature,
|
|
43
|
+
"pl7.app/vdj/scClonotypeChain/index": "primary"
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
} else {
|
|
47
|
+
sequenceMatchers.push({
|
|
48
|
+
axes: [{ anchor: "main", idx: 1 }],
|
|
49
|
+
name: "pl7.app/vdj/sequence",
|
|
50
|
+
domain: {
|
|
51
|
+
// 'pl7.app/vdj/feature': feature,
|
|
52
|
+
}
|
|
53
|
+
});
|
|
66
54
|
}
|
|
67
55
|
return ctx.resultPool.getCanonicalOptions(
|
|
68
56
|
{ main: ref },
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":";;;AA2CO,IAAM,KAAQ,GAAA,UAAA,CAAW,MAAO,EAAA,CAEpC,QAAoB,CAAA;AAAA,EACnB,QAAU,EAAA;AAAA,IACR,iBAAmB,EAAA,IAAA;AAAA;AAAA,IACnB,QAAU,EAAA,GAAA;AAAA,IACV,cAAgB,EAAA;AAAA,GAClB;AAAA,EACA,iBAAiB;AACnB,CAAC,EAEA,WAAqB,CAAA;AAAA,EACpB,KAAO,EAAA,mBAAA;AAAA,EACP,YAAY,wBAAyB;AACvC,CAAC,CAEA,CAAA,SAAA;AAAA,EAAU,CAAC,GACV,KAAA,GAAA,CAAI,IAAK,CAAA,UAAA,KAAe,UACrB,GAAI,CAAA,IAAA,CAAK,UAAe,KAAA,MAAA,IACxB,GAAI,CAAA,IAAA,CAAK,kBAAkB,MAC3B,IAAA,GAAA,CAAI,IAAK,CAAA,oBAAA,KAAyB,MAClC,IAAA,GAAA,CAAI,KAAK,SAAc,KAAA,MAAA,IACvB,GAAI,CAAA,OAAA,CAAQ,eAAoB,KAAA;AACrC,CAEC,CAAA,MAAA;AAAA,EAAO,gBAAA;AAAA,EAAkB,CAAC,GAAA,KACzB,GAAI,CAAA,UAAA,CAAW,WAAW,CAAC;AAAA,IACzB,IAAM,EAAA;AAAA,MACJ,EAAE,MAAM,kBAAmB,EAAA;AAAA,MAC3B,EAAE,MAAM,0BAA2B;AAAA,KACrC;AAAA,IACA,WAAA,EAAa,EAAE,kBAAA,EAAoB,MAAO;AAAA,GACzC,EAAA;AAAA,IACD,IAAM,EAAA;AAAA,MACJ,EAAE,MAAM,kBAAmB,EAAA;AAAA,MAC3B,EAAE,MAAM,4BAA6B;AAAA,KACvC;AAAA,IACA,WAAA,EAAa,EAAE,kBAAA,EAAoB,MAAO;AAAA,GAC3C,CAAA,EAAG,EAAE,mBAAA,EAAqB,MAAM;AACnC,CAEC,CAAA,MAAA,CAAO,eAAiB,EAAA,CAAC,GAAQ,KAAA;AAChC,EAAM,MAAA,GAAA,GAAM,IAAI,IAAK,CAAA,UAAA;AACrB,EAAI,IAAA,GAAA,KAAQ,QAAkB,OAAA,MAAA;AAE9B,EAAM,MAAA,YAAA,GAAe,IAAI,UAAW,CAAA,mBAAA,CAAoB,GAAG,CAAG,EAAA,QAAA,CAAS,CAAC,CAAA,CAAE,IAAS,KAAA,4BAAA;AACnF,EAAA,MAAM,mBAAmB,EAAC;
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import type {\n ImportFileHandle,\n InferOutputsType,\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 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 title: string;\n fileImportError?: string;\n tableState: PlDataTableStateV2;\n};\n\nexport const model = BlockModel.create()\n\n .withArgs<BlockArgs>({\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 title: 'Immune Assay Data',\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 .output('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((ctx) => ctx.uiState.title)\n\n .sections((_ctx) => ([\n { type: 'link', href: '/', label: 'Main' },\n ]))\n\n .done();\n\nexport type BlockOutputs = InferOutputsType<typeof model>;\n"]}
|