@jbrowse/plugin-wiggle
Version:
JBrowse 2 wiggle adapters, tracks, etc.
27 lines (26 loc) • 993 B
JavaScript
import { forEachWithStopTokenCheck, groupBy } from '@jbrowse/core/util';
import WiggleBaseRenderer from '../WiggleBaseRenderer';
export default class MultiDensityPlotRenderer extends WiggleBaseRenderer {
async draw(ctx, props) {
const { stopToken, sources, features } = props;
const groups = groupBy(features.values(), f => f.get('source'));
const height = props.height / sources.length;
let feats = [];
const { drawDensity } = await import('../drawDensity');
ctx.save();
forEachWithStopTokenCheck(sources, stopToken, source => {
const features = groups[source.name] || [];
const { reducedFeatures } = drawDensity(ctx, {
...props,
features,
height,
});
ctx.translate(0, height);
feats = feats.concat(reducedFeatures);
});
ctx.restore();
return {
reducedFeatures: feats,
};
}
}