Skip to content

Semi-specific digestion in the IteratorFactory #64

@wenbostar

Description

@wenbostar

Is there a way to do semi-tryptic digestion using the getSequenceIterator function from IteratorFactory?

Activity

self-assigned this
on Apr 30, 2024
hbarsnes

hbarsnes commented on Apr 30, 2024

@hbarsnes
Member

Yes, I think you should be able to do something like this:

DigestionParameters digestionPreferences = new DigestionParameters();
digestionPreferences.setCleavageParameter(DigestionParameters.CleavageParameter.enzyme);
digestionPreferences.addEnzyme(enzymeFactory.getEnzyme("Trypsin"));
SequenceIterator sequenceIterator = iteratorFactoryNoModifications.getSequenceIterator(yourSequence, digestionPreferences, 0.0, Double.MAX_VALUE);
wenbostar

wenbostar commented on Apr 30, 2024

@wenbostar
Author

Hi @hbarsnes , thanks. Which parameter in the code is used to control for semi-digestion?

hbarsnes

hbarsnes commented on Apr 30, 2024

@hbarsnes
Member

Ah, sorry, forgot to add the semi-specific part. See the fourth line below.

DigestionParameters digestionPreferences = new DigestionParameters();
digestionPreferences.setCleavageParameter(DigestionParameters.CleavageParameter.enzyme);
digestionPreferences.addEnzyme(enzymeFactory.getEnzyme("Trypsin"));
digestionPreferences.setSpecificity("Trypsin", Specificity.semiSpecific);
SequenceIterator sequenceIterator = iteratorFactoryNoModifications.getSequenceIterator(yourSequence, digestionPreferences, 0.0, Double.MAX_VALUE);
wenbostar

wenbostar commented on Apr 30, 2024

@wenbostar
Author

It looks like this doesn't work.

void testSemi_digestion(){
        IteratorFactory iteratorModifications = new IteratorFactory(new ArrayList<>());
        DigestionParameters digestionPreferences = new DigestionParameters();
        digestionPreferences.setCleavageParameter(DigestionParameters.CleavageParameter.enzyme);
        digestionPreferences.addEnzyme(EnzymeFactory.getInstance().getEnzyme("Trypsin"));
        digestionPreferences.setSpecificity("Trypsin", DigestionParameters.Specificity.semiSpecific);

        try {
            SequenceIterator sequenceIterator = iteratorModifications.getSequenceIterator("MTEYKLVVVGAGGVGKSALTIQLIQNHFVDEYDPTIEDSYR", digestionPreferences, 0.0, Double.MAX_VALUE);
            ExtendedPeptide extendedPeptide;
            while (true) {
                try {
                    if ((extendedPeptide = sequenceIterator.getNextPeptide()) == null) {
                        break;
                    }

                    Peptide peptide = extendedPeptide.peptide;
                    System.out.println(peptide.getSequence());

                } catch (InterruptedException e) {
                    e.printStackTrace();
                }



            }
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }

Output:

MTEYK
LVVVGAGGVGK
SALTIQLIQNHFVDEYDPTIEDSYR

Utilities version: 5.0.39.

hbarsnes

hbarsnes commented on Apr 30, 2024

@hbarsnes
Member

Seems like you are correct in that the support for semi-specific has not been implemented for the IteratorFactory. I'll add it to the list of requested features, but I'm afraid that we will not have the resources to look into it at the moment.

changed the title [-]Semi-specific digestion[/-] [+]Semi-specific digestion in the IteratorFactory[/+] on Apr 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @wenbostar@hbarsnes

      Issue actions

        Semi-specific digestion in the IteratorFactory · Issue #64 · CompOmics/compomics-utilities