Difference between revisions of "Team:ShanghaitechChina/Safety"

 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{ShanghaitechChina}}
 
{{ShanghaitechChina}}
 
<html>
 
<html>
<html lang="en">
 
 
<head>
 
<head>
<meta charset="UTF-8">
+
<style>
<title>Pong</title>
+
.content {
 
+
  width:96%;
<!-- Basic styling, centering the canvas -->
+
}
<style>
+
</style>
canvas {
+
display: block;
+
position: absolute;
+
margin: auto;
+
top: 0;
+
bottom: 0;
+
left: 0;
+
right: 0;
+
}
+
</style>
+
 
</head>
 
</head>
 
<body>
 
<body>
<script>
+
</div></div></div></div></div><img class="imgnav" src="https://static.igem.org/mediawiki/2016/6/63/T--ShanghaitechChina--title-Safety.png"style="width:96%;">
var
+
<div id="p1" class="content">
/**
+
Synthetic biology, or biology research in general requires precautionary safety measures while providing discovers and new designs to improve our quality of living. Although lab experience was not new to most of our team members, we would inevitably encounter something unexpected when conducting independent research. In this section, we show the actions as well as facts that ensure we proceeded through our project, Solar Hunter, safely.
* Constants
+
*/
+
WIDTH  = 700,
+
HEIGHT = 600,
+
pi = Math.PI,
+
UpArrow  = 38,
+
DownArrow = 40,
+
/**
+
* Game elements
+
*/
+
canvas,
+
ctx,
+
keystate,
+
/**
+
* The player paddle
+
*
+
* @type {Object}
+
*/
+
player = {
+
x: null,
+
y: null,
+
width:  20,
+
height: 100,
+
/**
+
* Update the position depending on pressed keys
+
*/
+
update: function() {
+
if (keystate[UpArrow]) this.y -= 7;
+
if (keystate[DownArrow]) this.y += 7;
+
// keep the paddle inside of the canvas
+
this.y = Math.max(Math.min(this.y, HEIGHT - this.height), 0);
+
},
+
/**
+
* Draw the player paddle to the canvas
+
*/
+
draw: function() {
+
ctx.fillRect(this.x, this.y, this.width, this.height);
+
}
+
},
+
/**
+
* The ai paddle
+
*
+
* @type {Object}
+
*/
+
ai = {
+
x: null,
+
y: null,
+
width:  20,
+
height: 100,
+
/**
+
* Update the position depending on the ball position
+
*/
+
update: function() {
+
// calculate ideal position
+
var desty = ball.y - (this.height - ball.side)*0.5;
+
// ease the movement towards the ideal position
+
this.y += (desty - this.y) * 0.1;
+
// keep the paddle inside of the canvas
+
this.y = Math.max(Math.min(this.y, HEIGHT - this.height), 0);
+
},
+
/**
+
* Draw the ai paddle to the canvas
+
*/
+
draw: function() {
+
ctx.fillRect(this.x, this.y, this.width, this.height);
+
}
+
},
+
/**
+
* The ball object
+
*
+
* @type {Object}
+
*/
+
ball = {
+
x:  null,
+
y:  null,
+
vel: null,
+
side:  20,
+
speed: 12,
+
/**
+
* Serves the ball towards the specified side
+
*
+
* @param  {number} side 1 right
+
*                      -1 left
+
*/
+
serve: function(side) {
+
// set the x and y position
+
var r = Math.random();
+
this.x = side===1 ? player.x+player.width : ai.x - this.side;
+
this.y = (HEIGHT - this.side)*r;
+
// calculate out-angle, higher/lower on the y-axis =>
+
// steeper angle
+
var phi = 0.1*pi*(1 - 2*r);
+
// set velocity direction and magnitude
+
this.vel = {
+
x: side*this.speed*Math.cos(phi),
+
y: this.speed*Math.sin(phi)
+
}
+
},
+
/**
+
* Update the ball position and keep it within the canvas
+
*/
+
update: function() {
+
// update position with current velocity
+
this.x += this.vel.x;
+
this.y += this.vel.y;
+
// check if out of the canvas in the y direction
+
if (0 > this.y || this.y+this.side > HEIGHT) {
+
// calculate and add the right offset, i.e. how far
+
// inside of the canvas the ball is
+
var offset = this.vel.y < 0 ? 0 - this.y : HEIGHT - (this.y+this.side);
+
this.y += 2*offset;
+
// mirror the y velocity
+
this.vel.y *= -1;
+
}
+
// helper function to check intesectiont between two
+
// axis aligned bounding boxex (AABB)
+
var AABBIntersect = function(ax, ay, aw, ah, bx, by, bw, bh) {
+
return ax < bx+bw && ay < by+bh && bx < ax+aw && by < ay+ah;
+
};
+
// check againts target paddle to check collision in x
+
// direction
+
var pdle = this.vel.x < 0 ? player : ai;
+
if (AABBIntersect(pdle.x, pdle.y, pdle.width, pdle.height,
+
this.x, this.y, this.side, this.side)
+
) {
+
// set the x position and calculate reflection angle
+
this.x = pdle===player ? player.x+player.width : ai.x - this.side;
+
var n = (this.y+this.side - pdle.y)/(pdle.height+this.side);
+
var phi = 0.25*pi*(2*n - 1); // pi/4 = 45
+
// calculate smash value and update velocity
+
var smash = Math.abs(phi) > 0.2*pi ? 1.5 : 1;
+
this.vel.x = smash*(pdle===player ? 1 : -1)*this.speed*Math.cos(phi);
+
this.vel.y = smash*this.speed*Math.sin(phi);
+
}
+
// reset the ball when ball outside of the canvas in the
+
// x direction
+
if (0 > this.x+this.side || this.x > WIDTH) {
+
this.serve(pdle===player ? 1 : -1);
+
}
+
},
+
/**
+
* Draw the ball to the canvas
+
*/
+
draw: function() {
+
ctx.fillRect(this.x, this.y, this.side, this.side);
+
}
+
};
+
/**
+
* Starts the game
+
*/
+
function main() {
+
// create, initiate and append game canvas
+
canvas = document.createElement("canvas");
+
canvas.width = WIDTH;
+
canvas.height = HEIGHT;
+
ctx = canvas.getContext("2d");
+
document.body.appendChild(canvas);
+
keystate = {};
+
// keep track of keyboard presses
+
document.addEventListener("keydown", function(evt) {
+
keystate[evt.keyCode] = true;
+
});
+
document.addEventListener("keyup", function(evt) {
+
delete keystate[evt.keyCode];
+
});
+
init(); // initiate game objects
+
// game loop function
+
var loop = function() {
+
update();
+
draw();
+
window.requestAnimationFrame(loop, canvas);
+
};
+
window.requestAnimationFrame(loop, canvas);
+
}
+
/**
+
* Initatite game objects and set start positions
+
*/
+
function init() {
+
player.x = player.width;
+
player.y = (HEIGHT - player.height)/2;
+
ai.x = WIDTH - (player.width + ai.width);
+
ai.y = (HEIGHT - ai.height)/2;
+
ball.serve(1);
+
}
+
/**
+
* Update all game objects
+
*/
+
function update() {
+
ball.update();
+
player.update();
+
ai.update();
+
}
+
/**
+
* Clear canvas and draw all game objects and net
+
*/
+
function draw() {
+
ctx.fillRect(0, 0, WIDTH, HEIGHT);
+
ctx.save();
+
ctx.fillStyle = "#fff";
+
ball.draw();
+
player.draw();
+
ai.draw();
+
// draw the net
+
var w = 4;
+
var x = (WIDTH - w)*0.5;
+
var y = 0;
+
var step = HEIGHT/20; // how many net segments
+
while (y < HEIGHT) {
+
ctx.fillRect(x, y+step*0.25, w, step*0.5);
+
y += step;
+
}
+
ctx.restore();
+
}
+
// start and run the game
+
main();
+
</script>
+
</body>
+
</html>
+
<div class="column full_size">
+
 
+
 
+
<p>Please visit <a href="https://2016.igem.org/Safety">the main Safety page</a> to find this year's safety requirements & deadlines, and to learn about safe & responsible research in iGEM.</p>
+
 
+
<p>On this page of your wiki, you should write about how you are addressing any safety issues in your project. The wiki is a place where you can <strong>go beyond the questions on the safety forms</strong>, and write about whatever safety topics are most interesting in your project. (You do not need to copy your safety forms onto this wiki page.)</p>
+
 
+
 
</div>
 
</div>
 
+
<div id="p1" class="content">
 
+
<h1 align="center">Education: Safety 101</h1>
<div class="column full_size">
+
(1) Biology Operation The first step in any safety guarantee is to know what is allowed, what is never allowed, what could happen, and what to do to prevent. Before the opening of our iGEM lab, one instructor (Jing Yang) from the Undergraduate Biology Lab/Platform gave us a lecture on the general safety, stressing on details of the apparatuses we had never used by ourselves before, such as autoclaves sterilizers. The instructor also talked about the emergency such as a fire and safety hazard. We signed an agreement on Lab safety after passing the quiz on safety knowledge and allocated the duty in the management of the apparatus down to each student. With the general education of safety and personal certain responsibility, we started our lab.<p></p>
<h5>Safe Project Design</h5>
+
(2) In the beginning of operating in the lab on semi-conductor , all of our team members all involved in relevant training of lab safety. For example, the toxity of common organism and the operating rules in the lab. More importantly, we would get together to read MSDS of the chemicals to promise we realized we should behave carefully in the experiments and gain necessary knowledge of the toxicity of the chemicals.
 
+
<p>Does your project include any safety features? Have you made certain decisions about the design to reduce risks? Write about them here! For example:</p>
+
 
+
<ul>
+
<li>Choosing a non-pathogenic chassis</li>
+
<li>Choosing parts that will not harm humans / animals / plants</li>
+
<li>Substituting safer materials for dangerous materials in a proof-of-concept experiment</li>
+
<li>Including an "induced lethality" or "kill-switch" device</li>
+
</ul>
+
 
+
 
</div>
 
</div>
 +
<div id="p2" class="content">
 +
<h1 align="center">Protection</h1>
 +
(1)First level<p></p>
 +
Every team member conducted experiments with lab gown, gloves and goggles as the first line of protection. To ensure this, our team was censored by a non-regular security check by the safety department of ShanghaiTech University. The department had the right to stop our project when we were spot as unprotected.<p></p>
 +
(2)When using organic solution or other toxic power, A protective mask is asked to ensure no chemicals will infect through the respiratory tract<p></p>
 +
(3) In the synthesis experiments, we have to get contact with some high temperature reaction which may put us in dangerous situation so we exactly abided by the instructions of our lab teachers and when we use the heating block, there would be a graduate student to maintain the code of our practice. In addition, we would get familiar with the operation before the experiments. Last but not least, fire-fighting equipment is just 3 meters away.
 +
</div>
 +
<div id="p3" class="content">
 +
<h1 align="center">Materials</h1>
 +
However, these protection is not enough. We made our best to reduce the use of dangerous and hazardous strains and materials.
 +
<h3>(1)Biology-related</h3>
 +
In the biology section of our project, we just handle with risk group 1 organisms , Such as E. Coli, DH5a, BL21, PirLC, and, FAYC002. Both PirLC and FAYC002a are derivatives of BL21 competent cell. In handling our transformed bacteria, we sticked to the rules of the host labs as to where to culture and where to dispose of the bacteria not needed. Since our own lab and host labs were all certified at least S1-safety laboratory, the handling of bacteria should not cause any potential effect on the environment. Especially, our project involves bacteria that secret biofilm, whose intrinsic coherence makes it a nasty element once the bacteria find a surface to grow. We, however, do not think it will be a threat to the environment since the secretion needs the induction of ATC, which is not common outside the lab. In addition, we dispose all the waste in biological garbage in our certified S1-safety laboratory. The waste will then be sterilized.<p></p>
 +
In terms of other biology-related reagents, we chose the most possible to avoid hazard. We used Goldview, GeneRed, which are assumed to be safer than EB for the nucleotide dye in electrophoresis gel.<p></p>
 +
<h3>(2)Chemicals</h3>
 +
Nano materials can be toxic if not handled correctly. We recycled our CdSe, though, by means of centrifugation.<p></p>
  
<div class="column half_size">
+
Methyl Viologen(MV), the mediator in our Solar Hunter system is actually the most toxic reagent to person in our project . It is stored in a cupboard, double-locked. In addition, only one person, our team leader Yi Liu was allowed to handle it. Before the use of MV, Liu was trained. Every time, he handled the MV in fuming hood and sealed it with tapes. Although it was toxic, the amount we used was not big, and thus relatively safe, as long as there is no direct contact with the solution. The mediator was not so dangerous once it was added into the hydrogen production system as being diluted. In the environment, the mediator can be degraded in soil to be non-toxic elements.<p></p>
<h5>Safe Lab Work</h5>
+
  
<p>What safety procedures do you use every day in the lab? Did you perform any unusual experiments, or face any unusual safety issues? Write about them here!</p>
+
The experimental materials mainly used in the process of synthesis of quantum dots and nanorods that are associated with safety problems including selenium powder, Cadmium oxide, sulfur power, methanol, ethanol, chloroform, acetone, 1-octadecene, trioctylphophine(TOP). These materials may do damage to human health to some extent if no protection is provided. So we first bought professional gas masks, 3M 2091CN, to every team member of this part and thus we eventually avoid breathing poisonous organism and heavy metal powder floating in the air. As some of the chemicals are smelly, like top, they should be stored in the fume hood and keep the fume hood on all the time to improve the condition of the experimental environment.
  
 
</div>
 
</div>
 
+
</body>
<div class="column half_size">
+
<h5>Safe Shipment</h5>
+
 
+
<p>Did you face any safety problems in sending your DNA parts to the Registry? How did you solve those problems?</p>
+
</div>
+
<iframe src="http://www.ipfingerprints.com/" frameBorder="0" width="900" scrolling="no" height="90"></iframe>
+
 
+
 
</html>
 
</html>

Latest revision as of 21:13, 19 October 2016

igem2016:ShanghaiTech