Aloitetaan nämä uudet jutut jalkapalloanalysoinnin parista ja tarkemmin MyVideoanalyserin käyttöstä tai oikeastaan sen helpottamisesta.

MyVideoanalyser on hintalaatusuhteeltaan monipuolinen analysointisovellus, jossa on paljon hyviä ominaisuuksia, jotka helpottavat analyysin tekemistä. Kuitenkaan oletuksena sinun ei ole mahdollista antaa koordinaattitietoja tapahtumiin, joista MyVideoanalyserissa puhutaan highlighteina. Tässä artikkelissa kerron miten koordinaattitiedot voidaan lisätä tapahtumiin.

Yksinkertaisuudessaan koordinaatit saadaan lisättyä tekemällä painikkeita x -määrä, jotka sijoitetaan siten, että saadaan riittävä tarkkuus koordinaatistoon. Työlästä tässä on se, että mitä enemmän painikkeita on sitä enemmän joutuu näkemään vaivaa halutun lopputuloksen aikaansaamiseksi. Tämä myös tarkoittaa sitä, että joutuu uudelleen nimeämään painikkeita ja siirtämään oikeisiin kohtiin ja niin edelleen. Eli lyhyesti työlästä.

Lähdin tutkimaan MyVideoanalyserin highlights scheme pohjaa tarkammin. Tutkin miten kyseinen tiedosto on rakennettu ja miten se toimii yksinkertaisuudessaan. Kävi ilmi, että kyseinen tiedosto on periaatteessa JSON tiedosto, joka voidaan hyvin generoida esimerkiksi Pythonin avulla. Tällöin pienellä koodaamisella on mahdollista saada helposti painikkeet 105 x 68 kokoiselle jalkapallokentälle. Mikäli tekisit tämän käsityönä, sinun tulisi lisätä, nimetä ja sijoittaa yhteensä 7 140 painiketta. Itse totesin, että on helpompaa tehdä koodi, joka tuottaa halutun lopputuloksen.

Analyysipohja näyttää tekstieditoriin avattuna seuraavalta

Oikeastaan Python koodin hyödyntämisen ainut huonopuoli on se, että tiedosto koko kasvaa helposti melko isoksi. Tosin en ole MyVideoanalyserin analyysipohja editorin avulla tehnyt vastaavaa, niin suoraa vertauskohtaa tiedostokoon hallintaan ei minulla ole.

Kun analyysipohjan rakenne oli selvää, niin varsinaisen Python koodin kirjoittaminen oli helppoa. Lisäsin vielä koodiin Toggle-painikkeen, jotta samaa koordinaattien syöttöpohjaa voidaan käyttää esimerkiksi syötön lähtöpisteen ja kohdepisteen määrittelyyn.

Python koodia

Aloitin koodin määrittelemmällä muutaman muuttujan, jotta tiedoston luonti olisi mahdollisimman helppoa.

file_name2 = "MyMadeFile.MyVAhighlightscheme"

x_count = 106
y_count = 69
button_size = 5
i = 1

add_coord = ""
content = ""
content += '{"buttons":{'
buttons = []
triggers = []
y_button_i = 0
y_buttons = []

Kun alun muuttujat oli määritelty olikin järkevää luoda Toggle-painike kohdepisteen määrittelemiseksi. Kyseisen painikkeen halusin sijoittaa koordinaattipainikkeiden alle ja nimetä sen nimellä TO.

togle_x = 10
togle_y = y_count * button_size + 20
buttons.append('"0":{"alignment":4,"x":' + str(
    togle_x) + ',"type":"Toggle","bold":false,"beforeClickTime":0,"highlightLinks":[],"backgroundImage":"","height":25,"italic":false,"backgroundColor":"FF5959","strokeColor":"000000","restartAfterTime":false,"afterClickTime":0,"hotKey":"","onlyAcceptLinkedEvents":false,"nameOpacity":1,"triggerEventOrder":1,"enableAfterClickTime":false,"displayStroke":true,"y":' + str(
    togle_y) + ',"allowChangeState":2,"rotation":0,"strokeOpacity":1,"nameColor":"000000","strikethrough":false,"liveComment":false,"displayHotkey":true,"width":150,"lockPosition":false,"underline":false,"backgroundOpacity":1,"nameSize":12,"eventLinkBehaviour":100,"triggerEvent":0,"displayName":true,"name":"TO"')

Tämän jälkeen olikin tarpeen lisätä varsinaiset koordinaatti painikkeet. Toteutin sen niin, että loin x -koordinaatin kertovista painikkeista muuttujien x_count sekä y_count kokoisen alueen. Kun mitä tahansa x -koordinaattia kuvaavaa painiketta painetaa, aktivoidaan samalla tämän alueen oikealla puolella oleva kyseisen y -koordinaatin kuvaava painike.

Toki olisi ollut mahdollista nimetä tuo x -koordinaattia kuvaava painike siten, että siihen itseensä olisi sisällytetty myös y -koordinaatti, mutta tapahtumien lisämääreiden syöttämisen jälkeen varsinaisen määrällisen analyysin tekemiseen ajattelin valitun olevan helpompi ratkaisu. Tällöin minun ei tarvitse parsia MyVideoanalyserista tuotavaa timeline JSON -tiedostoa koordinaattien osalta niin paljoa.

Koska MyVideoanalyserissa ei ole lisämääreiden osalta käytettävissä erillistä kategoriaa, olen itse käyttänyt lisämääreiden nimeämisessä seuraavaa tapaa: kategoria:arvo. Tällöin jokaisen lisämääreen name -kentän arvona on kategorian_nimi:painikkeen_arvo. Tällöin pystyn jälkityöstössä erottelemaan eri kategorioiden arvoja ja näin visualisoimaan tai tilastoimaan eri tapahtumia. Eli erotan lisämääreen nimessä kategorian ja arvon : -merkillä.

for y in np.arange(0, y_count, 1):
    y_buttons.append(i)
    y_button_i = i
    y_coord = y_count * button_size - y * button_size
    x_coord = x_count * button_size + 30
    buttons.append('"' + str(i) + '":{"beforeClickTime":0,"nameColor":"000000","name":"y' + add_coord + ':' + str(
        y) + '","nameOpacity":1,"y":' + str(y_coord) + ',"height":' + str(
        button_size) + ',"enableAfterClickTime":false,"strokeColor":"000000","onlyAcceptLinkedEvents":false,"nameSize":8,"rotation":0,"triggerEvent":0,"hotKey":"","bold":false,"triggerEventOrder":1,"displayStroke":false,"allowChangeState":2,"displayName":false,"strikethrough":false,"alignment":4,"afterClickTime":0,"highlightLinks":[],"backgroundOpacity":0,"lockPosition":false,"restartAfterTime":false,"backgroundColor":"00FA00","backgroundImage":"","eventLinkBehaviour":100,"width":' + str(
        button_size) + ',"underline":false,"x":' + str(
        x_coord) + ',"type":"Event","displayHotkey":false,"italic":false,"liveComment":false,"strokeOpacity":1,"alternateStates":[{"index":0,"buttonIndexes":[0],"name":"y' + add_coord + '2:' + str(
        y) + '"}]')
    i += 1
    for x in np.arange(0, x_count, 1):
        y_coord = y_count * button_size - y * button_size
        x_coord = 10 + x * button_size
        buttons.append('"' + str(i) + '":{"beforeClickTime":0,"nameColor":"000000","name":"x' + add_coord + ':' + str(
            x) + '","nameOpacity":1,"y":' + str(y_coord) + ',"height":' + str(
            button_size) + ',"enableAfterClickTime":false,"strokeColor":"000000","onlyAcceptLinkedEvents":false,"nameSize":8,"rotation":0,"triggerEvent":0,"hotKey":"","bold":false,"triggerEventOrder":1,"displayStroke":false,"allowChangeState":2,"displayName":false,"strikethrough":false,"alignment":4,"afterClickTime":0,"highlightLinks":[],"backgroundOpacity":0,"lockPosition":false,"restartAfterTime":false,"backgroundColor":"00FA00","backgroundImage":"","eventLinkBehaviour":100,"width":' + str(
            button_size) + ',"underline":false,"x":' + str(
            x_coord) + ',"type":"Event","displayHotkey":false,"italic":false,"liveComment":false,"strokeOpacity":1,"alternateStates":[{"index":0,"buttonIndexes":[0],"name":"x' + add_coord + '2:' + str(
            x) + '"}]')
        triggers.append('{"order":0,"type":1,"triggered":' + str(y_button_i) + ',"action":1,"trigger":' + str(
            i) + ',"orderIndex":1}')
        i += 1

Nyt onkin varsinaiset painikkeet luotu ja viimeisenä vaiheena Python koodissa on itse tiedoston luominen ja tallentaminen.

content += "},".join(buttons) + "}}"

# Add version and application information
content += ',"version":{"platform":{"name":"macOS","version":"Version 11.0.1 (Build 20B50)"},"application":{"name":"MyVideoAnalyser","version":"2.0.1 (201)"}}'

# Add triggers
content += ',"triggers":['
content += ",".join(triggers) + ']}'

f = open(file_name2, "w")
f.write(content)
f.close()

Nyt analyysipohja koordinaattien syöttämistä varten olisi lähes valmis. Vielä vaaditaan pientä viilaamista itse MyVideoanalyserin highlightscheme editorissa, mikäli haluaa lisätä pohjaan jalkapallokenttää tai muota painikkeita.

Valmis analyysipohja

Kun tiedosto on valmis, niin viimeistelyä varten se tulee avata vielä MyVideoanalyseriin.

Lisäsin itse tuohon Python -koodilla luotuun tiedostoon vain jalkapallokenttää kuvaavan kuvan x -koordinaattia kuvaavien painikkeiden taakse ja tallensin tuon.

Jalkapallokenttä lisätty x -koordinaatteja kuvaavien painikkeiden taustalle.

Näin analyysipohja koordinaattien syöttämistä varten on valmis. Tämän jälkeen ei tarvitse muuta kuin käyttää ja lisätä tapahtumiin esimerkiksi laukausten lähtöpaikka. Kun olet saanut koordinaatit lisättyä tapahtumiin, niin näiden tietojen visualisoimiseen sitten voi käyttää myös Pythonia ja voi saada lopputuloksesi esimerkiksi seuraavia kuvaajia.

Mikäli koet tällaiset kirjoitukset tarpeelliseksi, niin laita ihmeessä viestiä. Ehdota myös aiheita, joista haluaisit lukea, niin katsotaan kirjoittelisinko jonkun artikkelin siitä.

Ei muuta kuin tsemppiä pelien analysointiin ja toivottavasti sait tästä uusia ideoita omaan analyysityöskentelyysi.