Team:TU-Munich/TUM13 filter-calculator.js

From 2013.igem.org

Revision as of 18:39, 28 October 2013 by FlorianA (Talk | contribs)

function initFilterModel() {

var laccase_activities_temp_dependent = [99301.159, 99301.159, 114578.260, 160409.564, 183325.216, 06240.868, 244433.622,]; var laccase_inactivation_pH = [0.0000094125, 0.0000046140, 0.0000029068, 0.0000070132, 0.000021870, 0.000028422, 0.000015641,0.0000028607,0.0000066441,0.000014488];

function salt_dependent_inactivation(salt_concentration){ return(0.0053*0.000461396 + 0.0853*0.000461396 * salt_concentration); }

function convert_inactiv_rate_to_halflife(inactivation_rate){ return(Math.log(2)/(inactivation_rate*3600)); }

rafts = {};

rafts.enzyme = $("div#rafts p#enzyme select"); rafts.river = $("div#rafts p#river select"); rafts.activity = $("div#rafts p#activity input"); rafts.mass = $("div#rafts p#mass input"); rafts.flow = $("div#rafts p#flow input"); rafts.substrate = $("div#rafts p#substrate input"); rafts.final = $("div#rafts p#final input"); rafts.distance = $("div#rafts p#distance input"); rafts.flowspeed = $("div#rafts p#flowspeed input"); rafts.halflife = $("div#rafts p#halflife input"); rafts.pH = $("div#rafts p#pH input"); rafts.saltconc = $("div#rafts p#saltconc input"); rafts.temp = $("div#rafts p#temp input");

function initInputs() { if (rafts.enzyme.val() == 'Laccase') {

   $("div#rafts p#pH").show();
   $("div#rafts p#saltconc").show();
   $("div#rafts p#temp").show();
   if (rafts.temp.val() === ){
       rafts.activity.val('160409.564');
   } else {
       if (rafts.temp.val() < 7.5) {
           rafts.activity.val(laccase_activities_temp_dependent[0]);
       } else if ((rafts.temp.val() >= 7.5) && (rafts.temp.val() < 12.5) {
           rafts.activity.val(laccase_activities_temp_dependent[1]);
       } else if ((rafts.temp.val() >= 12.5) && (rafts.temp.val() < 17.5)) {
           rafts.activity.val(laccase_activities_temp_dependent[2]);
       } else if ((rafts.temp.val() >= 17.5) && (rafts.temp.val() < 22.5)) {
           rafts.activity.val(laccase_activities_temp_dependent[3]);
       } else if ((rafts.temp.val() >= 22.5) && (rafts.temp.val() < 27.5)) {
           rafts.activity.val(laccase_activities_temp_dependent[4]);
       } else if ((rafts.temp.val() >= 27.5) && (rafts.temp.val() < 32.5)) {
           rafts.activity.val(laccase_activities_temp_dependent[5]);
       } else if (rafts.temp.val() >= 32.5) {
           rafts.activity.val(laccase_activities_temp_dependent[6]);
       }
   }
   rafts.mass.val('58883.0');
   var inactivation_rate_pH = laccase_inactivation_pH[7];
   var inactivation_rate_salt = salt_dependent_inactivation(0.00028);
   if ($.isNumeric(rafts.pH.val())) {
       if (rafts.pH.val() < 4.25) {
           inactivation_rate_pH = laccase_inactivation_pH[0];
       } else if ((rafts.pH.val() >= 4.25) && (rafts.pH.val() < 4.75)) {
           inactivation_rate_pH = laccase_inactivation_pH[1];
       } else if ((rafts.pH.val() >= 4.75) && (rafts.pH.val() < 5.25)) {
           inactivation_rate_pH = laccase_inactivation_pH[2];
       } else if ((rafts.pH.val() >= 5.25) && (rafts.pH.val() < 5.75)) {
           inactivation_rate_pH = laccase_inactivation_pH[3];
       } else if ((rafts.pH.val() >= 5.75) && (rafts.pH.val() < 6.25)) {
           inactivation_rate_pH = laccase_inactivation_pH[4];
       } else if ((rafts.pH.val() >= 6.25) && (rafts.pH.val() < 6.75)) {
           inactivation_rate_pH = laccase_inactivation_pH[5];
       } else if ((rafts.pH.val() >= 6.75) && (rafts.pH.val() < 7.25)) {
           inactivation_rate_pH = laccase_inactivation_pH[6];
       } else if ((rafts.pH.val() >= 7.25) && (rafts.pH.val() < 7.75)) {
           inactivation_rate_pH = laccase_inactivation_pH[7];
       } else if ((rafts.pH.val() >= 7.75) && (rafts.pH.val() < 8.25)) {
           inactivation_rate_pH = laccase_inactivation_pH[8];
       } else if (rafts.pH.val() >= 8.25) {
           inactivation_rate_pH = laccase_inactivation_pH[9];
       }
   }
   if ($.isNumeric(rafts.saltconc.val())) {
       inactivation_rate_salt = salt_dependent_inactivation(rafts.saltconc.val());
   }
   rafts.halflife.val(convert_inactiv_rate_to_halflife(inactivation_rate_pH + inactivation_rate_salt));

} else if (rafts.enzyme.val() == 'Custom') {

   rafts.activity.val();
   rafts.mass.val();
   rafts.halflife.val();

}

if (rafts.river.val() == 'Waste water treatment plant example') {

   rafts.flowspeed.val('1');
   rafts.flow.val('60');
   rafts.substrate.val('19');
   rafts.saltconc.val('0.0003');
   rafts.pH.val('7.4');
   rafts.temp.val('17');
   $(rafts.pH).change();
   $(rafts.temp).change();
   $(rafts.saltconc).change();

} else if (rafts.river.val() == 'Rhine (Germany)') {

   rafts.flowspeed.val('2');
   rafts.flow.val('1200');
   rafts.substrate.val('0.5');
   rafts.saltconc.val('0.0008');
   rafts.pH.val('7.9');
   rafts.temp.val('15');
   $(rafts.pH).change();
   $(rafts.temp).change();
   $(rafts.saltconc).change();

} else if (rafts.river.val() == 'Kaveri (India)') {

   rafts.flowspeed.val('0.5');
   rafts.flow.val('240');
   rafts.substrate.val('0.3');
   rafts.saltconc.val('0.002');
   rafts.pH.val('8.5');
   rafts.temp.val('27');
   $(rafts.pH).change();
   $(rafts.temp).change();
   $(rafts.saltconc).change();

} else if (rafts.river.val() == 'Custom'){

   rafts.flowspeed.val();
   rafts.flow.val();
   rafts.substrate.val();
   rafts.saltconc.val();
   rafts.pH.val();
   rafts.temp.val();
   $(rafts.pH).change();
   $(rafts.temp).change();
   $(rafts.saltconc).change();

}

$("div#rafts p#result").html('$nbsp;'); $("div#rafts p#result").hide();

rafts.enzyme.change(function(e){ if (rafts.enzyme.val() == 'Laccase') {

$("div#rafts p#pH").css('display','block'); $("div#rafts p#saltconc").css('display','block'); $("div#rafts p#temp").css('display','block');

if (rafts.temp.val() === ){ rafts.activity.val('160409.564'); } else { if (rafts.temp.val() < 7.5) {rafts.activity.val(laccase_activities_temp_dependent[0]);} else if ((rafts.temp.val() >= 7.5) && (rafts.temp.val() < 12.5)) {rafts.activity.val(laccase_activities_temp_dependent[1]);} else if ((rafts.temp.val() >= 12.5) && (rafts.temp.val() < 17.5)) {rafts.activity.val(laccase_activities_temp_dependent[2]);} else if ((rafts.temp.val() >= 17.5) && (rafts.temp.val() < 22.5)) {rafts.activity.val(laccase_activities_temp_dependent[3]);} else if ((rafts.temp.val() >= 22.5) && (rafts.temp.val() < 27.5)) {rafts.activity.val(laccase_activities_temp_dependent[4]);} else if ((rafts.temp.val() >= 27.5) && (rafts.temp.val() < 32.5)) {rafts.activity.val(laccase_activities_temp_dependent[5]);} else if (rafts.temp.val() >= 32.5) {rafts.activity.val(laccase_activities_temp_dependent[6]);} }

rafts.mass.val('58883.0');

var inactivation_rate_pH = laccase_inactivation_pH[7]; var inactivation_rate_salt = salt_dependent_inactivation(0.00028);

if ($.isNumeric(rafts.pH.val())){ if (rafts.pH.val() < 4.25){inactivation_rate_pH = laccase_inactivation_pH[0];} else if ((rafts.pH.val() >= 4.25) && (rafts.pH.val() < 4.75)){inactivation_rate_pH = laccase_inactivation_pH[1];} else if ((rafts.pH.val() >= 4.75) && (rafts.pH.val() < 5.25)){inactivation_rate_pH = laccase_inactivation_pH[2];} else if ((rafts.pH.val() >= 5.25) && (rafts.pH.val() < 5.75)){inactivation_rate_pH = laccase_inactivation_pH[3];} else if ((rafts.pH.val() >= 5.75) && (rafts.pH.val() < 6.25)){inactivation_rate_pH = laccase_inactivation_pH[4];} else if ((rafts.pH.val() >= 6.25) && (rafts.pH.val() < 6.75)){inactivation_rate_pH = laccase_inactivation_pH[5];} else if ((rafts.pH.val() >= 6.75) && (rafts.pH.val() < 7.25)){inactivation_rate_pH = laccase_inactivation_pH[6];} else if ((rafts.pH.val() >= 7.25) && (rafts.pH.val() < 7.75)){inactivation_rate_pH = laccase_inactivation_pH[7];} else if ((rafts.pH.val() >= 7.75) && (rafts.pH.val() < 8.25)){inactivation_rate_pH = laccase_inactivation_pH[8];} else if (rafts.pH.val() >= 8.25){inactivation_rate_pH = laccase_inactivation_pH[9];} }

if ($.isNumeric(rafts.saltconc.val())){ inactivation_rate_salt = salt_dependent_inactivation(rafts.saltconc.val()); }

rafts.halflife.val(convert_inactiv_rate_to_halflife(inactivation_rate_pH + inactivation_rate_salt));

} else if (rafts.enzyme.val() == 'Custom') { rafts.activity.val(); rafts.mass.val(); rafts.halflife.val(); $("div#rafts p#pH").css('display','none'); $("div#rafts p#saltconc").css('display','none'); $("div#rafts p#temp").css('display','none'); } });

rafts.river.change(function(e){ if (rafts.river.val() == 'Waste water treatment plant example'){ rafts.flowspeed.val('1'); rafts.flow.val('7'); rafts.substrate.val('19'); rafts.saltconc.val('0.0003'); rafts.pH.val('7.4'); rafts.temp.val('17'); $(rafts.pH).change(); $(rafts.temp).change(); $(rafts.saltconc).change(); } else if (rafts.river.val() == 'Rhine (Germany)'){ rafts.flowspeed.val('2'); rafts.flow.val('1200'); rafts.substrate.val('0.5'); rafts.saltconc.val('0.0008'); rafts.pH.val('7.9'); rafts.temp.val('15'); $(rafts.pH).change(); $(rafts.temp).change(); $(rafts.saltconc).change(); } else if (rafts.river.val() == 'Kaveri (India)'){ rafts.flowspeed.val('0.5'); rafts.flow.val('240'); rafts.substrate.val('0.3'); rafts.saltconc.val('0.002'); rafts.pH.val('8.5'); rafts.temp.val('27'); $(rafts.pH).change(); $(rafts.temp).change(); $(rafts.saltconc).change(); } else if (rafts.river.val() == 'Custom'){ rafts.flowspeed.val(); rafts.flow.val(); rafts.substrate.val(); rafts.saltconc.val(); rafts.pH.val(); rafts.temp.val(); $(rafts.pH).change(); $(rafts.temp).change(); $(rafts.saltconc).change(); } });

rafts.pH.change(function(e){ if (rafts.enzyme.val() == 'Laccase'){

if ($.isNumeric(rafts.pH.val())){ if (rafts.pH.val() < 4.25){inactivation_rate_pH = laccase_inactivation_pH[0];} else if ((rafts.pH.val() >= 4.25) && (rafts.pH.val() < 4.75)){inactivation_rate_pH = laccase_inactivation_pH[1];} else if ((rafts.pH.val() >= 4.75) && (rafts.pH.val() < 5.25)){inactivation_rate_pH = laccase_inactivation_pH[2];} else if ((rafts.pH.val() >= 5.25) && (rafts.pH.val() < 5.75)){inactivation_rate_pH = laccase_inactivation_pH[3];} else if ((rafts.pH.val() >= 5.75) && (rafts.pH.val() < 6.25)){inactivation_rate_pH = laccase_inactivation_pH[4];} else if ((rafts.pH.val() >= 6.25) && (rafts.pH.val() < 6.75)){inactivation_rate_pH = laccase_inactivation_pH[5];} else if ((rafts.pH.val() >= 6.75) && (rafts.pH.val() < 7.25)){inactivation_rate_pH = laccase_inactivation_pH[6];} else if ((rafts.pH.val() >= 7.25) && (rafts.pH.val() < 7.75)){inactivation_rate_pH = laccase_inactivation_pH[7];} else if ((rafts.pH.val() >= 7.75) && (rafts.pH.val() < 8.25)){inactivation_rate_pH = laccase_inactivation_pH[8];} else if (rafts.pH.val() >= 8.25){inactivation_rate_pH = laccase_inactivation_pH[9];} }

rafts.halflife.val(convert_inactiv_rate_to_halflife(inactivation_rate_pH + inactivation_rate_salt)); } });

rafts.saltconc.change(function(e){ if (rafts.enzyme.val() == 'Laccase'){ if ($.isNumeric(rafts.saltconc.val())){ inactivation_rate_salt = salt_dependent_inactivation(rafts.saltconc.val()); }

rafts.halflife.val(convert_inactiv_rate_to_halflife(inactivation_rate_pH + inactivation_rate_salt)); } });

rafts.temp.change(function(e){ if (rafts.enzyme.val() == 'Laccase'){ if (rafts.temp.val() === ){ rafts.activity.val('160409.564'); } else { if (rafts.temp.val() < 7.5){rafts.activity.val(laccase_activities_temp_dependen[0]);} else if ((rafts.temp.val() >= 7.5) && (rafts.temp.val() < 12.5)){rafts.activity.val(laccase_activities_temp_dependent[1]);} else if ((rafts.temp.val() >= 12.5) && (rafts.temp.val() < 17.5)){rafts.activity.val(laccase_activities_temp_dependent[2]);} else if ((rafts.temp.val() >= 17.5) && (rafts.temp.val() < 22.5)){rafts.activity.val(laccase_activities_temp_dependent[3]);} else if ((rafts.temp.val() >= 22.5) && (rafts.temp.val() < 27.5)){rafts.activity.val(laccase_activities_temp_dependent[4]);} else if ((rafts.temp.val() >= 27.5) && (rafts.temp.val() < 32.5)){rafts.activity.val(laccase_activities_temp_dependent[5]);} else if (rafts.temp.val() >= 32.5){rafts.activity.val(laccase_activities_temp_dependent[6]);} } } });

$("div#rafts input[type='submit']").click(function(e){ initial_enzyme_conc_per_raft = (0.025*100 / rafts.mass.val())/ (86400000*rafts.flow.val()); //in M inactivation_rate = Math.log(2)/(rafts.halflife.val()*3600); // in 1/s

time_to_measurement = rafts.distance.val()*1000/rafts.flowspeed.val(); //in s

rafts.result = Math.log(rafts.substrate.val()/rafts.final.val()) * inactivation_rate / (initial_enzyme_conc_per_raft * rafts.activity.val() * (1 - Math.exp(-inactivation_rate * time_to_measurement)));

$("div#rafts p#result").html("You will need " + Math.ceil(rafts.result) + " remediation rafts.
The costs will be " + Math.ceil(rafts.result) * 50 + " €.
An optional arduino control unit would cost 210 €.");

function rafts_degradation_fun(downstream_distance){ //downstream distance in km var local_substrate_conc = rafts.substrate.val() * Math.exp( - (rafts.activity.val() * initial_enzyme_conc_per_raft * Math.ceil(rafts.result) / inactivation_rate) * ( 1 - Math.exp(- inactivation_rate * downstream_distance * 1000/rafts.flowspeed.val())) ); return local_substrate_conc; };

var substrate_concentrations = []; substrate_concentrations.push([0,rafts.substrate.val()]); for (i=0; i<100; i++){ var curr_distance = (i+1)*rafts.distance.val()/100; substrate_concentrations.push([curr_distance.toFixed(2),rafts_degradation_fun(curr_distance).toFixed(2)]); }

flot_plot_options = { grid: { borderWidth: { top: 1, right: 1, bottom: 1, left: 1 } }, legend: {show: false}, xaxes: [{ show: true, min: 0, max: rafts.distance.val(), axisLabel: "downstream distance [km]", tickLength: -5, font: { size: 12, lineHeight: 14, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps", color: 'black' } }], yaxes: [{ show: true, min: 0, max: rafts.substrate.val(), axisLabel: "substrate concentration [nM]", font: { size: 12, lineHeight: 14, style: "italic", weight: "bold", family: "sans-serif", variant: "small-caps", color: 'black' } }] };

raft_plot_datasets = { color: '#7cac2c', data: substrate_concentrations, label: 'Substrate concentration', lines: { show: true, fill: true, fillColor: 'rgba(124,172,44,0.2)'}, yaxis: 1 };

$("#raft_degradation_plot").css('display','block');

$.plot('#raft_degradation_plot', [raft_plot_datasets],flot_plot_options); $("div#rafts p#result").fadeOut(100, function(){ $("div#rafts p#result").slideDown(); }); }); }

$(document).ready(initFilterModel);