-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathw_5.py
172 lines (136 loc) · 35.4 KB
/
w_5.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
from w_4 import *
integer_masses = dict(zip(AA, AW))
def peptide_score(peptide,spectral_vector):
masses = [integer_masses[acid] for acid in peptide]
path = []
s = 0
for i in range(0, len(masses)):
#print(i, peptide)
s += masses[i]
path.append(s)
#print(path)
score = sum([spectral_vector[x - 1] for x in path])
return score
def peptide_identification(spectral_vector, proteome):
current_peptide = ''
max_score = float('-Inf')
proteome_to_mass = [integer_masses[acid] for acid in proteome]
sum_of_masses = [sum(proteome_to_mass[:i]) for i in range(len(proteome_to_mass)+1) ]
n = len(spectral_vector)
substring_masses = []
for i in range(len(proteome_to_mass)):
required_mass = proteome_to_mass[i]
for j in range(i + 1, len(proteome_to_mass)):
required_mass += proteome_to_mass[j]
if required_mass == n:
#print(required_mass)
substring_masses.append((i, j))
break
substrings = []
for tup in substring_masses:
substrings.append(proteome[tup[0]: tup[1] + 1])
#print(substrings)
for sub in substrings:
score = peptide_score(sub, spectral_vector)
#print(score, sub)
if score > max_score:
max_score = score
current_peptide = sub
return current_peptide, max_score
def psm_input(file):
spectral_vectors = []
read = open(file)
for line in read:
spectral_vector = line.split(' ')
spectral_vector = list(map(int, spectral_vector))
spectral_vectors.append(spectral_vector)
return spectral_vectors
def psm_search(spectral_vectors, proteome, threshold):
psm_set = []
for spectral_vector in spectral_vectors:
peptide, score = peptide_identification(spectral_vector, proteome)
#print(peptide, score)
if score >= threshold:
psm_set.append(peptide)
return psm_set
def spectral_dictionary(spectral_vector, threshold, max_score):
m = len(spectral_vector)
size = []
for i in range(m+1):
l = []
for j in range(max_score + 1):
l.append(0)
size.append(l)
size[0][0] = 1
#size = np.array(size)
for i in range(m+1):
if i == 0:
continue
for j in range(max_score + 1):
for acid in integer_masses:
#print(acid)
#print(i - integer_masses[acid], j - spectral_vector[i])
if (i-integer_masses[acid]) >= 0 and (j-spectral_vector[i-1]) >= 0 and (j - spectral_vector[i-1]) <= max_score:
size[i][j] += size[i - integer_masses[acid]][j - spectral_vector[i-1]]
#return size
dictionary_size = 0
for j in range(threshold, max_score + 1):
dictionary_size += size[m][j]
return dictionary_size
def probability_spectral_dictionary(spectral_vector, threshold, max_score):
m = len(spectral_vector)
probs = []
for i in range(m+1):
l = []
for j in range(max_score + 1):
l.append(0)
probs.append(l)
probs[0][0] = 1
#size = np.array(size)
for i in range(m+1):
if i == 0:
continue
for j in range(max_score + 1):
for acid in integer_masses:
#print(acid)
#print(i - integer_masses[acid], j - spectral_vector[i])
if (i-integer_masses[acid]) >= 0 and (j-spectral_vector[i-1]) >= 0 and (j - spectral_vector[i-1]) <= max_score:
probs[i][j] += ((probs[i - integer_masses[acid]][j - spectral_vector[i-1]])/20)
#return size
p = 0
for j in range(threshold, max_score + 1):
p += probs[m][j]
return p
spectral_vector = '-8 -10 11 5 12 14 14 11 -5 -6 -7 -5 6 -7 2 14 -10 11 4 -5 15 -2 -5 11 14 2 -10 -8 -7 -9 -8 15 -4 -5 -8 14 10 5 -5 1 12 2 0 -1 -5 12 5 15 9 1 -10 -2 -3 -3 12 14 7 15 14 7 13 -4 10 11 12 8 6 -8 2 -9 10 15 -3 5 13 4 -10 13 -3 9 15 -3 13 -1 10 8 -9 3 7 -10 -5 3 -8 -10 -1 13 7 5 -5 8 -3 11 6 9 -2 9 9 8 12 15 8 8 -9 9 -3 -8 13 13 7 4 -3 7 -3 7 -8 6 -10 -6 12 6 -5 -1 4 -1 0 -4 11 -2 -10 4 -8 -8 3 0 -4 10 -1 -7 7 -5 9 -1 1 10 4 -1 13 -5 14 -9 -6 -4 15 14 9 15 10 -8 0 9 -8 -2 15 14 -9 -3 9 -9 -8 5 6 12 3 -9 7 -1 5 5 -8 -7 -9 -2 -4 -9 10 2 5 7 14 -9 10 3 -5 -3 0 7 6 15 9 -5 -1 1 -8 -4 -6 1 4 -5 10 1 0 15 -1 13 -3 -2 6 9 6 13 7 15 9 12 6 -4 15 9 2 14 0 7 -9 8 4 14 0 -6 12 5 -10 14 -4 14 8 0 3 10 8 8 13 7 15 -1 -9 11 -3 -2 -7 6 -9 1 1 -2 1 2 12 -9 7 6 0 -8 11 7 13 11 5 9 2 -5 7 1 11 0 -6 15 9 -7 -1 -4 -1 10 11 -3 8 -10 -10 11 4 7 2 1 3 7 -6 13 -3 -1 8 11 -3 -5 -7 -7 -3 -7 -7 -3 6 -5 1 3 1 -9 -3 12 12 -7 1 2 -4 13 10 -3 15 13 15 14 4 2 -3 -5 -6 0 0 -2 4 -10 12 -10 -9 11 12 -6 6 -7 -4 10 8 -9 9 5 7 15 7 -5 0 9 10 0 -4 8 -3 10 11 13 2 4 10 8 9 0 -10 -2 12 -8 6 8 2 -2 1 11 -10 1 8 -8 -3 14 6 -6 4 -8 9 0 9 -2 -1 12 7 7 -8 -1 -9 10 15 4 2 11 4 -9 5 9 -8 2 -1 -5 0 6 -7 2 6 -9 0 -1 9 0 -3 4 -8 -7 -10 13 7 3 -6 6 3 -9 7 -10 2 13 -5 11 3 -9 12 10 6 11 5 1 15 -5 9 14 14 -1 15 14 15 5 -8 5 -10'
spectral_vector = spectral_vector.split(' ')
spectral_vector = list(map(int, spectral_vector))
threshold = 31
max_score = 200
print(probability_spectral_dictionary(spectral_vector, threshold, max_score))
'''
spectral_vector = '-1 -8 0 6 -3 3 4 1 9 -10 -3 4 -2 8 3 -4 10 -6 12 0 -3 -8 1 -10 -6 13 -3 -9 -5 3 9 -7 6 -3 -10 3 -6 -4 3 7 10 14 -2 11 -6 15 -8 -6 -7 10 -8 -2 13 -1 -4 -4 12 -8 8 2 -9 3 9 4 15 11 2 12 -6 -9 14 -7 -4 13 -9 15 0 -2 9 7 1 7 1 2 -1 8 7 4 -5 0 -9 4 -3 14 3 -10 -2 -7 -6 -2 -9 -4 1 7 -7 6 2 8 -2 -10 -2 -10 14 -7 -6 -5 7 15 -3 14 -8 -4 9 -4 8 -9 10 13 8 8 5 13 11 -8 12 -7 8 9 12 -1 14 -6 10 0 15 11 -5 -7 3 10 5 9 10 -5 12 10 10 2 1 -5 8 4 -10 -3 15 11 14 14 0 10 12 0 -6 -6 -2 14 -3 6 -7 11 -10 14 7 -8 14 -5 15 -5 0 -1 1 11 8 -9 -3 7 -6 12 0 -5 -3 13 4 11 2 1 9 -9 13 0 -10 -10 15 -4 3 4 -10 1 14 6 7 9 12 14 5 0 8 -2 -8 -5 -7 3 -10 -2 -9 3 3 14 -8 9 -5 4 -4 -9 -4 7 9 9 -2 4 5 -7 -4 2 -5 -5 10 7 -8 7 -3 -7 -2 -10 1 11 6 10 10 11 11 14 3 15 -6 4 -3 3 9 8 15 1 8 3 -1 14 -1 11 4 0 -8 6 4 4 3 3 10 -3 10 0 -6 -7 0 7 0 -3 4 6 15 0 -10 12 10 1 5 14 8 -2 1 -9 1 -7 14 -4 13 9 3 7 -4 3 8 14 1 -3 5 -2 14 9 10 -2 5 7 2 9 15 14 13 6 10 -8 15 -5 2 10 6 9 6 2 2 -5 -2 -3 10 7 -3 -10 -1 1 9 12 -2 -5 12 13 4 15 -3 10 -4 12 9 9 -1 -4 6 -9 -5 9 5 -9 -10 13 -2 11 15 5 -3 2 11 -1 6 14 -10 -5 12 -6 7 9 3 6 3 9 -7 8 14 7 -7 12 -2 9 -1 12 -1 9 6 -8 -4 7 11 9 -4 8 11 -3 12 9 8 6 -6 15 -4 -3 -8 9 -8 -8 -9 -5 14 0 0 -6 8 10 7 9 -5 -5 -4 9 -7 -4 5 -5 -4 5 -2 0 12 2 10 -7 -9 2 5 1 13 15 -3 11 7 6 12 2 -3 3 -3 12 -9 4 15 -2 15 2 12 -7 11 2 11 -7 4 -6 -8 6 -5'
spectral_vector = spectral_vector.split(' ')
spectral_vector = list(map(int, spectral_vector))
threshold = 37
max_score = 200
print(spectral_dictionary(spectral_vector, threshold, max_score))
'''
'''
file = 'psm.txt'
spectral_vectors = psm_input(file)
threshold = 135
#proteome = 'LSPELPHVPKTIHKKILQCKFADFDSKTMGVITQSCPGCAKMGCLFNYIRITLNQCHEWFHFNGRIHCVCWYGVMDFYVMATQHVIGFAPVFQSNPIIARCSIRNAPTPYFGFVMQPNIMDDFKWHWVLEITSWLDQQMNPCHDEQVSPRCCPELPLKWGNFEKMWRFGFSNSWPFGVTQVQEKDEYAPHIGYWRYLGGMRCCSSRLNSEAPRPYSWMWVWLIIIFTLCYTHIKIRELPRVPSCKFEPWMYRLDLLGQASMEPTMCPRQVQMWSLICRTGCGWPLKFNLFRNFWSRPWTENHMQNQQRSPEKMWGADYARMGIAMGNARIKKEVRWKCDRATEFPETWAENRVDYCDVVAGRNGGMFIWGFKKKNISSLINTHNILNKYEVTCYACQHTKILYIFFVPGSCHYDVCKAYEQQYDKFAGYWMWQLTWMDDNFSILPDVGQWMGDKGEGGAIPDFHQPGRMPYNQYMKNIRDSYPTIYLKLFPCMKYNWYGEAKASYLCHCPAWCFGQNYKPAISTRIAVGPDPSCPVAMDKELFMALDECCTIFKMGEMQWTKKRFSKHCNAKCMQSRCCLSGRYPAKCYPNQDCALDVGLACLYGQDWWQFPPQNLKHNCRLAPFMNKCFYIDGYLMADCQNYMLMHMVETGSAGGNYCIFMCPMRHSGLQEMILVQIKVGLCAAIDVPLPAIGYFHCASWRWAAQGYHSCGYFSRVLGFMQQMYCRRTWPIANSIFDGRYTRPEQWAHYITQAFEAHDPRHCRMMAGFTMERTSKDQIHNNDICCFAMYLVIIHFHYEEADRSIIVFAQYLRPSKQCGFCGHCWGFYAYCFKDFLCFPIATQGGTYQCGKSKETFQHYSVYTIRNTSLFLTGKTAWIHGWNAFVEREDYCRFSNDVFCIWKMFFLSPDHEHRQDVQHEFCWRFYMKQAKEKWSGQITIVIANDFAWWGNHVFVYQCKEEQCQERHGQDQKWCHPIYCYYEYHTIEGMRRMPVPTAECPTLKCNEVKNPDSWFTTKETQHINWHEYNMSMLNVNPNQQTMNEVRDDTHKCACVGAAYDFITQLLPKMQQSCMKHHNQGHHQKCREWVTCFYEYKRFVLTKGHHLTRICTCCCEKLNFRWCNRMHHVWAKEPHWEEAVRTDNDRIRILYYHEFDNSADKNNVRRKPFVYRFFLAVFIFIASSLNNHDDFGYGVMALQYGMYKMARNKIQGFRANNKNGSNSNQINQGWCPQYTEDCTLGTEWVAAKHAYYPAHNYRISRHTTHEFVVYQIGVESIAQIMVEYTVHGHIMWDTNADWPFTYPTPWWMMAIQGQQHIFLYYWTTILLPAHFPKYTFQIFWVHEMMYHCEEHFEVLRHGCHLYSNQTVVSRGIPYSVWKDSETSMLWQDILWSYIVEIRSTALRFRFKQGFACREQQALNPHFKIDNSHIYKEEADIFGWVFHDSKCYHPGFKMINYQTYRHANSTKFDPVPSGMQNIVNKQVTYTDWSGSAPHQTPGQGRWTLSHGNYWMIYCLYLEKKTIHVMQWGELLSAMDNPWPERNKNHKQHNCLDQVYDMDVQQQAEVDVLPPYVSYFQGTRWGWRASNTRTVLQTEEDCTAFPHDYKGLYRYKTNPAKLLYMERHTLAAASNIYVMILTRPFFSIKSAPDMHIEKYFMIVHDQLLMFAVPHIPRNLRIRVPCEEACVCHRHEHCISAYAIRLKRFHWEPVQADMCRPCQACTGKAFGDTVPYAQTSGKRPIETWVLNFHFSITCEAEFEGYTCKDPTHPMHMWQMNDHTFTWAVLVGNVSWIQCYMVHHVSPPGLEEVYTSGTKVQELHWSRSYLPPKACTPCGFQCHEVQKFHMTALQRFVQDNVGANIKLDISKNGSKNNHAKHTRGHYGLVNFTVYKEYNGRYLNWQSHMHCGKAGMEHDLNSVLAIIKCHWDFWDEHYQQECFHMMSSLRCNWQPMHCYAQDLHHWQENHADMWIVVAWCVPEQSKAESTPFGPFHNWEGIYIQFCCHQNIVGTCDVCWLQEALDKLDSSVCYIQGWFMWQSAASYWMIPVCQYALDGTRYPTMMCLPFVDTCPFKRKCMENYQWVSSDPNTDRVWNTSFRAMFYSQWQWNYMIPTWVEIYAVDGMTTHSGCHLRSTNYTLQFHRGTNNARCGEYDREFDKCMFKGRNPMLCTAIDKNKCGDMPDNMGFWRMGQCLTWDFIAWDEEGQCWIYQAMSPPMGGFFHTNGPDCSQYQLLKYYYNRWCVFVDEYAEFQQMVFGSENFKRFTVKCCFQDRQLMYFECVNLVRMFIVHHTECLWNVPMMYCQAWDQQTHELQCHVFIRNQHAGTWKKATQTTHDQFGHHDKKHCEHNEMGYASKPQFFSFNDTPRRKCYMAERLQHAHGNVENMLTSDKVAPIIGTMQLFRRFQYEWHFRTETIAIIYEYYTHNSWAMWPFTPTSAMFMPIDDQYITQCDPKEVDHTQKIFDAPVIAAGAHPADGQGVRGPHQIILMVRARQGSKWMVKGFKANEWSTDFMGMMPQVLIVISWANVNGVDVAPRYYLDLWKSTQSSQFPMLFPLTAWAGEGLEVEQWTMVNRLKTMTSLQNLWQHPHHTPHWYWLTETMFVYRQHTDQIENWHSWPFECRNPMREEFAGEVYHIHWRGLNTIYWNKIIPKYCNHPWRVPKTHMRFDHQEHHPPWQWGQSPEFKMYNRAMMCCPHARWAVSIKQRWRVSDMRWAVVCLTLWEYERHYMVDTGEMATWWIQQELFYNDPYVAKQKMARKRHIHKFLSPPDIFCDVKECGTDRQAEHFERKVNRAEQFDMTKYCVPRWWWKISAAQVVAQKYNLRNFCPFHVCTNWIREEKSFICVIGLINFYMNCGIVICITYIGSLNERYGLFCVIVVNGREMEVAIISRWNSYCKMPEELHRVFIRDPIMMETRGADEQDWKSRSWVEYKENDCMHYYQVIGIHMAQNVSVQVNCVPEEKPPASYFFVLYQFENDPRPVECFVCLPPQIDNTGCQSRSPFTPRWPGGEKRDMTWFQPQFWCHEFCEQMYSRMTSDIDTSWKRAEHMLWMGMSVPNEMFPMAYNGYECKAQKNPEWRTRYEITLCDNMKWIHTPRDEDETTVPHLVCPWHDRHPDVRTNGFTKYFFSWFRCCWFPFELPQFDSFHMTDHIYAAKQWKLYSETGHCEDDPDEDWRKGLASFFTLYIQVRAMWMQGEKAMSMRDEFWADQEGMTRHGDLHECKAGSDHVFHMHISGPRGCNSWGNFCKNDSHWATIKWLQLCDQMTYCWQSTITTKKHVFTLEWRQPAFWAVRWFWCYKSPEYAEEPDKLTEMSKMDMLTGANVQRSDFCTGGMTEDMRRHDMDFHCGTTIMCYGPIMHDDLRKQQANLHQSEGHPMMVNGVNKQSYMGQRCQWTLANKQNWELPTLTGTWGPFMHCKKMFNCCTWAKHAEPEPLYWAIREYAHPKQPENNAPVQHWFRHDWFDEPDEKSQQHIASLWRGLDSVPFWWYMAGPNYLDACINLGIYEYDCPNKAMQDTHITNAPTGQQCLMNADPKWRPHFYSMGEWFIIIPIMCFDLNQATPCYKYGLDMIMHFYDIFPVNSGRDTINGGVNRQSQVKVFTPKNMTWYATCLQFSSDTNSETGPVCALDQAQMPKQCPAEEAWQRFMPWYMQHRMRNWPLMWLRQDCKEWRWNRISADMVHMAYRSIWYKCSYMATACTAAWFFHTFKDCMDRYQIYFSFTQHWTTGTHICVALMHDSFFMDEYCNVVYNFITPVPDITDMAEITSGMPFYLVACEPFYKLSFNVGCAHHSTTCFAAGAHVMRKGCHFQIHFYSRMDCTEPQRAAPVCLQQMQPKAVLIHIQKVCSDEVCDGTEDLGQTAATWWQRPMNLRDFGKKFKCMYKRVWWSHIMQQLPVWPCSRCREKWDLIVINYNPCSIKNHSEQSIETKLNWGRLAFDIARVHYANQVTGVCTKMSWTFMSMFSQSGTQTVDDEKNWHASEVMFCITDLCSAMGDFPNWDFNEHQTWCLLPWQQCGVHEYFWVSKKVHKCQDLGGMSCQVVSCGPQLLILKNTLNAHSHKRPTMYKLRCKAADERVHWEIHTIFWQWLKFPHSDLLSEPQMKSSEEQKDVRCWDNICKIGITLMCIGCHRQPKAGITIGFRKSSCAFNQMCPRRNPANHVQVSQWEMISCYFMGKGEGFQQDIASISWGGKVWAQNGMPFCCMCWDVVMNGWLELEWNMWPTLYVEVDYHDRGWKIQALFWHTTEYDPWRDRMPDYQINPHGQPVDYPEAPWYIYPYFPAIPETNCWNQGPAMWHHFGFPWVNNMFINTHMLWFESWLPRDQGEMNYSKTVFLYTPKSESKSWSIYMYTKHATISTGGFLIQFWTWFGCAFKTVNTNTKFRHWNDMPKTWHVGCHKVYMSQIDRWGWKRGTYEIIFCPPCMWIIYYPKHMQTNDLWISYWLHNRHLTKSNEWLPITAETHDWEDVVAWWAGSHGMSCYVTADVVPQTKALWRQIIGEFHSMRHYFGTYNHPCTIDHGYELRRSNILLIQNLYCPFGDQMREEAYGHGCLWRARKILRWFCCVAFILPTESCISVSVFTRNECYCMFHTNTARGERKYTLQPKNFFQMVDPGRGQECYITSPIQYGYWRTPVIHHYHVALLSLEYWIIIVEFGQGWWKWLWPIPSAFYQHMVEAEDDPQRWRQYIDHFFFWVCMLGLRIFAYHERGVQTVWKASTPDIISIRHWCLLDCMQWRNPTQPWVDRASSHHQVIWWQNNAKMQFFSNNHTHTGFRLCRLPHGGEMVIVMQTGLACDQWGVVSDDNQRKTTYKDESMCTLIMTVTFGQMTTNKYLYMMRHCETGASEHVRQYRKDARVTATFIWVWMTYFIMQWYLPMMYPHGMYYKLTPLCWEFMMGYPHTWYSKIICCINWEAEHHLVWMLRDYGHEPFAITYGNVPENMGKKNNIFYCMPVIMPNIQNAGCAPRVAEVIWRFWSCCHVSSGSDFCMQFVFIPYMNYPIHNPDFWYVIKVIGDWQS'
proteome = 'ASNVMDHVRSILIHEHNCCSKDWIKIRHHWCWFDVHEIACQFRATIMDVDMHGWWSGLGTPLWTDFLCGNKISMCAYVNGKWCPLLWRNHLQGQMITMHMDACWNFHRALDATDHMMQPDGQHPCIEFYKLDFNEEADDLIYFVHLDVTRHDLPMVCCPLKKGSHVMSAAGWGAKTSYVWILNNIMLKAPILIQRQTWLHVFVYTMWDFQSVKFQEDFCPDELLPWKCACCICVMGHAWIPPDCHFAEQQEQKNSIPWNYRHFWYYAHGRNKDLPDQRRIRSVWECEFQHDWRVGFHYFPTCRFNEIGTPDAHWMNNDFQFCPSVDTNISGYFPPWVREETEWKTYHSGFQYYWFDKPHYGFQNAYPHNQVGCATMGQLNPLFFRCFRQAQKKHNMKTSTWLGMEYMMHMWQQLQHSWIRKPKQMPKDDDTIHHGCPWTHQCRFGQHDGDDHYCVPEIDFTAINPGMSPNHDSHAQFCWGTFCRRMATQRFCWENEMCQQAQVETQYWECEFTGQVYNAIMMHLGANVWITFPVISCDQKISMLCWAVTDFVHQYYCAIILMQDKRCEPDQSTSAEEVTQRAKQTPLLLHTRRIPPEAHFQSMTHLDISSDLLNEMSVYSELKKQWLMLMQRYIRNNREWYMTRWFMPPAVKQWSMQVRKTNIDMLFFQKYCWDCWKSAKYNNKGMEKLVDTVIREWWREHVGETPYIIIFKIHSCWADQGEGQMKYPTLMCLCMWGVGYFDTYHVFWYLMSGRESMATLRHDTQMMQQKQYRMTDVMRSCQQYGPTMEQWQRWKYAQFVTSMRVRFMKLRWPMKWSILNINHYISHYLCARWNFFHCCLDASSSGITEYMGPDDYSQKFPCQTNLDGEMGVKLCGRQFHNMADWREYEVYSNPHAELLWYARNFFDPVLGNITEPLYPYHGTRLGPLCWSPDVCVAFEAMAGHEDWEVCIDYGFVVPIFKAPDSIVSRMFRPPYFATIEGNYCCNKRFNFDRIAKKVFEHPFRMNKTGNANYCGFNSGGQSIHYVMCWGYSHHRCEANMYATEQNGLVVGVYIVNCYREPMIYQDKTPTIWGIINLHCVSGMTCPYELQQGIIDHYPREWRYDKWDGAQVLMAPQGFRRHCAERVYRVMVCDSYDCMNPFSKQVAYMLEGTQWIWLAMNGAETATGLNYGLPVISFWSPSAVEDCVMQPLLAKFGNMKIYPSDTREGMGGFLWGYRWSHNNTSHVLQRKVGVWDWTCANDDKKNYCGWRSQAFLMKADRYSPKWNGMYDIICHFQTHVRIKEPCNSEILQMTLELPPRRWTVVNPAIRSVSCKHANCRMGDNNWGKFSGGYNTQNFWFAPTLKWKSWMSAANKRPVIEGRQVQLPPVVWESIWCHPCMCKDWENNMYVYMGVFLFYLDMCQPRQTDEYYHIGWAEAANIYCIRVNDGMWQSWLWAEAHCWQNGIMQHQAGNISTEEGDQQTAENLSLAEPPQHGYACMMVPVWVAMMFSITPRIKGEGTAHTPPSDDFKLMFNIPPIADRAETANFELKNEIYLKEAERWKHWIYWADCFRHGCHLHDNARWSNNTYVMMHHKNHKFGLHTIWERDAEAYDRNAAPQWVINHASECVEFHLIRTPCSYLALMEAPLYWCMTQWQHHCRVDCYVTAGYDRDVCNGKLVPNNGACLVFCSPKSCTQCSKSIRHLLATPCQDLDPRMDWCLFFIPDGWFIKCNMCCGIYATVKYGVPKHQCPSEQHVFNNPRNGIMPEGWMRMQVQTYTWFVLHCMGRSCFDQNALDPQRKTRIKMKFIPLGGEITAENLEITIICISGVHELSEVKMNMVLRCMNECMPVSNNQEVLLFNFAEATCSWTLPVYGSGYEGHCTILILPVVRHRTAQYTSVGADNKYDPLFFEHLIDDPYFHCDQTYCMRWRDFKDSMPGKECDHMCHNEHKFVTTMYGFCHFSYPWRHLIKTRCMPIPYPEYEEMNWLYAGQEFLRTDGFVNPTQSRWVHDCRVAHLSAQKTRNGSALITTGSLWKDRWCSNFEYNHGFQWRDTRRDVLFVYTEQSDVWTIKHEEMPRKSYHWLGKMMHGISWTAGRITWMGGMRERRGRPKFMMEDFRSTITQFVDYLIYDFGHVNQPNAGGQIEYAYYTPWLWQQAPIHMFFKRESRCMIMLQPAEEHSKANFAIEMETVVGWNRDEIVVTMVMQMMHLQDCFEWNFNKQYFFDMVSVHLWIGEDRIVDCITKCDDHRRVTTCNPAKDFREVSSAEDAESTVDKGSQWGQMPQLLYHHWGQCMQCAWCYPPPRQYKKVLKCSMVHWDKVCQIYQTVWIFAGNEMYTTFPSPYPHQIEINTCTCWFHYANGVFFVWTKKTPQLWNQTHGIKTPIQLKDPPGYKPMYWWVANHTREMWKVDCVQYTPGGKHDGDGIWDHWRWFYRGKGQIDDHDQSTDRFNDWQHQFSDNTAMAWHWCAYKLKIDDYYDFFECDDDWANRLHSFLIHHGVSQCPMSFGRNREPIFIKRCHDDKYFKWWSNKCWCWPHCKEFGAIDLMEFEQRNIVILNQTVNMSYIRLFKYKMHMCTGYQLIAHYSKPTMRAQWGVHYMNRMWYTPQGRFCSEFKINEEHSLITNRYTAPINQTEWYQWAPVTFCIGATTSPQKVHNSGLCGSIPARGSNWDHEGVEITRYWASGRWTVDYINEDFWRNGDATNDREMERHWRTIRAEAYLIYIIAALVGWVKESCPIYANYIETWPCMRIYACLTQFADLLQNHFSVAKRVGFVDHTIMAPKIRNWHESNEGVHPDPILWEGDCQEDCSHEEKDSHRTTEFECNFDHRANAIQLQYREELLIWWDHYPYVMQWRHIQFFHAYQRHECSKGHTMPLFRTQTDHNWHDKTAFSFADREFPRDSMHCGHLLRTLPAKVTAFYTAGHCKLHIVILNCGLCRGGLKNAIWPHNKCELDKEAEPNHWMRHDRANVPLGRYSHNAPIMSFHSHNGYEAHFFDEKVVAVMTTDEHWEAPAPRDVIPQGNPHCFDRIGRMDSGNWFKKCICMEEQCCKTCKPIAWTFDKPVIMEFAKCGLQMMSITFAPLKDSLSIMNLLWESMPFWPNWFPIYKRKPLICGPTPMNDPTGQKSCNHRLVDQDNNAMKHCRRCDERCKWSGYMKCHCNLWRLKGYIIGCTVCVNALWAEVTHECTIEARLPWEIQDDNTGSYKWTWLFTLWKRWMQPYVGMPQDQLFLNSWLCWISGNFYHLEHTPILAWPASIKYPACAHEHTADLKALGFHDAMHTWLWTIKHNEESMYDTQSREKGSTQTSHTSRWTDKLLYYATEPCMFMPQTMLTDYSFPTMWEYWTRRTITIVIAHQSIGDEMGYRTKGIYLMPYYGRMAQEHTLLAMQFFMDRTQGGLRLDWNHNMPYTEIKTAIYMRALIAAMMFVDMQLWHNALCVNGCMKVPTHCLWFKTEMLYFTVGTRNANTQITWAQEVLDTKPELHHIRWPEQLNNWAQKWVDFYPFKCMGGCCRFFQCQDKTTEDAWLDKCFWWRTNSNIVPYKHAFTAHAMAEAWIGPMSNKNQRPICEDDAEYRKKGKFDKKFRGAKSVFYYMQDEDSDWGWPEIMSCHFTKAWFQVNRSTNWDIQGTCLSHARQLDPECQHKYGCKCYTFMQQYVENLITLFPGMRKEEYLMKIAGELHLAWMTQDFYWIKMNKNREYQQSVKFQPSNYKRHCVNNFGNNDGTSDGKYHSNWIVFGEFMPCKCKENPQDRLYMPNMPCSTTDAHWTEVQVCHSICPYDFFGSRPECVTLGPLFVCHQMAAWIRVHVIDATSTGLLDFCEMAILCGYQIYACRSMCSPSVEAQFNYFWGNTQLLTLVDNWVGQYNTCFKHIAFIFKRGYCAKDSCWLTPWSGPGFGMNTHDPWRAIFSMAVKKFDFYATDTPPFYAGCHYQNDPFIYDTSGKQLWEMSVWMEMHQIACAVDWRRFMKTILPGHYWMVHSAEIVMKHPKMRQLHGIEFRTQDYQKSLWTFIRMDLYKLMCPHEDCESKGDRTPMFHKVMYETQYFFFTSKWVYGTCAFDKNGENHQSTWFWEYPIQIDMNYSSCTIEKATLVWSTHCFYFGVDSLASWYQYSARVGPALQRMFMMCPIERVSRMNIEEWMIDKFFMNEAKTHHALIPWVLGWPPGMFCVQYVQQIVPKGLICVVAPMLKMTTPPEMRSINNQKMWQAPSQWKGNNKFGGRYVSYMMANPYINHSDEILYMQQRYHEYNTIVVPMKWICNAMGPTFVKNYEERDKLNGSHWHIMMSYEDEHILQPQYLFAQGKIEIKANDGTMHWEHGSVKFDLRVDRQAHCFDLKAHSTLFFLYLNQFIHIDKRCMCNMHVWKMDHDRAIAGRETYCASADPNTEAYCKPSYGNPVASSHCPRDSYVKWSLSAGWVPTARVGHKKLMLPINTVWWGPPNLIKTIKPRNRNGNVQSNNCSPILNFCCLSTCVRIMTAMLVDPDGERDDQLEGDACIIPWYEQSTQWINARIWDNALDGISMAVHVMKGPNCQFCTPCRRDRYTHEEKGDILFIQIPWEDGAHGDFQNNKRVCKIHRFMWNKLIWCFCGQCFWLVRRFFQAFQRKERFSHWEVSWIYVWCEGAIWTGRVPWCGSVGKQPAFIQVQTDQHEETSCAKDMQRTNHEDWSQCWKKQHYMAIAIMCGHPRWMHLNYIFNSSEDDAHIDVYKLTHCRQVRFECQTRFGMPKHTDKRIEYHGACFSMSDGCEHTFWISPYVTNGIKWPYDMWTPGQKEITILLYVSQHQMKKLDSAQRNTQRVLFVTLCQCGREKCNIAEAAGKWTTSFDRQAKLDSEFTKCRVGYPHAGEGTTLDVEMVCYTIAWNHGYGETNKVPPFKDFFPITKVFRNTQVQTMCSRSVDIANNPAWNKVLWMNIGSREKVTCVNRMLLISDNQYTGWIIMDYTFMRPAGAWLGQCDKPMKDHCRESNHPLNMRPFGGLYRPEKQINVYEWINIKMLFSRLSIDLRNCVMFYWNSYVFPSEMAGVACIT'
psm_set = psm_search(spectral_vectors, proteome, threshold)
for peptide in psm_set:
print(peptide)
'''
'''
#spectral_vector = '-10 8 -15 -8 28 29 8 -17 -8 19 6 -9 7 16 -15 -13 -9 29 21 17 -12 28 22 -7 5 -20 -8 13 15 20 -11 21 -5 8 20 21 16 8 -4 4 -20 25 -18 11 15 20 12 -18 -6 -19 -10 -5 10 7 26 -10 -18 18 -8 8 -7 -4 -13 21 -6 3 23 17 24 -10 -13 7 -8 13 -11 13 -12 5 9 -7 18 3 14 25 -20 8 -19 -15 28 14 -3 26 21 23 -18 2 -15 23 -4 0 8 4 10 15 27 1 1 -8 19 10 15 18 -15 22 -5 3 1 4 6 24 16 19 25 -15 23 10 24 23 13 0 -8 -8 28 23 -20 15 -13 13 25 24 -4 20 30 -6 4 28 26 27 1 -20 5 -19 22 -7 -9 10 3 30 13 9 28 4 -7 -16 18 -15 -5 -9 7 29 24 18 8 27 29 8 11 -18 3 2 18 2 0 16 -4 1 -10 -4 18 27 26 -5 28 1 -17 -6 -2 3 -4 10 13 6 29 8 -20 4 16 18 29 9 -8 -17 21 21 -1 2 27 -7 15 27 20 -19 -13 16 12 -19 -20 -11 18 17 19 30 4 -4 9 -4 -9 -13 -6 6 28 2 -11 -2 30 -3 15 19 3 14 21 -14 -1 -17 9 0 7 -3 2 -10 -20 -3 -17 -10 14 8 1 28 24 -6 -15 6 12 27 13 25 26 11 1 -12 16 -14 11 5 -17 21 28 -4 14 13 -11 2 24 28 -7 1 -2 2 14 1 7 17 7 26 5 -18 20 23 6 22 29 13 1 -18 27 21 -20 -6 -7 -12 -6 7 12 17 15 30 11 19 9 7 -10 23 -8 26 15 26 19 -18 -9 12 -5 -10 -4 23 29 11 -7 20 -5 -14 -16 -8 -16 10 9 -13 -4 -13 0 -7 1 4 22 24 4 24 9 15 23 24 17 -10 27 14 13 -3 -12 17 13 1 18 -17 -6 1 15 30 -14 13 27 -18 3 5 20 13 17 26 11 -8 8 25 -9 1 17 -18 -15 -12 -11 16 9 20 19 -2 15 17 -14 2 -4 -14 -17 -19 -12 8 -14 22 -13 1 30 -20 5 28 9 -4 -18 -16 -20 8 24 3 -2 21 27 22 -17 -15 22 20 0 0 8 2 9 -5 -2 -9 16 -8 -17 8 23 8 -17 6 -4 27 -9 -9 -5 -16 -6 -3 -4 16 20 14 30 5 -14 3 23 -3 -14 29 -4 -15 20 -10 13 19 -15 3 5 23 10 -10 -19 8 -17 17 1 -18 4 30 20 -4 -7 14 28 6 27 -11 12 16 4 25 -19 7 -1 13 19 -1 18 -9 15 2 -20 0 15 -1 8 2 11 17 7 -3 -2 -12 -17 -2 -15 22 23 17 -13 21 12 30 7 7 -12 -19 25 23 -1 1 24 20 -16 -13 23 19 14 18 7 -9 10 1 23 27 3 19 12 -4 5 -2 -7 -1 23 -5 -2 25 -20 -16 22 4 -17 -1 14 26 -16 29 -15 3 -5 19 11 1 30 13 -19 4 -15 2 -14 19 -11 -11 1 -16 3 -5 -5 0 23 -3 -10 -3 20 11 24 17 26 11 8 14 -10 -4 -13 -16 25 22 5 22 18 -10 -10 16 0 22 -19 12 26 15 -12 2 5 8 8 -5 -16 9 -19 8 10 -16 -9 -16 -10 -3 -3 -15 1 25 19 -10 21 2 13 9 30 9 -10 25 -16 12 19 6 -12 -9 15 12 -12 0 3 2 15 18 -12 2 7 20 -10 19 14 8 16 0 4 18 0 -5 23 14 -17 6 15 -15 -5 25 25 14 -2 16 -19 -3 13 16 -7 24 10 22 -18 25 2 28 -16 -16 21 4 -2 -16 -20 29 -3 8 9 30 11 6 13 19 26 -1 -7 25 -11 -9 7 16 22 -7 -7 21 0 23 24 -14 26 3 -5 -6 -18 5 16 14 13 19 6 23 1 -1 -12 -18 -5 21 19 26 -5 -8 -19 -8 24 15 11 18 -15 -18 -14 -7 22 -5 18 -4 15 19 4 28 2 -19 1 10 27 -10 -19 27 -10 0 -17 -5 -3 22 -5 30 -1 2 26 -13 -7 -12 -4 19 -8 19 25 15 -1 9 2 -2 27 27 -19 19 14 -10 22 -14 -20 22 23 28 11 -6 -12 26 30 1 27 26 -17 26 -2 8 -20 25 27 -13 14 24 0 -7 1 -5 12 -14 12 21 28 -1 12 19 2 27 -1 8 26 -7 10 30 -6 -18 4 -14 8 27 29 10 -3 9 6 -1 -8 -10 -8 -9 -16 5 26 -13 -16 24 19 -20 -11 4 -12 20 25 4 30 -9 25 -13 18 -6 11 -3 18 29 24 -19 28 18 -14 10 27 27 2 26 1 28 -11 28 24 5 24 6 12 -13 21 -14 17 -6 27 -14 22 20 -16 -12 10 24 25 -10 25 3 -1 -6 -8 -5 -10 -6 -2 -9 29 1 23 12 19 26 -5 -8 -12 -3 15 21 30 -14 -18 11 -2 -13 -20 -19 5 28 -17 8 11 26 -12 7 9 -11 25 11 -11 -18 10 1 -18 12 25 12 -19 -8 23 27 7 23 -10 -12 -15 -6 -9 19 15 14 -11 12 17 -20 9 27 24 -9 -6 -10 15 25 -11 16 -8 26 19 12 13 -4 -6 -6 20 -4 8 1 3 15 23 -10 29 13 -12 -16 -9 14 23 25 16 8 28 25 -20 -8 23 25 26 9 -4 -8 25 11 -12 -11 0 11 3 -5 -18 6 19 -18 18 -6 26 -3 15 19 4 2 -6 3 28 8 22 -2 19 -9 4 8 22 -16 4 -20 -14 -4 28 15 4 23 -15 15 18 -10 -7 19 -18 16 -13 24 -11 -19 8 28 24 -14 -15 11 15 -8 4 -13 3 -4 23 -17 6 6 -7 -8 -15 8 18 -17 13 6 14 17 26 -18 -2 -4 -19 19 9 -9 -2 -1 -9 24 30 18 8 6 20 -10 -8 20 -12 -13 -19 2 -20 -15 11 16 -11 18 11 -20 20 19 -5 22 -2 14 18 10 26 5 26 9 18 30 -8 -5 29 -13 29 19 28 -14 -8 -11 3 -19 17 9 25 7 -18 14 29 -13 4 2 5 -15 -19 -6 15 16 18 18 -3 9 26 9 2 4 -13 6 -9 21 12 14 17 11 25 -11 -18 17 -11 3 16 13 -19 0 -7 7 10 -10 -3 -10 -8 3 -11 -16 -1 18 2 -17 26 16 -10 -18 30 9 24 -14 19 6 -16 -17 -6 10 13 -5 8 16 -5 -17 -4 26 14 -12 4 -4 18 14 7 -7 -15 8 -1 -10 -17 17 -11 -9 -15 10 1 29 -3 20 5 -7 -10 1 30 23 23 -13 5 -7 3 7 2 -8 -6 20 -11 21 0 -17 30 28 17 25 30 14 -5 16 -19 23 18 12 24 8 7 5 3 12 1 -18 -4 -16 27 29 14 11 9 -15 4 -18 -10 22 -18 6 7 -19 -17 -18 26 14 9 20 -6 -6 -6 -6 11 29 -5 19 22 -6 -3 29 1 23 7 -9 16 27 -11 17 -12 -2 -11 -14 15 20 -5 -1 17 -3 27 30 25 -11 23 13 -15 -16 24 -15 6 -13 -18 -9 -10 -8 5 -1 -16 19 -17 30 -20 -12 5 27 28 -1 21 -11 1 -18 19 -2 7 -12 26 24 5 20 20 -10 21 -13 24 19 1 3 27 -8 20 10 -3 4 -8 15 2 1 -16 11 29 8 -2 -20 10 -9 23 -9 30 -11 4 26 17 -2 26 28 20 -16 -9 6 28 11 -15 -9 -3 13 25 13 9 18 9 9 -7 -18 3 26 17 -11 -16 18 -7 3 -1 7 -18 4 0 2 1 9 10 21 4 -16 21 27 -20 -12 28 8 22 15 -4 -7 20 23 23 9 -12 -15 -12 -4 26 4 -5 -15 14 30 13 16 30 12 6 -12 -1 5 19 -13 21 -6 21 30 2 2 30 6 19 -8 25 -16 21 11 -12 14 6 23 20 -19 -15 1 15 16 7 -5 9 28 6 -10 -16 28 -13 8 24 -15 -6 8 -7 -5 -16 -10 24 2 -6 2 -17 19 0 10'
spectral_vector = '-14 3 -8 9 11 -6 -8 -20 0 30 -6 4 13 6 29 -3 -1 15 15 -12 -20 16 -18 20 30 15 -18 -11 -8 6 9 -11 15 18 6 25 -5 27 -11 -12 -7 14 30 3 -4 -15 -6 18 0 16 -3 18 -12 14 2 8 -1 25 14 16 5 7 -19 28 7 22 5 -1 12 -11 -13 5 26 12 0 -19 -7 30 21 -2 -4 -11 -4 20 -9 -4 8 -13 -1 8 -2 5 -8 16 19 23 -16 19 -14 -5 27 30 -8 13 28 30 1 -18 -8 16 17 28 17 17 9 -14 17 16 29 15 30 24 4 5 25 -12 -18 -9 -7 29 14 -12 2 30 5 0 27 8 28 23 7 -11 1 13 -16 -10 -2 4 17 6 -9 29 9 23 -13 9 13 19 -18 -4 -17 -16 14 10 15 18 -18 7 3 4 -6 11 -7 -10 27 9 10 27 16 -13 27 -6 16 -1 13 5 8 17 9 3 18 6 -1 -1 4 22 -19 -6 -17 -1 -20 16 12 -7 -12 -18 28 -5 -3 6 -12 13 24 -20 30 -18 8 5 19 30 -2 8 -1 15 -11 -13 3 20 27 18 8 19 21 18 -2 -7 19 -8 9 -19 6 -2 24 18 -14 -11 -11 18 17 11 -10 25 2 9 22 -11 25 -14 -10 -11 -12 -13 2 13 2 -17 -6 3 0 27 -18 13 -19 13 -2 -2 24 5 17 0 -10 -12 14 27 1 -14 -13 -14 3 -12 -2 23 23 23 0 7 11 24 -17 -13 11 0 -15 6 -7 -4 11 -1 9 10 14 11 -7 -3 27 -17 12 8 -16 -2 5 -14 -6 7 20 -15 -18 26 -2 -16 13 19 -12 8 18 8 10 1 20 -19 -2 16 -13 29 26 6 4 21 27 -1 -8 -5 -4 15 11 -20 27 8 -16 3 -19 25 27 30 22 26 -14 18 16 -11 20 -16 -13 20 -17 -3 6 9 25 17 4 -8 14 20 26 15 4 7 5 8 22 7 7 12 -6 23 12 -8 21 24 -1 27 21 23 18 25 -6 -19 7 6 5 0 13 1 -10 -5 28 22 29 8 0 -13 9 27 -12 14 -15 -18 -12 12 14 -4 25 9 18 20 6 13 0 23 -15 -3 -7 6 3 12 25 -14 6 -5 2 11 -10 25 14 14 21 4 2 -15 -8 19 -11 -9 17 6 1 0 9 5 4 -15 16 -17 16 8 -12 15 2 26 -16 4 17 10 1 21 22 23 -9 -16 -15 1 28 8 -19 -17 22 -15 30 -7 -5 27 -18 23 -13 -10 14 -11 8 -3 8 -4 -2 28 -5 -12 25 -3 11 -20 2 20 20 6 -12 20 28 15 3 -20 8 10 -1 0 16 22 9 -15 30 26 5 -4 -19 7 0 11 0 -4 6 -4 1 -5 -13 -10 -15 0 -4 -2 18 -15 26 20 -17 5 -19 4 20 20 8 19 -13 1 -3 -18 3 22 15 -5 -16 -11 17 19 -10 9 28 24 12 10 28 -17 27 -6 -13 25 -5 -2 -4 14 23 -18 -1 17 4 28 9 20 -7 -2 -11 -8 -11 11 13 22 30 26 -4 21 1 -20 -12 -10 15 1 11 -4 28 14 7 26 0 -18 24 20 29 -6 14 -4 -13 -13 26 -12 4 23 12 -8 6 20 -19 17 -15 -7 7 27 26 8 18 17 24 20 -12 6 -2 3 26 -2 22 12 -9 -14 7 3 -20 -10 -1 9 -14 27 6 -18 -17 16 10 -12 30 22 23 -18 -10 3 11 -7 -14 20 -2 1 16 -10 -7 -13 -8 15 4 0 -3 15 -17 20 17 -2 2 -6 10 13 -2 -9 18 26 23 11 16 -18 -14 1 3 12 5 1 -15 -5 -3 -12 -12 20 -2 -7 -19 20 0 4 24 29 3 -6 -6 12 -1 -3 -8 -6 -4 -12 -16 12 -2 22 8 -18 9 14 25 -1 24 -8 23 -16 -6 14 1 -18 -2 23 -3 -11 13 4 -19 -10 -3 16 23 -19 -16 6 29 10 -20 -11 -20 -14 -16 17 21 17 9 29 -14 -20 18 -3 27 2 -5 -2 22 16 24 3 -7 4 -1 -6 18 10 11 24 18 14 -4 17 -12 15 -13 -5 -3 26 -4 6 -10 5 3 2 28 -20 -1 -11 3 -11 24 -6 7 10 4 -20 5 9 -18 4 -7 1 -12 -10 3 29 5 27 7 17 -3 16 -16 20 6 -5 -1 2 25 -16 13 -2 13 3 -18 -1 18 18 22 -9 30 28 -6 20 -11 -13 8 -5 -13 6 11 -7 1 -15 7 29 1 -13 14 -10 29 9 -5 -16 21 -3 5 -16 23 2 16 1 -14 -20 3 24 -14 7 -1 -16 4 26 -6 2 11 19 29 -12 24 23 -3 -13 21 12 17 -15 23 13 22 8 2 6 11 -3 27 6 3 -7 9 16 -18 -16 1 27 23 2 -1 4 -19 25 12 -4 -13 -10 27 8 -3 27 4 27 29 11 7 28 30 25 21 -2 6 23 -1 -12 12 12 -1 24 18 8 28 12 21 -18 -13 -14 9 27 20 -9 9 17 19 29 25 20 29 24 -20 16 -7 1 -16 18 -16 -6 -5 28 -15 -15 26 -4 -3 22 9 -17 -20 19 12 20 -15 -7 -15 11 26 -5 -2 19 -16 9 29 1 22 15 24 -7 25 1 22 -11 17 13 3 2 14 -8 -12 -11 -15 -16 25 7 -3 -13 -12 27 29 -2 -7 -12 8 11 17 -17 28 13 -3 9 16 15 -18 9 21 13 21 11 -13 -10 19 -20 -8 8 0 22 -13 3 12 11 13 15 -18 -11 27 8 -2 14 -7 2 13 11 22 7 -8 8 21 -15 6 -18 -19 -12 -17 7 -19 23 11 -3 27 -16 18 1 19 8 15 -12 -11 4 14 -3 -10 -16 7 -6 -17 30 -8 3 27 -18 23 13 -11 -3 8 -14 -11 16 -11 12 -13 -14 -7 9 8 23 -19 16 25 -4 23 -2 -5 25 3 -15 26 12 1 -5 5 27 -15 -14 10 13 -6 14 -5 22 -3 -16 -15 11 17 -17 27 10 -13 16 2 22 22 -17 16 20 0 4 9 10 26 3 -8 -13 -4 27 8 -3 11 9 -3 9 -1 2 21 18 -8 -16 19 10 10 -18 -4 2 -12 3 -1 -20 -3 18 -17 -12 -10 14 2 -12 18 1 17 3 29 -4 26 -20 -16 11 14 -6 30 23 23 -20 28 1 11 -9 11 26 25 9 -14 28 25 11 2 4 -14 6 -7 12 29 16 8 -16 -11 17 15 5 -16 30 -7 -6 26 -10 20 24 -14 26 13 22 23 15 27 4 -12 20 20 -17 -8 2 27 -5 29 15 20 -14 -12 -7 -2 8 28 25 16 -20 19 0 13 5 8 6 -17 27 0 -12 15 -13 2 -18 -6 -14 -2 -10 -14 12 -5 11 14 -15 -2 -4 28 -4 7 -9 8 -7 -6 20 29 12 -2 7 -3 16 24 -17 -4 18 -8 1 7 2 20 16 2 -8 3 12 -11 28 13 11 -10 13 -14 -7 10 23 3 11 -19 -13 26 21 -20 17 30 15 7 27 18 17 20 1 10 4 29 -2 -3 7 1 5 27 -13 20 -5 24 -16 -15 16 -1 27 11 -5 7 -15 21 23 -13 -3 -10 19 1 -15 4 3 -16 -6 -5 -8 24 -19 7 -6 17 -3 -10 -18 5 5 25 -14 -17 1 -17 13 6 -2 20 -2 -9 -4 13 21 -4 12 8 -19 1 -1 -7 -16 -5 -6 28 29 20 1 -2 -16 -12 -20 20 -16 19 -1 -16 30 24 18 10 -8 22 -17 -1 -15 -12 -1 25 25 1 26 20 -18 15 -13 15 -8 -12 4 5 -2 27 -16 8 1 -9 -17 13 16 -18 30 12 -8 25 9 -12 9 22 9 -10 21 6 -19 20 8 9 -6 -17 15 -7 -10 -14 11 15 27 -14 -8 6 8 14 8 -20 15'
spectral_vector = spectral_vector.split(' ')
spectral_vector = list(map(int, spectral_vector))
#proteome = 'EIFWAPNSFNRWCRFPRKIEICVYQPAGFYHMEMRNVKTDKMHAVDGVITWENVFKAALLYHAAWGGNSGGDEMMACAMFMRWMQGIEAQLHNYGNDMTWEMMAILMMLDRGQHWAEWTGGAWRTEQCNNQEIAENEITQVNSFGTVPACRRQDRVQDYFCQNGRSQPIKAISDCHKMIIDISEMIGWSNLPQLSCLFYQNTWPCLAQVCAHIAQRAQQYTQVHHWAQPDLDAFEYGISDDRTSWQFCCANLFSWVMFSSQFCVEKYKVRDRRILQGLACCTETVQKYQERSCCMHKDEWEVYNDEYIPCMDMFNNKVTMAACRTIVEASEPVLKPPPNKMIEMMDNEHVYVAIVDGFWKLEAARSCFSTRNEKKVAREQRFQECDEWYKRNTGIQEWYIEDPANYPWMAAQLFEKWHCGTQTDNKAQIHMPPFLKVMNIKEDTKWPIEFCCRIVNYCDRPIELEIKFPGTWMLCQMLYSSGWGGHEFEPYLRFCLFYRYGKAIRMHKGDTPTQSLPAFVCFRNGDDLNEGVRPWQRCANIRNEWWPEKPPQEDPSDWGNDACCVCNWCDGDRKVFSESDCCNNDANPNWSEQKIIILRTMQLCDHIRMVYYKAHAWTGMSGHFIYKLFKPWCFFGTFVFAQDVMAPDYYWYHCLGHATKNVVGFFHMVQQSSEIQNCHACASHKRKFHQVEKMSWMCQCPLRCFSNVMPLNMAYYIKTYNVNGTDFYAGITVRSSAWHEQFTSHCSWVFCLQWCMGDPVLFYPSTIGKYMHVRSWTRYREFVVFTGAEMNRGYNYNWAYIVCIIMKNCQAQMCFMKTLHRQQCVQHMPWVFHEIFIADEVGKWYLTTYAAHWDCTRTEAPKTYIIPQQNPIDSQRKPTNCQIGWEMGIRNPLCWFHTSWPHSPTFSEATMIYEFRYNYGRPIDWDWKSQRNTTKRNQMDNGWPWYVISMCMWFYTGQEAVMCTQCAGFQFDRERMIHAGPMLIPIQCKIFNSVPPYNWETYRPGFNTFWRYMGECRMKIGKQTVSLNRVYHWEWCFFGKQIDFIICTNPFTKRDCRLDHNTHSNKMYRNVSNAHTTCFKYKYFYHKNKMCFWLNVEPAKCVAWAEFICWTIVMCFFRVQKEQFPQECWMMIIVTSNLDAFPDNSRQKRIGETDPQQHMGKWHRHARDKGCMPREQTWQDKFCTYDPSAEDKYQDCYLISAFTWQYWMEQCCYKPRHDPWLNKLQPQFLMSIDSPNPCFSCINHPDECKVGYKHVSRGRPMEQHCKMQPIQNAFLPRFALQHNSQHSWWWIANWQDKMSARWPRLLRTHCVIVNAWQACNYNDRHCYHFLTFVMYSGFDQNCELRACVVIQCNRTGDYHNQKVYLMIMANHIMLVPRARWFTPQRCINMIECKKNSEANDQYQRLIEFTPWGVEGHEIPNERILQTRHLLLYCMVYQQVQYAKGHEAAIWWFWDTGRIAYCLCLVLRCYWEPESQTTLLTLGAGNNDKMIHNMTFVETYAMPSVASILEKVQMNPDMIMVNEWHKAVWVWDISTLACFHEHHIHPMSICKLIWMSENRFKNFHCPTYGYITRCAYMAQRDYENKHAIWVGTTKFFKTFGFLGYHCPQRIVIEHLIYRPCSTLWCPNWDKKRCQRRGRQQPYANQLSCIAGNGESRIFWTWPQRQIYLYGFHDNHNQMIYLPTSILHSKSNGYAPQFRQYRLSMETMMMTGHQTKPHDWHNKHIHCCYEHDIFLKFVKEVEMYCFNGNNARREIDFQIKYYKHSAFLFQVNMHLYWFKQCGNMSAGNSFRSYKHESFLLYNRDYMKLLLCCDQCDVWCPYNCDRIITCKAGIIIQMATEYPDSQFAVFERGVDDYRVLGDFDAYDAYNTNHVVWQDAYNMWFYNLGPYAMGRQACKPCRGFHGYVMWWEWMALAGGGSIHSYRSERGCASFFWQPNTCGFYGLAMENYREFLCQMDMVVRNKVSDYNTYMMYDWCKPFANLSMFNCKQPMQKTYHLTFGKLEVDVANYMVLFKLHFGCISCDDERLWDMMGRRQVDNMCKEPRPFGFIYYQQTEFWEGLADVTAQYKLNIGKFTMHQELPVPKDNLMNWECSRWFEECHFTQNLFKLRVHYGFAGSALTKVDNCHYSEIQPFTFGKCQCWSDVLKTLQTMYGLNHMYEDEWEYHILETTFCYGNQNMNPFMAHAWFPYSSWQPNHYRPKWLRHLTNMRSGQDMVTRVVCNCANVLDGIHSRIPFFIPSMKSRYFVTSTMPECPFPQMNSWAQIASTYQYKTPWSGLVQGFENDPFAHLYVWFARNWDMYRQSGRCAMYFVKSMSHIIIMCAVHGDLHPQCVAYNHYKTPNAEDCNRDNPDSHYFNTANMDEWPTSHTTFNMYHLIDMCSDPVANCHMVCVQSPCLNEDTGLRTKTEYGTMAEHTSDQKTYQCCGMENYSTVRYNSVEHFWMTWNRNHKVWEMCNIFYSHTFWYVPWLIHTQYPGRAGSTVKQKWTNIGLAACIVYESYFVEGKVELIRQRFHNPTIRTKNPAFTPCIGFTLYTYMEEEVKMHLGVRNNYEYNMSEPDCAQKLREFQEVEIHRMAKGLIVTNAHHCFSMAFYQHSYGKIHVSKSKGHQCCQPGYGPSYEGPTVPKSRKLNQKGAYGHPPDQNEYHNRPENGYCECNVCWEQNTVDTPSPTDGLHVHHVCVPGWVNSGGTEDEWHWQTYMVMTDHFKLYQAQEYPSIWQRQSCQWFCECDGHAPEKMADMYAWGPDHNFGSEMIRPRRCLPCRKGNTAQEVVGMMQENESWANWGIWPMQSQYRIINMTSEMIDSTKYQQGFMFKGQHCSFQKWSQTESEFKSIYGHETRLAVGFLWWENWIWLREYIRPAGMAGCEDEYFTVYPWEPVASRYHWDWEPKTMDCQSKYPIRWDKDDQKWMFNYLIWPQVNDGPMAQSQSHRREQYKYHLYDTNGCQWEFQTPHKPHEYSIQQWKDWYFYNRMKGISCNFDNVSTLPFMNHQPVFCEHFEGRQAHWCQCIFNCYELGEFDYMQWVMVKYAKIKHNPTHTQEVNVWNCWCTPQCICQWMDFPCWWRCFMTCWETMYPGRMSHRMPTLQFLYIEDHVVLMNYSEGKDHWGCKVHPGDRPHVIIDDNPHDMWVWVKGDMIAYIKMVQNQRVCMALYQLWALKQWYYMKWMNDETLSFWEWCGAPGWFIGGADRQRKIFWCWVIGDHPNPGFSSGAVCYDLIRLYDMITPFDYTAESRQLNKYNSRIEGITFVGQRIQLQMIKMGVPIQQPGTWPMAFDMFWDPIHMQWSWNQKFGFGEIYICHFVGGFAAYMIQNWQIQYVEVLASPRYHQDGIKVHHFLESDQSCTMNNPKIHLDFALGEHFPWTRIHAPSCHFYRNQCLWLVIQHQISQHCWMKCQWAFCLKQTKNILHKESYSVCSAEIAMWTIRGRYLAVRASELIAIIGHELPIQGTYRITANAKDEQCTLRGLKVYYSKKRGEKDVDNCIYEIANGIWTQLNIFVRADWSPMAEWGSLSFYMFPNVDDLYRCHDYVMSYMYYFPQRIYWATCKDWEAKLPRVAENVCRDHMHMGHKRWFHGTEQRRHVLQDQICQKTDRYERWRNDQDQNQMQSGPCYCSSHYFCNEWGQTERFIKYEPKNQSFPRHNYLKRHMKPEEANARSESRYCEMSGQFLWLGLENSKHLVRSERWSRDKYYQKFIARIAAHDKILMINYWRATKGAMSHKRTGPQDGVCIWVCWNSKVRMQGYDCTNNACCWCPSCAAMIKENILNYTHAVNTRVWQFNYITRDYQDCWKERNIRQQPWHRFHSCLQLCCHDFIIDKTTLVDFGSLVCARLHPQCNVVYYKAQINRRFMTDCIDVTIVVWPKQEKNAFGRHHQALFPRGHYSGADCVIFDHTKILRIDLSKPHESHWWKYHLPKIAFAGHSVDDPIFIIYMCNHRVPSWAMAWWVKHLTSSMGVFRCISWCNQHLTRTIRKLMYSFGGAPSLPFQMFGINSLEVPNCVTPFIDYRSRVMSDNHSPLKVDVNIMKWQTEYFKGLWCEMTHMERIDYKLCRQFETWCCDMQHSKMPGQMPFIFVFDEMLIFQTPRPDTYENYYRIIGEMHRNYACWPIAFPHDDLPHTVVLKFANNCFRWHDQVINYFGLFVKVYACLPLWVLLLHCEWMMHRVSRMNVCGPILPCEKADILQVKSHEMFPGANGECPYWDPGSCHDAVACCFAKGGEHCGSEMMNKPANTKCHPSANSMWQRHASPRQIIAANHCIALGKERGYHPLQKKHAWRGLEPQWHKSTYKQRCCPMICADIMVDMTWDAHQWGSNFRDEPIYCWAINTHGLHHEIFCYAILHDHCGEHTMVHWVMFNIPPMQHWKVRHEHPGCRGVMDEPSLVFFSSDGSNWIKVTSEALFVDIYPQQPKGDAWEVCKQEPPEISELGSEHSANASCNNFIYSGTKTFRMDNQGECSNKAFALCFIMCIWCTYTEKYMAPRNAVLSKADCSPIWMEEILFVFMPAYYPGDIFPWMAEKDCIYAMTDNNHDDPVRCECKSEAQEQIMCMPSHFKCRSYVVKRHMSGAPETIGFAWKPCNNGTLMVLKATLAFGYSCGCYLITRSLAQHYMNIYEYIIAMDWCRGMGNEIHPVIDDSCKTRDVTIHCHKDVMWPGEMEENEGCRWVLCVIKQMQVMIFWDINTYHSVNSARIKWRGKFTCGATGHDGWKCCACDEYRIMEFLDLDWQEGGRQMFACVPANSMPFCIFLVVVGYTICHSIICDTNYGYWECPSSECIRVKKSTLYILASHISYKRTTTDLSHYFMMTYYYEFCEVLTMVQTMNSKVVRDYHAEHVQPRVNAVYGPNSYETIVGHERFLTWTCAKWWSSVWNLEMDRRFMLQLFRCEISMQMLFKVQPYYMARACNYGVGYMWEGTATVACLGKVCNVAVFKFEPFCKMLDRPTIQPDIIYNATIYIDDLDSDKICYMSICVYFYNLVSYYSAHEDFAVCIQHITWELDVFGQNDYMELVIGHI'
proteome = 'QKWWHTHILKRHQQYPHPPACMYRWMRHQSFIEACRCDMPFVCKFYQREDQEDLVPLADWKRGSSSFVKNMRGYHVHDPTPQDANISNDYFWATCIDHRWESTSVPDHNQFQCDPYYDACVMMCFDVHKKKKCRCAEYYRSVNHMRMKCIAFEWFASTPAMEYTDLRQWFYPDVAADNKNLPEIWRRVKWDLHCPRKMRPCQHFLYEKVNQYMSHVPYYACYYLWMFGHNFTMRHENYKPWCCKLNHSALCGMIQGKIAYNWYMIARHPPCNDDNYSKTTYDPGSVAECGAVIACSITMTWLCMILGSKFDFQPLVAECYFPIDNEVAVHDTLTTPYERDVQKREYNQHGKGVPVAHMVAAITWIAVLCSCINCVNSGSFYRMGEQSCAIARAGGWLEVWARYWINKMCMCWQTPPMFYAHLVDKVFYGHFNMSQLQTWSMFNSAHQMEPSLDLGLQCYSIDPREHKRFKAAYNYFRLAKTEIDAPDWVDPWRMRKKVQMQIDCHMYPCCCNPVRFHASWGWAHHQSIHGTHAWKRHCSLGKFKLKINIDYYRGTNVHDCMHCWYMHYACCNCRGTKQWQQTWSNLVGNNKFPPMNHRGVSWYKLITGIAHYDEHEGILFRMGWQVFAHEDPEKSTISSKYEYCPCLIYGVMAMQQMYRHYGSFWFYTRVIIPRFRRCFWLPKIENIAWTFDLVWCFGDHEWDRTIGVGQHKKMWWLYYGDKVLWMDFGPWEEKNVWSVALWIWNTGRMQYMENVMKPGFQLSVVDSVYCIKPFSDHNARHRMTKQMWHSPWYSPGVFRCHNDNITCAVTCMQRGINCEVLHVVCYKRTFRVYKMCRVHCKNMHCTVIDTQMVESELSKFMGPFMERPKFCPTHAMCIYHWWHCACGMVISGVTSMYCKRQRYEQTRIRSFNIYVSILRVEHICKQETFHSPVTYSMAIGYEYYWMCFSNHNWPDMNALKWLMAMDPMMVYSQILFGMVAIFSILWFLYMLKEHGINNDTNPQCNPMVKFHDAAQCQVISAEHIENSHCINADQHCHPEGFHRAQKIWGNDCDIFDYYCHKAWLCIINFTEDTRYFDVWIIDQNYVEYVPMRVCMVRSPTHDIHCSLQVKRHMSRKFLLVHCKEMHKSQGINEDTPSAFKYGFFMQRSTLMMVYIILPSKHWPIWFSGNGWPLLGERFIYSDNNTKPFMESHDWMKVNCDQRKTAMVQPVVVYLNRWAWCFGGYSLINTDDLPMHQPDMQSFRTIEFSMNTESVTRLTSIRWLIFKMGHMQYRDEIRKYESDWYDAAPPQCESHVEGEVHFAWCCTKMHRHHKAMEVNSGMQWNMVMMMQSGMPAIYGLPHWSENGWTRISMPAHCINFYHHLFACTCRCGTDTIKLPKVTIHVKKYLHPLEWERTKFLGLNIHRHCIINVNPFKEIICKALFTKHVRKKSEHTAEFRIPHFQGSIEITDWAERPSSGHHTCWPWHSWKDQSWACPWMTATGRQMKFVRTHSILAYATCHLTWFTIFGYMLILQHVRPPMKLRNKAVRNSRPDECLLMGGCQSLWDCDWPNHMHMMEIMTHNHMCKPTFEALVQIKMANTKSYLLMRGECWAKNLWKVHISMCCDTRPKWMLCVWHVTYKDAQSWKWCFVQRFERDRNMELDAPGRLWIPDICLLNMLIFQLSENKMEVLRNDCLPDSQMVPKHSKEITDDCKFPADHGRLIDYFLNEITWGVTSWTCILFMQDQDLQQEQDNNTAKHTGDLGDCEFEVIDCSHRPEAWRFCSPFAYNLTKVMVAAHHQILVYVKNAPWDNYFIYRMEFHQSDMYILARCLMNKYRHVSQLSEVHYQALERVLTVNHSVYKKMFHPNHAWMSCLSVVQQEQASIANYNEVMGDRLWKHQDVWPEFSMRHVLNTYLYRCSWLMTECMRIIMRMYYGVRLPWVMAASANKQDYTSHDEVHLIEKWVMIYCYQQQCRSDHRWCFKNMPHEKPMSPEQVPKTSWFVNMHWQRMMVNIHRSLYPTDHPFSVCPRSCTTDEKNRLMNPKMGQAEQFPAHKGRYEESKRHFSRGGFIWHGFQPVQSHKWYPCAYFNMHGIRHHDQPQPRIKNYHDMWIMMISSHAEFLNMYRFQLGCFSLVMFQCCCLHILRQKCDHFCFTAEFMYYKCESVKSIKEPSGTRSWIDNECEFMLCTFVDPGEYIAKVKIQNPLAYLHGCLFELVEHDTAPNVKTFHGPAAYLCYWLFYLWHCPKGRQIYMQDVGIFQPFFHPDEPIEGGGVTIESCPYNPNKWSELKLSMRLTVDEKLVAMHATQWPDGDISPMTATRVIYVPQHQLFEPDEIVAFPGNCAFIEPMELWNCPAWDMGTRLFDTDKMYCVYWQARGIDNIQGWSRWIMVPQTVIVQRYKWRQCHCMYPWISRRMSKKLWYQCWHRPPIWGQVVDTHNHTYSDLARCSCYETSVDIAAVMSYEMIGEQAMMTRSPNGPYISTAWAYNMATSLWTISHMDMRMTIQMELEMVVPPQDWWSKLKNDECEPHIPFWCHLRCRAVAGPMWHERSMFTLQPDSFLRKLSCANIIIMTTIGLKFTSTVSGCPGIETRIGTHRFEMATVQKTWPKGFLKILSRTQVAWMFRQFECAWDGYKWSYCIVYYNMVSIDIVDVCFTHPIHDKAYDEDYWYCNYNWQAKTCTVQFSYMCKYKMGVSMGKFDVWGCFEVRWADDFTTPNVDAGTFELLIDHGRHKAVFLNWVWLPMIEKHEWEYGAKWSTRMCCWNFQDRLKVHFYKCRWYIVNREQDLGVIDFMDECPYWFDFDQMEIMTADWYGQGQEHLSMPNASVDRKQMSSITFCCKPGGLLQFMNSEGMPIDYAFYEYIGLMYPDVDHCFIEMVCVTRKKQKPQRMMIVVGRTGCHCMADCIKPARQLQVCYVLWWPMEGSICVYGCQTLPWRDNVICYICWRTMLRWILCRPHFAIHTHGYPWLERPNHKYQTDDRVDSAVSSAWVHADASHISMHTCSTLEEATQCPEPNIFSYSFQCTNWEWVFRICMGNAWCWPAHVYVKSLVYRQDYMSCCCFSPLTYGKRKSYWFSREIMRGHEAAIGSRGVETDTFKQMNFQFRYHVPRFHTRDREFKHQGDDRPDDMPSDGMRIGILTCGGRQEPVQIMTIEPEHPTMCRECQYSKQQCDPNEYQRRRWNRRLPEQRQTVHECSEMTATWLWMEYKSVQHNKYDINCETICGNVTPVCNQVYEVENQHQREAGAGLTPWRAVCYAGEFYWDIYERAGKMQIQKVDDIQFGQGSMHMWNDFYSPADHVFSDWPMDTQGSPGKGWNEEMIWDYRTSCWPITKSKEGYLSFTANVVRPCYFAQTTMRWLHLLTWPQMRHHKKHVKFHDWKWTPWMGKKFGIGKPVQYIKDFNMIANFFPEEETGFGTHVTHDYASPWRISTSVLADYQMHCLLEESYIFECWRYDFNVELPVMSYDGWPDYNTCNRMTQQKWTSDTTKFKHEGGIACTGSVRRYWGHYTWLTAVCAHQAWMWKHGWKNCTDHTATFWELLNTMPIKLRLAPNFKKCWSATGICQFHSECCNDTGVLEHAWFPTQLAKSWYQLEENVAAFSYATLWEKRHSTNQTSLREEWPWITSCIAIDTITPGGLFWPIKYTDNAAVYHSMSGVSLGRCMFYPTAHLCPVDNTHRSCWKDDNSSMASFLSTQPHDCWPDCYRQECHGHQGAQAHRTELFMEEYSDTNMQMFMVMTGQTGFYSKEVGGEYNELGRMLGMDMNYSNNCMEQGYHEKIAVGYGKMLKNNFACTADSCLTYAERINQLENGIQDVKYNMSYRGIMALKMHVRVEDQANCEFSGSLFAAVHLCNMYGTPDSGVAKQHSRPTCVPCIYQQEPCYWDGDRSHRNMRAHFNKLETVCQRITPWYDHMICHQLDLITTKPRMQLASFKASNLQNSYARVEDSEALIIHNWYEICNIPLPLSNEKHYVVYDYFQLPKFQCEVWEKPVPDDDYKAYMPRECFTSAEMIKHMYHCMGSAQQHWQDVFIDQWTYIACQNGCWDQCKRFLGPKMAIGSTHKTPGPQDYWSNWFTVRAKTMITTKNMEKVNEGIGQQESEPNTLCAIHIIHKLKQCRRPKTVRYKWDDSDIELLENHLPYSWTYAKVNDRFKMAVISPRMQPRHKCFPCPTFQQCVVFTGVTQLSAVEHFQIWFNYRVHDANCYKCHREEMMPPDQLRPPNCRQVGRPLCGEQKNARMCVRQLKIAAYFHCRGQCQETAWIDEPCWTQYVKRAIMPKVRLLTEKCGDFRKWALFELFMLETALDFAMWGKFFRYHRSWAWEPQTPKIGHQNILSFHACCEHMRLTFIESLHRCKGSEVSQGGWNWKFGQIFEKGQCNPFYLEMNNWHDIENQLICWQYCWGRKPMKAAAQQAHTYKTLMPHSRDIDFNGVQPWPKWFFTSRNWRCHNHACPPEHCQIWCPWEMIPLLFKQSTGVGCVDSEIPWRRWPFIHYTHQREWMIINTKFCPENLRHALIRWFWCMTREAVQWKKKCMYTWWADVFMWDEEEGLRPENEHQHLSRNFHGIWAKMPSVCSDVSTDGTQFLEANWGGPSMHTRCCSTIISLVIVFLTEVDAVVACLKNFTRQDKLLSLTGYQETCCPKSQDMWLDDETRFDSGYGVGVELHPQRTEWRGHWLNGDKLPCCVPNMAEMDWCFYGERKSWWRVDLPEADWNKADKTKALESFDDIFQSTVCTEFEKDVYNCYQFGYEFQIMERKLQFTTQDCHHFPMGMIHADCDAYWAGFSIYVPNYKACWNVNAPHRAESHCNLFLMCTKAPHGFTDPNMIYEKLKYGVIHQHWQMQEHGSRWIAMTPTIHITIENVQVCQSYKMGTRDHEQHYCMEYIEIVDWQHPDRCYNAFCSFVSWENDTTSVIGSHVNVETLDHYDWPRKSAWYPKCNIKQCCFRGYSYWECHLKDIAKLHEANEWDPEAYPMCGEHVMCFAIKKELWYWCVKQENPYSLCDELYVADDKNWYAFITPRGRAPILENK'
print(peptide_identification(spectral_vector, proteome))
'''