msa-parsers 5.9.0 → 6.0.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/dist/gff/annotationsToGFF.d.ts +9 -0
- package/dist/gff/annotationsToGFF.js +36 -0
- package/dist/gff/annotationsToGFF.js.map +1 -0
- package/dist/gff/gffToAnnotations.d.ts +9 -0
- package/dist/gff/gffToAnnotations.js +53 -0
- package/dist/gff/gffToAnnotations.js.map +1 -0
- package/dist/gff/gffToAnnotations.test.js +71 -0
- package/dist/gff/gffToAnnotations.test.js.map +1 -0
- package/dist/gff/index.d.ts +2 -1
- package/dist/gff/index.js +2 -1
- package/dist/gff/index.js.map +1 -1
- package/dist/gff/interProToGFF.d.ts +3 -2
- package/dist/gff/interProToGFF.js +7 -43
- package/dist/gff/interProToGFF.js.map +1 -1
- package/dist/gff/interProToGFF.test.js +3 -2
- package/dist/gff/interProToGFF.test.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/interProScanToAnnotations.d.ts +21 -0
- package/dist/interProScanToAnnotations.js +38 -0
- package/dist/interProScanToAnnotations.js.map +1 -0
- package/dist/msa/A3mMSA.js +7 -1
- package/dist/msa/A3mMSA.js.map +1 -1
- package/dist/msa/ClustalMSA.js +3 -1
- package/dist/msa/ClustalMSA.js.map +1 -1
- package/dist/msa/EmfMSA.js +3 -1
- package/dist/msa/EmfMSA.js.map +1 -1
- package/dist/msa/index.test.js +5 -1
- package/dist/msa/index.test.js.map +1 -1
- package/dist/types.d.ts +24 -0
- package/dist/util.d.ts +10 -0
- package/dist/util.js +27 -6
- package/dist/util.js.map +1 -1
- package/dist/util.test.d.ts +1 -0
- package/dist/util.test.js +40 -0
- package/dist/util.test.js.map +1 -0
- package/package.json +1 -1
- package/src/gff/annotationsToGFF.ts +37 -0
- package/src/gff/gffToAnnotations.test.ts +85 -0
- package/src/gff/gffToAnnotations.ts +59 -0
- package/src/gff/index.ts +2 -1
- package/src/gff/interProToGFF.test.ts +3 -2
- package/src/gff/interProToGFF.ts +11 -50
- package/src/index.ts +9 -2
- package/src/interProScanToAnnotations.ts +55 -0
- package/src/msa/A3mMSA.ts +7 -1
- package/src/msa/ClustalMSA.ts +3 -1
- package/src/msa/EmfMSA.ts +3 -1
- package/src/msa/index.test.ts +5 -1
- package/src/types.ts +25 -0
- package/src/util.test.ts +47 -0
- package/src/util.ts +29 -9
- package/dist/gff/gffToInterPro.d.ts +0 -6
- package/dist/gff/gffToInterPro.js +0 -90
- package/dist/gff/gffToInterPro.js.map +0 -1
- package/dist/gff/gffToInterPro.test.js +0 -241
- package/dist/gff/gffToInterPro.test.js.map +0 -1
- package/src/gff/gffToInterPro.test.ts +0 -265
- package/src/gff/gffToInterPro.ts +0 -122
- /package/dist/gff/{gffToInterPro.test.d.ts → gffToAnnotations.test.d.ts} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Annotation } from '../types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Write annotations as GFF3, one line per annotation, in list order.
|
|
4
|
+
*
|
|
5
|
+
* The source column is always `InterProScan`: an Annotation records no source
|
|
6
|
+
* of its own, and the CLI's precomputed-lookup path depends on this output
|
|
7
|
+
* matching what a real InterProScan run emits, byte for byte.
|
|
8
|
+
*/
|
|
9
|
+
export declare function annotationsToGFF(annotations: Annotation[]): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Write annotations as GFF3, one line per annotation, in list order.
|
|
3
|
+
*
|
|
4
|
+
* The source column is always `InterProScan`: an Annotation records no source
|
|
5
|
+
* of its own, and the CLI's precomputed-lookup path depends on this output
|
|
6
|
+
* matching what a real InterProScan run emits, byte for byte.
|
|
7
|
+
*/
|
|
8
|
+
export function annotationsToGFF(annotations) {
|
|
9
|
+
return [
|
|
10
|
+
'##gff-version 3',
|
|
11
|
+
...annotations.map(annotation => {
|
|
12
|
+
const { accession, name, description, featureType } = annotation;
|
|
13
|
+
const { id, start, end, strand } = annotation;
|
|
14
|
+
return [
|
|
15
|
+
id,
|
|
16
|
+
'InterProScan',
|
|
17
|
+
// GFF-sourced annotations carry their original type; writing every
|
|
18
|
+
// feature back out as protein_match would turn an exon overlay into
|
|
19
|
+
// generic domains on the next read, losing the numbered-segment
|
|
20
|
+
// rendering and the gene arrowheads
|
|
21
|
+
featureType ?? 'protein_match',
|
|
22
|
+
start,
|
|
23
|
+
end,
|
|
24
|
+
'.',
|
|
25
|
+
strand === undefined ? '.' : strand > 0 ? '+' : '-',
|
|
26
|
+
'.',
|
|
27
|
+
[
|
|
28
|
+
`Name=${encodeURIComponent(accession)}`,
|
|
29
|
+
`signature_desc=${encodeURIComponent(name)}`,
|
|
30
|
+
`description=${encodeURIComponent(description)}`,
|
|
31
|
+
].join(';'),
|
|
32
|
+
].join('\t');
|
|
33
|
+
}),
|
|
34
|
+
].join('\n');
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=annotationsToGFF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"annotationsToGFF.js","sourceRoot":"","sources":["../../src/gff/annotationsToGFF.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,WAAyB;IACxD,OAAO;QACL,iBAAiB;QACjB,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAC9B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,UAAU,CAAA;YAChE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,UAAU,CAAA;YAC7C,OAAO;gBACL,EAAE;gBACF,cAAc;gBACd,mEAAmE;gBACnE,oEAAoE;gBACpE,gEAAgE;gBAChE,oCAAoC;gBACpC,WAAW,IAAI,eAAe;gBAC9B,KAAK;gBACL,GAAG;gBACH,GAAG;gBACH,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;gBACnD,GAAG;gBACH;oBACE,QAAQ,kBAAkB,CAAC,SAAS,CAAC,EAAE;oBACvC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,EAAE;oBAC5C,eAAe,kBAAkB,CAAC,WAAW,CAAC,EAAE;iBACjD,CAAC,IAAI,CAAC,GAAG,CAAC;aACZ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACd,CAAC,CAAC;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Annotation, GFFRecord } from '../types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Convert GFF records to annotations, one per record, in file order.
|
|
4
|
+
*
|
|
5
|
+
* InterProScan's own GFF3 output falls out of the same mapping: it writes
|
|
6
|
+
* `Name` as the signature accession and `signature_desc` as its human-readable
|
|
7
|
+
* name, with domain positions 1-based.
|
|
8
|
+
*/
|
|
9
|
+
export declare function gffToAnnotations(gffRecords: GFFRecord[]): Annotation[];
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
// Feature types that read as a directional "gene" and get an arrowhead in the
|
|
2
|
+
// overlay. Exon/CDS/UTR/domain features deliberately stay rectangular blocks —
|
|
3
|
+
// turning every exon into an arrow is misleading, since exons are segments of a
|
|
4
|
+
// single transcript, not independently-oriented genes.
|
|
5
|
+
const GENE_LEVEL_TYPES = new Set([
|
|
6
|
+
'gene',
|
|
7
|
+
'pseudogene',
|
|
8
|
+
'mRNA',
|
|
9
|
+
'transcript',
|
|
10
|
+
'primary_transcript',
|
|
11
|
+
'ncRNA',
|
|
12
|
+
'tRNA',
|
|
13
|
+
'rRNA',
|
|
14
|
+
'snRNA',
|
|
15
|
+
'snoRNA',
|
|
16
|
+
'miRNA',
|
|
17
|
+
'lnc_RNA',
|
|
18
|
+
]);
|
|
19
|
+
// +1/-1 for a stranded gene-level feature, undefined otherwise (which the
|
|
20
|
+
// renderer draws as a plain block).
|
|
21
|
+
function geneStrand({ type, strand }) {
|
|
22
|
+
const directional = strand === '+' ? 1 : strand === '-' ? -1 : undefined;
|
|
23
|
+
return GENE_LEVEL_TYPES.has(type) ? directional : undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Convert GFF records to annotations, one per record, in file order.
|
|
27
|
+
*
|
|
28
|
+
* InterProScan's own GFF3 output falls out of the same mapping: it writes
|
|
29
|
+
* `Name` as the signature accession and `signature_desc` as its human-readable
|
|
30
|
+
* name, with domain positions 1-based.
|
|
31
|
+
*/
|
|
32
|
+
export function gffToAnnotations(gffRecords) {
|
|
33
|
+
return gffRecords.map(record => {
|
|
34
|
+
const accession = record.Name ||
|
|
35
|
+
record.ID ||
|
|
36
|
+
`${record.source}_${record.start}_${record.end}`;
|
|
37
|
+
const name = record.signature_desc || record.Name || accession;
|
|
38
|
+
return {
|
|
39
|
+
id: record.seq_id,
|
|
40
|
+
accession,
|
|
41
|
+
name,
|
|
42
|
+
description: record.Ontology_term ||
|
|
43
|
+
record.description ||
|
|
44
|
+
record.Note ||
|
|
45
|
+
name,
|
|
46
|
+
featureType: record.type,
|
|
47
|
+
start: record.start,
|
|
48
|
+
end: record.end,
|
|
49
|
+
strand: geneStrand(record),
|
|
50
|
+
};
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=gffToAnnotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gffToAnnotations.js","sourceRoot":"","sources":["../../src/gff/gffToAnnotations.ts"],"names":[],"mappings":"AAEA,8EAA8E;AAC9E,+EAA+E;AAC/E,gFAAgF;AAChF,uDAAuD;AACvD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,MAAM;IACN,YAAY;IACZ,MAAM;IACN,YAAY;IACZ,oBAAoB;IACpB,OAAO;IACP,MAAM;IACN,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,SAAS;CACV,CAAC,CAAA;AAEF,0EAA0E;AAC1E,oCAAoC;AACpC,SAAS,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAa;IAC7C,MAAM,WAAW,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACxE,OAAO,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAuB;IACtD,OAAO,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QAC7B,MAAM,SAAS,GACZ,MAAM,CAAC,IAAe;YACtB,MAAM,CAAC,EAAa;YACrB,GAAG,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,EAAE,CAAA;QAClD,MAAM,IAAI,GACP,MAAM,CAAC,cAAyB,IAAK,MAAM,CAAC,IAAe,IAAI,SAAS,CAAA;QAC3E,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,MAAM;YACjB,SAAS;YACT,IAAI;YACJ,WAAW,EACR,MAAM,CAAC,aAAwB;gBAC/B,MAAM,CAAC,WAAsB;gBAC7B,MAAM,CAAC,IAAe;gBACvB,IAAI;YACN,WAAW,EAAE,MAAM,CAAC,IAAI;YACxB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC;SAC3B,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { expect, test } from 'vitest';
|
|
2
|
+
import { gffToAnnotations } from './gffToAnnotations.js';
|
|
3
|
+
function record(fields = {}) {
|
|
4
|
+
return {
|
|
5
|
+
seq_id: 'seq1',
|
|
6
|
+
source: 'Pfam',
|
|
7
|
+
type: 'protein_match',
|
|
8
|
+
start: 10,
|
|
9
|
+
end: 50,
|
|
10
|
+
score: 0,
|
|
11
|
+
strand: '.',
|
|
12
|
+
phase: '.',
|
|
13
|
+
...fields,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
test('converts empty array', () => {
|
|
17
|
+
expect(gffToAnnotations([])).toEqual([]);
|
|
18
|
+
});
|
|
19
|
+
test('maps a record onto the annotation fields', () => {
|
|
20
|
+
expect(gffToAnnotations([
|
|
21
|
+
record({
|
|
22
|
+
Name: 'PF00001',
|
|
23
|
+
signature_desc: '7tm_1',
|
|
24
|
+
description: 'GPCR family',
|
|
25
|
+
}),
|
|
26
|
+
])).toEqual([
|
|
27
|
+
{
|
|
28
|
+
id: 'seq1',
|
|
29
|
+
accession: 'PF00001',
|
|
30
|
+
name: '7tm_1',
|
|
31
|
+
description: 'GPCR family',
|
|
32
|
+
featureType: 'protein_match',
|
|
33
|
+
start: 10,
|
|
34
|
+
end: 50,
|
|
35
|
+
strand: undefined,
|
|
36
|
+
},
|
|
37
|
+
]);
|
|
38
|
+
});
|
|
39
|
+
test('keeps one annotation per record, in file order', () => {
|
|
40
|
+
const annotations = gffToAnnotations([
|
|
41
|
+
record({ Name: 'PF00001', start: 10, end: 50 }),
|
|
42
|
+
record({ Name: 'PF00001', start: 100, end: 150 }),
|
|
43
|
+
record({ seq_id: 'seq2', Name: 'PF00002', start: 5, end: 40 }),
|
|
44
|
+
]);
|
|
45
|
+
expect(annotations.map(a => [a.id, a.accession, a.start, a.end])).toEqual([
|
|
46
|
+
['seq1', 'PF00001', 10, 50],
|
|
47
|
+
['seq1', 'PF00001', 100, 150],
|
|
48
|
+
['seq2', 'PF00002', 5, 40],
|
|
49
|
+
]);
|
|
50
|
+
});
|
|
51
|
+
test('gives gene-level features a direction but leaves exons/domains as blocks', () => {
|
|
52
|
+
const annotations = gffToAnnotations([
|
|
53
|
+
record({ type: 'gene', strand: '+', Name: 'GENEA' }),
|
|
54
|
+
record({ type: 'mRNA', strand: '-', Name: 'GENEB' }),
|
|
55
|
+
record({ type: 'exon', strand: '+', Name: 'exon-1' }),
|
|
56
|
+
record({ type: 'protein_match', strand: '+', Name: 'PF00001' }),
|
|
57
|
+
]);
|
|
58
|
+
expect(Object.fromEntries(annotations.map(a => [a.accession, a.strand]))).toEqual({
|
|
59
|
+
GENEA: 1, // + gene -> arrow right
|
|
60
|
+
GENEB: -1, // - gene -> arrow left
|
|
61
|
+
'exon-1': undefined, // exon stays a block even though it is stranded
|
|
62
|
+
PF00001: undefined, // protein domain stays a block
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
test('falls back from Name to ID to source and positions', () => {
|
|
66
|
+
expect(gffToAnnotations([
|
|
67
|
+
record({ ID: 'domain_123' }),
|
|
68
|
+
record({ source: 'CustomSource' }),
|
|
69
|
+
]).map(a => a.accession)).toEqual(['domain_123', 'CustomSource_10_50']);
|
|
70
|
+
});
|
|
71
|
+
//# sourceMappingURL=gffToAnnotations.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gffToAnnotations.test.js","sourceRoot":"","sources":["../../src/gff/gffToAnnotations.test.ts"],"names":[],"mappings":"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"}
|
package/dist/gff/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { parseGFF } from './parseGFF.ts';
|
|
2
|
-
export {
|
|
2
|
+
export { gffToAnnotations } from './gffToAnnotations.ts';
|
|
3
|
+
export { annotationsToGFF } from './annotationsToGFF.ts';
|
|
3
4
|
export { interProResponseToGFF, interProToGFF } from './interProToGFF.ts';
|
package/dist/gff/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { parseGFF } from './parseGFF.js';
|
|
2
|
-
export {
|
|
2
|
+
export { gffToAnnotations } from './gffToAnnotations.js';
|
|
3
|
+
export { annotationsToGFF } from './annotationsToGFF.js';
|
|
3
4
|
export { interProResponseToGFF, interProToGFF } from './interProToGFF.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
package/dist/gff/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gff/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import type { InterProScanResults } from '../types.ts';
|
|
2
2
|
/**
|
|
3
|
-
* Convert InterProScan results to GFF3
|
|
3
|
+
* Convert InterProScan results, keyed by the row name they attach to, to GFF3.
|
|
4
4
|
*/
|
|
5
5
|
export declare function interProToGFF(results: Record<string, InterProScanResults>): string;
|
|
6
6
|
/**
|
|
7
|
-
* Convert InterProScan
|
|
7
|
+
* Convert a list of InterProScan results to GFF3, taking each one's row name
|
|
8
|
+
* from its xref.
|
|
8
9
|
*/
|
|
9
10
|
export declare function interProResponseToGFF(results: InterProScanResults[]): string;
|
|
@@ -1,52 +1,16 @@
|
|
|
1
|
+
import { indexResultsByXref, interProScanToAnnotations, } from '../interProScanToAnnotations.js';
|
|
2
|
+
import { annotationsToGFF } from './annotationsToGFF.js';
|
|
1
3
|
/**
|
|
2
|
-
* Convert InterProScan results to GFF3
|
|
4
|
+
* Convert InterProScan results, keyed by the row name they attach to, to GFF3.
|
|
3
5
|
*/
|
|
4
6
|
export function interProToGFF(results) {
|
|
5
|
-
|
|
6
|
-
for (const [seqId, data] of Object.entries(results)) {
|
|
7
|
-
for (const match of data.matches) {
|
|
8
|
-
const entry = match.signature.entry;
|
|
9
|
-
if (!entry) {
|
|
10
|
-
continue;
|
|
11
|
-
}
|
|
12
|
-
for (const location of match.locations) {
|
|
13
|
-
const attributes = [
|
|
14
|
-
`Name=${encodeURIComponent(entry.accession)}`,
|
|
15
|
-
`signature_desc=${encodeURIComponent(entry.name)}`,
|
|
16
|
-
`description=${encodeURIComponent(entry.description)}`,
|
|
17
|
-
].join(';');
|
|
18
|
-
const line = [
|
|
19
|
-
seqId,
|
|
20
|
-
'InterProScan',
|
|
21
|
-
// GFF-sourced annotations carry their original type; writing every
|
|
22
|
-
// feature back out as protein_match would turn an exon overlay into
|
|
23
|
-
// generic domains on the next read, losing the numbered-segment
|
|
24
|
-
// rendering and the gene arrowheads
|
|
25
|
-
entry.featureType ?? 'protein_match',
|
|
26
|
-
location.start,
|
|
27
|
-
location.end,
|
|
28
|
-
'.',
|
|
29
|
-
location.strand === undefined ? '.' : location.strand > 0 ? '+' : '-',
|
|
30
|
-
'.',
|
|
31
|
-
attributes,
|
|
32
|
-
].join('\t');
|
|
33
|
-
lines.push(line);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
return lines.join('\n');
|
|
7
|
+
return annotationsToGFF(interProScanToAnnotations(results));
|
|
38
8
|
}
|
|
39
9
|
/**
|
|
40
|
-
* Convert InterProScan
|
|
10
|
+
* Convert a list of InterProScan results to GFF3, taking each one's row name
|
|
11
|
+
* from its xref.
|
|
41
12
|
*/
|
|
42
13
|
export function interProResponseToGFF(results) {
|
|
43
|
-
|
|
44
|
-
for (const result of results) {
|
|
45
|
-
const seqId = result.xref[0]?.id;
|
|
46
|
-
if (seqId) {
|
|
47
|
-
resultsMap[seqId] = result;
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
return interProToGFF(resultsMap);
|
|
14
|
+
return interProToGFF(indexResultsByXref(results));
|
|
51
15
|
}
|
|
52
16
|
//# sourceMappingURL=interProToGFF.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interProToGFF.js","sourceRoot":"","sources":["../../src/gff/interProToGFF.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interProToGFF.js","sourceRoot":"","sources":["../../src/gff/interProToGFF.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAIxD;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA4C;IAE5C,OAAO,gBAAgB,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,CAAA;AAC7D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAA8B;IAClE,OAAO,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAA;AACnD,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { describe, expect, test } from 'vitest';
|
|
2
|
-
import {
|
|
2
|
+
import { annotationsToGFF } from './annotationsToGFF.js';
|
|
3
|
+
import { gffToAnnotations } from './gffToAnnotations.js';
|
|
3
4
|
import { interProResponseToGFF, interProToGFF } from './interProToGFF.js';
|
|
4
5
|
import { parseGFF } from './parseGFF.js';
|
|
5
6
|
describe('interProToGFF', () => {
|
|
@@ -125,7 +126,7 @@ describe('interProToGFF', () => {
|
|
|
125
126
|
'seq1\tRefSeq\tmRNA\t1\t99\t.\t+\t.\tName=NM_1',
|
|
126
127
|
'seq1\tRefSeq\texon\t1\t30\t.\t+\t.\tName=exon-1',
|
|
127
128
|
].join('\n');
|
|
128
|
-
const rows =
|
|
129
|
+
const rows = annotationsToGFF(gffToAnnotations(parseGFF(gff)))
|
|
129
130
|
.split('\n')
|
|
130
131
|
.slice(1)
|
|
131
132
|
.map(l => l.split('\t'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interProToGFF.test.js","sourceRoot":"","sources":["../../src/gff/interProToGFF.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"interProToGFF.test.js","sourceRoot":"","sources":["../../src/gff/interProToGFF.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,4 +2,5 @@ export type * from './types.ts';
|
|
|
2
2
|
export { generateNodeIds } from './util.ts';
|
|
3
3
|
export { A3mMSA, ClustalMSA, EmfMSA, FastaMSA, StockholmMSA, getUngappedSequence, parseEmfTree, parseMSA, parseNewick, stockholmSniff, } from './msa/index.ts';
|
|
4
4
|
export type { MSAFormat, MSAParserType } from './msa/index.ts';
|
|
5
|
-
export {
|
|
5
|
+
export { indexResultsByXref, interProScanResponseToAnnotations, interProScanToAnnotations, } from './interProScanToAnnotations.ts';
|
|
6
|
+
export { annotationsToGFF, gffToAnnotations, interProResponseToGFF, interProToGFF, parseGFF, } from './gff/index.ts';
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
export { generateNodeIds } from './util.js';
|
|
3
3
|
// MSA parsers
|
|
4
4
|
export { A3mMSA, ClustalMSA, EmfMSA, FastaMSA, StockholmMSA, getUngappedSequence, parseEmfTree, parseMSA, parseNewick, stockholmSniff, } from './msa/index.js';
|
|
5
|
+
// Overlay annotations: the canonical shape, and the adapters onto it
|
|
6
|
+
export { indexResultsByXref, interProScanResponseToAnnotations, interProScanToAnnotations, } from './interProScanToAnnotations.js';
|
|
5
7
|
// GFF parsing
|
|
6
|
-
export {
|
|
8
|
+
export { annotationsToGFF, gffToAnnotations, interProResponseToGFF, interProToGFF, parseGFF, } from './gff/index.js';
|
|
7
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,cAAc;AACd,OAAO,EACL,MAAM,EACN,UAAU,EACV,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,gBAAgB,CAAA;AAGvB,cAAc;AACd,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY;AACZ,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAE3C,cAAc;AACd,OAAO,EACL,MAAM,EACN,UAAU,EACV,MAAM,EACN,QAAQ,EACR,YAAY,EACZ,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,gBAAgB,CAAA;AAGvB,qEAAqE;AACrE,OAAO,EACL,kBAAkB,EAClB,iCAAiC,EACjC,yBAAyB,GAC1B,MAAM,gCAAgC,CAAA;AAEvC,cAAc;AACd,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,QAAQ,GACT,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Annotation, InterProScanResponse, InterProScanResults } from './types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Key each result by its xref id, which is the row name its annotations attach
|
|
4
|
+
* to. A result without one is dropped rather than keyed `undefined`, which
|
|
5
|
+
* would draw a phantom row's worth of annotations (and rather than throwing,
|
|
6
|
+
* which would lose every other result over one malformed one).
|
|
7
|
+
*/
|
|
8
|
+
export declare function indexResultsByXref(results: InterProScanResults[]): {
|
|
9
|
+
[k: string]: InterProScanResults;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Flatten InterProScan results, keyed by the row name they attach to, into one
|
|
13
|
+
* annotation per signature location. A signature without an `entry` carries no
|
|
14
|
+
* accession or name to color, filter or label by, so it is dropped.
|
|
15
|
+
*/
|
|
16
|
+
export declare function interProScanToAnnotations(results: Record<string, InterProScanResults>): Annotation[];
|
|
17
|
+
/**
|
|
18
|
+
* Flatten a whole InterProScan JSON response, resolving each result's row name
|
|
19
|
+
* from its xref.
|
|
20
|
+
*/
|
|
21
|
+
export declare function interProScanResponseToAnnotations(response: InterProScanResponse): Annotation[];
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Key each result by its xref id, which is the row name its annotations attach
|
|
3
|
+
* to. A result without one is dropped rather than keyed `undefined`, which
|
|
4
|
+
* would draw a phantom row's worth of annotations (and rather than throwing,
|
|
5
|
+
* which would lose every other result over one malformed one).
|
|
6
|
+
*/
|
|
7
|
+
export function indexResultsByXref(results) {
|
|
8
|
+
return Object.fromEntries(results
|
|
9
|
+
.map(r => [r.xref[0]?.id, r])
|
|
10
|
+
.filter((e) => e[0] !== undefined));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Flatten InterProScan results, keyed by the row name they attach to, into one
|
|
14
|
+
* annotation per signature location. A signature without an `entry` carries no
|
|
15
|
+
* accession or name to color, filter or label by, so it is dropped.
|
|
16
|
+
*/
|
|
17
|
+
export function interProScanToAnnotations(results) {
|
|
18
|
+
return Object.entries(results).flatMap(([id, { matches }]) => matches.flatMap(({ signature: { entry }, locations }) => entry
|
|
19
|
+
? locations.map(({ start, end, strand }) => ({
|
|
20
|
+
id,
|
|
21
|
+
accession: entry.accession,
|
|
22
|
+
name: entry.name,
|
|
23
|
+
description: entry.description,
|
|
24
|
+
featureType: entry.featureType,
|
|
25
|
+
start,
|
|
26
|
+
end,
|
|
27
|
+
strand,
|
|
28
|
+
}))
|
|
29
|
+
: []));
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Flatten a whole InterProScan JSON response, resolving each result's row name
|
|
33
|
+
* from its xref.
|
|
34
|
+
*/
|
|
35
|
+
export function interProScanResponseToAnnotations(response) {
|
|
36
|
+
return interProScanToAnnotations(indexResultsByXref(response.results));
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=interProScanToAnnotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interProScanToAnnotations.js","sourceRoot":"","sources":["../src/interProScanToAnnotations.ts"],"names":[],"mappings":"AAMA;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA8B;IAC/D,OAAO,MAAM,CAAC,WAAW,CACvB,OAAO;SACJ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAU,CAAC;SACrC,MAAM,CAAC,CAAC,CAAC,EAAsC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CACzE,CAAA;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,yBAAyB,CACvC,OAA4C;IAE5C,OAAO,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAC3D,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,CACtD,KAAK;QACH,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;YACzC,EAAE;YACF,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,KAAK;YACL,GAAG;YACH,MAAM;SACP,CAAC,CAAC;QACL,CAAC,CAAC,EAAE,CACP,CACF,CAAA;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAC/C,QAA8B;IAE9B,OAAO,yBAAyB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;AACxE,CAAC"}
|
package/dist/msa/A3mMSA.js
CHANGED
|
@@ -100,7 +100,13 @@ export default class A3mMSA extends BaseMSA {
|
|
|
100
100
|
*/
|
|
101
101
|
function expandA3M(rawSeqs, names) {
|
|
102
102
|
const rows = rawSeqs.map(parseRow);
|
|
103
|
-
|
|
103
|
+
// a loop, not Math.max(...): an a3m from an hhblits search routinely carries
|
|
104
|
+
// six figures of hits, and spreading one argument per row throws
|
|
105
|
+
// "Maximum call stack size exceeded" somewhere past ~125k of them
|
|
106
|
+
let numPositions = 0;
|
|
107
|
+
for (const { matches } of rows) {
|
|
108
|
+
numPositions = Math.max(numPositions, matches.length);
|
|
109
|
+
}
|
|
104
110
|
// one insert slot before each match column, plus one trailing slot
|
|
105
111
|
const maxInserts = new Array(numPositions + 1).fill(0);
|
|
106
112
|
for (const { inserts } of rows) {
|
package/dist/msa/A3mMSA.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"A3mMSA.js","sourceRoot":"","sources":["../../src/msa/A3mMSA.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"A3mMSA.js","sourceRoot":"","sources":["../../src/msa/A3mMSA.ts"],"names":[],"mappings":"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"}
|
package/dist/msa/ClustalMSA.js
CHANGED
|
@@ -25,8 +25,10 @@ export default class ClustalMSA extends BaseMSA {
|
|
|
25
25
|
getHeader() {
|
|
26
26
|
return this.MSA.header;
|
|
27
27
|
}
|
|
28
|
+
// deduped, matching the first-wins byName map: emitting a repeated id twice
|
|
29
|
+
// renders a phantom duplicate row showing the first record's residues
|
|
28
30
|
getNames() {
|
|
29
|
-
return this.
|
|
31
|
+
return [...this.byName.keys()];
|
|
30
32
|
}
|
|
31
33
|
get seqConsensus() {
|
|
32
34
|
return this.MSA.consensus;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClustalMSA.js","sourceRoot":"","sources":["../../src/msa/ClustalMSA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IACrC,GAAG,CAA0B;IAErC,2EAA2E;IAC3E,oDAAoD;IAC5C,MAAM,CAAqB;IAEnC,YAAY,IAAY;QACtB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAChC,8CAA8C;YAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACpC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,QAAQ;QACN,OAAO,
|
|
1
|
+
{"version":3,"file":"ClustalMSA.js","sourceRoot":"","sources":["../../src/msa/ClustalMSA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAElC,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,OAAO;IACrC,GAAG,CAA0B;IAErC,2EAA2E;IAC3E,oDAAoD;IAC5C,MAAM,CAAqB;IAEnC,YAAY,IAAY;QACtB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QACtB,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YAChC,8CAA8C;YAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACpC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,CAAA;IACxB,CAAC;IAED,4EAA4E;IAC5E,sEAAsE;IACtE,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,CAAA;IAC3B,CAAC;CACF"}
|
package/dist/msa/EmfMSA.js
CHANGED
|
@@ -22,8 +22,10 @@ export default class EmfMSA extends BaseMSA {
|
|
|
22
22
|
getRow(name) {
|
|
23
23
|
return this.byName.get(name) ?? '';
|
|
24
24
|
}
|
|
25
|
+
// deduped, matching the first-wins byName map: emitting a repeated id twice
|
|
26
|
+
// renders a phantom duplicate row showing the first record's residues
|
|
25
27
|
getNames() {
|
|
26
|
-
return this.
|
|
28
|
+
return [...this.byName.keys()];
|
|
27
29
|
}
|
|
28
30
|
}
|
|
29
31
|
//# sourceMappingURL=EmfMSA.js.map
|
package/dist/msa/EmfMSA.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmfMSA.js","sourceRoot":"","sources":["../../src/msa/EmfMSA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IACjC,GAAG,CAAgC;IAE3C,2EAA2E;IAC3E,6DAA6D;IACrD,MAAM,CAAqB;IAEnC,YAAY,IAAY;QACtB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,8CAA8C;YAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACpC,CAAC;IAED,QAAQ;QACN,OAAO,
|
|
1
|
+
{"version":3,"file":"EmfMSA.js","sourceRoot":"","sources":["../../src/msa/EmfMSA.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpC,OAAO,OAAO,MAAM,cAAc,CAAA;AAElC,MAAM,CAAC,OAAO,OAAO,MAAO,SAAQ,OAAO;IACjC,GAAG,CAAgC;IAE3C,2EAA2E;IAC3E,6DAA6D;IACrD,MAAM,CAAqB;IAEnC,YAAY,IAAY;QACtB,KAAK,EAAE,CAAA;QACP,IAAI,CAAC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,EAAE,CAAA;QACvB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,8CAA8C;YAC9C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;YACvC,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO,IAAI,CAAC,GAAG,CAAA;IACjB,CAAC;IAED,MAAM,CAAC,IAAY;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAA;IACpC,CAAC;IAED,4EAA4E;IAC5E,sEAAsE;IACtE,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;IAChC,CAAC;CACF"}
|
package/dist/msa/index.test.js
CHANGED
|
@@ -122,7 +122,11 @@ seq2 MNPQRSTVWY
|
|
|
122
122
|
seq1 AAAAAAAAAA
|
|
123
123
|
seq1 CCCCCCCCCC
|
|
124
124
|
`;
|
|
125
|
-
|
|
125
|
+
const msa = new ClustalMSA(dup);
|
|
126
|
+
expect(msa.getRow('seq1')).toBe('AAAAAAAAAA');
|
|
127
|
+
// and the name is listed once: getNames drives the row layout, so a
|
|
128
|
+
// repeated id would otherwise draw a phantom second row of the same residues
|
|
129
|
+
expect(msa.getNames()).toEqual(['seq1']);
|
|
126
130
|
});
|
|
127
131
|
});
|
|
128
132
|
describe('StockholmMSA row order', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/msa/index.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/msa/index.test.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -28,6 +28,30 @@ export interface GFFRecord {
|
|
|
28
28
|
phase: string;
|
|
29
29
|
[key: string]: string | number;
|
|
30
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* One annotation interval attached to an alignment row: a protein domain, an
|
|
33
|
+
* exon, a gene. This is the canonical overlay shape -- every source
|
|
34
|
+
* (InterProScan, GFF, a user upload) converts to a flat list of these, and the
|
|
35
|
+
* viewer renders nothing else.
|
|
36
|
+
*/
|
|
37
|
+
export interface Annotation {
|
|
38
|
+
/** name of the alignment row the interval attaches to */
|
|
39
|
+
id: string;
|
|
40
|
+
/** stable key deciding color, legend membership and filter state */
|
|
41
|
+
accession: string;
|
|
42
|
+
name: string;
|
|
43
|
+
description: string;
|
|
44
|
+
/**
|
|
45
|
+
* original GFF feature type (exon, CDS, gene, ...) when sourced from GFF;
|
|
46
|
+
* lets the viewer treat ordinal segments (exons) differently from
|
|
47
|
+
* categorical domains
|
|
48
|
+
*/
|
|
49
|
+
featureType?: string;
|
|
50
|
+
/** 1-based, inclusive of both ends */
|
|
51
|
+
start: number;
|
|
52
|
+
end: number;
|
|
53
|
+
strand?: number;
|
|
54
|
+
}
|
|
31
55
|
export interface InterProScanMatch {
|
|
32
56
|
signature: {
|
|
33
57
|
entry?: {
|