# Source code for compare_spectra

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-

    from __future__ import print_function
    import pymzml
    import os

    def main():
        """
        Compare multiple spectra and return the cosine distance between them.
        The returned value is between 0 and 1, a returned value of 1
        represents highest similarity.

        usage:

            ./compare_spectra.py

        """
        example_file = os.path.join(
            os.path.dirname(__file__),
            os.pardir,
            'tests',
            'data',
            'example.mzML'
        )
        print(
            """
                Comparing spectra
            """
        )
        # print(example_file)
        run = pymzml.run.Reader(example_file)
        tmp = []
        for spec in run:
            if spec.ms_level == 1:
                print(
                    "Parsing spectrum lvl 1 has id {0}".format(
                        spec.ID
                    )
                )
                tmp.append( spec )
                if len(tmp) >= 3:
                    break

        print(
            "Print total number of specs collected {0}".format(
                len(tmp)
            )
        )
        for compare_tuples in [ (0, 1), (0, 2), (1, 2) ]:
            print(
                "Cosine between spectra {0} & {1} is {2:1.4f}".format(
                    compare_tuples[0] + 1,
                    compare_tuples[1] + 1,
                    tmp[ compare_tuples[0] ].similarity_to( tmp[ compare_tuples[1] ] )
                )
            )

        print(
            "Cosine score between first spectrum against itself: {0:1.4f}".format(
                tmp[0].similarity_to(tmp[0])
            )
        )

    if __name__ == '__main__':
        main()