diff --git a/ms2/src/org/labkey/ms2/MS2Run.java b/ms2/src/org/labkey/ms2/MS2Run.java index 7e3af46fb2..dc9e139248 100644 --- a/ms2/src/org/labkey/ms2/MS2Run.java +++ b/ms2/src/org/labkey/ms2/MS2Run.java @@ -24,11 +24,12 @@ import org.labkey.api.protein.MassType; import org.labkey.api.query.FieldKey; import org.labkey.api.util.MemTracker; +import org.labkey.api.util.logging.LogHelper; import org.labkey.api.view.ViewContext; import org.springframework.web.servlet.ModelAndView; import java.io.Serializable; -import java.util.ArrayList; +import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.HashMap; import java.util.List; @@ -36,7 +37,7 @@ public abstract class MS2Run implements Serializable { - private static Logger _log = LogManager.getLogger(MS2Run.class); + private static final Logger _log = LogHelper.getLogger(MS2Run.class, "MS2 runs"); protected final static String[] EMPTY_STRING_ARRAY = new String[0]; @@ -187,11 +188,11 @@ public static MS2Run getRunFromTypeString(String type, String version) try { - MS2Run run = runType.getRunClass().newInstance(); + MS2Run run = runType.getRunClass().getDeclaredConstructor().newInstance(); run.setType(runType.name()); return run; } - catch (IllegalAccessException | InstantiationException e) + catch (IllegalAccessException | InstantiationException | NoSuchMethodException | InvocationTargetException e) { throw new RuntimeException(e); } @@ -238,62 +239,6 @@ public int[] getFastaIds() return _fastaIds; } - // CONSIDER: extend Apache ListOrderedSet (ideally) or our ArrayListMap. - public static class ColumnNameList extends ArrayList - { - public ColumnNameList(Collection columnNames) - { - for (String s : columnNames) - { - add(s); - } - } - - public ColumnNameList(String csvColumnNames) - { - super(20); - - String[] arrayColumnNames = csvColumnNames.split(","); - for (String arrayColumnName : arrayColumnNames) - add(arrayColumnName.trim()); - } - - @Override - public boolean add(String o) - { - return super.add(o.toLowerCase()); - } - - public ColumnNameList() - { - super(20); - } - - @Override - public boolean contains(Object elem) - { - if (elem instanceof String) - { - return super.contains(((String)elem).toLowerCase()); - } - return super.contains(elem); - } - - public String toCSVString() - { - StringBuffer sb = new StringBuffer(); - for (Object o : this) - { - if (sb.length() > 0) - sb.append(','); - - sb.append(o); - } - return sb.toString(); - } - } - - public int getRun() { return run; diff --git a/ms2/src/org/labkey/ms2/MS2RunType.java b/ms2/src/org/labkey/ms2/MS2RunType.java index 2ad31b9302..65e3b6718d 100644 --- a/ms2/src/org/labkey/ms2/MS2RunType.java +++ b/ms2/src/org/labkey/ms2/MS2RunType.java @@ -26,6 +26,7 @@ import org.labkey.ms2.pipeline.comet.CometRun; import org.labkey.ms2.pipeline.comet.LegacyCometRun; import org.labkey.ms2.pipeline.mascot.MascotRun; +import org.labkey.ms2.pipeline.peaks.PeaksRun; import org.labkey.ms2.pipeline.phenyx.PhenyxRun; import org.labkey.ms2.pipeline.sequest.SequestRun; import org.labkey.ms2.pipeline.tandem.XCometRun; @@ -114,6 +115,8 @@ public boolean isPeptideTableHidden() return true; } }, + PeaksDb(PeaksRun.class, + new ScoreInfo("-10lgP", "-10lgP")), Unknown(UnknownMS2Run.class) { @Override diff --git a/ms2/src/org/labkey/ms2/PeptideImporter.java b/ms2/src/org/labkey/ms2/PeptideImporter.java index d3fca7b70c..6f551b0577 100644 --- a/ms2/src/org/labkey/ms2/PeptideImporter.java +++ b/ms2/src/org/labkey/ms2/PeptideImporter.java @@ -26,7 +26,10 @@ import org.labkey.api.protein.fasta.FastaDbLoader; import org.labkey.api.query.FieldKey; import org.labkey.api.security.User; +import org.labkey.api.util.FileUtil; +import org.labkey.api.util.NetworkDrive; import org.labkey.api.util.PageFlowUtil; +import org.labkey.ms2.pipeline.MS2PipelineManager; import org.labkey.ms2.reader.AbstractQuantAnalysisResult; import org.labkey.ms2.reader.MS2Loader; import org.labkey.ms2.reader.PeptideProphetHandler; @@ -127,6 +130,42 @@ public void writeRunInfo(MS2Loader.PeptideFraction fraction, MS2Progress progres dbPaths.add(dbPath); } + // Handle PEAKS FASTA references + for (String dbName : fraction.getDatabaseParameterValues()) + { + File database = null; + + // First look in the FASTA directory, with and without a .fasta extension + File databaseRoot = MS2PipelineManager.getSequenceDatabaseRoot(_container, true); + if (NetworkDrive.exists(databaseRoot)) + { + database = FileUtil.appendName(databaseRoot, dbName); + if (!NetworkDrive.exists(database)) + { + database = FileUtil.appendName(databaseRoot, dbName + ".fasta"); + } + } + + // Also try relative to the file being imported, with and without a .fasta extension + if (!NetworkDrive.exists(database)) + { + database = FileUtil.appendName(new File(_path), dbName); + } + if (!NetworkDrive.exists(database)) + { + database = FileUtil.appendName(new File(_path), dbName + ".fasta"); + } + + if (NetworkDrive.exists(database)) + { + dbPaths.add(database.getAbsolutePath()); + } + else + { + _log.warn("Could not find FASTA " + dbName); + } + } + try { // Clear any stale values so we can re-insert @@ -192,7 +231,7 @@ protected String getTableColumnNames() columnNames.append(", HitRank"); columnNames.append(", Decoy"); - return super.getTableColumnNames() + columnNames.toString(); + return super.getTableColumnNames() + columnNames; } @@ -299,7 +338,7 @@ public void write(MS2Loader.Peptide peptide, PeptideProphetSummary peptideProphe // If we have quantitation, use the statement that reselects the rowId; otherwise, use the simple insert statement PeptideProphetHandler.PeptideProphetResult pp = peptide.getPeptideProphetResult(); boolean hasProphet = (_scoringAnalysis && pp != null && pp.isSummaryLoaded()); - boolean hasQuant = (null != _quantSummaries && _quantSummaries.size() > 0); + boolean hasQuant = (null != _quantSummaries && !_quantSummaries.isEmpty()); if (hasProphet || hasQuant) { diff --git a/ms2/src/org/labkey/ms2/filterHeader.jsp b/ms2/src/org/labkey/ms2/filterHeader.jsp index 97d98bd648..fe88f922ab 100644 --- a/ms2/src/org/labkey/ms2/filterHeader.jsp +++ b/ms2/src/org/labkey/ms2/filterHeader.jsp @@ -50,12 +50,12 @@ - - + + - -
<%=bean.applyView%><%= button("Go").submit(true) %><%=bean.applyView%><%= button("Go").submit(true) %>     <% if (!user.isGuest()) { %> + <% if (!user.isGuest()) { %> <%= button("Save View").href(bean.saveViewURL) %><% } %><% if (!user.isGuest()) { %> + <% if (!user.isGuest()) { %> <%= button("Manage Views").href(bean.manageViewsURL) %><% } %>
diff --git a/ms2/src/org/labkey/ms2/pipeline/peaks/PeaksRun.java b/ms2/src/org/labkey/ms2/pipeline/peaks/PeaksRun.java new file mode 100644 index 0000000000..1aff0a8540 --- /dev/null +++ b/ms2/src/org/labkey/ms2/pipeline/peaks/PeaksRun.java @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2008-2019 LabKey Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.labkey.ms2.pipeline.peaks; + +import org.labkey.ms2.MS2Run; +import org.labkey.ms2.MS2RunType; + +/** + * Support for PEAKS data, exported as pepXML + */ +public class PeaksRun extends MS2Run +{ + @Override + public MS2RunType getRunType() + { + return MS2RunType.PeaksDb; + } + + @Override + public String getParamsFileName() + { + return "peaks.xml"; + } + + @Override + public String getChargeFilterColumnName() + { + return "-10lgP"; + } + + @Override + public String getChargeFilterParamName() + { + return "-10lgP"; + } + + @Override + public String getDiscriminateExpressions() + { + return null; + } + + @Override + public String[] getGZFileExtensions() + { + return new String[0]; + } +} diff --git a/ms2/src/org/labkey/ms2/query/PeptidesTableInfo.java b/ms2/src/org/labkey/ms2/query/PeptidesTableInfo.java index 13032abda3..4a1636c711 100644 --- a/ms2/src/org/labkey/ms2/query/PeptidesTableInfo.java +++ b/ms2/src/org/labkey/ms2/query/PeptidesTableInfo.java @@ -20,7 +20,6 @@ import org.labkey.api.data.ColumnInfo; import org.labkey.api.data.ContainerFilter; import org.labkey.api.data.DataColumn; -import org.labkey.api.data.DisplayColumn; import org.labkey.api.data.DisplayColumnFactory; import org.labkey.api.data.JdbcType; import org.labkey.api.data.SQLFragment; @@ -132,10 +131,10 @@ public PeptidesTableInfo(MS2Schema schema, ActionURL url, ContainerFilter contai @Override public TableInfo getLookupTableInfo() { - FilteredTable result = new FilteredTable<>(MS2Manager.getTableInfoQuantitation(), getUserSchema()); + FilteredTable result = new FilteredTable<>(MS2Manager.getTableInfoQuantitation(), getUserSchema()); result.wrapAllColumns(true); - result.getMutableColumn("PeptideId").setHidden(true); - result.getMutableColumn("QuantId").setHidden(true); + result.getMutableColumnOrThrow("PeptideId").setHidden(true); + result.getMutableColumnOrThrow("QuantId").setHidden(true); return result; } }); @@ -150,9 +149,9 @@ public TableInfo getLookupTableInfo() @Override public TableInfo getLookupTableInfo() { - FilteredTable result = new FilteredTable<>(MS2Manager.getTableInfoITraqPeptideQuantitation(), getUserSchema()); + FilteredTable result = new FilteredTable<>(MS2Manager.getTableInfoITraqPeptideQuantitation(), getUserSchema()); result.wrapAllColumns(true); - result.getMutableColumn("PeptideId").setHidden(true); + result.getMutableColumnOrThrow("PeptideId").setHidden(true); SQLFragment sumSQL = new SQLFragment( "(COALESCE (" + ExprColumn.STR_TABLE_ALIAS + ".AbsoluteIntensity1, 0) + " + @@ -208,9 +207,9 @@ public TableInfo getLookupTableInfo() @Override public TableInfo getLookupTableInfo() { - FilteredTable table = new FilteredTable<>(MS2Manager.getTableInfoPeptideProphetData(), getUserSchema()); + FilteredTable table = new FilteredTable<>(MS2Manager.getTableInfoPeptideProphetData(), getUserSchema()); table.wrapAllColumns(true); - table.getMutableColumn("PeptideId").setHidden(true); + table.getMutableColumnOrThrow("PeptideId").setHidden(true); return table; } }); @@ -232,14 +231,14 @@ public TableInfo getLookupTableInfo() dataColumn.setLinkTarget("peptide"); return dataColumn; }; - getMutableColumn("Scan").setURL(StringExpressionFactory.createURL(showPeptideURL)); - getMutableColumn("Scan").setDisplayColumnFactory(factory); - getMutableColumn("Peptide").setURL(StringExpressionFactory.createURL(showPeptideURL)); - getMutableColumn("Peptide").setDisplayColumnFactory(factory); + getMutableColumnOrThrow("Scan").setURL(StringExpressionFactory.createURL(showPeptideURL)); + getMutableColumnOrThrow("Scan").setDisplayColumnFactory(factory); + getMutableColumnOrThrow("Peptide").setURL(StringExpressionFactory.createURL(showPeptideURL)); + getMutableColumnOrThrow("Peptide").setDisplayColumnFactory(factory); addScoreColumns(); - getMutableColumn("Fraction").setFk(new LookupForeignKey("Fraction") + getMutableColumnOrThrow("Fraction").setFk(new LookupForeignKey("Fraction") { @Override public TableInfo getLookupTableInfo() @@ -360,11 +359,13 @@ private void addHighestScoreFilter() MS2Run run = runs.get(0); // all run types are the same, so just get the first one String chargeColumnName = run.getChargeFilterColumnName(); int index = runType.getScoreColumnList().indexOf(FieldKey.fromParts(chargeColumnName)); // all run types are the same, so re-use runType - String databaseScoreColumn = "Score" + String.valueOf(index + 1); // db columns are 1-indexed + String databaseScoreColumn = "Score" + (index + 1); // db columns are 1-indexed SQLFragment sql = new SQLFragment(); sql.append("RowId IN (SELECT RowId FROM \n"); - sql.append(" (SELECT RowId, row_number() OVER(PARTITION BY Peptide ORDER BY " + databaseScoreColumn + " DESC) as RowNum FROM "); + sql.append(" (SELECT RowId, row_number() OVER(PARTITION BY Peptide ORDER BY "); + sql.append(databaseScoreColumn); + sql.append(" DESC) as RowNum FROM "); sql.append(MS2Manager.getTableInfoPeptidesData(), "pep"); sql.append(" JOIN "); sql.append(MS2Manager.getTableInfoFractions(), "fra"); @@ -399,13 +400,13 @@ public TableInfo getLookupTableInfo() } }; fk.setPrefixColumnCaption(false); - getMutableColumn("SeqId").setFk(fk); + getMutableColumnOrThrow("SeqId").setFk(fk); - getMutableColumn("SeqId").setURL(StringExpressionFactory.createURL(showProteinURL)); - getMutableColumn("SeqId").setDisplayColumnFactory(new ProteinDisplayColumnFactory(_userSchema.getContainer())); - getMutableColumn("SeqId").setLabel("Search Engine Protein"); - getMutableColumn("Protein").setURL(StringExpressionFactory.createURL(showProteinURL)); - getMutableColumn("Protein").setDisplayColumnFactory(new ProteinDisplayColumnFactory(_userSchema.getContainer())); + getMutableColumnOrThrow("SeqId").setURL(StringExpressionFactory.createURL(showProteinURL)); + getMutableColumnOrThrow("SeqId").setDisplayColumnFactory(new ProteinDisplayColumnFactory(_userSchema.getContainer())); + getMutableColumnOrThrow("SeqId").setLabel("Search Engine Protein"); + getMutableColumnOrThrow("Protein").setURL(StringExpressionFactory.createURL(showProteinURL)); + getMutableColumnOrThrow("Protein").setDisplayColumnFactory(new ProteinDisplayColumnFactory(_userSchema.getContainer())); } public static void addPeptideAggregationColumns(SequencesTableInfo tableInfo) @@ -439,16 +440,11 @@ private void addScoreColumns() for (MS2RunType runType : getRunTypes()) { int index = 1; - // Since some search engines have the same names for different scores, build a list of all of the + // Since some search engines have the same names for different scores, build a list of all the // possible interpretations for a given score name based on the run type for (FieldKey name : runType.getScoreColumnList()) { - List> l = columnMap.get(name); - if (l == null) - { - l = new ArrayList<>(); - columnMap.put(name, l); - } + List> l = columnMap.computeIfAbsent(name, k -> new ArrayList<>()); l.add(new Pair<>(runType, index++)); } } @@ -495,7 +491,7 @@ private Collection getRunTypes() List runs = _userSchema.getRuns(); Collection runTypes = new HashSet<>(Arrays.asList(_runTypes)); - if (runs != null && runs.size() > 0) + if (runs != null && !runs.isEmpty()) { Set usedRunTypes = new HashSet<>(); for (MS2Run run : runs) @@ -580,30 +576,19 @@ public String getPublicName() return _runTypes.length > 1 ? MS2Schema.TableType.Peptides.toString() : _runTypes[0].getPeptideTableName(); } - public static void addCalculatedColumns(FilteredTable table) + public static void addCalculatedColumns(FilteredTable table) { var hColumn = table.wrapColumn("H", table.getRealTable().getColumn("Peptide")); - hColumn.setDisplayColumnFactory(new DisplayColumnFactory() - { - @Override - public DisplayColumn createRenderer(ColumnInfo colInfo) - { - return new HydrophobicityColumn(colInfo); - } - }); + hColumn.setDisplayColumnFactory(HydrophobicityColumn::new); table.addColumn(hColumn); var deltaScanColumn = table.wrapColumn("DeltaScan", table.getRealTable().getColumn("Fraction")); - deltaScanColumn.setDisplayColumnFactory(new DisplayColumnFactory() - { - @Override - public DisplayColumn createRenderer(ColumnInfo colInfo) - { - return new DeltaScanColumn(colInfo); - } - }); + deltaScanColumn.setDisplayColumnFactory(DeltaScanColumn::new); deltaScanColumn.clearFk(); table.addColumn(deltaScanColumn); + + ExprColumn lengthCol = new ExprColumn(table, "Length", new SQLFragment(table.getSqlDialect().getVarcharLengthFunction() + "(Peptide)"), JdbcType.INTEGER); + table.addColumn(lengthCol); } @Override diff --git a/ms2/src/org/labkey/ms2/reader/MS2Loader.java b/ms2/src/org/labkey/ms2/reader/MS2Loader.java index 2deb03b70e..f57b54dc2a 100644 --- a/ms2/src/org/labkey/ms2/reader/MS2Loader.java +++ b/ms2/src/org/labkey/ms2/reader/MS2Loader.java @@ -17,7 +17,6 @@ package org.labkey.ms2.reader; import org.apache.logging.log4j.Logger; -import org.apache.logging.log4j.LogManager; import org.jetbrains.annotations.NotNull; import org.labkey.ms2.MS2Modification; @@ -68,6 +67,8 @@ public static class PeptideFraction protected String _searchEnzyme = null; protected Set _databaseLocalPaths = new LinkedHashSet<>(); + // PEAKS exports use to reference the FASTA used + protected Set _databaseParameterValues = new LinkedHashSet<>(); protected String _dataBasename; protected String _dataSuffix; protected String _spectrumPath = null; @@ -121,6 +122,12 @@ public Set getDatabaseLocalPaths() return _databaseLocalPaths; } + @NotNull + public Set getDatabaseParameterValues() + { + return _databaseParameterValues; + } + public String getSpectrumPath() { return _spectrumPath; diff --git a/ms2/src/org/labkey/ms2/reader/MS2ModificationList.java b/ms2/src/org/labkey/ms2/reader/MS2ModificationList.java index b961188980..c8acb2c549 100644 --- a/ms2/src/org/labkey/ms2/reader/MS2ModificationList.java +++ b/ms2/src/org/labkey/ms2/reader/MS2ModificationList.java @@ -45,7 +45,7 @@ public MS2Modification get(String aa) } - private static final String _symbols = "'\"~#*@!$%&:0123456789"; + private static final String _symbols = "'\"~#*@!$%&:0123456789{}[];|<>,.`\\/_+=abcdefghijklmnopqrstuvwxyz"; // Fills in unique modification symbols if they haven't been specified in the pepXML file. // This needs to be called explicitly after all modifications have been added. diff --git a/ms2/src/org/labkey/ms2/reader/PepXmlLoader.java b/ms2/src/org/labkey/ms2/reader/PepXmlLoader.java index e37d6cf4fe..ca9e270211 100644 --- a/ms2/src/org/labkey/ms2/reader/PepXmlLoader.java +++ b/ms2/src/org/labkey/ms2/reader/PepXmlLoader.java @@ -163,6 +163,7 @@ protected void assembleRunInfo() throws XMLStreamException _searchEngine = null; _searchEnzyme = null; _databaseLocalPaths = new LinkedHashSet<>(); + _databaseParameterValues = new LinkedHashSet<>(); handleMsMsRunSummary(); @@ -239,6 +240,9 @@ else if (element.equals("parameter")) if ("pipeline, load spectra".equals(name) || "pipeline, import spectra".equals(name)) _loadSpectra = !"no".equalsIgnoreCase(_parser.getAttributeValue(null, "value")); + + if ("database".equalsIgnoreCase(name)) + _databaseParameterValues.add(_parser.getAttributeValue(null, "value")); } } else @@ -589,6 +593,10 @@ protected void processStartElement(int index) throws XMLStreamException _deltaMass = 0.0f; else _deltaMass = Float.parseFloat(massDiff); + if (Float.isInfinite(_deltaMass)) + { + _deltaMass = 1000000f; + } // Create protein lookup string that matches the way we import FASTA files (which matches what Comet does) String proteinName = _parser.getAttributeValue(null, "protein"); diff --git a/ms2/test/sampledata/xarfiles/ms2pipe/peaks/peaks.pep.xml b/ms2/test/sampledata/xarfiles/ms2pipe/peaks/peaks.pep.xml new file mode 100644 index 0000000000..fc0a874909 --- /dev/null +++ b/ms2/test/sampledata/xarfiles/ms2pipe/peaks/peaks.pep.xml @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ms2/test/sampledata/xarfiles/ms2pipe/peaks/peaksMinimal.fasta b/ms2/test/sampledata/xarfiles/ms2pipe/peaks/peaksMinimal.fasta new file mode 100644 index 0000000000..c226958f61 --- /dev/null +++ b/ms2/test/sampledata/xarfiles/ms2pipe/peaks/peaksMinimal.fasta @@ -0,0 +1,181 @@ +>sp|P58107|EPIPL_HUMAN Epiplakin OS=Homo sapiens OX=9606 GN=EPPK1 PE=1 SV=3 +MSGHTLPPLPVPGTNSTEQASVPRAMAATLGAGTPPRPQARSIAGVYVEASGQAQSVYAA +MEQGLLPAGLGQALLEAQAATGGLVDLARGQLLPVSKALQQGLVGLELKEKLLAAERATT +GYPDPYGGEKLALFQAIGKEVVDRALGQSWLEVQLATGGLVDPAQGVLVAPEPACHQGLL +DRETWHKLSELEPGTGDLRFLDPNTLERLTYHQLLERCVRAPGSGLALLPLKITFRSMGG +AVSAAELLEVGILDEQAVQGLREGRLAAVDVSARAEVRRYLEGTGSVAGVVLLPEGHKKS +FFQAATEHLLPMGTALPLLEAQAATHTLVDPITGQRLWVDEAVRAGLVSPELHEQLLVAE +QAVTGHHDPFSGSQIPLFQAMKKGLVDRPLALRLLDAQLATGGLVCPARRLRLPLEAALR +CGCLDEDTQRQLSQAGSFSDGTHGGLRYEQLLALCVTDPETGLAFLPLSGGPRGGEPQGP +PFIKYSTRQALSTATATVSVGKFRGRPVSLWELLFSEAISSEQRAMLAQQYQEGTLSVEK +LAAKLSATLEQAAATARVTFSGLRDTVTPGELLKAEIIDQDLYERLEHGQATAKDVGSLA +SVQRYLQGTGCIAGLLLPGSQERLSIYEARCKGLLRPGTALILLEAQAATGFIIDPKANK +GHSVEEALRAAVIGPDVFAKLLSAERAVTGYTDPYTGQQISLFQAMQKGLIVREHGIRLL +EAQIATGGVIDPVHSHRVPVDVAYRRGYFDQMLNLILLDPSDDTKGFFDPNTHENLTYLQ +LLERCVRDPETGLYLLPLSSTQSPLVDSATQQAFQNLLLSVKYGRFQGQRVSAWELINSE +YFSEGRRRQLLRRYRQREVTLGQVAKLLEAETQRQADIMLPALRSRVTVHQLLEAGIIDQ +QLLDQVLAGTISPEALLLMDGVRRYLCGLGAVGGVRLLPSGQRLSLYQAMRQKLLGPRVA +LALLEAQAATGTIMDPHSPESLSVDEAVRRGVVGPELYGRLKRAEGAIAGFRDPFSGKQV +SVFQAMKKGLIPWEQAARLLEAQVATGGIIDPTSHHHLPMPVAIQRGYVDQEMETALSSS +SETFPTPDGQGRTSYAQLLEECPRDETSGLHLLPLPESAPALPTEEQVQRSLQAVPGAKD +GTSLWDLLSSCHFTEEQRRGLLEDVQEGRTTVPQLLASVQRWVQETKLLAQARVMVPGPR +GEVPAVWLLDAGIITQETLEALAQGTQSPAQVAEQPAVKACLWGTGCVAGVLLQPSGAKA +SIAQAVRDGLLPTGLGQRLLEAQVASGFLVDPLNNQRLSVEDAVKVGLVGRELSEQLGQA +ERAAAGYPDPYSRASLSLWQAMEKGLVPQNEGLPLLQVQLATGGVVDPVHGVHLPQAAAC +RLGLLDTQTSQVLTAVDKDNKFFFDPSARDQVTYQQLRERCVCDSETGLLLLPLPSDTVL +EVDDHTAVALRAMKVPVSTGRFKGCSVSLWDLLLSEYVGADKRRELVALCRSGRAAALRQ +VVSAVTTLVEAAERQPLQATFRGLRKQVSARDLFRAQLISRKTLDELSQGTTTVKEVAEM +DSVKRSLEGGNFIAGVLIQGTQERMSIPEALRRHILRPGTALVLLEAQAATGFIIDPVEN +RKLTVEEAFKAGMFGKETYVKLLSAERAVTGYTDPYTGQQISLFQAMQKDLIVREHGIRL +LEAQIATGGIIDPVHSHRVPVDVAYRCGYFDEEMNRILADPSDDTKGFFDPNTHENLTYL +QLLERCVEDPETGLYLLQIIKKGENYVYINEATRHVLQSRTAKMRVGRFADQVVSFWDLL +SSPYFTEDRKRELIQEYGAQSGGLEKLLEIITTTIEETETQNQGIKVAAIRGEVTAADLF +NSRVIDQKTLHTLRVGRTGGQALSTLECVKPYLEGSGCIAGVTVPSTREVMSLHEASRKE +LIPAAFATWLLEAQAATGFLLDPCTRQKLSVDEAVDVGLVNEELRERLLKAERAATGYRD +PATGDTIPLFQAMQKQLIEKAEALRLLEVQVATGGVIDPQHHHRLPLETAYRRGCLHKDI +YALISDQKHMRKRFVDPNTQEKVSYRELQERCRPQEDTGWLLFPVNKAARDSEHIDDETR +RALEAEQVEITVGRFRGQKPTLWALLNSEYVTEEKKLQLVRMYRTHTRRALQTVAQLILE +LIEKQETSNKHLWFQGIRRQITASELLSSAIITEEMLQDLETGRSTTQELMEDDRVKRYL +EGTSCIAGVLVPAKDQPGRQEKMSIYQAMWKGVLRPGTALVLLEAQAATGFVIDPVRNLR +LSVEEAVAAGVVGGEIQEKLLSAERAVTGYTDPYTGQQISLFQAMQKDLIVREHGIRLLE +AQIATGGVIDPVHSHRVPVDVAYRRGYFDEEMNRVLADPSDDTKGFFDPNTHENLTYVQL +LRRCVPDPDTGLYMLQLAGRGSAVHQLSEELRCALRDARVTPGSGALQGQSVSVWELLFY +REVSEDRRQDLLSRYRAGTLTVEELGATLTSLLAQAQAQARAEAEAGSPRPDPREALRAA +TMEVKVGRLRGRAVPVWDVLASGYVSRAAREELLAEFGSGTLDLPALTRRLTAIIEEAEE +APGARPQLQDAWRGPREPGPAGRGDGDSGRSQREGQGEGETQEAAAAAAAAAARRQEQTL +RDATMEVQRGQFQGRPVSVWDVLFSSYLSEARRDELLAQHAAGALGLPDLVAVLTRVIEE +TEERLSKVSFRGLRRQVSASELHTSGILGPETLRDLAQGTKTLQEVTEMDSVKRYLEGTS +CIAGVLVPAKDQPGRQEKMSIYQAMWKGVLRPGTALVLLEAQAATGFVIDPVRNLRLSVE +EAVAAGVVGGEIQEKLLSAERAVTGYTDPYTGQQISLFQAMQKDLIVREHGIRLLEAQIA +TGGVIDPVHSHRVPVDVAYQRGYFDEEMNRVLADPSDDTKGFFDPNTHENLTYVQLLRRC +VPDPDTGLYMLQLAGRGSAVHQLSEELRCALRDARVTPGSGALQGQSVSVWELLFYREVS +EDRRQDLLSRYRAGTLTVEELGATLTSLLAQAQAQARAEAEAGSPRPDPREALRAATMEV +KVGRLRGRAVPVWDVLASGYVSRAAREELLAEFGSGTLDLPALTRRLTAIIEEAEEAPGA +RPQLQDAWRGPREPGPAGRGDGDSGRSQREGQGEGETQEAAAAARRQEQTLRDATMEVQR +GQFQGRPVSVWDVLFSSYLSEARRDELLAQHAAGALGLPDLVAVLTRVIEETEERLSKVS +FRGLRCQVSASELHTSGILGPETLRDLAQGTKTLQEVTEMDSVKRYLEGTSCIAGVLVPA +KDQPGRQEKMSIYQAMWKGVLRPGTALVLLEAQAATGFVIDPVRNLRLSVEEAVAAGVVG +GEIQEKLLSAERAVTGYTDPYTGQQISLFQAMQKDLIVREHGIRLLEAQIATGGVIDPVH +SHRVPVDVAYRRGYFDEEMNRVLADPSDDTKGFFDPNTHENLTYVQLLRRCVPDPDTGLY +MLQLAGRGSAVHQLSEELRCALRDARVTPGSGALQGQSVSVWELLFYREVSEDRRQDLLS +RYRAGTLTVEELGATLTSLLAQAQAQARAEAEAGSPRPDPREALRAATMEVKVGRLRGRA +VPVWDVLASGYVSRAAREELLAEFGSGTLDLPALTRRLTAIIEEAEEAPGARPQLQDAWR +GPREPGPAGRGDGDSGRSQREGQGEGETQEAAAATAAARRQEQTLRDATMEVQRGQFQGR +PVSVWDVLFSSYLSEARRDELLAQHAAGALGLPDLVAVLTRVIEETEERLSKVSFRGLRR +QVSASELHTSGILGPETLRDLAQGTKTLQEVTEMDSVKRYLEGTSCIAGVLVPAKDQPGR +QEKMSIYQAMWKGVLRPGTALVLLEAQAATGFVIDPVRNLRLSVEEAVAAGVVGGEIQEK +LLSAERAVTGYTDPYTGQQISLFQAMQKDLIVREHGIRLLEAQIATGGVIDPVHSHRVPV +DVAYRRGYFDEEMNRVLADPSDDTKGFFDPNTHENLTYVQLLRRCVPDPDTGLYMLQLAG +RGSAVHQLSEELRCALRDARVTPGSGALQGQSVSVWELLFYREVSEDRRQDLLSRYRAGT +LTVEELGATLTSLLAQAQAQARAEAEAGSPRPDPREALRAATMEVKVGRLRGRAVPVWDV +LASGYVSRAAREELLAEFGSGTLDLPALTRRLTAIIEEAEEAPGARPQLQDAWRGPREPG +PAGRGDGDSGRSQREGQGEGETQEAAAATAAARRQEQTLRDATMEVQRGQFQGRPVSVWD +VLFSSYLSEARRDELLAQHAAGALGLPDLVAVLTRVIEETEERLSKVSFRGLRRQVSASE +LHTSGILGPETLRDLAQGTKTLQEVTEMDSVKRYLEGTSCIAGVLVPAKDQPGHQEKMSI +YQAMWKGVLRPGTALVLLEAQAATGFVIDPVRNLRLSVEEAVAAGVVGGEIQEKLLSAER +AVTGYTDPYTGQQISLFQAMQKDLIVREHGIRLLEAQIATGGVIDPVHSHRVPVDVAYRR +GYFDEEMNRVLAHPSDDTKGFFDPNTHENLTYVQLLRRCVPDPDTGLYMLQLAGRGSAVH +QLSEELRCALRDARVMPGSGALQGQSVSVWELLFYREVSEDRRQDLLSRYRAGTLTVEEL +GATLTSLLAQAQAQARAEAEAEAGSPRPDPREALRAATMEVKVGRLRGRAVPVWDVLASG +YVSGAAREELLAEFGSGTLDLPALTRRLTAIIEEAEEAPGARPQLQDAWRGPREPGPAGR +GDGDSGRSQREGQGEGETQEAAAAARRQEQTLRDATMEVQRGQFQGRPVSVWDVLFSSYL +SEAHRDELLAQHAAGALGLPDLVAVLTRVIEETEERLSKVSFRGLRRQVSASELHTSGIL +GPETLRDLAQGTKTLQEVTEMDSVKRYLEGTSCIAGVLVPAKDQPGRQEKMSIYQAMWKG +VLRPGTALVLLEAQAATGFVIDPVRNLRLSVEEAVAAGVVGGEIQEKLLSAERAVTGYTD +PYTGQQISLFQAMQKDLIVREHGIRLLEAQIATGGVIDPVHSHRVPVDVAYRRGYFDEEM +NRVLADPSDDTKGFFDPNTHENLTYLQLLQRATLDPETGLLFLSLSLQ +>sp|P49368|TCPG_HUMAN T-complex protein 1 subunit gamma OS=Homo sapiens OX=9606 GN=CCT3 PE=1 SV=4 +MMGHRPVLVLSQNTKRESGRKVQSGNINAAKTIADIIRTCLGPKSMMKMLLDPMGGIVMT +NDGNAILREIQVQHPAAKSMIEISRTQDEEVGDGTTSVIILAGEMLSVAEHFLEQQMHPT +VVISAYRKALDDMISTLKKISIPVDISDSDMMLNIINSSITTKAISRWSSLACNIALDAV +KMVQFEENGRKEIDIKKYARVEKIPGGIIEDSCVLRGVMINKDVTHPRMRRYIKNPRIVL +LDSSLEYKKGESQTDIEITREEDFTRILQMEEEYIQQLCEDIIQLKPDVVITEKGISDLA +QHYLMRANITAIRRVRKTDNNRIARACGARIVSRPEELREDDVGTGAGLLEIKKIGDEYF +TFITDCKDPKACTILLRGASKEILSEVERNLQDAMQVCRNVLLDPQLVPGGGASEMAVAH +ALTEKSKAMTGVEQWPYRAVAQALEVIPRTLIQNCGASTIRLLTSLRAKHTQENCETWGV +NGETGTLVDMKELGIWEPLAVKLQTYKTAVETAVLLLRIDDIVSGHKKKGDDQSRQGGAP +DAGQE +>sp|O14467|MBF1_YEAST Multiprotein-bridging factor 1 OS=Saccharomyces cerevisiae (strain ATCC 204508 / S288c) OX=559292 GN=MBF1 PE=1 SV=2 +MSDWDTNTIIGSRARAGGSGPRANVARSQGQINAARRQGLVVSVDKKYGSTNTRGDNEGQ +RLTKVDRETDIVKPKKLDPNVGRAISRARTDKKMSQKDLATKINEKPTVVNDYEAARAIP +NQQVLSKLERALGVKLRGNNIGSPLGAPKKK +>sp|Q15365|PCBP1_HUMAN Poly(rC)-binding protein 1 OS=Homo sapiens OX=9606 GN=PCBP1 PE=1 SV=2 +MDAGVTESGLNVTLTIRLLMHGKEVGSIIGKKGESVKRIREESGARINISEGNCPERIIT +LTGPTNAIFKAFAMIIDKLEEDINSSMTNSTAASRPPVTLRLVVPATQCGSLIGKGGCKI +KEIRESTGAQVQVAGDMLPNSTERAITIAGVPQSVTECVKQICLVMLETLSQSPQGRVMT +IPYQPMPASSPVICAGGQDRCSDAAGYPHATHDLEGPPLDAYSIQGQHTISPLDLAKLNQ +VARQQSHFAMMHGGTGFAGIDSSSPEVKGYWASLDASTQTTHELTIPNNLIGCIIGRQGA +NINEIRQMSGAQIKIANPVEGSSGRQVTITGSAASISLAQYLINARLSSEKGMGCS +>sp|Q15366|PCBP2_HUMAN Poly(rC)-binding protein 2 OS=Homo sapiens OX=9606 GN=PCBP2 PE=1 SV=1 +MDTGVIEGGLNVTLTIRLLMHGKEVGSIIGKKGESVKKMREESGARINISEGNCPERIIT +LAGPTNAIFKAFAMIIDKLEEDISSSMTNSTAASRPPVTLRLVVPASQCGSLIGKGGCKI +KEIRESTGAQVQVAGDMLPNSTERAITIAGIPQSIIECVKQICVVMLETLSQSPPKGVTI +PYRPKPSSSPVIFAGGQDRYSTGSDSASFPHTTPSMCLNPDLEGPPLEAYTIQGQYAIPQ +PDLTKLHQLAMQQSHFPMTHGNTGFSGIESSSPEVKGYWGLDASAQTTSHELTIPNDLIG +CIIGRQGAKINEIRQMSGAQIKIANPVEGSTDRQVTITGSAASISLAQYLINVRLSSETG +GMGSS +>tr|A0A3Q1LX34|A0A3Q1LX34_BOVIN Poly(rC) binding protein 2 OS=Bos taurus OX=9913 GN=PCBP2 PE=1 SV=2 +MDTGVIEGGLNVTLTIRLLMHGKEVGSIIGKKGESVKKMREESGARINISEGNCPERIIT +LAGPTNAIFKAFAMIIDKLEEDISSSMTNSTAASRPPVTLRLVVPASQCGSLIGKGGCKI +KEIRESTGAQVQVAGDMLPNSTERAITIAGIPQSIIECVKQICVVMLESPPKGVTIPYRP +KPSSSPVIFAGGQDRYSTGSDSASFPHTTPSMCLNPDLEGPPLEAYTIQGQYAIPQPDLT +KLHQLAMQQSHFPMTHGNTGFSAGLDASAQTTSHELTIPNDLIGCIIGRQGAKINEIRQM +SGAQIKIANPVEGSTDRQVTITGSAASISLAQYLINVSLENAKPSSQAASVTIPDHLSIN +LSQPSTPSSSSSSSTTTPSLATAGTSDAPSSLPNPLPTAPCVSSLLGMKPIPLLALNVVS +AAKGTGASATTTTTSAVPCVTNKLKGEKQRFSPY +>sp|P57721|PCBP3_HUMAN Poly(rC)-binding protein 3 OS=Homo sapiens OX=9606 GN=PCBP3 PE=1 SV=2 +MGEGDAFWAPSVLPHSTLSTLSHHPQPQFGRRMESKVSEGGLNVTLTIRLLMHGKEVGSI +IGKKGETVKKMREESGARINISEGNCPERIVTITGPTDAIFKAFAMIAYKFEEDIINSMS +NSPATSKPPVTLRLVVPASQCGSLIGKGGSKIKEIRESTGAQVQVAGDMLPNSTERAVTI +SGTPDAIIQCVKQICVVMLESPPKGATIPYRPKPASTPVIFAGGQAYTIQGQYAIPHPDQ +LTKLHQLAMQQTPFPPLGQTNPAFPGEKLPLHSSEEAQNLMGQSSGLDASPPASTHELTI +PNDLIGCIIGRQGTKINEIRQMSGAQIKIANATEGSSERQITITGTPANISLAQYLINAR +LTSEVTGMGTL +>sp|Q29RF7|PDS5A_HUMAN Sister chromatid cohesion protein PDS5 homolog A OS=Homo sapiens OX=9606 GN=PDS5A PE=1 SV=1 +MDFTAQPKPATALCGVVSADGKIAYPPGVKEITDKITTDEMIKRLKMVVKTFMDMDQDSE +DEKQQYLPLALHLASEFFLRNPNKDVRLLVACCLADIFRIYAPEAPYTSHDKLKDIFLFI +TRQLKGLEDTKSPQFNRYFYLLENLAWVKSYNICFELEDCNEIFIQLFRTLFSVINNSHN +KKVQMHMLDLMSSIIMEGDGVTQELLDSILINLIPAHKNLNKQSFDLAKVLLKRTVQTIE +ACIANFFNQVLVLGRSSVSDLSEHVFDLIQELFAIDPHLLLSVMPQLEFKLKSNDGEERL +AVVRLLAKLFGSKDSDLATQNRPLWQCFLGRFNDIHVPVRLESVKFASHCLMNHPDLAKD +LTEYLKVRSHDPEEAIRHDVIVTIITAAKRDLALVNDQLLGFVRERTLDKRWRVRKEAMM +GLAQLYKKYCLHGEAGKEAAEKVSWIKDKLLHIYYQNSIDDKLLVEKIFAQYLVPHNLET +EERMKCLYYLYASLDPNAVKALNEMWKCQNMLRSHVRELLDLHKQPTSEANCSAMFGKLM +TIAKNLPDPGKAQDFVKKFNQVLGDDEKLRSQLELLISPTCSCKQADICVREIARKLANP +KQPTNPFLEMVKFLLERIAPVHIDSEAISALVKLMNKSIEGTADDEEEGVSPDTAIRSGL +ELLKVLSFTHPTSFHSAETYESLLQCLRMEDDKVAEAAIQIFRNTGHKIETDLPQIRSTL +IPILHQKAKRGTPHQAKQAVHCIHAIFTNKEVQLAQIFEPLSRSLNADVPEQLITPLVSL +GHISMLAPDQFASPMKSVVANFIVKDLLMNDRSTGEKNGKLWSPDEEVSPEVLAKVQAIK +LLVRWLLGMKNNQSKSANSTLRLLSAMLVSEGDLTEQKRISKSDMSRLRLAAGSAIMKLA +QEPCYHEIITPEQFQLCALVINDECYQVRQIFAQKLHKALVKLLLPLEYMAIFALCAKDP +VKERRAHARQCLLKNISIRREYIKQNPMATEKLLSLLPEYVVPYMIHLLAHDPDFTRSQD +VDQLRDIKECLWFMLEVLMTKNENNSHAFMKKMAENIKLTRDAQSPDESKTNEKLYTVCD +VALCVINSKSALCNADSPKDPVLPMKFFTQPEKDFCNDKSYISEETRVLLLTGKPKPAGV +LGAVNKPLSATGRKPYVRSTGTETGSNINVNSELNPSTGNRSREQSSEAAETGVSENEEN +PVRIISVTPVKNIDPVKNKEINSDQATQGNISSDRGKKRTVTAAGAENIQQKTDEKVDES +GPPAPSKPRRGRRPKSESQGNATKNDDLNKPINKGRKRAAVGQESPGGLEAGNAKAPKLQ +DLAKKAAPAERQIDLQR +>tr|E1BKG4|E1BKG4_BOVIN PDS5 cohesin associated factor A OS=Bos taurus OX=9913 GN=PDS5A PE=3 SV=3 +MDFTAQPKPATALCGVVSADGKIAYPPGVKEITDKITTDEMIKRLKMVVKTFMDMDQDSE +DEKQQYLPLALHLASEFFLRNPNKDVRLLVACCLADIFRIYAPEAPYTSHDKLKDIFLFI +TRQLKGLEDTKSPQFNRYFYLLENLAWVKSYNICFELEDCNEIFIQLFRTLFSVINNSHN +KKVQMHMLDLMSSIIMEGDGVTQELLDSILINLIPAHKNLNKQSFDLAKVLLKRTVQTIE +ACIANFFNQVLVLGRSSVSDLSEHVFDLIQELFAIDPHLLLSVMPQLEFKLKSNDGEERL +AVVRLLAKLFGSKDSDLATQNRPLWQCFLGRFNDIHVPVRLESVKFASHCLMNHPDLAKD +LTEYLKVRSHDPEEAIRHDVIVTIITAAKRDLALVNDQLLGFVRERTLDKRWRVRKEAMM +GLAQLYKKYCLHGEAGKEAAEKVSWIKDKLLHIYYQNSIDDKLLVEKIFAQYLVPHNLET +EERMKCLYYLYASLDPNAVKALNEMWKCQNMLRSHVRELLDLHKQPTSEANCSAMFGKLM +TIAKNLPDPGKAQDFVKKFNQVLGDDEKLRSQLELLISPTCSCKQADVCVREIARKLANP +KQPTNPFLEMVKFLLERIAPVHIDSEAISALVKLMNKSIEGTADDEEEGVSPDTAIRSGL +ELLKVLSFTHPTSFHSAETYESLLQCLRMEDDKVAEAAIQIFRNTGHKIETDLPQIRSTL +IPILHQKAKRGTPHQAKQAVHCIHAIFTNKEVQLAQIFEPLSRSLNADVPEQLITPLVSL +GHISMLAPDQFASPMKSVVANFIVKDLLMNDRSTGEKNGKLWSPDEEVSPEVLAKVQAIK +LLVRWLLGMKNNQSKSANSTLRLLSAMLVSEGDLTEQKRISKSDMSRLRLAAGSAIMKLA +QEPCYHEIITPEQFQLCALVINDECYQVRQIFAQKLHKALVKLLLPLEYMAIFALCAKDP +VKERRAHARQCLLKNISIRREYIKQNPMATEKLLSLLPEYVVPYMIHLLAHDPDFTRSQD +VDQLRDIKECLWFMLEVLMTKNENNSHAFMKKMAENIKLTKDAQSPDESKTNEKLYTVCD +VALCVINSKSALCNAESPKDPVLPVKFFTQPEKDFCNDKSYISEETRVLLLTGKPKPAGV +LGAVNKPLSATGRKPYVRSTGAETGSNINVNSELNPSTGNRPREQSSEAAETGVSENEEN +PVRIISVTPVKNIDPVKNKEINSDQSAQGNISSDRGKKRTVTAAGAENIQQKTDEKADES +GPPAPSKPRRGRRPKSESQGNATKNDDINKPLSKGRKRAAVSQESPGGLEAGNAKAPKLQ +DTAKKAAPTERQIDLQR \ No newline at end of file diff --git a/ms2/test/src/org/labkey/test/tests/ms2/PeaksTest.java b/ms2/test/src/org/labkey/test/tests/ms2/PeaksTest.java new file mode 100644 index 0000000000..bf81a75eb7 --- /dev/null +++ b/ms2/test/src/org/labkey/test/tests/ms2/PeaksTest.java @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2016-2019 LabKey Corporation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.labkey.test.tests.ms2; + +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.experimental.categories.Category; +import org.labkey.test.Locator; +import org.labkey.test.TestTimeoutException; +import org.labkey.test.categories.Daily; +import org.labkey.test.categories.MS2; +import org.labkey.test.components.BodyWebPart; +import org.labkey.test.ms2.AbstractMS2SearchEngineTest; +import org.labkey.test.util.DataRegionTable; +import org.labkey.test.util.TextSearcher; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +/** + * Imports a minimal PEAKS exported pepXML file and verifies its contents. Files adapted from public examples at: + * ... + */ +@Category({MS2.class, Daily.class}) +public class PeaksTest extends AbstractMS2SearchEngineTest +{ + protected static final String PEPTIDE = "GDGDSGR"; + protected static final String PROTEIN = "P58107|EPIPL_HUMAN"; + protected static final String SEARCH_TYPE = "peaks"; + + @Override + protected void doCleanup(boolean afterTest) throws TestTimeoutException + { + cleanPipe(SEARCH_TYPE); + + _containerHelper.deleteProject(getProjectName(), afterTest); + } + + @BeforeClass + public static void setupProject() throws Exception + { + PeaksTest init = getCurrentTest(); + + init.doSetup(); + } + + private void doSetup() + { + createProjectAndFolder(); + navigateToFolder(FOLDER_NAME); + } + + @Override + protected void basicChecks() + { + + } + + @Test + public void testPeaksImport() + { + log("Upload existing PEAKS pepXML result file."); + clickButton("Process and Import Data"); + _fileBrowserHelper.importFile("peaks/peaks.pep.xml", "Import Search Results"); + + String runLabel = "ms2pipe/peaks (peaks)"; + waitForRunningPipelineJobs(MAX_WAIT_SECONDS * 1000); + waitForElement(Locator.linkWithText(runLabel)); + + log("Spot check results loaded from pepXML file"); + clickAndWait(Locator.linkWithText(runLabel)); + String overviewText = new BodyWebPart<>(getDriver(), "Run Overview").getComponentElement().getText(); + assertTextPresent(new TextSearcher(overviewText), + "Trypsin", + "PEAKS_DB", + "peaks.pep.xml", + "peaksMinimal.fasta"); + + DataRegionTable peptidesTable = new DataRegionTable(REGION_NAME_PEPTIDES, this); + + assertEquals("Wrong number of peptides found", 5, peptidesTable.getDataRowCount()); + List peptideRow = peptidesTable.getRowDataAsText(0); + List expectedPeptideRow = new ArrayList<>(Arrays.asList( + "1950", // Scan + "2+", // Z + "31.218", // -10lgP + "0%", // Ion% + "1.0073", // CalcMH+ + "+1000000.0000", // dMass + PEPTIDE, // Peptide + "1", // SeqHits + PROTEIN)); // Protein + expectedPeptideRow.removeAll(peptideRow); + assertTrue("Missing values from first peptide row: [" + String.join(",", expectedPeptideRow) + "]", expectedPeptideRow.isEmpty()); + String value = peptidesTable.getDataAsText(0, "-10lg P"); + assertEquals("Wrong value for '-10lg P' in first row", 31.218, Double.parseDouble(value), 0.01); + value = peptidesTable.getDataAsText(0, "CalcMH+"); + assertEquals("Wrong value for 'CalcMH+' in first row", 1.0073, Double.parseDouble(value), 0.01); + } + + @Override + protected void setupEngine() + { + } + + @Override + protected void cleanPipe(String search_type) + { + super.cleanPipe(search_type); + + File rootDir = new File(PIPELINE_PATH); + delete(new File(rootDir, "peaks/peaks.log")); + } +}