extensions/net.sf.basedb.reggie/trunk/resources/analysis/hisat2023_start.js

Code
Comments
Other
Rev Date Author Line
6813 25 Aug 22 nicklas 1 var Hisat = function()
6813 25 Aug 22 nicklas 2 {
6813 25 Aug 22 nicklas 3   var hisat = {};
6813 25 Aug 22 nicklas 4   var debug = 0;
6813 25 Aug 22 nicklas 5   var selectionIsValid = false;
6813 25 Aug 22 nicklas 6   var subtypeMergedSequences = null;
6813 25 Aug 22 nicklas 7   var annotationTypePipeline = null;
6813 25 Aug 22 nicklas 8   var clusterIsValid = false;
6813 25 Aug 22 nicklas 9   var manuallySelected = [];
6813 25 Aug 22 nicklas 10   
6813 25 Aug 22 nicklas 11   // Page initialization
6813 25 Aug 22 nicklas 12   hisat.initPage = function()
6813 25 Aug 22 nicklas 13   {
6813 25 Aug 22 nicklas 14     
6813 25 Aug 22 nicklas 15     // Step 1
6813 25 Aug 22 nicklas 16     Buttons.addClickHandler('btnSelectMergedSequences', hisat.selectMergedSequences);
6813 25 Aug 22 nicklas 17     Events.addEventHandler('mergedSequences', 'base-selected', hisat.setMergedSequenceCallback);
6813 25 Aug 22 nicklas 18     Events.addEventHandler('mergedSequences', 'change', hisat.mergedSequencesOnChange);
6813 25 Aug 22 nicklas 19     Events.addEventHandler('step-1', 'wizard-validate', hisat.validateStep1);
6813 25 Aug 22 nicklas 20
6813 25 Aug 22 nicklas 21     // Step 2
6813 25 Aug 22 nicklas 22     Events.addEventHandler('step-2', 'wizard-initialize', hisat.initializeStep2);
6813 25 Aug 22 nicklas 23     Events.addEventHandler('step-2', 'wizard-validate', hisat.validateStep2);
6813 25 Aug 22 nicklas 24     Events.addEventHandler('clusters', 'change', hisat.clusterOnChange);
7372 06 Oct 23 nicklas 25     Events.addEventHandler('debug', 'change', hisat.debugOnChange);
7372 06 Oct 23 nicklas 26     Events.addEventHandler('override', 'change', hisat.overrideOnChange);
6813 25 Aug 22 nicklas 27     Events.addEventHandler('maskingSoftware', 'change', hisat.softwareOnChange);
6813 25 Aug 22 nicklas 28     Events.addEventHandler('alignSoftware', 'change', hisat.softwareOnChange);
6813 25 Aug 22 nicklas 29
6813 25 Aug 22 nicklas 30     // Navigation
6813 25 Aug 22 nicklas 31     Buttons.addClickHandler('gocancel', Wizard.cancelWizard);
6813 25 Aug 22 nicklas 32     Buttons.addClickHandler('gorestart', Wizard.restartWizard);
6813 25 Aug 22 nicklas 33     Buttons.addClickHandler('gonext', Wizard.goNextOnClick);
6813 25 Aug 22 nicklas 34     Buttons.addClickHandler('goregister', Wizard.goRegister);
6813 25 Aug 22 nicklas 35       
6813 25 Aug 22 nicklas 36     // Final registration
6813 25 Aug 22 nicklas 37     Events.addEventHandler('wizard', 'wizard-submit', hisat.submit);
6813 25 Aug 22 nicklas 38
6813 25 Aug 22 nicklas 39     Wizard.showLoadingAnimation('Loading bioassays...');
6813 25 Aug 22 nicklas 40     var url = '../Hisat2023.servlet?ID='+App.getSessionId();
6813 25 Aug 22 nicklas 41     url += '&cmd=GetMergedSequencesForHisat2023';
6813 25 Aug 22 nicklas 42     Wizard.asyncJsonRequest(url, hisat.initializeStep1);
6813 25 Aug 22 nicklas 43   }
6813 25 Aug 22 nicklas 44   
6813 25 Aug 22 nicklas 45   // --- Step 1 -----------------------------------
6813 25 Aug 22 nicklas 46   hisat.initializeStep1 = function(response)
6813 25 Aug 22 nicklas 47   {
6813 25 Aug 22 nicklas 48     var mergedSequences = response.mergedSequences;
6813 25 Aug 22 nicklas 49     var frm = document.forms['reggie'];  
6813 25 Aug 22 nicklas 50
6813 25 Aug 22 nicklas 51     if (mergedSequences != null && mergedSequences.length > 0)
6813 25 Aug 22 nicklas 52     {
6813 25 Aug 22 nicklas 53       var firstPlate = null;
6813 25 Aug 22 nicklas 54       for (var msNo=0; msNo < mergedSequences.length; msNo++)
6813 25 Aug 22 nicklas 55       {
6813 25 Aug 22 nicklas 56         var ms = mergedSequences[msNo];
6813 25 Aug 22 nicklas 57         var libPlate = ms.lib.bioWell ? ms.lib.bioWell.bioPlate : null;
6813 25 Aug 22 nicklas 58         if (firstPlate == null && libPlate != null) firstPlate = libPlate.name;
6813 25 Aug 22 nicklas 59         var option = hisat.createListOption(msNo+1, ms, ms.DO_NOT_USE == null && libPlate != null && libPlate.name==firstPlate)
6813 25 Aug 22 nicklas 60         frm.mergedSequences.options[frm.mergedSequences.length] = option;
6813 25 Aug 22 nicklas 61       }
6813 25 Aug 22 nicklas 62       Events.sendChangeEvent('mergedSequences');
6813 25 Aug 22 nicklas 63     }
6813 25 Aug 22 nicklas 64     else
6813 25 Aug 22 nicklas 65     {
6813 25 Aug 22 nicklas 66       Wizard.setInputStatus('mergedSequences', 'invalid', 'No new sequences available for processing');
6813 25 Aug 22 nicklas 67     }
6813 25 Aug 22 nicklas 68     
6813 25 Aug 22 nicklas 69     Doc.show('step-1');
6813 25 Aug 22 nicklas 70     Doc.show('gonext');
6813 25 Aug 22 nicklas 71
6813 25 Aug 22 nicklas 72     frm.mergedSequences.focus();
6813 25 Aug 22 nicklas 73   }
6813 25 Aug 22 nicklas 74   
6813 25 Aug 22 nicklas 75   hisat.validateStep1 = function(event)
6813 25 Aug 22 nicklas 76   {
6813 25 Aug 22 nicklas 77     if (!selectionIsValid) event.preventDefault();
6813 25 Aug 22 nicklas 78   }
6813 25 Aug 22 nicklas 79   
6813 25 Aug 22 nicklas 80   hisat.selectMergedSequences = function()
6813 25 Aug 22 nicklas 81   {
6813 25 Aug 22 nicklas 82     var frm = document.forms['reggie'];
6813 25 Aug 22 nicklas 83     if (frm.mergedSequences.disabled) return;
6813 25 Aug 22 nicklas 84     
6813 25 Aug 22 nicklas 85     if (subtypeMergedSequences == null)
6813 25 Aug 22 nicklas 86     {
6813 25 Aug 22 nicklas 87       subtypeMergedSequences = Reggie.getSubtypeInfo('MERGED_SEQUENCES');
6813 25 Aug 22 nicklas 88     }
6813 25 Aug 22 nicklas 89     if (annotationTypePipeline == null)
6813 25 Aug 22 nicklas 90     {
6813 25 Aug 22 nicklas 91       annotationTypePipeline = Reggie.getAnnotationTypeInfo('PIPELINE');
6813 25 Aug 22 nicklas 92     }
6813 25 Aug 22 nicklas 93     
6813 25 Aug 22 nicklas 94     // Reset list
6813 25 Aug 22 nicklas 95     manuallySelected = [];
6813 25 Aug 22 nicklas 96     var url = '&resetTemporary=1';
6813 25 Aug 22 nicklas 97     url += '&tmpfilter:INT:itemSubtype='+subtypeMergedSequences.id;
6813 25 Aug 22 nicklas 98     url += '&tmpfilter:STRING:'+encodeURIComponent('#')+annotationTypePipeline.id+'=RNAseq';
6813 25 Aug 22 nicklas 99     Dialogs.selectItem('DERIVEDBIOASSAY', 'mergedSequences', 1, url);
6813 25 Aug 22 nicklas 100   }
6813 25 Aug 22 nicklas 101
6813 25 Aug 22 nicklas 102   hisat.setMergedSequenceCallback = function(event)
6813 25 Aug 22 nicklas 103   {
6813 25 Aug 22 nicklas 104     var ms = event.detail;
6813 25 Aug 22 nicklas 105     
6813 25 Aug 22 nicklas 106     var opt = Reggie.getListOption('mergedSequences', ms.id);
6813 25 Aug 22 nicklas 107     if (opt)
6813 25 Aug 22 nicklas 108     {
6813 25 Aug 22 nicklas 109       opt.selected = true;
6813 25 Aug 22 nicklas 110     }
6813 25 Aug 22 nicklas 111     else
6813 25 Aug 22 nicklas 112     {
6813 25 Aug 22 nicklas 113       manuallySelected[manuallySelected.length] = ms.id;
6813 25 Aug 22 nicklas 114     }
6813 25 Aug 22 nicklas 115     
6813 25 Aug 22 nicklas 116     if (ms.remaining == 0 && manuallySelected.length > 0)
6813 25 Aug 22 nicklas 117     {
6813 25 Aug 22 nicklas 118       var url = '../Hisat2023.servlet?ID='+App.getSessionId();
6813 25 Aug 22 nicklas 119       url += '&cmd=GetMergedSequencesForHisat2023';
6813 25 Aug 22 nicklas 120       url += '&items='+manuallySelected.join(',');
6813 25 Aug 22 nicklas 121       Wizard.showLoadingAnimation('Loading bioassays...');
6813 25 Aug 22 nicklas 122       Wizard.asyncJsonRequest(url, hisat.manuallySelected);
6813 25 Aug 22 nicklas 123     }
6813 25 Aug 22 nicklas 124     else
6813 25 Aug 22 nicklas 125     {
6813 25 Aug 22 nicklas 126       Events.sendChangeEvent('mergedSequences');
6813 25 Aug 22 nicklas 127     }
6813 25 Aug 22 nicklas 128   }
6813 25 Aug 22 nicklas 129
6813 25 Aug 22 nicklas 130   hisat.manuallySelected = function(response)
6813 25 Aug 22 nicklas 131   {
6813 25 Aug 22 nicklas 132     var mergedSequences = response.mergedSequences;
6813 25 Aug 22 nicklas 133     var frm = document.forms['reggie'];  
6813 25 Aug 22 nicklas 134
6813 25 Aug 22 nicklas 135     if (mergedSequences != null && mergedSequences.length > 0)
6813 25 Aug 22 nicklas 136     {
6813 25 Aug 22 nicklas 137       var offset = frm.mergedSequences.length+1;
6813 25 Aug 22 nicklas 138       for (var msNo=0; msNo < mergedSequences.length; msNo++)
6813 25 Aug 22 nicklas 139       {
6813 25 Aug 22 nicklas 140         var ms = mergedSequences[msNo];
6813 25 Aug 22 nicklas 141         var option = hisat.createListOption(msNo+offset, ms, ms.DO_NOT_USE == null);
6813 25 Aug 22 nicklas 142         frm.mergedSequences.options[frm.mergedSequences.length] = option;
6813 25 Aug 22 nicklas 143       }
6813 25 Aug 22 nicklas 144       Events.sendChangeEvent('mergedSequences');
6813 25 Aug 22 nicklas 145     }
6813 25 Aug 22 nicklas 146   }
6813 25 Aug 22 nicklas 147   
6813 25 Aug 22 nicklas 148   hisat.createListOption = function(index, mergedItem, selected)
6813 25 Aug 22 nicklas 149   {
6813 25 Aug 22 nicklas 150     var lib = mergedItem.lib;
6813 25 Aug 22 nicklas 151     var isYellow = lib.specimen && lib.specimen.YellowLabel != null;
6813 25 Aug 22 nicklas 152     var libPlate = lib.bioWell ? lib.bioWell.bioPlate : null;
6813 25 Aug 22 nicklas 153     
6813 25 Aug 22 nicklas 154     var tooltip = null;
6813 25 Aug 22 nicklas 155     var name = (index) + ': ';
6813 25 Aug 22 nicklas 156     if (libPlate) name += libPlate.name + ' - ';
6813 25 Aug 22 nicklas 157     name += mergedItem.name;
6813 25 Aug 22 nicklas 158     
6813 25 Aug 22 nicklas 159     if (mergedItem.DO_NOT_USE)
6813 25 Aug 22 nicklas 160     {
6813 25 Aug 22 nicklas 161       name += ' [DoNotUse]';
6813 25 Aug 22 nicklas 162       tooltip = 'DoNotUse-'+Strings.encodeTags(mergedItem.DO_NOT_USE+': '+mergedItem.DO_NOT_USE_COMMENT);
6813 25 Aug 22 nicklas 163     }
6813 25 Aug 22 nicklas 164     else if (mergedItem.AutoProcess == 'ReProcess')
6813 25 Aug 22 nicklas 165     {
6813 25 Aug 22 nicklas 166       name += ' [R]';
6813 25 Aug 22 nicklas 167     }
6813 25 Aug 22 nicklas 168     
6813 25 Aug 22 nicklas 169     var option = new Option(name, mergedItem.id, false, selected);
6813 25 Aug 22 nicklas 170     if (isYellow) option.className = 'yellow';
6813 25 Aug 22 nicklas 171     if (tooltip) option.title = tooltip;
6813 25 Aug 22 nicklas 172     option.mergedSequences = mergedItem;
6813 25 Aug 22 nicklas 173     return option;
6813 25 Aug 22 nicklas 174   }
6813 25 Aug 22 nicklas 175   
6813 25 Aug 22 nicklas 176   hisat.mergedSequencesOnChange = function()
6813 25 Aug 22 nicklas 177   {
6813 25 Aug 22 nicklas 178     var frm = document.forms['reggie'];
6813 25 Aug 22 nicklas 179     selectionIsValid = false;
6813 25 Aug 22 nicklas 180     var numSelected = 0;
6813 25 Aug 22 nicklas 181     var numDoNotUse = 0;
6813 25 Aug 22 nicklas 182     var invalidPipeline = null;
6813 25 Aug 22 nicklas 183     
6813 25 Aug 22 nicklas 184     Wizard.setInputStatus('mergedSequences');
6813 25 Aug 22 nicklas 185     Wizard.hideGoNextConfirmation();
6813 25 Aug 22 nicklas 186     for (var msNo = 0; msNo < frm.mergedSequences.length; msNo++)
6813 25 Aug 22 nicklas 187     {
6813 25 Aug 22 nicklas 188       if (frm.mergedSequences[msNo].selected) 
6813 25 Aug 22 nicklas 189       {
6813 25 Aug 22 nicklas 190         numSelected++;
6813 25 Aug 22 nicklas 191         var ms = frm.mergedSequences[msNo].mergedSequences;
6813 25 Aug 22 nicklas 192         if (ms.DO_NOT_USE) numDoNotUse++;
6813 25 Aug 22 nicklas 193         if (ms.pipeline && ms.pipeline != 'RNAseq')
6813 25 Aug 22 nicklas 194         {
6813 25 Aug 22 nicklas 195           invalidPipeline = Strings.encodeTags(ms.name+' ('+ms.pipeline)+') is not intended for the RNAseq pipeline.';
6813 25 Aug 22 nicklas 196         }
6813 25 Aug 22 nicklas 197       }
6813 25 Aug 22 nicklas 198     }
6813 25 Aug 22 nicklas 199     
6813 25 Aug 22 nicklas 200     if (numSelected == 0)
6813 25 Aug 22 nicklas 201     {
6813 25 Aug 22 nicklas 202       Wizard.setInputStatus('mergedSequences', 'invalid', 'Select at least one item');
6813 25 Aug 22 nicklas 203       return;
6813 25 Aug 22 nicklas 204     }
6813 25 Aug 22 nicklas 205     if (invalidPipeline) 
6813 25 Aug 22 nicklas 206     {
6813 25 Aug 22 nicklas 207       Wizard.setInputStatus('mergedSequences', 'invalid', invalidPipeline);
6813 25 Aug 22 nicklas 208       return;
6813 25 Aug 22 nicklas 209     }
6813 25 Aug 22 nicklas 210     selectionIsValid = true;
6813 25 Aug 22 nicklas 211     
6813 25 Aug 22 nicklas 212     if (numDoNotUse > 0)
6813 25 Aug 22 nicklas 213     {
6813 25 Aug 22 nicklas 214       Wizard.setInputStatus('mergedSequences', 'warning', numDoNotUse + ' selected items marked as DoNotUse');
6813 25 Aug 22 nicklas 215       Wizard.showGoNextConfirmation(true, 'Confirm ' + numDoNotUse + ' items marked as DoNotUse');
6813 25 Aug 22 nicklas 216     }
6813 25 Aug 22 nicklas 217     else
6813 25 Aug 22 nicklas 218     {
6813 25 Aug 22 nicklas 219       Wizard.setInputStatus('mergedSequences', 'valid');
6813 25 Aug 22 nicklas 220     }
6813 25 Aug 22 nicklas 221   }
6813 25 Aug 22 nicklas 222   
6813 25 Aug 22 nicklas 223   // --- Step 2 -----------------------------------
6813 25 Aug 22 nicklas 224   hisat.initializeStep2 = function()
6813 25 Aug 22 nicklas 225   {
6813 25 Aug 22 nicklas 226     Wizard.setCurrentStep(2);
6813 25 Aug 22 nicklas 227     
6813 25 Aug 22 nicklas 228     // Check debug by default if debug is set or not on a secure server (=production server)
6813 25 Aug 22 nicklas 229     var frm = document.forms['reggie'];
6813 25 Aug 22 nicklas 230     frm.debug.checked = debug || location.protocol != 'https:';
6813 25 Aug 22 nicklas 231
6813 25 Aug 22 nicklas 232     Reggie.loadProtocols('MASKING_PROTOCOL', 'maskingProtocol', 'PIPELINE', 'RNAseq/Hisat/2023');
6813 25 Aug 22 nicklas 233     Reggie.loadSoftware('MASKING_SOFTWARE', 'maskingSoftware', 'PIPELINE,PARAMETER_SET', 'RNAseq/Hisat/2023');
6813 25 Aug 22 nicklas 234     Reggie.loadProtocols('ALIGNMENT_PROTOCOL', 'alignProtocol', 'PIPELINE', 'RNAseq/Hisat/2023');
6813 25 Aug 22 nicklas 235     Reggie.loadSoftware('ALIGNMENT_SOFTWARE', 'alignSoftware', 'PIPELINE,PARAMETER_SET', 'RNAseq/Hisat/2023');
6813 25 Aug 22 nicklas 236     
6813 25 Aug 22 nicklas 237     // Load clusters
6813 25 Aug 22 nicklas 238     var url = '../OpenGrid.servlet?ID='+App.getSessionId() + '&cmd=GetHostInfo&config=align-hisat-2023';
6813 25 Aug 22 nicklas 239     Doc.addClass('clusters', 'list-loading');
6813 25 Aug 22 nicklas 240     frm.clusters[0] = new Option('loading...');
6813 25 Aug 22 nicklas 241     Wizard.asyncJsonRequest(url, hisat.clustersLoaded);
6813 25 Aug 22 nicklas 242
6813 25 Aug 22 nicklas 243     Doc.show('goregister');
6813 25 Aug 22 nicklas 244     Doc.show('gocancel');
6813 25 Aug 22 nicklas 245   }
6813 25 Aug 22 nicklas 246   
6813 25 Aug 22 nicklas 247   hisat.validateStep2 = function(event)
6813 25 Aug 22 nicklas 248   {
6813 25 Aug 22 nicklas 249     if (!clusterIsValid) event.preventDefault();
6813 25 Aug 22 nicklas 250   }
6813 25 Aug 22 nicklas 251   
6813 25 Aug 22 nicklas 252   hisat.clustersLoaded = function(response)
6813 25 Aug 22 nicklas 253   {
6813 25 Aug 22 nicklas 254     Doc.removeClass('clusters', 'list-loading');
6813 25 Aug 22 nicklas 255     var frm = document.forms['reggie'];
6813 25 Aug 22 nicklas 256     var clusters = response.hosts;
6813 25 Aug 22 nicklas 257     frm.clusters.length = 0;
6813 25 Aug 22 nicklas 258     for (var i = 0; i < clusters.length; i++)
6813 25 Aug 22 nicklas 259     {
6813 25 Aug 22 nicklas 260       var cl = clusters[i];
6813 25 Aug 22 nicklas 261       var option = new Option(cl.connection.name, cl.id);
6813 25 Aug 22 nicklas 262       option.cluster = cl;
6813 25 Aug 22 nicklas 263       frm.clusters[frm.clusters.length] = option;
6813 25 Aug 22 nicklas 264       Wizard.setInputStatus('clusters', 'valid');
6813 25 Aug 22 nicklas 265       clusterIsValid = true;
6813 25 Aug 22 nicklas 266     }
6813 25 Aug 22 nicklas 267     if (frm.clusters.length == 0)
6813 25 Aug 22 nicklas 268     {
6813 25 Aug 22 nicklas 269       Wizard.setInputStatus('clusters', 'invalid', 'No available clusters');
6813 25 Aug 22 nicklas 270       clusterIsValid = false;
6813 25 Aug 22 nicklas 271     }
6813 25 Aug 22 nicklas 272     else
6813 25 Aug 22 nicklas 273     {
6813 25 Aug 22 nicklas 274       hisat.clusterOnChange();
6813 25 Aug 22 nicklas 275     }
6813 25 Aug 22 nicklas 276   }
6813 25 Aug 22 nicklas 277   
6813 25 Aug 22 nicklas 278   hisat.softwareOnChange = function(event)
6813 25 Aug 22 nicklas 279   {
6813 25 Aug 22 nicklas 280     var target = event.currentTarget;
6813 25 Aug 22 nicklas 281     var item = target[target.selectedIndex].item;
6813 25 Aug 22 nicklas 282     if (!item) item = {};
6813 25 Aug 22 nicklas 283     
6813 25 Aug 22 nicklas 284     Doc.element(target.id+'.parameterSet').innerHTML = Strings.encodeTags(item.ParameterSet || 'default');
6813 25 Aug 22 nicklas 285     Doc.element(target.id+'.description').innerHTML = Strings.encodeTags(item.description);
6813 25 Aug 22 nicklas 286     Wizard.setInputStatus(target.id, 'valid');
6813 25 Aug 22 nicklas 287
6813 25 Aug 22 nicklas 288     if (item.ParameterSet)
6813 25 Aug 22 nicklas 289     {
6813 25 Aug 22 nicklas 290       var url = '../Install.servlet?ID='+App.getSessionId();
6813 25 Aug 22 nicklas 291       url += '&cmd=GetParameterSetInfo';
6813 25 Aug 22 nicklas 292       url += '&parameterSet='+encodeURIComponent(item.ParameterSet);
6813 25 Aug 22 nicklas 293       url += '&targetId='+target.id;
6813 25 Aug 22 nicklas 294       Wizard.asyncJsonRequest(url, hisat.parameterSetInfoLoaded);
6813 25 Aug 22 nicklas 295     }
7372 06 Oct 23 nicklas 296     hisat.updateSubmitOptions();
6813 25 Aug 22 nicklas 297   }
6813 25 Aug 22 nicklas 298   
6813 25 Aug 22 nicklas 299   hisat.parameterSetInfoLoaded = function(response)
6813 25 Aug 22 nicklas 300   {
6813 25 Aug 22 nicklas 301     if (!response.parameters || response.parameters.length == 0)
6813 25 Aug 22 nicklas 302     {
6813 25 Aug 22 nicklas 303       Wizard.setInputStatus(response.targetId, 'warning', 'Can\'t find \'' + Strings.encodeTags(response.parameterSet) + '\' parameter set in reggie-config.xml');
6813 25 Aug 22 nicklas 304     }
6813 25 Aug 22 nicklas 305   }
6813 25 Aug 22 nicklas 306   
6813 25 Aug 22 nicklas 307   hisat.clusterOnChange = function()
6813 25 Aug 22 nicklas 308   {
6813 25 Aug 22 nicklas 309     var frm = document.forms['reggie'];
6813 25 Aug 22 nicklas 310     var cluster = frm.clusters[frm.clusters.selectedIndex].cluster;
6813 25 Aug 22 nicklas 311     if (cluster.priorities && cluster.priorities.length > 0)
6813 25 Aug 22 nicklas 312     {
6813 25 Aug 22 nicklas 313       frm.priority.length = 0;
6813 25 Aug 22 nicklas 314       for (var pNo = 0; pNo < cluster.priorities.length; pNo++)
6813 25 Aug 22 nicklas 315       {
6813 25 Aug 22 nicklas 316         var p = cluster.priorities[pNo];
6813 25 Aug 22 nicklas 317         frm.priority[frm.priority.length] = new Option(p.name + ' ('+p.value+')', p.value, p['default'], p['default']);
6813 25 Aug 22 nicklas 318       }
6813 25 Aug 22 nicklas 319       Doc.show('job-priority');
6813 25 Aug 22 nicklas 320     }
6813 25 Aug 22 nicklas 321     else
6813 25 Aug 22 nicklas 322     {
6813 25 Aug 22 nicklas 323       Doc.hide('job-priority');
6813 25 Aug 22 nicklas 324     }
6979 16 Jan 23 nicklas 325     if (cluster.partitions && cluster.partitions.length > 0)
6979 16 Jan 23 nicklas 326     {
6979 16 Jan 23 nicklas 327       frm.partition.length = 0;
6979 16 Jan 23 nicklas 328       for (var pNo = 0; pNo < cluster.partitions.length; pNo++)
6979 16 Jan 23 nicklas 329       {
6979 16 Jan 23 nicklas 330         var p = cluster.partitions[pNo];
6979 16 Jan 23 nicklas 331         var title = p.name;
6979 16 Jan 23 nicklas 332         if (p.description) title += ' ('+p.description+')';
6979 16 Jan 23 nicklas 333         frm.partition[frm.partition.length] = new Option(title, p.value, p['default'], p['default']);
6979 16 Jan 23 nicklas 334       }
6979 16 Jan 23 nicklas 335       Doc.show('job-partition');
6979 16 Jan 23 nicklas 336     }
6979 16 Jan 23 nicklas 337     else
6979 16 Jan 23 nicklas 338     {
6979 16 Jan 23 nicklas 339       Doc.hide('job-partition');
6979 16 Jan 23 nicklas 340     }
7372 06 Oct 23 nicklas 341     hisat.updateSubmitOptions();
6813 25 Aug 22 nicklas 342   }
6813 25 Aug 22 nicklas 343   
7372 06 Oct 23 nicklas 344   hisat.debugOnChange = function()
7372 06 Oct 23 nicklas 345   {
7372 06 Oct 23 nicklas 346     hisat.updateSubmitOptions();
7372 06 Oct 23 nicklas 347   }
7372 06 Oct 23 nicklas 348   
7372 06 Oct 23 nicklas 349   hisat.updateSubmitOptions = function()
7372 06 Oct 23 nicklas 350   {
7372 06 Oct 23 nicklas 351     var frm = document.forms['reggie'];
7372 06 Oct 23 nicklas 352     var config = frm.clusters[frm.clusters.selectedIndex]?.cluster?.config?.['align-hisat-2023'];
7372 06 Oct 23 nicklas 353     if (config)
7372 06 Oct 23 nicklas 354     {
7372 06 Oct 23 nicklas 355       var parameterSet = frm.alignSoftware[frm.alignSoftware.selectedIndex]?.item?.ParameterSet;
7372 06 Oct 23 nicklas 356       Doc.element('submitOptions').innerHTML = Reggie.getSubmitOptions(config, frm.debug.checked, parameterSet);
7372 06 Oct 23 nicklas 357       frm.override.disabled = false;
7372 06 Oct 23 nicklas 358     }
7372 06 Oct 23 nicklas 359   }
7372 06 Oct 23 nicklas 360   
7372 06 Oct 23 nicklas 361   hisat.overrideOnChange = function()
7372 06 Oct 23 nicklas 362   {
7372 06 Oct 23 nicklas 363     var frm = document.forms['reggie'];
7372 06 Oct 23 nicklas 364     Doc.showHide('submitOptions', !frm.override.checked);
7372 06 Oct 23 nicklas 365     Doc.showHide('submitOptionsOverride', frm.override.checked);
7372 06 Oct 23 nicklas 366     if (frm.submitOptionsOverride.value=='') 
7372 06 Oct 23 nicklas 367     {
7372 06 Oct 23 nicklas 368       frm.submitOptionsOverride.value = Doc.element('submitOptions').innerHTML;
7372 06 Oct 23 nicklas 369     }
7372 06 Oct 23 nicklas 370   }
7372 06 Oct 23 nicklas 371   
6813 25 Aug 22 nicklas 372
6813 25 Aug 22 nicklas 373   hisat.submit = function()
6813 25 Aug 22 nicklas 374   {
6813 25 Aug 22 nicklas 375     var frm = document.forms['reggie'];
6813 25 Aug 22 nicklas 376       
6813 25 Aug 22 nicklas 377     var submitInfo = {};
6813 25 Aug 22 nicklas 378     submitInfo.maskingSoftware = parseInt(frm.maskingSoftware.value);
6813 25 Aug 22 nicklas 379     submitInfo.maskingProtocol = parseInt(frm.maskingProtocol.value);
6813 25 Aug 22 nicklas 380     submitInfo.alignSoftware = parseInt(frm.alignSoftware.value);
6813 25 Aug 22 nicklas 381     submitInfo.alignProtocol = parseInt(frm.alignProtocol.value);
6813 25 Aug 22 nicklas 382     submitInfo.cluster = frm.clusters.value;
6813 25 Aug 22 nicklas 383     if (frm.priority.selectedIndex >= 0)
6813 25 Aug 22 nicklas 384     {
6813 25 Aug 22 nicklas 385       submitInfo.priority = parseInt(frm.priority.value);
6813 25 Aug 22 nicklas 386     }
6979 16 Jan 23 nicklas 387     if (frm.partition.selectedIndex >= 0)
6979 16 Jan 23 nicklas 388     {
6979 16 Jan 23 nicklas 389       submitInfo.partition = frm.partition.value;
6979 16 Jan 23 nicklas 390     }
7372 06 Oct 23 nicklas 391     if (frm.override.checked)
7372 06 Oct 23 nicklas 392     {
7372 06 Oct 23 nicklas 393       submitInfo.submitOptionsOverride = frm.submitOptionsOverride.value;
7372 06 Oct 23 nicklas 394     }
6813 25 Aug 22 nicklas 395     submitInfo.debug = frm.debug.checked;
6813 25 Aug 22 nicklas 396     submitInfo.autoConfirm = frm.autoConfirm.checked;
6813 25 Aug 22 nicklas 397       
6813 25 Aug 22 nicklas 398     var mergedSequences = [];
6813 25 Aug 22 nicklas 399     submitInfo.mergedSequences = mergedSequences;
6813 25 Aug 22 nicklas 400       
6813 25 Aug 22 nicklas 401     for (var msNo = 0; msNo < frm.mergedSequences.length; msNo++)
6813 25 Aug 22 nicklas 402     {
6813 25 Aug 22 nicklas 403       if (frm.mergedSequences[msNo].selected) 
6813 25 Aug 22 nicklas 404       {
6813 25 Aug 22 nicklas 405         var ms = {};
6813 25 Aug 22 nicklas 406         ms.id = frm.mergedSequences[msNo].mergedSequences.id;
6813 25 Aug 22 nicklas 407         mergedSequences[mergedSequences.length] = ms;
6813 25 Aug 22 nicklas 408       }
6813 25 Aug 22 nicklas 409     }
6813 25 Aug 22 nicklas 410
6813 25 Aug 22 nicklas 411     var url = '../Hisat2023.servlet?ID='+App.getSessionId();
6813 25 Aug 22 nicklas 412     url += '&cmd=StartHisat2023Alignment';
6813 25 Aug 22 nicklas 413
6813 25 Aug 22 nicklas 414     Wizard.showLoadingAnimation('Performing registration...');
6813 25 Aug 22 nicklas 415     Wizard.asyncJsonRequest(url, hisat.submissionResults, 'POST', JSON.stringify(submitInfo));
6813 25 Aug 22 nicklas 416   }
6813 25 Aug 22 nicklas 417   
6813 25 Aug 22 nicklas 418   hisat.submissionResults = function(response)
6813 25 Aug 22 nicklas 419   {
6813 25 Aug 22 nicklas 420     Wizard.showFinalMessage(response.messages);
6813 25 Aug 22 nicklas 421     Doc.show('gorestart');
6813 25 Aug 22 nicklas 422   }
6813 25 Aug 22 nicklas 423
6813 25 Aug 22 nicklas 424   return hisat;
6813 25 Aug 22 nicklas 425 }();
6813 25 Aug 22 nicklas 426
6813 25 Aug 22 nicklas 427 Doc.onLoad(Hisat.initPage);
6813 25 Aug 22 nicklas 428