Пример #1
0
    def splitInterception(self, gameData):
        fname = sys._getframe().f_code.co_name
        self.logger.debug("\n{0}{1}()".format(self.ind, fname))

        changes = []

        mixposs = mixedpossession()
        for idr in range(len(gameData)):
            drivePlays = gameData[idr].plays
            for dp in range(len(drivePlays)):
                playData = drivePlays[dp]
                if playData.valid is not True:
                    continue
                if isinstance(playData.play, passingplay
                              ) and playData.play.pa.getKey("interception"):
                    self.logger.debug("{0}  Interception Play: {1}".format(
                        self.ind, playData.play.text))

                    newReturnPlay = returnplay(text=playData.play.text)
                    newReturnPlay.pa.passingplay = False
                    newReturnPlay.pa.touchdown = playData.play.pa.touchdown
                    newReturnPlay.pa.fumble = playData.play.pa.fumble
                    newReturnPlay.pa.runback = playData.play.pa.runback
                    newReturnPlay.pa.interception = False
                    playData.play.pa.touchdown = False
                    playData.play.pa.fumble = False
                    playData.play.pa.runback = False

                    playData = mixposs.determineInterception(
                        playData, drivePlays, dp)
                    newPossession = playpossession(start=None,
                                                   end=None,
                                                   text=playData.play.text)
                    try:
                        newPossession.start = self.copMap[
                            playData.possession.start]
                    except:
                        newPossession.start = playData.possession.setUnknownStart(
                        )
                    newPlayData = playsummary(possession=newPossession,
                                              start=playData.start.copy(),
                                              play=newReturnPlay,
                                              valid=playData.valid)
                    drivePlays.insert(dp + 1, newPlayData)

                    newReturnPlay.connectedPlays.append(playData)
                    playData.play.connectedPlays.append(newReturnPlay)

                    changes.append(idr)
                    break

        self.logger.debug("{0}Found {1} Drives With Splits in {2}()".format(
            self.ind, len(changes), fname))
        for idr in set(changes):
            self.dc.showDrive(gameData[idr], idr, "Drive {0}".format(idr))

        return gameData
Пример #2
0
    def splitTouchdown(self, gameData):
        fname = sys._getframe().f_code.co_name
        self.logger.debug("\n{0}{1}()".format(self.ind, fname))

        changes = []

        mixposs = mixedpossession()
        for idr in range(len(gameData)):
            drivePlays = gameData[idr].plays
            for dp in range(len(drivePlays)):
                playData = drivePlays[dp]
                if playData.valid is not True:
                    continue
                if playData.play.pa.getKey("touchdown") is True:

                    playData = mixposs.determineTouchdown(playData,
                                                          drivePlays,
                                                          dp,
                                                          debug=False)
                    if sum([isinstance(x.play, patplay)
                            for x in drivePlays]) > 0:
                        break
                    playData.play.pa.addPAT()
                    if playData.play.pa.getKey("addpat") is True:
                        self.logger.debug("{0}  Touchdown Play: {1}".format(
                            self.ind, playData.play.text))
                        playData.play.pa.addpat = False

                        ## Split Depends on Offense vs Defense PAT
                        if playData.play.pa.getKey("defpat"):
                            newPATPlay = patplay(text=playData.play.text)
                            newPATPlay.pa.touchdown = False
                            newPATPlay.pa.runback = playData.play.pa.runback
                            playData.play.pa.runback = False

                            newPossession = playpossession(
                                start=None, end=None, text=playData.play.text)
                            try:
                                newPossession.start = self.copMap[
                                    playData.possession.start]
                            except:
                                newPossession.start = playData.possession.setUnknownStart(
                                )

                            self.logger.debug(
                                "{0}This is a DEF PAT with POSS = {1}".format(
                                    self.ind, newPossession.start))
                            newPlayData = playsummary(
                                possession=newPossession,
                                start=playData.start.copy(),
                                play=newPATPlay,
                                valid=playData.valid)

                            newPATPlay.connectedPlays.append(playData)
                            playData.play.connectedPlays.append(newPATPlay)

                            drivePlays.insert(dp + 1, newPlayData)
                            changes.append(idr)
                        else:
                            newPATPlay = patplay(text=playData.play.text)
                            newPATPlay.pa.touchdown = False
                            newPATPlay.pa.runback = playData.play.pa.runback
                            playData.play.pa.runback = False

                            newPossession = playpossession(
                                start=None, end=None, text=playData.play.text)
                            newPossession.start = playData.possession.start

                            self.logger.debug(
                                "{0}This is a REGULAR PAT with POSS = {1}".
                                format(self.ind, newPossession.start))
                            newPlayData = playsummary(
                                possession=playData.possession,
                                start=playData.start.copy(),
                                play=newPATPlay,
                                valid=playData.valid)
                            drivePlays.insert(dp + 1, newPlayData)

                            newPATPlay.connectedPlays.append(playData)
                            playData.play.connectedPlays.append(newPATPlay)

                            changes.append(idr)
                        break

        self.logger.debug("{0}Found {1} Drives With Splits in {2}()".format(
            self.ind, len(changes), fname))
        for idr in set(changes):
            self.dc.showDrive(gameData[idr], idr, "Drive {0}".format(idr))

        return gameData
Пример #3
0
    def splitFumble(self, gameData):
        fname = sys._getframe().f_code.co_name
        self.logger.debug("\n{0}{1}()".format(self.ind, fname))

        changes = []

        mixposs = mixedpossession()
        for idr in range(len(gameData)):
            drivePlays = gameData[idr].plays
            for dp in range(len(drivePlays)):
                playData = drivePlays[dp]
                if playData.valid is not True:
                    continue
                if playData.play.pa.getKey("fumble") is True:
                    self.logger.debug("{0}  Fumble Play: {1}".format(
                        self.ind, playData.play.text))

                    lostFumble = True
                    try:
                        if playData.possession.start == drivePlays[
                                dp + 1].possession.start and drivePlays[
                                    dp + 1].valid is True:
                            lostFumble = False
                    except:
                        lostFumble = True

                    newReturnPlay = returnplay(text=playData.play.text)
                    newReturnPlay.pa.touchdown = playData.play.pa.touchdown
                    newReturnPlay.pa.fumble = False
                    newReturnPlay.pa.runback = playData.play.pa.runback
                    playData.play.pa.touchdown = False
                    playData.play.pa.runback = False
                    playData.play.pa.fumblereturn = False

                    playData = mixposs.determineFumble(playData,
                                                       drivePlays,
                                                       dp,
                                                       debug=False)
                    newPossession = playpossession(start=None,
                                                   end=None,
                                                   text=playData.play.text)

                    if playData.play.pa.getKey("forced") is not None:
                        self.logger.debug(
                            "{0}Using previous fumble data to set possession to {1}"
                            .format(self.ind, playData.play.pa.forced))
                        newPossession.start = playData.play.pa.forced
                        try:
                            playData.possession.start = self.copMap[
                                playData.possession.start]
                        except:
                            playData.possession.setPreviousStart()

                        playData.play.pa.forced = False
                    else:
                        self.logger.debug(
                            "{0}Result of a lost fumble is {1}".format(
                                self.ind, lostFumble))

                        if lostFumble:
                            try:
                                newPossession.start = self.copMap[
                                    playData.possession.start]
                            except:
                                newPossession.setPreviousStart()
                        else:
                            newPossession.start = playData.possession.start

                    self.logger.debug("{0}Fumble Old possession is {1}".format(
                        self.ind, playData.possession.start))
                    self.logger.debug("{0}Fumble New possession is {1}".format(
                        self.ind, newPossession.start))

                    changes.append(idr)
                    gameData[idr].plays[dp] = playData
                    if lostFumble:
                        newPlayData = playsummary(possession=newPossession,
                                                  start=playData.start.copy(),
                                                  play=newReturnPlay,
                                                  valid=playData.valid)

                        newReturnPlay.connectedPlays.append(playData)
                        playData.play.connectedPlays.append(newReturnPlay)

                        drivePlays.insert(dp + 1, newPlayData)
                        break

        self.logger.debug("{0}Found {1} Drives With Splits in {2}()".format(
            self.ind, len(changes), fname))
        for idr in set(changes):
            self.dc.showDrive(gameData[idr], idr, "Drive {0}".format(idr))

        return gameData
Пример #4
0
    def splitPunt(self, gameData):
        fname = sys._getframe().f_code.co_name
        self.logger.debug("\n{0}{1}()".format(self.ind, fname))

        changes = []

        mixposs = mixedpossession()
        for idr in range(len(gameData)):
            drivePlays = gameData[idr].plays
            for dp in range(len(drivePlays)):
                playData = drivePlays[dp]
                if playData.valid is not True:
                    continue
                if isinstance(playData.play, puntplay):
                    ## Ignore if there is a safety
                    if playData.play.pa.getKey("safety") is True:
                        continue

                    self.logger.debug("{0}  Punt Play: {1}".format(
                        self.ind, playData.play.text))
                    newReturnPlay = returnplay(text=playData.play.text)
                    newReturnPlay.pa.puntplay = False
                    newReturnPlay.pa.touchdown = playData.play.pa.touchdown
                    newReturnPlay.pa.fumble = playData.play.pa.fumble
                    newReturnPlay.pa.runback = playData.play.pa.runback
                    playData.play.pa.touchdown = False
                    playData.play.pa.fumble = False
                    playData.play.pa.runback = False

                    playData = mixposs.determinePunt(playData,
                                                     drivePlays,
                                                     dp,
                                                     debug=False)
                    newPossession = playpossession(start=None,
                                                   end=None,
                                                   text=playData.play.text)
                    newPossession.start = self.flipPossession(
                        playData.possession)
                    try:
                        newPossession.start = self.copMap[
                            playData.possession.start]
                    except:
                        newPossession.start = playData.possession.setUnknownStart(
                        )
                    newPlayData = playsummary(possession=newPossession,
                                              start=playData.start.copy(),
                                              play=newReturnPlay,
                                              valid=playData.valid)
                    drivePlays.insert(dp + 1, newPlayData)

                    newReturnPlay.connectedPlays.append(playData)
                    playData.play.connectedPlays.append(newReturnPlay)

                    changes.append(idr)

                    ## Check if the first play of the next drive is unknown
                    try:
                        if not gameData[idr +
                                        1].plays[0].possession.isKnownStart():
                            gameData[idr + 1].plays[
                                0].possession.start = newPossession.start
                    except:
                        pass
                    break

        self.logger.debug("{0}Found {1} Drives With Splits in {2}()".format(
            self.ind, len(changes), fname))
        for idr in set(changes):
            self.dc.showDrive(gameData[idr], idr, "Drive {0}".format(idr))

        return gameData