Opened 9 years ago

Closed 9 years ago

#801 closed task (fixed)

MeLuDI library preparation wizards first version

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

Description

This ticket covers updates related to the first version of the MeLuDI library preparation wizards. The purpose of the ticket is to collect code changes related to the first library preparation wizards in one place. The ticket may span over several MeLuDI versions, since it was decided to release new additions for testing outside the development environment at an early stage, in order to get feedback for improvements.

Change History (185)

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).
Last edited 9 years ago by olle (previous) (diff)

comment:3 by olle, 9 years ago

Functional specification.

(Placeholder for functional specification)

comment:4 by olle, 9 years ago

Design discussion.

(Placeholder for design discussion)

comment:5 by olle, 9 years ago

(In [3449]) Refs #801. Refs #792. First experimental version of library preparation wizards for MeLuDI:

Updates of previous files:

  1. XML servlet configuration file servlets.xml in META-INF/ updated with entries for new servlet classes LibPrepServlet and DnaServlet.
  2. JSP file index.jsp in resources/ updated with new section for library preparation wizards, containing links to three wizards. In view of the experimental character of the latter (especially the ones related to protocol creation and barcode assignment), the section header has been given the extra caution "(Experimental - For testing only)".
  3. CSS file plate.css in resources\css\ updated by increasing the well width from 90 to 100 pixels, in view of the longer storage location names in MeLuDI, relative to Reggie.
  4. Data access object class/file Annotationtype.java in src/net/sf/basedb/meludi/dao/ updated with new annotation types related to library preparation.
  5. Data access object class/file BioPlateType.java in src/net/sf/basedb/meludi/dao/ updated with new bioplate type LIBRARY, and allowing plate name prefix and number of digits in name to be editable.
  6. Data access object class/file Dna.java in src/net/sf/basedb/meludi/dao/ updated with new public static method List<Dna> toList(Collection<Extract> extracts).
  7. Data access object class/file MeludiRole.java in src/net/sf/basedb/meludi/dao/ updated with new roles LIBRARY_PREP and LIBRARY_PLATE_DESIGNER.
  8. Data access object class/file Subtype.java in src/net/sf/basedb/meludi/dao/ updated by adding new attribute String itemSuffix, and new public method BasicItem getLatestProjectDefault(DbControl dc).
  9. 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 types, and install barcodes.

New files related to library preparation:

  1. CSS file startplate.css in resources\css\ added. It is a modified version of plate.css, that restricts highlights to the left half of the plate, since any change in that half should be replicated with a corresponding change in the right half.
  2. Image file manual_dna.png in resources/images/ added.
  3. JSP and javascript files related to the first version of library preparation wizards added to resources/libprep/:
    a. assign_barcodes.js
    b. assign_barcodes.jsp
    c. auto_select_dna.js
    d. auto_select_dna.jsp
    e. dna_protocol.js
    f. dna_protocol.jsp
    g. dna_protocol2.jsp
    h. libprep_protocol.js
    i. libprep_protocol.jsp
    j. libprep_protocol2.jsp
    k. pools.js
    l. select_dna.js
    m. select_dna.jsp
    n. select_dna_for_start_plate.js
    o. select_dna_for_start_plate.jsp
    p. select_file.js
    q. select_file.jsp
  4. Data access object classes/files Library.java and PooledLibrary.java in src/net/sf/basedb/meludi/dao/ added.
  5. Java servlet classes/files DnaServlet.java and LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ added.

comment:6 by olle, 9 years ago

(In [3450]) Refs #801. Refs #792. Debug output in library preparation java servlets removed:

  1. Java servlet classes/files DnaServlet.java and LibPrepServlet.java in src/net/sf/basedb/meludi/servlet/ updated by removing debug output.

comment:7 by olle, 9 years ago

(In [3452]) Refs #801. Refs #792. Instruction file README in / updated by increasing minimum BASE version from 3.4 to 3.5 (needed for use of ItemList items).

comment:8 by olle, 9 years ago

Milestone: MeLuDI v1.3MeLuDI v1.3.1

Milestone renamed

comment:9 by olle, 9 years ago

Milestone: MeLuDI v1.3.1MeLuDI v1.3.2

Milestone changed to MeLuDI v1.3.2, as MeLuDI v1.3.1 has been released.

comment:10 by olle, 9 years ago

(In [3456]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by exchanging references to "Controller" for "Control":

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated in step 3 form by exchanging references to "Controller" for "Control".

comment:11 by olle, 9 years ago

(In [3457]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by fix of bug for manual selection:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function manuallySelected(event) by fix of bug preventing placement of more than the first FPA aliquot (variables "row" and "column" had not been defined and given values, when used to find the FPB well on the right side of the plate from the FPA well).

comment:12 by olle, 9 years ago

(In [3458]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by fix of bug for manual selection:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function manuallySelected(event) by fix of two bugs:
    a. Fix of bug in code creating JSONArray of modified wells. If the number of selected items was larger than the number of selected wells, the array previously included a gap of undefined array items between the modified FPA wells and FPB wells.
    b. Removal of test code making extra item placements starting from the upper left well and continuing downwards.

comment:13 by olle, 9 years ago

(In [3459]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by adapting routine for loading data from file to placing FPA and FPB aliquots on plate:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function parseDnaFile(data) adapting routine for loading data from file to placing FPA and FPB aliquots on plate.
  2. Javascript file select_file.js in resources/libprep/ updated by referring to DNA instead of RNA.

comment:14 by olle, 9 years ago

(In [3460]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated in step 3 form by fix of bug in routine for loading data from file, when column number 7 is addressed in the file:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in function parseDnaFile(data) by fix of bug, when column number 7 is addressed in the file. The condition for checking what columns are allowed for FPA extracts uses a column variable adjusted to numbering columns 0-11, instead of 1-12, so the first column number for FPB extracts is 6, not 7.

comment:15 by olle, 9 years ago

(In [3461]) Refs #801. Refs #802. Library preparation wizard for creating a new start plate updated by placing selected DNA extracts on plate depending on information on the last used column (1-6) for FPA extracts, using current TruSight library preparation kit. The columns are proposed according to a cyclic scheme, intending to make best use of the barcode reagents in a kit:

  1. JSP file select_dna_for_start_plate.jsp in resources/libprep/ updated in step 2 form by addition of pop-up menu for selecting last used column (1-6) for FPA extracts, using current TruSight library preparation kit. This will simulate the resulting proposed DNA layout of the plate. In the final program, the value for last used column is intended to be obtained from the last stored start plate, where the selected TruSight library preparation kit was used.
  2. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated by moving code for placing selected DNA items on plate from function barcodesLoaded(response) to nextPlateNameLoaded(response). The latter function also updated to place the DNA extracts in columns making best use of the barcode reagents in a kit.
Last edited 9 years ago by olle (previous) (diff)

comment:16 by olle, 9 years ago

(In [3462]) Refs #801. Refs #802. MeLuDI updated to sort MeLuDI items and extra material items by name when obtaining DNA items from start item lists:

  1. Java servlet class/file ExtractionServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetListOfItemsFromStartItemLists" to sort MeLuDI items and extra material items by name, before combining them into a final item list. Previously, in each category, only items from each input start item list were guaranteed to come in alphabetical order.

comment:17 by olle, 9 years ago

(In [3463]) Refs #801. Refs #802. MeLuDI "admin" section updated by removing entry for creating start lists from selected start plates in sub-section "Special conversion tools". This tool was only needed when updating to MeLuDI v1.3.1, and will not work with start plates created in the library preparation wizard, since the needed annotation data does not exist:

  1. JSP file index.jsp in resources/ updated in "admin" section by removing entry for creating start lists from selected start plates in sub-section "Special conversion tools".

comment:18 by olle, 9 years ago

(In [3464]) Refs #801. Refs #802. Updates due to version number change to "1.3.2a1".

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

(In [3465]) Refs #801. Refs #802. Updates due to version number change to "1.3.2-dev".

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

Milestone: MeLuDI v1.3.2Milestone MeLuDI v1.3.3

Milestone changed to MeLuDI v1.3.3, as MeLuDI v1.3.2 has been released.

comment:21 by olle, 9 years ago

(In [3512]) Refs #801. Refs #815. Updates due to version number change to "1.3.3-dev".

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

Functional specification update:

  • It may take some time before the list of DNA items from selected start item lists is loaded in step 2 of wizard "Create new start DNA plate". The "Next" button should therefore be disabled until the list is loaded, in order to avoid problems.

Design update:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in functions initializeStep2(event) and maxDeltaCtOnChange(event) to disable the "Next" button (both these functions call servlet ExtractionServlet with command "GetListOfItemsFromStartItemLists" and callback function dnaItemListLoaded(response)), while function dnaItemListLoaded(response) is updated to enble the "Next" button again.

comment:23 by olle, 9 years ago

(In [3518]) Refs #801. Refs #815. Since it may take some time before the list of DNA items from selected start item lists is loaded in step 2 of wizard "Create new start DNA plate", the "Next" button is disabled until the list is loaded, in order to avoid problems:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated in functions initializeStep2(event) and maxDeltaCtOnChange(event) to disable the "Next" button (both these functions call servlet ExtractionServlet with command "GetListOfItemsFromStartItemLists" and callback function dnaItemListLoaded(response)), while function dnaItemListLoaded(response) is updated to enble the "Next" button again.

comment:24 by olle, 9 years ago

Functional specification update:

  • Wizard "Create new start DNA plate" should be updated regarding dilution calculation and reporting:
    a. The aliquot volume should be increased from 10 to 10.5µl, i.e. volume of FPA + FPB from 20 to 21µl.
    b. The dilution factor should be calculated from the ΔCt value using a function obtained by fitting an exponential curve to the Illumina step ladder dilution chart, instead of using the latter chart itself. The aim is to avoid large differences in dilution for extracts with ΔCt values on separate sides of a ladder step.
    c. Dilution volumes for DNA and water, as well as ΔCt values, should be reported with 2 decimals instead of 1, in order to simplify checking the dilution calculation.

Design update:

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. function getWellText(well)updated by increasing the aliquot volume from 10 to 10.5µl, and report dilution volumes for DNA and water, as well as ΔCt values, with 2 decimals instead of 1.
    b. Function fetchDilutionFactor(deltaCt) updated to calculate the dilution factor from the ΔCt value using a function obtained by fitting an exponential curve to the Illumina step ladder dilution chart, instead of using the latter chart itself.

comment:25 by olle, 9 years ago

(In [3519]) Refs #801. Refs #815. Wizard "Create new start DNA plate" updated regarding dilution calculation and reporting:
a. The aliquot volume is increased from 10 to 10.5µl, i.e. volume of FPA + FPB from 20 to 21µl.
b. The dilution factor is now calculated from the ΔCt value using a function obtained by fitting an exponential curve to the Illumina step ladder dilution chart, instead of using the latter chart itself. The aim is to avoid large differences in dilution for extracts with ΔCt values on separate sides of a ladder step.
c. Dilution volumes for DNA and water, as well as ΔCt values, are now reported with 2 decimals instead of 1, in order to simplify checking the dilution calculation.

  1. Javascript file select_dna_for_start_plate.js in resources/libprep/ updated:
    a. function getWellText(well)updated by increasing the aliquot volume from 10 to 10.5µl, and report dilution volumes for DNA and water, as well as ΔCt values, with 2 decimals instead of 1.
    b. Function fetchDilutionFactor(deltaCt) updated to calculate the dilution factor from the ΔCt value using a function obtained by fitting an exponential curve to the Illumina step ladder dilution chart, instead of using the latter chart itself.

comment:26 by olle, 9 years ago

(In [3520]) Refs #801. Refs #815. Javascript file select_dna.js in resources/libprep/ updated by change of top function name from "SelectDna" to "SelectDnaRefCode", since the code is currently not active, but left for reference during early development of the library preparation wizards. Javascript file select_dna_for_start_plate.js in resources/libprep/ is based on the former file, and currently has top function name "SelectDna". Function dnaSelected(response) in javascript file auto_select_dna.js in resources/libprep/ calls function SelectDna.dnaSelected(response) in the file, it was called from, which currently is select_dna_for_start_plate.js. The name change avoids misunderstanding of what function in what file is called from auto_select_dna.js.

comment:27 by olle, 9 years ago

(In [3521]) Refs #801. Refs #815. Updates due to version number change to "1.3.3".

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

Milestone: Milestone MeLuDI v1.3.3Milestone MeLuDI v1.3.4

Milestone changed to MeLuDI v1.3.4, as MeLuDI v1.3.3 has been released.

comment:29 by olle, 9 years ago

Milestone: Milestone MeLuDI v1.3.4MeLuDI v1.3.4

Milestone renamed

comment:30 by olle, 9 years ago

(In [3523]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

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

Functional specification update:

  • Case summary should be updated to present information on fpa and fpb DNA aliquots in a separate section (initially the "Library" section will be used), instead of the "DNA" section.

Design update:

  1. JSP file case_summary.jsp in resources/reports/ updated with "Library" section (previously commented out), after the "DNA" section.
  2. Javascript file case_summary.js in resources/reports/ updated in function caseInfoLoaded(response) to obtain information on fpa and fpb DNA aliquots from the CaseSummaryServlet response, and insert it in appropriate fields in the "Library" section of the case summary form. Code for barcode name updated to display "NA", if not defined.
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetCaseInfo" to send information on fpa and fpb DNA aliquots in new JSON object with key "lib". The barcode string is constructed based on the well location on the library plate.
Last edited 9 years ago by olle (previous) (diff)

comment:32 by olle, 9 years ago

(In [3526]) Refs #801. Refs #816. Case summary updated to present information on fpa and fpb DNA aliquots in a separate section (initially the "Library" section will be used), instead of the "DNA" section:

  1. JSP file case_summary.jsp in resources/reports/ updated with "Library" section (previously commented out), after the "DNA" section.
  2. Javascript file case_summary.js in resources/reports/ updated in function caseInfoLoaded(response) to obtain information on fpa and fpb DNA aliquots from the CaseSummaryServlet response, and insert it in appropriate fields in the "Library" section of the case summary form. Code for barcode name updated to display "NA", if not defined.
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetCaseInfo" to send information on fpa and fpb DNA aliquots in new JSON object with key "lib". The barcode string is constructed based on the well location on the library plate.
Last edited 9 years ago by olle (previous) (diff)

comment:33 by olle, 9 years ago

(In [3527]) Refs #801. Refs #816. Roles MeludiRole.LIBRARY_PREP and MeludiRole.LIBRARY_PLATE_DESIGNER used in library preparation are installed (they were previously defined in data access object MeludiRole.java in src/net/sf/basedb/meludi/dao/):

  1. Java servlet class/file InstallServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp):
    a. For commands "Validate" and "Install" to check roles MeludiRole.LIBRARY_PREP and MeludiRole.LIBRARY_PLATE_DESIGNER, and create them if missing.
    b. For command "GetPermissions" to include information on membership in roles MeludiRole.LIBRARY_PREP and MeludiRole.LIBRARY_PLATE_DESIGNER, respectively.
Last edited 9 years ago by olle (previous) (diff)

comment:34 by olle, 9 years ago

(In [3529]) Refs #801. Refs #816. Updates due to version number change to "1.3.4a1".

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

(In [3530]) Refs #801. Refs #816. Updates due to version number change to "1.3.4-dev".

  1. Version number changed to "1.3.4-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:36 by olle, 9 years ago

Functional specification update:

  • Case summary should be updated to present information on fpa and fpb DNA aliquot barcode tags as links to the corresponding Tag items.

Design update:

  1. Javascript file case_summary.js in resources/reports/ updated in function caseInfoLoaded(response) to present fpa and fpb aliquot barcode tags as links by calling function asLink(itemType, item, maxLength).
  2. Java data access object class/file Barcode.java in src/net/sf/basedb/meludi/dao/ added. It contains among other methods one for retrieving a barcode Tag item from the database, if the name of the former is known.
  3. Java servlet class/file CaseSummaryServlet.java in src/net/sf/basedb/meludi/servlet/ updated in protected method void doGet(HttpServletRequest req, HttpServletResponse resp) for command "GetCaseInfo" to send information on fpa and fpb DNA aliquot Illumina index 1 and 2 name and id in new JSON objects with keys "index1" and "index2", respectively. The barcode info is constructed based on the well location on the library plate.

comment:37 by olle, 9 years ago

(In [3532]) Refs