/** Fill the modification ID map. */ private static void fillModIdMap() { // @TODO: is this method really needed anymore? modIdMap = new HashMap<String, String>(); PTMFactory ptmFactory = PTMFactory.getInstance(); List<String> mods = new ArrayList<String>(); mods.addAll(ptmFactory.getDefaultModifications()); mods.addAll(ptmFactory.getUserModifications()); // Connector string: plus for positive modifications, minus for negative ones String connector; // Write the modifications for (String mod : mods) { PTM ptm = ptmFactory.getPTM(mod); double ptmMass = ptm.getRoundedMass(); if (ptmMass > 0) { connector = "+"; } else { connector = ""; } if (ptm.getPattern() == null || ptm.getPattern().getAminoAcidsAtTarget().isEmpty()) { if (ptmFactory.getPTM(mod).getType() == PTM.MODN || ptmFactory.getPTM(mod).getType() == PTM.MODNAA || ptmFactory.getPTM(mod).getType() == PTM.MODNP || ptmFactory.getPTM(mod).getType() == PTM.MODNPAA) { modIdMap.put(ptm.getName(), "^" + connector + Long.toString(Math.round(ptmMass))); } else if (ptmFactory.getPTM(mod).getType() == PTM.MODC || ptmFactory.getPTM(mod).getType() == PTM.MODCAA || ptmFactory.getPTM(mod).getType() == PTM.MODCP || ptmFactory.getPTM(mod).getType() == PTM.MODCPAA) { modIdMap.put(ptm.getName(), "$" + connector + Long.toString(Math.round(ptmMass))); } } else { for (Character residue : ptmFactory.getPTM(mod).getPattern().getAminoAcidsAtTarget()) { if (ptmFactory.getPTM(mod).getType() == PTM.MODN || ptmFactory.getPTM(mod).getType() == PTM.MODNAA || ptmFactory.getPTM(mod).getType() == PTM.MODNP || ptmFactory.getPTM(mod).getType() == PTM.MODNPAA) { modIdMap.put(ptm.getName(), residue + connector + Long.toString(Math.round(ptmMass))); } else if (ptmFactory.getPTM(mod).getType() == PTM.MODC || ptmFactory.getPTM(mod).getType() == PTM.MODCAA || ptmFactory.getPTM(mod).getType() == PTM.MODCP || ptmFactory.getPTM(mod).getType() == PTM.MODCPAA) { modIdMap.put(ptm.getName(), residue + connector + Long.toString(Math.round(ptmMass))); } else { modIdMap.put(ptm.getName(), residue + connector + Long.toString(Math.round(ptmMass))); } } } } }
/** * Creates the Andromeda PTM file and saves the PTM indexes in the search parameters. * * @param andromedaFolder the Andromeda installation folder * @param identificationParameters the identification parameters * @param identificationParametersFile the file where to save the search parameters * @throws IOException exception thrown whenever an error occurs while writing to the file. * @throws java.lang.ClassNotFoundException exception thrown whenever an error occurred while * saving the search parameters */ public static void createPtmFile( File andromedaFolder, IdentificationParameters identificationParameters, File identificationParametersFile) throws IOException, ClassNotFoundException { File file = new File(andromedaFolder, "conf"); file = new File(file, "modifications.xml"); BufferedWriter bw = new BufferedWriter(new FileWriter(file)); int index = 0; String date = "0001-01-01T00:00:00"; PTMFactory ptmFactory = PTMFactory.getInstance(); SearchParameters searchParameters = identificationParameters.getSearchParameters(); AndromedaParameters andromedaParameters = (AndromedaParameters) searchParameters.getIdentificationAlgorithmParameter(Advocate.andromeda.getIndex()); try { bw.write("<?xml version=\"1.0\" encoding=\"utf-8\"?>"); bw.newLine(); bw.write( "<modifications xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\">"); bw.newLine(); // add the default ptms for (String ptmName : ptmFactory.getDefaultModifications()) { PTM ptm = ptmFactory.getPTM(ptmName); writePtm(bw, date, ptm, index); andromedaParameters.setPtmIndex(ptmName, index); index++; } // add the user ptms for (String ptmName : ptmFactory.getUserModifications()) { PTM ptm = ptmFactory.getPTM(ptmName); writePtm(bw, date, ptm, index); andromedaParameters.setPtmIndex(ptmName, index); index++; } bw.write("</modifications>"); bw.newLine(); } finally { bw.close(); } IdentificationParameters.saveIdentificationParameters( identificationParameters, identificationParametersFile); }