def get_bid(self, trump_suit, bids, restriction, lead, you): num_cards = len(self.get_all_cards()) if self.isYou: print("RESTRICTION:", restriction) self.print_all_cards() bid = 0 print("Here are the bids so far: (- means hasn't bet)", helpers.convert_bid_array(bids, lead, you)) bid_str = input( "Please bid the number of tricks you think you will take: ") while True: if helpers.check_int(bid_str) and int(bid_str) >= 0 and int( bid_str) <= num_cards: if int(bid_str) != restriction: bid = int(bid_str) break bid_str = input( "Sorry, you cannot bid that number. Please bid a different number: " ) else: bid_str = input("Please input a valid bid: ") return bid bid = round(self.approx_win_tricks(trump_suit)) bid = min(num_cards, bid) if bid == restriction: if bid > 0: bid -= 1 else: bid += 1 return bid
def get_you_card_choice(self, lead_suit): card_chosen = None card_str = input("Pick a card to play: ").strip() while True: card_info = card_str.split(" ") if len(card_info) == 2: suit = card_info[0].upper() if suit in ["C", "D", "H", "S"]: all_cards_in_suit = self.cards[suit] rank = card_info[1].upper() for card in all_cards_in_suit: if helpers.convert_rank_to_str(card.rank) == rank: card_chosen = card elif len(card_info) == 1: if helpers.check_int(card_str): card_index = int(card_str) all_cards = self.get_all_cards() if card_index > 0 and card_index <= len(all_cards): card_chosen = all_cards[card_index - 1] if card_chosen: card_valid = self.check_valid_play(card_chosen, lead_suit) if card_valid: break card_chosen = None card_str = input( "The card choice is not valid. Please try again: ").strip() return card_chosen
def playing_bingo(request): id = helpers.check_int(request.GET.get('id', None)) query = "INSERT INTO interpretome_exercises.bingo_players VALUES ('%s', NOW())" % id cursor = connections['default'].dict_cursor() cursor.execute(query) return http.HttpResponse(simplejson.dumps(None), mimetype='application/json')
def get_individuals(request): numsnps = helpers.check_int(request.GET.get('numsnps', None)) if numsnps is None: return http.HttpResponseBadRequest() individuals = helpers.sanitize(request.GET.get('individuals', None)).split(',') individual_select = set() for individual in individuals: if individual == '210-2011-staff': individual_select.update(['Konrad', 'Nick', 'Noah', 'Rob', 'Stuart']) else: individual_select.add(individual) if len(individual_select) == 0: return http.HttpResponseBadRequest() cursor = connections['default'].dict_cursor() query = ''' SELECT dbsnp, %s FROM interpretome_ancestry.similarity LIMIT %s; ''' % (",".join([str(i) for i in individual_select]), numsnps) cursor.execute(query) output = helpers.create_snp_dict(cursor.fetchall()) return http.HttpResponse(simplejson.dumps(output), mimetype = 'application/json')
def get_vis_info(request): dbsnp = helpers.check_int(request.GET.get('dbsnp', None)) cursor = connections['default'].dict_cursor() query = 'SELECT DISTINCT protein_acc, aa_position FROM %s.b135_SNPContigLocusId_37_3 WHERE snp_id=%s' % (dbsnp_db, dbsnp) cursor.execute(query) output = {} output[dbsnp] = {} data = cursor.fetchone() if data['protein_acc'] == '': return http.HttpResponse(simplejson.dumps(output), mimetype = "application/json") query = ''' SELECT b.mapped_id AS pdb FROM ( SELECT * FROM interpretome_exercises.HUMAN_9606_idmapping WHERE type="RefSeq" AND mapped_id LIKE "%s%%" ) a JOIN interpretome_exercises.HUMAN_9606_idmapping b USING (internal_id) WHERE b.type="PDB" ''' % data['protein_acc'] cursor.execute(query) data['pdbs'] = [x['pdb'] for x in cursor.fetchall()] data['dbsnp'] = dbsnp output[dbsnp] = data return http.HttpResponse(simplejson.dumps(output), mimetype = "application/json")
def get_individuals(request): numsnps = helpers.check_int(request.GET.get('numsnps', None)) if numsnps is None: return http.HttpResponseBadRequest() individuals = helpers.sanitize(request.GET.get('individuals', None)).split(',') individual_select = set() for individual in individuals: if individual == '210-2011-staff': individual_select.update( ['Konrad', 'Nick', 'Noah', 'Rob', 'Stuart']) else: individual_select.add(individual) if len(individual_select) == 0: return http.HttpResponseBadRequest() cursor = connections['default'].dict_cursor() query = ''' SELECT dbsnp, %s FROM interpretome_ancestry.similarity LIMIT %s; ''' % (",".join([str(i) for i in individual_select]), numsnps) cursor.execute(query) output = helpers.create_snp_dict(cursor.fetchall()) return http.HttpResponse(simplejson.dumps(output), mimetype='application/json')
def get_vis_info(request): dbsnp = helpers.check_int(request.GET.get('dbsnp', None)) cursor = connections['default'].dict_cursor() query = 'SELECT DISTINCT protein_acc, aa_position FROM %s.b135_SNPContigLocusId_37_3 WHERE snp_id=%s' % ( dbsnp_db, dbsnp) cursor.execute(query) output = {} output[dbsnp] = {} data = cursor.fetchone() if data['protein_acc'] == '': return http.HttpResponse(simplejson.dumps(output), mimetype="application/json") query = ''' SELECT b.mapped_id AS pdb FROM ( SELECT * FROM interpretome_exercises.HUMAN_9606_idmapping WHERE type="RefSeq" AND mapped_id LIKE "%s%%" ) a JOIN interpretome_exercises.HUMAN_9606_idmapping b USING (internal_id) WHERE b.type="PDB" ''' % data['protein_acc'] cursor.execute(query) data['pdbs'] = [x['pdb'] for x in cursor.fetchall()] data['dbsnp'] = dbsnp output[dbsnp] = data return http.HttpResponse(simplejson.dumps(output), mimetype="application/json")
def playing_bingo(request): id = helpers.check_int(request.GET.get('id', None)) query = "INSERT INTO interpretome_exercises.bingo_players VALUES ('%s', NOW())" % id cursor = connections['default'].dict_cursor() cursor.execute(query) return http.HttpResponse(simplejson.dumps(None), mimetype = 'application/json')
def get_pca_parameters(request): numsnps_request = helpers.check_int(request.GET.get('numsnps', None)) source_request = helpers.check_pca_source(request.GET.get('source', None)) level_request = helpers.check_int(request.GET.get('level', None)) x_request = helpers.check_int(request.GET.get('axis1', None)) y_request = helpers.check_int(request.GET.get('axis2', None)) if None in (numsnps_request, source_request, level_request, x_request, y_request): return http.HttpResponseBadRequest() numsnps = numsnps_request source = source_request cursor = connections['default'].dict_cursor() lab_pc1 = str(x_request) lab_pc2 = str(y_request) query = ''' SELECT rsid, pc%(pc1)s, pc%(pc2)s FROM interpretome_ancestry.loadings WHERE listcode="%(numsnps)s" AND pop="%(source)s" ''' % {"pc1": lab_pc1, "pc2": lab_pc2, "source":source, "numsnps": numsnps} cursor.execute(query) loadings = cursor.fetchall() main_source = source.split('_')[0] sub_source = source.split('_')[1] if source == 'hgdp_all': level = 1 else: level = level_request query = ''' SELECT sample_id, pcp%(pc1)s, pcp%(pc2)s, Level%(level)s_label AS population, Level2_label AS population_2 FROM interpretome_ancestry.projections JOIN interpretome_ancestry.%(main_source)s_poplabels ON (interpretome_ancestry.projections.sample_id = interpretome_ancestry.%(main_source)s_poplabels.id) WHERE listcode = "%(numsnps)s" and pop = "%(source)s" ORDER BY population ''' % {"pc1": lab_pc1, "pc2": lab_pc2, "source": source, "numsnps": numsnps, "main_source": main_source, "level": level} cursor.execute(query) projections = cursor.fetchall() query = ''' SELECT rsid, ref FROM interpretome_ancestry.%(main_source)s_snplist WHERE listcode = "%(numsnps)s" ''' % {"main_source": main_source, "numsnps": numsnps} cursor.execute(query) refs = cursor.fetchall() query = ''' SELECT pc%(pc1)s, pc%(pc2)s FROM interpretome_ancestry.explained_vars WHERE pop = '%(source)s' AND listcode = "%(numsnps)s" ''' % {"pc1": lab_pc1, "pc2": lab_pc2, "source": source, "numsnps": numsnps} cursor.execute(query) variances = cursor.fetchone() if source.split('_')[1] == 'all': query = ''' SELECT DISTINCT Level%(level)s_label FROM interpretome_ancestry.%(main_source)s_poplabels ORDER BY Level%(level)s_label ''' % {"level": level, "main_source": main_source} else: query = ''' SELECT DISTINCT Level%(level)s_label, Level2_label FROM interpretome_ancestry.%(main_source)s_poplabels WHERE Level1_label LIKE '%%%(sub_source)s%%' ORDER BY Level%(level)s_label ''' % {"main_source": main_source, "level":level, "sub_source": sub_source} cursor.execute(query) populations = [x.values()[0] if x.values()[0] != '' else x.values()[1] for x in cursor.fetchall()] params = {} params['snp_ids'] = [0]*len(loadings) params['reference_alleles'] = {} params['sample_ids'] = [] params['variances'] = variances pop_dict = {} pc1 = [0]*len(loadings) pc2 = [0]*len(loadings) for i, entry in enumerate(loadings): params['snp_ids'][i] = entry['rsid'] pc1[i] = entry['pc' + lab_pc1] pc2[i] = entry['pc' + lab_pc2] params['loadings'] = [pc1, pc2] projmat = array(params['loadings']) for entry in refs: params['reference_alleles'][entry['rsid']] = entry['ref'] for population in populations: pop_dict[population] = {} pop_dict[population]['name'] = population.replace('_', ' ') pop_dict[population]['color'] = get_random_color() pop_dict[population]['data'] = [] if (source == 'popres_all' and str(level) == "2"): pop_dict[population]['marker'] = {}; pop_dict[population]['marker']['symbol'] = "url(http://esquilax.stanford.edu/media/graphics/png/" + population.lower() +".png)"; snp_list = [int(x['rsid']) for x in loadings] for i, entry in enumerate(projections): params['sample_ids'].append(entry['sample_id']) pop = entry['population'] if pop == '': pop = entry['population_2'] pop_dict[pop]['data'].append([entry['pcp' + lab_pc1],entry['pcp' + lab_pc2]]) params['series'] = [] for population in populations: params['series'].append(pop_dict[population]) return http.HttpResponse(simplejson.dumps(params), mimetype = "application/json")
def get_pca_parameters(request): numsnps_request = helpers.check_int(request.GET.get('numsnps', None)) source_request = helpers.check_pca_source(request.GET.get('source', None)) level_request = helpers.check_int(request.GET.get('level', None)) x_request = helpers.check_int(request.GET.get('axis1', None)) y_request = helpers.check_int(request.GET.get('axis2', None)) if None in (numsnps_request, source_request, level_request, x_request, y_request): return http.HttpResponseBadRequest() numsnps = numsnps_request source = source_request cursor = connections['default'].dict_cursor() lab_pc1 = str(x_request) lab_pc2 = str(y_request) query = ''' SELECT rsid, pc%(pc1)s, pc%(pc2)s FROM interpretome_ancestry.loadings WHERE listcode="%(numsnps)s" AND pop="%(source)s" ''' % { "pc1": lab_pc1, "pc2": lab_pc2, "source": source, "numsnps": numsnps } cursor.execute(query) loadings = cursor.fetchall() main_source = source.split('_')[0] sub_source = source.split('_')[1] if source == 'hgdp_all': level = 1 else: level = level_request query = ''' SELECT sample_id, pcp%(pc1)s, pcp%(pc2)s, Level%(level)s_label AS population, Level2_label AS population_2 FROM interpretome_ancestry.projections JOIN interpretome_ancestry.%(main_source)s_poplabels ON (interpretome_ancestry.projections.sample_id = interpretome_ancestry.%(main_source)s_poplabels.id) WHERE listcode = "%(numsnps)s" and pop = "%(source)s" ORDER BY population ''' % { "pc1": lab_pc1, "pc2": lab_pc2, "source": source, "numsnps": numsnps, "main_source": main_source, "level": level } cursor.execute(query) projections = cursor.fetchall() query = ''' SELECT rsid, ref FROM interpretome_ancestry.%(main_source)s_snplist WHERE listcode = "%(numsnps)s" ''' % { "main_source": main_source, "numsnps": numsnps } cursor.execute(query) refs = cursor.fetchall() query = ''' SELECT pc%(pc1)s, pc%(pc2)s FROM interpretome_ancestry.explained_vars WHERE pop = '%(source)s' AND listcode = "%(numsnps)s" ''' % { "pc1": lab_pc1, "pc2": lab_pc2, "source": source, "numsnps": numsnps } cursor.execute(query) variances = cursor.fetchone() if source.split('_')[1] == 'all': query = ''' SELECT DISTINCT Level%(level)s_label FROM interpretome_ancestry.%(main_source)s_poplabels ORDER BY Level%(level)s_label ''' % { "level": level, "main_source": main_source } else: query = ''' SELECT DISTINCT Level%(level)s_label, Level2_label FROM interpretome_ancestry.%(main_source)s_poplabels WHERE Level1_label LIKE '%%%(sub_source)s%%' ORDER BY Level%(level)s_label ''' % { "main_source": main_source, "level": level, "sub_source": sub_source } cursor.execute(query) populations = [ x.values()[0] if x.values()[0] != '' else x.values()[1] for x in cursor.fetchall() ] params = {} params['snp_ids'] = [0] * len(loadings) params['reference_alleles'] = {} params['sample_ids'] = [] params['variances'] = variances pop_dict = {} pc1 = [0] * len(loadings) pc2 = [0] * len(loadings) for i, entry in enumerate(loadings): params['snp_ids'][i] = entry['rsid'] pc1[i] = entry['pc' + lab_pc1] pc2[i] = entry['pc' + lab_pc2] params['loadings'] = [pc1, pc2] projmat = array(params['loadings']) for entry in refs: params['reference_alleles'][entry['rsid']] = entry['ref'] for population in populations: pop_dict[population] = {} pop_dict[population]['name'] = population.replace('_', ' ') pop_dict[population]['color'] = get_random_color() pop_dict[population]['data'] = [] if (source == 'popres_all' and str(level) == "2"): pop_dict[population]['marker'] = {} pop_dict[population]['marker'][ 'symbol'] = "url(http://esquilax.stanford.edu/media/graphics/png/" + population.lower( ) + ".png)" snp_list = [int(x['rsid']) for x in loadings] for i, entry in enumerate(projections): params['sample_ids'].append(entry['sample_id']) pop = entry['population'] if pop == '': pop = entry['population_2'] pop_dict[pop]['data'].append( [entry['pcp' + lab_pc1], entry['pcp' + lab_pc2]]) params['series'] = [] for population in populations: params['series'].append(pop_dict[population]) return http.HttpResponse(simplejson.dumps(params), mimetype="application/json")
import game_util from functools import reduce import helpers print( "Welcome to this sketchy Python implementation of the card game Oh Hell.") num_players_str = input("Enter a number of players (2-10): ").strip() num_players = 0 while True: if helpers.check_int(num_players_str): num_players = int(num_players_str) if num_players >= 2 and num_players <= 10: break if num_players < 2: num_players_str = input( "There should be at least 2 players. Enter a number of players: " ) else: num_players_str = input( "More than 10 players is not recommended. Enter a different number of players: " ) else: num_players_str = input("Enter a valid number of players: ") game = game_util.Game(num_players) game.play()