Вы находитесь на странице: 1из 5

<html>

<body>
<script type="text/javascript">
var skabmap = {"A":"T","T":"A","G":"C","C":"G"}
var rnamap = {"A":"U","T":"A","G":"C","C":"G"}
protmap = {
"UUU":"phe",
"UUC":"phe",
"UUA":"leu",
"UUG":"leu",
"CUU":"leu",
"CUC":"leu",
"CUA":"leu",
"CUG":"leu",
"AUU":"ile",
"AUC":"ile",
"AUA":"ile",
"AUG":"met",
"GUU":"val",
"GUC":"val",
"GUA":"val",
"GUG":"val",
"UCU":"ser",
"UCC":"ser",
"UCA":"ser",
"UCG":"ser",
"CCU":"pro",
"CCC":"pro",
"CCA":"pro",
"CCG":"pro",
"ACU":"thr",
"ACC":"thr",
"ACA":"thr",
"ACG":"thr",
"GCU":"ala",
"GCC":"ala",
"GCA":"ala",
"GCG":"ala",
"UAU":"tyr",
"UAC":"tyr",
"UAA":"stop",
"UAG":"stop",
"CAU":"his",
"CAC":"his",
"CAA":"gln",
"CAG":"gln",
"AAU":"asn",
"AAC":"asn",
"AAA":"lys",
"AAG":"lys",
"GAU":"asp",
"GAC":"asp",
"GAA":"glu",
"GAG":"glu",
"UGU":"cys",
"UGC":"cys",
"UGA":"stop",
"UGG":"trp",
"CGU":"arg",
"CGC":"arg",
"CGA":"arg",
"CGG":"arg",
"AGU":"ser",
"AGC":"ser",
"AGA":"arg",
"AGG":"arg",
"GGU":"gly",
"GGC":"gly",
"GGA":"gly",
"GGG":"gly",
}
function mirrorDNA(codingstr){
retstr = ""
for ( var i = 0;i <codingstr.length;i++){
retstr += skabmap[codingstr.charAt(i)]
}
return retstr
}
function RNA(skabstr){
retstr = ""
for ( var i = 0;i <skabstr.length;i++){
retstr += rnamap[skabstr.charAt(i)]
}
return retstr
}
function prot(rnastr){
trips = [];
workingstr = "";
for (var index = 0;index<rnastr.length;index++){
workingstr +=rnastr[index]
if (index%3 == 2){
trips.push(workingstr)
workingstr = "";
}
}
retstr = ""
for (var i = 0; i<trips.length;i++){
retstr += protmap[trips[i]]+"-"
console.log(trips[i]+"")
}
retstr=retstr.slice(0,-1)
return retstr
}
function repeat(s, n){
var a = [];
while(a.length < n){
a.push(s);
}
return a.join('');
}
function errorFinder(correctDNA,mutatedDNA,errors){
if (correctDNA==mutatedDNA){
console.log("DONE",errors)
return errors
}
if (errors.length>5){
//console.log("OIOIOI",correctDNA,mutatedDNA,errors.length,error
s)
return false
}
for (var index =0 ;index<correctDNA.length;index++){
if (correctDNA.charAt(index)!=mutatedDNA.charAt(index)){
console.log(repeat(" ",errors.length)+correctDNA.charAt
(index),mutatedDNA.charAt(index))
var subtest = false
var addtest = false
//substitution
if (index<mutatedDNA.length){
var newmutatedDNA = mutatedDNA.substr(0, index)+
correctDNA.charAt(index)+
mutatedDNA.substr(index+1, mutat
edDNA.length)
console.log(repeat(" ",errors.length)+"sub",mut
atedDNA,correctDNA.charAt(index),newmutatedDNA)
subtest = errorFinder(correctDNA,newmutatedDNA,e
rrors.concat(["Substitution: Base nr "+(index+1)+" har &aelig;ndret sig fra \""+
correctDNA.charAt(index)+ "\", til \""+mutatedDNA.charAt(index)+"\""]))
}
//addition
if (index<mutatedDNA.length){
var newmutatedDNA = mutatedDNA.substr(0, index)+
mutatedDNA.substr(index+1, mutatedDNA.length)
console.log(repeat(" ",errors.length)+"add",mut
atedDNA,correctDNA.charAt(index),newmutatedDNA)
addtest = errorFinder(correctDNA,newmutatedDNA,e
rrors.concat(
["Insertion af \""+mutatedDNA.charAt(ind
ex)+ "\" ved nr "+(index+1)]))
}
var bestcorrections =subtest
if (subtest === false){
bestcorrections = addtest
}
if (addtest.length<subtest.length && addtest != false){
bestcorrections = addtest
}
//deletion
if (true){
newmutatedDNA = mutatedDNA.substr(0, index)+corr
ectDNA.charAt(index)+
mutatedDNA.substr(index, mutatedDNA.leng
th)
console.log(repeat(" ",errors.length)+"del",mut
atedDNA,correctDNA.charAt(index),newmutatedDNA,index,mutatedDNA.charAt(index),co
rrectDNA.charAt(index) )
var deltest = errorFinder(correctDNA,newmutatedD
NA,errors.concat(
["Deletion af \""+correctDNA.charAt(inde
x)+"\" som tidligere havde positionen "+(index+1)]))
//console.log("done",correctDNA,newmutatedDNA,de
ltest)
if (deltest !=false && (bestcorrections === fals
e || deltest.length<bestcorrections.length)){
bestcorrections = deltest
//console.log("here")
}
}
//console.log("TESTRESULTS")
//console.log(subtest)
//console.log(addtest)
//console.log(deltest)
return bestcorrections
}
}
return false
}
//alert(errorFinder("ATGTTTTATCTGACCCCGGAATACACAACTATCGTCTGA","ATGTTTTATCTGTCCCC
GGAATACACAACTATCGTCTGA",[]))
//document.write(prot(RNA(mirrorDNA("ATGTTTTATCTGACCCCGGAATACACAACTATCGTCTGA")))
)
function go_button(){
var dnatext = document.getElementById('test_text').value;
var skabstr = mirrorDNA(dnatext);
var elem = document.getElementById('skabelon-string')
elem.innerHTML=skabstr
var rnastr = RNA(skabstr)
elem = document.getElementById('rna-string')
elem.innerHTML = rnastr
var protstr = prot(rnastr)
elem = document.getElementById('protein-string')
elem.innerHTML = protstr
}
function MutationFind(){
var correctDNA = document.getElementById('korrekt DNA').value
var mutatedDNA = document.getElementById('muteret DNA').value
var elem = document.getElementById('error-res')
console.log(correctDNA,mutatedDNA)
testres = errorFinder(correctDNA,mutatedDNA,[])
if (testres === false){
elem.innerHTML = "Fejl :("
}
for (var index = 0 ;index<testres.length;index++){
elem.innerHTML +=testres[index]+"<br>"
}
}
</script>
<h1> DNA til protein </h1>
<style type="text/css">
.tg {border-collapse:collapse;border-spacing:0;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-styl
e:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:1
0px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
</style>
<table class="tg">
<tr>
<th class="tg-031e" rowspan="2">
DNA
</th>
<th class="tg-031e">Kodende streng</th>
<th class="tg-031e">
<input type="text" id="test_text" value="" size="100" onPaste=""onkeydow
n="if (event.keyCode == 13) { go_button();return false;}" />
</th>
</tr>
<tr>
<td class="tg-031e">Skabelonstreng</td>
<td class="tg-031e">
<span id="skabelon-string"></span>
</td>
</tr>
<tr>
<td class="tg-031e" colspan="2">RNA</td>
<td class="tg-031e">
<span id="rna-string"></span>
</td>
</tr>
<tr>
<td class="tg-031e" colspan="2">Protein</td>
<td class="tg-031e">
<span id="protein-string"></span>
</td>
</tr>
</table>
<input type=button onClick="go_button();" value="Overs&aelig;t" title="Simplify"
>
<br><br><h1> Find mutationer</h1>(maks 5 mutationer - d&aring;rlig algoritme)
<br><br>Korrekt DNA:<input type="text" id="korrekt DNA" value="" size="100" onPa
ste=""onkeydown="" />
<br>Muteret DNA:<input type="text" id="muteret DNA" value="" size="100" onPaste=
""onkeydown="" /><input type=button onClick="MutationFind();" value="Find mutati
oner" title="Simplify">
<br><br><span id="error-res"></span>
</body>
</html>

Вам также может понравиться