(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ // zip.workerScriptsPath = "zipjs/"; zip.workerScripts = {
deflater: ['https://2017.igem.org/Template:Heidelberg/zipjs/ZWORKER?action=raw&ctype=text/javascript', 'https://2017.igem.org/Template:Heidelberg/zipjs/DEFLATE?action=raw&ctype=text/javascript'], inflater: ['https://2017.igem.org/Template:Heidelberg/zipjs/ZWORKER?action=raw&ctype=text/javascript', 'https://2017.igem.org/Template:Heidelberg/zipjs/INFLATE?action=raw&ctype=text/javascript']
}; function readManifest(entry, manifest) {
return new Promise(function (resolve) { entry.getData(new zip.TextWriter(), function (text) { manifest = JSON.parse(text); resolve(manifest); }, function (progress) { }); });
} function readEntry(entry, manifest, variables, name, encoder) {
return new Promise(function (resolve) { var res = variables; entry.getData(new zip.BlobWriter(), function (blob) { var buf; var fileReader = new FileReader(); fileReader.onload = function () { buf = this.result; var values = new Float32Array(buf); var shape = manifest[name].shape; res[name] = [values, shape]; resolve(res); }; fileReader.readAsArrayBuffer(blob); }, function (progress) { }); });
} var DeeProteinContext = /** @class */ (function () {
function DeeProteinContext(weights) { var _this = this; // Set up worker. this.worker = new Worker("https://2017.igem.org/Template:Heidelberg/deeprotein/DEEPROTEINWORKER?action=raw&ctype=text/javascript"); // Set up event handlers: this.onload = function () { console.log("Weights have been loaded ..."); }; this.onloadfile = function () { console.log("Weights have been loaded from file ..."); }; this.onready = function () { console.log("DeeProtein is ready ..."); }; this.oninfer = function (res) { console.log("Inference yielded: ", res); }; // Set up message handler: this.worker.onmessage = function (e) { var message = e.data; if (message.status == "infer") { _this.oninfer(message.result); } else if (message.status == "ready") { _this.onready(); } else if (message.status == "load") { _this.onload(); _this.hasWeights = true; } else if (message.status == "loadfile") { _this.onloadfile(); _this.hasWeights = true; } }; // If weights are given, load them: if (weights) { if (typeof (weights) === "string") { this.loadWeights(weights); } else if (typeof (weights) === "object") { this.loadWeightsFromFile(weights); } } } ; DeeProteinContext.prototype.ready = function () { this.worker.postMessage({ command: "ready" }); }; DeeProteinContext.prototype.loadWeights = function (path, force) { if (force === void 0) { force = false; } if (!this.hasWeights || force) { this.worker.postMessage({ command: "load", path: path }); } }; ; DeeProteinContext.prototype.loadWeightsFromFile = function (file, force) { var _this = this; if (force === void 0) { force = false; } if (!this.hasWeights || force) { this.readWeightFile(file).then(function (res) { _this.variables = res; _this.worker.postMessage({ command: "loadfile", file: _this.variables }); }); } }; ; DeeProteinContext.prototype.infer = function (sequence) { if (this.hasWeights) { this.worker.postMessage({ command: "infer", sequence: sequence }); } else { console.log("no weights!"); } }; DeeProteinContext.prototype.readWeightFile = function (file) { var that = this; return new Promise(function (resolve) { var encoder = new TextEncoder("utf-8"); var manifest = {}; var variables = {}; // use a BlobReader to read the zip from a Blob object zip.createReader(new zip.BlobReader(file), function (reader) { // get all entries from the zip reader.getEntries(function (entries) { if (entries.length) { // get first entry content as text readManifest(entries[0], manifest).then(function (res) { var variablenames = Object.keys(res); var last = Promise.resolve(variables); var namemap = []; for (var idx = 0; idx < variablenames.length; ++idx) { var name_1 = variablenames[idx]; for (var idy = 1; idy < entries.length; ++idy) { if (res[name_1].filename == entries[idy].filename) { namemap.push(idy); break; } } } var _loop_1 = function (idx) { var entry = entries[namemap[idx]]; var entryname = entry.filename; var name_2 = variablenames[idx]; last = last.then(function (varres) { console.log("Decompressing: ", entry.filename); return readEntry(entry, res, varres, name_2, encoder); }); }; for (var idx = 0; idx < variablenames.length; ++idx) { _loop_1(idx); } last.then(function (varfinal) { reader.close(function () { resolve(varfinal); }); }); }); } }); }, function (error) { // onerror callback console.log(error); }); }); }; return DeeProteinContext;
}()); // export everything: function newDeeProteinContext(weights) {
return new DeeProteinContext(weights);
} window.newDeeProteinContext = newDeeProteinContext;
},{}]},{},[1]);