Opened 8 years ago

Closed 8 years ago

#526 closed (fixed)

Not all OMSSA modifications shown

Reported by: fredrik Owned by: olle
Milestone: Proteios SE 2.8 Keywords:
Cc:

Description

The lists with modifications in the search parameter setup for OMSSA are not complete. It seems like the alternatives after m or o are not shown.

Change History (16)

comment:1 Changed 8 years ago by olle

Ticket accepted.

comment:2 Changed 8 years ago by olle

Traceability note:

  • Support for performing OMSSA searches from Proteios SE was introduced in Ticket #471 (Searching OMSSA from Proteios SE).

comment:3 Changed 8 years ago by olle

  • Status changed from new to assigned

Ticket accepted.

comment:4 Changed 8 years ago by olle

Problem analysis:

  1. The system on which the problem appeared uses a local OMSSA installation, that is accessed from Proteios SE to obtain parameter values as string lists.
  2. Class/file io/OMSSAParameterSetOptionsUtil.java in api/core/ calls public method List<String> fetchModificationStringList() to obtain the modification string list.
  3. The latter method calls public method public List<String> fetchOMSSAStringListFromLocalInstallation(String argument) to obtain the modification string list for a local OMSSA installation, with string argument set to "-ml".
  4. The latter method will call private method List<String> fetchOptionsFromLocalInstallation(String directoryStr, String fileName, String argument, String optionPattern, String delimiterString) to generate a command to the OMSSA program with the supplied argument using the java.lang.Runtime and java.lang.Process classes.
  5. The InputStream resulting from the command execution is obtained by one of two instances of private inner class StreamGobbler; one for normal and one for error output. Depending on the exit value of the process (0 is interpreted as normal termination), the string content of either the normal output or the error output channel is obtained. The raw content of this output string is reported as log output when Proteios SE is run in debug mode.
  6. The obtained output string is then read using a BufferedReader and the the output is parsed, line by line, to create the option string list.

Test setup on a reference system and the system where the error was reported:

  1. Proteios SE trunk code was used, equalling Proteios 2.6.1 plus updates.
  2. Proteios SE was set to debug mode, in order to allow inspection of the raw output string obtained by Proteios SE from giving a command to the local OMMSA program.
  3. The OMSSA search settings form was accessed from the GUI a number of times (two modification listings per OMSSA search form).
  4. The OMSSA program command to obtain the modification list was given directly in a command console, and the number of lines counted.

Test result on the reference system:

  1. The full modification lists were displayed every time (tested three times).
  2. The log put indicated normal output from the OMSSA program command given from Proteios SE (no error indicated).
  3. The log output of the raw output string from the OMSSA program obtained by Proteios SE was consistent with the output when the command was given from in a command console (header line + 156 lines of modification options).

In summary, the problem could not be reproduced on the reference system.

Test result on the system where the error was reported:

  1. Typically the full modification lists were displayed the first time the OMSSA search settings page was displayed in the GUI, while one or both lists were truncated when the page was displayed again (the number of options in the truncated list differed between different tests).
  2. The log output indicated normal output from the OMSSA program command given from Proteios SE (no error indicated).
  3. The log output of the raw output string from the OMSSA program obtained by Proteios SE was consistent with that displayed in the GUI, both when the full and truncated modification lists were obtained.
  4. When the raw output string from the OMSSA program obtained by Proteios SE was truncated, it was always terminated at a line break in the full output string. Parsing of the truncated output string therefore always resulted in a valid option list, but with fewer option items.
  5. The output when the command was given from in a command console always gave the full modification list (header line + 156 lines of modification options).

Comparison between the reference system and the system where the error was reported:

  1. The log output of the raw output string from the OMSSA program when the full option lists were obtained were identical for the two systems, strongly indicating that there is no major difference in their local OMSSA installations.

Discussion of the test results:

  1. That the output when the command was given from a command console always resulted in the full option list, indicates that the problem is related to the way Proteios SE obtains the output from the command.
  2. That the reference system always obtained the complete option list, while it sometimes was truncated on the system where the error was reported, indicates that there is some difference between the two Proteios SE installations, although they run the same version of the Proteios SE software.
  3. Suspicions of buffer size problems connected with the way private inner class StreamGobbler obtains the InputStream from the command output is made less credible by the fact that the latter design has been successful in obtaining data of much larger size in connection with retrieval of search results in other cases, e.g. X!Tandem search engines.
  4. The fact that there is no indication of any error in Proteios SE from the retrieval of the output from the OMSSA command, makes it very hard to detect the problem automatically and alert the user of it.

comment:5 Changed 8 years ago by olle

(In [3215]) Refs #526. Class/file io/OMSSAParameterSetOptionsUtil.java in api/core/ updated for testing purposes:

  1. Inner private class StreamGobbler updated in public method

void run() by using a BufferedReader instance with the character buffer size increased from the default value of 8192 characters to the double size of 16384 characters.

comment:6 Changed 8 years ago by olle

Result of testing use of doubled character buffer size for BufferedReader used by Proteios SE for retrieving option lists from locally installed OMSSA program:

  • When tested on the system where the error was reported, the OMSSA search settings page still showed truncated modification lists, when inspected in the GUI, with lengths that might vary from one test to another, i.e. the increased buffer size did not solve the problem.

comment:7 Changed 8 years ago by olle

(In [3252]) Refs #526. Class/file io/OMSSAParameterSetOptionsUtil.java in api/core/ updated for testing purposes:

  1. Inner private class StreamGobbler updated in public method

void run() by checking for error of optional PrintWriter instance, and writing the result string to debug output.

  1. Private method

`List<String> fetchOptionsFromLocalInstallation(String directoryStr, String fileName, String argument, String optionPattern, String delimiterString)` updated to write contents of StreamGobbler for standard error output to debug output.

comment:8 Changed 8 years ago by olle

Result of testing writing contents of StreamGobbler for standard error output to debug output, when retrieving option lists from locally installed OMSSA program:

  • When tested on the system where the error was reported, the contents of StreamGobbler for standard error output was null, both when the OMSSA modification lists were complete and truncated. Output from StreamGobbler for standard error output can therefore not be used to find an indication that an error has occurred.

comment:9 Changed 8 years ago by olle

  • Milestone changed from Proteios SE 2.7 to Proteios SE 2.8

The problem could not be reproduced on a reference system, but on the other hand the problem still occurs on the system, where it was first observed. It was therefore decided to release Proteios SE version 2.7 as planned, and change milestone for this ticket to "Proteios SE 2.8".

comment:10 Changed 8 years ago by olle

Design for solution on systems where the default OMSSA installation is used:

  • Currently the default options are used for a variable if the option list obtained from the local installation is null or empty. Since in practice a default option is never removed, a modified option list is always larger than the default option list. Problems with truncated option lists on a default OMSSA installation could then be eliminated by only using the option list obtained from the local installation when it is larger or equal in size to the default option list.

This will make the OMSSA option lists to be complete on all default OMSSA installations and a modified OMSSA installation on a system not susceptible to the problem described in this ticket.

However, it will still not solve the problem for a modified OMSSA installation on a system susceptible to the problem described in this ticket.

comment:11 Changed 8 years ago by olle

(In [3311]) Refs #526. Refs #471. Class/file gui/form/FormFactory.java in client/servlet/ updated for OMSSA search parameters form:

  1. Public method

Form getOMSSAParameterSetForm(OMSSAParameterSet omssaParameterSet, List<Option> enzymeOptionList, List<Option> sequenceLibraryOptionList, List<Option> speciesOptionList, List<Option> fixedModsOptionList, List<Option> variableModsOptionList) updated to the use an option list obtained from the local installation when it is larger or equal in size to the default option list. In other cases the default option list is used.

comment:12 Changed 8 years ago by olle

(In [3322]) Refs #471. Refs #526. Class/file io/OMSSAParameterFileUtil.java in api/core/ updated:

  1. Public method

Hashtable<String, String> fetchModificationAttributeHashtable() for creating modification attribute hash table updated with new entries for keys 166-185 obtained from list returned by command omssacl -ml.

comment:13 Changed 8 years ago by olle

(In [3332]) Refs #526. Refs #471. Class/file gui/form/FormFactory.java in client/servlet/ updated for OMSSA search parameters form:

  1. Public method

Form getOMSSAParameterSetForm(OMSSAParameterSet omssaParameterSet, List<Option> enzymeOptionList, List<Option> sequenceLibraryOptionList, List<Option> speciesOptionList, List<Option> fixedModsOptionList, List<Option> variableModsOptionList) updated with debug output of the sizes of option lists obtained from the local installation and the default option lists, as the relative sizes determine what option list is used for an input parameter.

comment:14 Changed 8 years ago by olle

Tests to solve the problem for a modified OMSSA installation by reading values for menu entries from optional text files have been performed with successful results. However, OMSSA normally uses return values from menu selections that differ from the values shown in the menus, which complicates this solution (as an example, modification "2-amino-3-oxo-butanoic acid T" corresponds to internal value "23"). Either rather obscure lists with index numbers need be stored in the extra text files, or more complicated lists with double entries for both key and display values.

It was therefore decided to close the ticket, as a solution has been implemented for default OMSSA installations, and wait with solutions for modified installations.

comment:15 Changed 8 years ago by olle

Severity has been kept at 16, not because much work has been needed for the implemented partial solution, but because the cause of the problem is still unknown.

comment:16 Changed 8 years ago by olle

  • Resolution set to fixed
  • Status changed from assigned to closed

Ticket closed as a solution has been implemented for default OMSSA installations, that does not require any actions from the users or administrator on a system susceptible to the problem in question. If a suitable solution for modified OMSSA installations should appear, or if more information on the cause of the problem should become available, the ticket may be re-opened or a new ticket created.

Note: See TracTickets for help on using tickets.