ContraNovo: A Contrastive Learning Approach to Enhance De Novo Peptide Sequencing