jbrowse-plugin-msaview 2.2.8 → 2.3.2
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/AddHighlightModel/index.d.ts +1 -1
- package/dist/AddHighlightModel/index.js.map +1 -1
- package/dist/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.d.ts +2 -1
- package/dist/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.js +1 -1
- package/dist/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.js.map +1 -1
- package/dist/BgzipFastaMsaAdapter/configSchema.d.ts +3 -3
- package/dist/BgzipFastaMsaAdapter/configSchema.js.map +1 -1
- package/dist/BgzipFastaMsaAdapter/index.d.ts +1 -1
- package/dist/BgzipFastaMsaAdapter/index.js.map +1 -1
- package/dist/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.d.ts +1 -1
- package/dist/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.js +1 -1
- package/dist/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.js.map +1 -1
- package/dist/LaunchMsaView/components/EnsemblGeneTree/ensemblGeneTreeUtils.js.map +1 -1
- package/dist/LaunchMsaView/components/LaunchMsaViewDialog.d.ts +1 -1
- package/dist/LaunchMsaView/components/LaunchMsaViewDialog.js.map +1 -1
- package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.d.ts +1 -1
- package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js +1 -1
- package/dist/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.js.map +1 -1
- package/dist/LaunchMsaView/components/ManualMSALoader/launchView.d.ts +1 -1
- package/dist/LaunchMsaView/components/ManualMSALoader/launchView.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.d.ts +1 -2
- package/dist/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.js +21 -14
- package/dist/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.d.ts +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.js +32 -35
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastRIDPanel.d.ts +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastRIDPanel.js +2 -2
- package/dist/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastRIDPanel.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/blastLaunchView.d.ts +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/blastLaunchView.js.map +1 -1
- package/dist/LaunchMsaView/components/NCBIBlastQuery/consts.d.ts +2 -0
- package/dist/LaunchMsaView/components/NCBIBlastQuery/consts.js +1 -0
- package/dist/LaunchMsaView/components/NCBIBlastQuery/consts.js.map +1 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.d.ts +1 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +6 -8
- package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js.map +1 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.d.ts +2 -2
- package/dist/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.js.map +1 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.d.ts +1 -1
- package/dist/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.js.map +1 -1
- package/dist/LaunchMsaView/components/TranscriptSelector.d.ts +3 -3
- package/dist/LaunchMsaView/components/TranscriptSelector.js +4 -4
- package/dist/LaunchMsaView/components/TranscriptSelector.js.map +1 -1
- package/dist/LaunchMsaView/components/useTranscriptSelection.d.ts +1 -1
- package/dist/LaunchMsaView/components/useTranscriptSelection.js +1 -2
- package/dist/LaunchMsaView/components/useTranscriptSelection.js.map +1 -1
- package/dist/LaunchMsaView/components/util.js +1 -1
- package/dist/LaunchMsaView/components/util.js.map +1 -1
- package/dist/LaunchMsaView/index.d.ts +1 -1
- package/dist/LaunchMsaView/index.js.map +1 -1
- package/dist/LaunchMsaView/util.d.ts +1 -0
- package/dist/LaunchMsaView/util.js +10 -0
- package/dist/LaunchMsaView/util.js.map +1 -1
- package/dist/MsaViewPanel/afterCreateAutoruns.d.ts +10 -0
- package/dist/MsaViewPanel/afterCreateAutoruns.js +258 -0
- package/dist/MsaViewPanel/afterCreateAutoruns.js.map +1 -0
- package/dist/MsaViewPanel/blosum62.d.ts +2 -0
- package/dist/MsaViewPanel/blosum62.js +628 -0
- package/dist/MsaViewPanel/blosum62.js.map +1 -0
- package/dist/MsaViewPanel/components/LoadingBLAST.d.ts +1 -1
- package/dist/MsaViewPanel/components/LoadingBLAST.js.map +1 -1
- package/dist/MsaViewPanel/components/MsaViewPanel.d.ts +1 -1
- package/dist/MsaViewPanel/components/MsaViewPanel.js.map +1 -1
- package/dist/MsaViewPanel/doLaunchBlast.d.ts +1 -1
- package/dist/MsaViewPanel/doLaunchBlast.js.map +1 -1
- package/dist/MsaViewPanel/genomeToMSA.d.ts +1 -1
- package/dist/MsaViewPanel/genomeToMSA.js.map +1 -1
- package/dist/MsaViewPanel/index.d.ts +1 -1
- package/dist/MsaViewPanel/index.js.map +1 -1
- package/dist/MsaViewPanel/model.d.ts +31 -39
- package/dist/MsaViewPanel/model.js +17 -309
- package/dist/MsaViewPanel/model.js.map +1 -1
- package/dist/MsaViewPanel/msaDataStore.d.ts +3 -4
- package/dist/MsaViewPanel/msaDataStore.js +59 -173
- package/dist/MsaViewPanel/msaDataStore.js.map +1 -1
- package/dist/MsaViewPanel/pairwiseAlignment.d.ts +0 -7
- package/dist/MsaViewPanel/pairwiseAlignment.js +1 -636
- package/dist/MsaViewPanel/pairwiseAlignment.js.map +1 -1
- package/dist/MsaViewPanel/structureConnection.js +1 -5
- package/dist/MsaViewPanel/structureConnection.js.map +1 -1
- package/dist/MsaViewPanel/util.d.ts +1 -1
- package/dist/index.d.ts +6 -6
- package/dist/index.js +21 -22
- package/dist/index.js.map +1 -1
- package/dist/jbrowse-plugin-msaview.umd.production.min.js +29 -29
- package/dist/jbrowse-plugin-msaview.umd.production.min.js.map +4 -4
- package/dist/utils/msa.js +35 -77
- package/dist/utils/msa.js.map +1 -1
- package/dist/utils/ncbiBlast.js +1 -10
- package/dist/utils/ncbiBlast.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/version.js.map +1 -1
- package/package.json +33 -30
- package/src/AddHighlightModel/index.tsx +1 -1
- package/src/BgzipFastaMsaAdapter/BgzipFastaMsaAdapter.ts +3 -4
- package/src/BgzipFastaMsaAdapter/configSchema.ts +2 -1
- package/src/BgzipFastaMsaAdapter/index.ts +2 -1
- package/src/LaunchMsaView/components/EnsemblGeneTree/EnsemblGeneTree.tsx +2 -6
- package/src/LaunchMsaView/components/EnsemblGeneTree/ensemblGeneTreeUtils.ts +2 -1
- package/src/LaunchMsaView/components/LaunchMsaViewDialog.tsx +2 -1
- package/src/LaunchMsaView/components/ManualMSALoader/ManualMSALoader.tsx +6 -7
- package/src/LaunchMsaView/components/ManualMSALoader/launchView.ts +5 -2
- package/src/LaunchMsaView/components/NCBIBlastQuery/CachedBlastResults.tsx +22 -17
- package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastAutomaticPanel.tsx +40 -52
- package/src/LaunchMsaView/components/NCBIBlastQuery/NCBIBlastRIDPanel.tsx +6 -13
- package/src/LaunchMsaView/components/NCBIBlastQuery/blastLaunchView.ts +2 -1
- package/src/LaunchMsaView/components/NCBIBlastQuery/consts.ts +2 -0
- package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +7 -19
- package/src/LaunchMsaView/components/PreLoadedMSA/fetchMSAData.ts +2 -2
- package/src/LaunchMsaView/components/PreLoadedMSA/preCalculatedLaunchView.ts +1 -2
- package/src/LaunchMsaView/components/TranscriptSelector.tsx +7 -6
- package/src/LaunchMsaView/components/useTranscriptSelection.ts +1 -6
- package/src/LaunchMsaView/components/util.ts +1 -1
- package/src/LaunchMsaView/index.ts +6 -5
- package/src/LaunchMsaView/util.ts +11 -0
- package/src/MsaViewPanel/afterCreateAutoruns.ts +299 -0
- package/src/MsaViewPanel/blosum62.ts +628 -0
- package/src/MsaViewPanel/components/LoadingBLAST.tsx +2 -1
- package/src/MsaViewPanel/components/MsaViewPanel.tsx +2 -1
- package/src/MsaViewPanel/doLaunchBlast.ts +1 -1
- package/src/MsaViewPanel/genomeToMSA.ts +2 -1
- package/src/MsaViewPanel/index.ts +2 -1
- package/src/MsaViewPanel/model.ts +30 -392
- package/src/MsaViewPanel/msaDataStore.ts +56 -196
- package/src/MsaViewPanel/pairwiseAlignment.ts +1 -637
- package/src/MsaViewPanel/structureConnection.ts +1 -5
- package/src/MsaViewPanel/util.ts +1 -1
- package/src/index.ts +5 -4
- package/src/utils/msa.ts +45 -100
- package/src/utils/ncbiBlast.ts +3 -13
- package/src/version.ts +1 -1
- package/CHANGELOG.md +0 -101
|
@@ -1,197 +1,83 @@
|
|
|
1
|
+
import { openDB } from 'idb';
|
|
1
2
|
const DB_NAME = 'jbrowse-msaview-data';
|
|
2
3
|
const DB_VERSION = 1;
|
|
3
4
|
const STORE_NAME = 'msa-data';
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
if (typeof indexedDB === 'undefined') {
|
|
13
|
-
indexedDBAvailable = false;
|
|
14
|
-
return false;
|
|
15
|
-
}
|
|
16
|
-
// Try to open a test database to verify IndexedDB is working
|
|
17
|
-
// This can fail in private browsing mode in some browsers
|
|
18
|
-
indexedDBAvailable = true;
|
|
19
|
-
return true;
|
|
20
|
-
}
|
|
21
|
-
catch {
|
|
22
|
-
indexedDBAvailable = false;
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
async function openDB() {
|
|
27
|
-
if (!checkIndexedDBAvailable()) {
|
|
28
|
-
return undefined;
|
|
29
|
-
}
|
|
30
|
-
if (dbPromise) {
|
|
31
|
-
return dbPromise;
|
|
32
|
-
}
|
|
33
|
-
dbPromise = new Promise(resolve => {
|
|
34
|
-
try {
|
|
35
|
-
const request = indexedDB.open(DB_NAME, DB_VERSION);
|
|
36
|
-
request.addEventListener('error', () => {
|
|
37
|
-
// IndexedDB may be blocked in private browsing mode
|
|
38
|
-
console.warn('IndexedDB unavailable - MSA data will not persist across page refreshes');
|
|
39
|
-
indexedDBAvailable = false;
|
|
40
|
-
resolve(undefined);
|
|
41
|
-
});
|
|
42
|
-
request.onsuccess = () => {
|
|
43
|
-
resolve(request.result);
|
|
44
|
-
};
|
|
45
|
-
request.onupgradeneeded = event => {
|
|
46
|
-
const db = event.target.result;
|
|
47
|
-
if (!db.objectStoreNames.contains(STORE_NAME)) {
|
|
48
|
-
const store = db.createObjectStore(STORE_NAME, { keyPath: 'id' });
|
|
49
|
-
store.createIndex('timestamp', 'timestamp', { unique: false });
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
catch (e) {
|
|
54
|
-
console.warn('Failed to open IndexedDB:', e);
|
|
55
|
-
indexedDBAvailable = false;
|
|
56
|
-
resolve(undefined);
|
|
57
|
-
}
|
|
5
|
+
async function getDB() {
|
|
6
|
+
return openDB(DB_NAME, DB_VERSION, {
|
|
7
|
+
upgrade(db) {
|
|
8
|
+
if (!db.objectStoreNames.contains(STORE_NAME)) {
|
|
9
|
+
const store = db.createObjectStore(STORE_NAME, { keyPath: 'id' });
|
|
10
|
+
store.createIndex('timestamp', 'timestamp', { unique: false });
|
|
11
|
+
}
|
|
12
|
+
},
|
|
58
13
|
});
|
|
59
|
-
return dbPromise;
|
|
60
14
|
}
|
|
61
15
|
export function generateDataStoreId() {
|
|
62
16
|
return `msa-${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;
|
|
63
17
|
}
|
|
64
18
|
export async function storeMsaData(id, data) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
19
|
+
try {
|
|
20
|
+
const db = await getDB();
|
|
21
|
+
const storedData = {
|
|
22
|
+
id,
|
|
23
|
+
msa: data.msa,
|
|
24
|
+
tree: data.tree,
|
|
25
|
+
treeMetadata: data.treeMetadata,
|
|
26
|
+
timestamp: Date.now(),
|
|
27
|
+
};
|
|
28
|
+
await db.put(STORE_NAME, storedData);
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch (e) {
|
|
32
|
+
console.warn('Failed to store MSA data:', e);
|
|
68
33
|
return false;
|
|
69
34
|
}
|
|
70
|
-
return new Promise(resolve => {
|
|
71
|
-
try {
|
|
72
|
-
const transaction = db.transaction(STORE_NAME, 'readwrite');
|
|
73
|
-
const store = transaction.objectStore(STORE_NAME);
|
|
74
|
-
const storedData = {
|
|
75
|
-
id,
|
|
76
|
-
msa: data.msa,
|
|
77
|
-
tree: data.tree,
|
|
78
|
-
treeMetadata: data.treeMetadata,
|
|
79
|
-
timestamp: Date.now(),
|
|
80
|
-
};
|
|
81
|
-
const request = store.put(storedData);
|
|
82
|
-
request.addEventListener('error', () => {
|
|
83
|
-
// Log but don't fail - storage is best-effort
|
|
84
|
-
console.warn('Failed to store MSA data:', request.error);
|
|
85
|
-
resolve(false);
|
|
86
|
-
});
|
|
87
|
-
request.onsuccess = () => {
|
|
88
|
-
resolve(true);
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
catch (e) {
|
|
92
|
-
console.warn('Failed to store MSA data:', e);
|
|
93
|
-
resolve(false);
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
35
|
}
|
|
97
36
|
export async function retrieveMsaData(id) {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
const request = store.get(id);
|
|
107
|
-
request.addEventListener('error', () => {
|
|
108
|
-
console.warn('Failed to retrieve MSA data:', request.error);
|
|
109
|
-
resolve(undefined);
|
|
110
|
-
});
|
|
111
|
-
request.onsuccess = () => {
|
|
112
|
-
const result = request.result;
|
|
113
|
-
if (result) {
|
|
114
|
-
resolve({
|
|
115
|
-
msa: result.msa,
|
|
116
|
-
tree: result.tree,
|
|
117
|
-
treeMetadata: result.treeMetadata,
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
else {
|
|
121
|
-
resolve(undefined);
|
|
122
|
-
}
|
|
37
|
+
try {
|
|
38
|
+
const db = await getDB();
|
|
39
|
+
const result = (await db.get(STORE_NAME, id));
|
|
40
|
+
if (result) {
|
|
41
|
+
return {
|
|
42
|
+
msa: result.msa,
|
|
43
|
+
tree: result.tree,
|
|
44
|
+
treeMetadata: result.treeMetadata,
|
|
123
45
|
};
|
|
124
46
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
catch (e) {
|
|
50
|
+
console.warn('Failed to retrieve MSA data:', e);
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
130
53
|
}
|
|
131
54
|
export async function deleteMsaData(id) {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
55
|
+
try {
|
|
56
|
+
const db = await getDB();
|
|
57
|
+
await db.delete(STORE_NAME, id);
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
console.warn('Failed to delete MSA data:', e);
|
|
135
61
|
}
|
|
136
|
-
return new Promise(resolve => {
|
|
137
|
-
try {
|
|
138
|
-
const transaction = db.transaction(STORE_NAME, 'readwrite');
|
|
139
|
-
const store = transaction.objectStore(STORE_NAME);
|
|
140
|
-
const request = store.delete(id);
|
|
141
|
-
request.addEventListener('error', () => {
|
|
142
|
-
console.warn('Failed to delete MSA data:', request.error);
|
|
143
|
-
resolve();
|
|
144
|
-
});
|
|
145
|
-
request.onsuccess = () => {
|
|
146
|
-
resolve();
|
|
147
|
-
};
|
|
148
|
-
}
|
|
149
|
-
catch (e) {
|
|
150
|
-
console.warn('Failed to delete MSA data:', e);
|
|
151
|
-
resolve();
|
|
152
|
-
}
|
|
153
|
-
});
|
|
154
62
|
}
|
|
155
|
-
// Clean up entries older than the specified age (default 7 days)
|
|
156
63
|
export async function cleanupOldData(maxAgeMs = 7 * 24 * 60 * 60 * 1000) {
|
|
157
|
-
|
|
158
|
-
|
|
64
|
+
try {
|
|
65
|
+
const db = await getDB();
|
|
66
|
+
const cutoffTime = Date.now() - maxAgeMs;
|
|
67
|
+
const tx = db.transaction(STORE_NAME, 'readwrite');
|
|
68
|
+
const index = tx.store.index('timestamp');
|
|
69
|
+
let cursor = await index.openCursor(IDBKeyRange.upperBound(cutoffTime));
|
|
70
|
+
let deletedCount = 0;
|
|
71
|
+
while (cursor) {
|
|
72
|
+
await cursor.delete();
|
|
73
|
+
deletedCount++;
|
|
74
|
+
cursor = await cursor.continue();
|
|
75
|
+
}
|
|
76
|
+
return deletedCount;
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
console.warn('Failed to cleanup old MSA data:', e);
|
|
159
80
|
return 0;
|
|
160
81
|
}
|
|
161
|
-
const cutoffTime = Date.now() - maxAgeMs;
|
|
162
|
-
return new Promise(resolve => {
|
|
163
|
-
try {
|
|
164
|
-
const transaction = db.transaction(STORE_NAME, 'readwrite');
|
|
165
|
-
const store = transaction.objectStore(STORE_NAME);
|
|
166
|
-
const index = store.index('timestamp');
|
|
167
|
-
const range = IDBKeyRange.upperBound(cutoffTime);
|
|
168
|
-
const request = index.openCursor(range);
|
|
169
|
-
let deletedCount = 0;
|
|
170
|
-
request.addEventListener('error', () => {
|
|
171
|
-
console.warn('Failed to cleanup old MSA data:', request.error);
|
|
172
|
-
resolve(deletedCount);
|
|
173
|
-
});
|
|
174
|
-
request.onsuccess = event => {
|
|
175
|
-
const cursor = event.target
|
|
176
|
-
.result;
|
|
177
|
-
if (cursor) {
|
|
178
|
-
cursor.delete();
|
|
179
|
-
deletedCount++;
|
|
180
|
-
cursor.continue();
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
resolve(deletedCount);
|
|
184
|
-
}
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
catch (e) {
|
|
188
|
-
console.warn('Failed to cleanup old MSA data:', e);
|
|
189
|
-
resolve(0);
|
|
190
|
-
}
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
// Check if IndexedDB storage is available
|
|
194
|
-
export function isIndexedDBAvailable() {
|
|
195
|
-
return checkIndexedDBAvailable();
|
|
196
82
|
}
|
|
197
83
|
//# sourceMappingURL=msaDataStore.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"msaDataStore.js","sourceRoot":"","sources":["../../src/MsaViewPanel/msaDataStore.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"msaDataStore.js","sourceRoot":"","sources":["../../src/MsaViewPanel/msaDataStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,15 +11,8 @@ export interface PairwiseAlignment {
|
|
|
11
11
|
consensus: string;
|
|
12
12
|
alns: readonly [AlignmentRow, AlignmentRow];
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
15
|
-
* Needleman-Wunsch global alignment algorithm
|
|
16
|
-
*/
|
|
17
14
|
export declare function needlemanWunsch(seq1: string, seq2: string, gapOpen?: number, gapExtend?: number): AlignmentResult;
|
|
18
15
|
export declare function runPairwiseAlignment(seq1: string, seq2: string): PairwiseAlignment;
|
|
19
|
-
/**
|
|
20
|
-
* Build coordinate mappings from a pairwise alignment
|
|
21
|
-
* Maps between ungapped positions in seq1 and seq2
|
|
22
|
-
*/
|
|
23
16
|
export declare function buildAlignmentMaps(pairwiseAlignment: PairwiseAlignment): {
|
|
24
17
|
seq1ToSeq2: Map<number, number>;
|
|
25
18
|
seq2ToSeq1: Map<number, number>;
|