Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 28 additions & 4 deletions labman/gui/handlers/process_handlers/pooling_process.py
Original file line number Diff line number Diff line change
Expand Up @@ -42,70 +42,94 @@

HTML_POOL_PARAMS_SHOTGUN = {
'min': [{'prefix': 'floor-vol-', 'value': '100',
'help': 'TODO: 1',
'desc': 'volume for low conc samples (nL):', 'min': '1',
'step': '1'},
{'prefix': 'floor-conc-', 'value': '20',
'help': 'TODO: 2',
'desc': 'minimum value for pooling at real estimated value (nM):',
'min': '0.1', 'step': '0.1'},
{'prefix': 'total-', 'value': '0.002',
'help': 'TODO: 3',
'desc': 'total number of nM to have in pool (nM):',
'min': '0.00001', 'step': '0.00001'},
{'prefix': 'lib-size-', 'value': '500',
'help': 'TODO: 4',
'desc': 'Average library molecule size (bp):', 'min': '1',
'step': '1'},
{'prefix': 'robot-'}, {'prefix': 'dest-tube-'},
{'prefix': 'robot-', 'help': 'TODO:XX'},
{'prefix': 'dest-tube-', 'help': 'TODO:YY'},
{'prefix': 'blank-number-', 'value': '',
'help': 'TODO: 5',
'desc': 'Pool only highest N blanks, N=', 'min': 0,
'step': 1},
{'prefix': 'blank-vol-', 'value': '',
'help': 'TODO: 6',
'desc': 'Pool all blanks at volume (nL):', 'min': 0,
'step': 2.5}],
'equal': [{'prefix': 'volume-', 'value': '200',
'help': 'TODO:7',
'desc': 'volume to pool per sample (nL):', 'min': '1',
'step': '1'},
{'prefix': 'lib-size-', 'value': '500',
'help': 'TODO:8',
'desc': 'Average library molecule size (bp):', 'min': '1',
'step': '1'},
{'prefix': 'robot-'}, {'prefix': 'dest-tube-'},
{'prefix': 'robot-', 'help': 'TODO:XX'},
{'prefix': 'dest-tube-', 'help': 'TODO:YY'},
{'prefix': 'blank-number-', 'value': '',
'help': 'TODO:9',
'desc': 'Pool only highest N blanks, N=', 'min': 0,
'step': 1},
{'prefix': 'blank-vol-', 'value': '',
'help': 'TODO:10',
'desc': 'Pool all blanks at volume (nL):', 'min': 0,
'step': 2.5}]}

HTML_POOL_PARAMS_16S = {
'min': [{'prefix': 'floor-vol-', 'value': '2',
'help': 'TODO:11',
'desc': 'volume for low conc samples (µL):', 'min': '1',
'step': '1'},
{'prefix': 'floor-conc-', 'value': '16',
'help': 'TODO:12',
'desc': 'minimum value for pooling at real estimated value '
'(ng/µL):',
'min': '0.1', 'step': '0.1'},
{'prefix': 'total-', 'value': '240',
'help': 'TODO:13',
'desc': 'total quantity of DNA to pool per sample (ng):',
'min': '1', 'step': '0.1'},
{'prefix': 'lib-size-', 'value': '390',
'help': 'TODO:14',
'desc': 'Average library molecule size (bp):', 'min': '1',
'step': '1'},
{'prefix': 'robot-'}, {'prefix': 'dest-tube-'},
{'prefix': 'robot-', 'help': 'TODO:XX'},
{'prefix': 'dest-tube-', 'help': 'TODO:YY'},
{'prefix': 'blank-number-', 'value': 2,
'help': 'TODO:15',
'desc': 'Pool only highest N blanks, N=', 'min': 0,
'step': 1},
{'prefix': 'blank-vol-', 'value': 5,
'help': 'TODO:16',
'desc': 'Pool all blanks at volume (µL):', 'min': 0,
'step': 0.1}],
'equal': [{'prefix': 'volume-', 'value': '5',
'help': 'TODO:17',
'desc': 'volume to pool per sample (µL):', 'min': '1',
'step': '1'},
{'prefix': 'lib-size-', 'value': '390',
'help': 'TODO:18',
'desc': 'Average library molecule size (bp):', 'min': '1',
'step': '1'},
{'prefix': 'robot-'}, {'prefix': 'dest-tube-'},
{'prefix': 'robot-', 'help': 'TODO:XX'},
{'prefix': 'dest-tube-', 'help': 'TODO:YY'},
{'prefix': 'blank-number-', 'value': 2,
'help': 'TODO:19',
'desc': 'Pool only highest N blanks, N=', 'min': 0,
'step': 1},
{'prefix': 'blank-vol-', 'value': 5,
'help': 'TODO:20',
'desc': 'Pool all blanks at volume (µL):', 'min': 0,
'step': 0.1}]}

Expand Down
20 changes: 10 additions & 10 deletions labman/gui/static/js/labman.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,8 @@ function createPlateNameInputDOM($targetDiv, plateId, checksCallback, label, def
return $rowDiv;
}

function createNumberInputDOM($targetDiv, plateId, checksCallback, label, defaultValue, idPrefix, step, minVal) {
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv);
function createNumberInputDOM($targetDiv, plateId, checksCallback, label, defaultValue, idPrefix, step, minVal, tooltip) {
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv).attr('title', tooltip);
$('<label>').attr('for', idPrefix + plateId).addClass('col-sm-5 control-label').append(label).appendTo($rowDiv);
var $colDiv = $('<div>').addClass('col-sm-7').appendTo($rowDiv);
var $inElem = $('<input>').attr('type', 'number').addClass('form-control')
Expand All @@ -46,8 +46,8 @@ function createNumberInputDOM($targetDiv, plateId, checksCallback, label, defaul
return $rowDiv;
}

function createTextInputDOM($targetDiv, plateId, checksCallback, label, defaultValue, idPrefix) {
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv);
function createTextInputDOM($targetDiv, plateId, checksCallback, label, defaultValue, idPrefix, tooltip) {
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv).attr('title', tooltip);
$('<label>').attr('for', idPrefix + plateId).addClass('col-sm-5 control-label').append(label).appendTo($rowDiv);
var $colDiv = $('<div>').addClass('col-sm-7').appendTo($rowDiv);
var $inElem = $('<input>').attr('type', 'text').addClass('form-control')
Expand All @@ -56,11 +56,11 @@ function createTextInputDOM($targetDiv, plateId, checksCallback, label, defaultV
return $rowDiv;
}

function createSelectDOM($targetDiv, plateId, checksCallback, label, options, idPrefix, placeholder, idKey) {
function createSelectDOM($targetDiv, plateId, checksCallback, label, options, idPrefix, placeholder, idKey, tooltip) {
if (idKey === undefined) {
idKey = 'equipment_id';
}
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv);
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv).attr('title', tooltip);
$('<label>').attr('for', idPrefix + plateId).addClass('col-sm-5 control-label').append(label).appendTo($rowDiv);
var $colDiv = $('<div>').addClass('col-sm-7').appendTo($rowDiv);
var $selElem = $('<select>').addClass('form-control').attr('plate-id', plateId).attr('id', idPrefix + plateId).appendTo($colDiv).on('change', checksCallback);
Expand All @@ -70,8 +70,8 @@ function createSelectDOM($targetDiv, plateId, checksCallback, label, options, id
});
}

function createCheckboxEnabledSpinner($targetDiv, plateId, checksCallback, label, defaultValue, idPrefix, step, minVal) {
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv);
function createCheckboxEnabledSpinner($targetDiv, plateId, checksCallback, label, defaultValue, idPrefix, step, minVal, tooltip) {
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv).attr('title', tooltip);
$('<label>').addClass('col-sm-5 control-label').append(label).appendTo($rowDiv);

var $container = $('<div>').addClass('input-group col-sm-2').appendTo($rowDiv);
Expand Down Expand Up @@ -112,8 +112,8 @@ function createReagentDOM($targetDiv, plateId, checksCallback, label, idPrefix,
});
}

function createCheckboxDOM($targetDiv, plateId, checksCallback, label, checked, idPrefix) {
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv);
function createCheckboxDOM($targetDiv, plateId, checksCallback, label, checked, idPrefix, tooltip) {
var $rowDiv = $('<div>').addClass('form-group').appendTo($targetDiv).attr('title', tooltip);
$('<label>').attr('for', idPrefix + plateId).addClass('col-sm-2 control-label').append(label).appendTo($rowDiv);
var $colDiv = $('<div>').addClass('col-sm-10').appendTo($rowDiv);
var $inElem = $('<input>').attr('type', 'checkbox').attr('id', idPrefix + plateId).prop('checked', checked)
Expand Down
9 changes: 4 additions & 5 deletions labman/gui/templates/library_pooling.html
Original file line number Diff line number Diff line change
Expand Up @@ -241,14 +241,13 @@
// create the UI elements depending on the plate type
$.each(poolParams[plateType][$(this).val()], function(idx, elem) {
if (elem['prefix'] === 'robot-') {
createSelectDOM($('#pool-params-div-' + plateId), plateId, paramOnChangeCallback, 'Pooling robot', {% raw robots %}, elem['prefix'], 'Select robot...');
createSelectDOM($('#pool-params-div-' + plateId), plateId, paramOnChangeCallback, 'Pooling robot', {% raw robots %}, elem['prefix'], 'Select robot...', undefined, elem['help']);
} else if (elem['prefix'] === 'dest-tube-') {
createTextInputDOM($('#pool-params-div-' + plateId), plateId, paramOnChangeCallback, 'Destination tube', '1', elem['prefix']);
createTextInputDOM($('#pool-params-div-' + plateId), plateId, paramOnChangeCallback, 'Destination tube', '1', elem['prefix'], elem['help']);
} else if (elem['prefix'] === 'blank-vol-' || elem['prefix'] === 'blank-number-') {
createCheckboxEnabledSpinner($('#pool-params-div-' + plateId), plateId, paramOnChangeCallback, elem['desc'], elem['value'], elem['prefix'], elem['step'], elem['min']);

createCheckboxEnabledSpinner($('#pool-params-div-' + plateId), plateId, paramOnChangeCallback, elem['desc'], elem['value'], elem['prefix'], elem['step'], elem['min'], elem['help']);
} else {
createNumberInputDOM($('#pool-params-div-' + plateId), plateId, paramOnChangeCallback, elem['desc'], elem['value'], elem['prefix'], elem['step'], elem['min']);
createNumberInputDOM($('#pool-params-div-' + plateId), plateId, paramOnChangeCallback, elem['desc'], elem['value'], elem['prefix'], elem['step'], elem['min'], elem['help']);
}
});
enableComputePoolValues();
Expand Down