Example #1
0
def cut(board, spectrum, n):
    global watch

    scores = [(x, util.Score(util.cyclicSpectrum(x), spectrum)) for x in board]
    res = []
    minS = 0
    for x, s in sorted(scores, key=lambda k: -k[1]):
        if len(res) <= n or minS == s:
            res.append(x)
            minS = s
    return res
Example #2
0
parentMass = max(spectrum)

leaderPeptides = []
leaderboard = [[]]
leaderScore = 0
loopNumber = 1
while len(leaderboard) > 0:
    print 'Iteration ' + str(loopNumber)
    loopNumber += 1

    print 'Leader board size: %d, found: %d, score: %d' % (len(leaderboard), len(leaderPeptides), leaderScore)
    leaderboard = util.expandList(leaderboard, alphabet)
    new_leaderboard = []
    for p in leaderboard:
        mass = sum(p)
        score = util.Score(util.cyclicSpectrum(p), spectrum)
        if mass == parentMass:
            if score > leaderScore:
                leaderPeptides = [p]
                leaderScore = score
            elif score == leaderScore:
                leaderPeptides.append(p)
            new_leaderboard.append(p)
        elif mass < parentMass:
            new_leaderboard.append(p)
    leaderboard = cut(new_leaderboard, spectrum, N)

print 'found: %d, score: %d' % (len(leaderPeptides), leaderScore)
print ' '.join(['-'.join([str(y) for y in x]) for x in leaderPeptides])
Example #3
0
import util

target = [int(q) for q in '147-99-114-57-129-87-71-137-87-101-129-147-57'.split('-')]
spectrum = [int(q) for q in
            '672 669 1075 761 690 464 579 344 841 1142 1291 633 1204 438 474 882 399 853 879 301 637 766 303 1275 985 216 595 113 781 668 1191 1086 1249 458 87 273 601 1248 486 1176 729 511 417 975 546 224 1261 1116 682 596 71 214 938 87 295 1275 1138 966 1174 367 568 725 759 1233 816 1305 1263 896 658 129 1215 300 396 924 325 287 0 1067 171 945 1089 466 704 1154 434 881 1158 1305 995 898 99 580 1199 276 382 158 612 1029 509 693 851 603 928 186 767 888 1037 805 270 57 963 295 521 204 1092 680 360 876 377 783 208 147 794 1146 387 1225 483 980 1148 480 137 1061 581 246 188 417 750 101 694 1018 481 904 333 945 1067 1059 57 213 1362 1002 424 114 163 1149 1062 220 782 557'.split(
                ' ')]
spectrum.sort()

linear = []
cyclic = []
for i in range(len(target)):
    t = target[:i]
    linear.append(util.Score(util.linearSpectrum(t), spectrum))
    cyclic.append(util.Score(util.cyclicSpectrum(t), spectrum))

print 'Linear' + str(linear)
print 'Cyclic' + str(cyclic)