def indexPage(form): tl = twolocus.TwoLocus('/csbiodata/public/www.csbio.unc.edu/htdocs/sgreens/pairwise_origins/') panel = markup.page() helper.link_css_and_js(panel) panel.div(style="padding:20px 20px;") user, permissionLevel, date, time, elapsed = cgAdmin.getCompgenCookie(form) editFlag = (form.getvalue("edit") == "True") if permissionLevel >= 80: panel.add(WikiApp.editTag("%s" % this_file, not editFlag)) panel.add(WikiApp.getWikiContent("%s" % this_file, editInPlace=(permissionLevel >= 80) and editFlag, returnPage="./?run=%s" % this_file)) panel.br() panel.form(_class="form-horizontal", action="", method="POST", enctype="multipart/form-data") panel.div(_class="control-group") panel.h3('Background Samples') has_bg_strains = helper.strain_set_selector(panel, tl, 'background') panel.h3('Foreground Samples') has_fg_strains = helper.strain_set_selector(panel, tl, 'foreground') panel.script("""$(".chosen").chosen()""", type="text/javascript") panel.script('''$("form").submit(function () {return %s() && %s();});''' % (has_bg_strains, has_fg_strains), type="text/javascript") helper.select_all_buttons(panel) panel.br() panel.input(type="hidden", name="target", value="%s.visualization" % this_file) panel.input(type="submit", name="submit", value="Submit") panel.div.close() # control group panel.form.close() panel.div.close() return panel
def indexPage(form): tl = twolocus.TwoLocus('/csbiodata/public/www.csbio.unc.edu/htdocs/sgreens/pairwise_origins/') panel = markup.page() helper.link_css_and_js(panel) panel.div(style="padding:20px 20px;") user, permissionLevel, date, time, elapsed = cgAdmin.getCompgenCookie(form) editFlag = (form.getvalue("edit") == "True") if permissionLevel >= 80: panel.add(WikiApp.editTag("%s" % this_file, not editFlag)) panel.add(WikiApp.getWikiContent("%s" % this_file, editInPlace=(permissionLevel >= 80) and editFlag, returnPage="./?run=%s" % this_file)) panel.br() panel.form(_class="form-horizontal", action="", method="POST", enctype="multipart/form-data") panel.div(_class="control-group") panel.h3('Set of Samples') has_strains = helper.strain_set_selector(panel, tl) for pos_num in ('1', '2'): panel.h3('Position ' + pos_num) helper.open_control(panel, 'Chromosome') panel.select(_class="medium", name="chrom" + pos_num) for chrom_num in xrange(1, 19): panel.option(chrom_num) panel.option('X', value='X') panel.select.close() helper.close_control(panel) helper.open_control(panel, 'Position') panel.add('''<input class="input-medium" name="pos%s" required pattern="\d+[\d,]*\.?\d*[mMkK]*">''' % pos_num) panel.add("""<p class="help-block">3000000 = 3,000,000 = 3m = 3M = 3000k = 3KK</p>""") helper.close_control(panel) panel.script(type="text/javascript") panel.add("""$(".chosen").chosen()""") panel.script.close() helper.select_all_buttons(panel) panel.br() panel.input(type="hidden", name="target", value="%s.countMatrix" % this_file) panel.input(type="submit", name="submit", value="Submit") panel.div.close() # control group panel.form.close() panel.div.close() chromo_sizes = {} for string, integer in twolocus.CHROMO_TO_INT.iteritems(): chromo_sizes[string] = tl.sizes[integer-1] panel.script(''' var chromoSizes = %s; ''' % json.dumps(chromo_sizes), type="text/javascript") panel.script(''' function parsePosition(string) { string = string.replace(',','').toLowerCase(); var pos = parseFloat(string); var units = ''; var char for (var i = 0; i < string.length; i++) { char = string[i]; if (char == 'm' || char == 'k') { pos = parseFloat(string.substring(0, i)); units = string.substring(i); break; } } for (i = 0; i < units.length; i++) { char = units[i]; if (char == 'k') { pos *= 1000; } if (char == 'm') { pos *= 1000000; } } return Math.floor(pos); } function isValidIndex(chromosome, position) { return (chromosome in chromoSizes) && (0 <= position) && (position <= chromoSizes[chromosome]); } $("form").submit(function(event) { var chrom, pos; isValidInput = true; for (var i = 1; i <= 2; i++) { chrom = document.getElementsByName('chrom' + i)[0].value; pos = parsePosition(document.getElementsByName('pos' + i)[0].value); if (!isValidIndex(chrom, pos)) { alert("Position " + i + " exceeds chromosome length"); isValidInput = false; } } return %s(event) && isValidInput; }); ''' % has_strains, type="text/javascript") return panel
def buildRadioSelect(form, panel, includeFormStart): user, permissionLevel, date, time, elapsed = cgAdmin.getCompgenCookie(form) citationDict = {} citOrder = [] citCount = 1 tableOrdering = [ "Species", "Strain", "Data Type", "Sequence Method", "Number of Reads", "Size of BWT", "Publication" ] panel.h3("Select Dataset:") if includeFormStart: panel.form(action="", method="POST", enctype="multipart/form-data") panel.ul(id='mainList') for j, msdir in enumerate(MSBWTdirs): if permissionLevel < minPermission[j]: continue available = sorted(glob.glob("%s/*/*msbwt.npy" % msdir)) panel.li() #panel.input(type="checkbox", name="", value="") panel.add(dirLabels[j]) panel.ul() panel.table(border='1') panel.tr() panel.th("") panel.th("Dataset") for l in tableOrdering: panel.th(l) panel.tr.close() for i, dataset in enumerate(available): end = dataset.rfind('/') start = dataset.rfind('/', 0, end - 1) + 1 shorten = dataset[start:end] metadata = loadMetadata(dataset[0:end]) #panel.li() panel.tr() panel.td() if i == 0 and j == 0: panel.input(type="radio", name="dataset", value=str(j) + '-' + shorten, checked="Y") else: panel.input(type="radio", name="dataset", value=str(j) + '-' + shorten) panel.td.close() panel.td() panel.add(metadata.get("Name", shorten)) panel.td.close() for l in tableOrdering: if l == "Publication": citation = metadata.get(l, "Not available") if citation == "Not available": panel.td("Not available", style="text-align:right;") else: if citationDict.has_key(citation): citLink, citID = citationDict[citation] else: citLink = 'citation' + str(citCount) citationDict[citation] = (citLink, citCount) citOrder.append(citation) citID = citCount citCount += 1 panel.td() panel.a('Pub ' + str(citID), href='#' + citLink) panel.td.close() else: panel.td(metadata.get(l, "Not available"), style="text-align:right;") panel.tr.close() #panel.li.close() #panel.br() panel.table.close() panel.br() panel.ul.close() panel.li.close() panel.ul.close() #this one closes the mainList return citOrder, citationDict