示例#1
0
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)
示例#2
0
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)
示例#3
0
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
示例#5
0
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
示例#6
0
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
示例#7
0
    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
示例#8
0
 def testSampleFilePath(self):
     path = StorageRequestHandler.GetFastaFilePath('hg18', 'chrY-sample', 1)
     print path
     self.assertNotEqual(None, path, "Didn't return a path")
示例#9
0
 def getFastaFilePath(self):
     return StorageRequestHandler.GetFastaFilePath(self.specimen,
                                                   self.chromosome,
                                                   self.start)
示例#10
0
def taxonomy(request):
    json_response = "currentTaxonomy = " + json.dumps(
        StorageRequestHandler.GetTreeList())
    return HttpResponse(json_response, content_type="application/json")