[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'
PLUGINS_ENABLED=True
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
*.code-workspace
.vscode/
/pnpm-workspace.yaml

View File

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