Opened 12 years ago
Closed 12 years ago
#526 closed (fixed)
Not all OMSSA modifications shown
Reported by: | Fredrik Levander | 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 12 years ago by
comment:2 Changed 12 years ago by
Traceability note:
- Support for performing OMSSA searches from Proteios SE was introduced in Ticket #471 (Searching OMSSA from Proteios SE).
comment:4 Changed 12 years ago by
Problem analysis:
- 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.
- Class/file io/OMSSAParameterSetOptionsUtil.java in api/core/ calls public method
List<String> fetchModificationStringList()
to obtain the modification string list. - The latter method calls public method
public List<String> fetchOMSSAStringListFromLocalInstallation(String argument)
to obtain the modification string list for a local OMSSA installation, with stringargument
set to "-ml
". - 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. - The
InputStream
resulting from the command execution is obtained by one of two instances of private inner classStreamGobbler
; 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. - 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:
- Proteios SE trunk code was used, equalling Proteios 2.6.1 plus updates.
- 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.
- The OMSSA search settings form was accessed from the GUI a number of times (two modification listings per OMSSA search form).
- 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:
- The full modification lists were displayed every time (tested three times).
- The log put indicated normal output from the OMSSA program command given from Proteios SE (no error indicated).
- 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:
- 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).
- The log output indicated normal output from the OMSSA program command given from Proteios SE (no error indicated).
- 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.
- 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.
- 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:
- 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:
- 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.
- 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.
- Suspicions of buffer size problems connected with the way private inner class
StreamGobbler
obtains theInputStream
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. - 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 12 years ago by
(In [3215]) Refs #526. Class/file io/OMSSAParameterSetOptionsUtil.java in api/core/ updated for testing purposes:
- 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 12 years ago by
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 12 years ago by
(In [3252]) Refs #526. Class/file io/OMSSAParameterSetOptionsUtil.java in api/core/ updated for testing purposes:
- 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.
- 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 12 years ago by
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 wasnull
, both when the OMSSA modification lists were complete and truncated. Output fromStreamGobbler
for standard error output can therefore not be used to find an indication that an error has occurred.
comment:9 Changed 12 years ago by
Milestone: | Proteios SE 2.7 → 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 12 years ago by
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 12 years ago by
(In [3311]) Refs #526. Refs #471. Class/file gui/form/FormFactory.java in client/servlet/ updated for OMSSA search parameters form:
- 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 12 years ago by
(In [3322]) Refs #471. Refs #526. Class/file io/OMSSAParameterFileUtil.java in api/core/ updated:
- 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 12 years ago by
(In [3332]) Refs #526. Refs #471. Class/file gui/form/FormFactory.java in client/servlet/ updated for OMSSA search parameters form:
- 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 12 years ago by
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 12 years ago by
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 12 years ago by
Resolution: | → fixed |
---|---|
Status: | assigned → 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.
Ticket accepted.