// Поиск редких кодонов




function transl()
{
translation = new Array(
"cga","cgc","cgg","cgu","aga","agg",
"cua","cuc","cug","cuu","uua","uug",
"uca","ucc","ucg","ucu","agc","agu",
"aca","acc","acg","acu",
"cca","ccc","ccg","ccu",
"gca","gcc","gcg","gcu",
"gga","ggc","ggg","ggu",
"gua","guc","gug","guu",
"aaa","aag",
"aac","aau",
"caa","cag",
"cac","cau",
"gaa","gag",
"gac","gau",
"uac","uau",
"ugc","ugu",
"uuc","uuu",
"aua","auc","auu",
"aug",
"ugg",
"uaa","uag","uga");
treelett = new Array("Arg","Arg","Arg","Arg","Arg","Arg","Leu","Leu","Leu","Leu","Leu","Leu","Ser","Ser","Ser","Ser","Ser","Ser","Thr","Thr","Thr","Thr","Pro","Pro","Pro","Pro","Ala","Ala","Ala","Ala","Gly","Gly","Gly","Gly","Val","Val","Val","Val","Lys","Lys","Asn","Asn","Gln","Gln","His","His","Glu","Glu","Asp","Asp","Tyr","Tyr","Cys","Cys","Phe","Phe","Ile","Ile","Ile","Met","Trp","Stop_ochre","Stop_amber","Stop_opal");
onelett = new Array(
"r","r","r","r","r","r",
"l","l","l","l","l","l",
"s","s","s","s","s","s",
"t","t","t","t",
"p","p","p","p",
"a","a","a","a",
"g","g","g","g",
"v","v","v","v",
"k","k",
"n","n",
"q","q",
"h","h",
"e","e",
"d","d",
"y","y",
"c","c",
"f","f",
"i","i","i",
"m",
"w",
"*","*","*");
freq = new Array(
"6.2","10.6","11.5","4.6","11.9","11.9","7.1","19.7","39.9","13.1","7.6","12.8","12.2","17.7","4.5","15.1","19.4","12.1","15.0","19.0","6.1","13.0","16.9","19.9","7.0","17.5","15.9","28.0","7.5","18.5","16.4","22.4","16.5","10.8","7.1","14.6","28.3","11.0","24.2","32.0","19.1","16.8","12.1","34.2","15.1","10.8","28.7","39.6","25.2","21.7","15.3","12.1","12.6","10.5","20.4","17.4","7.4","20.9","15.8","22.1","13.2","1.0","0.8","1.6",

"6.6","9.5","10.4","4.7","11.6","11.9","7.9","20.2","39.9","13.2","6.5","13.3","11.6","18.0","4.3","16.0","19.6","12.5","15.8","19.1","5.8","13.6","17.1","18.3","6.2","18.4","15.9","26.4","6.6","20.2","16.8","21.6","15.3","11.5","7.4","15.5","28.9","10.6","21.7","34.1","20.6","15.5","11.5","34.3","15.2","10.3","26.9","39.9","26.5","21.2","16.3","12.1","12.0","11.0","21.9","17.0","7.1","22.9","15.4","22.9","12.3","0.7","0.6","1.2",

"8.5","18.1","8.2","8.8","5.2","6.3","8.2","13.8","38.3","8.9","4.4","16.1","7.8","19.5","16.7","7.0","20.5","11.5","11.1","21.3","14.5","9.5","13.5","18.0","16.0","6.9","12.8","33.6","14.1","14.4","17.7","26.6","4.7","13.2","6.4","13.9","27.8","10.9","16.8","39.6","26.3","21.1","15.7","36.5","16.0","10.6","21.0","42.7","24.6","27.5","18.3","10.8","13.2","5.4","21.9","13.2","9.5","22.9","16.5","23.6","9.9","0.8","0.6","0.5",

"6.3","3.8","4.9","9.0","18.9","10.9","9.9","16.1","9.8","24.1","12.7","20.9","18.2","11.2","9.3","25.1","11.3","14.0","15.7","10.3","7.7","17.6","16.1","5.3","8.6","18.7","17.5","10.4","9.0","28.4","24.2","9.2","10.2","22.3","9.9","12.8","17.4","27.3","30.8","32.7","20.9","22.3","19.4","15.2","8.7","13.7","34.3","32.3","17.3","36.7","13.8","14.7","7.1","10.5","20.7","21.8","12.6","18.6","21.5","24.5","12.5","0.9","0.5","1.1",

"3.0","2.6","1.8","6.4","21.3","9.3","13.4","5.4","10.5","12.3","26.2","27.1","18.7","14.2","8.6","23.4","9.7","14.2","17.8","12.6","8.0","20.2","18.1","6.8","5.3","13.5","16.2","12.6","6.2","21.1","10.9","9.8","6.0","23.8","11.8","11.6","10.8","22.0","42.0","30.8","24.8","35.8","27.3","12.2","7.8","13.7","45.7","19.3","20.2","37.7","14.7","18.8","4.7","8.0","18.4","26.2","17.8","17.1","30.1","21.0","10.4","1.0","0.5","0.7",

"4.4","2.2","2.0","6.8","20.2","6.6","10.9","7.5","15.1","15.7","15.6","31.2","15.4","16.2","7.1","23.9","7.7","12.8","13.7","14.3","6.0","22.3","18.4","6.7","4.2","16.0","15.0","16.5","3.8","29.0","19.1","8.0","5.8","26.0","9.8","14.8","12.2","27.1","30.4","34.7","26.1","24.6","25.3","16.2","9.1","11.9","39.0","29.7","26.2","36.0","18.2","15.2","4.2","7.7","19.8","23.6","11.7","19.6","30.8","18.1","10.3","0.9","0.5","0.3",

"4.1","18.3","6.5","18.8","4.5","2.6","4.5","10.1","45.8","12.6","15.0","12.9","10.0","9.3","8.5","11.0","15.0","10.8","10.8","21.3","13.8","11.0","8.7","5.6","19.3","8.0","21.6","23.8","27.9","17.4","10.7","25.5","11.6","24.9","12.0","14.0","23.4","20.1","35.6","13.1","21.1","23.0","14.4","28.0","8.8","12.5","37.9","18.8","18.8","32.9","12.0","18.4","6.0","5.4","15.6","22.6","8.3","22.6","29.7","25.9","13.8","2.0","0.3","1.0"
);

organism = new Array("Homo sapiens","Mus musculus","Drosophila melanogaster","Arabidopsis thaliana","Saccharomyces cerevisiae","Pichia pastoris","Escherichia coli");


// забираем значения, заданные в форме
org = document.ftransl.org.selectedIndex;
str = document.ftransl.str.value;
r = parseFloat(document.ftransl.r.value.replace(/,/g,"."));
if(isNaN(r)||r==0){alert(alt11_01); document.ftransl.r.focus(); return true;};
r = Math.abs(r);
document.ftransl.r.value = r;
name_seq = document.ftransl.s_name.value;

// приводим "str" к стандартному виду который будет называться "nseq"
nseq = ""
nseq = str.toLowerCase();
nseq = nseq.replace(/t/g,"u");
nseq = nseq.replace(/[^agcu]/g,"");
lnseq = nseq.length;
if(lnseq<3){alert(alt11_02); document.ftransl.str.focus(); return true;};

// транслируем нуклеотидную последовательность в номера, соответствующие индивидуальным кодонам
aa = new Array()
prot = "<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1&nbsp;&nbsp;";
aalett = "";
codseq = "";

i3 = 0;
aalength = Math.floor(nseq.length/3);
while(i3<aalength) { 
	i3++; i4 = 0;
	while(i4<64) {i4++; if(nseq.substring(i3*3-3,i3*3)==translation[i4-1]) {aa[i3-1] = i4-1; break};}
}

var fig = new Array(aalength);
var high = new Array(aalength);

i10 = 0;
while(i10<aalength) {i10++;
	codseq =codseq + i10 + "  --  "+ nseq.substring(i10*3-3,i10*3) + "  --  " + treelett[aa[i10-1]] + "  --  " + freq[64*org+aa[i10-1]] + "\n";
	high[i10] = freq[64*org+aa[i10-1]]*2;
	if (freq[64*org+aa[i10-1]]<r) {fig[i10] = "1red.gif"} else {fig[i10] = "1gray.gif"};
	t_letter = onelett[aa[i10-1]];
	if(freq[64*org+aa[i10-1]]<r) {
	t_letter = t_letter.toUpperCase();
	t_letter = t_letter.bold();
	t_letter = t_letter.fontcolor("red");
	}
	prot = prot + t_letter; 
	if(Math.floor(i10/10)*10==i10) {prot = prot +" "}
	if(Math.floor(i10/50)*50==i10) {
	p_str = i10+1
	pp = Math.log(p_str)/Math.log(10);
	prot = prot +"<br>"
	for(i8=0;i8<5-pp;i8++) {prot = prot +"&nbsp;" };
	prot = prot + p_str + "&nbsp;&nbsp;"}
}


document.ftransl.codseq.value = codseq;


id = window.open('','result', config='height=500,width=600,toolbar=no,menubar=yes,scrollbars=yes,resizable=yes,location=no,status=no');
id.document.write("<title>&nbsp;&nbsp;&nbsp;Search of rear codons&nbsp;&nbsp;&nbsp;</title><BODY BGCOLOR='white'>");
id.focus();
id.document.write("<h3>Brief results</h3><h4>Nucleotide sequence</h4><br><TT>");
id.document.write("&gt; ");
id.document.write(name_seq);
id.document.write("<br><font color='Gray'>");
nstrings = Math.floor(nseq.length/50);
i_out = 0;
while(i_out<nstrings+1) {i_out++
id.document.write("<br>");
n_str = i_out*50-49
qq = Math.log(n_str)/Math.log(10);
for(i7=0;i7<5-qq;i7++) {id.document.write("&nbsp;")}
id.document.write(n_str);
id.document.write("&nbsp;&nbsp;");
for(i6=0;i6<5;i6++){
n_seq_out=nseq.substring(50*i_out-50+10*i6,50*i_out-40+10*i6);
if(document.ftransl.u_t[1].checked) {n_seq_out=n_seq_out.replace(/u/g,"t");};
if(document.ftransl.ftnt[1].checked) {n_seq_out=n_seq_out.toUpperCase()};
id.document.write(n_seq_out);
id.document.write("&nbsp;");
}
}
id.document.write("</TT></font><br>&nbsp;<br><h4>Amino acids sequence</h4><br>");
id.document.write("&gt; ");
id.document.write(name_seq);
id.document.write(" ### translated in organism: ");
id.document.write(organism[org]);
id.document.write("<br><TT><font color='Gray'>");
id.document.write(prot);
id.document.write("</font></TT><br>");

id.document.write("</TT></font><br>&nbsp;<br><h4>Bar chart of codon frequences</h4>");
id.document.write("<img src=01_1101.gif width=20 height=120 border=0>");
var i=0;
while(i<aalength) {i++;
id.document.write("<img src=/izo/");
id.document.write(fig[i]);
id.document.write(" width=1 height=");
id.document.write(high[i]);
id.document.write(" border=0>");
}

id.document.write("<br><br><br><br>");


// закрываем окно 
id.document.write("</body></html>");
id.document.close();
}
