====== Časovna omrežja / naloge ====== [[tq:time:proj|projekt]] Pred začetkom dela bi se rad pogovoril z izvajalcem posamezne naloge. Knjižnica TQ je še v razvoju. Najbrž bo doživela še različne spremembe. Poleg razširitev najbrž še preimenovanje funkcij po neki "standardni" shemi. Utegnejo se spremeniti tudi zvrsti argumentov - morda bodi vsi podatki o omrežju združeni v ustrezen nabor (tuple). * zadnja različica članka {{tq:pub:tempo30may14.pdf}}, {{tq:pub:tempo1.pdf|tempo22aug14}}. * zadnja različica knjižnice {{tq:zip:tq18aug14.zip}}. * časovna omrežja - podatki: {{tq:zip:sn5cn.zip}}, {{tq:zip:violence.zip}}, {{tq:zip:hospital.zip}}, {{tq:zip:terror.zip}}. ===== 1. Ianus ===== Naloga je obsežnejša in zahteva nekoga, ki zelo dobro obvlada slikovne vmesnike v Pythonu (enega od tkinter, Wx, Qt) in sam Python. Cilj naloge je priprava [[tq:ianus:gui|ogrodja]] programa **Ianus** - uporabniškega vmesnika (podobnega vmesniku v [[http://pajek.imfm.si|Pajku]]) za novo knjižnico TQ (temporal quantities), ki je v razvoju. Trenutno zmore že precej stvari. Naloga je odprta za izboljšave. V nadaljevanju bo potrebno dodati še marsikaj: * upravljanje s pomnilnikom * beleženje zgodovine, "štopanje" trajanja ukazov * možnost, da uporabnik kako stvar reši programsko * ali lahko uporabnik doda svoje ukaze v zapakirani Ianus? (prazne funkcije TQ.funcUser, knjižnica User, ...) * postopek pakiranja Ianusa v izvršljivo datoteko Ianus.exe - glej [[http://cx-freeze.sourceforge.net/|cx-freeze]] * i18n - internationalization ... (angleški, slovenski, kitajski vmesnik) ===== 2. Pretvorba podatkovij v časovna omrežja ===== Naloga ni preveč zahtevna. Razdeli se lahko tudi na več podnalog. Cilj naloge je ustvariti zbirko primerov časovnih omrežij v **Ianus**ovi obliki. Najenostavnejša pot do omrežij je pretvorba obstoječih podatkovij v časovna omrežja. Opis **Ianus**ove oblike in nekaj primerov že ustvarjenih omrežij je mogoče najti [[tq:ianus:form|tukaj]]. Tu je nekaj primerov podatkovij: * [[http://www.stats.ox.ac.uk/~snijders/siena/siena_datasets.htm|Siena]] * Tore Opsahl: [[http://toreopsahl.com/datasets/|Network 7]] * [[http://gdeltproject.org/|GDELT]] * World Trade [[http://cid.econ.ucdavis.edu/wix.html|WIX data]], [[http://www.rug.nl/research/ggdc/data/penn-world-table|Penn-world-table]] * migracije [[http://esa.un.org/unmigration/TIMSO2013/migrantstocks2013.htm|OZN]]; [[http://www.global-migration.info/|pics]]; [[http://emn.intrasoft-intl.com/html/info_exchange/third_party_databases.html|EU]]; [[http://dataverse.ucdavis.edu/dvn/dv/ssds/faces/study/StudyPage.xhtml?globalId=hdl:IGA/10116&studyListingIndex=0_a22d4ee3505e5a9e2502a0d602c4|US]]; [[http://www.irs.gov/uac/SOI-Tax-Stats-Migration-Data|data]]; [[http://www.census.gov/hhes/migration/data/|Census]]; [[http://nextcity.org/daily/entry/mapping-the-migration-flows-of-the-united-states|map]]; [[http://www.icpsr.umich.edu/icpsrweb/ICPSR/studies?q=migration&searchSource=find-analyze-home|icpsr]] * [[http://data.gov.uk/dataset/dft-eng-srn-routes-journey-times|potovalni časi]]; [[http://www-cta.ornl.gov/transnet/RailRoads.html|Železniško omrežje]] * vozni redi (letala, vlak, avtobusi, ...) * [[http://www.transtats.bts.gov/DL_SelectFields.asp?Table_ID=260|Letalske linije 1990-2014]] * Bicike(lj) - sposoja koles: [[https://archive.ics.uci.edu/ml/datasets/Bike+Sharing+Dataset|1]], [[http://www.capitalbikeshare.com/trip-history-data|2]], [[https://www.divvybikes.com/datachallenge|3]], [[http://www.researchgate.net/publication/259382357_Bike-Sharing_Dataset|4]], [[https://github.com/amansk/ga_ds_project/blob/master/Bike-Sharing-Dataset/day.csv|5]], [[http://www.citibikenyc.com/system-data|6]] Zaželjeno je, da se za izbrane vire napišejo programi, ki ustvarijo omrežja iz tekočih podatkov. Zanimivi sta tudi vprašanji: * preverjanje skladnosti/usklajenosti podatkov * naključno generiranje Možno je tudi nadaljevanje naloge v analizo ustvarjenega omrežja. Če bodo rezultati zanimivi, je mogoče razmišljati tudi o članku. ===== 3. Prikazi časovnih omrežij v Pythonu ===== Osnovna izvedba prikaza časovnih količin je že narejena v [[tq:time:draw|R-ju]]. Izdelati bi bilo potrebno podobno, po možnosti boljšo, podporo v Pythonu. Obstaja veliko prostora za izboljšave. ===== 4. Animacija časovnih omrežij ===== Časovna omrežja vsebujejo veliko količino podatkov. En od načinov, kako dobiti vtis o omrežju, je pregled v obliki filma. Cilj naloge je ustvariti tak pregledovalnik. Naloga se lahko razdeli na nekaj korakov: * pregled obstoječih rešitev: * [[http://www.stanford.edu/group/sonia/|Sonia]] * [[http://pajek.imfm.si/doku.php?id=faq:svganim|SVGanim]] * [[http://www.inf.uni-konstanz.de/algo/research/conflict/|Conflict networks]] * [[http://www.commetrix.de/|commetrix]] * prikazi časovnih omrežij; [[http://somelab.net/2012/11/how-to-create-a-network-animation-with-r-and-the-igraph-package/|R/i-graph]] * [[https://statnet.csde.washington.edu/trac/wiki/Sunbelt2014|Sunbelt 2014]]; [[http://statnet.csde.washington.edu/workshops/SUNBELT/current/ndtv/ndtv_workshop.pdf|ndtv]]; [[http://cran.r-project.org/web/packages/networkDynamicData/index.html|R]]; matrični prikaz? * http://kateto.net/2013/02/topics-in-mainstream-media-a-dynamic-network-visualization/ * ustvarjanje prikaza (layout) = omrežje + podatki za prikaz * predvajalnik prikazov * izvoz v različne oblike: SVG, Flash, MPEG [[http://www.soc.duke.edu/~jmoody77/ajs_online.pdf|Moody]]; [[https://code.google.com/p/dynnetwork/|Dynnetwork]]; [[http://visjs.org/|vis.js]]; [[http://d3js.org/|d3.js]]; [[http://vimeo.com/channels/networksinmotion|Vimeo]]; [[http://www.plosone.org/article/info:doi/10.1371/journal.pone.0023176#pone.0023176.s003|Plosone]]; [[http://www.computer.org/portal/web/computingnow/content?g=53319&type=article&urlTitle=graphdiaries%3A-animated-transitions-andtemporal-navigation-for-dynamic-networks&lf1=1681050613a808716094156e31901428|Graph diaries]] Netlogo: [[http://ccl.northwestern.edu/netlogo/models/GiantComponent|Giant Component]]; [[http://ccl.northwestern.edu/netlogo/models/PreferentialAttachment|Preferential Attachment]]; [[http://ccl.northwestern.edu/netlogo/models/SmallWorlds|Small Worlds]]; [[http://ccl.northwestern.edu/netlogo/models/DiffusiononaDirectedNetwork|Diffusion on a Directed Network]]; [[http://ccl.northwestern.edu/netlogo/models/VirusonaNetwork|Virus on a Network]]; [[http://modelingcommons.org/browse/one_model/4080#model_tabs_browse_info|Electrical Network]]; [[http://modelingcommons.org/browse/one_model/1731#model_tabs_browse_info|3D network]]; [[http://modelingcommons.org/browse/one_model/3670#model_tabs_browse_info|Bing net simulator]]; ===== 5. Izvedba knjižnice TQ v R-ju ===== Knjižnico TQ bi bilo dobro izvesti tudi v R-ju. S tem se odpre pot v statistične analize. Naloga zahteva dobro poznavanje programiranja v R-ju. Osnovni razmislek je poiskati učinkovito predstavitev časovnih omrežij v R-ju. Morda redke matrike? [[http://www.johnmyleswhite.com/notebook/2011/10/31/using-sparse-matrices-in-r/|Note]]; [[http://cran.r-project.org/web/packages/Matrix/index.html|Matrix]]; [[http://cran.r-project.org/web/packages/slam/|Slam]] Povezave z drugimi R-jevimi knjižnicami za analizo omrežij: [[http://cran.r-project.org/web/packages/igraph/index.html|i-graph]], [[http://www.bioconductor.org/packages/release/bioc/html/graph.html|graph]], [[http://erzuli.ss.uci.edu/R.stuff/|SNA]], [[http://statnet.org/|Statnet]] ===== 6. Učinkovita izvedba knjižnice TQ v jeziku Julia ===== Glej članek: Shah, V.B., Edelman, A., Karpinski, S., Bezanson, J., Kepner, J.: [[http://ieeexplore.ieee.org/xpl/abstractAuthors.jsp?arnumber=6670347|Novel algebras for advanced analytics in Julia]] ([[http://www.mit.edu/~kepner/pubs/JuliaSemiring_HPEC2013_Paper.pdf|PDF]]).\\ [[https://github.com/ViralBShah/SemiringAlgebra.jl|koda k članku]],\\ [[http://julialang.org/|Julia]],\\ [[http://arxiv.org/pdf/1209.5145v1.pdf|Julia - članek]]. Primerjaj časovno učinkovitost izvedbe v Julii s Pythonsko. ===== 7. Priročnik za knjižnico TQ ===== Pri programiranju knjižnice TQ ni bilo časa za sprotno pisanje dokumentacije. Dobro bi bilo vse procedure temeljito preizkusiti in napisati ustrezno dokumentacijo. [[tq:time:proj:test|Packaging, Documenting, Testing]]