Doge420/docs/js/main.js

137 lines
4.6 KiB
JavaScript

// import Popper
// ../../../node_modules/popper.js/dist/umd/popper.js
// import required js-files Bootstrap 5
// ../../../node_modules/bootstrap/js/dist/alert.js
// ../../../node_modules/bootstrap/js/dist/button.js
// ../../../node_modules/bootstrap/js/dist/carousel.js
// ../../../node_modules/bootstrap/js/dist/collapse.js
// ../../../node_modules/bootstrap/js/dist/dropdown.js
// ../../../node_modules/bootstrap/js/dist/modal.js
// ../../../node_modules/bootstrap/js/dist/popover.js
// ../../../node_modules/bootstrap/js/dist/scrollspy.js
// ../../../node_modules/bootstrap/js/dist/tab.js
// ../../../node_modules/bootstrap/js/dist/toast.js
// ../../../node_modules/bootstrap/js/dist/tooltip.js
function bruh_moment(){
alert('this is a bruh moment')
}
const downloadToFile = (content, filename, contentType) => {
const a = document.createElement('a');
const file = new Blob([content], {type: contentType});
a.href= URL.createObjectURL(file);
a.download = filename;
a.click();
URL.revokeObjectURL(a.href);
};
function get_smiles_from_element_text(el_id){
var inputVal = document.getElementById(el_id).value;
let url = `https://pubchem.ncbi.nlm.nih.gov/rest/pug/compound/name/${inputVal}/property/CanonicalSMILES/JSON`;
console.log(url)
fetch(url)
.then(res => res.json())
.then((out) => {
console.log('Aye, got that dub from PubChem');
//console.log(out["PropertyTable"]["Properties"][0]["CanonicalSMILES"])
document.getElementById("inputSMILES").value = out["PropertyTable"]["Properties"][0]["CanonicalSMILES"]
})
.catch(err => {
bruh_moment()
throw err });
}
function draw_me_like_one_of_your_french_girls(mol){
mol.condense_abbreviations();
//var canvas = document.getElementById("draw-canvas-2");
//mol.draw_to_canvas(canvas, -1, -1);
var dest = document.getElementById("draw-output");
var svg = mol.get_svg();
dest.outerHTML = "<div id='drawing-1'>" + svg + "</div>";
document.getElementById('drawing-1').children[0].setAttribute("height", "100%");
document.getElementById('drawing-1').children[0].setAttribute("width", "100%");
}
function calculate_and_disperse(mol){
const shy_values_do_not_show = ["NumUnspecifiedAtomStereoCenters","NumAliphaticHeterocycles",
"NumSaturatedHeterocycles","NumAromaticHeterocycles","NumAmideBonds","NumAromaticRings","NumAliphaticRings"
,"NumSaturatedRings","NumSpiroAtoms","NumBridgeheadAtoms","NumAtomStereoCenters"]
try {
var descrs = JSON.parse(mol.get_descriptors());
} catch(err) {
alert("oo wee, failed to calculate descriptors senpai")
}
//document.getElementById('exactmw').textContent = descrs["exactmw"];
//document.getElementById('CrippenMR').textContent = descrs["CrippenMR"];
//document.getElementById('CrippenClogP').textContent = descrs["CrippenClogP"];
let tableRef = document.getElementById("analyse_table");
const keys = Object.keys(descrs);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
if(shy_values_do_not_show.indexOf(key) !== -1){
//console.log("skipping")
} else{
//console.log(key, descrs[key]);
var newRow = tableRef.insertRow(-1);
var newCell_label = newRow.insertCell(0);
var newCell_value = newRow.insertCell(-1);
var newText_label = document.createTextNode(key);
var newText_value = document.createTextNode(descrs[key]);
newCell_label.appendChild(newText_label);
newCell_value.appendChild(newText_value);
}
}
}
function convert_me_senpai(smiles) {
var OpenBabel = OpenBabelModule();
OpenBabel.onRuntimeInitialized = function() {
var conv = new OpenBabel.ObConversionWrapper();
try {
var inData = smiles;
conv.setInFormat('', 'smiles');
var mol = new OpenBabel.OBMol();
conv.readString(mol, inData);
conv.setOutFormat('', 'pdbqt');
var outData = conv.writeString(mol, false);
//console.log(outData);
document.getElementById('download-pdbqt').disabled=false;
return outData;
} finally {
conv.delete(); // free ObConversionWrapper instance
}
}
}
function analyse_me_senpai(smile_pwiz) {
var smiles = document.getElementById(smile_pwiz).value;
var mol = Module.get_mol(smiles);
draw_me_like_one_of_your_french_girls(mol);
calculate_and_disperse(mol);
smiles_text = convert_me_senpai(smiles);
}
function download_pdbqt(){
if (document.getElementById("inputName").value === ""){
var fname = "compound.pdbqt"
} else {
var fname = `${document.getElementById("inputName").value}.pdbqt`
}
try {
//var smiles_text = convert_me_senpai(document.getElementById("inputSMILES").value)
downloadToFile(smiles_text,fname,"chemical/x-pdbqt")
} catch(err) {
console.error(err)
bruh_moment()
}
}