|
|
(20 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
− | {{Fudan-TSI}} | + | {{Fudan-TSI}}<!-- jquery loaded by HQ 1.12.4 --> |
| <html></p></div></div></div><meta name="viewport" content="width=device-width, initial-scale=1"><meta charset="UTF-8"> | | <html></p></div></div></div><meta name="viewport" content="width=device-width, initial-scale=1"><meta charset="UTF-8"> |
| <link rel="stylesheet" href="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/materialize.css&action=raw&ctype=text/css"> | | <link rel="stylesheet" href="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/materialize.css&action=raw&ctype=text/css"> |
| <link rel="stylesheet" href="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/Fudan-font-awesome.css&action=raw&ctype=text/css" /> | | <link rel="stylesheet" href="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/Fudan-font-awesome.css&action=raw&ctype=text/css" /> |
| <link rel="stylesheet" type="text/css" href="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/Fudan-css.css&action=raw&ctype=text/css" /> | | <link rel="stylesheet" type="text/css" href="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/Fudan-css.css&action=raw&ctype=text/css" /> |
− | <style>
| + | <style> |
| /*****************************************************************************/ | | /*****************************************************************************/ |
| /* DEFAULT WIKI SETTINGS */ | | /* DEFAULT WIKI SETTINGS */ |
Line 12: |
Line 12: |
| #content { margin-left: 0; padding:0px; width:100%; } | | #content { margin-left: 0; padding:0px; width:100%; } |
| .judges-will-not-evaluate { border: 4px solid #e4dede; padding: 2% !important; width: 92%!important; } | | .judges-will-not-evaluate { border: 4px solid #e4dede; padding: 2% !important; width: 92%!important; } |
− | *{margin:0;padding:0;list-style:none}blockquote,body,button,dd,dl,dt,fieldset,form,h1,h3,h4,h5,h6,hr,input,legend,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0}address,cite,dfn,em,var{font-style:normal}code,kbd,pre,samp{font-family:courier new,courier,monospace}ol,ul{list-style:none}a{text-decoration:none}a:hover{text-decoration:underline}legend{color:#000}fieldset,img{border:0}button,input,select,textarea{font-size:100%}table{border-collapse:collapse;border-spacing:0}
| + | /* css clean * */ |
| .Off {display:none !important} | | .Off {display:none !important} |
| + | #FudanTSIBody li { list-style: none; } |
| </style> | | </style> |
− | <title>2019 Team:Fudan-TSI Software</title> | + | <title>Software | 2019 iGEM Team:Fudan-TSI</title> |
| </head> | | </head> |
| <body> | | <body> |
Line 21: |
Line 22: |
| <header> | | <header> |
| <div id="emptyBar" style="position:relative;width: 100%;"></div><nav id="topNav" class="black z-depth-0_5"><div class="nav-wrapper"><div id="teamLogo" class="brand-logo"> <a href="/Team:Fudan-TSI" target="_self"><img alt="2019 team logo" src="https://static.igem.org/mediawiki/2019/d/d3/T--Fudan-TSI--HomepageLogo.gif"></a></div><ul id="nav-mobile" class="right"> | | <div id="emptyBar" style="position:relative;width: 100%;"></div><nav id="topNav" class="black z-depth-0_5"><div class="nav-wrapper"><div id="teamLogo" class="brand-logo"> <a href="/Team:Fudan-TSI" target="_self"><img alt="2019 team logo" src="https://static.igem.org/mediawiki/2019/d/d3/T--Fudan-TSI--HomepageLogo.gif"></a></div><ul id="nav-mobile" class="right"> |
| + | <li class="hide-on-med-and-down"><a class="dropdown-trigger" data-target="dropdown1">Project</a></li><li class="hide-on-med-and-down"><a class="dropdown-trigger" data-target="dropdown2">Results</a></li><li class="hide-on-med-and-down"><a class="dropdown-trigger" data-target="dropdown3">Model</a></li><li class="hide-on-med-and-down"><a class="dropdown-trigger" data-target="dropdown4">Parts</a></li><li class="hide-on-med-and-down"><a class="dropdown-trigger" data-target="dropdown5">Human practices</a></li><li class="hide-on-med-and-down"><a class="dropdown-trigger" data-target="dropdown6">Team</a></li> |
| + | <li class="hide-on-med-and-down"><a href="/Team:Fudan-TSI/Judging">Judging</a></li> |
| <li> <a id="navList" data-target="slide-out" class="waves-effect waves-light sidenav-trigger right"> <i class="fa fa-navicon" style="font-size: 24px"></i> </a></li></ul></div> </nav> | | <li> <a id="navList" data-target="slide-out" class="waves-effect waves-light sidenav-trigger right"> <i class="fa fa-navicon" style="font-size: 24px"></i> </a></li></ul></div> </nav> |
| <!-- Dropdown and List elements in navigation bar --> | | <!-- Dropdown and List elements in navigation bar --> |
| + | <ul id="dropdown1" class="dropdown-content"> |
| + | <li><a href="/Team:Fudan-TSI/Description">Background</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Design">Design</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Experiments">Experiments</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Applied_Design">Applied design</a></li> |
| + | </ul> |
| + | <ul id="dropdown2" class="dropdown-content"> |
| + | <li><a href="/Team:Fudan-TSI/Demonstrate#ReverseTranscription">Reverse transcription</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Demonstrate#Recombination">Recombination</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Demonstrate">Demonstration</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Measurement">Measurement</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Notebook">Notebook</a></li> |
| + | </ul> |
| + | <ul id="dropdown3" class="dropdown-content"> |
| + | <li><a href="/Team:Fudan-TSI/Model">Modeling</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Software">Software</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Hardware">Hardware</a></li> |
| + | </ul> |
| + | <ul id="dropdown4" class="dropdown-content"> |
| + | <li><a href="/Team:Fudan-TSI/Basic_Part">Basic parts</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Composite_Part">Composite parts</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Improve">Part improvement</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Part_Collection">Part collection</a></li> |
| + | </ul> |
| + | <ul id="dropdown5" class="dropdown-content"> |
| + | <li><a href="/Team:Fudan-TSI/Public_Engagement">Public engagement</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Human_Practices#IntegratedHumanPractice">Integrated HP</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Collaborations">Collaborations</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Safety">Safety</a></li> |
| + | </ul> |
| + | <ul id="dropdown6" class="dropdown-content"> |
| + | <li><a href="/Team:Fudan-TSI/Team">Members</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Attributions">Attributions</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Team#Acknowledge">Acknowledge</a></li> |
| + | <li><a href="/Team:Fudan-TSI/Heritage">Heritage</a></li> |
| + | </ul> |
| + | |
| | | |
| <ul id="slide-out" class="sidenav"> | | <ul id="slide-out" class="sidenav"> |
Line 38: |
Line 78: |
| <li class="onThisPageNav"><a href="#section5">Demo</a></li> | | <li class="onThisPageNav"><a href="#section5">Demo</a></li> |
| | | |
− | <li><span class="pageSidebar">Team: Fudan-TSI</span></li><li><div class="collapsible-header"><span class="pageSidebar">Project</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Description">Background</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Design">Design</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Experiments">Experiments</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Applied_Design">Applied design</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Judging">Judging</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Results</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Demonstrate#ReverseTranscription">Reverse transcription</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Demonstrate#Recombination">Recombination</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Demonstrate">Demonstration</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Measurement">Measurement</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Notebook">Notebook</a></li></ul></div></li><li><div class="collapsible-header active"><span class="pageSidebar">Model</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Model">Modeling</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Software">Software</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Hardware">Hardware</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Parts</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Basic_Part">Basic parts</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Composite_Part">Composite parts</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Improve">Part improvement</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Part_Collection">Part collection</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Human practices</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Public_Engagement">Public engagement</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Human_Practices#IntegratedHumanPractice">Integrated HP</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Collaborations">Collaborations</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Safety">Safety</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Team</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Team">Members</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Attributions">Attributions</a></li><li><a class="pageSidebar" href="https://2018.igem.org/Team:Fudan/Heritage" target=_blank>Heritage</a></li></ul></div></li> | + | <li><span class="pageSidebar">Team: Fudan-TSI</span></li><li><div class="collapsible-header"><span class="pageSidebar">Project</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Description">Background</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Design">Design</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Experiments">Experiments</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Applied_Design">Applied design</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Judging">Judging</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Results</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Demonstrate#ReverseTranscription">Reverse transcription</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Demonstrate#Recombination">Recombination</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Demonstrate">Demonstration</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Measurement">Measurement</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Notebook">Notebook</a></li></ul></div></li><li><div class="collapsible-header active"><span class="pageSidebar">Model</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Model">Modeling</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Software">Software</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Hardware">Hardware</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Parts</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Basic_Part">Basic parts</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Composite_Part">Composite parts</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Improve">Part improvement</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Part_Collection">Part collection</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Human practices</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Public_Engagement">Public engagement</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Human_Practices#IntegratedHumanPractice">Integrated HP</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Collaborations">Collaborations</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Safety">Safety</a></li></ul></div></li><li><div class="collapsible-header"><span class="pageSidebar">Team</span></div><div class="collapsible-body"><ul><li><a class="pageSidebar" href="/Team:Fudan-TSI/Team">Members</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Attributions">Attributions</a></li><li><a class="pageSidebar" href="/Team:Fudan-TSI/Heritage">Heritage</a></li></ul></div></li> |
| </ul><!-- .expandable --> | | </ul><!-- .expandable --> |
| </li> | | </li> |
Line 54: |
Line 94: |
| </div> | | </div> |
| <div class="hide-on-small-only"> | | <div class="hide-on-small-only"> |
− | <div style="text-align:center;padding-top:80px"><center><img style="height:120px;width:auto" src="https://static.igem.org/mediawiki/2019/6/6f/T--Fudan-TSI--coverSoftware.gif" /></center></div>
| + | <style> |
| + | #demo {width:100%;height:100%;position:relative;z-index:-100;} |
| + | #demo svg {width:100%;height:100%;position:fixed;} |
| + | #demo svg g {mix-blend-mode:lighten;} |
| + | #demo svg polygon {stroke:none;fill:white;} |
| + | </style> |
| + | <div id="pageCover"> |
| + | <svg id="demo" viewBox="0 0 1600 600" preserveAspectRatio="xMidYMid slice"> |
| + | <defs> |
| + | <linearGradient id="grad1" x1="0" y1="0" x2="1" y2="0" color-interpolation="sRGB"> |
| + | <stop id="stop1a" offset="0%" stop-color="#12a3b4"></stop> |
| + | <stop id="stop1b" offset="100%" stop-color="#ff509e"></stop> |
| + | </linearGradient> |
| + | <linearGradient id="grad2" x1="0" y1="0" x2="1" y2="0" color-interpolation="sRGB"> |
| + | <stop id="stop2a" offset="0%" stop-color="#e3bc13"></stop> |
| + | <stop id="stop2b" offset="100%" stop-color="#00a78f"></stop> |
| + | </linearGradient> |
| + | </defs> |
| + | <rect id="rect1" x="0" y="0" width="1600" height="600" stroke="none" fill="url(#grad1)"></rect> |
| + | <rect id="rect2" x="0" y="0" width="1600" height="600" stroke="none" fill="url(#grad2)"></rect> |
| + | </svg> |
| + | </div><!-- #pageCover --> |
| + | <script src="https://2019.igem.org/wiki/index.php?title=Template:Fudan-TSI/bkg&action=raw&ctype=text/javascript"></script> |
| + | <script> |
| + | ////////////////////////////// |
| + | // Demo Functions |
| + | ////////////////////////////// |
| + | function bkgFunction(showStats) { |
| + | // stats |
| + | if (showStats) { |
| + | var stats = new Stats(); |
| + | stats.domElement.style.position = 'absolute'; |
| + | stats.domElement.style.left = '0'; |
| + | stats.domElement.style.top = '0'; |
| + | document.body.appendChild(stats.domElement); |
| + | requestAnimationFrame(function updateStats(){ |
| + | stats.update(); |
| + | requestAnimationFrame(updateStats); |
| + | }); |
| + | } |
| + | // init |
| + | var svg = document.getElementById('demo'); |
| + | tesselation.setup(svg); |
| + | gradients.setup(); |
| + | var lastTransitionAt, transitionDelay = 10000, transitionDuration = 3000; |
| + | function playNextTransition() { |
| + | tesselation.next(transitionDuration); |
| + | gradients.next(transitionDuration); |
| + | }; |
| + | function tick(time) { |
| + | if (!lastTransitionAt || time - lastTransitionAt > transitionDelay) { |
| + | lastTransitionAt = time; |
| + | playNextTransition(); |
| + | } |
| + | window.requestAnimationFrame(tick); |
| + | } |
| + | window.requestAnimationFrame(tick); |
| + | } |
| + | ////////////////////////////// |
| + | // Delaunay Triangulation |
| + | ////////////////////////////// |
| + | var calcDelaunayTriangulation = (function() { |
| + | var EPSILON = 1.0 / 1048576.0; |
| + | function getSuperT(vertices) { |
| + | var xMin = Number.POSITIVE_INFINITY, yMin = Number.POSITIVE_INFINITY, |
| + | xMax = Number.NEGATIVE_INFINITY, yMax = Number.NEGATIVE_INFINITY, |
| + | i, xDiff, yDiff, maxDiff, xCenter, yCenter; |
| + | for(i = vertices.length; i--; ) { |
| + | if(vertices[i][0] < xMin) xMin = vertices[i][0]; |
| + | if(vertices[i][0] > xMax) xMax = vertices[i][0]; |
| + | if(vertices[i][1] < yMin) yMin = vertices[i][1]; |
| + | if(vertices[i][1] > yMax) yMax = vertices[i][1]; |
| + | } |
| + | xDiff = xMax - xMin; |
| + | yDiff = yMax - yMin; |
| + | maxDiff = Math.max(xDiff, yDiff); |
| + | xCenter = xMin + xDiff * 0.5; |
| + | yCenter = yMin + yDiff * 0.5; |
| + | return [ |
| + | [xCenter - 20 * maxDiff, yCenter - maxDiff], |
| + | [xCenter, yCenter + 20 * maxDiff], |
| + | [xCenter + 20 * maxDiff, yCenter - maxDiff] |
| + | ]; |
| + | } |
| + | function circumcircle(vertices, i, j, k) { |
| + | var xI = vertices[i][0], yI = vertices[i][1], |
| + | xJ = vertices[j][0], yJ = vertices[j][1], |
| + | xK = vertices[k][0], yK = vertices[k][1], |
| + | yDiffIJ = Math.abs(yI - yJ), yDiffJK = Math.abs(yJ - yK), |
| + | xCenter, yCenter, m1, m2, xMidIJ, xMidJK, yMidIJ, yMidJK, xDiff, yDiff; |
| + | // bail condition |
| + | if(yDiffIJ < EPSILON){ |
| + | if (yDiffJK < EPSILON){ |
| + | throw new Error("Can't get circumcircle since all 3 points are y-aligned"); |
| + | } |
| + | } |
| + | |
| + | |
| + | // calc circumcircle center x/y, radius |
| + | m1 = -((xJ - xI) / (yJ - yI)); |
| + | m2 = -((xK - xJ) / (yK - yJ)); |
| + | xMidIJ = (xI + xJ) / 2.0; |
| + | xMidJK = (xJ + xK) / 2.0; |
| + | yMidIJ = (yI + yJ) / 2.0; |
| + | yMidJK = (yJ + yK) / 2.0; |
| + | xCenter = (yDiffIJ < EPSILON) ? xMidIJ : |
| + | (yDiffJK < EPSILON) ? xMidJK : |
| + | (m1 * xMidIJ - m2 * xMidJK + yMidJK - yMidIJ) / (m1 - m2); |
| + | yCenter = (yDiffIJ > yDiffJK) ? |
| + | m1 * (xCenter - xMidIJ) + yMidIJ : |
| + | m2 * (xCenter - xMidJK) + yMidJK; |
| + | xDiff = xJ - xCenter; |
| + | yDiff = yJ - yCenter; |
| + | // return |
| + | return {i: i, j: j, k: k, x: xCenter, y: yCenter, r: xDiff * xDiff + yDiff * yDiff}; |
| + | } |
| + | function dedupeEdges(edges) { |
| + | var i, j, a, b, m, n; |
| + | for(j = edges.length; j; ) { |
| + | b = edges[--j]; a = edges[--j]; |
| + | for(i = j; i; ) { |
| + | n = edges[--i]; m = edges[--i]; |
| + | if(a === m){ |
| + | if (b===n){ |
| + | edges.splice(j, 2); edges.splice(i, 2); |
| + | break; |
| + | } |
| + | } |
| + | if(a === n){ |
| + | if (b===m){ |
| + | edges.splice(j, 2); edges.splice(i, 2); |
| + | break; |
| + | } |
| + | } |
| + | } |
| + | } |
| + | } |
| + | return function(vertices) { |
| + | var n = vertices.length, |
| + | i, j, indices, st, candidates, locked, edges, dx, dy, a, b, c; |
| + | // bail if too few / too many verts |
| + | if(n < 3 || n > 2000) |
| + | return []; |
| + | // copy verts and sort indices by x-position |
| + | vertices = vertices.slice(0); |
| + | indices = new Array(n); |
| + | for(i = n; i--; ) |
| + | indices[i] = i; |
| + | indices.sort(function(i, j) { |
| + | return vertices[j][0] - vertices[i][0]; |
| + | }); |
| + | // supertriangle |
| + | st = getSuperT(vertices); |
| + | vertices.push(st[0], st[1], st[2]); |
| + | // init candidates/locked tris list |
| + | candidates = [circumcircle(vertices, n + 0, n + 1, n + 2)]; |
| + | locked = []; |
| + | edges = []; |
| + | // scan left to right |
| + | for(i = indices.length; i--; edges.length = 0) { |
| + | c = indices[i]; |
| + | // check candidates tris against point |
| + | for(j = candidates.length; j--; ) { |
| + | // lock tri if point to right of circumcirc |
| + | dx = vertices[c][0] - candidates[j].x; |
| + | if (dx > 0.0){ |
| + | if(dx * dx > candidates[j].r){ |
| + | locked.push(candidates[j]); |
| + | candidates.splice(j, 1); |
| + | continue; |
| + | } |
| + | } |
| + | |
| + | |
| + | // point outside circumcirc = leave candidates |
| + | dy = vertices[c][1] - candidates[j].y; |
| + | if(dx * dx + dy * dy - candidates[j].r > EPSILON) |
| + | continue; |
| + | // point inside circumcirc = break apart, save edges |
| + | edges.push( |
| + | candidates[j].i, candidates[j].j, |
| + | candidates[j].j, candidates[j].k, |
| + | candidates[j].k, candidates[j].i |
| + | ); |
| + | candidates.splice(j, 1); |
| + | } |
| + | // new candidates from broken edges |
| + | dedupeEdges(edges); |
| + | for(j = edges.length; j; ) { |
| + | b = edges[--j]; |
| + | a = edges[--j]; |
| + | candidates.push(circumcircle(vertices, a, b, c)); |
| + | } |
| + | } |
| + | // close candidates tris, remove tris touching supertri verts |
| + | for(i = candidates.length; i--; ) |
| + | locked.push(candidates[i]); |
| + | candidates.length = 0; |
| + | for(i = locked.length; i--; ) |
| + | if(locked[i].i < n){ |
| + | if(locked[i].j < n){ |
| + | if(locked[i].k < n){ |
| + | candidates.push(locked[i].i, locked[i].j, locked[i].k); |
| + | } |
| + | } |
| + | } |
| + | |
| + | |
| + | // done |
| + | return candidates; |
| + | }; |
| + | })(); |
| + | var tesselation = (function() { |
| + | var svg, svgW, svgH, prevGroup; |
| + | function createRandomTesselation() { |
| + | var wW = window.innerWidth; |
| + | var wH = window.innerHeight; |
| + | var gridSpacing = 250, scatterAmount = 0.75; |
| + | var gridSize, i, x, y; |
| + | if (wW / wH > svgW / svgH) { // window wider than svg = use width for gridSize |
| + | gridSize = gridSpacing * svgW / wW; |
| + | } else { // window taller than svg = use height for gridSize |
| + | gridSize = gridSpacing * svgH / wH; |
| + | } |
| + | var vertices = []; |
| + | var xOffset = (svgW % gridSize) / 2, yOffset = (svgH % gridSize) / 2; |
| + | for (x = Math.floor(svgW/gridSize) + 1; x >= -1; x--) { |
| + | for (y = Math.floor(svgH/gridSize) + 1; y >= -1; y--) { |
| + | vertices.push( |
| + | [ |
| + | xOffset + gridSize * (x + scatterAmount * (Math.random() - 0.5)), |
| + | yOffset + gridSize * (y + scatterAmount * (Math.random() - 0.5)) |
| + | ] |
| + | ); |
| + | } |
| + | } |
| + | var triangles = calcDelaunayTriangulation(vertices); |
| + | var group = document.createElementNS('http://www.w3.org/2000/svg','g'); |
| + | var polygon; |
| + | for(i = triangles.length; i; ) { |
| + | polygon = document.createElementNS('http://www.w3.org/2000/svg','polygon'); |
| + | polygon.setAttribute('points', |
| + | vertices[triangles[--i]][0] + ',' + vertices[triangles[i]][1] + ' ' + |
| + | vertices[triangles[--i]][0] + ',' + vertices[triangles[i]][1] + ' ' + |
| + | vertices[triangles[--i]][0] + ',' + vertices[triangles[i]][1] |
| + | ); |
| + | group.appendChild(polygon); |
| + | } |
| + | return group; |
| + | } |
| + | return { |
| + | setup: function(svgElement) { |
| + | svg = svgElement; |
| + | var vb = svg.getAttribute('viewBox').split(/\D/g); |
| + | svgW = vb[2]; |
| + | svgH = vb[3]; |
| + | }, |
| + | next: function(t) { |
| + | var toRemove, i, n; |
| + | t /= 1000; |
| + | if(prevGroup){ |
| + | if(prevGroup.children){ |
| + | if(prevGroup.children.length){ |
| + | toRemove = prevGroup; |
| + | n = toRemove.children.length; |
| + | for (i = n; i--; ) { |
| + | TweenMax.to(toRemove.children[i], t*0.4, {opacity: 0, delay: t*(0.3*i/n)}); |
| + | } |
| + | TweenMax.delayedCall(t * (0.7 + 0.05), function(group) { svg.removeChild(group); }, [toRemove], this); |
| + | } |
| + | } |
| + | } |
| + | |
| + | var g = createRandomTesselation(); |
| + | n = g.children.length; |
| + | for (i = n; i--; ) { |
| + | TweenMax.fromTo(g.children[i], t*0.4, {opacity: 0}, {opacity: 0.3 + 0.25 * Math.random(), delay: t*(0.3*i/n + 0.3), ease: Back.easeOut}); |
| + | } |
| + | svg.appendChild(g); |
| + | prevGroup = g; |
| + | } |
| + | } |
| + | })(); |
| + | ////////////////////////////// |
| + | // Gradients |
| + | ////////////////////////////// |
| + | var gradients = (function() { |
| + | var grad1, grad2, showingGrad1; |
| + | // using colors from IBM Design Colors this time |
| + | var colors = [ // 14 colors - use 3-5 span |
| + | '#3c6df0', // ultramarine50 |
| + | '#12a3b4', // aqua40 |
| + | '#00a78f', // teal40 |
| + | '#00aa5e', // green40 |
| + | '#81b532', // lime30 |
| + | '#e3bc13', // yellow20 |
| + | '#ffb000', // gold20 |
| + | '#fe8500', // orange30 |
| + | '#fe6100', // peach40 |
| + | '#e62325', // red50 |
| + | '#dc267f', // magenta50 |
| + | '#c22dd5', // purple50 |
| + | '#9753e1', // violet50 |
| + | '#5a3ec8' // indigo60 |
| + | ]; |
| + | function assignRandomColors(gradObj) { |
| + | var rA = Math.floor(colors.length * Math.random()); |
| + | var rB = Math.floor(Math.random() * 3) + 3; // [3 - 5] |
| + | rB = (rA + (rB * (Math.random() < 0.5 ? -1 : 1)) + colors.length) % colors.length; |
| + | gradObj.stopA.setAttribute('stop-color', colors[rA]); |
| + | gradObj.stopB.setAttribute('stop-color', colors[rB]); |
| + | } |
| + | return { |
| + | setup: function() { |
| + | showingGrad1 = false; |
| + | grad1 = { |
| + | stopA: document.getElementById('stop1a'), |
| + | stopB: document.getElementById('stop1b'), |
| + | rect: document.getElementById('rect1') |
| + | }; |
| + | grad2 = { |
| + | stopA: document.getElementById('stop2a'), |
| + | stopB: document.getElementById('stop2b'), |
| + | rect: document.getElementById('rect2') |
| + | }; |
| + | grad1.rect.style.opacity = 0; |
| + | grad2.rect.style.opacity = 0; |
| + | }, |
| + | next: function(t) { |
| + | t /= 1000; |
| + | var show, hide; |
| + | if (showingGrad1) { |
| + | hide = grad1; |
| + | show = grad2; |
| + | } else { |
| + | hide = grad2; |
| + | show = grad1; |
| + | } |
| + | showingGrad1 = !showingGrad1; |
| + | TweenMax.to(hide.rect, 0.55*t, {opacity: 0, delay: 0.2*t, ease: Sine.easeOut}); |
| + | assignRandomColors(show); |
| + | TweenMax.to(show.rect, 0.65*t, {opacity: 1, ease: Sine.easeIn}); |
| + | } |
| + | }; |
| + | })(); |
| + | ////////////////////////////// |
| + | // Start |
| + | ////////////////////////////// |
| + | bkgFunction(); |
| + | </script> |
| + | <div style="position:absolute;top:100px;left:9%"><center><img style="height:120px;width:auto" alt="cover gif 1st added" src="https://static.igem.org/mediawiki/2019/6/6f/T--Fudan-TSI--coverSoftware.gif" /></center></div> |
| </div> | | </div> |
| </div> | | </div> |
Line 69: |
Line 459: |
| <li class="onThisPageNav"><a href="#section4">References</a></li> | | <li class="onThisPageNav"><a href="#section4">References</a></li> |
| <li class="onThisPageNav"><a href="#section5">Demo</a></li> | | <li class="onThisPageNav"><a href="#section5">Demo</a></li> |
− | <li><a href="/Team:Fudan-TSI/Software">Software</a></li>
| |
| </ul> | | </ul> |
| <!-- main content of the page --> | | <!-- main content of the page --> |
− | <main> | + | <main><article> |
| | | |
| <div id="section1" class="section container scrolSpy"> | | <div id="section1" class="section container scrolSpy"> |
Line 83: |
Line 472: |
| <div id="section2" class="section container scrolSpy"> | | <div id="section2" class="section container scrolSpy"> |
| <h2>Theoretical basis</h2> | | <h2>Theoretical basis</h2> |
− | <p class="flow-text">Previous studies have reported that the interactions between tRNA primer and mRNA template as well as the reverse transcriptase are crucial in directing subsequent cDNA synthesis <a href="#Ref1">(James E. Dahlberg et al.)</a>. Specifically, according to the model for reverse transcription proposed by <a href="#Ref2">Kulpa et al.</a>, reverse transcription includes 5 steps (<a href="#Fig1">Figure 1</a>), in which the annealing of tRNA primer to the primer binding site (PBS) region on mRNA template is crucial for the synthesis of minus strand strong stop DNA (–ssDNA) and the following cDNA synthesis process.</p> | + | <p class="flow-text">Previous studies have reported that the interactions between tRNA primer and mRNA template as well as the reverse transcriptase are crucial in directing subsequent cDNA synthesis <a href="#Ref1">(James E. Dahlberg et al.)</a>. Specifically, according to the model for reverse transcription proposed by <a href="#Ref2">Kulpa et al.</a>, reverse transcription includes 5 steps <a href="#Fig1">(Figure 1)</a>, in which the annealing of tRNA primer to the primer binding site (PBS) region on mRNA template is crucial for the synthesis of minus strand strong stop DNA (–ssDNA) and the following cDNA synthesis process.</p> |
| | | |
| <div class="figureHolder" id="Fig1"> | | <div class="figureHolder" id="Fig1"> |
Line 91: |
Line 480: |
| | | |
| <p class="flow-text">Many researchers have studied the reverse transcription process in viruses, from which we find two critical properties in the annealing process of tRNA primer and PBS that should be taken into consideration when building the tRNA primer designer.</p> | | <p class="flow-text">Many researchers have studied the reverse transcription process in viruses, from which we find two critical properties in the annealing process of tRNA primer and PBS that should be taken into consideration when building the tRNA primer designer.</p> |
− | <p class="flow-text">The first property is that the 3'-terminal of the tRNA primer should be complementary to the PBS on mRNA template (<a href="#Ref2">Kosloff et al.</a>). The second one is that different viruses prefer specific type of tRNA primer for reverse transcription <a>(Kulpa et al.,</a><a> Kosloff et al.)</a>. What should also be noted is that for different viruses, the lengths of PBS as well as the types of tRNA primer are different. The PBS lengths and the preferred tRNA types of 3 most well-studied retroviruses are listed in Table 1.</p> | + | <p class="flow-text">The first property is that the 3'-terminal of the tRNA primer should be complementary to the PBS on mRNA template <a href="#Ref2">(Kosloff et al.)</a>. The second one is that different viruses prefer specific type of tRNA primer for reverse transcription <a>(Kulpa et al.,</a><a> Kosloff et al.)</a>. What should also be noted is that for different viruses, the lengths of PBS as well as the types of tRNA primer are different. The PBS lengths and the preferred tRNA types of 3 most well-studied retroviruses are listed in Table 1.</p> |
| | | |
| <div class="tableHolder"> | | <div class="tableHolder"> |
Line 126: |
Line 515: |
| <div id="section3" class="section container scrolSpy"> | | <div id="section3" class="section container scrolSpy"> |
| <h2>User guidelines</h2> | | <h2>User guidelines</h2> |
− | <p class="flow-text">Our tRNA primer designer is <a href="http://9.cail.cn/tRNA_primer.html" target=_blank>a web tool</a> for potential users of our mutagenesis system to design their own tRNA primers according to their experimental setups. Here we provide a step-by-step guide to using this software.</p> | + | <p class="flow-text">Our tRNA primer designer is <a href="http://9.cail.cn/tRNA_primer" target=_blank>a web tool</a> for potential users of our mutagenesis system to design their own tRNA primers according to their experimental setups. Here we provide a step-by-step guide to using this software.</p> |
| <p class="flow-text">Step 1. Select the type of reverse transcriptase (RT) that you want to use based on your experimental design, as shown in the figure below. Note that this software only allows you to choose from MMLV RT / HIV-1 RT / RSV RT.</p> | | <p class="flow-text">Step 1. Select the type of reverse transcriptase (RT) that you want to use based on your experimental design, as shown in the figure below. Note that this software only allows you to choose from MMLV RT / HIV-1 RT / RSV RT.</p> |
| | | |
Line 161: |
Line 550: |
| <div id="section5" class="section container scrolSpy"> | | <div id="section5" class="section container scrolSpy"> |
| <h2>tRNA primer</h2> | | <h2>tRNA primer</h2> |
− | <p class="flow-text">A demonstration of our software is embeded below. And, we have a beautified version running on <a href="http://9.cail.cn/tRNA_primer.html" target=_blank>Amazon EC2</a>.</p> | + | <p class="flow-text">A demonstration of our software is embeded below. And, we have a beautified version running on <a href="http://9.cail.cn/tRNA_primer" target=_blank>Amazon EC2</a>.</p> |
| </div> | | </div> |
| | | |
Line 167: |
Line 556: |
| <p id="p_rev" style="color:black"> | | <p id="p_rev" style="color:black"> |
| <em>Please input the type of reverse transcriptase (RT) that you want to use:</em><br/> | | <em>Please input the type of reverse transcriptase (RT) that you want to use:</em><br/> |
− | <input style="display:inline-block;width:25px" type="radio" name="rev" value="MMLV" id="rev_MMLV" checked /><label for="rev_MMLV">MMLV</label><br/> | + | <label for="rev_MMLV"><input type="radio" name="rev" value="MMLV" id="rev_MMLV" checked /><span>MMLV</span></label><br/> |
− | <input style="display:inline-block;width:25px" type="radio" name="rev" value="HIV1" id="rev_HIV1" /><label for="rev_HIV1">HIV1</label><br/> | + | <label for="rev_HIV1"><input type="radio" name="rev" value="HIV1" id="rev_HIV1" /><span>HIV1</span></label><br/> |
− | <input style="display:inline-block;width:25px" type="radio" name="rev" value="RSV" id="rev_RSV" /><label for="rev_RSV">RSV</label> | + | <label for="rev_RSV"><input type="radio" name="rev" value="RSV" id="rev_RSV" /><span>RSV</span></label> |
| </p> | | </p> |
| <p id="p_target" style="color:black"> | | <p id="p_target" style="color:black"> |
Line 176: |
Line 565: |
| </p> | | </p> |
| <p> | | <p> |
− | <input type="submit" value="submit" id="submit" /> | + | <input style="padding:4px 12px" type="submit" value="submit" id="submit" /> |
− | <input type="submit" value="clear" id="clear" /> | + | <input style="padding:4px 12px" type="submit" value="clear" id="clear" /> |
− | <input type="submit" value="demo" id="demo" style="float:right" /> | + | <input style="padding:4px 12px" type="submit" value="demo" id="demoBtn" style="float:right" /> |
| </p> | | </p> |
| <p id="progress" style="background:yellow;font-size:0.75em;line-height:11pt;text-indent:-10px;padding-left:15px;color:black"></p> | | <p id="progress" style="background:yellow;font-size:0.75em;line-height:11pt;text-indent:-10px;padding-left:15px;color:black"></p> |
Line 186: |
Line 575: |
| <p id="p_primer" style="color:green" class="Off"> | | <p id="p_primer" style="color:green" class="Off"> |
| <em>Your tRNA primer (complement to <u>Your tRNA</u>):</em><br/> | | <em>Your tRNA primer (complement to <u>Your tRNA</u>):</em><br/> |
− | 5'-<span id="primer_seq"></span>-3' | + | 3'-<span id="primer_seq"></span>-5' |
| </p> | | </p> |
| <script> | | <script> |
Line 261: |
Line 650: |
| } else { | | } else { |
| return 0; | | return 0; |
− | } | + | } |
| } | | } |
| | | |
Line 373: |
Line 762: |
| MisMatch_total += mismatch3; | | MisMatch_total += mismatch3; |
| if (MisMatch_total <= Max_Mismatch) { | | if (MisMatch_total <= Max_Mismatch) { |
− | $('#progress').append('<br/>'+(AcptStemStart+1)+'..'+(AcptStemEnd+1+1)+' '); | + | $('#progress').append('<br/>'+(AcptStemStart+1)+'..'+(AcptStemEnd+1+1)+'    '); |
| $('#progress').append('mismatch='+MisMatch_total); | | $('#progress').append('mismatch='+MisMatch_total); |
| GroupNum = [AcptStemStart, AcptStemLen, 2, 4, DLoopLen-2*4+1, 4, 1, AtCLoopStemLen, | | GroupNum = [AcptStemStart, AcptStemLen, 2, 4, DLoopLen-2*4+1, 4, 1, AtCLoopStemLen, |
Line 416: |
Line 805: |
| for (let i = AcptStemStart; i < L; i++) { | | for (let i = AcptStemStart; i < L; i++) { |
| for (let j = 0; j < 15; j++) { | | for (let j = 0; j < 15; j++) { |
− | if (i >= GroupNum[j] { | + | if (i >= GroupNum[j]) { |
| if (i < GroupNum[j+1]) { | | if (i < GroupNum[j+1]) { |
| new_s[OutputName[j]] += seq.substr(i, 1); | | new_s[OutputName[j]] += seq.substr(i, 1); |
Line 447: |
Line 836: |
| Base2 = seq2.substr(L-1-i, 1); | | Base2 = seq2.substr(L-1-i, 1); |
| linkerSeq += linkSymbol[ isComplement(Base1, Base2, 'draw', mode) ]; | | linkerSeq += linkSymbol[ isComplement(Base1, Base2, 'draw', mode) ]; |
− | } | + | } |
| return linkerSeq; | | return linkerSeq; |
| } | | } |
Line 474: |
Line 863: |
| linker['AnticodonArmLink'] = linkerDtm(ForDraw.AnticodonArm, ForDraw.AnticodonArmComp) | | linker['AnticodonArmLink'] = linkerDtm(ForDraw.AnticodonArm, ForDraw.AnticodonArmComp) |
| linker['TArmLink'] = linkerDtm(ForDraw.TArm, ForDraw.TArmComp, 'vertical') | | linker['TArmLink'] = linkerDtm(ForDraw.TArm, ForDraw.TArmComp, 'vertical') |
− | pre = ' ' + ForDraw.Redundance + '-5\n'; | + | pre = ' ' + ForDraw.Redundance + '-3\n'; |
− | pre += ' 3-' + ForDraw.AcceptArm[0] + | + | pre += ' 5-' + ForDraw.AcceptArm[0] + |
| ' ' + linker.AcceptorArmLink[0] + ' ' + | | ' ' + linker.AcceptorArmLink[0] + ' ' + |
| ForDraw.AcceptArmComp[ForDraw.AcceptArm.length-1]+'\n'; | | ForDraw.AcceptArmComp[ForDraw.AcceptArm.length-1]+'\n'; |
Line 644: |
Line 1,033: |
| }); | | }); |
| | | |
− | $('#demo').on('click', function (event) { | + | $('#demoBtn').on('click', function (event) { |
| clean_results(); | | clean_results(); |
| var q = 'CGATGATCGATCAGCTAGCTAGTCGATCGATCGATC'; | | var q = 'CGATGATCGATCAGCTAGCTAGTCGATCGATCGATC'; |
Line 680: |
Line 1,069: |
| do not edit below, if must BE CAREFUL | | do not edit below, if must BE CAREFUL |
| //////////////////////////////////////////////////////--> | | //////////////////////////////////////////////////////--> |
− | </main></div><!-- end of side navigator and main of the page --> | + | </article></main></div><!-- end of side navigator and main of the page --> |
| | | |
− | <!--Abstract on content page-->
| |
− | <div id="abstractContent" class="z-depth-2">
| |
− | <a href="#!"><img alt="project summary" src="https://static.igem.org/mediawiki/2018/9/96/T--Fudan--X.svg"></a>
| |
− | <div class="container">
| |
− | <h5 style="margin:0;padding:10px 0;">Software by Team:Fudan-TSI</h5>
| |
− | <p class="flow-text" style="margin:0">Our software simplifies the primer design process for target-specific mutagenesis via reverse transcriptase (RT). We called it tRNA primer designer. Studies have shown that tRNA functions as the primer for in vivo reverse transcription initiation: the 5' end of the tRNA interacts with RT, and the 3' end matches with the mRNA encoding the target. The software consists of 4 parts: reverse transcriptase selection, target sequence input, designed-tRNA visualization, and primer output. Although we only test MMLV-RT experimentally, the software can adjust its designing method based on the properties of well-studied RT from 3 species, MMLV, HIV-1 and RSV. Users could design their tRNA primers even for eukaryotic experiments. In addition, we calculate and output the tRNA acceptor stem annealing temperature, as this might be used as an indicator for likelihood to success.
| |
− | </p>
| |
− | </div>
| |
− | </div>
| |
| <!-- Floating Btns, Footer with sponsors --> | | <!-- Floating Btns, Footer with sponsors --> |
− | <div class="floatingBtn"> <a href="#!" id="abstractBtn" class="btn"> <i class="fa fa-sticky-note" style="font-size:30px;line-height:50px"></i> </a> <a href="#FudanTSIdivWrapper" class="btn"> <i class="fa fa-angle-up" style="font-size:48px;line-height:45px"></i> </a></div> <footer id="FudanTSIfooter" class="page-footer blue-grey darken-1"><div class="container"><div class="row"><div id="sponsor" class="col m3 s12 row"> <a href="https://2019.igem.org/Team:Fudan-TSI"><img alt="2019 Team:Fudan-TSI logo white" class="col s3 m6 l3" style="position:relative; padding: 0.45em 0.3rem; margin:-0.15rem 0; left: -0.45rem;" src="https://static.igem.org/mediawiki/2019/0/0f/T--Fudan-TSI--LogoGrey.gif"> </a><a href="http://www.fudan.edu.cn/en/" target="_blank"><img class="col s3 m6 l3" alt="Fudan University" src="https://static.igem.org/mediawiki/2018/f/f7/T--Fudan--schoolLogo.png"> </a><a href="http://life.fudan.edu.cn/" target="_blank"><img class="col s3 m6 l3" style="margin-bottom: 4%;/* 该图比其他小一点,排版需要 */" alt="School of Life Sciences, Fudan University" src="https://static.igem.org/mediawiki/2018/1/1d/T--Fudan--schoolOfLifeSciencesIcon.png"> </a><a href="http://www.yfc.cn/en/" target="_blank"><img class="col s3 m6 l3" style="padding: 0.15rem 0.9rem;" alt="Yunfeng Capital" src="https://static.igem.org/mediawiki/2018/e/e2/T--Fudan--yunfengLogo.png"> </a><h3 class="col s12" style="text-align:left;font-size:12.5px">R-Evolution: an <i>in vivo</i> sequence-specific toolbox for continuous mutagenesis</h3></div><div id="footerNavList" class="col m9 s12 row"><div class="col s12 l6 row"><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Description">Project</a></span><ul><li><a href="/Team:Fudan-TSI/Description">Background</a></li><li><a href="/Team:Fudan-TSI/Design">Design</a></li><li><a href="/Team:Fudan-TSI/Experiments">Experiments</a></li><li><a href="/Team:Fudan-TSI/Applied_Design">Applied design</a></li><li><a href="/Team:Fudan-TSI/Judging">Judging</a></li></ul></div><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Demonstrate">Results</a></span><ul><li><a href="/Team:Fudan-TSI/Demonstrate#ReverseTranscription">Reverse transcription</a></li><li><a href="/Team:Fudan-TSI/Demonstrate#Recombination">Recombination</a></li><li><a href="/Team:Fudan-TSI/Demonstrate">Demonstration</a></li><li><a href="/Team:Fudan-TSI/Measurement">Measurement</a></li><li><a href="/Team:Fudan-TSI/Notebook">Notebook</a></li></ul></div><div class="col s12 m4 active"> <span><a href="/Team:Fudan-TSI/Model">Model</a></span><ul><li><a href="/Team:Fudan-TSI/Model">Modeling</a></li><li><a href="/Team:Fudan-TSI/Software">Software</a></li><li><a href="/Team:Fudan-TSI/Hardware">Hardware</a></li></ul></div></div><div class="col s12 l6 row"><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Parts">Parts</a></span><ul><li><a href="/Team:Fudan-TSI/Basic_Part">Basic parts</a></li><li><a href="/Team:Fudan-TSI/Composite_Part">Composite parts</a></li><li><a href="/Team:Fudan-TSI/Improve">Part improvement</a></li><li><a href="/Team:Fudan-TSI/Part_Collection">Part collection</a></li></ul></div><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Human_Practices">Outreach</a></span><ul><li><a href="/Team:Fudan-TSI/Public_Engagement">Public engagement</a></li><li><a href="/Team:Fudan-TSI/Human_Practices#IntegratedHumanPractice">Integrated HP</a></li><li><a href="/Team:Fudan-TSI/Collaborations">Collaborations</a></li><li><a href="/Team:Fudan-TSI/Safety">Safety</a></li></ul></div><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Team">Team</a></span><ul><li><a href="/Team:Fudan-TSI/Team">Members</a></li><li><a href="/Team:Fudan-TSI/Attributions">Attributions</a></li><li><a href="https://2018.igem.org/Team:Fudan/Heritage" target=_blank>Heritage</a></li></ul></div><div class="col s12 m4"> </div></div></div></div></div><div class="footer-copyright"><div class="container"><div class="contactUS row"><div class="col s12 m6 l4"><i class="fa fa-location-arrow"></i> Life Sci Bldg, 2005 Songhu Rd, Shanghai</div><div class="col s12 m6 l2"><i class="fa fa-fax"></i> +86-21-31246727</div><div class="col s12 m6 l2"><i class="fa fa-envelope-o"></i> igem@fudan.edu.cn</div><div class="col s12 m6 l4"><i class="fa fa-twitter"></i> <i class="fa fa-wechat"></i> Fudan_iGEM</div></div></div></div> </footer> | + | <div class="floatingBtn"> <a href="#FudanTSIdivWrapper" class="btn"> <i class="fa fa-angle-up" style="font-size:48px;line-height:45px"></i> </a></div> <footer id="FudanTSIfooter" class="page-footer blue-grey darken-1"><div class="container"><div class="row"><div id="sponsor" class="col m3 s12 row"> <a href="https://2019.igem.org/Team:Fudan-TSI"><img alt="2019 Team:Fudan-TSI logo white" class="col s3 m6 l3" style="position:relative; padding: 0.45em 0.3rem; margin:-0.15rem 0; left: -0.45rem;" src="https://static.igem.org/mediawiki/2019/0/0f/T--Fudan-TSI--LogoGrey.gif"> </a><a href="http://www.fudan.edu.cn/en/" target="_blank"><img class="col s3 m6 l3" alt="Fudan University" src="https://static.igem.org/mediawiki/2018/f/f7/T--Fudan--schoolLogo.png"> </a><a href="http://life.fudan.edu.cn/" target="_blank"><img class="col s3 m6 l3" style="margin-bottom: 4%;/* fig should be smaller, 2018 ht */" alt="School of Life Sciences, Fudan University" src="https://static.igem.org/mediawiki/2018/1/1d/T--Fudan--schoolOfLifeSciencesIcon.png"> </a><a href="http://www.yfc.cn/en/" target="_blank"><img class="col s3 m6 l3" style="padding: 0.15rem 0.9rem;" alt="Yunfeng Capital" src="https://static.igem.org/mediawiki/2018/e/e2/T--Fudan--yunfengLogo.png"> </a><h3 class="col s12" style="text-align:left;font-size:12.5px">R-Evolution: an <i>in vivo</i> sequence-specific toolbox for continuous mutagenesis</h3></div><div id="footerNavList" class="col m9 s12 row"><div class="col s12 l6 row"><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Description">Project</a></span><ul><li><a href="/Team:Fudan-TSI/Description">Background</a></li><li><a href="/Team:Fudan-TSI/Design">Design</a></li><li><a href="/Team:Fudan-TSI/Experiments">Experiments</a></li><li><a href="/Team:Fudan-TSI/Applied_Design">Applied design</a></li><li><a href="/Team:Fudan-TSI/Judging">Judging</a></li></ul></div><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Demonstrate">Results</a></span><ul><li><a href="/Team:Fudan-TSI/Demonstrate#ReverseTranscription">Reverse transcription</a></li><li><a href="/Team:Fudan-TSI/Demonstrate#Recombination">Recombination</a></li><li><a href="/Team:Fudan-TSI/Demonstrate">Demonstration</a></li><li><a href="/Team:Fudan-TSI/Measurement">Measurement</a></li><li><a href="/Team:Fudan-TSI/Notebook">Notebook</a></li></ul></div><div class="col s12 m4 active"> <span><a href="/Team:Fudan-TSI/Model">Model</a></span><ul><li><a href="/Team:Fudan-TSI/Model">Modeling</a></li><li><a href="/Team:Fudan-TSI/Software">Software</a></li><li><a href="/Team:Fudan-TSI/Hardware">Hardware</a></li></ul></div></div><div class="col s12 l6 row"><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Parts">Parts</a></span><ul><li><a href="/Team:Fudan-TSI/Basic_Part">Basic parts</a></li><li><a href="/Team:Fudan-TSI/Composite_Part">Composite parts</a></li><li><a href="/Team:Fudan-TSI/Improve">Part improvement</a></li><li><a href="/Team:Fudan-TSI/Part_Collection">Part collection</a></li></ul></div><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Human_Practices">Outreach</a></span><ul><li><a href="/Team:Fudan-TSI/Public_Engagement">Public engagement</a></li><li><a href="/Team:Fudan-TSI/Human_Practices#IntegratedHumanPractice">Integrated HP</a></li><li><a href="/Team:Fudan-TSI/Collaborations">Collaborations</a></li><li><a href="/Team:Fudan-TSI/Safety">Safety</a></li></ul></div><div class="col s12 m4"> <span><a href="/Team:Fudan-TSI/Team">Team</a></span><ul><li><a href="/Team:Fudan-TSI/Team">Members</a></li><li><a href="/Team:Fudan-TSI/Attributions">Attributions</a></li><li><a href="/Team:Fudan-TSI/Team#Acknowledge">Acknowledge</a></li><li><a href="/Team:Fudan-TSI/Heritage">Heritage</a></li></ul></div><div class="col s12 m4"> </div></div></div></div></div><div class="footer-copyright"><div class="container"><div class="contactUS row"><div class="col s12 m6 l4"><i class="fa fa-location-arrow"></i> Life Sci Bldg, 2005 Songhu Rd, Shanghai</div><div class="col s12 m6 l2"><i class="fa fa-fax"></i> +86-21-31246727</div><div class="col s12 m6 l2"><i class="fa fa-envelope-o"></i> igem@fudan.edu.cn</div><div class="col s12 m6 l4"><i class="fa fa-twitter"></i> <i class="fa fa-wechat"></i> Fudan_iGEM</div></div></div></div> </footer> |
| </div></div></div><!-- #pageContent #FudanTSIBody #FudanTSIdivWrapper --> | | </div></div></div><!-- #pageContent #FudanTSIBody #FudanTSIdivWrapper --> |
| | | |