def predict(modelname, datasourcetype, datefrom, dateto): date_from = date_utils.try_parse(datefrom) date_to = date_utils.try_parse(dateto) if not date_from: logger.error('Error parse date.') raise BadRequest if not date_to: logger.error('Error parse date.') raise BadRequest try: ds = DataService(data_source_factory=DataSourceFactory(app.config)) X, Y, metadata = \ ds.get_data( data_source_type=datasourcetype, filter={"game_date": {"$gte": date_from, "$lt": date_to}}) if not X: return jsonify(data=None) ps = PredictionService( model_storage=AzureBlobStorage( app.config['AZURE_STORAGE_NAME'], app.config['AZURE_STORAGE_KEY'], 'deepsportmodels')) predictions = ps.predict(X=X, model_name=modelname) return jsonify(data=[{'gameDate': str(pd[1]['game_date'].date()), 'team1Name': pd[1]['team1_name'], 'team2Name': pd[1]['team2_name'], 'winProba': pd[0][1] * 100} for pd in zip(predictions, metadata)]) except: logger.error("%s: Unexpected error: %s" % (__name__, sys.exc_info())) raise InternalServerError
} if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--df') parser.add_argument('--dt') parser.add_argument('--st') parser.add_argument('--bu') parser.add_argument('--tss') parser.add_argument('--gs') parser.add_argument('--f') args = parser.parse_args() date_from = date_utils.try_parse(args.df) date_to = date_utils.try_parse(args.dt) source_type = args.st team_stat_season = args.tss games_season = args.gs csv_filename = args.f base_url = args.bu ds = SportReferenceDataSource( base_url=base_url, team_stat_season=team_stat_season, games_season=games_season, game_type=source_type, row_parse_strategy=__source_type_map[source_type], cache_team_stats=True) X, Y, metadata = ds.load(dict(date_from=date_from, date_to=date_to))