package com.compomics.util.experiment.identification.protein_inference.fm_index; import com.compomics.util.experiment.identification.matches.ModificationMatch; import java.util.ArrayList; /** * Element for the matrix necessary in pattern search of the FMIndex. * * @author Dominik Kopczynski */ public class MatrixContent { /** * Left index. */ public int left; /** * Right index. */ public int right; /** * Character which was chosen. */ public int character; /** * Index of the originating entry of a particular cell with the pattern * searching matrix. */ public MatrixContent previousContent; /** * Current mass. */ public double mass; /** * Current peptide sequence. */ public String peptideSequence; /** * Current peptide sequence length. */ public int length; /** * Current number of contained X's. */ public int numX; /** * Index to the modifications list. */ public ModificationMatch modification; /** * List of all modifications. */ public ArrayList<ModificationMatch> modifications; /** * List of all modifications. */ public int modificationPos; /** * List of all modifications. */ public int numVariants; public int[] numSpecificVariants; // (0) deletion, (1) insertion, (2) substitution /** * Type of edit operation, either deletion 'd', substitution 's' or insertion 'i' */ public char variant; /** * Current storing of all variant operations */ public String allVariants; /** * Constructor almost empty. * * @param right right index boundary */ public MatrixContent(int right) { this.left = 0; this.right = right; this.character = 0; this.previousContent = null; this.mass = 0; this.peptideSequence = null; this.length = 0; this.numX = 0; this.modification = null; this.modifications = null; this.modificationPos = -1; this.numVariants = 0; this.numSpecificVariants = new int[]{0, 0, 0}; this.variant = '\0'; this.allVariants = null; } /** * Constructor for simple sequance mapping. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param numX number of current X amino acids */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, int numX) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = 0; this.peptideSequence = null; this.length = 0; this.numX = numX; this.modification = null; this.modifications = null; this.modificationPos = -1; this.numVariants = 0; this.numSpecificVariants = new int[]{0, 0, 0}; this.variant = '\0'; this.allVariants = null; } /** * Constructor for simple tag mapping. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param numX number of current X amino acids * @param mass current mass * @param length current peptide length */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, int numX, double mass, int length) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = mass; this.peptideSequence = null; this.length = length; this.numX = numX; this.modification = null; this.modifications = null; this.modificationPos = -1; this.numVariants = 0; this.numSpecificVariants = new int[]{0, 0, 0}; this.variant = '\0'; this.allVariants = null; } /** * Constructor for simple tag mapping with peptide Sequence. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param numX number of current X amino acids * @param mass current mass * @param length current peptide length * @param peptideSequence peptide sequence */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, int numX, double mass, int length, String peptideSequence) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = mass; this.peptideSequence = peptideSequence; this.length = length; this.numX = numX; this.modification = null; this.modifications = null; this.modificationPos = -1; this.numVariants = 0; this.numSpecificVariants = new int[]{0, 0, 0}; this.variant = '\0'; this.allVariants = null; } /** * Constructor for sequence with variants. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param numX number of current X amino acids * @param length length of the current peptide * @param numVariants number of edit operations * @param variant type of edit operation */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, int numX, int length, int numVariants, char variant) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = 0; this.peptideSequence = null; this.length = length; this.numX = numX; this.modification = null; this.modifications = null; this.modificationPos = -1; this.numVariants = numVariants; this.numSpecificVariants = new int[]{0, 0, 0}; this.variant = variant; this.allVariants = null; } /** * Constructor for sequence with variants. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param numX number of current X amino acids * @param length length of the current peptide * @param numSpecificVariants number of the specific edit operations * @param variant type of edit operation */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, int numX, int length, int[] numSpecificVariants, char variant) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = 0; this.peptideSequence = null; this.length = length; this.numX = numX; this.modification = null; this.modifications = null; this.modificationPos = -1; this.numVariants = 0; this.numSpecificVariants = numSpecificVariants; this.variant = variant; this.allVariants = null; } /** * Constructor. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param mass current mass * @param length current peptide length * @param numX number of current X amino acids * @param modifictationPos index to modification list for ptm */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, double mass, int length, int numX, int modifictationPos) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = mass; this.peptideSequence = null; this.length = length; this.numX = numX; this.modification = null; this.modifications = null; this.modificationPos = modifictationPos; this.numVariants = 0; this.numSpecificVariants = new int[]{0, 0, 0}; this.variant = '\0'; this.allVariants = null; } /** * Constructor. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param mass current mass * @param peptideSequence intermediate peptide sequence * @param length current peptide length * @param numX number of current X amino acids * @param modification index to modification list * @param modifications intermediate list of modifications * @param modifictationPos index to modification list for ptm */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, double mass, String peptideSequence, int length, int numX, ModificationMatch modification, ArrayList<ModificationMatch> modifications, int modifictationPos) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = mass; this.peptideSequence = peptideSequence; this.length = length; this.numX = numX; this.modification = modification; this.modifications = modifications; this.modificationPos = modifictationPos; this.numVariants = 0; this.numSpecificVariants = new int[]{0, 0, 0}; this.variant = '\0'; this.allVariants = null; } /** * Constructor. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param mass current mass * @param length current peptide length * @param numX number of current X amino acids * @param modifictationPos index to modification list for ptm * @param numVariants number of edit operations * @param variant type of varient * @param allVariants all variants */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, double mass, int length, int numX, int modifictationPos, int numVariants, char variant, String allVariants) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = mass; this.peptideSequence = null; this.length = length; this.numX = numX; this.modification = null; this.modifications = null; this.modificationPos = modifictationPos; this.numVariants = numVariants; this.numSpecificVariants = new int[]{0, 0, 0}; this.variant = variant; this.allVariants = allVariants; } /** * Constructor. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param mass current mass * @param length current peptide length * @param numX number of current X amino acids * @param modifictationPos index to modification list for ptm * @param numSpecificVariants number of the specific edit operations * @param variant type of varient * @param allVariants all variants */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, double mass, int length, int numX, int modifictationPos, int[] numSpecificVariants, char variant, String allVariants) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = mass; this.peptideSequence = null; this.length = length; this.numX = numX; this.modification = null; this.modifications = null; this.modificationPos = modifictationPos; this.numVariants = 0; this.numSpecificVariants = numSpecificVariants; this.variant = variant; this.allVariants = allVariants; } /** * Constructor. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param mass current mass * @param peptideSequence intermediate peptide sequence * @param length current peptide length * @param numX number of current X amino acids * @param modification index to modification list * @param modifications intermediate list of modifications * @param modifictationPos index to modification list for ptm * @param numVariants number of edit operations * @param variant type of varient * @param allVariants all variants */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, double mass, String peptideSequence, int length, int numX, ModificationMatch modification, ArrayList<ModificationMatch> modifications, int modifictationPos, int numVariants, char variant, String allVariants) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = mass; this.peptideSequence = peptideSequence; this.length = length; this.numX = numX; this.modification = modification; this.modifications = modifications; this.modificationPos = modifictationPos; this.numVariants = numVariants; this.numSpecificVariants = new int[]{0, 0, 0}; this.variant = variant; this.allVariants = allVariants; } /** * Constructor. * * @param left left index boundary * @param right right index boundary * @param character current character stored * @param previousContent previous matrix content * @param mass current mass * @param peptideSequence intermediate peptide sequence * @param length current peptide length * @param numX number of current X amino acids * @param modification index to modification list * @param modifications intermediate list of modifications * @param modifictationPos index to modification list for ptm * @param numSpecificVariants number of the specific edit operations * @param variant type of varient * @param allVariants all variants */ public MatrixContent(int left, int right, int character, MatrixContent previousContent, double mass, String peptideSequence, int length, int numX, ModificationMatch modification, ArrayList<ModificationMatch> modifications, int modifictationPos, int[] numSpecificVariants, char variant, String allVariants) { this.left = left; this.right = right; this.character = character; this.previousContent = previousContent; this.mass = mass; this.peptideSequence = peptideSequence; this.length = length; this.numX = numX; this.modification = modification; this.modifications = modifications; this.modificationPos = modifictationPos; this.numVariants = 0; this.numSpecificVariants = numSpecificVariants; this.variant = variant; this.allVariants = allVariants; } /** * Copy constructor. * * @param foreign foreign matrix content instance */ public MatrixContent(MatrixContent foreign) { this.left = foreign.left; this.right = foreign.right; this.character = foreign.character; this.previousContent = foreign.previousContent; this.mass = foreign.mass; this.peptideSequence = foreign.peptideSequence; this.length = foreign.length; this.numX = foreign.numX; this.modification = foreign.modification; this.modifications = foreign.modifications; this.modificationPos = foreign.modificationPos; this.numVariants = foreign.numVariants; this.numSpecificVariants = new int[]{foreign.numSpecificVariants[0], foreign.numSpecificVariants[1], foreign.numSpecificVariants[2]}; this.variant = foreign.variant; this.allVariants = foreign.allVariants; } }