#768 closed task (fixed)
MeLuDI v.1.2.2 bug fixes and improvements
Reported by: | olle | Owned by: | olle |
---|---|---|---|
Priority: | major | Milestone: | MeLuDI v1.2.3 |
Component: | net.sf.basedb.meludi | Keywords: | |
Cc: |
Description
This ticket covers bug fixes and improvements to MeLuDI v.1.2.2.
Change History (25)
comment:1 by , 10 years ago
Status: | new → assigned |
---|
comment:2 by , 10 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).
comment:3 by , 10 years ago
(In [3258]) Refs #768 Updates due to version number change to "1.3-dev
".
- Version number change to "
1.3-dev
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:4 by , 10 years ago
Bug report:
- Parsing a Qubit value file containing a line, where the "
Units
" column does not have value "ng/ml
", will result in the table updating stopping prematurely. Since all lines in a Qubit value file often have the same value in the "Units
" column, this will result in the DNA concentration fields not being updated. The user is not notified of the cause of the problem.
Analysis:
- Function
exreg.parseQubitFile(data)
in Javascript fileextraction_registration.js
inresources/sampleproc/
reads lines from a Qubit value file, processes the data read, updates the internal JSON objects for the items with new values for DNA Qubit concentrations, and finally calls functionexreg.updateDetailsTable()
to update the table fields with fresh item data. The problem occurs because the data initially read from the file is of type string, which normally will be converted to type number, when multiplied with a conversion factor to make the value be represented inng/µl
units, which is used in the table. However, if the units already are correct, no such conversion will be performed, and the execution crashes when functionexreg.updateDetailsTable()
calls utility functionMeludi.formatNumber(number)
in Javascript filemeludi-2.js
inresources/
withnumber
equal toitem.dna.qubitConc
, since the latter callsnumber.toFixed(numDecimals)
, which is undefined when variable "number
" is a string.
Solution:
- Function
exreg.parseQubitFile(data)
in Javascript fileextraction_registration.js
inresources/sampleproc/
should convert the variable for a read concentration value to the correct type early on. In addition, multiplication with a dilution factor should be performed independently of the value of the units.
comment:5 by , 10 years ago
(In [3268]) Refs #768. Bugs fixed in DNA/RNA registration/quantification wizard for parsing a Qubit value file for concentration values, when the units differ from "ng/ml
". In this case, no multiplication is performed with either a dilution factor (Bug 1) or a unit conversion factor, which results in the read value not being converted from type string
to number
(Bug 2, the code should not rely on side effects for type casting), leading to trouble when function exreg.updateDetailsTable()
in Javascript file extraction_registration.js
in resources/sampleproc/
calls utility function Meludi.formatNumber(number)
in Javascript file meludi-2.js
in resources/
with number
equal to item.dna.qubitConc
, since the latter calls number.toFixed(numDecimals)
, which is undefined when variable "number
" is a string.
- Javascript file
extraction_registration.js
inresources/sampleproc/
updated in functionexreg.parseQubitFile(data)
:
a. The variable for a read concentration value is converted to the correct type early on.
b. Multiplication with a dilution factor is performed independently of the value of the units.
comment:6 by , 10 years ago
Functional specification update:
- MeLuDI should be updated in DNA/RNA registration/quantification wizard for parsing a qPCR value file for DNA ΔCt values, to ignore lines with sample ID values not found for the current start plate. Currently, only specific sample ID values like "
QCT
" and blank values are skipped. The update would allow extra samples to be analyzed in parallel to the MeLuDI samples.
Design update:
- Javascript file
extraction_registration.js
inresources/sampleproc/
updated:
a. Functionexreg.parseQPcrFile(data)
updated to call functionexreg.findRnaOrDna(sampleId, lineNo, messageId)
with argumentmessageId
set tonull
, in order not to set input status toinvalid
, in case extra sample id values are found. If result from functionexreg.findRnaOrDna(...)
isnull
, i.e. no sample is found for the sample ID in question, a notification is stored in new variableqPcrFileInfoText
(any previous entry is overwritten), after which the processing proceeds with the next line in the file. If any notification exists in variableqPcrFileInfoText
when the whole qPCR value file is processed, a message is displayed on the web page.
b. Functionexreg.findRnaOrDna(sampleId, lineNo, messageId)
updated to check if the value of argumentmessageId
differs fromnull
, before setting status for the field with that id toinvalid
.
comment:7 by , 10 years ago
(In [3271]) Refs #768. MeLuDI updated in DNA/RNA registration/quantification wizard for parsing a qPCR value file for DNA ΔCt values, to ignore lines with sample ID values not found for the current start plate. Currently, only specific sample ID values like "QCT
" and blank values are skipped. The update allows extra samples to be analyzed in parallel to the MeLuDI samples.
- Javascript file
extraction_registration.js
inresources/sampleproc/
updated:
a. Functionexreg.parseQPcrFile(data)
updated to call functionexreg.findRnaOrDna(sampleId, lineNo, messageId)
with argumentmessageId
set tonull
, in order not to set input status toinvalid
, in case extra sample id values are found. If result from functionexreg.findRnaOrDna(...)
isnull
, i.e. no sample is found for the sample ID in question, a notification is stored in new variableqPcrFileInfoText
(any previous entry is overwritten), after which the processing proceeds with the next line in the file. If any notification exists in variableqPcrFileInfoText
when the whole qPCR value file is processed, a message is displayed on the web page.
b. Functionexreg.findRnaOrDna(sampleId, lineNo, messageId)
updated to check if the value of argumentmessageId
differs fromnull
, before setting status for the field with that id toinvalid
.
comment:8 by , 10 years ago
(In [3274]) Refs #768. MeLuDI updated by removal of annotation type Annotationtype.SOURCE_ITEM_NAMES
, since it has been replaced by a comma-separated list string in new start plate text annotation of type Annotationtype.SOURCE_ITEM_NAMES_LIST_STRING
. The reason for the change was that the old annotation did not not guarantee that the order of retrieved items in a list was the same as when the list was stored:
- Data access object class/file
Annotationtype.java
insrc/net/sf/basedb/meludi/dao/
updated by removal of annotation typeSOURCE_ITEM_NAMES
of typeType.STRING
for bioplates. - Java servlet class/file
InstallServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
to not include annotations of string annotation typeAnnotationtype.SOURCE_ITEM_NAMES
for bioplate items.
comment:9 by , 10 years ago
(In [3275]) Refs #768. MeLuDI updated with bug fix in NanoDrop sample ID file generation in DNA/RNA extraction wizards. The file now contains 8 rows and 12 columns, instead of 8 rows and 24 columns:
- Java servlet class/file
ExtractionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated in protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
for command "DownloadNanoDropSampleIdFile
" to create a file with 12 columns, instead of 24.
comment:10 by , 10 years ago
Functional specification update:
- MeLuDI should be updated to create DNA and RNA extract items for specimens already when the latter is registered, instead of in the DNA/RNA registration/quantification wizard, when the DNA and RNA has been extracted. The change is motivated by the desire to allocate storage positions for the extracts at the same time as for the specimens and input DNA/RNA. The order of items in the DNA/RNA storage boxes will then come in ascending item name order, which is desired. Previously, this was not guaranteed, since input DNA/RNA was allocated storage positions at registration, which might occur before the extracts was created for an even earlier registered specimen.
Several parts of the software will be affected by the change:
- Registration wizards should present three storage locations for each specimen tube: Specimen location, DNA extract location, RNA extract location. When a specimen tube is registered, all three items should be created, and allocated the specified storage locations.
- The Lab tracking protocol for Allprep isolation wizard should be updated in step 1 to only show input DNA and RNA items together with specimens in the menu of unprocessed extract source items. Unprocessed DNA and RNA items for specimens should not be included, since they are not extracted yet.
- The DNA/RNA registration/quantification wizard should be updated to retrieve the existing DNA and RNA extract items for a specimen, instead of creating new items.
- The DNA/RNA extraction wizards should be updated to specify the storage locations for DNA and RNA extracts in the Lab tracking sheets/reports.
Design update:
General:
- The change motivates updates of layout and code notation, in addition to updates in functionality:
a. Instead of a single storage location for a specimen, now up to three needs to be specified. In order to save space and make the layout more readable, a storage location will be specified on a single line, instead of two, as was used previously (one line for box specification, and one for position in the box). Error messages for both box and position choices, therefore now has to be written in the same space.
b. Previously, the only well position of interest for a the RNA extract for a specimen, was related to the position on the NanoDrop plate. In order to avoid confusion, JSON itemitem.rna.well
is renameditem.rna.nanoDropWell
in scripts.
Servlets:
- Java servlet class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "FindStoragePositions
" to find three storage locations in separate boxes for each specimen tube, for the specimen itself (except the first tube), the DNA extract, and the RNA extract.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "CreateSpecimenTubes
" to create a DNA and RNA extract for each specimen, and set storage position to the ones allocated earlier on.
c. Private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec)
updated to call new private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, String boxType)
with value for argumentboxType
set tonull
.
d. New private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, String boxType)
added. It fetches theBioWell
specified in JSONObjectjsonSpec
for the storage box specified by argumentboxType
, with valuesnull
(default, specimen), "DNA
", or "RNA
". - Java servlet class/file
PersonalRegistrationServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "CreateCase
" to create a DNA and RNA extract for each specimen, and set storage position to the ones allocated earlier on.
b. Private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec)
updated to call new private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, String boxType)
with value for argumentboxType
set tonull
.
c. New private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, String boxType)
added. It fetches theBioWell
specified in JSONObjectjsonSpec
for the storage box specified by argumentboxType
, with valuesnull
(default, specimen), "DNA
", or "RNA
". - Java servlet class/file
ExtractionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "GetUnprocessedItems
" to load info for DNA and RNA extracts to specimens, including storage locations for the former. Storage location info will also be included for input DNA and RNA. Only DNA and RNA extracts passing new filter methodboolean itemIsExtractSourceItem(String itemName)
will now be included in the returned list.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "RegisterDnaRna
" to not create new DNA or RNA extract items, but update the items related to the specimen.
c. Newboolean itemIsExtractSourceItem(String itemName)
added. It calls new private methodint numberOfSpecificCharacters(String str, char c)
to check if the number of dots in the item name is 1, in which case the item is classified as an extract source item, else not.
d. New private methodint numberOfSpecificCharacters(String str, char c)
added. It returns the number of times the specified character occurs in the input string.
JSP and Javascript files:
- Javascript file
specimentube.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep3()
updated with input fields for DNA and RNA storage locations for each specimen.
b. FunctionstoragePositionsLoaded(response)
updated to retrieve recommended storage positions for DNA and RNA extracts for each specimen, and to set event handlers for the new fields.
c. FunctionboxOnKeyUp(event)
updated to retrieve parameterboxType
from the call, in order to print error messages next to the correct storage location field.
d. FunctionwellOnChange(event)
updated to retrieve parameterboxType
from the call, in order to check the correct storage location field.
e. FunctiononBoxValidated(response, index)
updated toonBoxValidated(response, boxType index)
with new argumentboxType
to retrieve parameterboxType
from the call, in order to validate the correct storage location field.
f. FunctionvalidateStep3(event)
updated to retrieve value oftubeContentType
from input field, in order to check validity of the correct storage location field(s).
g. Functionsubmit()
updated to include information on DNA and RNA storage locations for specimens, when sending JSON info toSpecimenTubeRegistrationServlet
for registration. - Javascript file
persinfo.js
inresources/personal/
updated:
a. FunctioninitializeStep4()
updated with input fields for DNA and RNA storage locations for each specimen.
b. FunctionstoragePositionsLoaded(response)
updated to retrieve recommended storage positions for DNA and RNA extracts for each specimen, and to set event handlers for the new fields.
c. FunctionboxOnKeyUp(event)
updated to retrieve parameterboxType
from the call, in order to print error messages next to the correct storage location field.
d. FunctionwellOnChange(event)
updated to retrieve parameterboxType
from the call, in order to check the correct storage location field.
e. FunctiononBoxValidated(response, index)
updated toonBoxValidated(response, boxType index)
with new argumentboxType
to retrieve parameterboxType
from the call, in order to validate the correct storage location field.
f. FunctionvalidateStep4(event)
updated to retrieve value oftubeContentType
from input field, in order to check validity of the correct storage location field(s).
g. Functionsubmit()
updated to include information on DNA and RNA storage locations for specimens, when sending JSON info toSpecimenTubeRegistrationServlet
for registration. - Javascript file
extraction_preparation.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep3()
updated by adding columns for RNA and DNA plate positions to the left of the comment column.
b. FunctionupdateDetailsTable()
updated by changing name of JSON variable for RNA NanoDrop plate position fromitem.rna.well
toitem.rna.nanoDropWell
, in order to increase readability of the code. - Javascript file
extraction_registration.js
inresources/sampleproc/
updated:
a. FunctionvalidateStep1(event)
updated when callingExtractionServlet
with command "GetSourceItemListFromStartPlate
" to add new parameterincludeSpecimenExtracts
with valuetrue
.
b. FunctioninitializeStep3()
updated by adding columns for RNA and DNA plate positions to the left of the volume columns for each extract.
c. FunctionupdateDetailsTable()
updated by changing name of JSON variable for RNA NanoDrop plate position fromitem.rna.well
toitem.rna.nanoDropWell
, in order to increase readability of the code. - Javascript file
extraction_formcopy.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep3()
updated by adding columns for RNA and DNA plate positions to the left of the comment column for a lab tracking sheet, and to the left of the volume columns for each extract for a lab tracking report. Also updated when callingExtractionServlet
with command "GetSourceItemListFromStartPlate
" to add new parameterincludeSpecimenExtracts
with valuetrue
.
b. FunctioninitializeStep3b(response)
updated by changing name of JSON variable for RNA NanoDrop plate position fromitem.rna.well
toitem.rna.nanoDropWell
, in order to increase readability of the code.
c. FunctionupdateDetailsTable()
updated to enter DNA and RNA storage locations in table. Also change of name of JSON variable for RNA NanoDrop plate position fromitem.rna.well
toitem.rna.nanoDropWell
, in order to increase readability of the code. - JSP file
extraction_protocol2.jsp
inresources/sampleproc/
updated by adding columns for RNA and DNA plate positions to the left of the concentrations columns for each extract. - Javascript file
extraction_protocol.js
inresources/sampleproc/
updated in functionstableRowsForItems(...)
andtableRowForOptionalCounterbalanceItem(...)
to add data for RNA and DNA plate positions.
comment:11 by , 10 years ago
(In [3276]) Refs #768. MeLuDI updated to create DNA and RNA extract items for specimens already when the latter is registered, instead of in the DNA/RNA registration/quantification wizard, when the DNA and RNA has been extracted. The change is motivated by the desire to allocate storage positions for the extracts at the same time as for the specimens and input DNA/RNA. The order of items in the DNA/RNA storage boxes will then come in ascending item name order, which is desired. Previously, this was not guaranteed, since input DNA/RNA was allocated storage positions at registration, which might occur before the extracts was created for an even earlier registered specimen.
Servlets:
- Java servlet class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "FindStoragePositions
" to find three storage locations in separate boxes for each specimen tube, for the specimen itself (except the first tube), the DNA extract, and the RNA extract.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "CreateSpecimenTubes
" to create a DNA and RNA extract for each specimen, and set storage position to the ones allocated earlier on.
c. Private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec)
updated to call new private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, String boxType)
with value for argumentboxType
set tonull
.
d. New private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, String boxType)
added. It fetches theBioWell
specified in JSONObjectjsonSpec
for the storage box specified by argumentboxType
, with valuesnull
(default, specimen), "DNA
", or "RNA
". - Java servlet class/file
PersonalRegistrationServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "CreateCase
" to create a DNA and RNA extract for each specimen, and set storage position to the ones allocated earlier on.
b. Private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec)
updated to call new private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, String boxType)
with value for argumentboxType
set tonull
.
c. New private methodBioWell fetchBioWell(DbControl dc, JSONObject jsonSpec, String boxType)
added. It fetches theBioWell
specified in JSONObjectjsonSpec
for the storage box specified by argumentboxType
, with valuesnull
(default, specimen), "DNA
", or "RNA
". - Java servlet class/file
ExtractionServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "GetUnprocessedItems
" to load info for DNA and RNA extracts to specimens, including storage locations for the former. Storage location info will also be included for input DNA and RNA. Only DNA and RNA extracts passing new filter methodboolean itemIsExtractSourceItem(String itemName)
will now be included in the returned list.
b. Protected methodvoid doPost(HttpServletRequest req, HttpServletResponse resp)
updated for command "RegisterDnaRna
" to not create new DNA or RNA extract items, but update the items related to the specimen.
c. Newboolean itemIsExtractSourceItem(String itemName)
added. It calls new private methodint numberOfSpecificCharacters(String str, char c)
to check if the number of dots in the item name is 1, in which case the item is classified as an extract source item, else not.
d. New private methodint numberOfSpecificCharacters(String str, char c)
added. It returns the number of times the specified character occurs in the input string.
JSP and Javascript files:
- Javascript file
specimentube.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep3()
updated with input fields for DNA and RNA storage locations for each specimen.
b. FunctionstoragePositionsLoaded(response)
updated to retrieve recommended storage positions for DNA and RNA extracts for each specimen, and to set event handlers for the new fields.
c. FunctionboxOnKeyUp(event)
updated to retrieve parameterboxType
from the call, in order to print error messages next to the correct storage location field.
d. FunctionwellOnChange(event)
updated to retrieve parameterboxType
from the call, in order to check the correct storage location field.
e. FunctiononBoxValidated(response, index)
updated toonBoxValidated(response, boxType index)
with new argumentboxType
to retrieve parameterboxType
from the call, in order to validate the correct storage location field.
f. FunctionvalidateStep3(event)
updated to retrieve value oftubeContentType
from input field, in order to check validity of the correct storage location field(s).
g. Functionsubmit()
updated to include information on DNA and RNA storage locations for specimens, when sending JSON info toSpecimenTubeRegistrationServlet
for registration. - Javascript file
persinfo.js
inresources/personal/
updated:
a. FunctioninitializeStep4()
updated with input fields for DNA and RNA storage locations for each specimen.
b. FunctionstoragePositionsLoaded(response)
updated to retrieve recommended storage positions for DNA and RNA extracts for each specimen, and to set event handlers for the new fields.
c. FunctionboxOnKeyUp(event)
updated to retrieve parameterboxType
from the call, in order to print error messages next to the correct storage location field.
d. FunctionwellOnChange(event)
updated to retrieve parameterboxType
from the call, in order to check the correct storage location field.
e. FunctiononBoxValidated(response, index)
updated toonBoxValidated(response, boxType index)
with new argumentboxType
to retrieve parameterboxType
from the call, in order to validate the correct storage location field.
f. FunctionvalidateStep4(event)
updated to retrieve value oftubeContentType
from input field, in order to check validity of the correct storage location field(s).
g. Functionsubmit()
updated to include information on DNA and RNA storage locations for specimens, when sending JSON info toSpecimenTubeRegistrationServlet
for registration. - Javascript file
extraction_preparation.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep3()
updated by adding columns for RNA and DNA plate positions to the left of the comment column.
b. FunctionupdateDetailsTable()
updated by changing name of JSON variable for RNA NanoDrop plate position fromitem.rna.well
toitem.rna.nanoDropWell
, in order to increase readability of the code. - Javascript file
extraction_registration.js
inresources/sampleproc/
updated:
a. FunctionvalidateStep1(event)
updated when callingExtractionServlet
with command "GetSourceItemListFromStartPlate
" to add new parameterincludeSpecimenExtracts
with valuetrue
.
b. FunctioninitializeStep3()
updated by adding columns for RNA and DNA plate positions to the left of the volume columns for each extract.
c. FunctionupdateDetailsTable()
updated by changing name of JSON variable for RNA NanoDrop plate position fromitem.rna.well
toitem.rna.nanoDropWell
, in order to increase readability of the code. - Javascript file
extraction_formcopy.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep3()
updated by adding columns for RNA and DNA plate positions to the left of the comment column for a lab tracking sheet, and to the left of the volume columns for each extract for a lab tracking report. Also updated when callingExtractionServlet
with command "GetSourceItemListFromStartPlate
" to add new parameterincludeSpecimenExtracts
with valuetrue
.
b. FunctioninitializeStep3b(response)
updated by changing name of JSON variable for RNA NanoDrop plate position fromitem.rna.well
toitem.rna.nanoDropWell
, in order to increase readability of the code.
c. FunctionupdateDetailsTable()
updated to enter DNA and RNA storage locations in table. Also change of name of JSON variable for RNA NanoDrop plate position fromitem.rna.well
toitem.rna.nanoDropWell
, in order to increase readability of the code. - JSP file
extraction_protocol2.jsp
inresources/sampleproc/
updated by adding columns for RNA and DNA plate positions to the left of the concentrations columns for each extract. - Javascript file
extraction_protocol.js
inresources/sampleproc/
updated in functionstableRowsForItems(...)
andtableRowForOptionalCounterbalanceItem(...)
to add data for RNA and DNA plate positions.
comment:12 by , 10 years ago
Functional specification update:
- MeLuDI should be updated in DNA/RNA registration/quantification wizard for parsing a Qubit value file for DNA concentration values, to allow the user to set the dilution factor to be used, in case no value is specified in the file. The default dilution factor should be 200, as previously.
Design update:
- JSP file
extraction_registration.jsp
inresources/sampleproc/
updated for step 3 by adding a line with an input field for a Qubit dilution factor, below the line for selecting a Qubit value file. - Javascript file
extraction_registration.js
inresources/sampleproc/
updated:
a. ConstantQUBIT_DILUTION_FACTOR_DEFAULT
set to value200.0
.
b. FunctioninitPage()
updated by adding new functionqubitFileDilutionFactorOnChange()
as event handler for the new Qubit dilution factor input field.
c. FunctioninitializeStep3()
updated by setting value of new Qubit dilution factor input field to that of constantQUBIT_DILUTION_FACTOR_DEFAULT
.
d. New functionqubitFileDilutionFactorOnChange()
added. It retrieves the value of new Qubit dilution factor input field, and writes an error message if it is not a number or a number <= 0.
e. FunctionparseQubitFile()
updated to retrieve the value of new Qubit dilution factor input field, and use that value, in case no value is specified in the file.
comment:13 by , 10 years ago
(In [3283]) Refs #768. MeLuDI updated in DNA/RNA registration/quantification wizard for parsing a Qubit value file for DNA concentration values, to allow the user to set the dilution factor to be used, in case no value is specified in the file. The default dilution factor should be 200, as previously.
- JSP file
extraction_registration.jsp
inresources/sampleproc/
updated for step 3 by adding a line with an input field for a Qubit dilution factor, below the line for selecting a Qubit value file. - Javascript file
extraction_registration.js
inresources/sampleproc/
updated:
a. ConstantQUBIT_DILUTION_FACTOR_DEFAULT
set to value200.0
.
b. FunctioninitPage()
updated by adding new functionqubitFileDilutionFactorOnChange()
as event handler for the new Qubit dilution factor input field.
c. FunctioninitializeStep3()
updated by setting value of new Qubit dilution factor input field to that of constantQUBIT_DILUTION_FACTOR_DEFAULT
.
d. New functionqubitFileDilutionFactorOnChange()
added. It retrieves the value of new Qubit dilution factor input field, and writes an error message if it is not a number or a number <= 0.
e. FunctionparseQubitFile()
updated to retrieve the value of new Qubit dilution factor input field, and use that value, in case no value is specified in the file.
comment:14 by , 10 years ago
Functional specification update:
- MeLuDI should be updated to not fill in gaps, when finding storage locations for specimens and extracts. The first plate with the last well (lower right corner) empty should be found, after which the first well is found, that is only followed by free wells.
Design update:
- Java servlet class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "FindStoragePositions
" by calling new private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps)
with argumentfillGaps
set tofalse
to find the first free well.
b. Private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix)
updated to call new private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps)
with argumentfillGaps
set totrue
to obtain the result.
c. New private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps)
added. If argumentfillGaps
has valuetrue
, it calls private methodBioWell getFirstFreeWell(BioPlate plate)
to find the first free well, else new private methodBioWell getFirstFreeWellWithoutFillingGaps(BioPlate plate)
.
d. New private methodBioWell getFirstFreeWellWithoutFillingGaps(BioPlate plate)
added. It finds the first free well for a bioplate without filling gaps.
comment:15 by , 10 years ago
(In [3285]) Refs #768. MeLuDI updated to not fill in gaps, when finding storage locations for specimens and extracts. The first plate with the last well (lower right corner) empty should be found, after which the first well is found, that is only followed by free wells.
- Java servlet class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Protected methodvoid doGet(HttpServletRequest req, HttpServletResponse resp)
updated for command "FindStoragePositions
" by calling new private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps)
with argumentfillGaps
set tofalse
to find the first free well.
b. Private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix)
updated to call new private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps)
with argumentfillGaps
set totrue
to obtain the result.
c. New private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps)
added. If argumentfillGaps
has valuetrue
, it calls private methodBioWell getFirstFreeWell(BioPlate plate)
to find the first free well, else new private methodBioWell getFirstFreeWellWithoutFillingGaps(BioPlate plate)
.
d. New private methodBioWell getFirstFreeWellWithoutFillingGaps(BioPlate plate)
added. It finds the first free well for a bioplate without filling gaps.
comment:16 by , 10 years ago
Design discussion regarding finding valid wells on plates (storage boxes):
- Current design has flaws regarding finding the correct box to start finding free wells, both when gaps should be filled, and when not. One problem is that the query finding boxes looks for boxes with position
I9
empty (for a 9x9 box), which is not appropriate, if gaps exists. If gaps should be filled, a box with empty wells may have positionI9
filled, and therefore not be selected. If gaps should not be filled, plates with positionI9
free, should not be included, if higher plates have some well filled.
Design update:
- Java servlet class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps)
updated by using a simpler database query finding all boxes of the correct type, and then using a new selection algorithm for finding the box to start with, when finding free wells to fill.
b. New private methodBioWell getFirstFilledWell(BioPlate plate)
added. It returns the first filled well for a bioplate, ornull
if none found. Based on previous private methodBioWell getFirstFreeWell(BioPlate plate)
.
comment:17 by , 10 years ago
(In [3287]) Refs #768. MeLuDI updated by fixing bugs regarding finding storage plates/boxes for placing samples in. Previous methods worked when well positions were allocated in sequence, but might fail, when gaps existed in the fill pattern of the plates.
- Java servlet class/file
SpecimenTubeServlet.java
insrc/net/sf/basedb/meludi/servlet/
updated:
a. Private methodJSONArray findFreeWells(DbControl dc, Integer nofTubes, String storageBoxSuffix, Boolean fillGaps)
updated by using a simpler database query finding all boxes of the correct type, and then using a new selection algorithm for finding the box to start with, when finding free wells to fill.
b. New private methodBioWell getFirstFilledWell(BioPlate plate)
added. It returns the first filled well for a bioplate, ornull
if none found. Based on previous private methodBioWell getFirstFreeWell(BioPlate plate)
.
comment:18 by , 10 years ago
Functional specification update:
- MeLuDI should be updated in Lab tracking sheet/report by removing form footer with information on DNA elution volume, DNAse treated RNA, and Proteinase K treatment.
Design update:
- JSP file
extraction_protocol2.jsp
inresources/sampleproc/
updated by commenting out code for footer table segment. - Javascript file
extraction_protocol.js
inresources/sampleproc/
updated in functioninitializeProtocol(submitInfoJsonStr)
by commenting out code setting value for DNA elution volume in form footer table segment.
comment:19 by , 10 years ago
(In [3291]) Refs #768. MeLuDI updated in Lab tracking sheet/report by removing form footer with information on DNA elution volume, DNAse treated RNA, and Proteinase K treatment.
- JSP file
extraction_protocol2.jsp
inresources/sampleproc/
updated by commenting out code for footer table segment. - Javascript file
extraction_protocol.js
inresources/sampleproc/
updated in functioninitializeProtocol(submitInfoJsonStr)
by commenting out code setting value for DNA elution volume in form footer table segment.
comment:20 by , 10 years ago
(In [3292]) Refs #768. MeLuDI updated when finding unprocessed specimen tubes to not require that that the specimens should lack extracts, since RNA and DNA items for a specimen now are created, when the latter is registered:
- Java data access object class/file
SpecimenTube.java
insrc/net/sf/basedb/meludi/dao/
updated in public static methodList<SpecimenTube> findUnProcessedTubes(DbControl dc)
to not require that specimens should not have any extracts coupled to them, to be included in the list returned.
comment:21 by , 10 years ago
Functional specification update:
- MeLuDI should be updated in DNA/RNA extraction wizards and Lab tracking sheet/report to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen.
Design update:
- Javascript file
extraction_preparation.js
inresources/sampleproc/
updated in functioninitializeStep3()
to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen. - Javascript file
extraction_registration.js
inresources/sampleproc/
updated in functioninitializeStep3()
to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen. - Javascript file
extraction_formcopy.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep3()
updated to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen.
b. FunctionupdateDetailsTable()
updated to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen. - Javascript file
extraction_protocol.js
inresources/sampleproc/
updated:
a. FunctiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
updated to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen.
b. New functionisRna(item)
added. It checks whether the item name end with ".r
", in which casetrue
is returned, elsefalse
.
c. New functionisDna(item)
added. It checks whether the item name end with ".d
", in which casetrue
is returned, elsefalse
.
comment:22 by , 10 years ago
(In [3293]) Refs #768. MeLuDI updated in DNA/RNA extraction wizards and Lab tracking sheet/report to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen.
- Javascript file
extraction_preparation.js
inresources/sampleproc/
updated in functioninitializeStep3()
to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen. - Javascript file
extraction_registration.js
inresources/sampleproc/
updated in functioninitializeStep3()
to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen. - Javascript file
extraction_formcopy.js
inresources/sampleproc/
updated:
a. FunctioninitializeStep3()
updated to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen.
b. FunctionupdateDetailsTable()
updated to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen. - Javascript file
extraction_protocol.js
inresources/sampleproc/
updated:
a. FunctiontableRowsForItems(accumItemNo, itemJsonArr, itemType, itemTypeVarName)
updated to display input RNA and DNA storage locations in columns for storage locations for extracts from specimen.
b. New functionisRna(item)
added. It checks whether the item name end with ".r
", in which casetrue
is returned, elsefalse
.
c. New functionisDna(item)
added. It checks whether the item name end with ".d
", in which casetrue
is returned, elsefalse
.
comment:23 by , 10 years ago
(In [3294]) Refs #768. Updates due to version number change to "1.2.3
".
- Version number change to "
1.2.3
":
a. Outermost Ant XML build filebuild.xml
in/
updated.
b. Extensions XML configuration fileextensions.xml
inMETA-INF/
updated.
c. Javascript filemeludi-2.js
inresources/
updated.
d. Javascript filesamplereportgenerator.js
inresources/reports/
updated.
e. Java class/fileMeludi.java
insrc/net/sf/basedb/meludi/
updated.
comment:24 by , 10 years ago
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
Ticket closed as MeLuDI version 1.2.3 has been created.
Ticket accepted.