msa-parsers 5.0.5 → 5.0.7
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/msa/A3mMSA.js +20 -18
- package/dist/msa/A3mMSA.js.map +1 -1
- package/dist/msa/A3mMSA.test.js +142 -4
- package/dist/msa/A3mMSA.test.js.map +1 -1
- package/dist/msa/FastaMSA.d.ts +1 -0
- package/dist/msa/FastaMSA.js +8 -2
- package/dist/msa/FastaMSA.js.map +1 -1
- package/dist/msa/index.test.js +37 -1
- package/dist/msa/index.test.js.map +1 -1
- package/dist/msa/parseNewick.js +10 -2
- package/dist/msa/parseNewick.js.map +1 -1
- package/dist/src/gff/gffToInterPro.d.ts +20 -0
- package/dist/src/gff/gffToInterPro.js +83 -0
- package/dist/src/gff/gffToInterPro.js.map +1 -0
- package/dist/src/gff/gffToInterPro.test.d.ts +1 -0
- package/dist/src/gff/gffToInterPro.test.js +181 -0
- package/dist/src/gff/gffToInterPro.test.js.map +1 -0
- package/dist/src/gff/index.d.ts +3 -0
- package/dist/src/gff/index.js +4 -0
- package/dist/src/gff/index.js.map +1 -0
- package/dist/src/gff/interProToGFF.d.ts +9 -0
- package/dist/src/gff/interProToGFF.js +48 -0
- package/dist/src/gff/interProToGFF.js.map +1 -0
- package/dist/src/gff/interProToGFF.test.d.ts +1 -0
- package/dist/src/gff/interProToGFF.test.js +189 -0
- package/dist/src/gff/interProToGFF.test.js.map +1 -0
- package/dist/src/gff/parseGFF.d.ts +2 -0
- package/dist/src/gff/parseGFF.js +41 -0
- package/dist/src/gff/parseGFF.js.map +1 -0
- package/dist/src/gff/parseGFF.test.d.ts +1 -0
- package/dist/src/gff/parseGFF.test.js +92 -0
- package/dist/src/gff/parseGFF.test.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.js +9 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/msa/A3mMSA.d.ts +33 -0
- package/dist/src/msa/A3mMSA.js +282 -0
- package/dist/src/msa/A3mMSA.js.map +1 -0
- package/dist/src/msa/A3mMSA.test.d.ts +1 -0
- package/dist/src/msa/A3mMSA.test.js +261 -0
- package/dist/src/msa/A3mMSA.test.js.map +1 -0
- package/dist/src/msa/ClustalMSA.d.ts +30 -0
- package/dist/src/msa/ClustalMSA.js +53 -0
- package/dist/src/msa/ClustalMSA.js.map +1 -0
- package/dist/src/msa/EmfMSA.d.ts +27 -0
- package/dist/src/msa/EmfMSA.js +53 -0
- package/dist/src/msa/EmfMSA.js.map +1 -0
- package/dist/src/msa/FastaMSA.d.ts +20 -0
- package/dist/src/msa/FastaMSA.js +75 -0
- package/dist/src/msa/FastaMSA.js.map +1 -0
- package/dist/src/msa/StockholmMSA.d.ts +54 -0
- package/dist/src/msa/StockholmMSA.js +113 -0
- package/dist/src/msa/StockholmMSA.js.map +1 -0
- package/dist/src/msa/index.d.ts +18 -0
- package/dist/src/msa/index.js +34 -0
- package/dist/src/msa/index.js.map +1 -0
- package/dist/src/msa/index.test.d.ts +1 -0
- package/dist/src/msa/index.test.js +96 -0
- package/dist/src/msa/index.test.js.map +1 -0
- package/dist/src/msa/parseNewick.d.ts +60 -0
- package/dist/src/msa/parseNewick.js +105 -0
- package/dist/src/msa/parseNewick.js.map +1 -0
- package/dist/src/msa/stockholmParser.d.ts +22 -0
- package/dist/src/msa/stockholmParser.js +141 -0
- package/dist/src/msa/stockholmParser.js.map +1 -0
- package/dist/src/msa/stockholmParser.test.d.ts +1 -0
- package/dist/src/msa/stockholmParser.test.js +111 -0
- package/dist/src/msa/stockholmParser.test.js.map +1 -0
- package/dist/src/types.d.ts +66 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/util.d.ts +2 -0
- package/dist/src/util.js +10 -0
- package/dist/src/util.js.map +1 -0
- package/package.json +3 -3
- package/src/msa/A3mMSA.test.ts +161 -4
- package/src/msa/A3mMSA.ts +20 -18
- package/src/msa/FastaMSA.ts +14 -3
- package/src/msa/index.test.ts +50 -1
- package/src/msa/parseNewick.ts +14 -2
package/dist/msa/A3mMSA.js
CHANGED
|
@@ -79,32 +79,33 @@ export default class A3mMSA {
|
|
|
79
79
|
if (seqs.length < 2) {
|
|
80
80
|
return false;
|
|
81
81
|
}
|
|
82
|
-
// Check for lowercase and compute lengths in single pass per sequence
|
|
83
|
-
// In A3M,
|
|
82
|
+
// Check for lowercase and compute match column lengths in single pass per sequence
|
|
83
|
+
// In A3M, match columns = uppercase letters + dashes (deletions)
|
|
84
84
|
let hasLowercase = false;
|
|
85
|
-
let
|
|
86
|
-
let
|
|
85
|
+
let firstMatchLen = -1;
|
|
86
|
+
let sameMatchLength = true;
|
|
87
87
|
for (const seq of seqs) {
|
|
88
|
-
let
|
|
88
|
+
let matchLen = 0;
|
|
89
89
|
for (let i = 0; i < seq.length; i++) {
|
|
90
90
|
const code = seq.charCodeAt(i);
|
|
91
91
|
if (isLower(code)) {
|
|
92
92
|
hasLowercase = true;
|
|
93
93
|
}
|
|
94
|
-
else if (code >= CODE_A && code <= CODE_Z) {
|
|
95
|
-
|
|
94
|
+
else if ((code >= CODE_A && code <= CODE_Z) || code === CODE_DASH) {
|
|
95
|
+
// Uppercase letters and dashes are match columns
|
|
96
|
+
matchLen++;
|
|
96
97
|
}
|
|
97
98
|
}
|
|
98
|
-
if (
|
|
99
|
-
|
|
99
|
+
if (firstMatchLen === -1) {
|
|
100
|
+
firstMatchLen = matchLen;
|
|
100
101
|
}
|
|
101
102
|
else {
|
|
102
|
-
if (
|
|
103
|
-
|
|
103
|
+
if (matchLen !== firstMatchLen) {
|
|
104
|
+
sameMatchLength = false;
|
|
104
105
|
}
|
|
105
106
|
}
|
|
106
107
|
}
|
|
107
|
-
return hasLowercase &&
|
|
108
|
+
return hasLowercase && sameMatchLength;
|
|
108
109
|
}
|
|
109
110
|
/**
|
|
110
111
|
* Expand A3M format to standard aligned format.
|
|
@@ -130,15 +131,16 @@ export default class A3mMSA {
|
|
|
130
131
|
let i = 0;
|
|
131
132
|
while (i < seq.length) {
|
|
132
133
|
const code = seq.charCodeAt(i);
|
|
133
|
-
if (code >= CODE_A && code <= CODE_Z) {
|
|
134
|
-
// Uppercase letter - match column
|
|
134
|
+
if ((code >= CODE_A && code <= CODE_Z) || code === CODE_DASH) {
|
|
135
|
+
// Uppercase letter or dash - match column (dash = deletion)
|
|
135
136
|
matches.push(seq[i]);
|
|
136
|
-
// Collect following lowercase/
|
|
137
|
+
// Collect following lowercase/dot characters as insert content
|
|
138
|
+
// Note: dash is NOT insert content, it's a match column
|
|
137
139
|
let ins = '';
|
|
138
140
|
let j = i + 1;
|
|
139
141
|
while (j < seq.length) {
|
|
140
142
|
const c = seq.charCodeAt(j);
|
|
141
|
-
if (isLower(c) || c ===
|
|
143
|
+
if (isLower(c) || c === CODE_DOT) {
|
|
142
144
|
ins += seq[j];
|
|
143
145
|
j++;
|
|
144
146
|
}
|
|
@@ -149,8 +151,8 @@ export default class A3mMSA {
|
|
|
149
151
|
inserts.push(ins);
|
|
150
152
|
i = j;
|
|
151
153
|
}
|
|
152
|
-
else if (code ===
|
|
153
|
-
// Leading gap
|
|
154
|
+
else if (code === CODE_DOT) {
|
|
155
|
+
// Leading dot (gap aligned to insert) - skip
|
|
154
156
|
i++;
|
|
155
157
|
}
|
|
156
158
|
else if (isLower(code)) {
|
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/A3mMSA.test.js
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
import { describe, expect, test } from 'vitest';
|
|
2
2
|
import A3mMSA from "./A3mMSA.js";
|
|
3
|
+
// A3M format rules (see https://yanglab.qd.sdu.edu.cn/trRosetta/msa_format.html):
|
|
4
|
+
//
|
|
5
|
+
// - Uppercase letters = "match columns" (aligned positions shared by all seqs)
|
|
6
|
+
// - Lowercase letters = insertions (extra residues in one seq, not a match column)
|
|
7
|
+
// - Dashes '-' = deletions (missing residue at a match column, counts as match)
|
|
8
|
+
// - Dots '.' = gaps aligned to insertions in other sequences
|
|
9
|
+
//
|
|
10
|
+
// Key constraint: all sequences must have the same number of match columns
|
|
11
|
+
// (uppercase + dashes). Lowercase chars don't count toward this total.
|
|
12
|
+
//
|
|
13
|
+
// When expanded to a standard alignment, lowercase inserts become new columns
|
|
14
|
+
// (uppercased), and sequences without inserts at that position get '.' gaps.
|
|
3
15
|
describe('A3mMSA', () => {
|
|
4
16
|
describe('sniff', () => {
|
|
5
17
|
test('returns false for non-FASTA text', () => {
|
|
@@ -14,10 +26,13 @@ ACDEFGHIKLMNPQRSTVWY`;
|
|
|
14
26
|
expect(A3mMSA.sniff(fasta)).toBe(false);
|
|
15
27
|
});
|
|
16
28
|
test('returns true for A3M format', () => {
|
|
29
|
+
// seq1: match=ACDEFKLMNPQ (11), insert=ghi (3)
|
|
30
|
+
// seq2: match=ACDEFKLMNPQ (11)
|
|
31
|
+
// Same match count + has lowercase → detected as A3M
|
|
17
32
|
const a3m = `>seq1
|
|
18
33
|
ACDEFghiKLMNPQ
|
|
19
34
|
>seq2
|
|
20
|
-
|
|
35
|
+
ACDEFKLMNPQ`;
|
|
21
36
|
expect(A3mMSA.sniff(a3m)).toBe(true);
|
|
22
37
|
});
|
|
23
38
|
test('returns false for single sequence', () => {
|
|
@@ -25,13 +40,37 @@ ACDEF---KLMNPQ`;
|
|
|
25
40
|
ACDEFghiKLMNPQ`;
|
|
26
41
|
expect(A3mMSA.sniff(a3m)).toBe(false);
|
|
27
42
|
});
|
|
43
|
+
test('counts dashes as match columns in sniff', () => {
|
|
44
|
+
// seq1: match=ACDEF (5), insert=ghi (3)
|
|
45
|
+
// seq2: match=AC--F (5, where -- are deletions that count as match columns)
|
|
46
|
+
// Same match count + has lowercase → detected as A3M
|
|
47
|
+
const a3m = `>seq1
|
|
48
|
+
ACDEFghi
|
|
49
|
+
>seq2
|
|
50
|
+
AC--F`;
|
|
51
|
+
expect(A3mMSA.sniff(a3m)).toBe(true);
|
|
52
|
+
});
|
|
53
|
+
test('returns false when match column counts differ', () => {
|
|
54
|
+
// seq1: 5 match columns (ACDEF)
|
|
55
|
+
// seq2: 8 match columns (ACDEF---)
|
|
56
|
+
// Without lowercase, this shouldn't be detected as a3m anyway
|
|
57
|
+
const notA3m = `>seq1
|
|
58
|
+
ACDEF
|
|
59
|
+
>seq2
|
|
60
|
+
ACDEF---`;
|
|
61
|
+
expect(A3mMSA.sniff(notA3m)).toBe(false);
|
|
62
|
+
});
|
|
28
63
|
});
|
|
29
64
|
describe('parsing', () => {
|
|
30
65
|
test('parses simple A3M', () => {
|
|
66
|
+
// Both have 11 match columns. seq1 has 3 lowercase inserts (ghi) after F.
|
|
67
|
+
// After expansion, ghi becomes 3 new columns (uppercased in seq1, dots in seq2):
|
|
68
|
+
// seq1: ACDEF + GHI + KLMNPQ = ACDEFGHIKLMNPQ (14 chars)
|
|
69
|
+
// seq2: ACDEF + ... + KLMNPQ = ACDEF...KLMNPQ (14 chars)
|
|
31
70
|
const a3m = `>seq1
|
|
32
71
|
ACDEFghiKLMNPQ
|
|
33
72
|
>seq2
|
|
34
|
-
|
|
73
|
+
ACDEFKLMNPQ`;
|
|
35
74
|
const msa = new A3mMSA(a3m);
|
|
36
75
|
expect(msa.getNames()).toEqual(['seq1', 'seq2']);
|
|
37
76
|
const seq1 = msa.getRow('seq1');
|
|
@@ -40,25 +79,124 @@ ACDEF---KLMNPQ`;
|
|
|
40
79
|
expect(seq1).toContain('GHI');
|
|
41
80
|
});
|
|
42
81
|
test('expands lowercase insertions', () => {
|
|
82
|
+
// seq1 has 2 match columns (A, C) with 3 lowercase inserts (abc)
|
|
83
|
+
// seq2 has 2 match columns (A, C) with no inserts
|
|
43
84
|
const a3m = `>seq1
|
|
44
85
|
ACabc
|
|
45
86
|
>seq2
|
|
46
|
-
AC
|
|
87
|
+
AC`;
|
|
47
88
|
const msa = new A3mMSA(a3m);
|
|
48
89
|
const seq1 = msa.getRow('seq1');
|
|
49
90
|
const seq2 = msa.getRow('seq2');
|
|
91
|
+
// seq1: A + C + ABC (inserts uppercased) = ACABC
|
|
92
|
+
// seq2: A + C + ... (gaps for missing inserts) = AC...
|
|
50
93
|
expect(seq1).toBe('ACABC');
|
|
51
94
|
expect(seq2).toBe('AC...');
|
|
52
95
|
});
|
|
53
96
|
test('handles multiple insertions', () => {
|
|
97
|
+
// seq1: 3 match columns (A, D, G) with inserts after A and D
|
|
98
|
+
// seq2: 3 match columns (A, D, G) with no inserts
|
|
54
99
|
const a3m = `>seq1
|
|
55
100
|
AabcDdefG
|
|
56
101
|
>seq2
|
|
57
|
-
|
|
102
|
+
ADG`;
|
|
58
103
|
const msa = new A3mMSA(a3m);
|
|
59
104
|
const seq1 = msa.getRow('seq1');
|
|
60
105
|
const seq2 = msa.getRow('seq2');
|
|
61
106
|
expect(seq1.length).toBe(seq2.length);
|
|
107
|
+
// seq1: A + ABC + D + DEF + G = AABCDDEFG
|
|
108
|
+
// seq2: A + ... + D + ... + G = A...D...G
|
|
109
|
+
expect(seq1).toBe('AABCDDEFG');
|
|
110
|
+
expect(seq2).toBe('A...D...G');
|
|
111
|
+
});
|
|
112
|
+
test('treats dashes as match columns (deletions)', () => {
|
|
113
|
+
// query: 6 match columns (ACDEFG)
|
|
114
|
+
// seq1: 6 match columns with deletions at positions 3,4 (AC--FG)
|
|
115
|
+
const a3m = `>query
|
|
116
|
+
ACDEFG
|
|
117
|
+
>seq1
|
|
118
|
+
AC--FG`;
|
|
119
|
+
const msa = new A3mMSA(a3m);
|
|
120
|
+
const query = msa.getRow('query');
|
|
121
|
+
const seq1 = msa.getRow('seq1');
|
|
122
|
+
expect(query.length).toBe(seq1.length);
|
|
123
|
+
expect(query).toBe('ACDEFG');
|
|
124
|
+
expect(seq1).toBe('AC--FG');
|
|
125
|
+
});
|
|
126
|
+
test('handles leading dashes correctly', () => {
|
|
127
|
+
// query: 6 match columns
|
|
128
|
+
// seq1: 6 match columns with deletions at start
|
|
129
|
+
const a3m = `>query
|
|
130
|
+
ACDEFG
|
|
131
|
+
>seq1
|
|
132
|
+
--DEFG`;
|
|
133
|
+
const msa = new A3mMSA(a3m);
|
|
134
|
+
const query = msa.getRow('query');
|
|
135
|
+
const seq1 = msa.getRow('seq1');
|
|
136
|
+
expect(query.length).toBe(seq1.length);
|
|
137
|
+
expect(query).toBe('ACDEFG');
|
|
138
|
+
expect(seq1).toBe('--DEFG');
|
|
139
|
+
});
|
|
140
|
+
test('handles trailing dashes correctly', () => {
|
|
141
|
+
const a3m = `>query
|
|
142
|
+
ACDEFG
|
|
143
|
+
>seq1
|
|
144
|
+
ACDE--`;
|
|
145
|
+
const msa = new A3mMSA(a3m);
|
|
146
|
+
const query = msa.getRow('query');
|
|
147
|
+
const seq1 = msa.getRow('seq1');
|
|
148
|
+
expect(query.length).toBe(seq1.length);
|
|
149
|
+
expect(query).toBe('ACDEFG');
|
|
150
|
+
expect(seq1).toBe('ACDE--');
|
|
151
|
+
});
|
|
152
|
+
test('handles dashes with insertions', () => {
|
|
153
|
+
// query: 4 match columns (ACFG) with insert (de) after C
|
|
154
|
+
// seq1: 4 match columns with deletion at position 2
|
|
155
|
+
const a3m = `>query
|
|
156
|
+
ACdeFG
|
|
157
|
+
>seq1
|
|
158
|
+
A-FG`;
|
|
159
|
+
const msa = new A3mMSA(a3m);
|
|
160
|
+
const query = msa.getRow('query');
|
|
161
|
+
const seq1 = msa.getRow('seq1');
|
|
162
|
+
expect(query.length).toBe(seq1.length);
|
|
163
|
+
// query: A + C + DE + F + G = ACDEFG
|
|
164
|
+
// seq1: A + - + .. + F + G = A-..FG
|
|
165
|
+
expect(query).toBe('ACDEFG');
|
|
166
|
+
expect(seq1).toBe('A-..FG');
|
|
167
|
+
});
|
|
168
|
+
test('realistic a3m with insertions and deletions', () => {
|
|
169
|
+
// All 3 sequences have 11 match columns (uppercase + dashes).
|
|
170
|
+
// seq1 has 3 lowercase insertions (ghi) after the 5th match column.
|
|
171
|
+
// seq2 uses dashes for deletions at match positions 1-2 and 9-10.
|
|
172
|
+
//
|
|
173
|
+
// A3M input (match columns marked with ^, inserts unmarked):
|
|
174
|
+
// query: A C D E F K L M N P Q
|
|
175
|
+
// ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ = 11 match cols
|
|
176
|
+
// seq1: A C D E F g h i K L M N P Q
|
|
177
|
+
// ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ = 11 match cols, ghi = inserts
|
|
178
|
+
// seq2: - - D E F K L M - - Q
|
|
179
|
+
// ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ = 11 match cols (dashes are deletions)
|
|
180
|
+
//
|
|
181
|
+
// After expansion (inserts become new columns, '.' fills gaps):
|
|
182
|
+
// query: ACDEF...KLMNPQ (14 chars)
|
|
183
|
+
// seq1: ACDEFGHIKLMNPQ (14 chars, ghi uppercased)
|
|
184
|
+
// seq2: --DEF...KLM--Q (14 chars)
|
|
185
|
+
const a3m = `>query
|
|
186
|
+
ACDEFKLMNPQ
|
|
187
|
+
>seq1
|
|
188
|
+
ACDEFghiKLMNPQ
|
|
189
|
+
>seq2
|
|
190
|
+
--DEFKLM--Q`;
|
|
191
|
+
const msa = new A3mMSA(a3m);
|
|
192
|
+
const query = msa.getRow('query');
|
|
193
|
+
const seq1 = msa.getRow('seq1');
|
|
194
|
+
const seq2 = msa.getRow('seq2');
|
|
195
|
+
expect(query.length).toBe(seq1.length);
|
|
196
|
+
expect(query.length).toBe(seq2.length);
|
|
197
|
+
expect(query).toBe('ACDEF...KLMNPQ');
|
|
198
|
+
expect(seq1).toBe('ACDEFGHIKLMNPQ');
|
|
199
|
+
expect(seq2).toBe('--DEF...KLM--Q');
|
|
62
200
|
});
|
|
63
201
|
test('getWidth returns correct width', () => {
|
|
64
202
|
const a3m = `>seq1
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"A3mMSA.test.js","sourceRoot":"","sources":["../../src/msa/A3mMSA.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,MAAM,MAAM,aAAa,CAAA;AAEhC,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;IACtB,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,IAAI,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/C,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;YAC3C,MAAM,KAAK,GAAG;;;qBAGC,CAAA;YACf,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACvC,MAAM,GAAG,GAAG;;;
|
|
1
|
+
{"version":3,"file":"A3mMSA.test.js","sourceRoot":"","sources":["../../src/msa/A3mMSA.test.ts"],"names":[],"mappings":"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"}
|
package/dist/msa/FastaMSA.d.ts
CHANGED
package/dist/msa/FastaMSA.js
CHANGED
|
@@ -2,6 +2,7 @@ export default class FastaMSA {
|
|
|
2
2
|
MSA;
|
|
3
3
|
constructor(text) {
|
|
4
4
|
const seqdata = {};
|
|
5
|
+
const colonNormalized = {};
|
|
5
6
|
for (const entry of text.split('>')) {
|
|
6
7
|
if (!/\S/.test(entry)) {
|
|
7
8
|
continue;
|
|
@@ -15,9 +16,12 @@ export default class FastaMSA {
|
|
|
15
16
|
const id = spaceIdx === -1 ? defLine : defLine.slice(0, spaceIdx);
|
|
16
17
|
if (id) {
|
|
17
18
|
seqdata[id] = entry.slice(newlineIdx + 1).replaceAll(/\s/g, '');
|
|
19
|
+
if (id.includes(':')) {
|
|
20
|
+
colonNormalized[id.replaceAll(':', '_')] = id;
|
|
21
|
+
}
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
|
-
this.MSA = { seqdata };
|
|
24
|
+
this.MSA = { seqdata, colonNormalized };
|
|
21
25
|
}
|
|
22
26
|
getMSA() {
|
|
23
27
|
return this.MSA;
|
|
@@ -29,7 +33,9 @@ export default class FastaMSA {
|
|
|
29
33
|
return Object.keys(this.MSA.seqdata);
|
|
30
34
|
}
|
|
31
35
|
getRow(name) {
|
|
32
|
-
return this.MSA.seqdata[name]
|
|
36
|
+
return (this.MSA.seqdata[name] ??
|
|
37
|
+
this.MSA.seqdata[this.MSA.colonNormalized[name] ?? ''] ??
|
|
38
|
+
'');
|
|
33
39
|
}
|
|
34
40
|
getWidth() {
|
|
35
41
|
const name = Object.keys(this.MSA.seqdata)[0];
|
package/dist/msa/FastaMSA.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FastaMSA.js","sourceRoot":"","sources":["../../src/msa/FastaMSA.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,QAAQ;IACnB,GAAG,
|
|
1
|
+
{"version":3,"file":"FastaMSA.js","sourceRoot":"","sources":["../../src/msa/FastaMSA.ts"],"names":[],"mappings":"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"}
|
package/dist/msa/index.test.js
CHANGED
|
@@ -3,6 +3,7 @@ import A3mMSA from "./A3mMSA.js";
|
|
|
3
3
|
import ClustalMSA from "./ClustalMSA.js";
|
|
4
4
|
import FastaMSA from "./FastaMSA.js";
|
|
5
5
|
import { getUngappedSequence, parseMSA } from "./index.js";
|
|
6
|
+
import parseNewick from "./parseNewick.js";
|
|
6
7
|
describe('parseMSA', () => {
|
|
7
8
|
test('parses FASTA format', () => {
|
|
8
9
|
const fasta = `>seq1
|
|
@@ -17,7 +18,7 @@ GHIKL`;
|
|
|
17
18
|
const a3m = `>seq1
|
|
18
19
|
ACDEFghiKLMNPQ
|
|
19
20
|
>seq2
|
|
20
|
-
|
|
21
|
+
ACDE-KLMNPQ`;
|
|
21
22
|
const msa = parseMSA(a3m);
|
|
22
23
|
expect(msa).toBeInstanceOf(A3mMSA);
|
|
23
24
|
});
|
|
@@ -37,6 +38,41 @@ that doesn't match anything`;
|
|
|
37
38
|
expect(msa).toBeInstanceOf(ClustalMSA);
|
|
38
39
|
});
|
|
39
40
|
});
|
|
41
|
+
describe('FastaMSA colon-in-name lookup', () => {
|
|
42
|
+
const fasta = `>EU105457.1|chr09:67680268..67675529_LTR/Copia
|
|
43
|
+
ACDEFGHIKL
|
|
44
|
+
>seq2
|
|
45
|
+
MNPQRSTVWY`;
|
|
46
|
+
test('getRow finds sequence by original colon name', () => {
|
|
47
|
+
const msa = new FastaMSA(fasta);
|
|
48
|
+
expect(msa.getRow('EU105457.1|chr09:67680268..67675529_LTR/Copia')).toBe('ACDEFGHIKL');
|
|
49
|
+
});
|
|
50
|
+
test('getRow finds sequence by underscore name (as produced by external Newick tools)', () => {
|
|
51
|
+
const msa = new FastaMSA(fasta);
|
|
52
|
+
expect(msa.getRow('EU105457.1|chr09_67680268..67675529_LTR/Copia')).toBe('ACDEFGHIKL');
|
|
53
|
+
});
|
|
54
|
+
test('getRow does not confuse a plain-underscore name with a colon-normalized name', () => {
|
|
55
|
+
const msa = new FastaMSA(fasta);
|
|
56
|
+
expect(msa.getRow('seq2')).toBe('MNPQRSTVWY');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('parseNewick single-quoted names', () => {
|
|
60
|
+
test('parses quoted name containing a colon', () => {
|
|
61
|
+
const tree = parseNewick("('EU105457.1|chr09:67680268..67675529_LTR/Copia':0.5,seq2:0.3);");
|
|
62
|
+
const names = tree.children.map((c) => c.name);
|
|
63
|
+
expect(names).toContain('EU105457.1|chr09:67680268..67675529_LTR/Copia');
|
|
64
|
+
});
|
|
65
|
+
test('parses quoted name containing a single quote', () => {
|
|
66
|
+
const tree = parseNewick("('it''s a name':0.1,seq2:0.2);");
|
|
67
|
+
const names = tree.children.map((c) => c.name);
|
|
68
|
+
expect(names).toContain("it's a name");
|
|
69
|
+
});
|
|
70
|
+
test('unquoted names still parse correctly', () => {
|
|
71
|
+
const tree = parseNewick('(seq1:0.1,seq2:0.2);');
|
|
72
|
+
const names = tree.children.map((c) => c.name);
|
|
73
|
+
expect(names).toEqual(['seq1', 'seq2']);
|
|
74
|
+
});
|
|
75
|
+
});
|
|
40
76
|
describe('getUngappedSequence', () => {
|
|
41
77
|
test('removes dashes', () => {
|
|
42
78
|
expect(getUngappedSequence('AC--DEF')).toBe('ACDEF');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/msa/index.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE/C,OAAO,MAAM,MAAM,aAAa,CAAA;AAChC,OAAO,UAAU,MAAM,iBAAiB,CAAA;AACxC,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/msa/index.test.ts"],"names":[],"mappings":"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"}
|
package/dist/msa/parseNewick.js
CHANGED
|
@@ -59,10 +59,18 @@
|
|
|
59
59
|
*/
|
|
60
60
|
export default function parse(s) {
|
|
61
61
|
const ancestors = [];
|
|
62
|
+
// Replace single-quoted names with placeholders so ':' inside them isn't tokenized
|
|
63
|
+
const quotedNames = [];
|
|
64
|
+
const preprocessed = s.replace(/'((?:[^']|'')*)'/g, (_, inner) => {
|
|
65
|
+
const idx = quotedNames.length;
|
|
66
|
+
quotedNames.push(inner.replaceAll("''", "'"));
|
|
67
|
+
return `__Q${idx}__`;
|
|
68
|
+
});
|
|
62
69
|
let tree = {};
|
|
63
|
-
const tokens =
|
|
70
|
+
const tokens = preprocessed.split(/\s*(;|\(|\)|,|:)\s*/);
|
|
64
71
|
for (let i = 0; i < tokens.length; i++) {
|
|
65
|
-
const
|
|
72
|
+
const raw = tokens[i];
|
|
73
|
+
const token = raw.replace(/^__Q(\d+)__$/, (_, idx) => quotedNames[Number(idx)]);
|
|
66
74
|
const subtree = {};
|
|
67
75
|
switch (token) {
|
|
68
76
|
case '(': // new children
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseNewick.js","sourceRoot":"","sources":["../../src/msa/parseNewick.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,CAAS;IACrC,MAAM,SAAS,GAAG,EAAE,CAAA;IAEpB,IAAI,IAAI,GAAG,EAAyB,CAAA;IACpC,MAAM,MAAM,GAAG,
|
|
1
|
+
{"version":3,"file":"parseNewick.js","sourceRoot":"","sources":["../../src/msa/parseNewick.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,MAAM,CAAC,OAAO,UAAU,KAAK,CAAC,CAAS;IACrC,MAAM,SAAS,GAAG,EAAE,CAAA;IAEpB,mFAAmF;IACnF,MAAM,WAAW,GAAa,EAAE,CAAA;IAChC,MAAM,YAAY,GAAG,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC,EAAE,KAAa,EAAE,EAAE;QACvE,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,CAAA;QAC9B,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QAC7C,OAAO,MAAM,GAAG,IAAI,CAAA;IACtB,CAAC,CAAC,CAAA;IAEF,IAAI,IAAI,GAAG,EAAyB,CAAA;IACpC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAA;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,CAAA;QACtB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CACvB,cAAc,EACd,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAE,CAC9C,CAAA;QACD,MAAM,OAAO,GAAG,EAAE,CAAA;QAClB,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,GAAG,EAAE,eAAe;gBACvB,IAAI,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAA;gBACzB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACpB,IAAI,GAAG,OAAO,CAAA;gBACd,MAAK;YACP,KAAK,GAAG,EAAE,iBAAiB;gBACzB,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACxC,IAAI,GAAG,OAAO,CAAA;gBACd,MAAK;YACP,KAAK,GAAG,EAAE,qBAAqB;gBAC7B,IAAI,GAAG,SAAS,CAAC,GAAG,EAAG,CAAA;gBACvB,MAAK;YACP,KAAK,GAAG,EAAE,uBAAuB;gBAC/B,MAAK;YACP,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,CAAE,CAAA;gBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBACxC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAA;gBACnB,CAAC;qBAAM,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;oBACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { GFFRecord, InterProScanResponse, InterProScanResults } from '../types.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Convert GFF records to InterProScan format
|
|
4
|
+
*
|
|
5
|
+
* InterProScan GFF3 output format:
|
|
6
|
+
* - seq_id: sequence identifier
|
|
7
|
+
* - source: database/signature (e.g., "Pfam", "SMART")
|
|
8
|
+
* - type: usually "protein_match"
|
|
9
|
+
* - start/end: domain positions (1-based)
|
|
10
|
+
* - Attributes: Name (accession), signature_desc (name), Dbxref, etc.
|
|
11
|
+
*/
|
|
12
|
+
export declare function gffToInterProResults(gffRecords: GFFRecord[]): Record<string, InterProScanResults>;
|
|
13
|
+
/**
|
|
14
|
+
* Convert GFF string directly to InterProScan format
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseGFFToInterPro(gffStr: string, parseGFFfn: (str: string) => GFFRecord[]): Record<string, InterProScanResults>;
|
|
17
|
+
/**
|
|
18
|
+
* Create a full InterProScanResponse from GFF records
|
|
19
|
+
*/
|
|
20
|
+
export declare function gffToInterProResponse(gffRecords: GFFRecord[]): InterProScanResponse;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert GFF records to InterProScan format
|
|
3
|
+
*
|
|
4
|
+
* InterProScan GFF3 output format:
|
|
5
|
+
* - seq_id: sequence identifier
|
|
6
|
+
* - source: database/signature (e.g., "Pfam", "SMART")
|
|
7
|
+
* - type: usually "protein_match"
|
|
8
|
+
* - start/end: domain positions (1-based)
|
|
9
|
+
* - Attributes: Name (accession), signature_desc (name), Dbxref, etc.
|
|
10
|
+
*/
|
|
11
|
+
export function gffToInterProResults(gffRecords) {
|
|
12
|
+
const bySequence = new Map();
|
|
13
|
+
for (const record of gffRecords) {
|
|
14
|
+
const existing = bySequence.get(record.seq_id);
|
|
15
|
+
if (existing) {
|
|
16
|
+
existing.push(record);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
bySequence.set(record.seq_id, [record]);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const results = {};
|
|
23
|
+
for (const [seqId, records] of bySequence) {
|
|
24
|
+
const matchesByAccession = new Map();
|
|
25
|
+
const matchInfo = new Map();
|
|
26
|
+
for (const record of records) {
|
|
27
|
+
const accession = record.Name ||
|
|
28
|
+
record.ID ||
|
|
29
|
+
`${record.source}_${record.start}_${record.end}`;
|
|
30
|
+
const name = record.signature_desc ||
|
|
31
|
+
record.Name ||
|
|
32
|
+
accession;
|
|
33
|
+
const description = record.Ontology_term ||
|
|
34
|
+
record.description ||
|
|
35
|
+
record.Note ||
|
|
36
|
+
name;
|
|
37
|
+
if (!matchInfo.has(accession)) {
|
|
38
|
+
matchInfo.set(accession, { name, description, accession });
|
|
39
|
+
}
|
|
40
|
+
const locations = matchesByAccession.get(accession);
|
|
41
|
+
if (locations) {
|
|
42
|
+
locations.push({ start: record.start, end: record.end });
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
matchesByAccession.set(accession, [
|
|
46
|
+
{ start: record.start, end: record.end },
|
|
47
|
+
]);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const matches = [];
|
|
51
|
+
for (const [accession, locations] of matchesByAccession) {
|
|
52
|
+
const info = matchInfo.get(accession);
|
|
53
|
+
matches.push({
|
|
54
|
+
signature: {
|
|
55
|
+
entry: info,
|
|
56
|
+
},
|
|
57
|
+
locations,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
results[seqId] = {
|
|
61
|
+
matches,
|
|
62
|
+
xref: [{ id: seqId }],
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return results;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Convert GFF string directly to InterProScan format
|
|
69
|
+
*/
|
|
70
|
+
export function parseGFFToInterPro(gffStr, parseGFFfn) {
|
|
71
|
+
const records = parseGFFfn(gffStr);
|
|
72
|
+
return gffToInterProResults(records);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create a full InterProScanResponse from GFF records
|
|
76
|
+
*/
|
|
77
|
+
export function gffToInterProResponse(gffRecords) {
|
|
78
|
+
const resultsMap = gffToInterProResults(gffRecords);
|
|
79
|
+
return {
|
|
80
|
+
results: Object.values(resultsMap),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=gffToInterPro.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gffToInterPro.js","sourceRoot":"","sources":["../../../src/gff/gffToInterPro.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|