Esempio n. 1
0
def kmeans(task):
    connection.close()
    start = datetime.datetime.now()

    # import the file to the local SequenceDb
    sequences = Sequence.objects.all()

    profiles = []
    seqOut = []
    for sequence in sequences:
        profiles.append(np.array(sequence.dna))
        seqOut.append(sequence)

    results, error, nfound = kcluster(
        profiles,
        nclusters = task.params['ncluster'],
        mask=None,
        weight=None,
        transpose=0,
        npass=task.params['npass'],
        method=task.params['method'],
        dist=task.params['distance'],
        initialid=None)

    # save the results
    connection.close()

    stop = datetime.datetime.now()

    task.running = False
    task.duration = stop - start
    task.save()

    service = ResultService()
    service.buildResult(task, results, seqOut)
Esempio n. 2
0
    def get(self, request, id):
        task = Task.objects.get(pk=id)

        service = ResultService()
        data = service.getRefDbString(task)
        response = HttpResponse(data, content_type='application/text')
        response['Content-Disposition'] = 'attachment; filename="refdb-task-'+str(task.id)+'.tup"'
        return response
Esempio n. 3
0
    def get(self, request, id):
        task = Task.objects.get(pk=id)
        result = Result.objects.get(task__pk=task.pk)

        # ensure there is a refdb file created
        service = ResultService()
        clusters = service.loadClusters(result)

        return render(request, self.template_name, {
            'task': task,
            'result': result,
            'clusters': clusters
        })
Esempio n. 4
0
def dbscan(task):
    connection.close()
    start = datetime.datetime.now()

    # import the file to the local SequenceDb
    sequences = Sequence.objects.all()

    profiles = []
    seqOut = []
    for sequence in sequences:
        profiles.append(np.array(sequence.dna))
        seqOut.append(sequence)

    algorithm = DBSCAN(eps=task.params['eps'], min_samples=task.params['min_samples'], metric=task.params['metric'])
    results = algorithm.fit(profiles)

    """
    rewrite the -1 labeled sequences to new clusters with size 1
    to make it compairable with kmeans results
    """
    # get the last cluster index
    idx = np.amax(results.labels_) + 1
    labels = []
    for label in results.labels_:
        if label == -1:
            labels.append(idx)
            idx += 1
        else:
            labels.append(label)

    labels = np.array(labels)

    # save the results
    connection.close()

    stop = datetime.datetime.now()

    task.duration = stop - start
    task.save()

    service = ResultService()
    service.buildResult(task, labels, seqOut)
Esempio n. 5
0
    def get(self, request, id):
        task = Task.objects.get(pk=id)

        service = ResultService()
        data = service.getJsonString(task)
        return HttpResponse(data, content_type='application/json')