|
|
(112 intermediate revisions not shown) |
Line 1: |
Line 1: |
| + | {{Team:Amsterdam/toolStyleBase}} |
| + | {{Team:Amsterdam/toolStyleSunburst}} |
| {{Team:Amsterdam/stylesheet}} | | {{Team:Amsterdam/stylesheet}} |
| {{Team:Amsterdam/scripts}} | | {{Team:Amsterdam/scripts}} |
| {{Team:Amsterdam/Header}} | | {{Team:Amsterdam/Header}} |
- | {{Team:Amsterdam/Sidebar1}} | + | {{Team:Amsterdam/Sidebar2}} |
| <html> | | <html> |
- | <head>
| + | <script type='text/javascript' src='/Team:Amsterdam/maarten/slides.min.jquery.js?action=raw'></script> |
- | <script type="text/javascript" src="https://raw.github.com/Stuk/jszip/master/jszip.js"></script>
| + | |
- | <script type="text/javascript" src="jquery-1.2.3.min.js"></script>
| + | |
- | <script type='text/javascript'> | + | |
- | | + | |
- | function addForbiddenSequences(){
| + | |
- | forbiddenSequences.addSite('Forbidden-EcoRI','GAATTC')
| + | |
- | forbiddenSequences.addSite('Forbidden-XbaI','GAATTC')
| + | |
- | forbiddenSequences.addSite('Forbidden-SpeI','ACTAGT')
| + | |
- | forbiddenSequences.addSite('Forbidden-PstI','CTGCAG')
| + | |
- | forbiddenSequences.addSite('Forbidden-NotI','GCGGCCGC')
| + | |
- | }
| + | |
- | | + | |
- | var forbiddenSequences = {
| + | |
- | forbiddenSequencesArray : {},
| + | |
- | addSite : function(name,sequence){
| + | |
- | forbiddenSequences.forbiddenSequencesArray[name] = sequence
| + | |
- | },
| + | |
- | }
| + | |
- | | + | |
- | function checkOccurrence(target,sequence){
| + | |
- | if (sequence.length > target.length){
| + | |
- | if (sequence.indexOf(target) == -1){
| + | |
- | return false
| + | |
- | } else{
| + | |
- | return true
| + | |
- | }
| + | |
- | } else{
| + | |
- | if (target.indexOf(sequence) == -1){
| + | |
- | return false
| + | |
- | } else{
| + | |
- | return true
| + | |
- | }
| + | |
- | }
| + | |
- | }
| + | |
- | | + | |
- | function randomDNA(length){
| + | |
- | chars = 'atgc'
| + | |
- | inForbiddenSite = true
| + | |
- | while (inForbiddenSite === true){
| + | |
- | sequence = ''
| + | |
- | inForbiddenSite = false
| + | |
- | for (k=0; k<length; k++) {
| + | |
- | rnum = Math.floor(Math.random() * chars.length);
| + | |
- | sequence += chars.substring(rnum,rnum+1);
| + | |
- | }
| + | |
- | for (item in forbiddenSequences.forbiddenSequencesArray){
| + | |
- | if (checkOccurrence(sequence,forbiddenSequences.forbiddenSequencesArray[item].toLowerCase()) === false){
| + | |
- | continue
| + | |
- | } else{
| + | |
- | inForbiddenSite = true
| + | |
- | break
| + | |
- | }
| + | |
- | }
| + | |
- | }
| + | |
- | return sequence
| + | |
- | }
| + | |
- | | + | |
- | function getMethyltransferases(){
| + | |
- | methyltransferases = new Array()
| + | |
- | sca1 = new Object()
| + | |
- | sca1.target = "AGTACT"
| + | |
- | sca1.sequence = "tccgggcgggactttggatatgtgatacagtcgtccgctgcactatggaatcgactctctacattctcacagagaggaaaagccttggacaccaggcttgcagacatcaagaaggccctggggaagccgtactacgaaacctcggatgtccttctttaccacggcgacagtcttgagctgctcaagtcaatgcctcagcagattttcgaccttaccgtaactagcccaccttacaatattggcaaagagtacgagggtgtactgtcgatcgaggaatacatttcctggtgcgagacatggatgtcgcgcgttcatagggcgaccagcgcaggcggcgcattttggctcaatgttgggtacgtccctgtcccgaaccaaggaaaagcagtcccgattccttacctcttgtgggacaagagtccgttctacatgatccaggaagttgtctggaattacggggcgggagtggcgtctcgaaaatcgttttccccgcgcaatgaaaagtttctctggtatgtgcgcgacccgctgaattattacttcgacctcgattcggtgcgcgacccaaatgtgaaataccccaaccagaaaaagaatgggaagctcaaatgcaacccgttggggaaaaatcccactgacgtttggcagttccccaaggttacgtcgggcgcgaagagatcaagcgtggagcgcaccgcccatccggcacaattcccgtctgctgtcattgaacgggtcatcaaggcgtgcagcccttccgacggcgtcatcctggacccattcctcggttccggaacgacctcgctgaccgccagaaagcaaggccggtgcagcgtcggtatcgaaatccgcgaagactacctcgacatcgcggtgggacgcctggaggcggaggcgcaatccctcttctag"
| + | |
- | sca1.description = "M.Sca1"
| + | |
- | sca2 = new Object()
| + | |
- | sca2.target = "AGTACC"
| + | |
- | sca2.sequence = "tccgggcgggactttggatatgtgatacagtcgtccgctgcactatggaatcgactctctacattctcacagagaggaaaagccttggacaccaggcttgcagacatcaagaaggccctggggaagccgtactacgaaacctcggatgtccttctttaccacggcgacagtcttgagctgctcaagtcaatgcctcagcagattttcgaccttaccgtaactagcccaccttacaatattggcaaagagtacgagggtgtactgtcgatcgaggaatacatttcctggtgcgagacatggatgtcgcgcgttcatagggcgaccagcgcaggcggcgcattttggctcaatgttgggtacgtccctgtcccgaaccaaggaaaagcagtcccgattccttacctcttgtgggacaagagtccgttctacatgatccaggaagttgtctggaattacggggcgggagtggcgtctcgaaaatcgttttccccgcgcaatgaaaagtttctctggtatgtgcgcgacccgctgaattattacttcgacctcgattcggtgcgcgacccaaatgtgaaataccccaaccagaaaaagaatgggaagctcaaatgcaacccgttggggaaaaatcccactgacgtttggcagttccccaaggttacgtcgggcgcgaagagatcaagcgtggagcgcaccgcccatccggcacaattcccgtctgctgtcattgaacgggtcatcaaggcgtgcagcccttccgacggcgtcatcctggacccattcctcggttccggaacgacctcgctgaccgccagaaagcaaggccggtgcagcgtcggtatcgaaatccgcgaagactacctcgacatcgcggtgggacgcctggaggcggaggcgcaatccctcttctagg"
| + | |
- | sca2.description = "M.Sca2"
| + | |
- | methyltransferases[0] = sca1
| + | |
- | methyltransferases[1] = sca2
| + | |
- | addForbiddenSequence(methyltransferases,'hasTarget')
| + | |
- | return methyltransferases
| + | |
- | }
| + | |
- | | + | |
- | function getZincFingers(){
| + | |
- | zincFingers = new Array()
| + | |
- | rawData = document.plasmidForm.zf.value
| + | |
- | rawData = rawData.split('>')
| + | |
- | rawData.reverse().pop()
| + | |
- | rawData.reverse()
| + | |
- | for (zf in rawData){
| + | |
- | zfFormatted = rawData[zf].split('\n')
| + | |
- | zfDescription = zfFormatted[0]
| + | |
- | zfTarget = zfDescription.split('|')[5]
| + | |
- | zfSequence = ''
| + | |
- | for (i=1;i<zfFormatted.length;i++){
| + | |
- | zfSequence+=zfFormatted[i]
| + | |
- | }
| + | |
- | zfObject = new Object()
| + | |
- | zfObject.target = zfTarget
| + | |
- | zfObject.sequence = zfSequence
| + | |
- | zfObject.description = zfDescription
| + | |
- | zincFingers[zf] = zfObject
| + | |
- | }
| + | |
- | addForbiddenSequence(zincFingers,'hasTarget')
| + | |
- | return zincFingers
| + | |
- | }
| + | |
- | | + | |
- | function getLinkers(){
| + | |
- | linkers = new Array()
| + | |
- | linker1 = new Object()
| + | |
- | linker1.sequence = "gcacccggc"
| + | |
- | linker1.description = "Linker 1"
| + | |
- | linker2 = new Object()
| + | |
- | linker2.sequence = "gcaccccgccc"
| + | |
- | linker2.description = "Linker 2"
| + | |
- | linkers[0] = linker1
| + | |
- | linkers[1] = linker2
| + | |
- | addForbiddenSequence(linkers,'noTarget')
| + | |
- | return linkers
| + | |
- | }
| + | |
- | | + | |
- | function getMycTags(){
| + | |
- | mycTags = new Array()
| + | |
- | mycTag1 = new Object()
| + | |
- | mycTag1.sequence = "gaacagaaactcatctctgaagaggatctg"
| + | |
- | mycTag1.description = "Myc Tag 1"
| + | |
- | mycTag2 = new Object()
| + | |
- | mycTag2.sequence = "gaacagaaactcatctctgaagagaatctgaagactgagtcagt"
| + | |
- | mycTag2.description = "Myc Tag 2"
| + | |
- | mycTags[0] = mycTag1
| + | |
- | mycTags[1] = mycTag2
| + | |
- | addForbiddenSequence(mycTags,'noTarget')
| + | |
- | return mycTags
| + | |
- | }
| + | |
- | | + | |
- | function getTerminators(){
| + | |
- | terminators = new Array()
| + | |
- | terminator1 = new Object()
| + | |
- | terminator1.sequence = "tcacactggctcaccttcgggtgggcctttctgcgtttatatactagagagagaatataaaaagccagattattaatccggcttttttattattt"
| + | |
- | terminator1.description = "B0014 containing BOO12 and BOO11 terminators"
| + | |
- | terminator2 = new Object()
| + | |
- | terminator2.sequence = "tcacactggctcaccttcgggtgggcctttctgcgtttatatactagagagagaatataaaaagccagattattaatccggcttttttattatttt"
| + | |
- | terminator2.description = "Terminator 2"
| + | |
- | terminators[0] = terminator1
| + | |
- | terminators[1] = terminator2
| + | |
- | addForbiddenSequence(terminators,'noTarget')
| + | |
- | return terminators
| + | |
- | }
| + | |
- | | + | |
- | function getRBS(){
| + | |
- | rbs = new Array()
| + | |
- | rbs1 = new Object()
| + | |
- | rbs1.sequence = "tcacacaggaaag"
| + | |
- | rbs1.description = "BBa_B0032"
| + | |
- | rbs2 = new Object()
| + | |
- | rbs2.sequence = "aaaaaaaaaaaccccaa"
| + | |
- | rbs2.description = "RBS2"
| + | |
- | rbs[0] = rbs1
| + | |
- | rbs[1] = rbs2
| + | |
- | addForbiddenSequence(rbs,'noTarget')
| + | |
- | return rbs
| + | |
- | }
| + | |
- | | + | |
- | function addForbiddenSequence(array,type){
| + | |
- | if (type == 'hasTarget'){
| + | |
- | for (item in array){
| + | |
- | forbiddenSequences.addSite(array[item].description,array[item].target)
| + | |
- | }
| + | |
- | } else{
| + | |
- | for (item in array){
| + | |
- | forbiddenSequences.addSite(array[item].description,array[item].sequence)
| + | |
- | }
| + | |
- | }
| + | |
- |
| + | |
- | }
| + | |
- | | + | |
- | function getDate(){
| + | |
- | today = new Date()
| + | |
- | dd = today.getDate()
| + | |
- | mm = today.getMonth()+1
| + | |
- | yyyy = today.getFullYear()
| + | |
- | if(dd<10){
| + | |
- | dd='0'+dd
| + | |
- | }
| + | |
- | if(mm<10){
| + | |
- | mm='0'+mm
| + | |
- | }
| + | |
- | today = dd+'-'+mm.substring(0,2)+'-'+yyyy;
| + | |
- | return today
| + | |
- | }
| + | |
- | | + | |
- | function generateWhiteSpace(amount){
| + | |
- | output = ''
| + | |
- | for (i=0;i<amount;i++){
| + | |
- | output += ' '
| + | |
- | }
| + | |
- | return output
| + | |
- | }
| + | |
- | | + | |
- | function staticGenbank(name){
| + | |
- | output = 'LOCUS'
| + | |
- | output += generateWhiteSpace(16)
| + | |
- | output += name
| + | |
- | output += generateWhiteSpace(8)
| + | |
- | output += memoryPlasmid.dna.length+' bp DNA '
| + | |
- | output += generateWhiteSpace(3)
| + | |
- | output += 'linear'
| + | |
- | output += generateWhiteSpace(7)
| + | |
- | output += getDate()+'<br>'
| + | |
- | output += 'DEFINITION<br>'
| + | |
- | output += 'ACCESSION<br>'
| + | |
- | output += 'VERSION<br>'
| + | |
- | output += 'SOURCE<br>'
| + | |
- | output += ' ORGANISM<br>'
| + | |
- | output += 'COMMENT<br>'
| + | |
- | output += 'FEATURES'
| + | |
- | output += generateWhiteSpace(13)
| + | |
- | output += 'Location/Qualifiers<br>'
| + | |
- | return output
| + | |
- | }
| + | |
- | | + | |
- | function genbank(){
| + | |
- | memoryPlasmidOutput = staticGenbank('memory_plasmid')
| + | |
- | for (item in memoryPlasmid.memoryObjects){
| + | |
- | for (key in memoryPlasmid.memoryObjects[item]){
| + | |
- | memoryPlasmidOutput += generateWhiteSpace(5)
| + | |
- | memoryPlasmidOutput += 'misc_feature'
| + | |
- | memoryPlasmidOutput += generateWhiteSpace(5)
| + | |
- | memoryPlasmidOutput += memoryPlasmid.memoryObjects[item][key].start+'...'+memoryPlasmid.memoryObjects[item][key].end+'<br>'
| + | |
- | memoryPlasmidOutput += generateWhiteSpace(10)
| + | |
- | memoryPlasmidOutput += '/label='+memoryPlasmid.memoryObjects[item][key].description+'<br>'
| + | |
- | }
| + | |
- |
| + | |
- | }
| + | |
- | origin = memoryPlasmid.dna
| + | |
- | origin = origin.replace(/[atgc]{10}/g,'$& ').replace(/amp;/g,'').split(' ')
| + | |
- | pos = 1
| + | |
- | newString = ''
| + | |
- | memoryPlasmidOutput += 'ORIGIN<br>'
| + | |
- | for (i=0;i<origin.length;i++){
| + | |
- | newString = newString+' '+origin[i]
| + | |
- | if ((i+1)%6===0){
| + | |
- | whiteSpace = ''
| + | |
- | for (j=0;j<9-pos.toString().length;j++){
| + | |
- | whiteSpace+= ' '
| + | |
- | }
| + | |
- | newString = whiteSpace+pos + ' ' + newString
| + | |
- | memoryPlasmidOutput+=newString+'<br>'
| + | |
- | newString = ''
| + | |
- | } else if ((i+1)%6==1){
| + | |
- | if (i!=0){
| + | |
- | pos+=60
| + | |
- | }
| + | |
- | }
| + | |
- | }
| + | |
- | if (origin.length%6 != 0){
| + | |
- | newString = ''
| + | |
- | whiteSpace = ''
| + | |
- | for (j=0;j<9-pos.toString().length;j++){
| + | |
- | whiteSpace+= ' '
| + | |
- | }
| + | |
- | newString+=whiteSpace+pos
| + | |
- | for (i=0;i<(origin.length%6);i++){
| + | |
- | newString+=' '+origin[origin.length-origin.length%6+i]
| + | |
- | }
| + | |
- | memoryPlasmidOutput+=newString+'<br>'
| + | |
- | }
| + | |
- | restrictionPlasmidOutput = staticGenbank('restriction_plasmid')
| + | |
- | targetSites = new Array()
| + | |
- | for (item in memoryPlasmid.memoryObjects){
| + | |
- | site = new Object()
| + | |
- | site.zincFinger = memoryPlasmid.memoryObjects[item].zincFinger.featureObject.target
| + | |
- | site.methyltransferase = memoryPlasmid.memoryObjects[item].methyltransferase.featureObject.target
| + | |
- | targetSites[item-1] = site
| + | |
- | }
| + | |
- | restrictionOrigin = memoryPlasmid.features[1].sequence
| + | |
- | for (key in targetSites){
| + | |
- | restrictionOrigin += randomDNA(10)
| + | |
- | restrictionPlasmidOutput += generateWhiteSpace(5)
| + | |
- | restrictionPlasmidOutput += 'misc_feature'
| + | |
- | restrictionPlasmidOutput += generateWhiteSpace(5)
| + | |
- | restrictionPlasmidOutput += restrictionOrigin.length+1+'...'
| + | |
- | restrictionOrigin += targetSites[key].zincFinger
| + | |
- | restrictionPlasmidOutput += restrictionOrigin.length+'<br>'
| + | |
- | restrictionOrigin += randomDNA(10)
| + | |
- | restrictionPlasmidOutput += generateWhiteSpace(5)
| + | |
- | restrictionPlasmidOutput += 'misc_feature'
| + | |
- | restrictionPlasmidOutput += generateWhiteSpace(5)
| + | |
- | restrictionPlasmidOutput += restrictionOrigin.length+1+'...'
| + | |
- | restrictionOrigin += targetSites[key].methyltransferase
| + | |
- | restrictionPlasmidOutput += restrictionOrigin.length+'<br>'
| + | |
- | restrictionOrigin += targetSites[key].methyltransferase
| + | |
- | }
| + | |
- | restrictionOrigin = restrictionOrigin.toLowerCase()
| + | |
- | restrictionOrigin = restrictionOrigin.replace(/[atgc]{10}/g,'$& ').replace(/amp;/g,'').split(' ')
| + | |
- | pos = 1
| + | |
- | newString = ''
| + | |
- | restrictionPlasmidOutput += 'ORIGIN<br>'
| + | |
- | for (i=0;i<restrictionOrigin.length;i++){
| + | |
- | newString = newString+' '+restrictionOrigin[i]
| + | |
- | if ((i+1)%6===0){
| + | |
- | whiteSpace = ''
| + | |
- | for (j=0;j<9-pos.toString().length;j++){
| + | |
- | whiteSpace+= ' '
| + | |
- | }
| + | |
- | newString = whiteSpace+pos + ' ' + newString
| + | |
- | restrictionPlasmidOutput+=newString+'<br>'
| + | |
- | newString = ''
| + | |
- | } else if ((i+1)%6==1){
| + | |
- | if (i!=0){
| + | |
- | pos+=60
| + | |
- | }
| + | |
- | }
| + | |
- | }
| + | |
- | if (restrictionOrigin.length%6 != 0){
| + | |
- | newString = ''
| + | |
- | whiteSpace = ''
| + | |
- | for (j=0;j<9-pos.toString().length;j++){
| + | |
- | whiteSpace+= ' '
| + | |
- | }
| + | |
- | newString+=whiteSpace+pos
| + | |
- | for (i=0;i<(restrictionOrigin.length%6);i++){
| + | |
- | newString+=' '+restrictionOrigin[restrictionOrigin.length-restrictionOrigin.length%6+i]
| + | |
- | }
| + | |
- | restrictionPlasmidOutput+=newString+'<br>'
| + | |
- | }
| + | |
- | myWindow=window.open()
| + | |
- | myWindow.document.write(memoryPlasmidOutput)
| + | |
- | myWindow.focus()
| + | |
- | restrictionSiteWindow = window.open()
| + | |
- | restrictionSiteWindow.document.write(restrictionPlasmidOutput)
| + | |
- | restrictionSiteWindow.focus()
| + | |
- | }
| + | |
- | | + | |
- | function formatPlasmidInput(backbone){
| + | |
- | backbone = backbone.split('\n')
| + | |
- | originBoolean = false
| + | |
- | backboneName = ''
| + | |
- | sequence = ''
| + | |
- | if (backbone[0].toLowerCase().indexOf('locus') != -1){
| + | |
- | for (i=0;i<backbone.length;i++){
| + | |
- | if (originBoolean === true){
| + | |
- | if (backbone[i].indexOf('//') == -1){
| + | |
- | appendThis = backbone[i].replace(/[0-9]|\s|\n|\t/g,'')
| + | |
- | sequence = sequence+appendThis
| + | |
- | } else{
| + | |
- | originalBoolean = false
| + | |
- | }
| + | |
- | }
| + | |
- | if (backbone[i].indexOf('locus') != -1){
| + | |
- | backboneName = backbone[i].split(/\s+|\t+/g)[1]
| + | |
- | }
| + | |
- | if (backbone[i].indexOf('origin') != -1){
| + | |
- | originBoolean = true
| + | |
- | }
| + | |
- | }
| + | |
- | } else if (backbone[0][0] == '>'){
| + | |
- | for (i=0;i<backbone.length;i++){
| + | |
- | if (backbone[i][0] != '>'){
| + | |
- | appendThis = backbone[i].replace(/[0-9]|\s|\n|\t/g,'')
| + | |
- | sequence = sequence+appendThis
| + | |
- | } else{
| + | |
- | backboneName = backbone[i].replace('>','')
| + | |
- | }
| + | |
- | }
| + | |
- | }
| + | |
- | memoryPlasmid.addFeature(1,sequence.length,'Backbone',sequence,backboneName,'')
| + | |
- | return sequence
| + | |
- | }
| + | |
- | | + | |
- | function feature(start,end,type,sequence,description,featureObject){
| + | |
- | this.start = start;
| + | |
- | this.end = end;
| + | |
- | this.type = type;
| + | |
- | this.sequence = sequence;
| + | |
- | this.description = description;
| + | |
- | this.featureObject = featureObject
| + | |
- | }
| + | |
- | | + | |
- | var restrictionPlasmid = {
| + | |
- | backboneName : '',
| + | |
- | dna : '',
| + | |
- | features : {},
| + | |
- | setBackboneName : function(backboneName){
| + | |
- | restrictionlasmid.backboneName = backboneName
| + | |
- | },
| + | |
- | setDNA : function(dna){
| + | |
- | restrictionPlasmid.dna = dna
| + | |
- | },
| + | |
- | addFeature : function(start,end,type,sequence,description){
| + | |
- | restrictionPlasmid.features[start] = new feature(start,end,type,sequence,description)
| + | |
- | },
| + | |
- | addRecognitionAreaObject : function(zfTarget,mtaseTarget){
| + | |
- | | + | |
- | recognitionPlasmid.zfTarget = zfTarget
| + | |
- | recognitionPlasmid.mtaseTarget = mtaseTarget
| + | |
- | }
| + | |
- | }
| + | |
- | | + | |
- | var memoryPlasmid = {
| + | |
- | backboneName : '',
| + | |
- | dna : '',
| + | |
- | features : {},
| + | |
- | memoryObjects : {},
| + | |
- | setBackboneName : function(backboneName){
| + | |
- | memoryPlasmid.backboneName = backboneName
| + | |
- | },
| + | |
- | setDNA : function(dna){
| + | |
- | memoryPlasmid.dna = dna
| + | |
- | },
| + | |
- | addMemoryObject : function(sensor,rbs,zincFinger,linker,mycTag,methyltransferase,terminator){
| + | |
- | memoryObject = new Object()
| + | |
- | memoryObject.sensor = sensor
| + | |
- | memoryObject.rbs = rbs
| + | |
- | memoryObject.zincFinger = zincFinger
| + | |
- | memoryObject.linker = linker
| + | |
- | memoryObject.mycTag = mycTag
| + | |
- | memoryObject.methyltransferase = methyltransferase
| + | |
- | memoryObject.terminator = terminator
| + | |
- | memoryPlasmid.memoryObjects[sensor.start] = memoryObject
| + | |
- | },
| + | |
- | addFeature : function(start,end,type,sequence,description){
| + | |
- | memoryPlasmid.features[start] = new feature(start,end,type,sequence,description)
| + | |
- | }
| + | |
- | }
| + | |
- | | + | |
- | function sensorObject(name,sequence){
| + | |
- | this.name = name
| + | |
- | this.sequence = sequence
| + | |
- |
| + | |
- | }
| + | |
- |
| + | |
- | function formatSensors(sensors){
| + | |
- | sensorArray = new Array()
| + | |
- | if (sensors.indexOf('LOCUS') != -1){
| + | |
- | sensors = sensors.split('LOCUS')
| + | |
- | sensors.reverse().pop()
| + | |
- | for (i=0;i<sensors.length;i++){
| + | |
- | originBoolean = false
| + | |
- | sensorName = ''
| + | |
- | sequence = ''
| + | |
- | sensor = sensors[i].split('\n')
| + | |
- | for (j=0;j<sensor.length;j++){
| + | |
- | if (j===0){
| + | |
- | sensorName = sensor[j]
| + | |
- | }
| + | |
- | if (originBoolean === true){
| + | |
- | if (sensor[j].indexOf('//') == -1){
| + | |
- | appendThis = sensor[j].replace(/[0-9]|\s|\n|\t/g,'')
| + | |
- | sequence += appendThis
| + | |
- | } else {
| + | |
- | originBoolean = false
| + | |
- | }
| + | |
- | }
| + | |
- | if (sensor[j].indexOf('ORIGIN') != -1){
| + | |
- | originBoolean = true
| + | |
- | }
| + | |
- | }
| + | |
- | sensorArray[i] = new sensorObject(sensorName,sequence)
| + | |
- | }
| + | |
- | } else if (sensors[0] == '>'){
| + | |
- | sensors = sensors.split('//')
| + | |
- | sensors.pop()
| + | |
- | sensorName = ''
| + | |
- | for (i=0;i<sensors.length;i++){
| + | |
- | sensor = sensors[i].split('\n')
| + | |
- | sequence = ''
| + | |
- | for (j=0;j<sensor.length;j++){
| + | |
- | if (sensor[j][0] != '>'){
| + | |
- | appendThis = sensor[j].replace(/[0-9]|\s|\n|\t/g,'')
| + | |
- | sequence = sequence+appendThis
| + | |
- | } else if (sensor[j][0] == '>'){
| + | |
- | sensorName = sensor[j].replace('>','')
| + | |
- | }
| + | |
- | }
| + | |
- | sensorArray[i] = new sensorObject(sensorName,sequence)
| + | |
- | }
| + | |
- | }
| + | |
- | return sensorArray
| + | |
- | }
| + | |
- | | + | |
- | function formatPartsregistryPromoters(){
| + | |
- | promoters = new Array()
| + | |
- | $("input:checkbox[name=promoter]:checked").each(function(){
| + | |
- | promoter = $(this).val().split(':')
| + | |
- | promoters.push(new sensorObject(promoter[0],promoter[2]))
| + | |
- | })
| + | |
- | return promoters
| + | |
- | }
| + | |
- | | + | |
- | function zipIt(){
| + | |
- | var zip = new JSZip();
| + | |
- | zip.add("hello1.txt", "Hello First World\n");
| + | |
- | zip.add("hello2.txt", "Hello Second World\n");
| + | |
- | content = zip.generate();
| + | |
- | location.href="data:application/zip;base64," + content;
| + | |
- | }
| + | |
- | function configuratePlasmid(){
| + | |
- | zipIt()
| + | |
- | addForbiddenSequences()
| + | |
- | backbone = document.plasmidForm.plasmid.value.toLowerCase()
| + | |
- | sensors = document.plasmidForm.sensors.value.toLowerCase()
| + | |
- | methyltransferases = getMethyltransferases()
| + | |
- | zincFingers = getZincFingers()
| + | |
- | linkers = getLinkers()
| + | |
- | mycTags = getMycTags()
| + | |
- | rbs = getRBS()
| + | |
- | terminators = getTerminators()
| + | |
- | plasmidSequence = formatPlasmidInput(backbone)
| + | |
- | memoryPlasmid.setDNA(plasmidSequence)
| + | |
- | sensorArray = formatSensors(sensors)
| + | |
- | promoters = formatPartsregistryPromoters()
| + | |
- | sensorArray = promoters.concat(sensorArray)
| + | |
- | for (i=0;i<sensorArray.length;i++){
| + | |
- | featureArray = new Array()
| + | |
- | featureArray[0] = new feature(memoryPlasmid.dna.length+1,memoryPlasmid.dna.length+sensorArray[i].sequence.length,'Sensor',sensorArray[i].sequence,sensorArray[i].name,sensorArray[i])
| + | |
- | memoryPlasmid.setDNA(memoryPlasmid.dna+sensorArray[i].sequence)
| + | |
- | j = Math.floor((Math.random()*rbs.length))
| + | |
- | featureArray[1] = new feature(memoryPlasmid.dna.length+1,memoryPlasmid.dna.length+rbs[j].sequence.length,'RBS',rbs[j].sequence,rbs[j].description,rbs[j])
| + | |
- | memoryPlasmid.setDNA(memoryPlasmid.dna+rbs[j].sequence+randomDNA(3))
| + | |
- | memoryPlasmid.setDNA(memoryPlasmid.dna+'atg'+randomDNA(10))
| + | |
- | for (j=0;j<zincFingers.length;j++){
| + | |
- | if (checkOccurrence(zincFingers[j].target.toLowerCase(),memoryPlasmid.dna) === true || checkOccurrence(zincFingers[j].sequence.toLowerCase(),memoryPlasmid.dna) === true){
| + | |
- | continue
| + | |
- | } else{
| + | |
- | featureArray[2] = new feature(memoryPlasmid.dna.length+1,memoryPlasmid.dna.length+zincFingers[j].sequence.length,'Zinc Finger',zincFingers[j].sequence,zincFingers[j].description,zincFingers[j])
| + | |
- | memoryPlasmid.setDNA(memoryPlasmid.dna+zincFingers[j].sequence)
| + | |
- | break
| + | |
- | }
| + | |
- | }
| + | |
- | j = Math.floor((Math.random()*linkers.length))
| + | |
- | featureArray[3] = new feature(memoryPlasmid.dna.length+1,memoryPlasmid.dna.length+linkers[j].sequence.length,'Linker',linkers[j].sequence,linkers[j].description,linkers[j])
| + | |
- | memoryPlasmid.setDNA(memoryPlasmid.dna+linkers[j].sequence)
| + | |
- | j = Math.floor((Math.random()*mycTags.length))
| + | |
- | featureArray[4] = new feature(memoryPlasmid.dna.length+1,memoryPlasmid.dna.length+mycTags[j].sequence.length,'Myc Tag',mycTags[j].sequence,mycTags[j].description,mycTags[j])
| + | |
- | memoryPlasmid.setDNA(memoryPlasmid.dna+mycTags[j].sequence)
| + | |
- | j = Math.floor((Math.random()*methyltransferases.length))
| + | |
- | featureArray[5] = new feature(memoryPlasmid.dna.length+1,memoryPlasmid.dna.length+methyltransferases[j].sequence.length,'Methyltransferase',methyltransferases[j].sequence,methyltransferases[j].description,methyltransferases[j])
| + | |
- | memoryPlasmid.setDNA(memoryPlasmid.dna+methyltransferases[j].sequence)
| + | |
- | j = Math.floor((Math.random()*terminators.length))
| + | |
- | featureArray[6] = new feature(memoryPlasmid.dna.length+1,memoryPlasmid.dna.length+terminators[j].sequence.length,'Terminator',terminators[j].sequence,terminators[j].description,terminators[j])
| + | |
- | memoryPlasmid.setDNA(memoryPlasmid.dna+terminators[j].sequence+randomDNA(10))
| + | |
- | memoryPlasmid.addMemoryObject(featureArray[0],featureArray[1],featureArray[2],featureArray[3],featureArray[4],featureArray[5],featureArray[6])
| + | |
- | }
| + | |
- |
| + | |
- | restrictionPlasmid.setDNA(memoryPlasmid.features[1].sequence)
| + | |
- | for (item in memoryPlasmid.memoryObjects){
| + | |
- | featureArray = new Array()
| + | |
- | mtaseStart = restrictionPlasmid.dna.length+1
| + | |
- | mtaseEnd = restrictionPlasmid.dna.length+memoryPlasmid.memoryObjects[item].methyltransferase.featureObject.target.length
| + | |
- | mtaseType = 'Restriction Site'
| + | |
- | mtaseTarget = memoryPlasmid.memoryObjects[item].methyltransferase.featureObject.target.toLowerCase()
| + | |
- | mtaseDescription = memoryPlasmid.memoryObjects[item].methyltransferase.featureObject.description+' restriction site'
| + | |
- | featureArray[0] = new feature(mtaseStart,mtaseEnd,mtaseType,mtaseTarget,mtaseDescription)
| + | |
- | restrictionPlasmid.setDNA(restrictionPlasmid.dna+mtaseTarget)
| + | |
- | zfStart = restrictionPlasmid.dna.length+1
| + | |
- | zfEnd = restrictionPlasmid.dna.length+memoryPlasmid.memoryObjects[item].zincFinger.featureObject.target.length
| + | |
- | zfType = 'Restriction Site'
| + | |
- | zfTarget = memoryPlasmid.memoryObjects[item].zincFinger.featureObject.target
| + | |
- | zfDescription = memoryPlasmid.memoryObjects[item].zincFinger.featureObject.description+' restriction site'
| + | |
- | featureArray[1] = new feature(zfStart,zfEnd,zfType,zfTarget,zfDescription)
| + | |
- | restrictionPlasmid.setDNA(restrictionPlasmid.dna+mtaseTarget)
| + | |
- | restrictionPlasmid.mtaseTarget = featureArray[0]
| + | |
- | restrictionPlasmid.zfTarget = featureArray[1]
| + | |
- | }
| + | |
- | genbank()
| + | |
- | }
| + | |
- | | + | |
- | </script> | + | |
- | </head>
| + | |
| </html> | | </html> |
- | <div id="main-content">
| |
- | {{Team:Amsterdam/toolForm}}
| |
- | </div>
| |
| {{Team:Amsterdam/Foot}} | | {{Team:Amsterdam/Foot}} |