def main():
    args = sys.argv

    print("Active countries with no delegates")
    out = no_delegates()

    print("Building page")
    build_results(out, args)
def main():

    ev1 = "444bf"
    ev2 = "555bf"

    args = sys.argv
    out = compare_results(ev1, ev2)

    build_results(out, args)
def main():

    args = sys.argv
    n = 0

    try:
        n = int(args[1])
    except:
        n = 1  # we assume n=1

    stat = get_comp_with_n_days(n)
    build_results(stat, args)
def main():
    """Usage: python3 most_common_missing_event.py n
	n is the number of missing events in a competition.
	Let's say n == 1, then we will look for competitions missing 1 event and we'll check the frequency of the missing event.
	"""

    args = sys.argv
    n = 0

    try:
        n = int(args[1])
    except:
        n = 1  # we assume n=1

    stat = missing_event(n)
    args = sys.argv
    build_results(stat, args)
def main():
    """Usage: python3 stat-3_days_competitions_with_few_events n
	"""

    args = sys.argv
    n = 0

    try:
        n = int(args[1])
    except:
        n = 3  # we assume n=1

    build = False
    for x in args:
        if "=" in x:
            var, value = x.split("=")
            if var == "page" and value == "true":
                build = True

    stat = get_comp_with_n_days(n)
    build_results(stat, args)
def main():

    out = get_far_comp()
    args = sys.argv

    build_results(out, args)
def main():

    args = sys.argv
    stat = avg_letter()
    build_results(stat, args)
def main():

    stat = avg_name_count()
    args = sys.argv
    build_results(stat, args)
def main():
    args = sys.argv
    out = dnf_streak()

    build_results(out, args)
예제 #10
0
def main():
    args = sys.argv

    stat = avg_competitions()
    build_results(stat, args)
예제 #11
0
def main():
    args = sys.argv
    out = largest_range_fmc()

    build_results(out, args)
def main():
	stat = common_id()
	args = sys.argv
	build_results(stat, args)
def main():
    stat = avg_events()
    args = sys.argv
    build_results(stat, args)
예제 #14
0
def main():
    print("Getting delegate list")
    delegates_list = get_delegates_list()

    delegates_id = []
    delegates_name = []
    delegates_country = []
    delegates_last_competition_date = []
    delegates_last_competition_name = []
    day_diff = []

    for delegate in delegates_list:
        wca_id = delegate["wca_id"]
        name = delegate["name"]

        country_id = delegate["country_iso2"]

        i = bisect_left(delegates_name, name)

        delegates_id.insert(i, wca_id)
        delegates_name.insert(i, name)
        delegates_country.insert(i, country_id)
        # Who cares with the position of None
        delegates_last_competition_date.append(None)
        delegates_last_competition_name.append(None)
        day_diff.append(float("inf"))

    today = datetime.date.today()

    competitions = pd.read_csv("WCA_export/WCA_export_Competitions.tsv",
                               sep="\t")
    for index, row in competitions.iterrows():
        competition, year, month, day, delegates = row[[
            "id", "year", "month", "day", "wcaDelegate"
        ]]

        competition_date = datetime.date(year, month, day)

        if competition_date > today:
            continue

        delegates = extract_delegate(delegates)

        for delegate in delegates:
            i = bisect_left(delegates_name, delegate)
            if i < len(delegates_name) and delegates_name[i] == delegate:
                if delegates_last_competition_date[
                        i] == None or competition_date > delegates_last_competition_date[
                            i]:
                    delegates_last_competition_date[i] = competition_date
                    delegates_last_competition_name[i] = competition
                    day_diff[i] = (today - competition_date).days

    out = {}
    out["title"] = "Last delegated competition in days"
    out["labels"] = [
        "#", "Days", "Delegate", "Country", "Continent", "Last competition"
    ]

    table = []

    prev = None
    pos = 1
    for days, wca_id, name, country, competition in sorted(
            zip(day_diff, delegates_id, delegates_name, delegates_country,
                delegates_last_competition_name))[::-1]:
        p = pos
        if days == prev:
            p = "-"
        if days != float("inf"):
            table.append([
                p, days,
                html_link_format(name, get_competitor_link(wca_id)),
                iso2_country_name(country),
                find_continent(iso2_country_name(country)),
                get_competition_html_link(competition)
            ])
            pos += 1
        prev = days

    out["table"] = table

    build_results(out, sys.argv)
예제 #15
0
def main():

    args = sys.argv
    stat = biggest_names()
    build_results(stat, args)
def main():
    args = sys.argv
    out = ratio_competitors_delegates()
    build_results(out, args)
def main():
    delegates_list = get_delegates_list()
    delegates = list(map(delegate_json_2_delegate, delegates_list))

    # Sort delegates by name
    delegates.sort(key=lambda x: x.name)

    # Ordered list of delegates names for binary search
    delegates_ordered_names = list(map(lambda x: x.name, delegates))

    today = date.today()

    competitions = pd.read_csv("WCA_export/WCA_export_Competitions.tsv",
                               sep="\t")
    for _, row in competitions.iterrows():
        id, year, month, day, delegates_string, latitude, longitude, city, country = row[
            [
                "id", "year", "month", "day", "wcaDelegate", "latitude",
                "longitude", "cityName", "countryId"
            ]]

        competition_date = date(year, month, day)
        if (today - competition_date).days > 365 or competition_date > today:
            continue

        # we exclude multiple countries competition
        # XA, XE...
        if len(country) == 2:
            continue

        # ideally, we would also avoid multiple cities competition, but this is not that feasible right now

        competition = Competition()
        competition.id = id
        competition.location = (latitude, longitude)
        competition.date = competition_date

        competition_delegates = extract_delegate(delegates_string)

        for delegate in competition_delegates:
            index = bisect_left(delegates_ordered_names, delegate)
            # competition's delegate is no longer a delegate
            if index == len(delegates_ordered_names
                            ) or delegates_ordered_names[index] != delegate:
                continue
            delegates[index].competition_list.append(competition)

    for delegate in delegates:

        # Sort competitions by date
        delegate.competition_list.sort()

        total_distance = 0
        for j in range(1, len(delegate.competition_list)):
            if delegate.competition_list[j].date < delegate.competition_list[
                    j - 1].date:
                raise "Not sorted"

            distance = delegate.competition_list[j].distance(
                delegate.competition_list[j - 1])
            total_distance += distance
        number_of_competitions = len(delegate.competition_list)

        # avoid / 0
        delegate.avg = total_distance / max(1, number_of_competitions - 1)

    # Sort delegates by distance
    delegates.sort(key=lambda x: x.avg)

    out = {}
    out["title"] = "Average distance by delegates in the past 365 days"
    out["labels"] = [
        "#", "Avg (km)", "Delegate", "Country", "Number of competitions"
    ]

    table = []

    prev = None
    pos = 1
    for delegate in delegates[::-1]:
        p = pos
        result = "%.2f" % delegate.avg
        if result == prev:
            p = "-"
        table.append([
            p, result,
            html_link_format(delegate.name, delegate.url), delegate.country,
            len(delegate.competition_list)
        ])
        pos += 1
        prev = result

    out["table"] = table
    out["explanation"] = "The Avg column is the average distance a delegate traveled from one competition to the next."

    build_results(out, sys.argv)
예제 #18
0
def main():
    args = sys.argv
    out = wen_points()

    build_results(out, args)
def main():
    args = sys.argv
    out = most_dnf_ratio()

    build_results(out, args)
예제 #20
0
def main():
    args = sys.argv
    out = sub30_fmc()

    build_results(out, args)