|
|
Line 5: |
Line 5: |
| <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> | | <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> |
| <script type="text/javascript" src="/Team:EPF-Lausanne/PrimerDesignHelper.js?action=raw&ctype=text/javascript"></script> | | <script type="text/javascript" src="/Team:EPF-Lausanne/PrimerDesignHelper.js?action=raw&ctype=text/javascript"></script> |
- | <h1>Primer design helper</h1> | + | |
- | <p>
| + | <div id="formAttach" style="width: 490px; float: left; padding-right: 15px; border-right: 1px solid #DDD"> |
- | Warning: This is a very basic tool and should not be seen as a replacement for your brain. This is in no way a complete
| + | |
- | tool for primer design and shouldn't be trusted! Always check the results yourself. The Tm calculation is based on
| + | |
- | Belsauer et al. 1986 (with some small modifications, inspired by <a href="http://www.basic.northwestern.edu/biotools/oligocalc.html">http://www.basic.northwestern.edu/biotools/oligocalc.html</a>) | + | |
- | and has as a goal to match the results found by the <a href="http://www.neb.com/nebecomm/tech_reference/TmCalc/Default.asp">NEB Phusion HF-PCR reference</a> (this means that normally the results are the same, but this isn't guaranteed, although the Tm should at least be in the correct range).
| + | |
- | The tail is ignored in the Tm calculation.
| + | |
- | Also take a look at <a href="http://partsregistry.org/Help:Primers/Design">iGEM's primer design page</a>.
| + | |
- | </p>
| + | |
- | <p>
| + | |
- | Known limitations are: only A, C, G and T are accepted as input, the concentration of salts (50mM of Na+),
| + | |
- | and the primer concentration (500nM) can't be set.
| + | |
- | </p>
| + | |
- | <p>
| + | |
- | Paste the sequence you want to PCR out in the following textarea:<br/>
| + | |
- | <textarea id="data" cols="50" rows="10" onkeyup="window.calc()" onchange="window.calc()"></textarea>
| + | |
- | </p>
| + | |
- | <p>
| + | |
- | Give some more info about what you want to do:<br/>
| + | |
- | <table>
| + | |
- | <tr>
| + | |
- | <td>Primer type</td>
| + | |
- | <td>
| + | |
- | <input type="radio" name="primerType" value="normal" id="primerTypeNormal" onchange="window.updateRadioElements();window.calc();" checked />
| + | |
- | <label for="primerTypeNormal">Standard PCR primer (extract the whole sequence)</label>
| + | |
- | <br />
| + | |
- | <input type="radio" name="primerType" value="restrictionSites" id="primerTypeRestrictionSites" onchange="window.updateRadioElements();window.calc();" />
| + | |
- | <label for="primerTypeRestrictionSites">Add restriction sites on both ends</label>
| + | |
- | <br />
| + | |
- | <input type="radio" name="primerType" value="knownTail" id="primerTypeKnownTail" onchange="window.updateRadioElements();window.calc();" />
| + | |
- | <label for="primerTypeKnownTail">Add "known" tails on both ends</label>
| + | |
- | <br />
| + | |
- | <input type="radio" name="primerType" value="restrictionSites" id="primerTypeCustom" onchange="window.updateRadioElements();window.calc();" />
| + | |
- | <label for="primerTypeRestrictionCustom">Add custom tails on both ends</label>
| + | |
- | </td>
| + | |
- | </tr>
| + | |
- | <tr style="display: none" id="restrictionSiteRow">
| + | |
- | <td>Restriction sites</td>
| + | |
- | <td>
| + | |
- | Random bases: <input type="text" id="primerRandBases" value="4" onkeyup="window.calc()" onchange="window.calc()" /><br />
| + | |
- | Primer 1 RS: 5' <input type="text" id="primer1RS" onkeyup="window.calc()" onchange="window.calc()" /> 3' <span id="primer1RSMatch"> </span><br />
| + | |
- | Primer 2 RS: 5' <input type="text" id="primer2RS" onkeyup="window.calc()" onchange="window.calc()" /> 3' <span id="primer2RSMatch"> </span><br />
| + | |
- | Note: You can also enter the names of the restriction sites (EcoRI, XbaI, etc.).
| + | |
- | </td>
| + | |
- | </tr>
| + | |
- | <tr style="display: none" id="customRow">
| + | |
- | <td>Tails</td>
| + | |
- | <td>
| + | |
- | Primer 1 tail: 5'<input type="text" id="primer1Tail" onkeyup="window.calc()" onchange="window.calc()" />3'<br />
| + | |
- | Primer 2 tail: 5'<input type="text" id="primer2Tail" onkeyup="window.calc()" onchange="window.calc()" />3'
| + | |
- | </td>
| + | |
- | </tr>
| + | |
- | <tr style="display: none" id="knownTailRow">
| + | |
- | <td>Tail</td>
| + | |
- | <td>
| + | |
- | <select id="knownTailSelect" onkeyup="window.calc()" onchange="window.calc()">
| + | |
- | </select>
| + | |
- | <script type="text/javascript">
| + | |
- | for(var i = 0; i < window.tails.length; i++){
| + | |
- | $("#knownTailSelect").append(
| + | |
- | $("<option>")
| + | |
- | .val(window.tails[i].value)
| + | |
- | .text(window.tails[i].name)
| + | |
- | );
| + | |
- | }
| + | |
- | </script>
| + | |
- | </td>
| + | |
- | </tr>
| + | |
- | <tr>
| + | |
- | <td>Goal Tm</td>
| + | |
- | <td>
| + | |
- | <input type="text" id="goalTm" onkeyup="window.calc()" onchange="window.calc()" value="55" /> °C
| + | |
- | </td>
| + | |
- | </tr>
| + | |
- | <tr>
| + | |
- | <td> </td>
| + | |
- | <td>
| + | |
- | <input type="button" onclick="Primer.reset(); window.calc()" value="Calculate" />
| + | |
- | </td>
| + | |
- | </tr>
| + | |
- | </table>
| + | |
- | <script type="text/javascript">window.onload = function(){ window.updateRadioElements(); }</script>
| + | |
- | </p>
| + | |
- | <p>
| + | |
- | <h2>Result:</h2>
| + | |
- | <div id="messages">
| + | |
- |
| + | |
| </div> | | </div> |
- | <br /> | + | <div style="width: 450px; float: right"> |
- | Note: the annealing temperatures are indicative and should always be checked (and corrected).
| + | <fieldset> |
- | <br />
| + | <legend>Results</legend> |
- | <b>Primer 1 (<span id="primer1Temp">NaN</span> °C, <span id="primer1bp">NaN</span>bp):</b> 5' - <span id="primer1">No data</span> → 3'<br />
| + | <div id="outputAttach"> </div> |
- | <b>Primer 2 (<span id="primer2Temp">NaN</span> °C, <span id="primer2bp">NaN</span>bp):</b> 5' - <span id="primer2">No data</span> → 3'<br /> | + | </fieldset> |
- | <b>Annealing temp:</b> <span id="annealingTemp">NaN</span> °C
| + | </div> |
- |
| + | <div style="clear: both"> </div> |
- | <hr />
| + | <h2>Comments</h2> |
- | <input type="checkbox" id="toggleLines" onchange="window.calc()" onclick="window.calc()" checked />
| + | <p> |
- | <label for="toggleLines">Line numbers</label>
| + | Warning: This is a very basic tool and should not be seen as a replacement for your brain. This is in no way a complete |
- | <pre id="finalResult">
| + | tool for primer design and shouldn't be trusted! Always check the results yourself. The Tm calculation is based on |
- |
| + | Belsauer et al. 1986 (with some small modifications, inspired by <a href="http://www.basic.northwestern.edu/biotools/oligocalc.html">http://www.basic.northwestern.edu/biotools/oligocalc.html</a>) |
- | </pre>
| + | and has as a goal to stay close (in principle it should be the same) to the results found by the <a href="http://www.neb.com/nebecomm/tech_reference/TmCalc/Default.asp">NEB Phusion HF-PCR reference</a>. |
- | </p>
| + | The tail is ignored in the Tm calculation. |
- | <script type="text/javascript">
| + | Also take a look at <a href="http://partsregistry.org/Help:Primers/Design">iGEM's primer design page</a>. |
- | window.calc();
| + | </p> |
- | </script>
| + | <p> |
| + | Known limitations are: only A, C, G and T are accepted as input, the concentration of salts(50mM of Na+), |
| + | and the primer concentration (500nM) can't be set. |
| + | </p> |
| </html> | | </html> |
| | | |
| {{:Team:EPF-Lausanne/Template/Footer}} | | {{:Team:EPF-Lausanne/Template/Footer}} |