Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
refresh() {
if (this.seq_g) {
const scale = this.getScaleFromAttribute();
if (scale === null) {
console.error("The attribute scale is not valid.");
return;
}
const colorScale = scaleLinear();
this.colorScale = defaultScale;
if (this._color_range) {
this.colorScale = ColorScaleParser(this._color_range);
}
colorScale.domain(this.colorScale.domain).range(this.colorScale.range);
const ftWidth = this.getSingleBaseWidth();
const first = Math.round(Math.max(0, this._displaystart - 2));
const last = Math.round(
Math.min(this.sequence.length, this._displayend + 1)
);
const bases = this.sequence
.slice(first, last)
.split("")
.map((aa, i) => {
// use 0 if the base is not in the given scale
const value = aa.toUpperCase() in scale ? scale[aa.toUpperCase()] : 0;
return {
start: 1 + first + i,
// this.bindEvents = this.bindEvents(this);
let aboutToApply = false;
// Postponing the zoom translation to the next frame.
// This helps in case several attributes are changed almost at the same time,
// in this way, only one refresh will be called.
this.applyZoomTranslation = () => {
if (aboutToApply) return;
aboutToApply = true;
requestAnimationFrame(() => {
aboutToApply = false;
this._applyZoomTranslation();
});
};
this._onResize = this._onResize.bind(this);
this._listenForResize = this._listenForResize.bind(this);
this.trackHighlighter = new TrackHighlighter({ element: this, min: 1 });
}
return hydroInterfaceScale;
case "isoelectric-point-scale":
return isoelectricPointScale;
case "hydrophobicity-octanol-scale":
return hydroOctanoleScale;
default:
return null;
}
}
if (
/([ILFVMPWHTEQCYASNDRGK]:-?\d+\.?\d*)(,[ILFVMPWHTEQCYASNDRGK]:-?\d+\.?\d*)*/.test(
this._scale
)
) {
try {
scale = String2Object(this._scale, {
keyFormatter: x => x.toUpperCase(),
valueFormatter: x => parseFloat(x)
});
} catch (error) {
console.error(`Couldn't parse the given scale ${this._scale}`, error);
}
}
return scale;
}