Opened 9 years ago

Closed 9 years ago

#759 closed task (fixed)

MeLuDi v.1.2 bug fixes and improvements

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

Description

This ticket covers bug fixes and improvements to MeLuDi v.1.2.

Change History (58)

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).

comment:3 by olle, 9 years ago

(In [3193]) Refs #759 Updates due to version number change to "1.3-dev".

  1. Version number change to "1.3-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:

  • MeLuDi DNA/RNA extraction wizards should be updated to add an extra suffix "(preview)" to the header of a created Lab Tracking Sheet/Report for Allprep isolation, if the form is created before registration in the wizard. The wizards should also be updated to allow creation of the form after registration, but then without the extra header suffix "(preview)".

Design update:

  1. Javascript files extraction_preparation.js and extraction_registration.js in resources/sampleproc/ updated:
    a. New global variable trackingSheetPreview originally set to true.
    b. Function submissionResults(response) updated to show button for creating Lab Tracking Sheet/Report also after registration, and set value of global variable trackingSheetPreview to false.
    c. Function createProtocol() updated to include a new JSON object with key "protocolPreviewFlag" to the JSON submit info sent to Javascript file extraction_protocol.js. The value of global variable trackingSheetPreview is checked, and if true, the value of JSON object "protocolPreviewFlag" is set to "true", otherwise null.
  2. Javascript file extraction_protocol.js in resources/sampleproc/ updated in function initializeProtocol(submitInfoJsonStr) to check value of received JSON object with key "protocolPreviewFlag", and if set to "true", add suffix "(preview)" to the header of created Lab Tracking Sheet/Report for Allprep isolation.

comment:5 by olle, 9 years ago

(In [3199]) Refs #759. MeLuDi DNA/RNA extraction wizards updated to add an extra suffix "(preview)" to the header of a created Lab Tracking Sheet/Report for Allprep isolation, if the form is created before registration in the wizard. The wizards are also updated to allow creation of the form after registration, but then without the extra header suffix "(preview)":

  1. Javascript files extraction_preparation.js and extraction_registration.js in resources/sampleproc/ updated:
    a. New global variable trackingSheetPreview originally set to true.
    b. Function submissionResults(response) updated to show button for creating Lab Tracking Sheet/Report also after registration, and set value of global variable trackingSheetPreview to false.
    c. Function createProtocol() updated to include a new JSON object with key "protocolPreviewFlag" to the JSON submit info sent to Javascript file extraction_protocol.js. The value of global variable trackingSheetPreview is checked, and if true, the value of JSON object "protocolPreviewFlag" is set to "true", otherwise null.
  2. Javascript file extraction_protocol.js in resources/sampleproc/ updated in function initializeProtocol(submitInfoJsonStr) to check value of received JSON object with key "protocolPreviewFlag", and if set to "true", add suffix "(preview)" to the header of created Lab Tracking Sheet/Report for Allprep isolation.

comment:6 by olle, 9 years ago

(In [3200]) Refs #759. Javascript file extraction_registration.js in resources/sampleproc/ updated to use debug mode, in order to simplify development:
a. Global variable debug flag set to 1.
b. Function exreg.initializeStep3() updated to use function call Doc.show(...) to display debug tools, instead of deprecated call Wizard.showDebugTools().

comment:7 by olle, 9 years ago

Functional specification update:

  • MeLuDi DNA/RNA extraction wizards should be updated to draw vertical border lines between columns in the table section of created Lab Tracking Sheet/Report for Allprep isolation.

Design update:

  1. JSP file extraction_protocol2.jsp in resources/sampleproc/ updated in table section to add a 1-pixel wide right border.

comment:8 by olle, 9 years ago

(In [3201]) Refs #759. MeLuDi DNA/RNA extraction wizards updated to draw vertical border lines between columns in the table section of created Lab Tracking Sheet/Report for Allprep isolation:

  1. JSP file extraction_protocol2.jsp in resources/sampleproc/ updated in table section to add a 1-pixel wide right border.

comment:9 by olle, 9 years ago

Functional specification update:

  • MeLuDi DNA/RNA extraction wizards should be updated to not depend on knowledge of the start of Allprep extraction protocol names, more than that they end with a version number preceded by the lower-case letter "v". The last extraction protocol in the protocol selection pop-up menu will now be pre-selected.

Design update:

  1. Javascript files extraction_preparation.js and extraction_registration.js in resources/sampleproc/ updated:
    a. Constant equal to start of Allprep extraction protocol names removed, as it is no longer needed.
    b. Function protocolsLoaded(response) updated to have the last extraction protocol in the protocol selection pop-up menu pre-selected.
    c. Function createProtocol() updated to obtain the protocol version no. by removing all parts of the protocol name up to and including the last "v".
Last edited 9 years ago by olle (previous) (diff)

comment:10 by olle, 9 years ago

(In [3202]) Refs #759. MeLuDi DNA/RNA extraction wizards updated to not depend on knowledge of the start of Allprep extraction protocol names, more than that they end with a version number preceded by the lower-case letter "v". The last extraction protocol in the protocol selection pop-up menu will now be pre-selected:

  1. Javascript files extraction_preparation.js and extraction_registration.js in resources/sampleproc/ updated:
    a. Constant equal to start of Allprep extraction protocol names removed, as it is no longer needed.
    b. Function protocolsLoaded(response) updated to have the last extraction protocol in the protocol selection pop-up menu pre-selected.
    c. Function createProtocol() updated to obtain the protocol version no. by removing all parts of the protocol name up to and including the last "v".
Last edited 9 years ago by olle (previous) (diff)

comment:11 by olle, 9 years ago

(In [3203]) Refs #759. MeLuDi DNA/RNA extraction wizards updated to print an optional header suffix "(preview)" of a created Lab Tracking Sheet/Report for Allprep isolation in italics, in order to emphasize it:

  1. Javascript file extraction_protocol.js in resources/sampleproc/ updated in function initializeProtocol(submitInfoJsonStr) to print optional header suffix "(preview)" of a created Lab Tracking Sheet/Report for Allprep isolation in italics.

comment:12 by olle, 9 years ago

Functional specification update:

  • MeLuDi DNA/RNA registration/quantification wizard should be updated in step 1 in the selection list for unprocessed start plates, to display the number of extract source items and optional extra items for each plate, in order to simplify identification of the plates. The number of extract source items will be displayed inside a parenthesis, with the number of optional extra items added after a "+" sign, if any extra items exist.

Design update:

  1. Javascript file extraction_registration.js in resources/sampleproc/ updated in function exreg.initializeStep1(response) in the selection list for unprocessed start plates, to display the number of extract source items and optional extra items for each plate.
  2. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetUnprocessedStartPlates" to load the list of extract source item names and number of optional extra items from annotations for a plate, and add them to the JSON response as values for JSON objects with keys "sourceItemNames" and "numberExtraQiacubeItems", respectively.
Last edited 9 years ago by olle (previous) (diff)

comment:13 by olle, 9 years ago

(In [3204]) Refs #759. MeLuDi DNA/RNA registration/quantification wizard updated in step 1 in the selection list for unprocessed start plates, to display the number of extract source items and optional extra items for each plate, in order to simplify identification of the plates. The number of extract source items will be displayed inside a parenthesis, with the number of optional extra items added after a "+" sign, if any extra items exist:

  1. Javascript file extraction_registration.js in resources/sampleproc/ updated in function exreg.initializeStep1(response) in the selection list for unprocessed start plates, to display the number of extract source items and optional extra items for each plate.
  2. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetUnprocessedStartPlates" to load the list of extract source item names and number of optional extra items from annotations for a plate, and add them to the JSON response as values for JSON objects with keys "sourceItemNames" and "numberExtraQiacubeItems", respectively.

comment:14 by olle, 9 years ago

Functional specification update:

  • MeLuDi Lab tracking protocol for Allprep isolation wizard should be updated in step 3, regarding creation of sample id files for NanoDrop and qPCR instruments, to include the start plate name in the name of created sample id file, and give the latter file extension ".csv". The sample id file for the qPCR instrument should also be updated to include a header line. Both the ".csv" file extension, and in case of the qPCR, the header line, seem to be necessary for the software of the instruments to accept the sample id files.

Design update:

  1. Javascript file extraction_preparation.js in resources/sampleproc/ updated in functions exprep.downloadSampleIdFile() and exprep.downloadQPcrSampleIdFile() to include start plate name in the data sent to servlet ExtractionServlet, for creating a sample id file for download.
  2. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method doGet(HttpServletRequest req, HttpServletResponse resp):
    a. Functionality for command "DownloadNanoDropSampleIdFile" updated to include the start plate name in the name of created sample id file, and give the latter file extension ".csv".
    b. Functionality for command "DownloadQPcrSampleIdFile" updated to include the start plate name in the name of created sample id file, and give the latter file extension ".csv". A header line is now also included in the created file.

comment:15 by olle, 9 years ago

(In [3205]) Refs #759. MeLuDi Lab tracking protocol for Allprep isolation wizard updated in step 3, regarding creation of sample id files for NanoDrop and qPCR instruments, to include the start plate name in the name of created sample id file, and give the latter file extension ".csv". The sample id file for the qPCR instrument is also updated to include a header line. Both the ".csv" file extension, and in case of the qPCR, the header line, seem to be necessary for the software of the instruments to accept the sample id files:

  1. Javascript file extraction_preparation.js in resources/sampleproc/ updated in functions exprep.downloadSampleIdFile() and exprep.downloadQPcrSampleIdFile() to include start plate name in the data sent to servlet ExtractionServlet, for creating a sample id file for download.
  2. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method doGet(HttpServletRequest req, HttpServletResponse resp):
    a. Functionality for command "DownloadNanoDropSampleIdFile" updated to include the start plate name in the name of created sample id file, and give the latter file extension ".csv".
    b. Functionality for command "DownloadQPcrSampleIdFile" updated to include the start plate name in the name of created sample id file, and give the latter file extension ".csv". A header line is now also included in the created file.

comment:16 by olle, 9 years ago

(In [3206]) Refs #759. MeLuDi counter, data access object, and servlet code updated to support counting and finding start plates without restrictions, whether they have been processed or not:

  1. Java service class/file CounterService.java in src/net/sf/basedb/meludi/counter/ updated in private method void countBioPlates(DbControl dc, JSONObject json) by addition of a counter for all DNA reaction plates in the project, coupled to JSON key "dna-plates".

  1. Data access object class/file ReactionPlate.java in src/net/sf/basedb/meludi/dao/ updated with new public static method List<ReactionPlate> findByBioPlateType(DbControl dc, BioplateType bioPlateType, Subtype subtype, String prefix, int numFreeWells, Annotationtype runAnnotation). It finds all reaction plates which can hold biomaterial items of the given subtype, and have names starting with an optional prefix. Plates included are plates that have at least the specified number of free wells and no value set for the 'run date' annotation.

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method doGet(HttpServletRequest req, HttpServletResponse resp) by support for new command "GetStartPlates", that will call new static method ReactionPlate.findByBioPlateType(DbControl dc, BioplateType bioPlateType, Subtype subtype, String prefix, int numFreeWells, Annotationtype runAnnotation) to obtain a list of DNA reaction plates. The list will be returned as a JSON array. A list of extract source item names and number of optional extra items will be loaded from annotations for a plate, and added to the JSON response as values for JSON objects with keys "sourceItemNames" and "numberExtraQiacubeItems", respectively.

comment:17 by olle, 9 years ago

Functional specification update:

  • MeLuDi case summary should be updated in the specimen info, to show information on an optional start DNA plate coupled to the specimen, by the latter's name being included in the plate's Annotationtype.SOURCE_ITEM_NAMES annotation.

Design update:

  1. JSP file case_summary.jsp in resources/reports/ updated by including a new row of cells with optional start plate data for the specimens related to a case.
  2. Javascript file case_summary.js in resources/reports/ updated in function cs.caseInfoLoaded() to add a column with links to optional start DNA plates for the specimens. The start plate info is retrieved from the specimen JSON object using key "startPlate".
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetCaseInfo" to call new private method BioPlate fetchStartPlate(DbControl dc, SpecimenTube st), and if the result is not null, add the plate info as JSONObject with key "startPlate" to the JSONObject for the specimen.
    b. New private method BioPlate fetchStartPlate(DbControl dc, SpecimenTube st) added. It finds the first start DNA reaction plate with the input specimen name contained in annotation list Annotationtype.SOURCE_ITEM_NAMES. If none is found, null will be returned.
  4. Java utility class/file JsonUtil.java in src/net/sf/basedb/meludi/ updated with new public static method JSONObject getBioPlateAsJSON(BioPlate plate). It returns plate info in JSON corresonding to the plate info in public method JSONObject getBioWellAsJSON(BioWell well, boolean includePlateInfo).

comment:18 by olle, 9 years ago

(In [3207]) Refs #759. MeLuDi case summary updated in the specimen info, to show information on an optional start DNA plate coupled to the specimen, by the latter's name being included in the plate's Annotationtype.SOURCE_ITEM_NAMES annotation:

  1. JSP file case_summary.jsp in resources/reports/ updated by including a new row of cells with optional start plate data for the specimens related to a case.
  2. Javascript file case_summary.js in resources/reports/ updated in function cs.caseInfoLoaded() to add a column with links to optional start DNA plates for the specimens. The start plate info is retrieved from the specimen JSON object using key "startPlate".
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetCaseInfo" to call new private method BioPlate fetchStartPlate(DbControl dc, SpecimenTube st), and if the result is not null, add the plate info as JSONObject with key "startPlate" to the JSONObject for the specimen.
    b. New private method BioPlate fetchStartPlate(DbControl dc, SpecimenTube st) added. It finds the first start DNA reaction plate with the input specimen name contained in annotation list Annotationtype.SOURCE_ITEM_NAMES. If none is found, null will be returned.
  4. Java utility class/file JsonUtil.java in src/net/sf/basedb/meludi/ updated with new public static method JSONObject getBioPlateAsJSON(BioPlate plate). It returns plate info in JSON corresonding to the plate info in public method JSONObject getBioWellAsJSON(BioWell well, boolean includePlateInfo).

comment:19 by olle, 9 years ago

Functional specification update:

  • MeLuDi DNA/RNA registration/quantification wizard should be updated in Qubit file parsing:
    a. The read assay concentration in ng/µl should be multiplied by a dilution factor. If a dilution factor is supplied in the "Dilution Factor" column of the item, that should be used, otherwise the Qubit default of 200.0.
    b. An assay concentration value that is not a number (probably "<0.50") should not trigger an error message, but be replaced by "0.0". If such replacements are performed, and no error having occurred indicating the file is invalid, the Qubit file entry should be flagged, and a note of the last item having its value changed in this way should be displayed.

Design update:

  1. Javascript file extraction_registration.js in resources/sampleproc/ updated:
    a. A global constant QUBIT_DILUTION_FACTOR with value 200.0 is defined.
    b. Function exreg.parseQubitFile(data) updated:
    i. A dilution factor will be read from the "Dilution Factor" column of an item, and be multiplied with the read assay concentration in ng/µl. If no dilution factor is supplied for an item, the value of global constant QUBIT_DILUTION_FACTOR is used.
    ii. An assay concentration value that is not a number (probably "<0.50") will now not trigger an error message, but be replaced by "0.0". If such replacements are performed, and no error having occurred indicating the file is invalid, the Qubit file entry will be flagged, and a note of the last item having its value changed in this way be displayed.
Last edited 9 years ago by olle (previous) (diff)

comment:20 by olle, 9 years ago

(In [3208]) Refs #759. MeLuDi DNA/RNA registration/quantification wizard updated in Qubit file parsing:
a. The read assay concentration in ng/µl should be multiplied by a dilution factor. If a dilution factor is supplied in the "Dilution Factor" column of the item, that should be used, otherwise the Qubit default of 200.0.
b. An assay concentration value that is not a number (probably "<0.50") should not trigger an error message, but be replaced by "0.0". If such replacements are performed, and no error having occurred indicating the file is invalid, the Qubit file entry should be flagged, and a note of the last item having its value changed in this way should be displayed.

  1. Javascript file extraction_registration.js in resources/sampleproc/ updated:
    a. A global constant QUBIT_DILUTION_FACTOR with value 200.0 is defined.
    b. Function exreg.parseQubitFile(data) updated:
    i. A dilution factor will be read from the "Dilution Factor" column of an item, and be multiplied with the read assay concentration in ng/µl. If no dilution factor is supplied for an item, the value of global constant QUBIT_DILUTION_FACTOR is used.
    ii. An assay concentration value that is not a number (probably "<0.50") will now not trigger an error message, but be replaced by "0.0". If such replacements are performed, and no error having occurred indicating the file is invalid, the Qubit file entry will be flagged, and a note of the last item having its value changed in this way be displayed.

comment:21 by olle, 9 years ago

Functional specification update:

  • MeLuDi Lab tracking protocol for Allprep isolation wizard should be updated in step 2 by exchanging default primary QIAcube prefix "C" for "B", and secondary QIAcube prefix "A" for "C".

Design update:

  1. JSP file extraction_preparation.jsp in resources/sampleproc/ updated in selection pop-up menus for primary and secondary QIAcube prefixes:
    a. Default primary QIAcube prefix "C" exchanged for "B".
    b. Default secondary QIAcube prefix "A" exchanged for "C".

comment:22 by olle, 9 years ago

(In [3209]) Refs #759. MeLuDi Lab tracking protocol for Allprep isolation wizard updated in step 2 by exchanging default primary QIAcube prefix "C" for "B", and secondary QIAcube prefix "A" for "C":

  1. JSP file extraction_preparation.jsp in resources/sampleproc/ updated in selection pop-up menus for primary and secondary QIAcube prefixes:
    a. Default primary QIAcube prefix "C" exchanged for "B".
    b. Default secondary QIAcube prefix "A" exchanged for "C".

comment:23 by olle, 9 years ago

Functional specification update:

  • The desired spelling of the project name has been decided to be "MeLuDI" (i.e. with an uppercase "I" at the end), not "MeLuDi", as has been previously used for the software. There is no requirement that the software name needs to exactly resemble that of the host project, but the following updates should be done:
    a. The main program title displayed at the upper left corner of web pages, and in the program version info text displayed in parenthesis at the upper right corner of many web pages and forms should be changed to "MeLuDI".
    b. References to the program name in other text on web pages and forms may retain the previous spelling, but changes to the new standard is allowed.

Design update:

  1. Outermost Ant XML build file build.xml updated:
    a. Value of property "title" updated from "MeLuDi" to "MeLuDI".
    b. Target "update-title" updated to include Javascript file extraction_protocol.js in resources/sampleproc/ among the files, for which the program title is updated.
  2. Javascript file extraction_protocol.js in resources/sampleproc/ updated with new constant TITLE, whose value will be used in the program version info text.
  3. Javascript file meludi-2.js in resources/ updated.
  4. Javascript file samplereportgenerator.js in resources/reports/ updated.
  5. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.
  6. Javascript file index.js in resources/ updated in case summary "easter egg" trigger strings and action:
    a. Function index.initPage() updated to add new event handler function index.testMeludiUpperCaseI(event) for key presses in the case summary "caseName" input field.
    b. New function index.testMeludiUpperCaseI(event) added. It checks for input of string "MeLuDI", in which case function index.showMeludi() is activated (same as for "MeLuDi").
    c. Function index.showMeludi() updated in text to refer to the program as "MeLuDI", instead of "MeLuDi".

comment:24 by olle, 9 years ago

(In [3210]) Refs #759. Updates regarding spelling of project name. The desired spelling of the project name has been decided to be "MeLuDI" (i.e. with an uppercase "I" at the end), not "MeLuDi", as has been previously used for the software. There is no requirement that the software name needs to exactly resemble that of the host project, but the following updates should be done:
a. The main program title displayed at the upper left corner of web pages, and in the program version info text displayed in parenthesis at the upper right corner of many web pages and forms should be changed to "MeLuDI".
b. References to the program name in other text on web pages and forms may retain the previous spelling, but changes to the new standard is allowed.

  1. Outermost Ant XML build file build.xml updated:
    a. Value of property "title" updated from "MeLuDi" to "MeLuDI".
    b. Target "update-title" updated to include Javascript file extraction_protocol.js in resources/sampleproc/ among the files, for which the program title is updated.
  2. Javascript file extraction_protocol.js in resources/sampleproc/ updated with new constant TITLE, whose value will be used in the program version info text.
  3. Javascript file meludi-2.js in resources/ updated.
  4. Javascript file samplereportgenerator.js in resources/reports/ updated.
  5. Java class/file Meludi.java in src/net/sf/basedb/meludi/ updated.
  6. Javascript file index.js in resources/ updated in case summary "easter egg" trigger strings and action:
    a. Function index.initPage() updated to add new event handler function index.testMeludiUpperCaseI(event) for key presses in the case summary "caseName" input field.
    b. New function index.testMeludiUpperCaseI(event) added. It checks for input of string "MeLuDI", in which case function index.showMeludi() is activated (same as for "MeLuDi").
    c. Function index.showMeludi() updated in text to refer to the program as "MeLuDI", instead of "MeLuDi".

comment:25 by olle, 9 years ago

Functional specification update:

  • MeLuDI DNA/RNA extraction wizards should be updated to display extract source items in case name order, since this it the preferred order used in the lab. Previously in the Lab tracking protocol for Allprep isolation wizard, specimens have been listed before input RNA items, followed by input DNA items. The original order was chosen because it made QIAcube items (specimens) come before NanoDrop items (specimens + RNA), which come before Qubit items (DNA). The order should be changed both in the extract source item pop-up selection menu in step 1, and the table listing in step 3.

Design update:

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetUnprocessedItems" to store item names of unprocessed specimens, input RNA, and input DNA in a list, together with entries in a utility JSONObject with key equal to the item name and value equal to the item data stored as a JSON object. When all unprocessed items have been found, the name list is sorted, and used to retrieve the JSON data for the items in item name order, and store the former in a JSONArray, that is added to the return JSON object with key "items". The JSONArray data for specimens, input RNA, and input DNA, will still be added to the return JSON object with keys "specimens", "rnas", and "dnas", respectively, but may eventually be removed, when no longer used.
  2. Javascript file extraction_preparation.js in resources/sampleproc/ updated:
    a. Function initializeStep1(response) (callback function to Ajax call to ExtractionServlet with command "GetUnprocessedItems") updated to use JSON data retrieved with key "items", and to create a source item option list, where each option has the item JSON data stored with key "item".
    b. Function getSelectedItemsList() updated to store the selected item JSON data in the item list to return.
  3. Javascript file edit_dnarna_prep_details.js in resources/sampleproc/ updated:
    a. Function getSelectedItemsList() updated to store the selected item JSON data in the item list to return.
  4. Javascript file extraction_registation.js in resources/sampleproc/ updated:
    a. Function sourceItemListLoaded(response) (callback function to Ajax call to ExtractionServlet with command "GetSourceItemListFromStartPlate") updated to use JSON data retrieved with key "items", and to create a source item option list, where each option has the item JSON data stored with key "item".
    b. Function getSelectedItemsList() updated to store the selected item JSON data in the item list to return.
  5. Javascript file edit_dnarna_details.js in resources/sampleproc/ updated:
    a. Function getSelectedItemsList() updated to store the selected item JSON data in the item list to return.

comment:26 by olle, 9 years ago

(In [3212]) Refs #759. MeLuDI DNA/RNA extraction wizards updated to display extract source items in case name order, since this it the preferred order used in the lab. Previously in the Lab tracking protocol for Allprep isolation wizard, specimens have been listed before input RNA items, followed by input DNA items. The original order was chosen because it made QIAcube items (specimens) come before NanoDrop items (specimens + RNA), which come before Qubit items (DNA). The order should be changed both in the extract source item pop-up selection menu in step 1, and the table listing in step 3.

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetUnprocessedItems" to store item names of unprocessed specimens, input RNA, and input DNA in a list, together with entries in a utility JSONObject with key equal to the item name and value equal to the item data stored as a JSON object. When all unprocessed items have been found, the name list is sorted, and used to retrieve the JSON data for the items in item name order, and store the former in a JSONArray, that is added to the return JSON object with key "items". The JSONArray data for specimens, input RNA, and input DNA, will still be added to the return JSON object with keys "specimens", "rnas", and "dnas", respectively, but may eventually be removed, when no longer used.
  2. Javascript file extraction_preparation.js in resources/sampleproc/ updated:
    a. Function initializeStep1(response) (callback function to Ajax call to ExtractionServlet with command "GetUnprocessedItems") updated to use JSON data retrieved with key "items", and to create a source item option list, where each option has the item JSON data stored with key "item".
    b. Function getSelectedItemsList() updated to store the selected item JSON data in the item list to return.
  3. Javascript file edit_dnarna_prep_details.js in resources/sampleproc/ updated:
    a. Function getSelectedItemsList() updated to store the selected item JSON data in the item list to return.
  4. Javascript file extraction_registation.js in resources/sampleproc/ updated:
    a. Function sourceItemListLoaded(response) (callback function to Ajax call to ExtractionServlet with command "GetSourceItemListFromStartPlate") updated to use JSON data retrieved with key "items", and to create a source item option list, where each option has the item JSON data stored with key "item".
    b. Function getSelectedItemsList() updated to store the selected item JSON data in the item list to return.
  5. Javascript file edit_dnarna_details.js in resources/sampleproc/ updated:
    a. Function getSelectedItemsList() updated to store the selected item JSON data in the item list to return.

comment:27 by olle, 9 years ago

Functional specification update:

  • MeLuDI Lab tracking protocol for Allprep isolation wizard should be updated in step 3 regarding the layout used, when a qPCR sample id file is created. When placing triplets of each item on three columns in the same row, triplets for items in sequence should be placed on a new row under the preceding triplet, until the last row is reached, after which the next triplet is placed on on the first row to the right of the last triplet on that row.

Example layout for 18 samples 01-18, plus QCT (Quality Control Template) and NTC (No Template Control):

1 2 3 4 5 6 7 8 9 10 11 12
A 01 01 01 09 09 09 17 17 17
B 02 02 02 10 10 10 18 18 18
C 03 03 03 11 11 11 QCT QCT QCT
D 04 04 04 12 12 12 NTC NTC NTC
E 05 05 05 13 13 13
F 06 06 06 14 14 14
G 07 07 07 15 15 15
H 08 08 08 16 16 16

Design update:

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "DownloadQPcrSampleIdFile", when placing triplets of each item on three columns in the same row. Triplets for items in sequence are now placed on a new row under the preceding triplet, until the last row is reached, after which the next triplet is placed on on the first row to the right of the last triplet on that row.

comment:28 by olle, 9 years ago

(In [3213]) Refs #759. MeLuDI Lab tracking protocol for Allprep isolation wizard updated in step 3 regarding the layout used, when a qPCR sample id file is created. When placing triplets of each item on three columns in the same row, triplets for items in sequence should be placed on a new row under the preceding triplet, until the last row is reached, after which the next triplet is placed on on the first row to the right of the last triplet on that row.

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "DownloadQPcrSampleIdFile", when placing triplets of each item on three columns in the same row. Triplets for items in sequence are now placed on a new row under the preceding triplet, until the last row is reached, after which the next triplet is placed on on the first row to the right of the last triplet on that row.

comment:29 by olle, 9 years ago

Functional specification update:

  • MeLuDI DNA/RNA extraction wizards should have minor updates to the tables shown in step 3:
    a. The start plate name should be shown in the info section above the table.
    b. Header text of the first table column should be changed from "Specimen" to the more correct "Extract source item", since input DNA and RNA are also shown here.

Design update:

  1. JSP files extraction_preparation.jsp and extraction_registration.jsp in resources/sampleproc/ updated by addition of new div tag with id "detailsStartPlateName" inserted above the instruction text in the info section above the table for step 3.
  2. Javascript files extraction_preparation.js and extraction_registration.js in resources/sampleproc/ updated in function initializeStep3():
    a. The start plate name is inserted in new div tag with id "detailsStartPlateName".
    b. Header text of the first table column changed from "Specimen" to the more correct "Extract source item".

comment:30 by olle, 9 years ago

(In [3220]) Refs #759. MeLuDI DNA/RNA extraction wizards minor updates to the tables shown in step 3:
a. The start plate name is now shown in the info section above the table.
b. Header text of the first table column changed from "Specimen" to the more correct "Extract source item", since input DNA and RNA are also shown here:

  1. JSP files extraction_preparation.jsp and extraction_registration.jsp in resources/sampleproc/ updated by addition of new div tag with id "detailsStartPlateName" inserted above the instruction text in the info section above the table for step 3.
  2. Javascript files extraction_preparation.js and extraction_registration.js in resources/sampleproc/ updated in function initializeStep3():
    a. The start plate name is inserted in new div tag with id "detailsStartPlateName".
    b. Header text of the first table column changed from "Specimen" to the more correct "Extract source item".

comment:31 by olle, 9 years ago

(In [3221]) Refs #759.Bug fixed in java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ when registering DNA/RNA quantification:

  1. Private method float fetchFloatValue(Object object) updated to not try to cast the input object outside the try-catch block.

comment:32 by olle, 9 years ago

(In [3222]) Refs #759. JSP file extraction_registration.jsp in resources/sampleproc/ updated by removing the link to a pop-up calendar for the disabled isolation date and QIAcube date fields, since this could otherwise be used to change the intended read-only values "behind the scenes".

comment:33 by olle, 9 years ago

(In [3223]) Refs #759. MeLuDI DNA/RNA extraction wizards value edit pop-up dialogs updated in instruction text for QIAcube prefix to not refer to any specific primary and secondary prefixes, since these may change, but only to examples.

  1. JSP files edit_dnarna_details.jsp and edit_dnarna_prep_details.jsp in resources/sampleproc/ updated in instruction text for QIAcube prefix to not refer to any specific primary and secondary prefixes, but only to examples.

comment:34 by olle, 9 years ago

Functional specification update:

  • MeLuDI DNA/RNA registration/quantification wizard should be updated in step 3 to allow manual input of all measurement values, in addition to the possibility of importing the latter from measurement value files:
    a. This functionality already exists for DNA concentration values, but should be added for RNA concentration and DNA ΔCt values.
    b. Since values now may be entered manually, no checks should be performed that an import file has been chosen, before registration is allowed (currently only affecting NanoDrop value file).

Design update:

  1. JSP file extraction_registration.jsp in resources/sampleproc/ updated in instruction text in the info section above the table for step 3, and in text for value import files.
  2. Javascript file extraction_registration.js in resources/sampleproc/ updated:
    a. Function initializeStep3() updated to create input fields for RNA concentration and DNA delta-Ct values, and to add new event handler functions exreg.rnaConcOnChange(event) and exreg.deltaCtOnChange(event) to these fields, respectively. Input status set to be valid, even if no NanoDrop value file has been chosen. Also, the background for the DNA concentration value column is updated to that of the RNA concentration and DNA delta-Ct value columns, since they now share the same functionality.
    b. New function exreg.rnaConcOnChange(event) added. It updates the stored JSON rna data for an item with the entered concentration value coupled to JSON key "ndConc", and then calls function exreg.updateDetailsTable(). If no value has been entered, null is stored.
    c. Function exreg.dnaConcOnChange(event) updated to store null, if no value has been entered.
    d. New function exreg.deltaCtOnChange(event) added. It updates the stored JSON dna data for an item with the entered delta-Ct value coupled to JSON key "deltaCt", and then calls function exreg.updateDetailsTable(). If no value has been entered, null is stored.
    e. Function exreg.updateDetailsTable() updated to update values of input fields for RNA concentration, DNA contration, and DNA delta-Ct from stored JSON data for items, as well as update quantity values from concentration and volume values.
Last edited 9 years ago by olle (previous) (diff)

comment:35 by olle, 9 years ago

(In [3224]) Refs #759. MeLuDI DNA/RNA registration/quantification wizard updated in step 3 to allow manual input of all measurement values, in addition to the possibility of importing the latter from measurement value files:
a. This functionality already exists for DNA concentration values, but is added for RNA concentration and DNA ΔCt values.
b. Since values now may be entered manually, no checks are performed that an import file has been chosen, before registration is allowed (currently only affecting NanoDrop value file):

  1. JSP file extraction_registration.jsp in resources/sampleproc/ updated in instruction text in the info section above the table for step 3, and in text for value import files.
  2. Javascript file extraction_registration.js in resources/sampleproc/ updated:
    a. Function initializeStep3() updated to create input fields for RNA concentration and DNA delta-Ct values, and to add new event handler functions exreg.rnaConcOnChange(event) and exreg.deltaCtOnChange(event) to these fields, respectively. Input status set to be valid, even if no NanoDrop value file has been chosen. Also, the background for the DNA concentration value column is updated to that of the RNA concentration and DNA delta-Ct value columns, since they now share the same functionality.
    b. New function exreg.rnaConcOnChange(event) added. It updates the stored JSON rna data for an item with the entered concentration value coupled to JSON key "ndConc", and then calls function exreg.updateDetailsTable(). If no value has been entered, null is stored.
    c. Function exreg.dnaConcOnChange(event) updated to store null, if no value has been entered.
    d. New function exreg.deltaCtOnChange(event) added. It updates the stored JSON dna data for an item with the entered delta-Ct value coupled to JSON key "deltaCt", and then calls function exreg.updateDetailsTable(). If no value has been entered, null is stored.
    e. Function exreg.updateDetailsTable() updated to update values of input fields for RNA concentration, DNA contration, and DNA delta-Ct from stored JSON data for items, as well as update quantity values from concentration and volume values.

comment:36 by olle, 9 years ago

Functional specification update:

  • MeLuDI should be updated with a new wizard "Lab tracking sheet/report copy" in the DNA/RNA extraction wizards section. The new wizard should contain three steps, that resemble those of the DNA/RNA registration/quantification wizard, but where very few inputs are needed:
    1. Step 1 should contain a start plate selection menu, with all start plates, both unprocessed and processed, where the plate of interest may be selected.
    2. Step 2 should retrieve and display data from the selected plate, and if the latter is processed, lot no.s for the first created DNA extract for a specimen connected to the plate. A menu should allow the user to select whether a tracking sheet copy or report copy should be created. If the plate is unprocessed, only "sheet" is available, while for a processed plate both "sheet" and "report" (default) are available.
    3. Step 3 should display a table of the extract source items for the plate, including measurement values, if a tracking report copy has been selected. It should be possible to create a form copy in a new window/tab, by clicking a button.

Design update:

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetStartPlates" to include extraction date in JSON response. The extraction date is set equal to the plate event date.
    b. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetSourceItemListFromStartPlate" to use annotation snapshot manager to retrieve some annotations, in order to increase performance. If new parameter "includeSpecimenExtracts" is set to true, data for RNA and DNA extracts for a specimen will be retrieved, and included in the JSON repsonse. Private methods void loadSpecimenInfo(DbControl dc, SpecimenTube sp), void loadRnaInfo(DbControl dc, Rna rna), and void loadDnaInfo(DbControl dc, Dna dna) will be called to retrieve annotation data.
    c. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "GetDna" to find a DNA extract by name.
    d. New private method void loadSpecimenInfo(DbControl dc, SpecimenTube sp) added. It loads annotations for the input specimen tube.
    e. New private method void loadRnaInfo(DbControl dc, Rna rna) added. It loads annotations for the input RNA item.
    f. Private method void loadDnaInfo(DbControl dc, Dna dna) updated by loading more annotations for the input DNA.
  2. JSP file index.jsp in resources/ updated with new entry "Lab tracking sheet/report copy" in the DNA/RNA extraction wizards section. The new entry is linked to new JSP file extraction_formcopy.jsp in resources/sampleproc/.
  3. New JSP file extraction_formcopy.jsp in resources/sampleproc/ added. It is connected to new Javascript file extraction_formcopy.js in resources/sampleproc/.
  4. New Javascript file extraction_formcopy.js in resources/sampleproc/ added. It relies on the new commands and updated functionality of existing commands in java servlet ExtractionServlet to construct a selection menu in step 1 containing all start plates; in step 2 to retrieve data for the plate and, if processed, lot no.s from the first created DNA extract for a specimen connected to the plate; and in step 3 to retieve measurement data for DNA and RNA extracts connected to the plate. Many of the functions are updated versions of functions of the same name in Javascript file extraction_registration.js in resources/sampleproc/. However, the new file lacks any registration functionality.
Last edited 9 years ago by olle (previous) (diff)

comment:37 by olle, 9 years ago

(In [3225]) Refs #759. MeLuDI updated with a new wizard "Lab tracking sheet/report copy" in the DNA/RNA extraction wizards section. The new wizard contains three steps, that resemble those of the DNA/RNA registration/quantification wizard, but where very few inputs are needed:
1. Step 1 contains a start plate selection menu, with all start plates, both unprocessed and processed, where the plate of interest may be selected.
2. Step 2 retrieves and displays data from the selected plate, and if the latter is processed, lot no.s for the first created DNA extract for a specimen connected to the plate. A menu allows the user to select whether a tracking sheet copy or report copy should be created. If the plate is unprocessed, only "sheet" is available, while for a processed plate both "sheet" and "report" (default) are available.
3. Step 3 displays a table of the extract source items for the plate, including measurement values, if a tracking report copy has been selected. A form copy may be created in a new window/tab by clicking a button.

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetStartPlates" to include extraction date in JSON response. The extraction date is set equal to the plate event date.
    b. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetSourceItemListFromStartPlate" to use annotation snapshot manager to retrieve some annotations, in order to increase performance. If new parameter "includeSpecimenExtracts" is set to true, data for RNA and DNA extracts for a specimen will be retrieved, and included in the JSON repsonse. Private methods void loadSpecimenInfo(DbControl dc, SpecimenTube sp), void loadRnaInfo(DbControl dc, Rna rna), and void loadDnaInfo(DbControl dc, Dna dna) will be called to retrieve annotation data.
    c. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated with new command "GetDna" to find a DNA extract by name.
    d. New private method void loadSpecimenInfo(DbControl dc, SpecimenTube sp) added. It loads annotations for the input specimen tube.
    e. New private method void loadRnaInfo(DbControl dc, Rna rna) added. It loads annotations for the input RNA item.
    f. Private method void loadDnaInfo(DbControl dc, Dna dna) updated by loading more annotations for the input DNA.
  2. JSP file index.jsp in resources/ updated with new entry "Lab tracking sheet/report copy" in the DNA/RNA extraction wizards section. The new entry is linked to new JSP file extraction_formcopy.jsp in resources/sampleproc/.
  3. New JSP file extraction_formcopy.jsp in resources/sampleproc/ added. It is connected to new Javascript file extraction_formcopy.js in resources/sampleproc/.
  4. New Javascript file extraction_formcopy.js in resources/sampleproc/ added. It relies on the new commands and updated functionality of existing commands in java servlet ExtractionServlet to construct a selection menu in step 1 containing all start plates; in step 2 to retrieve data for the plate and, if processed, lot no.s from the first created DNA extract for a specimen connected to the plate; and in step 3 to retieve measurement data for DNA and RNA extracts connected to the plate. Many of the functions are updated versions of functions of the same name in Javascript file extraction_registration.js in resources/sampleproc/. However, the new file lacks any registration functionality.

comment:38 by olle, 9 years ago

Functional specification update:

  • MeLuDI should be updated for qPCR sample id file generation and qPCR ΔCt value file import to use DNA extract names as sample id values, instead of specimen and input DNA names, as is currently used. The new name scheme has a number of advantages:
    a. It is more natural, since the measurements are performed on DNA extracts.
    b. Although not used at present, the qPCR instrument can be used for RNA quality measurements as well as for DNA, and the new naming convention makes it clear what is intended.
    c. It is already used for NanoDrop sample id files, with RNA instead of DNA, and will therefore increase the consistency between the files, even if the table details differ.

Design update:

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method doGet(HttpServletRequest req, HttpServletResponse resp) for command "DownloadQPcrSampleIdFile" to add suffix ".d" to the sample id name, if the item is a specimen.
  2. Javascript file extraction_registration.js in resources/sampleproc/ updated:
    a. Function parseNanoDropFile(data) updated to call updated function findRnaOrDna(sampleId, lineNo, messageId) instead of findRnaOrDnaNanoDrop(sampleId, lineNo, messageId) to find a sample with a given sample id.
    b. Function parseDnaInput(data) updated to call updated function findRnaOrDna(sampleId, lineNo, messageId) to find a sample with a given sample id. Also updated to refer to message id "qubitFile" and quantity "qubitConc", instead of "nanoDropFile" and "ndConc", respectively.
    c. Function parseQPcrFile(data) updated to call updated function findRnaOrDna(sampleId, lineNo, messageId) to find a sample with a given sample id, and to not add suffix ".d" to the sample id, when calling the latter function.
    d. Function findRnaOrDna(sampleId, lineNo, messageId) replaced in functionality by old function findRnaOrDna(sampleId, lineNo, messageId), but retaining its previous name. The only extra update in functionality is that the original item name is used for input DNA, as well as for input RNA.
    e. Function generateFakeNanoDropFile() updated to use the item name for input RNA items.
    f. Function generateFakeDnaInput() updated to use the item name for input DNA items.
    g. Function generateFakeQPcrFile() updated to use the item name for input DNA items.
Last edited 9 years ago by olle (previous) (diff)

comment:39 by olle, 9 years ago

(In [3227]) Refs #759. MeLuDI updated for qPCR sample id file generation and qPCR ΔCt value file import to use DNA extract names as sample id values, instead of specimen and input DNA names, as is currently used. The new name scheme has a number of advantages:
a. It is more natural, since the measurements are performed on DNA extracts.
b. Although not used at present, the qPCR instrument can be used for RNA quality measurements as well as for DNA, and the new naming convention makes it clear what is intended.
c. It is already used for NanoDrop sample id files, with RNA instead of DNA, and will therefore increase the consistency between the files, even if the table details differ.

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method doGet(HttpServletRequest req, HttpServletResponse resp) for command "DownloadQPcrSampleIdFile" to add suffix ".d" to the sample id name, if the item is a specimen.
  2. Javascript file extraction_registration.js in resources/sampleproc/ updated:
    a. Function parseNanoDropFile(data) updated to call updated function findRnaOrDna(sampleId, lineNo, messageId) instead of findRnaOrDnaNanoDrop(sampleId, lineNo, messageId) to find a sample with a given sample id.
    b. Function parseDnaInput(data) updated to call updated function findRnaOrDna(sampleId, lineNo, messageId) to find a sample with a given sample id. Also updated to refer to message id "qubitFile" and quantity "qubitConc", instead of "nanoDropFile" and "ndConc", respectively.
    c. Function parseQPcrFile(data) updated to call updated function findRnaOrDna(sampleId, lineNo, messageId) to find a sample with a given sample id, and to not add suffix ".d" to the sample id, when calling the latter function.
    d. Function findRnaOrDna(sampleId, lineNo, messageId) replaced in functionality by old function findRnaOrDna(sampleId, lineNo, messageId), but retaining its previous name. The only extra update in functionality is that the original item name is used for input DNA, as well as for input RNA.
    e. Function generateFakeNanoDropFile() updated to use the item name for input RNA items.
    f. Function generateFakeDnaInput() updated to use the item name for input DNA items.
    g. Function generateFakeQPcrFile() updated to use the item name for input DNA items.

comment:40 by olle, 9 years ago

(In [3228]) Refs #759. MeLuDI updated in CSS file meludi-2.css in resources/css/ regarding placement of links and buttons for debug tools.

comment:41 by olle, 9 years ago

(In [3229]) Refs #759. MeLuDI updated in info text for step 3 in Lab tracking protocol for Allprep isolation wizard:

  1. JSP file extraction_preparation.jsp in resources/sampleproc/ updated in info text for step 3, by making description of QIAcube position notation more general.

comment:42 by olle, 9 years ago

Functional specification update:

  • MeLuDI should be updated in case registration by allowing default selections for mutation analysis options (check boxes, default = none selected) to be set depending on the value of project focus (cancer type):
Mutation analysis Melanoma Lung cancer Colon cancer GIST Unknown
KRAS x x
NRAS x x
BRAF x x
EGFR x
ALKEML4
PDGFRA x
KIT x x
Other

Design update:

  1. JSP file specimentube.jsp in resources/sampleproc/ updated in step 2 by placing the project focus (cancer type) selection menu directly above mutation analysis check box set. Info text for the latter updated by adding note that the default selections are set depending on project focus.
  2. Javascript file specimentube.js in resources/sampleproc/ updated:
    a. Function initPage() updated by adding event handler to project focus menu with callback function projectFocusOnChange().
    b. New function projectFocusOnChange() added. It calls new function mutationAnalysisReset() to reset all mutation analysis check boxes to unchecked, after which it retrieves the value of menu projectFocus, and sets the mutation analysis default selections depending on the value of the project focus.
    c. New function mutationAnalysisReset() added. It resets all mutation analysis check boxes to unchecked.
  3. JSP file persinfo.jsp in resources/personal/ updated in step 3 by placing the project focus (cancer type) selection menu directly above mutation analysis check box set. Info text for the latter updated by adding note that the default selections are set depending on project focus.
  4. Javascript file persinfo.js in resources/personal/ updated:
    a. Function initPage() updated by adding event handler to project focus menu with callback function projectFocusOnChange().
    b. New function projectFocusOnChange() added. It calls new function mutationAnalysisReset() to reset all mutation analysis check boxes to unchecked, after which it retrieves the value of menu projectFocus, and sets the mutation analysis default selections depending on the value of the project focus.
    c. New function mutationAnalysisReset() added. It resets all mutation analysis check boxes to unchecked.
Last edited 9 years ago by olle (previous) (diff)

comment:43 by olle, 9 years ago

(In [3230]) Refs #759. MeLuDI updated for qPCR sample ID file generation:

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method doGet(HttpServletRequest req, HttpServletResponse resp) for command "DownloadQPcrSampleIdFile":
    a. Bug fix: Code for addition of suffix ".d" to the sample id name, if the item is a specimen, moved inside block checking that the item name differs from null and an empty string.
    b. Target name set to "UNKN" for sample and QCT (Quality Control Template) items, and "NTC" for NTC (Non Template Control) items.

comment:44 by olle, 9 years ago

Functional specification update:

  • MeLuDI should be updated in wizard "Lab tracking sheet/report copy" in step 3 by adding buttons for NanoDrop and qPCR sample id file generation, in case a tracking sheet copy should be created. The sample id files should be created by the same code as used in the "Lab tracking protocol for Allprep isolation" wizard.

Design update:

  1. JSP file extraction_formcopy.jsp in resources/sampleproc/ updated in step 3 by addition of a table "sampleIdFilesSection" with two buttons between the "details" and "navigation" sections, mimicking the layout of step 3 of the "Lab tracking protocol for Allprep isolation" wizard.
  2. Javascript file extraction_formcopy.js in resources/sampleproc/ updated:
    a, Function initPage() updated by addition of click handlers for the two sample id file buttons, with callback functions downloadSampleIdFile() and downloadQPcrSampleIdFile(), respectively.
    b. Function initializeStep3() updated to show the new buttons, if a tracking sheet copy should be created, else hide them.
    c. New function downloadSampleIdFile() added. It is a copy of the function with the same name in Javascript file extraction_preparation.js.
    d. New function downloadQPcrSampleIdFile() added. It is a copy of the function with the same name in Javascript file extraction_preparation.js.

comment:45 by olle, 9 years ago

(In [3231]) Refs #759. MeLuDI updated in wizard "Lab tracking sheet/report copy" in step 3 by adding buttons for NanoDrop and qPCR sample id file generation, in case a tracking sheet copy should be created. The sample id files are created by the same code as used in the "Lab tracking protocol for Allprep isolation" wizard.

  1. JSP file extraction_formcopy.jsp in resources/sampleproc/ updated in step 3 by addition of a table "sampleIdFilesSection" with two buttons between the "details" and "navigation" sections, mimicking the layout of step 3 of the "Lab tracking protocol for Allprep isolation" wizard.
  2. Javascript file extraction_formcopy.js in resources/sampleproc/ updated:
    a, Function initPage() updated by addition of click handlers for the two sample id file buttons, with callback functions downloadSampleIdFile() and downloadQPcrSampleIdFile(), respectively.
    b. Function initializeStep3() updated to show the new buttons, if a tracking sheet copy should be created, else hide them.
    c. New function downloadSampleIdFile() added. It is a copy of the function with the same name in Javascript file extraction_preparation.js.
    d. New function downloadQPcrSampleIdFile() added. It is a copy of the function with the same name in Javascript file extraction_preparation.js.

comment:46 by olle, 9 years ago

(In [3232]) Refs #759. MeLuDI updated in case registration by allowing default selections for mutation analysis options (check boxes, default = none selected) to be set depending on the value of project focus (cancer type):

Mutation analysis Melanoma Lung cancer Colon cancer GIST Unknown
KRAS x x
NRAS x x
BRAF x x
EGFR x
ALKEML4
PDGFRA x
KIT x x
Other
  1. JSP file specimentube.jsp in resources/sampleproc/ updated in step 2 by placing the project focus (cancer type) selection menu directly above mutation analysis check box set. Info text for the latter updated by adding note that the default selections are set depending on project focus.
  2. Javascript file specimentube.js in resources/sampleproc/ updated:
    a. Function initPage() updated by adding event handler to project focus menu with callback function projectFocusOnChange().
    b. New function projectFocusOnChange() added. It calls new function mutationAnalysisReset() to reset all mutation analysis check boxes to unchecked, after which it retrieves the value of menu projectFocus, and sets the mutation analysis default selections depending on the value of the project focus.
    c. New function mutationAnalysisReset() added. It resets all mutation analysis check boxes to unchecked.
  3. JSP file persinfo.jsp in resources/personal/ updated in step 3 by placing the project focus (cancer type) selection menu directly above mutation analysis check box set. Info text for the latter updated by adding note that the default selections are set depending on project focus.
  4. Javascript file persinfo.js in resources/personal/ updated:
    a. Function initPage() updated by adding event handler to project focus menu with callback function projectFocusOnChange().
    b. New function projectFocusOnChange() added. It calls new function mutationAnalysisReset() to reset all mutation analysis check boxes to unchecked, after which it retrieves the value of menu projectFocus, and sets the mutation analysis default selections depending on the value of the project focus.
    c. New function mutationAnalysisReset() added. It resets all mutation analysis check boxes to unchecked.

comment:47 by olle, 9 years ago

Design discussion:

  • The connection between extract source items and a DNA start plate is currently maintained by a list of extract source item names being stored in an AnnotationType.SOURCE_ITEM_NAMES annotation of type Type.STRING on the start plate item. This has turned out to be problematic, as the order of extract source items is of interest, and the Annotationtype public method List<?> getAnnotationValues(DbControl dc, Annotatable item) only guarantees that the same list items as originally saved are contained in the returned list, but not their order. BASE does currently not support saving a list in a way, that it can be retrieved with items in the original order, without using some work-around.

Design update suggestion:

  • One of the easiest solutions is to store the list as a string with comma-separated values, which in the current case is natural, as the items in question are strings, that do not contain any comma characters. One pitfall is that annotations of type Type.STRING ate limited to 255 characters, which may impose an undesired limit on the number of items, that may be contained in the list. An extract source item normally contains 9 characters (7 in the case name + dot + specimen tube number or "r" or "d"), and the number of items on each start plate is <= 24, so the maximal list string size would be 9 * 24 + 23 separator commas = 239 characters. This is too close to the 255 limit, to feel comfortable, bearing in mind that future requirements may increase the size of the data, that needs to be stored. The list string should therefore be stored as a annotation of type Type.TEXT, that allows considerably more data. In order to simplify storing and retrieval of the list values, methods for making the conversion to and from a comma-separated list string should be added in utility classes.
Last edited 9 years ago by olle (previous) (diff)

comment:48 by olle, 9 years ago

Design update regarding storage of the extract source item names connected to a start plate:

  1. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated:
    a. New annotation type SOURCE_ITEM_NAMES_LIST_STRING of type Type.TEXT added for bioplates.
    b. New public methods List<?> getAnnotationValues(DbControl dc, Annotatable item, Boolean fromListString) and List<?> getAnnotationValues(DbControl dc, Annotatable item, Boolean fromListString, Boolean trim) added. They return the same list as existing method List<?> getAnnotationValues(DbControl dc, Annotatable item) if Boolean flag fromListString is null or false, otherwise the data is expected to be stored as a comma-separated list string, which is converted to a list of string values, with optional trimming of leading and trailing white space.
    c. Public method void setAnnotationValues(DbControl dc, Annotatable item, List<?> values) updated if the annotation has multiplicity equal to 1, to store the list as a comma-separated list string.
  2. Data access object class/file MeludiItem.java in src/net/sf/basedb/meludi/dao/ updated:
    a. New public methods void loadAnnotations(DbControl dc, String jsonKey, Annotationtype annotationType, ValueConverter converter, Boolean fromListString) and void loadAnnotations(DbControl dc, String jsonKey, Annotationtype annotationType, ValueConverter converter, Boolean fromListString, Boolean trim) added. They load annotations for the given annotation type and store the values in the given JSON key. The functionality is identical to existing method void loadAnnotations(DbControl dc, String jsonKey, Annotationtype annotationType, ValueConverter converter) if Boolean flag fromListString is null or false, otherwise the data is expected to be stored as a comma-separated list string, which is converted to a list of string values, with optional trimming of leading and trailing white space.
  3. 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 annotations of new text annotation type Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING for bioplate items.
  4. 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 "GetStartPlates" and "GetUnprocessedStartPlates" by calling method loadAnnotations(DbControl dc, String jsonKey, Annotationtype annotationType, ValueConverter converter, Boolean fromListString, Boolean trim) for a start plate to retrieve Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotations as a string list, where Boolean flags fromListString and trim are set to true.
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetSourceItemListFromStartPlate" to call new Annotationtype method List<?> getAnnotationValues(DbControl dc, Annotatable item, Boolean fromListString, Boolean trim) for a start plate to retrieve Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotations as a string list, where Boolean flags fromListString and trim are set to true.
    c. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "RegisterStartPlate" to call Annotationtype method void setAnnotationValues(DbControl dc, Annotatable item, List<?> values) for Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotations to store an extract source item name list for a start plate.
  5. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated in private method BioPlate fetchStartPlate(DbControl dc, SpecimenTube sp) to call new Annotationtype method List<?> getAnnotationValues(DbControl dc, Annotatable item, Boolean fromListString, Boolean trim) for a start plate to retrieve Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotations as a string list, where Boolean flags fromListString and trim are set to true.
Last edited 9 years ago by olle (previous) (diff)

comment:49 by olle, 9 years ago

(In [3233]) Refs #759. MeLuDI updated regarding storage of the extract source item names connected to a start plate. They as now stored as a comma-separated list string in new start plate text annotation of type Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING:

  1. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated:
    a. New annotation type SOURCE_ITEM_NAMES_LIST_STRING of type Type.TEXT added for bioplates.
    b. New public methods List<?> getAnnotationValues(DbControl dc, Annotatable item, Boolean fromListString) and List<?> getAnnotationValues(DbControl dc, Annotatable item, Boolean fromListString, Boolean trim) added. They return the same list as existing method List<?> getAnnotationValues(DbControl dc, Annotatable item) if Boolean flag fromListString is null or false, otherwise the data is expected to be stored as a comma-separated list string, which is converted to a list of string values, with optional trimming of leading and trailing white space.
    c. Public method void setAnnotationValues(DbControl dc, Annotatable item, List<?> values) updated if the annotation has multiplicity equal to 1, to store the list as a comma-separated list string.
  2. Data access object class/file MeludiItem.java in src/net/sf/basedb/meludi/dao/ updated:
    a. New public methods void loadAnnotations(DbControl dc, String jsonKey, Annotationtype annotationType, ValueConverter converter, Boolean fromListString) and void loadAnnotations(DbControl dc, String jsonKey, Annotationtype annotationType, ValueConverter converter, Boolean fromListString, Boolean trim) added. They load annotations for the given annotation type and store the values in the given JSON key. The functionality is identical to existing method void loadAnnotations(DbControl dc, String jsonKey, Annotationtype annotationType, ValueConverter converter) if Boolean flag fromListString is null or false, otherwise the data is expected to be stored as a comma-separated list string, which is converted to a list of string values, with optional trimming of leading and trailing white space.
  3. 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 annotations of new text annotation type Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING for bioplate items.
  4. 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 "GetStartPlates" and "GetUnprocessedStartPlates" by calling method loadAnnotations(DbControl dc, String jsonKey, Annotationtype annotationType, ValueConverter converter, Boolean fromListString, Boolean trim) for a start plate to retrieve Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotations as a string list, where Boolean flags fromListString and trim are set to true.
    b. Protected method void doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetSourceItemListFromStartPlate" to call new Annotationtype method List<?> getAnnotationValues(DbControl dc, Annotatable item, Boolean fromListString, Boolean trim) for a start plate to retrieve Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotations as a string list, where Boolean flags fromListString and trim are set to true.
    c. Protected method void doPost(HttpServletRequest req, HttpServletResponse resp) updated for command "RegisterStartPlate" to call Annotationtype method void setAnnotationValues(DbControl dc, Annotatable item, List<?> values) for Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotations to store an extract source item name list for a start plate.
  5. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated in private method BioPlate fetchStartPlate(DbControl dc, SpecimenTube sp) to call new Annotationtype method List<?> getAnnotationValues(DbControl dc, Annotatable item, Boolean fromListString, Boolean trim) for a start plate to retrieve Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotations as a string list, where Boolean flags fromListString and trim are set to true.
Last edited 9 years ago by olle (previous) (diff)

comment:50 by olle, 9 years ago

Functional specification update:

  • MeLuDI should be updated in DNA/RNA extraction wizards by changing the DNA default volume from 45 to 25 µl.

Design update:

  1. Javascript files extraction_preparation.js, extraction_registration.js, and extraction_formcopy.js in resources/sampleproc/ updated by changing value of constant DEFAULT_DNA_VOLUME from 45 to 25 µl.

comment:51 by olle, 9 years ago

(In [3234]) Refs #759. MeLuDI updated in DNA/RNA extraction wizards by changing the DNA default volume from 45 to 25 µl:

  1. Javascript files extraction_preparation.js, extraction_registration.js, and extraction_formcopy.js in resources/sampleproc/ updated by changing value of constant DEFAULT_DNA_VOLUME from 45 to 25 µl.

comment:52 by olle, 9 years ago

Functional specification update:

  • MeLuDI case summary should be updated in the RNA and DNa info, to show information on an optional start DNA plate coupled to the item, by the latter's name being included in the plate's Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotation.

Design update:

  1. JSP file case_summary.jsp in resources/reports/ updated by including a new row of cells with optional start plate data for the RNA and DNA related to a case.
  2. Javascript file case_summary.js in resources/reports/ updated in function cs.caseInfoLoaded() to add a column with links to optional start DNA plates for the RNA and DNA. The start plate info is retrieved from the RNA and DNA JSON objects using key "startPlate".
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetCaseInfo" to call new private method BioPlate fetchStartPlate(DbControl dc, String name) for the name of input RNA and DNA items, and if the result is not null, add the plate info as JSONObject with key "startPlate" to the JSONObject for the RNA or DNA.
    b. Private method BioPlate fetchStartPlate(DbControl dc, SpecimenTube st) updated to call new private method BioPlate fetchStartPlate(DbControl dc, String name) for the name of the SpecimenTube sample item.
    c. New private method BioPlate fetchStartPlate(DbControl dc, String name) added. It finds the first start DNA reaction plate with the input item name contained in annotation list Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING. If none is found, null will be returned.
    d. New private method boolean itemIsInputItem(String itemName) added. It checks if an item is an input item by checking if its name only contains a single dot. Case names without dots are not considered as input items here.
Last edited 9 years ago by olle (previous) (diff)

comment:53 by olle, 9 years ago

(In [3237]) Refs #759. MeLuDI case summary updated in the RNA and DNa info, to show information on an optional start DNA plate coupled to the item, by the latter's name being included in the plate's Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING annotation.

  1. JSP file case_summary.jsp in resources/reports/ updated by including a new row of cells with optional start plate data for the RNA and DNA related to a case.
  2. Javascript file case_summary.js in resources/reports/ updated in function cs.caseInfoLoaded() to add a column with links to optional start DNA plates for the RNA and DNA. The start plate info is retrieved from the RNA and DNA JSON objects using key "startPlate".
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated:
    a. Protected method doGet(HttpServletRequest req, HttpServletResponse resp) updated for command "GetCaseInfo" to call new private method BioPlate fetchStartPlate(DbControl dc, String name) for the name of input RNA and DNA items, and if the result is not null, add the plate info as JSONObject with key "startPlate" to the JSONObject for the RNA or DNA.
    b. Private method BioPlate fetchStartPlate(DbControl dc, SpecimenTube st) updated to call new private method BioPlate fetchStartPlate(DbControl dc, String name) for the name of the SpecimenTube sample item.
    c. New private method BioPlate fetchStartPlate(DbControl dc, String name) added. It finds the first start DNA reaction plate with the input item name contained in annotation list Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING. If none is found, null will be returned.
    d. New private method boolean itemIsInputItem(String itemName) added. It checks if an item is an input item by checking if its name only contains a single dot. Case names without dots are not considered as input items here.

comment:54 by olle, 9 years ago

(In [3238]) Refs #759. MeLuDI updated in Lab tracking protocol for Allprep isolation wizard in step 3 by exchanging the NanoDrop plate position table header "Pos" for "NanoDrop Plate Pos." in bold face, in order to clarify the column's content.

  1. Javascript files extraction_preparation.js and extraction_formcopy.js in resources/sampleproc/ updated in method initializeStep3() by exchanging the NanoDrop plate position table header "Pos" for "NanoDrop Plate Pos." in bold face.

comment:55 by olle, 9 years ago

Functional specification update:

  • It was decided to release MeLuDI in its current state as MeLuDI v.1.2.1.

comment:56 by olle, 9 years ago

(In [3239]) Refs #759. Updates due to version number change to "1.2.1".

  1. Version number change to "1.2.1":
    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:57 by olle, 9 years ago

(In [3240]) Refs #759. Javascript file extraction_registration.js in resources/sampleproc/ updated by setting value of variable debug to 0, in order to not include various debug tool links and buttons.

comment:58 by olle, 9 years ago

Resolution: fixed
Status: assignedclosed

Ticket closed as MeLuDI version 1.2.1 has been created.

Note: See TracTickets for help on using tickets.