[Fix] Remove bootsrap code from AD (#257)

Closes #251

Reviewed-on: enviPath/enviPy#257
Co-authored-by: Tobias O <tobias.olenyi@envipath.com>
Co-committed-by: Tobias O <tobias.olenyi@envipath.com>
This commit is contained in:
2025-12-09 01:02:12 +13:00
committed by jebus
parent d5af898053
commit 46b0f1c124
3 changed files with 69 additions and 71 deletions

View File

@ -20,3 +20,16 @@ LOG_LEVEL='INFO'
SERVER_URL='http://localhost:8000' SERVER_URL='http://localhost:8000'
PLUGINS_ENABLED=True PLUGINS_ENABLED=True
EP_DATA_DIR='data' EP_DATA_DIR='data'
EMAIL_HOST_USER='admin@envipath.com'
EMAIL_HOST_PASSWORD='dummy-password'
DEFAULT_FROM_EMAIL="test@test.com"
SERVER_EMAIL='test@test.com'
# Testing settings VScode
DJANGO_SETTINGS_MODULE='envipath.settings'
MANAGE_PY_PATH='./manage.py'
APPLICABILITY_DOMAIN_ENABLED=True
ENVIFORMER_PRESENT=True
MODEL_BUILDING_ENABLED=True

1
.gitignore vendored
View File

@ -16,4 +16,5 @@ node_modules/
static/css/output.css static/css/output.css
*.code-workspace *.code-workspace
.vscode/
/pnpm-workspace.yaml /pnpm-workspace.yaml

View File

@ -704,7 +704,7 @@ function makeLoadingGif(attachOb) {
function handleAssessmentResponse(depict_url, data) { function handleAssessmentResponse(depict_url, data) {
var inside_app_domain = "<a class='list-group-item'>This compound is " + (data["assessment"]["inside_app_domain"] ? "inside" : "outside") + " the Applicability Domain derived from the chemical (PCA) space constructed using the training data." + "</a>"; var inside_app_domain = "<p class='mb-2'>This compound is " + (data["assessment"]["inside_app_domain"] ? "inside" : "outside") + " the Applicability Domain derived from the chemical (PCA) space constructed using the training data.</p>";
var functionalGroupsImgSrc = null; var functionalGroupsImgSrc = null;
var reactivityCentersImgSrc = null; var reactivityCentersImgSrc = null;
@ -716,29 +716,22 @@ function handleAssessmentResponse(depict_url, data) {
reactivityCentersImgSrc = "<img width='400' src=\"" + depict_url + "?smiles=" + encodeURIComponent(data['assessment']['smiles']) + "\">" reactivityCentersImgSrc = "<img width='400' src=\"" + depict_url + "?smiles=" + encodeURIComponent(data['assessment']['smiles']) + "\">"
} }
tpl = `<div class="panel panel-default panel-heading list-group-item" style="background-color:silver"> tpl = `<div class="collapse collapse-arrow bg-base-200">
<h4 class="panel-title"> <input type="checkbox" checked />
<a id="app-domain-assessment-functional-groups-link" data-toggle="collapse" data-parent="#app-domain-assessment" href="#app-domain-assessment-functional-groups">Functional Groups Covered by Model</a> <div class="collapse-title text-xl font-medium">Functional Groups Covered by Model</div>
</h4> <div class="collapse-content">
</div>
<div id="app-domain-assessment-functional-groups" class="panel-collapse collapse">
<div class="panel-body list-group-item">
${inside_app_domain} ${inside_app_domain}
<p></p> <div class="flex justify-center my-4">
<div id="image-div" align="center">
${functionalGroupsImgSrc} ${functionalGroupsImgSrc}
</div> </div>
</div> </div>
</div> </div>
<div class="panel panel-default panel-heading list-group-item" style="background-color:silver"> <div class="collapse collapse-arrow bg-base-200 mt-2">
<h4 class="panel-title"> <input type="checkbox" checked />
<a id="app-domain-assessment-reactivity-centers-link" data-toggle="collapse" data-parent="#app-domain-assessment" href="#app-domain-assessment-reactivity-centers">Reactivity Centers</a> <div class="collapse-title text-xl font-medium">Reactivity Centers</div>
</h4> <div class="collapse-content">
</div> <div class="flex justify-center my-4">
<div id="app-domain-assessment-reactivity-centers" class="panel-collapse collapse">
<div class="panel-body list-group-item">
<div id="image-div" align="center">
${reactivityCentersImgSrc} ${reactivityCentersImgSrc}
</div> </div>
</div> </div>
@ -752,45 +745,41 @@ function handleAssessmentResponse(depict_url, data) {
for (n in transObj['neighbors']) { for (n in transObj['neighbors']) {
neighObj = transObj['neighbors'][n]; neighObj = transObj['neighbors'][n];
var neighImg = "<img width='100%' src='" + transObj['rule']['url'] + "?smiles=" + encodeURIComponent(neighObj['smiles']) + "'>"; var neighImg = "<img width='100%' src='" + transObj['rule']['url'] + "?smiles=" + encodeURIComponent(neighObj['smiles']) + "'>";
var objLink = `<a class='list-group-item' href="${neighObj['url']}">${neighObj['name']}</a>`
var neighPredProb = "<a class='list-group-item'>Predicted probability: " + neighObj['probability'].toFixed(2) + "</a>";
var pwLinks = ''; var pwLinksHtml = '';
if (neighObj['related_pathways'] && Object.keys(neighObj['related_pathways']).length > 0) {
pwLinksHtml = '<ul class="menu bg-base-100 rounded-box w-full">';
for (pw in neighObj['related_pathways']) { for (pw in neighObj['related_pathways']) {
var pwObj = neighObj['related_pathways'][pw]; var pwObj = neighObj['related_pathways'][pw];
pwLinks += "<a class='list-group-item' href=" + pwObj['url'] + ">" + pwObj['name'] + "</a>"; pwLinksHtml += `<li><a href="${pwObj['url']}" class="link link-primary">${pwObj['name']}</a></li>`;
}
pwLinksHtml += '</ul>';
} }
var expPathways = ` var expPathways = '';
<div class="panel panel-default panel-heading list-group-item" style="background-color:silver"> if (pwLinksHtml !== '') {
<h4 class="panel-title"> expPathways = `
<a id="transformation-${t}-neighbor-${n}-exp-pathway-link" data-toggle="collapse" data-parent="#transformation-${t}-neighbor-${n}" href="#transformation-${t}-neighbor-${n}-exp-pathway">Experimental Pathways</a> <div class="collapse collapse-arrow bg-base-200 mt-2">
</h4> <input type="checkbox" />
</div> <div class="collapse-title font-medium">Experimental Pathways</div>
<div id="transformation-${t}-neighbor-${n}-exp-pathway" class="panel-collapse collapse"> <div class="collapse-content">
<div class="panel-body list-group-item"> ${pwLinksHtml}
${pwLinks}
</div> </div>
</div> </div>
` `;
if (pwLinks === '') {
expPathways = ''
} }
neighbors += ` neighbors += `
<div class="panel panel-default panel-heading list-group-item" style="background-color:silver"> <div class="collapse collapse-arrow bg-base-100 mt-2">
<h4 class="panel-title"> <input type="checkbox" />
<a id="transformation-${t}-neighbor-${n}-link" data-toggle="collapse" data-parent="#transformation-${t}" href="#transformation-${t}-neighbor-${n}">Analog Transformation on ${neighObj['name']}</a> <div class="collapse-title text-lg font-medium">Analog Transformation on ${neighObj['name']}</div>
</h4> <div class="collapse-content">
</div> <ul class="menu bg-base-100 rounded-box w-full">
<div id="transformation-${t}-neighbor-${n}" class="panel-collapse collapse"> <li><a href="${neighObj['url']}" class="link link-primary">${neighObj['name']}</a></li>
<div class="panel-body list-group-item"> <li>Predicted probability: ${neighObj['probability'].toFixed(2)}</li>
${objLink} </ul>
${neighPredProb}
${expPathways} ${expPathways}
<p></p> <div class="flex justify-center my-4">
<div id="image-div" align="center">
${neighImg} ${neighImg}
</div> </div>
</div> </div>
@ -799,43 +788,38 @@ function handleAssessmentResponse(depict_url, data) {
} }
var panelName = null; var panelName = null;
var objLink = null; var objLinkUrl = null;
var objLinkText = null;
if (transObj['is_predicted']) { if (transObj['is_predicted']) {
panelName = `Predicted Transformation by ${transObj['rule']['name']}`; panelName = `Predicted Transformation by ${transObj['rule']['name']}`;
for (e in transObj['edges']) { for (e in transObj['edges']) {
objLink = `<a class='list-group-item' href="${transObj['edges'][e]['url']}">${transObj['edges'][e]['name']}</a>` objLinkUrl = transObj['edges'][e]['url'];
objLinkText = transObj['edges'][e]['name'];
break; break;
} }
} else { } else {
panelName = `Potential Transformation by applying ${transObj['rule']['name']}`; panelName = `Potential Transformation by applying ${transObj['rule']['name']}`;
objLink = `<a class='list-group-item' href="${transObj['rule']['url']}">${transObj['rule']['name']}</a>` objLinkUrl = transObj['rule']['url'];
objLinkText = transObj['rule']['name'];
} }
var predProb = "<a class='list-group-item'>Predicted probability: " + transObj['probability'].toFixed(2) + "</a>";
var timesTriggered = "<a class='list-group-item'>This rule has triggered " + transObj['times_triggered'] + " times in the training set</a>";
var reliability = "<a class='list-group-item'>Reliability: " + transObj['reliability'].toFixed(2) + " (" + (transObj['reliability'] > data['ad_params']['reliability_threshold'] ? "&gt" : "&lt") + " Reliability Threshold of " + data['ad_params']['reliability_threshold'] + ") </a>";
var localCompatibility = "<a class='list-group-item'>Local Compatibility: " + transObj['local_compatibility'].toFixed(2) + " (" + (transObj['local_compatibility'] > data['ad_params']['local_compatibility_threshold'] ? "&gt" : "&lt") + " Local Compatibility Threshold of " + data['ad_params']['local_compatibility_threshold'] + ")</a>";
var transImg = "<img width='100%' src='" + transObj['rule']['url'] + "?smiles=" + encodeURIComponent(data['assessment']['smiles']) + "'>"; var transImg = "<img width='100%' src='" + transObj['rule']['url'] + "?smiles=" + encodeURIComponent(data['assessment']['smiles']) + "'>";
var transformation = ` var transformation = `
<div class="panel panel-default panel-heading list-group-item" style="background-color:silver"> <div class="collapse collapse-arrow bg-base-200 mt-2">
<h4 class="panel-title"> <input type="checkbox" />
<a id="transformation-${t}-link" data-toggle="collapse" data-parent="#transformation-${t}" href="#transformation-${t}">${panelName}</a> <div class="collapse-title text-xl font-medium">${panelName}</div>
</h4> <div class="collapse-content">
</div> <ul class="menu bg-base-100 rounded-box w-full">
<div id="transformation-${t}" class="panel-collapse collapse"> <li><a href="${objLinkUrl}" class="link link-primary">${objLinkText}</a></li>
<div class="panel-body list-group-item"> <li>Predicted probability: ${transObj['probability'].toFixed(2)}</li>
${objLink} <li>This rule has triggered ${transObj['times_triggered']} times in the training set</li>
${predProb} <li>Reliability: ${transObj['reliability'].toFixed(2)} (${(transObj['reliability'] > data['ad_params']['reliability_threshold'] ? "&gt;" : "&lt;")} Reliability Threshold of ${data['ad_params']['reliability_threshold']})</li>
${timesTriggered} <li>Local Compatibility: ${transObj['local_compatibility'].toFixed(2)} (${(transObj['local_compatibility'] > data['ad_params']['local_compatibility_threshold'] ? "&gt;" : "&lt;")} Local Compatibility Threshold of ${data['ad_params']['local_compatibility_threshold']})</li>
${reliability} </ul>
${localCompatibility} <div class="flex justify-center my-4">
<p></p>
<div id="image-div" align="center">
${transImg} ${transImg}
</div> </div>
<p></p>
${neighbors} ${neighbors}
</div> </div>
</div> </div>