def generateVantagePointsWithManyAlgorithm(options):
    numberOfData = options['numberOfData']
    dim = options['numberOfDimension']
    numberOfVP = options['numberOfVP']
    cardinality = options['numberOfAlphabet']
    typeOfVP = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))

    vps = []
    vps.append(datas[0])
    while len(vps) < numberOfVP:
        print len(vps)
        ans, ansDataIndex = -1, -1
        for i in xrange(len(datas)):
            ok = False
            for j in xrange(len(vps)):
                if datas[i] == vps[j]:
                    ok = True
            if ok:
                continue
            vps.append(datas[i])
            cur = calculateMany(vps)
            if cur > ans:
                ans, ansDataIndex = cur, i
            vps = vps[:-1]
        vps.append(datas[ansDataIndex])
    utils.writeDataToFile(
        'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP),
        vps)
Esempio n. 2
0
def generateVantagePointsWithPattern(options):
    numberOfData = options['numberOfData']
    dim = options['numberOfDimension']
    numberOfVP = options['numberOfVP']
    cardinality = options['numberOfAlphabet']
    typeOfVP = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))
    majorPattern = [[] for i in xrange(numberOfVP)]
    minorPattern = [[] for i in xrange(numberOfVP)]
    for j in xrange(dim):
        d = {}
        for i in xrange(numberOfData):
            if datas[i][j] in d:
                d[datas[i][j]] += 1
            else:
                d[datas[i][j]] = 0
        d = sorted(d.items(), key=lambda x: x[1], reverse=True)
        for k in xrange(numberOfVP):
            majorPattern[k].append(d[k][0])
            minorPattern[k].append(d[-1 - k][0])
    utils.writeDataToFile(
        'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, 'major'),
        majorPattern)
    utils.writeDataToFile(
        'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, 'minor'),
        minorPattern)
def generateVantagePointsWithManyAlgorithm(options):
    numberOfData = options['numberOfData']
    dim          = options['numberOfDimension']
    numberOfVP   = options['numberOfVP']
    cardinality  = options['numberOfAlphabet']
    typeOfVP     = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))

    vps = []
    vps.append(datas[0])
    while len(vps) < numberOfVP:
        print len(vps)
        ans,ansDataIndex = -1,-1
        for i in xrange(len(datas)):
            ok = False
            for j in xrange(len(vps)):
                if datas[i] == vps[j]:
                    ok = True
            if ok:
                continue
            vps.append(datas[i])
            cur = calculateMany(vps)
            if cur > ans:
                ans,ansDataIndex = cur,i
            vps = vps[:-1]
        vps.append(datas[ansDataIndex])
    utils.writeDataToFile('vp/vp_%d_%d_%d_%s.txt'%(dim,numberOfVP,cardinality,typeOfVP),vps)
def generateRandomVP(options):
    numberOfData = options['numberOfData']
    dim = options['numberOfDimension']
    numberOfVP = options['numberOfVP']
    cardinality = options['numberOfAlphabet']
    typeOfVP = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))
    vps = []
    for i in xrange(numberOfVP):
        vps.append(datas[random.randint(0, numberOfData)])

    utils.writeDataToFile(
        'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP),
        vps)
Esempio n. 5
0
def generateVantagePointsWithManyAlgorithm(options):
    numberOfData = options['numberOfData']
    dim = options['numberOfDimension']
    numberOfVP = options['numberOfVP']
    cardinality = options['numberOfAlphabet']
    typeOfVP = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))

    majorPattern = [[] for i in xrange(numberOfVP + 1)]
    for j in xrange(dim):
        d = {}
        for i in xrange(numberOfData):
            if datas[i][j] in d:
                d[datas[i][j]] += 1
            else:
                d[datas[i][j]] = 0
        d = sorted(d.items(), key=lambda x: x[1], reverse=True)
        for k in xrange(1):
            majorPattern[k].append(d[k][0])

    vps = []
    vps.append(majorPattern[0])
    d = [0 for i in xrange(dim + 1)]
    one_pass = True
    threshold = 0
    while len(vps) < numberOfVP:
        print len(vps)
        ans, ansDataIndex = -1, -1
        for i in xrange(len(datas)):
            ok = False
            for j in xrange(len(vps)):
                dist = utils.hammingDistance(datas[i], vps[j])
                if d[dist] > threshold:
                    ok = True
                if datas[i] == vps[j]:
                    ok = True
            if ok:
                continue
            for j in xrange(len(vps)):
                dist = utils.hammingDistance(datas[i], vps[j])
                d[dist] += 1
            vps.append(datas[i])
        threshold += 1

    utils.writeDataToFile(
        'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP),
        vps)
Esempio n. 6
0
def getMajorPattern():
    numberOfData = options['numberOfData']
    dim = options['numberOfDimension']
    numberOfVP = options['numberOfVP']
    cardinality = options['numberOfAlphabet']
    typeOfVP = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))
    rs = [random.randint(0, numberOfData - 1) for i in xrange(100)]
    majorPattern = ''
    for j in xrange(dim):
        d = {}
        for i in rs:
            if datas[i][j] in d:
                d[datas[i][j]] += 1
            else:
                d[datas[i][j]] = 0
        d = sorted(d.items(), key=lambda x: x[1], reverse=True)
        majorPattern += d[0][0]
    return majorPattern
Esempio n. 7
0
def generateVantagePointsWithManyAlgorithm(options):
    numberOfData = options['numberOfData']
    dim = options['numberOfDimension']
    numberOfVP = options['numberOfVP']
    cardinality = options['numberOfAlphabet']
    typeOfVP = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))

    majorPattern = [[] for i in xrange(numberOfVP + 1)]
    for j in xrange(dim):
        d = {}
        for i in xrange(numberOfData):
            if datas[i][j] in d:
                d[datas[i][j]] += 1
            else:
                d[datas[i][j]] = 0
        d = sorted(d.items(), key=lambda x: x[1], reverse=True)
        for k in xrange(1):
            majorPattern[k].append(d[k][0])

    vps = []
    vps.append(majorPattern[0])
    while len(vps) < numberOfVP:
        print len(vps)
        ans, ansDataIndex = -1, -1
        for i in xrange(len(datas)):
            ok = False
            for j in xrange(len(vps)):
                if datas[i] == vps[j]:
                    ok = True
            if ok:
                continue
            vps.append(datas[i])
            cur = calculateMany(vps)
            if cur > ans:
                ans, ansDataIndex = cur, i
            vps = vps[:-1]
        vps.append(datas[ansDataIndex])
    utils.writeDataToFile(
        'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP),
        vps)
def generateVantagePointsWithPattern(options):
    numberOfData = options['numberOfData']
    dim          = options['numberOfDimension']
    numberOfVP   = options['numberOfVP']
    cardinality  = options['numberOfAlphabet']
    typeOfVP     = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))
    majorPattern = [ [] for i in xrange(numberOfVP) ]
    minorPattern = [ [] for i in xrange(numberOfVP) ]
    for j in xrange(dim):
        d = {}
        for i in xrange(numberOfData):
            if datas[i][j] in d:
                d[datas[i][j]] += 1
            else :
                d[datas[i][j]] = 0
        d = sorted(d.items(), key=lambda x: x[1], reverse=True)
        for k in xrange(numberOfVP):
            majorPattern[k].append(d[k][0])
            minorPattern[k].append(d[-1-k][0])
    utils.writeDataToFile('vp/vp_%d_%d_%d_%s.txt'%(dim,numberOfVP,cardinality,'major'),majorPattern)
    utils.writeDataToFile('vp/vp_%d_%d_%d_%s.txt'%(dim,numberOfVP,cardinality,'minor'),minorPattern)
Esempio n. 9
0
#!/usr/bin/python
#-*- coding:utf-8 -*-
import utils
import os
import string

if __name__ == '__main__':
    utils.createDirectory('figure')
    options = utils.getOptions()

    dataFileName = utils.getDataFileName(options)
    vpFileName = utils.getVPFileName(options)
    datas = utils.getDataInFile(dataFileName)
    vps = utils.readDataFromFile(vpFileName)

    curDatas = datas
    for i in xrange(len(vps)):
        print i
        n = len(curDatas)
        x = [[] for j in xrange(len(vps[i]) + 1)]
        for j in xrange(n):
            nextPosition = utils.hammingDistance(vps[i], curDatas[j])
            x[nextPosition].append(j)
        mx, position = (0, 0)
        xp = []
        yp = []
        for j in xrange(len(vps[i]) + 1):
            xp.append(j)
            yp.append(len(x[j]))
            if mx < len(x[j]):
                mx, position = (len(x[j]), j)
Esempio n. 10
0
#!/usr/bin/python
#-*- coding:utf-8 -*-
import utils
import os
import string
import numpy as np

if __name__ == '__main__':
    utils.createDirectory('figure_pair')
    options = utils.getOptions()
    dim     = options['numberOfDimension']

    dataFileName    = utils.getDataFileName(options)
    vpFileName      = utils.getVPFileName(options)
    datas           = utils.getDataInFile(dataFileName)
    vps             = utils.readDataFromFile(vpFileName)

    for i in xrange(len(vps)):
        for j in xrange(i+1,len(vps)):
            cc = utils.calculateCorrelationCoefficient(vps[i],vps[j],datas)
            cc = abs(cc)
            imageFileName = utils.getFigurePairName(options,i,j,cc)
            print imageFileName
            if os.path.exists(imageFileName):
                print '%s is exists'%imageFileName
                continue
            xp = []
            yp = []
            zp = []
            zcnt = [ [ 0 for ii in xrange(dim+1) ] for jj in xrange(dim+1) ]
            for k in xrange(len(datas)):
Esempio n. 11
0
def generateVantagePointsWithHybridAlgorithm(options):
    numberOfData = options['numberOfData']
    dim = options['numberOfDimension']
    numberOfVP = options['numberOfVP']
    cardinality = options['numberOfAlphabet']
    typeOfVP = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))

    majorPattern = [[] for i in xrange(numberOfVP + 1)]
    for j in xrange(dim):
        d = {}
        for i in xrange(numberOfData):
            if datas[i][j] in d:
                d[datas[i][j]] += 1
            else:
                d[datas[i][j]] = 0
        d = sorted(d.items(), key=lambda x: x[1], reverse=True)
        for k in xrange(1):
            majorPattern[k].append(d[k][0])

    vps = []
    vps.append(majorPattern[0])
    d = [0 for i in xrange(dim + 1)]
    one_pass = False
    while len(vps) < numberOfVP:
        print len(vps)
        ans, ansDataIndex = -1, -1
        if one_pass:
            for i in xrange(len(datas)):
                ok = False
                for j in xrange(len(vps)):
                    dist = utils.hammingDistance(datas[i], vps[j])
                    if d[dist] > 1:
                        ok = True
                    if datas[i] == vps[j]:
                        ok = True
                if ok:
                    continue
                for j in xrange(len(vps)):
                    dist = utils.hammingDistance(datas[i], vps[j])
                    d[dist] += 1
                vps.append(datas[i])
            one_pass = False
        else:
            change = False
            for i in xrange(dim + 1):
                if d[i] == 0:
                    change = True
                    ans, ans_vp = -1, ''
                    fx = 987654321
                    for j in xrange(len(vps)):
                        cur_vp = generateVpWithDist(dim, cardinality, vps[j],
                                                    i)
                        vps.append(cur_vp)
                        cur, dists = calculateMany(vps)
                        if cur > ans:
                            ans, ans_vp = cur, cur_vp
                            fx = max(dists)
                        elif cur == ans:
                            if max(dists) < fx:
                                ans, ans_vp = cur, cur_vp
                                fx = max(dists)
                        vps = vps[:-1]
                    for j in xrange(len(vps)):
                        dist = utils.hammingDistance(vps[j], ans_vp)
                        d[dist] += 1
                    vps.append(ans_vp)
                    break
            if not change:
                vps.append(datas[random.randrange(0, numberOfData)])

    utils.writeDataToFile(
        'vp/vp_%d_%d_%d_%s.txt' % (dim, numberOfVP, cardinality, typeOfVP),
        vps)
def generateVantagePointsWithManyAlgorithm(options):
    numberOfData = options['numberOfData']
    dim = options['numberOfDimension']
    numberOfVP = options['numberOfVP']
    cardinality = options['numberOfAlphabet']
    typeOfVP = options['typeOfVP']
    datas = utils.getDataInFile(utils.getDataFileName(options))
    threshold = 2

    majorPattern = []
    for j in xrange(dim):
        d = {}
        for i in xrange(numberOfData):
            if datas[i][j] in d:
                d[datas[i][j]] += 1
            else:
                d[datas[i][j]] = 0
        d = sorted(d.items(), key=lambda x: x[1], reverse=True)
        majorPattern.append(d[0][0])

    vps = []
    vps.append(majorPattern)
    d = [0 for i in xrange(dim + 1)]
    isSelected = [False for i in xrange(len(datas))]
    for i in xrange(len(datas)):
        if datas[i] == majorPattern:
            isSelected[i] = True
    notChangedCount = 0
    while len(vps) < numberOfVP:
        print len(vps)
        changed = False
        for i in xrange(len(datas)):
            if isSelected[i]:
                continue
            is_pass = False
            for j in xrange(len(vps)):
                if datas[i] == vps[j]:
                    is_pass = True
                dist = utils.hammingDistance(datas[i], vps[j])
                if d[dist] > threshold:
                    is_pass = True
            if is_pass:
                continue
            for j in xrange(len(vps)):
                dist = utils.hammingDistance(datas[i], vps[j])
                d[dist] += 1
            vps.append(datas[i])
            isSelected[i] = True
            changed = True
        if not changed:
            print 'not changed so pop worst (%d)' % notChangedCount
            worstIdx = getWorstVP(vps)
            for j in xrange(len(vps)):
                if j == worstIdx: continue
                dist = utils.hammingDistance(vps[j], vps[worstIdx])
                d[dist] -= 1
            nextVPS = popDataAtIndex(vps, worstIdx)
            vps = nextVPS
            notChangedCount += 1
            if notChangedCount > numberOfVP / 2:
                notChangedCount = 0
            for k in xrange(notChangedCount - 1):
                worstIdx = getWorstVP(vps)
                for j in xrange(len(vps)):
                    if j == worstIdx: continue
                    dist = utils.hammingDistance(vps[j], vps[worstIdx])
                    d[dist] -= 1
                nextVPS = popDataAtIndex(vps, worstIdx)
                vps = nextVPS

        print len(vps)
        print d