Ejemplo n.º 1
0
def make_numbers():
    t = html.TABLE()
    tb = html.TBODY()
    t <= tb
    i = 1
    val = ""
    for row in range(5):
        line = html.TR()
        tb <= line
        for column in range(10):
            b = html.BUTTON(str(i), id="x%s" % i, Class="nobutton")
            cell = html.TD(b)
            b.bind("click", on_number_button_pressed)
            line <= cell
            i += 1
    return t
Ejemplo n.º 2
0
def setup_top_panel():
    top_panel = document["about_panel"]

    table = html.TABLE()
    tableBody = html.TBODY()
    row = html.TR()

    # html style properties:
    # http://www.w3schools.com/jsref/dom_obj_style.asp

    global buttonHome
    buttonHome = html.BUTTON('Data Analysis')
    button_style_default(buttonHome)
    buttonHome.bind('click', click_home)
    buttonHome.bind('mouseout', mouse_out_home)
    buttonHome.bind('mouseover', mouse_over_home)

    global buttonAbout
    buttonAbout = html.BUTTON('About')
    button_style_default(buttonAbout)
    buttonAbout.bind('click', click_about)
    buttonAbout.bind('mouseout', mouse_out_about)
    buttonAbout.bind('mouseover', mouse_over_about)

    global buttonGuide
    buttonGuide = html.BUTTON('User Guide')
    button_style_default(buttonGuide)
    buttonGuide.bind('click', click_guide)
    buttonGuide.bind('mouseout', mouse_out_guide)
    buttonGuide.bind('mouseover', mouse_over_guide)

    global buttonContact
    buttonContact = html.BUTTON('Contact')
    button_style_default(buttonContact)
    buttonContact.bind('click', click_contact)
    buttonContact.bind('mouseout', mouse_out_contact)
    buttonContact.bind('mouseover', mouse_over_contact)

    row <= html.IMG(src="genexpresso.png", width="100")
    row <= buttonHome
    row <= buttonGuide
    row <= buttonAbout
    row <= buttonContact

    tableBody <= row
    table <= tableBody
    top_panel <= table
Ejemplo n.º 3
0
def make_grid(grid):
    # returns an HTML table with 9 rows and 9 columns
    global current_cell, gridDict

    t = html.TABLE(Class="grid")
    for i in range(grid_step):
        cg = html.COLGROUP()
        for j in range(grid_step):
            cg <= html.COL()
        t <= cg
    srow = -1
    # for i,val in enumerate(grid):
    #    row, column = divmod(i, boardSize)
    val = " "
    for row in range(board_size):
        for column in range(board_size):
            if row > srow:
                if row % grid_step == 0:
                    tb = html.TBODY()
                    t <= tb
                line = html.TR()
                tb <= line
                srow = row

            id = initCell(row + 1, column + 1)
            cell = html.DIV(val, id=id, Class="unused")
            cell.bind("mouseenter", on_mouse_enter)
            cell.bind("mouseleave", on_mouse_leave)
            cell.bind("click", on_grid_button_pressed)
            cell.style.contentEditable = True
            
            td = html.TD(id="td"+id)
            td <= cell
            if column % grid_step == 0:
                td.style.borderLeftWidth = "1px"
            if column == board_size - 1:
                td.style.borderRightWidth = "1px"
            line <= td

    current_cell = None
    print(t)
    return t
Ejemplo n.º 4
0
def process_inventory(event):
    global inventory
    try:
        inventory = JSON.parse(event.target.result)   
        fusedict = {}
        mooglelist = [u['tmrId'] for u in inventory if u['id'] == moogleid]
        containerlist = [u['tmrId'] for u in inventory if u['id'] == containerid if u['tmr'] <1000]
        ownedunits = [u['id'][:-1] for u in inventory if u['id'][0] != '9' if u['tmr'] <1000 ]
        for tmrId in mooglelist:
            tmrName = weapondict[tmrId]['name']
            tmrUnit = weapondict[tmrId]['tmrUnit']
            unitName = unitdict[tmrUnit]['name']
            if tmrUnit[:-1] in ownedunits:
                    if tmrId in fusedict.keys():
                        fusedict[tmrId]['count'] += 1
                    else:
                        fusedict.update({tmrId:{'tmr':tmrName, 'unit':unitName, 'count':1, 'unitid':tmrUnit}})
            if tmrId in containerlist:
                    if tmrId in fusedict.keys():
                        fusedict[tmrId]['count'] += 1
                    else:
                        fusedict.update({tmrId:{'tmr':tmrName, 'unit':containername[code], 'count':1, 'unitid':containerid}})        
        fusesort = sorted(fusedict.items(), key = lambda item: item[1]['tmr'])
        document['results'].clear()
        table = html.TABLE(Class='table table-hover')
        tbody = html.TBODY()
        table <= tbody
        for l in fusesort:
            tbody <= html.TR([html.TD(l[1]['tmr']), html.TD('\tx' + str(l[1]['count']) + '\t'), html.TD(l[1]['unit']), html.TD(html.IMG(src='https://ffbeequip.com/img/units/unit_icon_' + l[1]['unitid'] + '.png' ) )] )
        document['results'] <= table
    except:
        alert('Error: Invalid file!')
        if 'ion-md-checkmark-circle' in filestatus.classList:
            filestatus.classList.remove('ion-md-checkmark-circle')
            filestatus.classList.add('ion-md-close-circle')
        elif 'ion-md-hourglass' in filestatus.classList:
            filestatus.classList.remove('ion-md-hourglass')
            filestatus.classList.add('ion-md-close-circle')   
Ejemplo n.º 5
0
def make_grid(w, grid_size):

    t = html.TABLE(Class="ws")
    tb = html.TBODY()
    t <= tb
    for row in range(grid_size):
        wordline = w.grid[row]
        line = html.TR()
        tb <= line
        for column in range(grid_size):
            val = wordline[column]
            id = initCell(row + 1, column + 1)
            cell = html.TD(val, id=id, Class="ws")
            line <= cell

            cell.bind("mouseenter", on_mouse_enter)
            cell.bind("mouseleave", on_mouse_leave)
            cell.bind("click", on_grid_button_pressed)
            cell.bind("dblclick", dblclick)

            cell.style.contentEditable = True

    return t
Ejemplo n.º 6
0
def setup_pvalue_list_table(dataPairs, output_file):
    aRight = document["aRight"]
    aRight.href = output_file

    pvaluesTable = document["pvalue_list_table"]

    for child in pvaluesTable:
        pvaluesTable.remove(child)

    pvaluesTableBody = html.TBODY()
    pvaluesTableHeaders = html.TR()
    pvaluesTableBody.style.border = "thin solid lightgray"

    # to clear list, do this:    del left_table_rows [:]
    pvaluesTableRows = []

    pvaluesLink = html.A('\u2191\u2193', href="#", Class="sort_link")
    pvaluesLink.bind(
        'click',
        lambda ev: sort_by_col(ev, pvaluesTableHeaders, pvaluesTableRows,
                               pvaluesTableBody, False))

    pvaluesLinkNum = html.A('\u2191\u2193', href="#", Class="sort_link")
    pvaluesLinkNum.bind(
        'click', lambda ev: sort_by_col(
            ev, pvaluesTableHeaders, pvaluesTableRows, pvaluesTableBody, True))

    h1 = html.TH('Dataset ID' + pvaluesLink)
    h2 = html.TH('Sample1' + pvaluesLink.clone())
    h3 = html.TH('Size1' + pvaluesLinkNum)
    h4 = html.TH('Sample2' + pvaluesLink.clone())
    h5 = html.TH('Size2' + pvaluesLinkNum.clone())
    h6 = html.TH('Gene' + pvaluesLink.clone())
    h7 = html.TH('Probe' + pvaluesLink.clone())
    h8 = html.TH('P-value x1E6' + pvaluesLinkNum.clone())
    h9 = html.TH('T-stat' + pvaluesLinkNum.clone())

    pvaluesHeadersList = [h1, h2, h3, h4, h5, h6, h7, h8, h9]

    for h in pvaluesHeadersList:
        h.style.background = "#E0E0E0"
        h.style.font = "16px verdana"

    pvaluesTableHeaders <= pvaluesHeadersList

    for i in range(len(dataPairs)):
        pair = dataPairs[i]

        td1 = html.TD(pair["dataset_id"])
        td2 = html.TD(pair["sample_1"])
        td3 = html.TD(pair["sample_1_size"])
        td4 = html.TD(pair["sample_2"])
        td5 = html.TD(pair["sample_2_size"])
        td6 = html.TD(pair["gene"])
        td7 = html.TD(pair["probe"])
        td8 = html.TD(str(round(float(pair["pvalue"]), 2)))
        td9 = html.TD(str(round(float(pair["tstat"]), 2)))

        tdList = [td1, td2, td3, td4, td5, td6, td7, td8, td9]

        if (i % 2 == 1):
            for td in tdList:
                td.style.background = "#F7F7F7"

        row = html.TR()
        row <= tdList
        pvaluesTableRows.append(row)

    pvaluesTableBody <= pvaluesTableHeaders
    pvaluesTableBody <= pvaluesTableRows

    pvaluesTable <= pvaluesTableBody
Ejemplo n.º 7
0
def setup_dataset_list_table(dataPairs, output_file):
    aLeft = document["aLeft"]
    aLeft.href = output_file

    table = document["dataset_list_table"]

    for child in table:
        table.remove(child)

    tableBody = html.TBODY()
    headers = html.TR()
    tableBody.style.border = "thin solid lightgray"

    # to clear list, do this:    del left_table_rows [:]
    dataset_list_table_rows = []

    link = html.A('\u2191\u2193', href="#", Class="sort_link")
    link.bind(
        'click', lambda ev: sort_by_col(ev, headers, dataset_list_table_rows,
                                        tableBody, False))

    link_num = html.A('\u2191\u2193', href="#", Class="sort_link")
    link_num.bind(
        'click', lambda ev: sort_by_col(ev, headers, dataset_list_table_rows,
                                        tableBody, True))

    hD = html.TH('Dataset ID' + link)
    hP = html.TH('PubMed ID' + link.clone())

    hList = [hD, hP]

    for h in hList:
        h.style.background = "#E0E0E0"
        h.style.font = "16px verdana"

    h = None
    headers <= hList

    for i in range(len(dataPairs)):
        pair = dataPairs[i]
        datasetId = pair['dataset_id']
        pubmedId = pair['pubmed_id']

        row = html.TR()

        button = html.BUTTON(datasetId, gds=datasetId)
        button.style.font = "16px verdana"
        button.value = datasetId
        button.bind('mouseout', mouse_out_button)
        button.bind('mouseover', mouse_over_button)
        button.bind('click', click_dataset_id_button)
        button.style.border = "thin solid gray"
        button.style.background = "#EEEEEE"
        button.style.color = "#505050"

        td1 = html.TD(button)
        td1.style.textAlign = "center"
        button.style.width = "100px"

        td2 = html.TD(
            html.A(pubmedId,
                   href="http://www.ncbi.nlm.nih.gov/pubmed/?term=" + pubmedId,
                   target="_blank"))
        td2.style.textAlign = "center"

        tdList = [td1, td2]

        if (i % 2 == 1):
            for td in tdList:
                td.style.background = "#F7F7F7"

        row <= tdList
        dataset_list_table_rows.append(row)

    tableBody <= headers
    tableBody <= dataset_list_table_rows
    table <= tableBody
Ejemplo n.º 8
0
def draw_home2():
    panel = document["main_panel"]

    table21 = html.TABLE()
    table21.style.fontSize = "large"
    table21.style.font = "16px verdana"

    tableBody21 = html.TBODY()

    #table22 = html.TABLE()
    #tableBody22 = html.TBODY()

    row21_1 = html.TR()
    #row21_2 = html.TR()

    table21.style.background = "#F7F7F7"
    table21.style.padding = "10px 25px 10px 10px"

    #table22.style.background = "#F7F7F7"
    #table22.style.padding = "10px 15px 10px 10px"

    label21 = html.LABEL("Search gene expressions by:")
    label21.style.verticalAlign = "center"
    label21.style.marginRight = "10px"

    td_1 = html.TD()
    td_1 <= label21
    row21_1 <= td_1

    op1 = html.OPTION("probe name")
    op2 = html.OPTION("gene name")
    sel2 = html.SELECT([op2, op1], id="select_probe_or_gene", font_size=16)
    sel2.style.fontSize = "large"
    sel2.style.verticalAlign = "center"
    sel2.style.marginRight = "20px"

    td_2 = html.TD()
    td_2 <= sel2
    row21_1 <= td_2

    inp21 = html.INPUT(id="input_probe_or_gene")
    inp21.style.verticalAlign = "center"
    inp21.style.marginRight = "0px"

    td_3 = html.TD()
    td_3 <= inp21
    row21_1 <= td_3

    global bSearch2
    bSearch2 = html.BUTTON('Search')
    button_style_default(bSearch2)
    bSearch2.bind('click', click_search2)
    bSearch2.bind('mouseout', mouse_out_search2)
    bSearch2.bind('mouseover', mouse_over_search2)
    bSearch2.style.verticalAlign = "center"

    td_4 = html.TD()
    td_4 <= bSearch2
    row21_1 <= td_4

    #label22 = html.LABEL("Search gene expressions by gene name:")
    #label22.style.verticalAlign = "bottom"
    #label22.style.marginRight = "10px"
    #row21_2 <= label22
    #inp22 = html.INPUT()
    #inp22.style.verticalAlign = "bottom"
    #inp22.style.marginRight = "0px"
    #row21_2 <= inp22
    #global bSearch3
    #bSearch3 = html.BUTTON('Search')
    #button_style_default(bSearch3)
    #bSearch3.bind('click', click_search3)
    #bSearch3.bind('mouseout', mouse_out_search3)
    #bSearch3.bind('mouseover', mouse_over_search3)
    #bSearch3.style.verticalAlign = "top"
    #row21_2 <= bSearch3

    tableBody21 <= row21_1
    #tableBody22 <= row21_2
    table21 <= tableBody21
    #table22 <= tableBody22

    panel <= table21
    panel <= html.BR()
    #panel <= table22

    #############################################

    table23 = html.TABLE()
    table23.style.font = "16px verdana"
    table23.style.background = "#F7F7F7"
    table23.style.padding = "20px 25px 20px 10px"

    tableBody23 = html.TBODY()

    row23_1 = html.TR()
    row23_2 = html.TR()
    row23_3 = html.TR()

    label23_1 = html.LABEL("Min sample size:")
    #label23_1.style.verticalAlign = "bottom"
    label23_1.style.marginRight = "10px"
    row23_1 <= label23_1

    op21 = html.OPTION("5")
    op22 = html.OPTION("10")
    op23 = html.OPTION("15")
    op24 = html.OPTION("20")
    op25 = html.OPTION("25")
    sel23_1 = html.SELECT([op21, op22, op23, op24, op25],
                          id="selector_min_sample_size",
                          font_size=16)
    sel23_1.style.fontSize = "large"
    #sel23_1.style.verticalAlign = "bottom"
    sel23_1.style.marginRight = "50px"
    row23_1 <= sel23_1

    #inp23_1 = html.INPUT()
    #inp23_1.style.verticalAlign = "bottom"
    #inp23_1.style.marginRight = "0px"
    #row23_1 <= inp23_1

    label23_2 = html.LABEL("Max p-value:")
    label23_2.style.verticalAlign = "bottom"
    label23_2.style.marginRight = "10px"
    row23_1 <= label23_2

    op31 = html.OPTION("1E-6")
    op32 = html.OPTION("1E-5")
    op33 = html.OPTION("1E-4")
    op34 = html.OPTION("1E-3")
    op35 = html.OPTION("0.005")
    op36 = html.OPTION("0.01")
    op37 = html.OPTION("0.02")
    op38 = html.OPTION("0.05")
    sel23_2 = html.SELECT([op38, op37, op36, op35, op34, op33, op32, op31],
                          id="selector_max_pvalue",
                          font_size=16)
    sel23_2.style.fontSize = "large"
    #sel23_1.style.verticalAlign = "bottom"
    sel23_2.style.marginRight = "50px"
    row23_1 <= sel23_2

    #inp23_2 = html.INPUT()
    #inp23_2.style.verticalAlign = "bottom"
    #inp23_2.style.marginRight = "0px"
    #row23_1 <= inp23_2

    label23_3 = html.LABEL("Max # results:")
    label23_3.style.verticalAlign = "bottom"
    label23_3.style.marginRight = "10px"
    row23_1 <= label23_3

    op44 = html.OPTION("1000")
    op45 = html.OPTION("500")
    op46 = html.OPTION("300")
    op47 = html.OPTION("200")
    op48 = html.OPTION("100")
    sel23_3 = html.SELECT([op48, op47, op46, op45, op44],
                          id="selector_max_num_results",
                          font_size=16)
    sel23_3.style.fontSize = "large"
    #sel23_3.style.verticalAlign = "bottom"
    sel23_3.style.marginRight = "0px"
    row23_1 <= sel23_3

    #inp23_3 = html.INPUT()
    #inp23_3.style.verticalAlign = "bottom"
    #inp23_3.style.marginRight = "0px"
    #row23_1 <= inp23_3

    tableBody23 <= row23_1
    #tableBody23 <= row23_2
    #tableBody23 <= row23_3

    table23 <= tableBody23
    panel <= table23

    panel <= html.BR()
Ejemplo n.º 9
0
def draw_home1():
    panel = document["main_panel"]
    table0 = html.TABLE()
    tableBody0 = html.TBODY()
    row0 = html.TR()

    b21 = html.P(id="status_indicator")

    #b21.text = "READY"
    #b21.style.verticalAlign = "bottom"
    #b21.style.marginRight = "40px"
    #g21.style.background = "#3366FF"
    #g21.style.color = "#FFEE00"
    #b21.style.background = "#55FF55"
    #b21.style.width = "120px"
    #b21.style.textAlign = "center"
    #b21.style.padding = "10px 0px 10px 0px"
    #b21.style.font = "16px verdana"
    #b21.style.border = "thin solid green"

    td01 = html.TD()
    td01 <= b21
    row0 <= td01

    head = html.LABEL("GeneXpresso - analyze DNA microarray datasets")
    head.style.font = "30px verdana"
    head.style.textAlign = "center"
    td02 = html.TD()
    td02 <= head
    row0 <= td02

    tableBody0 <= row0
    table0 <= tableBody0
    panel <= table0

    panel <= html.BR()

    status_indicator_ready(0)

    table1 = html.TABLE()
    table1.style.border = "none"
    table1.style.fontSize = "large"
    table1.style.background = "#F7F7F7"
    #table1.style.marginLeft = "50px"
    #b.style.marginTop = "30px"
    #
    table1.style.padding = "10px 20px 10px 10px"
    table1.style.font = "16px verdana"

    tableBody1 = html.TBODY()

    g1 = html.TR()

    g11 = html.LABEL("Search datasets by keyword:")
    g11.style.verticalAlign = "bottom"
    g11.style.marginRight = "10px"

    td_1 = html.TD()
    td_1 <= g11
    g1 <= td_1

    g12 = html.INPUT(id="g12")
    g12.style.verticalAlign = "bottom"
    g12.style.marginRight = "20px"

    td_2 = html.TD()
    td_2 <= g12
    g1 <= td_2

    g13 = html.LABEL("Search in:")
    g13.style.verticalAlign = "bottom"
    g13.style.marginRight = "10px"

    td_3 = html.TD()
    td_3 <= g13
    g1 <= td_3

    op1 = html.OPTION("title")
    op2 = html.OPTION("description")
    op3 = html.OPTION("dataset ID")
    op4 = html.OPTION("pubmed ID")
    op5 = html.OPTION("gene")
    op6 = html.OPTION("probe")
    sel1 = html.SELECT([op1, op2, op3, op4, op5, op6],
                       id="selector1",
                       font_size=12)
    sel1.style.fontSize = "large"
    sel1.style.verticalAlign = "bottom"

    td_4 = html.TD()
    td_4 <= sel1
    g1 <= td_4

    global bSearch1
    bSearch1 = html.BUTTON('Search')
    button_style_default(bSearch1)
    #bSearch1.bind('click', click_search1)
    bSearch1.bind('mouseout', mouse_out_search1)
    bSearch1.bind('mouseover', mouse_over_search1)
    bSearch1.style.verticalAlign = "top"
    bSearch1.bind('click', datasets_by_keyword_search)

    td_5 = html.TD()
    td_5 <= bSearch1
    g1 <= td_5

    tableBody1 <= g1
    table1 <= tableBody1
    panel <= table1
    panel <= html.BR()
Ejemplo n.º 10
0
def draw_home_title_description():
    panel = document["main_panel"]

    table = html.TABLE()
    table.style.fontSize = "large"
    table.style.font = "16px verdana"

    tableBody = html.TBODY()
    row = html.TR()

    tableBody.style.verticalAlign = "center"
    row.style.verticalAlign = "center"

    table.style.background = "#F7F7F7"
    table.style.padding = "10px 10px 10px 10px"

    label = html.LABEL("Details for dataset:", id="label_details_for_dataset")
    label.style.verticalAlign = "center"
    label.style.marginRight = "10px"

    td1 = html.TD()
    td1 <= label
    td1.style.width = "200px"
    row <= td1

    div2 = html.DIV()
    div2.style.overflow = "scroll"
    div2.height = 100
    div2.width = 250

    title_text_area = html.TEXTAREA("Title:", id="dataset_title")
    title_text_area.readOnly = True
    #title_text_area.disabled = True
    title_text_area.style.font = "14px verdana"
    title_text_area.rows = 10
    title_text_area.cols = 26
    div2 <= title_text_area

    td2 = html.TD()
    td2 <= div2
    row <= td2

    div3 = html.DIV()
    div3.style.overflow = "scroll"
    div3.height = 100
    div3.width = 450

    description_text_area = html.TEXTAREA("Description:",
                                          id="dataset_description")
    description_text_area.readOnly = True
    #description_text_area.disabled = True
    description_text_area.style.font = "14px verdana"
    description_text_area.rows = 10
    description_text_area.cols = 51
    div3 <= description_text_area

    td3 = html.TD()
    td3 <= div3
    row <= td3

    tableBody <= row
    table <= tableBody
    panel <= table
    panel <= html.BR()
Ejemplo n.º 11
0
def draw_home_samples(sample1, sample2):
    panel = document["main_panel"]

    table = html.TABLE()
    table.style.fontSize = "large"
    table.style.font = "16px verdana"

    tableBody = html.TBODY()
    row = html.TR()

    tableBody.style.verticalAlign = "center"
    row.style.verticalAlign = "center"

    table.style.background = "#F7F7F7"
    table.style.padding = "10px 25px 10px 10px"

    label = html.LABEL("Select samples to search:")
    label.style.verticalAlign = "center"
    label.style.marginRight = "10px"

    td1 = html.TD()
    td1 <= label
    row <= td1

    #op11 = html.OPTION(sample1)
    #op12 = html.OPTION(sample2)

    #op21 = html.OPTION(sample1)
    #op22 = html.OPTION(sample2)

    sel1 = html.SELECT([], id="selector_samples_1", font_size=16)
    sel1.style.fontSize = "large"
    sel1.style.verticalAlign = "center"
    sel1.style.marginRight = "20px"
    sel1.style.width = "300px"

    td2 = html.TD()
    td2 <= sel1
    row <= td2

    sel2 = html.SELECT([], id="selector_samples_2", font_size=16)
    sel2.style.fontSize = "large"
    sel2.style.verticalAlign = "center"
    sel2.style.marginRight = "0px"
    sel2.style.width = "300px"

    td3 = html.TD()
    td3 <= sel2
    row <= td3

    b = html.BUTTON('Search', id="search_subsets")
    button_style_default(b)
    b.bind('click', click_search_subsets)
    b.bind('mouseout', mouse_out_search_subsets)
    b.bind('mouseover', mouse_over_search_subsets)
    b.style.verticalAlign = "center"
    b.style.marginTop = "0px"
    b.style.marginBottom = "0px"

    td4 = html.TD()
    td4.style.verticalAlign = "center"
    td4 <= b
    row <= td4

    tableBody <= row
    table <= tableBody

    panel <= table
    panel <= html.BR()
Ejemplo n.º 12
0
def draw_home3():
    dataset_list_table = html.TABLE(cellspacing=0,
                                    border=1,
                                    bordercolor="lightgray",
                                    id="dataset_list_table")
    tableBody = html.TBODY()
    headers = html.TR()

    tableBody.style.border = "thin solid lightgray"

    # to clear list, do this:    del left_table_rows [:]
    dataset_list_table_rows = []

    link = html.A('\u2191\u2193', href="#", Class="sort_link")
    link.bind(
        'click', lambda ev: sort_by_col(ev, headers, dataset_list_table_rows,
                                        tableBody, False))

    link_num = html.A('\u2191\u2193', href="#", Class="sort_link")
    link_num.bind(
        'click', lambda ev: sort_by_col(ev, headers, dataset_list_table_rows,
                                        tableBody, True))

    hD = html.TH('Dataset ID' + link)
    hP = html.TH('PubMed ID' + link.clone())

    hList = [hD, hP]

    for h in hList:
        h.style.background = "#E0E0E0"
        h.style.font = "16px verdana"

    h = None

    headers <= hList

    for i in range(0):
        row = html.TR()

        button = html.BUTTON("GDS123" + str(i), row=str(i), gds="GDS123")
        button.style.font = "16px verdana"
        #button.style.textAlign = "center"

        button.value = "GDS123" + str(i)
        button.bind('mouseout', mouse_out_button)
        button.bind('mouseover', mouse_over_button)
        button.bind('click', click_dataset_id_button)
        button.style.border = "thin solid gray"
        button.style.background = "#EEEEEE"
        button.style.color = "#505050"

        td1 = html.TD(button)
        td1.style.textAlign = "center"

        td2 = html.TD(
            html.A("7896544" + str(10 - i),
                   href="http://www.ncbi.nlm.nih.gov/pubmed/?term=17262812",
                   target="_blank"))
        td2.style.textAlign = "center"

        tdList = [td1, td2]

        if (i % 2 == 1):
            for td in tdList:
                td.style.background = "#F7F7F7"

        row <= tdList
        dataset_list_table_rows.append(row)

    tableBody <= headers
    tableBody <= dataset_list_table_rows

    dataset_list_table <= tableBody
    dataset_list_table.style.font = "16px verdana"
    dataset_list_table.style.color = "#303030"

    panel = document["main_panel"]
    #panel <= dataset_list_table

    ###################################

    pvaluesTable = html.TABLE(cellspacing=0,
                              border=1,
                              bordercolor="lightgray",
                              id="pvalue_list_table")
    pvaluesTable.width = 985

    pvaluesTableBody = html.TBODY()
    pvaluesTableHeaders = html.TR()

    pvaluesTableBody.style.border = "thin solid lightgray"

    # to clear list, do this:    del left_table_rows [:]
    pvaluesTableRows = []

    pvaluesLink = html.A('\u2191\u2193', href="#", Class="sort_link")
    pvaluesLink.bind(
        'click',
        lambda ev: sort_by_col(ev, pvaluesTableHeaders, pvaluesTableRows,
                               pvaluesTableBody, False))

    pvaluesLinkNum = html.A('\u2191\u2193', href="#", Class="sort_link")
    pvaluesLinkNum.bind(
        'click', lambda ev: sort_by_col(
            ev, pvaluesTableHeaders, pvaluesTableRows, pvaluesTableBody, True))

    h1 = html.TH('Dataset ID' + pvaluesLink)
    h2 = html.TH('Sample1' + pvaluesLink.clone())
    h3 = html.TH('Size1' + pvaluesLinkNum)
    h4 = html.TH('Sample2' + pvaluesLink.clone())
    h5 = html.TH('Size2' + pvaluesLinkNum.clone())
    h6 = html.TH('Gene' + pvaluesLink.clone())
    h7 = html.TH('Probe' + pvaluesLink.clone())
    h8 = html.TH('P-value x1E6' + pvaluesLinkNum.clone())
    h9 = html.TH('T-stat' + pvaluesLinkNum.clone())

    pvaluesHeadersList = [h1, h2, h3, h4, h5, h6, h7, h8, h9]

    for h in pvaluesHeadersList:
        h.style.background = "#E0E0E0"
        h.style.font = "16px verdana"

    pvaluesTableHeaders <= pvaluesHeadersList

    pvaluesTableBody <= pvaluesTableHeaders
    pvaluesTableBody <= pvaluesTableRows

    pvaluesTable <= pvaluesTableBody
    pvaluesTable.style.font = "16px verdana"
    pvaluesTable.style.color = "#303030"

    div1 = html.DIV()
    div1.style.overflow = "scroll"
    div1.height = 300
    div1.width = 250
    div1 <= dataset_list_table

    div2 = html.DIV()
    div2.style.overflow = "scroll"
    div2.height = 300
    div2.width = 1000
    div2 <= pvaluesTable

    doubleTable = html.TABLE()
    doubleTableBody = html.TBODY()

    downloadFilesRow = html.TR()
    doubleTableRow = html.TR()

    tdLeft = html.TD()
    tdLeft <= div1
    tdLeft.style.padding = "0px 20px 0px 0px"

    tdRight = html.TD()
    tdRight <= div2

    tdDownloadLeft = html.TD()
    tdDownloadRight = html.TD()

    aLeft = html.A('<img src="download_icon.jpg" height=20 width=20> Download',
                   id='aLeft')
    aLeft.style.font = "16px verdana"
    aLeft.style.color = "#303030"
    tdDownloadLeft <= aLeft

    aRight = html.A(
        '<img src="download_icon.jpg" height=20 width=20> Download',
        id='aRight')
    aRight.style.font = "16px verdana"
    aRight.style.color = "#303030"
    tdDownloadRight <= aRight

    downloadFilesRow <= [tdDownloadLeft, tdDownloadRight]
    doubleTableRow <= [tdLeft, tdRight]

    doubleTableBody <= downloadFilesRow
    doubleTableBody <= doubleTableRow
    doubleTable <= doubleTableBody

    panel <= doubleTable