Opened 9 years ago

Closed 9 years ago

Last modified 9 years ago

#837 closed task (fixed)

MeLuDI v.1.4.1 bug fixes and improvements

Reported by: olle Owned by: olle
Priority: major Milestone: MeLuDI v1.4.2
Component: net.sf.basedb.meludi Keywords:
Cc:

Description

This ticket covers bug fixes and improvements to MeLuDI v.1.4.1.

Change History (15)

comment:1 by olle, 9 years ago

Status: newassigned

Ticket accepted.

comment:2 by olle, 9 years ago

Traceability note:

  • MeLuDi v.1.0 was introduced in Ticket #690 (MeLuDi - Registration wizard for melanoma-lung cancer projects).
  • MeLuDi v.1.1 was introduced in Ticket #718 (MeLuDi v.1.0 bug fixes and improvements).
  • MeLuDi v.1.2 was introduced in Ticket #725 (MeLuDi v.1.1 bug fixes and improvements).
  • MeLuDI v.1.2.1 was introduced in Ticket #759 (MeLuDi v.1.2 bug fixes and improvements).
  • MeLuDI v.1.2.2 was introduced in Ticket #767 (MeLuDI v.1.2.1 bug fixes and improvements).
  • MeLuDI v.1.2.3 was introduced in Ticket #768 (MeLuDI v.1.2.2 bug fixes and improvements).
  • MeLuDI v.1.2.4 was introduced in Ticket #777 (MeLuDI v.1.2.3 bug fixes and improvements).
  • MeLuDI v.1.2.5 was introduced in Ticket #786 (MeLuDI v.1.2.4 bug fixes and improvements).
  • MeLuDI v.1.3.1 was introduced in Ticket #792 (MeLuDI v.1.2.5 bug fixes and improvements).
  • First version of library preparation wizards was introduced in Ticket #801 (MeLuDI library preparation wizards first version).
  • MeLuDI v.1.3.2 was introduced in Ticket #802 (MeLuDI v.1.3.1 bug fixes and improvements).
  • MeLuDI v.1.3.3 was introduced in Ticket #815 (MeLuDI v.1.3.2 bug fixes and improvements).
  • MeLuDI v.1.4.0 was introduced in Ticket #816 (MeLuDI v.1.3.3 bug fixes and improvements).
  • MeLuDI v.1.4.1 was introduced in Ticket #836 (MeLuDI v.1.4.0 bug fixes and improvements).
Last edited 9 years ago by olle (previous) (diff)

comment:3 by olle, 9 years ago

(In [3712]) Refs #837. Updates due to version number change to "1.4.2-dev".

  1. Version number changed to "1.4.2-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:4 by olle, 9 years ago

Functional specification update:

  • Wizard "Inspect/edit library preparation kit data" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" should be updated in step 1 by changing default menu item from "All" to "Used & active", since it is the latter kits that most often are of interest.

Design update:

  1. JSP file inspect_libprep_kit_data.jsp in resources/libprep/ updated in step 1 by changing default menu item from "All" to "Used & active".

comment:5 by olle, 9 years ago

(In [3713]) Refs #837. Wizard "Inspect/edit library preparation kit data" in sub-section "Reagent kit management wizards" in section "Library preparation wizards" updated in step 1 by changing default menu item from "All" to "Used & active", since it is the latter kits that most often are of interest:

  1. JSP file inspect_libprep_kit_data.jsp in resources/libprep/ updated in step 1 by changing default menu item from "All" to "Used & active".

comment:6 by olle, 9 years ago

Background information:

  • Not all DNA extracts registered in MeLuDI will be put on a start DNA plate. Some extracts, typically those with high ΔCt values, will be put aside for qPCR processing. A consequence is that a start list containing one or more of these extracts will always appear in the selection menu in step 1 of the wizard for creating a start DNA plate. There should therefore be a way to mark such items as destined for qPCR, and a start list only containing these extracts and extracts already put on a start DNA plate should no longer appear in the selection menu for creating a start DNA plate.

Suggested changes:

  1. A boolean annotation type is defined for DNA extracts, indicating if they are destined for qPCR processing.
  2. A new wizard, or an existing one, should be available for selecting DNA extracts to be marked for qPCR processing using the new annotation type. The ΔCt values for the DNA extracts should be shown, if existing, but the selection of what DNA extracts to be marked for qPCR processing should be up to the user.
  3. A start list only containing DNA extracts marked for qPCR processing and extracts already put on a start DNA plate should no longer appear in the selection menu for creating a start DNA plate.
  4. When a start list is chosen in the selection menu for creating a start DNA plate, only DNA extracts not already on a start plate and not marked for qPCR processing should appear in selection menus in later steps.

Design discussion:

  • Regarding whether an existing wizard or a separate one should be used for selecting DNA extracts to be marked for qPCR processing, the most natural alternatives are:

    a. Wizard "Create new start DNA plate" could be updated in step 2 (DNA extract selection) with a check box for marking all extracts not selected as destined for qPCR processing.
    b. A new wizard where a start list is selected in step 1, and the qPCR branch setting for DNA extracts not already on a start DNA plate can be modified.

    Alternative (b) has the advantage that an extract marked for the qPCR branch can be reset, and qPCR branch settings can be modified for extracts in a start list, that does not contain any extracts to be put on a start DNA plate. (Such a start list will never alone reach the "Registration" step in the "Create new start DNA plate" wizard.)
Last edited 9 years ago by olle (previous) (diff)

comment:7 by olle, 9 years ago

Functional specification update:

  • Support for marking DNA extracts for qPCR processing should be added:
    a. A new wizard "Mark DNA for qPCR" should be added to sub-section "Start DNA plate wizards" in section "Library preparation wizards". Step 1 should allow a start list with DNA extracts not on a start plate to be selected. Step 2 should display qPCR branch settings for all DNA extracts not on a start plate, and allow the former to be modified. It should be possible to enter a maximum ΔCt value for extracts to be put on a start plate (default: 8), and all extracts with lower ΔCt values should be pre-selected for the qPCR branch.
    b. A start list only containing extracts already put on a start DNA plate and extracts marked for qPCR should no longer appear in the selection menu for creating a start DNA plate.
    c. When a start list is chosen in the selection menu for creating a start DNA plate, only DNA extracts not already on a start plate and not marked for qPCR processing should appear in selection menus in later steps.

Design update:

  1. JSP file index.jsp in resources/ updated with new entry "Mark DNA for qPCR" in sub-section "Start DNA plate wizards" in section "Library preparation wizards", coupled to new JSP file mark_dna_for_qpcr.jsp in resources/libprep/.
  2. New JSP file mark_dna_for_qpcr.jsp in resources/´libprep/ added. It is coupled to new javascript file mark_dna_for_qpcr.js in resources/´libprep/.
  3. New javascript file mark_dna_for_qpcr.js in resources/´libprep/ added. It contains two steps: Step 1 allows a start list with DNA extracts not on a start plate to be selected. Step 2 displays qPCR branch settings for all DNA extracts not on a start plate, and allows the former to be modified. At registration, a POST request is made to java servlet DnaServlet with new command "UpdateDnaQpcrBranchFlag".
  4. Javascript file select_dna_for_start_plate.js in resources/´libprep/ updated:
    a. Function initPage() updated in call to java servlet ExtractionServlet with command "GetStartItemLists" to set new attribute "ignoreQpcrBranch" to true.
    b. Function initializeStep2(event) updated in call to java servlet ExtractionServlet with command "GetListOfItemsFromStartItemLists" to set new attribute "ignoreQpcrBranch" to true.
    c. Function dnaItemListLoaded(response) updated to display ΔCt values for DNA extracts in selection menu.
    d. Function maxDeltaCtOnChange(event) updated updated in call to java servlet ExtractionServlet with command "GetListOfItemsFromStartItemLists" to set new attribute "ignoreQpcrBranch" to true. Also bug fix by setting attribute "itemNotOnLibPlate" to true (this should have been present in earlier version of the code).
  5. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated:
    a. New boolean extract annotation type QPCR_BRANCH defined.
  6. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) to include the new extract annotation type for qPCR branch, and add it to Subtype.DNA annotation type category.
  7. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for commands "GetStartItemLists", "GetUnprocessedStartItemLists", and "GetProcessedStartItemLists" to retrieve value of new Boolean request parameter "ignoreQpcrBranch" and use this as argument when calling updated private method JSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate, Boolean ignoreQpcrBranch). Command "GetListOfItemsFromStartItemLists" updated to retrieve value of new Boolean request parameter "ignoreQpcrBranch", and to ignore the qPCR branch if the value of the parameter is true.
    b. Private method JSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate, Boolean ignoreQpcrBranch) updated with new argument Boolean ignoreQpcrBranch, and to ignore the qPCR branch if the value of the argument is true.
    c. Private method void loadDnaInfo(DbControl dc, SnapshotManager manager, Dna dna) updated to add value of annotation Annotationtype.QPCR_BRANCH for JSON key "qpcrBranch".
  8. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) with new command "UpdateDnaQpcrBranchFlag" to retrieve DNA id and new qPCR branch values from submit info and update value of Annotationtype.QPCR_BRANCH for those extracts, where the setting has changed.
  9. Java counter service class/file CounterService.java in src/net/sf/basedb/meludi/counter/ updated in private method void countItemLists(DbControl dc, JSONObject json) to ignore extracts marked for qPCR when counting the number of processed start lists with at least one item, that has not been placed on a start plate (library plate), and return the number with JSON key "start-lists-processed-an-item-not-on-lib-plate".
Last edited 9 years ago by olle (previous) (diff)

comment:8 by olle, 9 years ago

(In [3719]) Refs #837. Support for marking DNA extracts for qPCR processing added:
a. A new wizard "Mark DNA for qPCR" added to sub-section "Start DNA plate wizards" in section "Library preparation wizards". Step 1 allows a start list with DNA extracts not on a start plate to be selected. Step 2 displays qPCR branch settings for all DNA extracts not on a start plate, and allows the former to be modified. It is possible to enter a maximum ΔCt value for extracts to be put on a start plate (default: 8), and all extracts with lower ΔCt values are pre-selected for the qPCR branch.
b. A start list only containing extracts already put on a start DNA plate and extracts marked for qPCR no longer appears in the selection menu for creating a start DNA plate.
c. When a start list is chosen in the selection menu for creating a start DNA plate, only DNA extracts not already on a start plate and not marked for qPCR processing appear in selection menus in later steps.

  1. JSP file index.jsp in resources/ updated with new entry "Mark DNA for qPCR" in sub-section "Start DNA plate wizards" in section "Library preparation wizards", coupled to new JSP file mark_dna_for_qpcr.jsp in resources/libprep/.
  2. New JSP file mark_dna_for_qpcr.jsp in resources/´libprep/ added. It is coupled to new javascript file mark_dna_for_qpcr.js in resources/´libprep/.
  3. New javascript file mark_dna_for_qpcr.js in resources/´libprep/ added. It contains two steps: Step 1 allows a start list with DNA extracts not on a start plate to be selected. Step 2 displays qPCR branch settings for all DNA extracts not on a start plate, and allows the former to be modified. At registration, a POST request is made to java servlet DnaServlet with new command "UpdateDnaQpcrBranchFlag".
  4. Javascript file select_dna_for_start_plate.js in resources/´libprep/ updated:
    a. Function initPage() updated in call to java servlet ExtractionServlet with command "GetStartItemLists" to set new attribute "ignoreQpcrBranch" to true.
    b. Function initializeStep2(event) updated in call to java servlet ExtractionServlet with command "GetListOfItemsFromStartItemLists" to set new attribute "ignoreQpcrBranch" to true.
    c. Function dnaItemListLoaded(response) updated to display ΔCt values for DNA extracts in selection menu.
    d. Function maxDeltaCtOnChange(event) updated updated in call to java servlet ExtractionServlet with command "GetListOfItemsFromStartItemLists" to set new attribute "ignoreQpcrBranch" to true. Also bug fix by setting attribute "itemNotOnLibPlate" to true (this should have been present in earlier version of the code).
  5. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated:
    a. New boolean extract annotation type QPCR_BRANCH defined.
  6. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) to include the new extract annotation type for qPCR branch, and add it to Subtype.DNA annotation type category.
  7. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for commands "GetStartItemLists", "GetUnprocessedStartItemLists", and "GetProcessedStartItemLists" to retrieve value of new Boolean request parameter "ignoreQpcrBranch" and use this as argument when calling updated private method JSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate, Boolean ignoreQpcrBranch). Command "GetListOfItemsFromStartItemLists" updated to retrieve value of new Boolean request parameter "ignoreQpcrBranch", and to ignore the qPCR branch if the value of the parameter is true.
    b. Private method JSONArray fetchStartItemLists(DbControl dc, Boolean processed, Boolean orderDesc, Boolean anItemNotOnLibPlate, Boolean ignoreQpcrBranch) updated with new argument Boolean ignoreQpcrBranch, and to ignore the qPCR branch if the value of the argument is true.
    c. Private method void loadDnaInfo(DbControl dc, SnapshotManager manager, Dna dna) updated to add value of annotation Annotationtype.QPCR_BRANCH for JSON key "qpcrBranch".
  8. Java servlet class/file DnaServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doPost(HttpServletRequest req, HttpServletResponse resp) with new command "UpdateDnaQpcrBranchFlag" to retrieve DNA id and new qPCR branch values from submit info and update value of Annotationtype.QPCR_BRANCH for those extracts, where the setting has changed.
  9. Java counter service class/file CounterService.java in src/net/sf/basedb/meludi/counter/ updated in private method void countItemLists(DbControl dc, JSONObject json) to ignore extracts marked for qPCR when counting the number of processed start lists with at least one item, that has not been placed on a start plate (library plate), and return the number with JSON key "start-lists-processed-an-item-not-on-lib-plate".

Version 1, edited 9 years ago by olle (previous) (next) (diff)

comment:9 by olle, 9 years ago

Functional specification update:

  • A bug was found in wizard "DNA/RNA registration/quantification", sub-section "DNA/RNA extraction wizards", section "Sample processing wizards", when entering values for concentrations or ΔCt for input extracts: Value "0" was replaced with a null value when the table was updated.

Analysis:

  • Code inspection and test of javascript file extraction_registration.js in resources/sampleproc/ revealed that the problem was coupled to if-statements of the type
    if (!item.dna.deltaCt) {...}
    that was used to update a variable, when its value was null. The problem occurred because the if-statement did return true, not only when item.dna.deltaCt had value null, but also 0, while other values lead to return-value false. The problem was fixed by replacing the if-statement above with
    if (item.dna.deltaCt == null) {...}
    that lacks the previous side effects.

Design update:

  1. Javascript file extraction_registration.js in resources/´sampleproc/ updated by replacing if-statements of type "if (!item.dna.deltaCt) {...}" with "if (item.dna.deltaCt == null) {...}", that lacks side effects, when the value is 0. Updates in function updateDetailsTable() should fix the problem with entering 0 for concentrations or ΔCt for input extracts, but if-statements of this type in other functions were also changed.

comment:10 by olle, 9 years ago

(In [3720]) Refs #837. Bug (hopefully) fixed in wizard "DNA/RNA registration/quantification", sub-section "DNA/RNA extraction wizards", section "Sample processing wizards", when entering values for concentrations or ΔCt for input extracts: Value "0" was replaced with a null value when the table was updated.

  1. Javascript file extraction_registration.js in resources/´sampleproc/ updated by replacing if-statements of type "if (!item.dna.deltaCt) {...}" with "if (item.dna.deltaCt == null) {...}", that lacks side effects, when the value is 0. Updates in function updateDetailsTable() should fix the problem with entering 0 for concentrations or ΔCt for input extracts, but if-statements of this type in other functions were also changed.

comment:11 by olle, 9 years ago

(In [3721]) Refs #837. Updates due to version number change to "1.4.2a1".

  1. Version number change to "1.4.2a1":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:12 by olle, 9 years ago

(In [3722]) Refs #837. Updates due to version number change to "1.4.2-dev".

  1. Version number change to "1.4.2-dev":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:13 by olle, 9 years ago

Project update:

  • On 2016-01-21 it was announced that the parent project using the MeLuDI software would not be continued after midsummer, and might be terminated even earlier, since another laboratory should perform the analyses in question. It was decided to update the software with fixes and features already agreed upon at the time of the announcement, and release MeLuDI v1.4.2 directly after the latter updates had been tested. Future releases with bug fixes may appear, but no new releases with new features are planned. An exception to this can be made, if a new feature would substantially simplify the laboratory work during the remaining months, and be added in time for it to make a difference.
Last edited 9 years ago by olle (previous) (diff)

comment:14 by olle, 9 years ago

(In [3727]) Refs #837. Updates due to version number change to "1.4.2".

  1. Version number changed to "1.4.2":
    a. Outermost Ant XML build file build.xml in / updated.
    b. Extensions XML configuration file extensions.xml in META-INF/ updated.
    c. Javascript file meludi-2.js in resources/ updated.
    d. Javascript file samplereportgenerator.js in resources/reports/ updated.
    e. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.

comment:15 by olle, 9 years ago

Resolution: fixed
Status: assignedclosed

Ticket closed as MeLuDI version 1.4.2 has been created.

Note: See TracTickets for help on using tickets.