Implement the convolution cyclopeptide sequencing algorithm.
Write a function convolution_cyclopeptide_sequencing that takes three arguments: i) an integer $$M \in \mathbb{N}_0$$, ii) an integer $$N \in \mathbb{N}_0$$ and iii) an experimental spectrum $$s$$ of a cyclic peptide. The function must return a cyclic peptide LeaderPeptide with amino acids taken only from the top $$M$$ elements (and ties) of the convolution of $$s$$ that fall between 57 and 200, and where the size of Leaderboard is restricted to the top $$N$$ (and ties).
>>> spectrum = (57, 57, 71, 99, 129, 137, 170, 186, 194, 208, 228, 265, 285, 299, 307, 323, 356, 364, 394, 422, 493) >>> convolution_cyclopeptide_sequencing(20, 60, spectrum) (57, 72, 57, 99, 71, 137)
Acharya J, Das H, Milenkovic O, Orlitsky A, Pan S (2015). String reconstruction from substring compositions. SIAM Journal on Discrete Mathematics 29(3), 1340–1371. 1
Ng J, Bandeira N, Liu WT, Ghassemian M, Simmons TL, Gerwick WH, Linington R, Dorrestein PC, Pevzner PA (2009). Dereplication and de novo sequencing of nonribosomal peptides. Nature methods 6(8), 596–599. 2