react-msaview 4.5.0 → 4.8.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/bundle/index.js +99 -99
- package/bundle/index.js.LICENSE.txt +6 -6
- package/bundle/index.js.map +1 -1
- package/dist/__snapshots__/parseAsn1.test.js.snap +2400 -0
- package/dist/components/header/HeaderInfoArea.js +3 -4
- package/dist/components/header/HeaderInfoArea.js.map +1 -1
- package/dist/components/import/ImportForm.js +6 -2
- package/dist/components/import/ImportForm.js.map +1 -1
- package/dist/components/import/util.d.ts +1 -1
- package/dist/components/import/util.js +4 -1
- package/dist/components/import/util.js.map +1 -1
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js +7 -2
- package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
- package/dist/components/msa/renderMSABlock.js +20 -18
- package/dist/components/msa/renderMSABlock.js.map +1 -1
- package/dist/components/msa/renderMSAMouseover.js +8 -1
- package/dist/components/msa/renderMSAMouseover.js.map +1 -1
- package/dist/components/tree/renderTreeCanvas.d.ts +0 -1
- package/dist/components/tree/renderTreeCanvas.js +32 -31
- package/dist/components/tree/renderTreeCanvas.js.map +1 -1
- package/dist/model.d.ts +168 -16
- package/dist/model.js +116 -29
- package/dist/model.js.map +1 -1
- package/dist/rowCoordinateCalculations.d.ts +69 -9
- package/dist/rowCoordinateCalculations.js +118 -46
- package/dist/rowCoordinateCalculations.js.map +1 -1
- package/dist/rowCoordinateCalculations.test.js +152 -52
- package/dist/rowCoordinateCalculations.test.js.map +1 -1
- package/dist/seqPosToGlobalCol.d.ts +19 -0
- package/dist/seqPosToGlobalCol.js +34 -0
- package/dist/seqPosToGlobalCol.js.map +1 -0
- package/dist/seqPosToGlobalCol.test.js +60 -0
- package/dist/seqPosToGlobalCol.test.js.map +1 -0
- package/dist/util.d.ts +1 -2
- package/dist/util.js +0 -9
- package/dist/util.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +7 -9
- package/src/components/header/HeaderInfoArea.tsx +2 -5
- package/src/components/import/ImportForm.tsx +6 -1
- package/src/components/import/util.ts +4 -0
- package/src/components/msa/renderBoxFeatureCanvasBlock.ts +7 -2
- package/src/components/msa/renderMSABlock.ts +26 -19
- package/src/components/msa/renderMSAMouseover.ts +9 -0
- package/src/components/tree/renderTreeCanvas.ts +35 -42
- package/src/declare.d.ts +0 -1
- package/src/model.ts +143 -42
- package/src/rowCoordinateCalculations.test.ts +167 -74
- package/src/rowCoordinateCalculations.ts +138 -63
- package/src/seqPosToGlobalCol.test.ts +71 -0
- package/src/seqPosToGlobalCol.ts +40 -0
- package/src/util.ts +1 -19
- package/src/version.ts +1 -1
- package/dist/parseGFF.d.ts +0 -10
- package/dist/parseGFF.js +0 -31
- package/dist/parseGFF.js.map +0 -1
- package/dist/parseNewick.d.ts +0 -60
- package/dist/parseNewick.js +0 -95
- package/dist/parseNewick.js.map +0 -1
- package/dist/parsers/A3mMSA.d.ts +0 -43
- package/dist/parsers/A3mMSA.js +0 -277
- package/dist/parsers/A3mMSA.js.map +0 -1
- package/dist/parsers/A3mMSA.test.js +0 -138
- package/dist/parsers/A3mMSA.test.js.map +0 -1
- package/dist/parsers/ClustalMSA.d.ts +0 -30
- package/dist/parsers/ClustalMSA.js +0 -55
- package/dist/parsers/ClustalMSA.js.map +0 -1
- package/dist/parsers/EmfMSA.d.ts +0 -27
- package/dist/parsers/EmfMSA.js +0 -53
- package/dist/parsers/EmfMSA.js.map +0 -1
- package/dist/parsers/EmfTree.d.ts +0 -5
- package/dist/parsers/EmfTree.js +0 -8
- package/dist/parsers/EmfTree.js.map +0 -1
- package/dist/parsers/FastaMSA.d.ts +0 -19
- package/dist/parsers/FastaMSA.js +0 -69
- package/dist/parsers/FastaMSA.js.map +0 -1
- package/dist/parsers/StockholmMSA.d.ts +0 -68
- package/dist/parsers/StockholmMSA.js +0 -107
- package/dist/parsers/StockholmMSA.js.map +0 -1
- package/dist/seqCoordToRowSpecificGlobalCoord.d.ts +0 -4
- package/dist/seqCoordToRowSpecificGlobalCoord.js +0 -19
- package/dist/seqCoordToRowSpecificGlobalCoord.js.map +0 -1
- package/dist/seqCoordToRowSpecificGlobalCoord.test.d.ts +0 -1
- package/dist/seqCoordToRowSpecificGlobalCoord.test.js +0 -42
- package/dist/seqCoordToRowSpecificGlobalCoord.test.js.map +0 -1
- package/src/parseGFF.ts +0 -34
- package/src/parseNewick.ts +0 -94
- package/src/parsers/A3mMSA.test.ts +0 -164
- package/src/parsers/A3mMSA.ts +0 -321
- package/src/parsers/ClustalMSA.ts +0 -69
- package/src/parsers/EmfMSA.ts +0 -67
- package/src/parsers/EmfTree.ts +0 -9
- package/src/parsers/FastaMSA.ts +0 -82
- package/src/parsers/StockholmMSA.ts +0 -140
- package/src/seqCoordToRowSpecificGlobalCoord.test.ts +0 -53
- package/src/seqCoordToRowSpecificGlobalCoord.ts +0 -25
- /package/dist/{parsers/A3mMSA.test.d.ts → seqPosToGlobalCol.test.d.ts} +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { expect, test } from 'vitest';
|
|
2
|
-
import {
|
|
3
|
-
|
|
2
|
+
import { globalColToSeqPos, globalColToVisibleCol, visibleColToGlobalCol, visibleColToSeqPos, } from './rowCoordinateCalculations';
|
|
3
|
+
// Tests for visibleColToGlobalCol (visible → global)
|
|
4
|
+
test('visibleColToGlobalCol with blanks at positions [2, 5, 8]', () => {
|
|
4
5
|
const blanks = [2, 5, 8];
|
|
5
6
|
[
|
|
6
7
|
[0, 0],
|
|
@@ -12,10 +13,10 @@ test('with blanks at positions [2, 5, 8]', () => {
|
|
|
12
13
|
[6, 9],
|
|
13
14
|
[7, 10],
|
|
14
15
|
].forEach(r => {
|
|
15
|
-
expect(
|
|
16
|
+
expect(visibleColToGlobalCol(blanks, r[0])).toBe(r[1]);
|
|
16
17
|
});
|
|
17
18
|
});
|
|
18
|
-
test('with no blanks', () => {
|
|
19
|
+
test('visibleColToGlobalCol with no blanks', () => {
|
|
19
20
|
const blanks = [];
|
|
20
21
|
[
|
|
21
22
|
[0, 0],
|
|
@@ -23,10 +24,10 @@ test('with no blanks', () => {
|
|
|
23
24
|
[5, 5],
|
|
24
25
|
[10, 10],
|
|
25
26
|
].forEach(r => {
|
|
26
|
-
expect(
|
|
27
|
+
expect(visibleColToGlobalCol(blanks, r[0])).toBe(r[1]);
|
|
27
28
|
});
|
|
28
29
|
});
|
|
29
|
-
test('with consecutive blanks', () => {
|
|
30
|
+
test('visibleColToGlobalCol with consecutive blanks', () => {
|
|
30
31
|
const blanks = [2, 3, 4, 7, 8];
|
|
31
32
|
[
|
|
32
33
|
[0, 0],
|
|
@@ -36,10 +37,10 @@ test('with consecutive blanks', () => {
|
|
|
36
37
|
[4, 9], // After position 3, skip 2 blanks (7,8)
|
|
37
38
|
[5, 10],
|
|
38
39
|
].forEach(r => {
|
|
39
|
-
expect(
|
|
40
|
+
expect(visibleColToGlobalCol(blanks, r[0])).toBe(r[1]);
|
|
40
41
|
});
|
|
41
42
|
});
|
|
42
|
-
test('with blanks at the beginning', () => {
|
|
43
|
+
test('visibleColToGlobalCol with blanks at the beginning', () => {
|
|
43
44
|
const blanks = [1, 2, 5];
|
|
44
45
|
[
|
|
45
46
|
[0, 0],
|
|
@@ -48,10 +49,10 @@ test('with blanks at the beginning', () => {
|
|
|
48
49
|
[3, 6], // After position 2, skip 1 blank (5)
|
|
49
50
|
[4, 7],
|
|
50
51
|
].forEach(r => {
|
|
51
|
-
expect(
|
|
52
|
+
expect(visibleColToGlobalCol(blanks, r[0])).toBe(r[1]);
|
|
52
53
|
});
|
|
53
54
|
});
|
|
54
|
-
test('with position exceeding blanks array', () => {
|
|
55
|
+
test('visibleColToGlobalCol with position exceeding blanks array', () => {
|
|
55
56
|
const blanks = [2, 5];
|
|
56
57
|
[
|
|
57
58
|
[0, 0],
|
|
@@ -61,64 +62,163 @@ test('with position exceeding blanks array', () => {
|
|
|
61
62
|
[4, 6], // After position 3, skip 1 blank (5)
|
|
62
63
|
[10, 12], // Far beyond blanks array
|
|
63
64
|
].forEach(r => {
|
|
64
|
-
expect(
|
|
65
|
+
expect(visibleColToGlobalCol(blanks, r[0])).toBe(r[1]);
|
|
65
66
|
});
|
|
66
67
|
});
|
|
67
|
-
|
|
68
|
+
// Tests for globalColToVisibleCol (global → visible)
|
|
69
|
+
test('globalColToVisibleCol with blanks at positions [2, 5, 8]', () => {
|
|
70
|
+
const blanks = [2, 5, 8];
|
|
71
|
+
// Inverse of visibleColToGlobalCol
|
|
72
|
+
expect(globalColToVisibleCol(blanks, 0)).toBe(0);
|
|
73
|
+
expect(globalColToVisibleCol(blanks, 1)).toBe(1);
|
|
74
|
+
expect(globalColToVisibleCol(blanks, 2)).toBe(undefined); // Hidden
|
|
75
|
+
expect(globalColToVisibleCol(blanks, 3)).toBe(2);
|
|
76
|
+
expect(globalColToVisibleCol(blanks, 4)).toBe(3);
|
|
77
|
+
expect(globalColToVisibleCol(blanks, 5)).toBe(undefined); // Hidden
|
|
78
|
+
expect(globalColToVisibleCol(blanks, 6)).toBe(4);
|
|
79
|
+
expect(globalColToVisibleCol(blanks, 7)).toBe(5);
|
|
80
|
+
expect(globalColToVisibleCol(blanks, 8)).toBe(undefined); // Hidden
|
|
81
|
+
expect(globalColToVisibleCol(blanks, 9)).toBe(6);
|
|
82
|
+
expect(globalColToVisibleCol(blanks, 10)).toBe(7);
|
|
83
|
+
});
|
|
84
|
+
test('globalColToVisibleCol with no blanks', () => {
|
|
85
|
+
const blanks = [];
|
|
86
|
+
expect(globalColToVisibleCol(blanks, 0)).toBe(0);
|
|
87
|
+
expect(globalColToVisibleCol(blanks, 5)).toBe(5);
|
|
88
|
+
expect(globalColToVisibleCol(blanks, 10)).toBe(10);
|
|
89
|
+
});
|
|
90
|
+
test('globalColToVisibleCol with consecutive blanks', () => {
|
|
91
|
+
const blanks = [2, 3, 4, 7, 8];
|
|
92
|
+
expect(globalColToVisibleCol(blanks, 0)).toBe(0);
|
|
93
|
+
expect(globalColToVisibleCol(blanks, 1)).toBe(1);
|
|
94
|
+
expect(globalColToVisibleCol(blanks, 2)).toBe(undefined); // Hidden
|
|
95
|
+
expect(globalColToVisibleCol(blanks, 3)).toBe(undefined); // Hidden
|
|
96
|
+
expect(globalColToVisibleCol(blanks, 4)).toBe(undefined); // Hidden
|
|
97
|
+
expect(globalColToVisibleCol(blanks, 5)).toBe(2);
|
|
98
|
+
expect(globalColToVisibleCol(blanks, 6)).toBe(3);
|
|
99
|
+
expect(globalColToVisibleCol(blanks, 7)).toBe(undefined); // Hidden
|
|
100
|
+
expect(globalColToVisibleCol(blanks, 8)).toBe(undefined); // Hidden
|
|
101
|
+
expect(globalColToVisibleCol(blanks, 9)).toBe(4);
|
|
102
|
+
expect(globalColToVisibleCol(blanks, 10)).toBe(5);
|
|
103
|
+
});
|
|
104
|
+
// Tests for globalColToSeqPos (global column → sequence position)
|
|
105
|
+
test('globalColToSeqPos with gaps in sequence', () => {
|
|
68
106
|
const sequence = 'AC-GT-A';
|
|
69
|
-
expect(
|
|
70
|
-
expect(
|
|
71
|
-
expect(
|
|
107
|
+
expect(globalColToSeqPos(sequence, 0)).toBe(0);
|
|
108
|
+
expect(globalColToSeqPos(sequence, 1)).toBe(1);
|
|
109
|
+
expect(globalColToSeqPos(sequence, 2)).toBe(2);
|
|
72
110
|
// Position 2 is a gap, so count before it is 2
|
|
73
|
-
expect(
|
|
74
|
-
expect(
|
|
75
|
-
expect(
|
|
111
|
+
expect(globalColToSeqPos(sequence, 3)).toBe(2);
|
|
112
|
+
expect(globalColToSeqPos(sequence, 4)).toBe(3);
|
|
113
|
+
expect(globalColToSeqPos(sequence, 5)).toBe(4);
|
|
76
114
|
// Position 5 is a gap, so count before it is 4
|
|
77
|
-
expect(
|
|
115
|
+
expect(globalColToSeqPos(sequence, 6)).toBe(4);
|
|
78
116
|
});
|
|
79
|
-
test('with mixed gap characters (- and .)', () => {
|
|
117
|
+
test('globalColToSeqPos with mixed gap characters (- and .)', () => {
|
|
80
118
|
const sequence = 'AC.GT-A';
|
|
81
|
-
expect(
|
|
82
|
-
expect(
|
|
119
|
+
expect(globalColToSeqPos(sequence, 0)).toBe(0);
|
|
120
|
+
expect(globalColToSeqPos(sequence, 1)).toBe(1);
|
|
83
121
|
// Position 2 is a gap (.), so count before it is 2
|
|
84
|
-
expect(
|
|
85
|
-
expect(
|
|
86
|
-
expect(
|
|
122
|
+
expect(globalColToSeqPos(sequence, 2)).toBe(2);
|
|
123
|
+
expect(globalColToSeqPos(sequence, 3)).toBe(2);
|
|
124
|
+
expect(globalColToSeqPos(sequence, 4)).toBe(3);
|
|
87
125
|
// Position 5 is a gap (-), so count before it is 4
|
|
88
|
-
expect(
|
|
89
|
-
expect(
|
|
126
|
+
expect(globalColToSeqPos(sequence, 5)).toBe(4);
|
|
127
|
+
expect(globalColToSeqPos(sequence, 6)).toBe(4);
|
|
90
128
|
});
|
|
91
|
-
test('with no gaps in sequence', () => {
|
|
129
|
+
test('globalColToSeqPos with no gaps in sequence', () => {
|
|
92
130
|
const sequence = 'ACGTA';
|
|
93
|
-
expect(
|
|
94
|
-
expect(
|
|
95
|
-
expect(
|
|
96
|
-
expect(
|
|
97
|
-
expect(
|
|
131
|
+
expect(globalColToSeqPos(sequence, 0)).toBe(0);
|
|
132
|
+
expect(globalColToSeqPos(sequence, 1)).toBe(1);
|
|
133
|
+
expect(globalColToSeqPos(sequence, 2)).toBe(2);
|
|
134
|
+
expect(globalColToSeqPos(sequence, 3)).toBe(3);
|
|
135
|
+
expect(globalColToSeqPos(sequence, 4)).toBe(4);
|
|
98
136
|
});
|
|
99
|
-
test('with all gaps in sequence', () => {
|
|
137
|
+
test('globalColToSeqPos with all gaps in sequence', () => {
|
|
100
138
|
const sequence = '-----';
|
|
101
|
-
expect(
|
|
102
|
-
expect(
|
|
103
|
-
expect(
|
|
104
|
-
expect(
|
|
105
|
-
expect(
|
|
139
|
+
expect(globalColToSeqPos(sequence, 0)).toBe(0);
|
|
140
|
+
expect(globalColToSeqPos(sequence, 1)).toBe(0);
|
|
141
|
+
expect(globalColToSeqPos(sequence, 2)).toBe(0);
|
|
142
|
+
expect(globalColToSeqPos(sequence, 3)).toBe(0);
|
|
143
|
+
expect(globalColToSeqPos(sequence, 4)).toBe(0);
|
|
106
144
|
});
|
|
107
|
-
test('with position exceeding sequence length', () => {
|
|
145
|
+
test('globalColToSeqPos with position exceeding sequence length', () => {
|
|
108
146
|
const sequence = 'AC-GT';
|
|
109
|
-
expect(
|
|
147
|
+
expect(globalColToSeqPos(sequence, 10)).toBe(4);
|
|
110
148
|
});
|
|
111
|
-
|
|
149
|
+
// Tests for visibleColToSeqPos (visible column → sequence position)
|
|
150
|
+
test('visibleColToSeqPos returns sequence position or undefined for gaps', () => {
|
|
112
151
|
const seq = 'AC--GT--CT';
|
|
113
|
-
expect(
|
|
114
|
-
expect(
|
|
115
|
-
expect(
|
|
116
|
-
expect(
|
|
117
|
-
expect(
|
|
118
|
-
expect(
|
|
119
|
-
expect(
|
|
120
|
-
expect(
|
|
121
|
-
expect(
|
|
122
|
-
expect(
|
|
152
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 0, blanks: [] })).toBe(0);
|
|
153
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 1, blanks: [] })).toBe(1);
|
|
154
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 2, blanks: [] })).toBe(undefined);
|
|
155
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 3, blanks: [] })).toBe(undefined);
|
|
156
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 4, blanks: [] })).toBe(2);
|
|
157
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 5, blanks: [] })).toBe(3);
|
|
158
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 6, blanks: [] })).toBe(undefined);
|
|
159
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 7, blanks: [] })).toBe(undefined);
|
|
160
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 8, blanks: [] })).toBe(4);
|
|
161
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 9, blanks: [] })).toBe(5);
|
|
162
|
+
});
|
|
163
|
+
// Round-trip tests: visible → global → visible should be identity for valid columns
|
|
164
|
+
test('round-trip: visibleColToGlobalCol and globalColToVisibleCol are inverses', () => {
|
|
165
|
+
const blanks = [2, 5, 8];
|
|
166
|
+
// For each visible column, going to global and back should return the same value
|
|
167
|
+
for (let visibleCol = 0; visibleCol < 10; visibleCol++) {
|
|
168
|
+
const globalCol = visibleColToGlobalCol(blanks, visibleCol);
|
|
169
|
+
const backToVisible = globalColToVisibleCol(blanks, globalCol);
|
|
170
|
+
expect(backToVisible).toBe(visibleCol);
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
test('round-trip: globalColToVisibleCol and visibleColToGlobalCol for non-hidden columns', () => {
|
|
174
|
+
const blanks = [2, 5, 8];
|
|
175
|
+
// For each global column that is NOT hidden, going to visible and back should return the same value
|
|
176
|
+
for (let globalCol = 0; globalCol < 15; globalCol++) {
|
|
177
|
+
const visibleCol = globalColToVisibleCol(blanks, globalCol);
|
|
178
|
+
if (visibleCol !== undefined) {
|
|
179
|
+
const backToGlobal = visibleColToGlobalCol(blanks, visibleCol);
|
|
180
|
+
expect(backToGlobal).toBe(globalCol);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
});
|
|
184
|
+
// Edge case: blanks at position 0
|
|
185
|
+
test('globalColToVisibleCol with blank at position 0', () => {
|
|
186
|
+
const blanks = [0, 1, 5];
|
|
187
|
+
expect(globalColToVisibleCol(blanks, 0)).toBe(undefined); // Hidden
|
|
188
|
+
expect(globalColToVisibleCol(blanks, 1)).toBe(undefined); // Hidden
|
|
189
|
+
expect(globalColToVisibleCol(blanks, 2)).toBe(0); // First visible column
|
|
190
|
+
expect(globalColToVisibleCol(blanks, 3)).toBe(1);
|
|
191
|
+
expect(globalColToVisibleCol(blanks, 4)).toBe(2);
|
|
192
|
+
expect(globalColToVisibleCol(blanks, 5)).toBe(undefined); // Hidden
|
|
193
|
+
expect(globalColToVisibleCol(blanks, 6)).toBe(3);
|
|
194
|
+
});
|
|
195
|
+
test('visibleColToGlobalCol with blank at position 0', () => {
|
|
196
|
+
const blanks = [0, 1, 5];
|
|
197
|
+
expect(visibleColToGlobalCol(blanks, 0)).toBe(2); // Skips 0, 1
|
|
198
|
+
expect(visibleColToGlobalCol(blanks, 1)).toBe(3);
|
|
199
|
+
expect(visibleColToGlobalCol(blanks, 2)).toBe(4);
|
|
200
|
+
expect(visibleColToGlobalCol(blanks, 3)).toBe(6); // Skips 5
|
|
201
|
+
});
|
|
202
|
+
// Edge case: all columns before a position are blanks
|
|
203
|
+
test('globalColToVisibleCol with many leading blanks', () => {
|
|
204
|
+
const blanks = [0, 1, 2, 3, 4];
|
|
205
|
+
expect(globalColToVisibleCol(blanks, 0)).toBe(undefined);
|
|
206
|
+
expect(globalColToVisibleCol(blanks, 4)).toBe(undefined);
|
|
207
|
+
expect(globalColToVisibleCol(blanks, 5)).toBe(0); // First visible
|
|
208
|
+
expect(globalColToVisibleCol(blanks, 6)).toBe(1);
|
|
209
|
+
expect(globalColToVisibleCol(blanks, 10)).toBe(5);
|
|
210
|
+
});
|
|
211
|
+
// Test visibleColToSeqPos with blanks (combined gap hiding and row gaps)
|
|
212
|
+
test('visibleColToSeqPos with both blanks and row gaps', () => {
|
|
213
|
+
// Sequence: A-C-G (global cols 0,1,2,3,4)
|
|
214
|
+
// If blanks = [1, 3], visible sequence becomes: A C G (visible cols 0,1,2)
|
|
215
|
+
const seq = 'A-C-G';
|
|
216
|
+
const blanks = [1, 3];
|
|
217
|
+
// Visible col 0 → global col 0 → 'A' → seqPos 0
|
|
218
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 0, blanks })).toBe(0);
|
|
219
|
+
// Visible col 1 → global col 2 → 'C' → seqPos 1
|
|
220
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 1, blanks })).toBe(1);
|
|
221
|
+
// Visible col 2 → global col 4 → 'G' → seqPos 2
|
|
222
|
+
expect(visibleColToSeqPos({ seq, visibleCol: 2, blanks })).toBe(2);
|
|
123
223
|
});
|
|
124
224
|
//# sourceMappingURL=rowCoordinateCalculations.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rowCoordinateCalculations.test.js","sourceRoot":"","sources":["../src/rowCoordinateCalculations.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAErC,OAAO,EACL,6BAA6B,EAC7B,+BAA+B,EAC/B,2BAA2B,GAC5B,MAAM,6BAA6B,CAAA;AAEpC,IAAI,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAC9C,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACvB;IACC;QACE,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,EAAE,CAAC;KAEV,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACZ,MAAM,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC1B,MAAM,MAAM,GAAa,EAAE,CAC1B;IACC;QACE,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,EAAE,EAAE,EAAE,CAAC;KAEX,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACZ,MAAM,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACnC,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAC7B;IACC;QACE,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,0CAA0C;QAClD,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,gBAAgB;QACxB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,wCAAwC;QAChD,CAAC,CAAC,EAAE,EAAE,CAAC;KAEV,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACZ,MAAM,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,8BAA8B,EAAE,GAAG,EAAE;IACxC,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CACvB;IACC;QACE,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,wCAAwC;QAChD,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,qCAAqC;QAC7C,CAAC,CAAC,EAAE,CAAC,CAAC;KAET,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACZ,MAAM,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,sCAAsC,EAAE,GAAG,EAAE;IAChD,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CACpB;IACC;QACE,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,qCAAqC;QAC7C,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,qCAAqC;QAC7C,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,0BAA0B;KAEvC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;QACZ,MAAM,CAAC,2BAA2B,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACjC,MAAM,QAAQ,GAAG,SAAS,CAAA;IAC1B,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,+CAA+C;IAC/C,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,+CAA+C;IAC/C,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,qCAAqC,EAAE,GAAG,EAAE;IAC/C,MAAM,QAAQ,GAAG,SAAS,CAAA;IAC1B,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,mDAAmD;IACnD,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,mDAAmD;IACnD,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACrC,MAAM,QAAQ,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC1D,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC5D,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACnD,MAAM,QAAQ,GAAG,OAAO,CAAA;IACxB,MAAM,CAAC,6BAA6B,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AAC7D,CAAC,CAAC,CAAA;AAEF,IAAI,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC3C,MAAM,GAAG,GAAG,YAAY,CAAA;IACxB,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACT,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACT,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACjB,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACjB,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACT,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACT,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACjB,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACjB,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACT,MAAM,CACJ,+BAA+B,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAClE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACX,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"rowCoordinateCalculations.test.js","sourceRoot":"","sources":["../src/rowCoordinateCalculations.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Convert a sequence position (ungapped, 0-based) to a global column index.
|
|
3
|
+
* This finds the global column that contains the Nth non-gap character.
|
|
4
|
+
*
|
|
5
|
+
* @param row - The row's sequence string (including gaps)
|
|
6
|
+
* @param seqPos - The sequence position (0-based count of non-gap characters)
|
|
7
|
+
* @returns The global column index containing the seqPos-th non-gap character
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* // Row: "A-TG-C" (A at 0, T at 2, G at 3, C at 5)
|
|
11
|
+
* seqPosToGlobalCol({ row: "A-TG-C", seqPos: 0 }) // → 0 (A)
|
|
12
|
+
* seqPosToGlobalCol({ row: "A-TG-C", seqPos: 1 }) // → 2 (T)
|
|
13
|
+
* seqPosToGlobalCol({ row: "A-TG-C", seqPos: 2 }) // → 3 (G)
|
|
14
|
+
* seqPosToGlobalCol({ row: "A-TG-C", seqPos: 3 }) // → 5 (C)
|
|
15
|
+
*/
|
|
16
|
+
export declare function seqPosToGlobalCol({ row, seqPos, }: {
|
|
17
|
+
row: string;
|
|
18
|
+
seqPos: number;
|
|
19
|
+
}): number;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { isBlank } from './util';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a sequence position (ungapped, 0-based) to a global column index.
|
|
4
|
+
* This finds the global column that contains the Nth non-gap character.
|
|
5
|
+
*
|
|
6
|
+
* @param row - The row's sequence string (including gaps)
|
|
7
|
+
* @param seqPos - The sequence position (0-based count of non-gap characters)
|
|
8
|
+
* @returns The global column index containing the seqPos-th non-gap character
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* // Row: "A-TG-C" (A at 0, T at 2, G at 3, C at 5)
|
|
12
|
+
* seqPosToGlobalCol({ row: "A-TG-C", seqPos: 0 }) // → 0 (A)
|
|
13
|
+
* seqPosToGlobalCol({ row: "A-TG-C", seqPos: 1 }) // → 2 (T)
|
|
14
|
+
* seqPosToGlobalCol({ row: "A-TG-C", seqPos: 2 }) // → 3 (G)
|
|
15
|
+
* seqPosToGlobalCol({ row: "A-TG-C", seqPos: 3 }) // → 5 (C)
|
|
16
|
+
*/
|
|
17
|
+
export function seqPosToGlobalCol({ row, seqPos, }) {
|
|
18
|
+
let nonGapCount = 0;
|
|
19
|
+
let globalCol = 0;
|
|
20
|
+
// Find the seqPos-th non-gap character
|
|
21
|
+
while (globalCol < row.length) {
|
|
22
|
+
if (!isBlank(row[globalCol])) {
|
|
23
|
+
if (nonGapCount === seqPos) {
|
|
24
|
+
return globalCol;
|
|
25
|
+
}
|
|
26
|
+
nonGapCount++;
|
|
27
|
+
}
|
|
28
|
+
globalCol++;
|
|
29
|
+
}
|
|
30
|
+
// If seqPos is 0 and we didn't find any non-gap character, return 0
|
|
31
|
+
// Otherwise return globalCol (which is row.length at this point)
|
|
32
|
+
return seqPos === 0 ? 0 : globalCol;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=seqPosToGlobalCol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seqPosToGlobalCol.js","sourceRoot":"","sources":["../src/seqPosToGlobalCol.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,iBAAiB,CAAC,EAChC,GAAG,EACH,MAAM,GAIP;IACC,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,uCAAuC;IACvC,OAAO,SAAS,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YAC7B,IAAI,WAAW,KAAK,MAAM,EAAE,CAAC;gBAC3B,OAAO,SAAS,CAAA;YAClB,CAAC;YACD,WAAW,EAAE,CAAA;QACf,CAAC;QACD,SAAS,EAAE,CAAA;IACb,CAAC;IACD,oEAAoE;IACpE,iEAAiE;IACjE,OAAO,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AACrC,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { describe, expect, test } from 'vitest';
|
|
2
|
+
import { seqPosToGlobalCol } from './seqPosToGlobalCol';
|
|
3
|
+
describe('seqPosToGlobalCol', () => {
|
|
4
|
+
test('converts sequence position to global column with no gaps', () => {
|
|
5
|
+
const row = 'ATGCATGC';
|
|
6
|
+
expect(seqPosToGlobalCol({ row, seqPos: 0 })).toBe(0);
|
|
7
|
+
expect(seqPosToGlobalCol({ row, seqPos: 3 })).toBe(3);
|
|
8
|
+
expect(seqPosToGlobalCol({ row, seqPos: 7 })).toBe(7);
|
|
9
|
+
expect(seqPosToGlobalCol({ row, seqPos: 8 })).toBe(8); // Past end
|
|
10
|
+
});
|
|
11
|
+
test('converts sequence position to global column with gaps', () => {
|
|
12
|
+
const row = 'A-TG-CA-TGC';
|
|
13
|
+
// Global: A(0) -(1) T(2) G(3) -(4) C(5) A(6) -(7) T(8) G(9) C(10)
|
|
14
|
+
// SeqPos: A(0) T(1) G(2) C(3) A(4) T(5) G(6) C(7)
|
|
15
|
+
expect(seqPosToGlobalCol({ row, seqPos: 0 })).toBe(0); // A
|
|
16
|
+
expect(seqPosToGlobalCol({ row, seqPos: 1 })).toBe(2); // T
|
|
17
|
+
expect(seqPosToGlobalCol({ row, seqPos: 2 })).toBe(3); // G
|
|
18
|
+
expect(seqPosToGlobalCol({ row, seqPos: 3 })).toBe(5); // C
|
|
19
|
+
expect(seqPosToGlobalCol({ row, seqPos: 4 })).toBe(6); // A
|
|
20
|
+
expect(seqPosToGlobalCol({ row, seqPos: 5 })).toBe(8); // T
|
|
21
|
+
expect(seqPosToGlobalCol({ row, seqPos: 6 })).toBe(9); // G
|
|
22
|
+
expect(seqPosToGlobalCol({ row, seqPos: 7 })).toBe(10); // C
|
|
23
|
+
expect(seqPosToGlobalCol({ row, seqPos: 8 })).toBe(11); // Past end
|
|
24
|
+
});
|
|
25
|
+
test('handles empty row', () => {
|
|
26
|
+
expect(seqPosToGlobalCol({ row: '', seqPos: 0 })).toBe(0);
|
|
27
|
+
});
|
|
28
|
+
test('handles row with only gaps', () => {
|
|
29
|
+
const row = '---..--';
|
|
30
|
+
expect(seqPosToGlobalCol({ row, seqPos: 0 })).toBe(0);
|
|
31
|
+
expect(seqPosToGlobalCol({ row, seqPos: 1 })).toBe(7); // Past end
|
|
32
|
+
});
|
|
33
|
+
test('handles mixed gap characters (- and .)', () => {
|
|
34
|
+
const row = 'A-.G-C.';
|
|
35
|
+
// Global: A(0) -(1) .(2) G(3) -(4) C(5) .(6)
|
|
36
|
+
// SeqPos: A(0) G(1) C(2)
|
|
37
|
+
expect(seqPosToGlobalCol({ row, seqPos: 0 })).toBe(0); // A
|
|
38
|
+
expect(seqPosToGlobalCol({ row, seqPos: 1 })).toBe(3); // G
|
|
39
|
+
expect(seqPosToGlobalCol({ row, seqPos: 2 })).toBe(5); // C
|
|
40
|
+
expect(seqPosToGlobalCol({ row, seqPos: 3 })).toBe(7); // Past end
|
|
41
|
+
});
|
|
42
|
+
test('handles leading gaps', () => {
|
|
43
|
+
const row = '--ACG';
|
|
44
|
+
// Global: -(0) -(1) A(2) C(3) G(4)
|
|
45
|
+
// SeqPos: A(0) C(1) G(2)
|
|
46
|
+
expect(seqPosToGlobalCol({ row, seqPos: 0 })).toBe(2); // A
|
|
47
|
+
expect(seqPosToGlobalCol({ row, seqPos: 1 })).toBe(3); // C
|
|
48
|
+
expect(seqPosToGlobalCol({ row, seqPos: 2 })).toBe(4); // G
|
|
49
|
+
});
|
|
50
|
+
test('handles trailing gaps', () => {
|
|
51
|
+
const row = 'ACG--';
|
|
52
|
+
// Global: A(0) C(1) G(2) -(3) -(4)
|
|
53
|
+
// SeqPos: A(0) C(1) G(2)
|
|
54
|
+
expect(seqPosToGlobalCol({ row, seqPos: 0 })).toBe(0); // A
|
|
55
|
+
expect(seqPosToGlobalCol({ row, seqPos: 1 })).toBe(1); // C
|
|
56
|
+
expect(seqPosToGlobalCol({ row, seqPos: 2 })).toBe(2); // G
|
|
57
|
+
expect(seqPosToGlobalCol({ row, seqPos: 3 })).toBe(5); // Past end
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=seqPosToGlobalCol.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seqPosToGlobalCol.test.js","sourceRoot":"","sources":["../src/seqPosToGlobalCol.test.ts"],"names":[],"mappings":"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"}
|
package/dist/util.d.ts
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { NodeWithIds } from './types';
|
|
2
2
|
import type { Theme } from '@mui/material';
|
|
3
3
|
import type { HierarchyNode } from 'd3-hierarchy';
|
|
4
4
|
export declare function transform<T>(obj: Record<string, T>, cb: (arg0: [string, T]) => [string, T]): {
|
|
5
5
|
[k: string]: T;
|
|
6
6
|
};
|
|
7
|
-
export declare function generateNodeIds(tree: Node, parent?: string, depth?: number): NodeWithIds;
|
|
8
7
|
export declare function colorContrast(colorScheme: Record<string, string>, theme: Theme): {
|
|
9
8
|
[k: string]: string;
|
|
10
9
|
};
|
package/dist/util.js
CHANGED
|
@@ -5,15 +5,6 @@ extend([namesPlugin]);
|
|
|
5
5
|
export function transform(obj, cb) {
|
|
6
6
|
return Object.fromEntries(Object.entries(obj).map(cb));
|
|
7
7
|
}
|
|
8
|
-
export function generateNodeIds(tree, parent = 'node', depth = 0) {
|
|
9
|
-
const id = `${parent}-${depth}`;
|
|
10
|
-
return {
|
|
11
|
-
...tree,
|
|
12
|
-
id,
|
|
13
|
-
name: tree.name || id,
|
|
14
|
-
children: tree.children?.map((b, i) => generateNodeIds(b, `${id}-${i}`, depth + 1)) || [],
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
8
|
export function colorContrast(colorScheme, theme) {
|
|
18
9
|
return transform(colorScheme, ([letter, color]) => [
|
|
19
10
|
letter,
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,WAAW,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAM9B,MAAM,CAAC,CAAC,WAAW,CAAC,CAAC,CAAA;AAErB,MAAM,UAAU,SAAS,CACvB,GAAsB,EACtB,EAAsC;IAEtC,OAAO,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAA;AACxD,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const version = "4.
|
|
1
|
+
export declare const version = "4.7.0";
|
package/dist/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export const version = '4.
|
|
1
|
+
export const version = '4.7.0';
|
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-msaview",
|
|
3
3
|
"author": "Colin",
|
|
4
|
-
"version": "4.
|
|
4
|
+
"version": "4.8.0",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -20,17 +20,17 @@
|
|
|
20
20
|
},
|
|
21
21
|
"scripts": {
|
|
22
22
|
"clean": "rimraf dist",
|
|
23
|
-
"watch": "
|
|
23
|
+
"watch": "pnpm build:esm --watch",
|
|
24
24
|
"format": "prettier --write .",
|
|
25
|
-
"prebuild": "
|
|
25
|
+
"prebuild": "pnpm clean",
|
|
26
26
|
"preversion": "node output-version.js > src/version.ts && git add -A src && git commit -m '[skip ci] Bump version.ts'",
|
|
27
27
|
"build:esm": "tsc",
|
|
28
28
|
"build:bundle": "webpack",
|
|
29
|
-
"build": "
|
|
30
|
-
"prepack": "
|
|
29
|
+
"build": "pnpm build:esm && pnpm build:bundle",
|
|
30
|
+
"prepack": "pnpm build",
|
|
31
31
|
"postversion": "git push --follow-tags",
|
|
32
32
|
"statedocs": "rm -rf apidocs && mkdir apidocs && node --experimental-strip-types docgen/generateStateModelDocs.ts",
|
|
33
|
-
"poststatedocs": "
|
|
33
|
+
"poststatedocs": "pnpm format",
|
|
34
34
|
"test": "vitest"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
@@ -46,16 +46,14 @@
|
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@mui/icons-material": "^7.0.1",
|
|
48
48
|
"@mui/material": "^7.0.1",
|
|
49
|
-
"
|
|
49
|
+
"@react-msaview/parsers": "workspace:*",
|
|
50
50
|
"colord": "^2.9.3",
|
|
51
51
|
"copy-to-clipboard": "^3.3.1",
|
|
52
52
|
"d3-array": "^3.2.3",
|
|
53
53
|
"d3-hierarchy": "^3.1.2",
|
|
54
|
-
"emf-js": "^2.0.0",
|
|
55
54
|
"file-saver": "^2.0.5",
|
|
56
55
|
"flatbush": "^4.4.0",
|
|
57
56
|
"pako": "^2.1.0",
|
|
58
|
-
"stockholm-js": "^1.0.10",
|
|
59
57
|
"svgcanvas": "^2.5.0"
|
|
60
58
|
}
|
|
61
59
|
}
|
|
@@ -19,11 +19,8 @@ const HeaderInfoArea = observer(function ({ model }: { model: MsaViewModel }) {
|
|
|
19
19
|
return mouseOverRowName && mouseCol !== undefined ? (
|
|
20
20
|
<Typography className={classes.margin}>
|
|
21
21
|
{mouseOverRowName}:
|
|
22
|
-
{model.
|
|
23
|
-
|
|
24
|
-
mouseCol,
|
|
25
|
-
)}{' '}
|
|
26
|
-
({model.mouseOverCoordToRowLetter(mouseOverRowName, mouseCol)})
|
|
22
|
+
{model.visibleColToSeqPosOneBased(mouseOverRowName, mouseCol)} (
|
|
23
|
+
{model.visibleColToRowLetter(mouseOverRowName, mouseCol)})
|
|
27
24
|
</Typography>
|
|
28
25
|
) : null
|
|
29
26
|
})
|
|
@@ -13,6 +13,7 @@ import type { FileLocation } from '@jbrowse/core/util/types'
|
|
|
13
13
|
const ImportForm = observer(function ({ model }: { model: MsaViewModel }) {
|
|
14
14
|
const [msaFile, setMsaFile] = useState<FileLocation>()
|
|
15
15
|
const [treeFile, setTreeFile] = useState<FileLocation>()
|
|
16
|
+
const [gffFile, setGffFile] = useState<FileLocation>()
|
|
16
17
|
const { error } = model
|
|
17
18
|
|
|
18
19
|
return (
|
|
@@ -48,6 +49,10 @@ const ImportForm = observer(function ({ model }: { model: MsaViewModel }) {
|
|
|
48
49
|
<Typography>Tree file or URL</Typography>
|
|
49
50
|
<FileSelector location={treeFile} setLocation={setTreeFile} />
|
|
50
51
|
</div>
|
|
52
|
+
<div>
|
|
53
|
+
<Typography>InterProScan GFF file or URL (optional)</Typography>
|
|
54
|
+
<FileSelector location={gffFile} setLocation={setGffFile} />
|
|
55
|
+
</div>
|
|
51
56
|
</div>
|
|
52
57
|
<div>
|
|
53
58
|
<Button
|
|
@@ -55,7 +60,7 @@ const ImportForm = observer(function ({ model }: { model: MsaViewModel }) {
|
|
|
55
60
|
// eslint-disable-next-line @typescript-eslint/no-floating-promises
|
|
56
61
|
;(async () => {
|
|
57
62
|
try {
|
|
58
|
-
await load(model, msaFile, treeFile)
|
|
63
|
+
await load(model, msaFile, treeFile, gffFile)
|
|
59
64
|
} catch (e) {
|
|
60
65
|
console.error(e)
|
|
61
66
|
model.setError(e)
|
|
@@ -5,6 +5,7 @@ export async function load(
|
|
|
5
5
|
model: MsaViewModel,
|
|
6
6
|
msaFile?: FileLocation,
|
|
7
7
|
treeFile?: FileLocation,
|
|
8
|
+
gffFile?: FileLocation,
|
|
8
9
|
) {
|
|
9
10
|
model.setError(undefined)
|
|
10
11
|
if (msaFile) {
|
|
@@ -13,4 +14,7 @@ export async function load(
|
|
|
13
14
|
if (treeFile) {
|
|
14
15
|
model.setTreeFilehandle(treeFile)
|
|
15
16
|
}
|
|
17
|
+
if (gffFile) {
|
|
18
|
+
model.setGFFFilehandle(gffFile)
|
|
19
|
+
}
|
|
16
20
|
}
|
|
@@ -69,8 +69,13 @@ function drawTiles({
|
|
|
69
69
|
if (entry) {
|
|
70
70
|
for (let j = 0, l2 = entry.length; j < l2; j++) {
|
|
71
71
|
const { start, end, accession } = entry[j]!
|
|
72
|
-
|
|
73
|
-
|
|
72
|
+
// Convert sequence positions to visible column positions
|
|
73
|
+
// seqPos is 1-based from InterPro, so subtract 1 for 0-based
|
|
74
|
+
const m1 = model.seqPosToVisibleCol(name, start - 1)
|
|
75
|
+
const m2 = model.seqPosToVisibleCol(name, end)
|
|
76
|
+
if (m1 === undefined || m2 === undefined) {
|
|
77
|
+
continue // Skip if either position is hidden
|
|
78
|
+
}
|
|
74
79
|
const x = m1 * colWidth
|
|
75
80
|
ctx.fillStyle = fillPalette[accession]!
|
|
76
81
|
ctx.strokeStyle = strokePalette[accession]!
|