Пример #1
0
def mp_process_assays(settings, batch_id, login, user_id, ns):
    """ this function will be started in different process, so it must initialize
        everything from scratch, including database connection
    """

    pid = os.getpid()

    cerr('mp_process_assays()[%d]: connecting to db' % pid)

    dbh = get_dbhandler_notsafe()
    if dbh is None:
        dbh = get_dbhandler(settings)
    dbh.session().global_user = dbh.get_user(user_id)

    cerr('mp_process_assays()[%d]: processing...' % pid)
    result = process_assays(batch_id, login, ns)

    dbh.session().global_user = None

    return result
Пример #2
0
def mp_run_callback( settings, callback, params, user, mode, ns=None):
    """ run analyis """

    if ns:
        ns.start_time = int(time())
        ns.status = 'R'
        ns.msg = 'Processing...'
        ns.cerr += 'mp_run_callback(): connecting to db...\n'

    dbh = get_dbhandler_notsafe()
    if dbh is None:
        dbh = get_dbhandler(settings)


    # user authorization should be performed by Query
    q = Query( params, dbh )

    # callback needs to return result (a dictionary object)
    # { 'custom': data, 'options': options,
    # 'html': html_or_None, 'jscode': jscode_or_None }

    if ns:
        ns.cerr += 'mp_run_callback(): processing callback...\n'
    result = callback( q, user )

    if type(result) != dict:
        return result

    #result['sample_filtering'] = sample_summary( q.get_sample_summary(mode))
    #result['marker_filtering'] = marker_summary( q )

    result['sample_filtering'] = format_sample_summary( q.get_sample_summary(mode) )
    result['marker_filtering'] = format_marker_summary( q )

    if ns:
        ns.finish_time = int(time())
        ns.status = 'D'
        ns.msg = 'Finished...'
        ns.cerr += 'mp_run_callback(): callback finished...\n'

    return result