Skip to content

Commit 3d8d250

Browse files
committed
Enable case-insensitive search for chromosomes if canonical name is lower case.
1 parent 1eb0438 commit 3d8d250

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

js/genome/genome.js

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import ChromAliasDefaults from "./chromAliasDefaults.js"
2020
class Genome {
2121

2222
#wgChromosomeNames
23+
#aliasRecordCache = new Map()
2324

2425
static async createGenome(options, browser) {
2526

@@ -162,11 +163,9 @@ class Genome {
162163

163164
async loadChromosome(chr) {
164165

165-
if (this.chromAlias) {
166-
const chromAliasRecord = await this.chromAlias.search(chr)
167-
if (chromAliasRecord) {
168-
chr = chromAliasRecord.chr
169-
}
166+
const chromAliasRecord = await this.getAliasRecord(chr)
167+
if (chromAliasRecord) {
168+
chr = chromAliasRecord.chr
170169
}
171170

172171
if (!this.chromosomes.has(chr)) {
@@ -183,8 +182,16 @@ class Genome {
183182
}
184183

185184
async getAliasRecord(chr) {
185+
if (this.#aliasRecordCache.has(chr)) {
186+
return this.#aliasRecordCache.get(chr)
187+
}
186188
if (this.chromAlias) {
187-
return this.chromAlias.search(chr)
189+
let aliasRecord = await this.chromAlias.search(chr)
190+
if (!aliasRecord && chr !== chr.toLowerCase()) {
191+
aliasRecord = await this.chromAlias.search(chr.toLowerCase())
192+
}
193+
this.#aliasRecordCache.set(chr, aliasRecord) // Set even if undefined to prevent recurrent searches
194+
return aliasRecord
188195
}
189196
}
190197

0 commit comments

Comments
 (0)