def Upload(request): status = None message = "" if request.is_ajax() or request.method == 'POST': # form = uploadFileForm(request.POST, request.FILES) if request.method == 'POST': genomeInfo = { 'kingdom': request.POST.get('Kingdom', u''), 'class': request.POST.get('Class', None), 'genus': request.POST.get('Genus', None), 'species': request.POST.get('Species', None), 'specimen': request.POST.get('specimenName', "Unknown"), 'genomeName': request.POST.get('genomeName', None), 'source': request.POST.get('source', None), 'dateSequenced': request.POST.get('dateSequenced', None), 'description': request.POST.get('description', None), 'isPublic': request.POST.get('isPublic', False), 'chromosome': request.POST.get('chromosomeName', None) } filePath = StorageRequestHandler.HandleUploadedFile( request.FILES['file'], genomeInfo, request.user) uploads = StorageRequestHandler.GetUserImports(request.user).distinct() return render(request, 'uploadStatus.json', {'uploads': uploads}, content_type="application/json") context = { 'status': status, 'message': message, 'existingSpecimens': StorageRequestHandler.GetTreeList(request.user) } return render(request, 'upload.html', context)
def index(request): if request.user.is_authenticated(): chromosomes = FastaFiles.objects.filter( Q(Public=True) | Q(User=request.user)) else: chromosomes = FastaFiles.objects.filter(Public=True) specimenNames = chromosomes.values('Specimen__Name').distinct() specimenNames = [ n.values()[0] for n in specimenNames if n.values()[0] != "businesscard" ] specimens = Specimen.objects.filter(Name__in=specimenNames) if request.GET.get('user'): specimens = specimens.filter(fastafiles__User__email=request.GET.get( 'user')).distinct() #only return uploads from specified user if request.GET.get('kingdom'): specimens = specimens.filter( Kingdom__iexact=request.GET.get('kingdom')) if request.GET.get('class'): specimens = specimens.filter(Class__iexact=request.GET.get('class')) if request.GET.get('genus'): specimens = specimens.filter(Genus__iexact=request.GET.get('genus')) if request.GET.get('species'): specimens = specimens.filter( Species__iexact=request.GET.get('species')) tree = StorageRequestHandler.GetTreeList(request.user) context = {'specimens': specimens, 'tree': tree} return render(request, 'index.html', context)
def readFile(state): # assert isinstance(state, RequestPacket) try: filePath = StorageRequestHandler.GetFastaFilePath(state.specimen, state.chromosome, state.start) if state.scale < 100000: # TODO: this is set really high right now for testing. Originally 10 print "opening file ", filePath, " for ", state.specimen, state.chromosome, str(state.start) if not filePath: return None result = None with open(filePath, 'r') as rawFile: result = rawFile.read() return result # print 'Opened File' # # for line in rawFile: # 1MB chunks at a time # collection.append( line ) # # seq = ''.join(collection) # return seq #FastaFile(seq) except IOError: print "Couldn't open file. Maybe it doesn't exist." return None
def tryGetGraphPNG(state): fileName = StorageRequestHandler.GetPngFilePath(state) try: data = open(fileName, 'rb').read() print "Found cached file: ", fileName return data except: return None
def precomputeRepeatMap(request): os.environ.setdefault("DJANGO_SETTINGS_MODULE", "SkittleTree.settings") from SkittleCore import GraphRequestHandler from DNAStorage import StorageRequestHandler specimen = request[0] dbSpecimen = StorageRequestHandler.GetSpecimen(specimen) chromosomes = StorageRequestHandler.GetRelatedChromosomes(dbSpecimen) for chromosome in chromosomes: length = StorageRequestHandler.GetChromosomeLength(specimen, chromosome) chunks = range(1, length + 1, 2 ** 16) for targetIndex in range(request[2], len(chunks), request[1]): start = chunks[targetIndex] state = makeRequestPacket(specimen, chromosome, start) print "Computing: ", state.specimen, state.chromosome, state.start GraphRequestHandler.handleRequest(state) print "Done computing ", state.specimen, state.chromosome, state.start
def precomputeAnyGraph(request): os.environ.setdefault("DJANGO_SETTINGS_MODULE", "SkittleTree.settings") from SkittleCore import GraphRequestHandler from DNAStorage import StorageRequestHandler specimen = request[2] # chromosomes = StorageRequestHandler.GetRelatedChromosomes(specimen) for chromosome in ['chrY']: #chromosomes: length = StorageRequestHandler.GetChromosomeLength(specimen, chromosome) chunks = [1] #range(1, length+1, 2**16)[-7:] for targetIndex in range(request[1], len(chunks), request[0]):#this loop divies up the jobs by PID according to modulo nProcessors start = chunks[targetIndex] state = makeRequestPacket(specimen, chromosome, start, request[3], request[4]) print "Computing: ", state.specimen, state.chromosome, state.start GraphRequestHandler.handleRequest(state) print "Done computing ", state.specimen, state.chromosome, state.start
def readAndAppendNextChunk(self, addPadding=False): assert StorageRequestHandler.GetFastaFilePath( self.specimen, self.chromosome, 1) is not None, "Specimen and Chromosome is not in the database" startBackup = self.start if not self.seq: self.seq = '' #ensure that seq is at least a string object self.start = self.start + len( self.seq) # jump to the end of the current sequence (+ chunkSize) #print "Requesting",self.specimen, self.chromosome, self.start sequence = readFile( self ) # see if there's a file that begins where you end, this will stop on a partial file if sequence is not None: self.seq = self.seq + sequence #append two sequences together elif addPadding: self.seq = self.seq + ('N' * chunkSize) self.start = startBackup self.length = len(self.seq) return self
def testSampleFilePath(self): path = StorageRequestHandler.GetFastaFilePath('hg18', 'chrY-sample', 1) print path self.assertNotEqual(None, path, "Didn't return a path")
def getFastaFilePath(self): return StorageRequestHandler.GetFastaFilePath(self.specimen, self.chromosome, self.start)
def taxonomy(request): json_response = "currentTaxonomy = " + json.dumps( StorageRequestHandler.GetTreeList()) return HttpResponse(json_response, content_type="application/json")