Top

mlbgame.events module

Module that is used for getting the events that occured throughout games.

#!/usr/bin/env python

"""Module that is used for getting the events
that occured throughout games.
"""

import lxml.etree as etree

import mlbgame.data
import mlbgame.object


def __inning_info(inning, part):
    # info
    info = []
    # loop through the half
    half = inning.findall(part)[0]
    for y in half.findall('atbat'):
        atbat = {}
        # loop through and save info
        for i in y.attrib:
            atbat[i] = y.attrib[i]
        atbat['pitches'] = []
        for i in y.findall('pitch'):
            pitch = {}
            # loop through pitch info
            for n in i.attrib:
                pitch[n] = i.attrib[n]
            atbat['pitches'].append(pitch)
        info.append(atbat)
    return info


def game_events(game_id):
    """Return dictionary of events for a game with matching id."""
    # get data from data module
    data = mlbgame.data.get_game_events(game_id)
    # parse XML
    parsed = etree.parse(data)
    root = parsed.getroot()
    # empty output file
    output = {}
    # loop through innings
    innings = root.findall('inning')
    for x in innings:
        output[x.attrib['num']] = {
            'top': __inning_info(x, 'top'),
            'bottom': __inning_info(x, 'bottom')
        }
    return output


class Inning(object):
    """Class that holds at bats in an inning.

    Properties:
        bottom
        num
        top
    """

    def __init__(self, data, inning):
        """Creates an inning object that matches the corresponding
        info in `data`.

        `data` should be a dictionary of values.
        """
        self.num = int(inning)
        self.top = [AtBat(x) for x in data['top']]
        self.bottom = [AtBat(x) for x in data['bottom']]

    def nice_output(self):
        """Prints basic inning info in a nice way."""
        return 'Inning {0}'.format(self.num)

    def __str__(self):
        return self.nice_output()


class AtBat(object):
    """Class that holds information about at bats in games.

    Properties:
        away_team_runs
        b
        b1
        b2
        b3
        batter
        des
        des_es
        event
        event_es
        event_num
        home_team_runs
        num
        o
        pitcher
        pitches
        play_guid
        s
        start_tfs
        start_tfs_zulu
    """

    def __init__(self, data):
        """Creates an at bat object that matches the corresponding
        info in `data`.

        `data` should be a dictionary of values.
        """
        # loop through data
        for x in data:
            # create pitches list if attribute name is pitches
            if x == 'pitches':
                self.pitches = []
                for y in data[x]:
                    self.pitches.append(Pitch(y))
            else:
                # set information as correct data type
                mlbgame.object.setobjattr(self, x, data[x])

    def nice_output(self):
        """Prints basic at bat info in a nice way."""
        return self.des

    def __str__(self):
        return self.nice_output()


class Pitch(mlbgame.object.Object):
    """Class that holds information about individual pitches.

    Properties:
        des
        des_es
        pitch_type
        start_speed
        sv_id
        type
    """

    def nice_output(self):
        """Prints basic event info in a nice way."""
        return 'Pitch: {0} at {1}: {2}'.format(
            self.pitch_type, self.start_speed, self.des)

    def __str__(self):
        return self.nice_output()

Functions

def game_events(

game_id)

Return dictionary of events for a game with matching id.

def game_events(game_id):
    """Return dictionary of events for a game with matching id."""
    # get data from data module
    data = mlbgame.data.get_game_events(game_id)
    # parse XML
    parsed = etree.parse(data)
    root = parsed.getroot()
    # empty output file
    output = {}
    # loop through innings
    innings = root.findall('inning')
    for x in innings:
        output[x.attrib['num']] = {
            'top': __inning_info(x, 'top'),
            'bottom': __inning_info(x, 'bottom')
        }
    return output

Classes

class AtBat

Class that holds information about at bats in games.

Properties: away_team_runs b b1 b2 b3 batter des des_es event event_es event_num home_team_runs num o pitcher pitches play_guid s start_tfs start_tfs_zulu

class AtBat(object):
    """Class that holds information about at bats in games.

    Properties:
        away_team_runs
        b
        b1
        b2
        b3
        batter
        des
        des_es
        event
        event_es
        event_num
        home_team_runs
        num
        o
        pitcher
        pitches
        play_guid
        s
        start_tfs
        start_tfs_zulu
    """

    def __init__(self, data):
        """Creates an at bat object that matches the corresponding
        info in `data`.

        `data` should be a dictionary of values.
        """
        # loop through data
        for x in data:
            # create pitches list if attribute name is pitches
            if x == 'pitches':
                self.pitches = []
                for y in data[x]:
                    self.pitches.append(Pitch(y))
            else:
                # set information as correct data type
                mlbgame.object.setobjattr(self, x, data[x])

    def nice_output(self):
        """Prints basic at bat info in a nice way."""
        return self.des

    def __str__(self):
        return self.nice_output()

Ancestors (in MRO)

  • AtBat
  • __builtin__.object

Methods

def __init__(

self, data)

Creates an at bat object that matches the corresponding info in data.

data should be a dictionary of values.

def __init__(self, data):
    """Creates an at bat object that matches the corresponding
    info in `data`.
    `data` should be a dictionary of values.
    """
    # loop through data
    for x in data:
        # create pitches list if attribute name is pitches
        if x == 'pitches':
            self.pitches = []
            for y in data[x]:
                self.pitches.append(Pitch(y))
        else:
            # set information as correct data type
            mlbgame.object.setobjattr(self, x, data[x])

def nice_output(

self)

Prints basic at bat info in a nice way.

def nice_output(self):
    """Prints basic at bat info in a nice way."""
    return self.des

class Inning

Class that holds at bats in an inning.

Properties: bottom num top

class Inning(object):
    """Class that holds at bats in an inning.

    Properties:
        bottom
        num
        top
    """

    def __init__(self, data, inning):
        """Creates an inning object that matches the corresponding
        info in `data`.

        `data` should be a dictionary of values.
        """
        self.num = int(inning)
        self.top = [AtBat(x) for x in data['top']]
        self.bottom = [AtBat(x) for x in data['bottom']]

    def nice_output(self):
        """Prints basic inning info in a nice way."""
        return 'Inning {0}'.format(self.num)

    def __str__(self):
        return self.nice_output()

Ancestors (in MRO)

Instance variables

var bottom

var num

var top

Methods

def __init__(

self, data, inning)

Creates an inning object that matches the corresponding info in data.

data should be a dictionary of values.

def __init__(self, data, inning):
    """Creates an inning object that matches the corresponding
    info in `data`.
    `data` should be a dictionary of values.
    """
    self.num = int(inning)
    self.top = [AtBat(x) for x in data['top']]
    self.bottom = [AtBat(x) for x in data['bottom']]

def nice_output(

self)

Prints basic inning info in a nice way.

def nice_output(self):
    """Prints basic inning info in a nice way."""
    return 'Inning {0}'.format(self.num)

class Pitch

Class that holds information about individual pitches.

Properties: des des_es pitch_type start_speed sv_id type

class Pitch(mlbgame.object.Object):
    """Class that holds information about individual pitches.

    Properties:
        des
        des_es
        pitch_type
        start_speed
        sv_id
        type
    """

    def nice_output(self):
        """Prints basic event info in a nice way."""
        return 'Pitch: {0} at {1}: {2}'.format(
            self.pitch_type, self.start_speed, self.des)

    def __str__(self):
        return self.nice_output()

Ancestors (in MRO)

  • Pitch
  • mlbgame.object.Object
  • __builtin__.object

Methods

def __init__(

self, data)

Creates an object that matches the corresponding values in data.

data should be a dictionary of values.

def __init__(self, data):
    """Creates an object that matches the corresponding values in `data`.
    `data` should be a dictionary of values.
    """
    # loop through data
    for x in data:
        setobjattr(self, x, data[x])

def nice_output(

self)

Prints basic event info in a nice way.

def nice_output(self):
    """Prints basic event info in a nice way."""
    return 'Pitch: {0} at {1}: {2}'.format(
        self.pitch_type, self.start_speed, self.des)