Beispiel #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)
Beispiel #2
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)