Difference between revisions of "Team:Sydney Australia/Software"

(Added Relative Frequency Algorithm)
Line 313: Line 313:
 
         {
 
         {
 
             var codonRank = document.getElementById('codonRank');
 
             var codonRank = document.getElementById('codonRank');
            var tableText = '<tr><th>Amino Acid</th><th>Codon</th><th>Codon Usage: ' + sourceOrganismData.speciesName + ' (&#8240;)</th><th>Codon Usage: ' + destOrganismData.speciesName + ' (&#8240;)</th></tr>';
+
        var tableText = '<tr><th>Amino Acid</th><th>Codon</th><th>Codon Usage: ' + sourceOrganismData.speciesName + ' (&#8240;)</th><th>Codon Usage: ' + destOrganismData.speciesName + ' (&#8240;)</th><th>Residue: ' + sourceOrganismData.speciesName + ' (%)</th><th>Residue: ' + destOrganismData.speciesName + ' %</th></tr>';
 
             nbCodonsSrc = sourceOrganismData.nbCodons;
 
             nbCodonsSrc = sourceOrganismData.nbCodons;
 
             nbCodonsDest = destOrganismData.nbCodons;
 
             nbCodonsDest = destOrganismData.nbCodons;
 
             for (aa in sourceOrganismData.AminoAcids)
 
             for (aa in sourceOrganismData.AminoAcids)
 
             {
 
             {
               tableText = tableText + '<tr><td>' + aa + '</td><td>';
+
               var srcSumOverAcid = 0;
 +
              var destSumOverAcid = 0;             
 +
              var srcAARelFreq = {};
 +
              var destAARelFreq = {};
 
               for (cod in sourceOrganismData.AminoAcids[aa])
 
               for (cod in sourceOrganismData.AminoAcids[aa])
 
               {
 
               {
                   tableText = tableText + cod + '<br>';
+
                   srcSumOverAcid += sourceOrganismData.AminoAcids[aa][cod];
 +
                  destSumOverAcid += destOrganismData.AminoAcids[aa][cod];
 
               }
 
               }
               tableText = tableText + '</td><td>'
+
 
 +
        tableText = tableText + '<tr><td>' + aa + '</td><td>';
 +
        for (cod in sourceOrganismData.AminoAcids[aa])
 +
        {
 +
        tableText = tableText + cod + '<br>';
 +
        }
 +
        tableText = tableText + '</td><td>'
 +
        for (cod in sourceOrganismData.AminoAcids[aa])
 +
        {
 +
        tableText = tableText + (1000*sourceOrganismData.AminoAcids[aa][cod]/nbCodonsSrc).toFixed(2)+ '<br>';
 +
        }
 +
        tableText = tableText + '</td><td>'
 +
          for (cod in destOrganismData.AminoAcids[aa])
 +
        {
 +
        tableText = tableText + (1000*destOrganismData.AminoAcids[aa][cod]/nbCodonsDest).toFixed(2)+ '<br>';
 +
        }
 +
               tableText = tableText + '</td><td>'              
 
               for (cod in sourceOrganismData.AminoAcids[aa])
 
               for (cod in sourceOrganismData.AminoAcids[aa])
 
               {
 
               {
                   tableText = tableText + (1000*sourceOrganismData.AminoAcids[aa][cod]/nbCodonsSrc).toFixed(2)+ '<br>';
+
                   tableText = tableText + (100*sourceOrganismData.AminoAcids[aa][cod]/srcSumOverAcid).toFixed(2)+ '<br>';
 
               }
 
               }
 
               tableText = tableText + '</td><td>'
 
               tableText = tableText + '</td><td>'
 
               for (cod in destOrganismData.AminoAcids[aa])
 
               for (cod in destOrganismData.AminoAcids[aa])
 
               {
 
               {
                   tableText = tableText + (1000*destOrganismData.AminoAcids[aa][cod]/nbCodonsDest).toFixed(2)+ '<br>';
+
                   tableText = tableText + (100*destOrganismData.AminoAcids[aa][cod]/destSumOverAcid).toFixed(2)+ '<br>';
 
               }
 
               }
              tableText = tableText + '</td></tr>'
+
        tableText = tableText + '</td></tr>'
 
             }
 
             }
 
             codonRank.innerHTML = tableText;
 
             codonRank.innerHTML = tableText;
Line 342: Line 362:
 
             var srcRanks = {};
 
             var srcRanks = {};
 
             var dstRanks = {};
 
             var dstRanks = {};
 +
            var srcRelFreq = {};
 +
            var destRelFreq = {};
 
             amAcids = '';
 
             amAcids = '';
 
             var inputsequence = document.getElementById('inputsequence').value;
 
             var inputsequence = document.getElementById('inputsequence').value;
Line 357: Line 379:
 
             for (aa in sourceOrganismData.AminoAcids)
 
             for (aa in sourceOrganismData.AminoAcids)
 
             {
 
             {
 +
              var srcSumOverAcid = 0;
 +
              var destSumOverAcid = 0;
 +
              var srcAARelFreq = {};
 +
              var destAARelFreq = {};
 +
              for (cod in sourceOrganismData.AminoAcids[aa])
 +
              {
 +
                  srcSumOverAcid += sourceOrganismData.AminoAcids[aa][cod];
 +
                  destSumOverAcid += destOrganismData.AminoAcids[aa][cod];
 +
              }
 
               srcAmRanks = [];
 
               srcAmRanks = [];
 
               dstAmRanks = [];
 
               dstAmRanks = [];
 
               for (cod in sourceOrganismData.AminoAcids[aa])
 
               for (cod in sourceOrganismData.AminoAcids[aa])
 
               {
 
               {
 +
                  srcAARelFreq[cod] = sourceOrganismData.AminoAcids[aa][cod]/srcSumOverAcid;
 +
                  destAARelFreq[cod] = destOrganismData.AminoAcids[aa][cod]/destSumOverAcid;
 
                   srcAmRanks.push([cod, 1000*sourceOrganismData.AminoAcids[aa][cod]/sourceOrganismData.nbCodons]);
 
                   srcAmRanks.push([cod, 1000*sourceOrganismData.AminoAcids[aa][cod]/sourceOrganismData.nbCodons]);
 
                   dstAmRanks.push([cod, 1000*destOrganismData.AminoAcids[aa][cod]/destOrganismData.nbCodons]);
 
                   dstAmRanks.push([cod, 1000*destOrganismData.AminoAcids[aa][cod]/destOrganismData.nbCodons]);
Line 369: Line 402:
 
                   return a[1] - b[1]});   
 
                   return a[1] - b[1]});   
 
               srcRanks[aa] = srcAmRanks;
 
               srcRanks[aa] = srcAmRanks;
               dstRanks[aa] = dstAmRanks;        
+
               dstRanks[aa] = dstAmRanks;  
 +
              srcRelFreq[aa] = srcAARelFreq;
 +
              destRelFreq[aa] = destAARelFreq;     
 
             }
 
             }
 
             outputSequence = '';
 
             outputSequence = '';
 
             optimisedSequence = '';
 
             optimisedSequence = '';
 
             freqHarmonised = '';
 
             freqHarmonised = '';
 +
            relFreqHarmonised = '';
 
             var cutoffValue = parseInt(document.getElementById('cutoff').value);
 
             var cutoffValue = parseInt(document.getElementById('cutoff').value);
 
             for (var i = 0; i < inputsequence.length; i+=3)
 
             for (var i = 0; i < inputsequence.length; i+=3)
Line 381: Line 417:
 
               var codIdx;
 
               var codIdx;
 
               var nearestIdx;
 
               var nearestIdx;
 +
              var nearestIdxRel;
 
               for (aa in sourceOrganismData.AminoAcids)
 
               for (aa in sourceOrganismData.AminoAcids)
 
               {
 
               {
 +
                  for (cod in srcRelFreq[aa])
 +
                  {
 +
                    if (cod == activeCodon)
 +
                    {
 +
                        var nearest = 99;
 +
                        for (relCod in destRelFreq[aa])
 +
                        {
 +
                          var diff = Math.abs(srcRelFreq[aa][cod] - destRelFreq[aa][relCod]);
 +
                          if (diff < nearest)
 +
                          {
 +
                              nearestIdxRel = relCod;
 +
                              nearest = diff;
 +
                          }
 +
                        }
 +
                    }
 +
                  }
 
                   for (codIdx = 0; codIdx < srcRanks[aa].length; codIdx++)
 
                   for (codIdx = 0; codIdx < srcRanks[aa].length; codIdx++)
 
                   {
 
                   {
Line 431: Line 484:
 
                           freqHarmonised += dstRanks[aa][nearestIdx][0];
 
                           freqHarmonised += dstRanks[aa][nearestIdx][0];
  
 +
                        if (nearestIdxRel != activeCodon)
 +
                          relFreqHarmonised += codonIsDifferentPrefix + nearestIdxRel + codonIsDifferentSuffix;
 +
                        else
 +
                          relFreqHarmonised += nearestIdxRel;
  
 
                         if (dstRanks[aa][dstRanks[aa].length - 1][0] != srcRanks[aa][codIdx][0])
 
                         if (dstRanks[aa][dstRanks[aa].length - 1][0] != srcRanks[aa][codIdx][0])
Line 456: Line 513:
 
             acidshtml.innerHTML = '<b>Polypeptide:    </b><span class="c"> ' + amAcids + '</span>';
 
             acidshtml.innerHTML = '<b>Polypeptide:    </b><span class="c"> ' + amAcids + '</span>';
 
             var output = document.getElementById('Output');
 
             var output = document.getElementById('Output');
             output.innerHTML =    '<tr><td><b>Input Sequence:</b></td><td colspan=2 style="word-wrap: break-word"><span class="c">' + inputsequence + '</span></td></tr>'+ '<tr><td><b>Output Sequence (Optimisation)</td><td colspan=2  style="word-wrap: break-word"><span class="c">' + optimisedSequence + '</span></td><tr><td><b>Output Sequence (Rank Harmonisation)</td><td  colspan=2 style="word-wrap: break-word"><span class="c">' + outputSequence + '</span></td><tr><td><b>Output Sequence (Frequency Harmonisation)</td><td colspan=2  style="word-wrap: break-word"><span class="c">' + freqHarmonised + '</span></td></tr>';
+
             output.innerHTML =    '<tr><td><b>Input Sequence:</b></td><td colspan=2 style="word-wrap: break-word"><span class="c">' + inputsequence + '</span></td></tr>'+ '<tr><td><b>Output Sequence (Optimisation)</td><td colspan=2  style="word-wrap: break-word"><span class="c">' + optimisedSequence + '</span></td><tr><td><b>Output Sequence (Rank Harmonisation)</td><td  colspan=2 style="word-wrap: break-word"><span class="c">' + outputSequence + '</span></td><tr><td><b>Output Sequence (Frequency Harmonisation)</td><td colspan=2  style="word-wrap: break-word"><span class="c">' + freqHarmonised + '</span></td><td></tr><td><b>Output sequency (Relative Frequency Harmonisation)</td><td colspan=2 style="word-warp: break-word"><span class="c">' + relFreqHarmonised + '</td></tr>';
  
  

Revision as of 03:43, 20 October 2019

Navigation


Codonator 3000

Software

Codonator 3000

Enter your gene sequence:



Search source organism



Search destination organism

Set minimum codon frequency threshold per thousand