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

From 2013.igem.org

function initFilterModel() {

var laccase_activities_temp_dependent = [99301.159, 99301.159, 114578.260, 160409.564, 183325.216, 206240.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");


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();

               $("div#rafts p#pH").hide();

$("div#rafts p#saltconc").hide(); $("div#rafts p#temp").hide(); }

if (rafts.river.val() == 'Waste water treatment plant example'){ rafts.flowspeed.val('1'); rafts.flow.val('60'); rafts.substrate.val('6.5'); 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 div#result > p").html('$nbsp;'); $("div#rafts div#result").hide();

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

$("div#rafts p#pH").slideDown(); $("div#rafts p#saltconc").slideDown(); $("div#rafts p#temp").slideDown();

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").slideUp(); $("div#rafts p#saltconc").slideUp(); $("div#rafts p#temp").slideUp(); } });

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('6.5'); 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){

               if (parseFloat(rafts.substrate.val()) < parseFloat(rafts.final.val())) {
                   $('#rafts #result').slideUp(200, function(){
                     $('#rafts #result #raft_degradation_plot').hide();
                     $('#rafts #result > p').html('Final concentration is higher than the initial concentration!');
                     $('#rafts #result').slideDown();
                   });
               } else {

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 div#result > p").html("You would need " + Math.ceil(rafts.result) + " remediation rafts.
These would cover an area of " + (rafts.result / 7000).toFixed(2) + " soccer " + (((rafts.result / 7000).toFixed(2) == 1) ? 'field' : 'fields') + ".
The costs would be around " + 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<500; i++){ var curr_distance = (i+1)*rafts.distance.val()/500; substrate_concentrations.push([curr_distance,rafts_degradation_fun(curr_distance)]); }

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 };

$("div#rafts div#result").slideUp(200, function(){ $("div#rafts div#result").slideDown(400, function(){

                           $.plot('#raft_degradation_plot', [raft_plot_datasets],flot_plot_options);
                       });
                       $("#raft_degradation_plot").show();

});

            }

});

}