Hi all,
My question is about this menu construction to allow to select a gene to 
add/edit/see/remove in database.
 The problem I faced is in my database Gene table has more than one gene 
record per gene because of different drug interactions of one gene we have 
them multiple times in gene column. In order to list the unique list of 
gene for this above drop down menu to update table for users, I tried to 
wrote a def unique method and passed in to requires=IS_IN_SET in field in 
db.py script of models as you can see in here:

db.define_table('Gene',
    Field('Gene', requires=IS_IN_SET(unique(db.Gene))),
    Field('Variants'),
    Field('GroupID'),
    Field('Types'),
    Field('Flags'),
    Field('Genotype'),
    Field('Functional_Phenotype'),
    Field('Patient_Impact'),
    Field('Actions', requires=IS_IN_SET(["STOP", "STOP/SLOW", "SLOW", "GO", 
"GO/SLOW", "DOWN", "SLOW/DOWN", "DOWN/STOP", "None"])),
    Field('Action_Legend'),
    Field('Drug'),
    Field('Drug_Class', requires=IS_NOT_EMPTY()),
    Field('Mechanism_of_Action', requires=IS_NOT_EMPTY()),
    Field('Therapeutic_Area', requires=IS_NOT_EMPTY()),
    Field('Gene_Drug_Interaction', requires=IS_NOT_EMPTY()),
    Field('Sources', requires=IS_NOT_EMPTY()),
    Field('Clinical_Utility', requires=IS_NOT_EMPTY()),
    auth.signature,
    Field("Reviewed", type='boolean', default=False),
    format=lambda r: r.Gene)

*Unique method*
def unique(list1):
    # insert the list to the set
    list_set = set(list1)
    # convert the set to the list
    unique_list = (list(list_set))
    print unique_list

What am I doing wrong? This type of unique method and passing into this 
unique gene list should be in default.py in controller instead of db.py in 
models using db.select() but how exactly?

This is my default.py for form/menu construction of gene:

def index():
    """
    example action using the internationalization operator T and flash
    rendered by views/default/index.html or views/generic.html

    if you need a simple wiki simply replace the two lines below with:
    return auth.wiki()
    """
    form_Gene = SQLFORM.factory(Field("Gene", requires=IS_IN_DB(db, 
"Gene.id", db.Gene._format)))
    form_Drug = SQLFORM.factory(Field("Drug", requires=IS_IN_DB(db, 
"Drug.id", db.Drug._format)))

    if form_Gene.process(formname="form_g").accepted:
        response.flash = "search by gene"
        redirect(URL('Gene', args=[form_Gene.vars.Gene]))
    if form_Drug.process(formname="form_d").accepted:
        response.flash = "search by drug"
        redirect(URL('Drug', args=[form_Drug.vars.Drug]))
    return dict(form_Gene = form_Gene, form_Drug=form_Drug)


def Gene():
    Gene_id = request.args[0]
    try:
        Gene = db.Gene[Gene_id]
    except:
        session.flash = "Gene not found, redirect to Home page!"
        redirect(URL('default', 'index'))
     #gene = db(db.Gene.Gene==Gene_id).select(distinct=True)
    #genotype = db(db.Genotype.Gene==Gene_id).select()
    #gdR = db(db.GeneDrugR.Gene==Gene_id).select()
    #gdA = db(db.GeneDrugAssociation.Gene==Gene_id).select()
    #annoR = db(db.Annotation.Gene==Gene_id).select()
    return locals()

Thanks in advance,
Elif


-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/web2py/a6a4fa3d-3907-4fce-a5f4-d8b08e530360n%40googlegroups.com.

Reply via email to