Skip to content

Commit

Permalink
Fix some issues with memory management
Browse files Browse the repository at this point in the history
  • Loading branch information
cmdcolin committed Oct 31, 2018
1 parent bf8166b commit 7c9988d
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 10 deletions.
18 changes: 14 additions & 4 deletions src/JBrowse/Store/SeqFeature/BAM.js
Original file line number Diff line number Diff line change
Expand Up @@ -251,9 +251,8 @@ return declare( [ SeqFeatureStore, DeferredStatsMixin, DeferredFeaturesMixin, In
feat = pairCache[name]
if (feat && records[i].id() != feat.f1.id()) {
feat.f2 = this._bamRecordToFeature(records[i])
delete pairCache[name]
pairCache[name] = undefined
this.featureCache[name] = feat
featCallback(feat)
}
else {
feat = new PairedBamRead()
Expand All @@ -266,8 +265,11 @@ return declare( [ SeqFeatureStore, DeferredStatsMixin, DeferredFeaturesMixin, In
featCallback(feat)
}
}
Object.keys(this.featureCache).forEach(k => {
featCallback(this.featureCache[k])
console.log(Object.keys(this.featureCache).length)
Object.entries(this.featureCache).forEach(([k, v]) => {
if(v.get('end') - v.get('start') < 10000) {
featCallback(v)
}
})
} else {
for(let i = 0; i < records.length; i++) {
Expand All @@ -287,6 +289,13 @@ return declare( [ SeqFeatureStore, DeferredStatsMixin, DeferredFeaturesMixin, In
.then(records => {
let min = Infinity;
let max = -Infinity;
Object.entries(this.featureCache).forEach(([k, v]) => {
if(v.get('start') > query.end) {
delete this.featureCache[k]
} else if(v.get('end') < query.start) {
delete this.featureCache[k]
}
})
for(let i = 0; i < records.length; i++) {
if(records[i]._get('start') < min) {
min = records[i]._get('start')
Expand All @@ -295,6 +304,7 @@ return declare( [ SeqFeatureStore, DeferredStatsMixin, DeferredFeaturesMixin, In
max = records[i]._get('end')
}
}

featCallback({ min, max })
}).catch(errorCallback)
}, errorCallback)
Expand Down
15 changes: 9 additions & 6 deletions src/JBrowse/View/Track/Alignments2.js
Original file line number Diff line number Diff line change
Expand Up @@ -143,22 +143,25 @@ return declare( [ CanvasFeatureTrack, AlignmentsMixin ], {

fillBlock: function( args ) {
if(this.config.viewAsPairs) {
this.initial = new Promise((resolve, reject) => {
let supermethod = this.getInherited(arguments)
var initial = new Promise((resolve, reject) => {
var reg = this.browser.view.visibleRegion()
var len = reg.end - reg.start
const region = {
ref: this.refSeq.name,
start: Math.max( 0, reg.start ),
end: reg.end,
viewAsPairs: true
}
region.start = Math.max( 0, region.start )
region.end = region.end

this.store.getPairedRanges(region, range => {
region.start = range.min
region.end = range.max
region.start = Math.max(0, Math.max(range.min, reg.start - len*4))
region.end = Math.min(range.max, reg.end + len*4)
this.store.getFeatures(region, function() {}, resolve, reject)
}, reject)
})
let supermethod = this.getInherited(arguments)
this.initial.then(() => {
}).then(() => {
supermethod.apply(this, [args])
})
} else {
Expand Down

0 comments on commit 7c9988d

Please sign in to comment.