@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/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
@@ -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":"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"}
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").OutputWithStatus<{
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
- __unwrap: true;
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
- __unwrap: true;
46
- };
47
- dataImportHandle: import("@platforma-sdk/model").OutputWithStatus<import("@platforma-sdk/model").ImportProgress | undefined> & {
48
- __unwrap: true;
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
- __unwrap: false;
52
+ } | undefined> & {
53
+ withStatus: true;
56
54
  };
57
- isRunning: import("@platforma-sdk/model").OutputWithStatus<boolean> & {
58
- __unwrap: true;
59
- };
60
- }, UiState, "/">>;
61
- export {};
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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,EACL,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAO9B,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;CAChC,CAAC;AAEF,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAgHR,CAAC"}
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;;;;"}
@@ -0,0 +1,7 @@
1
+ export declare function getDefaultBlockLabel(data: {
2
+ fileName?: string;
3
+ similarityType: 'alignment-score' | 'sequence-identity';
4
+ identity: number;
5
+ coverageThreshold: number;
6
+ }): string;
7
+ //# sourceMappingURL=label.d.ts.map
@@ -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;;;;"}