def parse(self, fp, separator): con_names = [] con_bins = [] reader = CSVReader() for (cid, bid) in reader.readCSV(fp, separator): con_names.append(cid) con_bins.append(bid) return (con_names, con_bins)
def test_start_index_too_far(self): CSV_FORMAT = { 'START_ROW_INDEX': 10, 'QUESTION_COL_INDEX': 0, 'RESPONSE_COL_INDEX': 1, 'OPTIONS_COL_INDEXES': [1, 2, 3] } reader = CSVReader('contests.csv', CSV_FORMAT) contests = reader.get_contests() self.assertEqual(len(contests), 0)
def test_out_of_range(self): CSV_FORMAT = { 'START_ROW_INDEX': 1, 'QUESTION_COL_INDEX': 0, 'RESPONSE_COL_INDEX': 1, 'OPTIONS_COL_INDEXES': [1, 8] } reader = CSVReader('contests.csv', CSV_FORMAT) with self.assertRaises(Exception): contests = reader.get_contests() self.assertEqual(len(contests), 2)
def test_response_not_in_option(self): CSV_FORMAT = { 'START_ROW_INDEX': 1, 'QUESTION_COL_INDEX': 0, 'RESPONSE_COL_INDEX': 1, 'OPTIONS_COL_INDEXES': [2, 3] } reader = CSVReader('contests.csv', CSV_FORMAT) with self.assertRaises(Exception): contests = reader.get_contests() self.assertEqual(len(contests), 2)
def readOtuTable_(self, otu_file): """Parse singleM otu table""" reader = CSVReader() cols = None for l in reader.readCSV(otu_file, "\t"): if cols is None: cols = [l.index('read_names'), l.index('gene')] try: cols += [l.index('taxonomy')] except ValueError: pass continue yield tuple(l[i] for i in cols)
def test_include_headers(self): CSV_FORMAT = { 'START_ROW_INDEX': 0, 'QUESTION_COL_INDEX': 0, 'RESPONSE_COL_INDEX': 1, 'OPTIONS_COL_INDEXES': [1, 2, 3] } reader = CSVReader('contests.csv', CSV_FORMAT) contests = reader.get_contests() self.assertEqual(len(contests), 3) contest = contests[0] self.assertEqual(contest.title, 'Question') self.assertEqual(len(contest.options), 3) self.assertEqual(contest.options[1].title, 'option_1')
def test_default(self): CSV_FORMAT = { 'START_ROW_INDEX': 1, 'QUESTION_COL_INDEX': 0, 'RESPONSE_COL_INDEX': 1, 'OPTIONS_COL_INDEXES': [1, 2, 3] } reader = CSVReader('contests.csv', CSV_FORMAT) contests = reader.get_contests() self.assertEqual(len(contests), 2) contest = contests[0] self.assertEqual(contest.title, '1+1=?') self.assertEqual(len(contest.options), 3) self.assertEqual(contest.options[1].title, '3')
def test_other_question(self): CSV_FORMAT = { 'START_ROW_INDEX': 1, 'QUESTION_COL_INDEX': 1, 'RESPONSE_COL_INDEX': 1, 'OPTIONS_COL_INDEXES': [1, 3] } reader = CSVReader('contests.csv', CSV_FORMAT) contests = reader.get_contests() self.assertEqual(len(contests), 2) contest = contests[0] self.assertEqual(contest.title, '2') self.assertEqual(len(contest.options), 2) self.assertEqual(contest.options[1].title, '4')
def readTaxTable(self, otu_file): """Parse graftm taxonomy table""" reader = CSVReader() for (cname, taxstring) in reader.readCSV(otu_file, "\t"): # strip _(num)_(num)_(num) suffix parsed = cname for _ in range(3): parsed = parsed.rstrip('1234567890') if not parsed.endswith('_') or len(parsed) < 2: raise ValueError( 'Error encountered when parsing contig name: %s' % cname) parsed = parsed[:-1] yield (parsed, taxstring)
from settings import settings import time from models import Runner, Cache from utils import CSVReader, HttpClient http_client = HttpClient( settings.API_ENDPOINTS, settings.STREAMELEMENT_ACCOUNT_ID, settings.STREAMELEMENT_JWT_TOKEN, ) csv_reader = CSVReader(settings.FILENAME, settings.CSV_FORMAT) cache = Cache(settings.CACHE_SIZE) runner = Runner( csv_reader.get_contests(), cache, http_client, settings.CONTEST_MIN_BET, settings.CONTEST_MAX_BET, settings.CONTEST_DURATION_SECONDS, ) nb_seconds_to_bet = round(settings.CONTEST_DURATION_SECONDS * 0.75) nb_seconds_rest = settings.CONTEST_DURATION_SECONDS - nb_seconds_to_bet runner.refund_contests() while True: runner.next_contest()