示例#1
0
def main(process_id):
    lims = Lims(config.BASEURI, config.USERNAME, config.PASSWORD)
    process = Process(lims, id=process_id)
    outputs = process.all_outputs(unique=True)

    data = [["Sample", "Container", "Well", "Index"]]
    for o in sorted((o for o in outputs if o.type == "Analyte"),
                    key=lambda x: (x.location[0].name, x.location[1][::-1])):
        data.append([
            o.name, o.location[0].name, o.location[1],
            next(iter(o.reagent_labels))
        ])
    printtable.print_table("Indexes for project " + o.samples[0].project.name,
                           data)
示例#2
0
文件: do.py 项目: Afonsojr/dopy
def note(arguments):
    task = tasks[arguments['<id>']]
    if task:
        task.notes = task.notes or []
        if arguments['<note>']:
            #actualnotes = task.notes or []
            task.update_record(notes=task.notes + [arguments['<note>']])
            db.commit()
        if arguments['--rm']:
            try:
                del task.notes[int(arguments['--rm'])]
                task.update_record(notes=task.notes)
            except:
                print REDBOLD("Note not found")
            else:
                db.commit()

        lenmax = max([len(note) for note in task.notes ]) if task.notes else 20
        out = "+----" + "-" * lenmax +  "-----+"

        headers = [HEAD(s) for s in ['ID','Name','Tag','Status','Reminder','Created']]
        fields = [ID(str(task.id)),
                 NAME(str(task.name)),
                 TAG(str(task.tag)),
                 STATUS(str(task.status)),
                 str(task.reminder),
                 str(task.created_on.strftime("%d/%m-%H:%M"))]
        print_table([headers, fields])

        if task.notes:
            print HEAD("NOTES:")
            print out
            cprint("\n".join( [ ID(str(i)) + " " + NOTE(note, i) for i, note in enumerate(task.notes)] ), 'blue', attrs=['bold'])
            out +=    FOOTER("\n%s notes" % len(task.notes))
            return out
        else:
            return ""
    else:
        return FOOTER("Task not found")
示例#3
0
文件: do.py 项目: Afonsojr/dopy
def ls(arguments):
    # --all
    #tag=None, search=None, date=None,
    #month=None, day=None, year=None
    query = tasks.deleted != True
    query &= tasks.status != 'done' if not arguments['--all'] and not arguments['--status'] else tasks.id > 0
    if arguments['--tag']:
        query &= tasks.tag == arguments['--tag']
    if arguments['--status']:
        query &= tasks.status == arguments['--status']
    if arguments['--search']:
        query &= tasks.name.like('%%%s%%' % arguments['--search'].lower())


    rows = db(query).select()

    headers = [HEAD(s) for s in ['ID','Name','Tag','Status','Reminder','Notes','Created']]
    #if arguments['--n']:
        #headers.append('Notes')

    table = [headers]
    for row in rows:
        fields = [ID(str(row.id)),
                 NAME(str(row.name)),
                 TAG(str(row.tag)),
                 STATUS(str(row.status)),
                 str(row.reminder),
                 str(len(row.notes) if row.notes else 0),
                 str(row.created_on.strftime("%d/%m-%H:%M"))]

        #if arguments['--n']:
            #fields.append(str( '\n'.join(row.notes) ))

        table.append(fields)

    #pprint_table(sys.stdout, table)
    print_table(table)

    return FOOTER("TOTAL:%s tasks" % len(rows) if rows else "NO TASKS FOUND\nUse --help to see the usage tips")
示例#4
0
    def test_strats(self):
        '''Tests all of the strats against each other
        '''
        NUMBER_OF_TRIALS = 100000
        results = {}
        old_strat_combos = [x for x in itertools.product(VALID_STRATEGIES,repeat=2)]
        strat_combos = []
        for combo in old_strat_combos:
            if combo[::-1] not in strat_combos:
                strat_combos.append(combo)
        for strat1,strat2 in strat_combos:
            self.p1 = ComputerPlayer(name='Computer1',strat=strat1)
            self.p2 = ComputerPlayer(name='Computer2',strat=strat2)
            results[(strat1,strat2)] = {'number of trials':NUMBER_OF_TRIALS,'p1 results':[],'p2 results':[],'number of best outcomes':0,'number of p1 worst outcomes':0,'number of p2 worst outcomes':0,'number of average outcomes':0,'number of bad outcomes':0}
            #Get results
            for i in range(NUMBER_OF_TRIALS):
                key = (strat1,strat2)
                p1_sentence,p2_sentence = self.play(do_cls=False)
                results[key]['p1 results'].append((p1_sentence))
                results[key]['p2 results'].append((p2_sentence))
                if p1_sentence == P and p2_sentence == P: #both players stay silent
                    results[key]['number of best outcomes'] += 1
                if p1_sentence == R and p2_sentence == R: #both players defected
                    results[key]['number of average outcomes'] += 1
                if p1_sentence == T:
                    results[key]['number of p1 worst outcomes'] += 1
                    results[key]['number of bad outcomes'] += 1
                if p2_sentence == T:
                    results[key]['number of p2 worst outcomes'] += 1
                    results[key]['number of bad outcomes'] += 1

        #Process Results        
        for s1,s2 in results.keys():
            key = (s1,s2)
            #get average p1 sentence
            results[key]['p1 average sentence'] = sum(results[key]['p1 results'])/float(len(results[key]['p1 results']))
            #get average p2 sentence
            results[key]['p2 average sentence'] = sum(results[key]['p2 results'])/float(len(results[key]['p2 results']))

        #Get the sentence lengths for each strat
        sentences_for_strat = {} #{strat:[your_total_sentence_for_using_strat,number_of_trials,other_players_total_sentence_for_competing_against_strat}
        for strat in VALID_STRATEGIES:
            your_total_sentence = 0
            trials = 0
            other_total_sentence = 0
            for s1,s2 in results.keys():
                key = (s1,s2)
                if s1 != s2:
                    if s1 == strat:
                        your_total_sentence += sum(results[key]['p1 results'])
                        other_total_sentence += sum(results[key]['p2 results'])
                        trials += results[key]['number of trials']
                    elif s2 == strat:
                        your_total_sentence += sum(results[key]['p2 results'])
                        other_total_sentence += sum(results[key]['p1 results'])
                        trials += results[key]['number of trials']
            both_same = (sum(results[(strat,strat)]['p1 results'])+sum(results[(strat,strat)]['p2 results']))/2 #take the average of p1 and p2 results, since both are using the same strat
            your_total_sentence += both_same
            other_total_sentence += both_same
            trials += results[(strat,strat)]['number of trials']
            sentences_for_strat[strat] = [your_total_sentence,trials,other_total_sentence]

        #Print Results (using print_table)
        print 'Results of different strategy combinations'
        trials = NUMBER_OF_TRIALS
        headers = ['Strat1','Strat2','P1 Avg','P2 Avg','Best/Trials','Avg/Trials','Bad/Trials','P1 Bad/Trials','P2 Bad/Trials']
        rows = [[strat1,strat2,results[strat1,strat2]['p1 average sentence'],results[strat1,strat2]['p2 average sentence'],'{}/{}'.format(results[strat1,strat2]['number of best outcomes'],trials),'{}/{}'.format(results[strat1,strat2]['number of average outcomes'],trials),'{}/{}'.format(results[strat1,strat2]['number of bad outcomes'],trials),'{}/{}'.format(results[strat1,strat2]['number of p1 worst outcomes'],trials),'{}/{}'.format(results[strat1,strat2]['number of p2 worst outcomes'],trials)] for strat1,strat2 in results.keys()]
        
##        #Sort by strat 1
##        print 'Sorted by P1's Strategy:'
##        rows = sorted(rows,key=lambda x: x[0])
##        
##        #Sort by strat 2
##        print 'Sorted by P2's Strategy:'
##        rows = sorted(rows,key=lambda x: x[1])
##        
##        #Sort by p1 avg
##        print 'Sorted by P1 Average Sentence:'
##        rows = sorted(rows,key=lambda x: x[2],reverse=True)
##        
##        #Sort by p2 avg
##        print 'Sorted by P2 Average Sentence:'
##        rows = sorted(rows,key=lambda x: x[3],reverse=True)
##        
##        #Sort by best
        print 'Sorted by Number of Best Outcomes:'
        rows = sorted(rows,key=lambda x: int(x[4][:x[4].index('/')]),reverse=True)
##        
##        #Sort by avg
##        print 'Sorted by Number of Average Outcomes'
##        rows = sorted(rows,key=lambda x: int(x[5][:x[5].index('/')]),reverse=True)
##        
##        #Sort by bad
##        print 'Sorted by Number of Bad Outcomes'
##        rows = sorted(rows,key=lambda x: int(x[6][:x[6].index('/')]),reverse=True)
##        
##        #Sort by p1 bad
##        print 'Sorted by Number of Bad Outcomes for P1'
##        rows = sorted(rows,key=lambda x: int(x[7][:x[7].index('/')]),reverse=True)
##        
##        #Sort by p2 bad
##        print 'Sorted by Number of Bad Outcomes for P2'
##        rows = sorted(rows,key=lambda x: int(x[8][:x[8].index('/')]),reverse=True)
        
        print_table(headers,rows)


        print '\n\n'
        print 'Sentence lengths for playing with and against certain strategies'
##        headers = ['Strat','Average for Using','Total Sent/Trials','Average for Against','Total Sent/Trials','Total Average']
        headers = ['Strat','Average for Using','Average for Against','Total Average','Cum Average']
##        rows = [[strat,float(sentences_for_strat[strat][0])/sentences_for_strat[strat][1],'{}/{}'.format(sentences_for_strat[strat][0],sentences_for_strat[strat][1]),float(sentences_for_strat[strat][2])/sentences_for_strat[strat][1],'{}/{}'.format(sentences_for_strat[strat][2],sentences_for_strat[strat][1]),(sentences_for_strat[strat][0]+sentences_for_strat[strat][2])/(sentences_for_strat[strat][1] * 2.)] for strat in sentences_for_strat.keys()]
        rows = [[strat,float(sentences_for_strat[strat][0])/sentences_for_strat[strat][1],float(sentences_for_strat[strat][2])/sentences_for_strat[strat][1],(sentences_for_strat[strat][0]+sentences_for_strat[strat][2])/(sentences_for_strat[strat][1] * 2.),float(sentences_for_strat[strat][0]+sentences_for_strat[strat][2])/sentences_for_strat[strat][1]] for strat in sentences_for_strat.keys()]

##        #Sort by average for using
##        print 'Sorted by average for using'
##        rows = sorted(rows,key=lambda x: x[1],reverse=False)
##
##        #Sort by average for against
##        print 'Sorted by average for against'
##        rows = sorted(rows,key=lambda x: x[2],reverse=False)
##
##        #Sort by total average
        print 'Sorted by total average'
        rows = sorted(rows,key=lambda x: x[3],reverse=False)
##
##        #Sort by cum average
##        print 'Sorted by cum average'
##        rows = sorted(rows,key=lambda x: x[4],reverse=False)
        
        print_table(headers,rows)
        return results