Skip to content

Commit

Permalink
Rearrange some files
Browse files Browse the repository at this point in the history
  • Loading branch information
cmdcolin committed Nov 18, 2018
1 parent bebad90 commit 7a21857
Show file tree
Hide file tree
Showing 5 changed files with 119 additions and 71 deletions.
52 changes: 22 additions & 30 deletions src/JBrowse/Store/SeqFeature/BAM.js
Expand Up @@ -7,6 +7,21 @@ const bamIndexedFilesCache = LRU(5)

const BlobFilehandleWrapper = cjsRequire('../../Model/BlobFilehandleWrapper')

class PairedBamRead {
id() {
return Math.min(+this.f1.id(), +this.f2.id())
}
children() {
}
get(field) {
if(field == 'start') {
return Math.min(this.f1.get('start'), this.f2.get('start'))
} else if(field == 'end') {
return Math.max(this.f1.get('end'), this.f2.get('end'))
}
}
}

class BamSlightlyLazyFeature {

_get_name() { return this.record._get('name') }
Expand Down Expand Up @@ -66,8 +81,8 @@ class BamSlightlyLazyFeature {

function canBePaired(alignment) {
return alignment.isPaired() &&
alignment.isMateMapped() &&
alignment.chr === alignment.mate.chr &&
!alignment.isMateUnmapped() &&
alignment._refID === alignment._next_refid() &&
(alignment.isRead1() || alignment.isRead2()) &&
!(alignment.isSecondary() || alignment.isSupplementary());
}
Expand Down Expand Up @@ -212,7 +227,6 @@ return declare( [ SeqFeatureStore, DeferredStatsMixin, DeferredFeaturesMixin, In
.then(() => this.bam.hasRefSeq(this._refNameToId(seqName)))
.then(callback, errorCallback)
},
,

// called by getFeatures from the DeferredFeaturesMixin
_getFeatures( query, featCallback, endCallback, errorCallback ) {
Expand All @@ -235,40 +249,18 @@ return declare( [ SeqFeatureStore, DeferredStatsMixin, DeferredFeaturesMixin, In
if (feat) {
feat.f2 = records[i]
pairCache[records[i]._get('name')] = undefined
featCallback(feat)
}
else {
feat = { f1: records[i] }
pairCache[alignment._get('name')] = feat
featCallback(feat)
feat = new PairedBamRead()
feat.f1 = records[i]
pairCache[records[i]._get('name')] = feat
}
}
else {
featCallback(feat)
featCallback(records[i])
}
// const r1 = records[i]
// const r2 = records[i+1]
// if(r1.get('name') == r2.get('name')) {
// featCallback({ r1, r2 })
// new SimpleFeature({
// id: r1.get('name'),
// data: {
// start: Math.min(r1.get('start'), r2.get('start')),
// end: Math.max(r1.get('end'), r2.get('end')),
// insert_size: r1.get('template_length'),
// type: 'match',
// subfeatures: [
// { start: r1.get('start'), end: r1.get('end') },
// { start: r2.get('start'), end: r2.get('end') }
// ]
// }
// }))
// i++;
// }
}
// for (let i = 0; i < records.length; i += 1) {
// featCallback(this._bamRecordToFeature(records[i]))
// }

endCallback()
})
.catch(err => {
Expand Down
46 changes: 46 additions & 0 deletions src/JBrowse/View/FeatureGlyph/PairedAlignment.js
@@ -0,0 +1,46 @@
define([
'dojo/_base/declare',
'dojo/_base/array',
'dojo/_base/lang',
'JBrowse/View/FeatureGlyph/Alignment'
],
function(
declare,
array,
lang,
Alignment
) {
return declare(Alignment, {

renderFeature( context, fRect ) {
this.renderConnector( context, fRect );
this.renderSegments( context, fRect );
},

renderSegments( context, fRect ) {
const f1 = dojo.clone(fRect);
const f2 = dojo.clone(fRect);
f1.f = fRect.f.f1
f2.f = fRect.f.f2
this.inherited(arguments, [context, f1])
this.inherited(arguments, [context, f2])
},

renderConnector( context, fRect ) {
// connector
var connectorColor = this.getStyle( fRect.f, 'connectorColor' );
if( connectorColor ) {
context.fillStyle = connectorColor;
var connectorThickness = this.getStyle( fRect.f, 'connectorThickness' );
context.fillRect(
fRect.rect.l, // left
Math.round(fRect.rect.t+(fRect.rect.h-connectorThickness)/2), // top
fRect.rect.w, // width
connectorThickness
);
}
}

});
});

40 changes: 0 additions & 40 deletions src/JBrowse/View/FeatureGlyph/PairedRead.js

This file was deleted.

50 changes: 50 additions & 0 deletions src/JBrowse/View/Track/FloatingAlignment.js
@@ -0,0 +1,50 @@
define([
'dojo/_base/declare',
'dojo/_base/array',
'dojo/_base/lang',
'JBrowse/View/FeatureGlyph/Alignment'
],
function(
declare,
array,
lang,
Alignment
) {
return declare([Segments, Alignment], {

renderFeature( context, fRect ) {
this.renderConnector( context, fRect );
this.renderSegments( context, fRect );
},

layoutFeature(viewArgs, layout, feature) {
var rect = this.inherited(arguments);
if (!rect) {
return rect;
}
var t = Math.abs(feature.get('insert_size'))

// need to set the top of the inner rect
rect.rect.t = t / (this.config.scaleFactor||1);
rect.t = t / (this.config.scaleFactor||1);

return rect;
},
renderConnector( context, fRect ) {
// connector
var connectorColor = this.getStyle( fRect.f, 'connectorColor' );
if( connectorColor ) {
context.fillStyle = connectorColor;
var connectorThickness = this.getStyle( fRect.f, 'connectorThickness' );
context.fillRect(
fRect.rect.l, // left
Math.round(fRect.rect.t+(fRect.rect.h-connectorThickness)/2), // top
fRect.rect.w, // width
connectorThickness
);
}
}

});
});

2 changes: 1 addition & 1 deletion src/JBrowse/View/Track/PairedReads.js
Expand Up @@ -14,7 +14,7 @@ define( [
return declare(CanvasFeatures, {
_defaultConfig: function() {
return Util.deepUpdate(lang.clone(this.inherited(arguments)), {
glyph: 'JBrowse/View/FeatureGlyph/PairedRead',
glyph: 'JBrowse/View/FeatureGlyph/PairedAlignment',
maxFeatureScreenDensity: 60,
showLabels: false
});
Expand Down

0 comments on commit 7a21857

Please sign in to comment.