Lifehacking dla R. Przemyślenia i rozwiązania w temacie reprodukowalności analiz i organizacji pracy



Podobne dokumenty
Fragment wykładu z języka C ( )

Wstęp do Informatyki i Programowania Laboratorium: Lista 0 Środowisko programowania

Programy użytkowe (utilities)

Make jest programem komputerowym automatyzującym proces kompilacji programów, na które składa się wiele zależnych od siebie plików.

Open Source w służbie developerom

Kompilacja i scalanie programów w linii poleceń gcc i make

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Słowem wstępu. Część rodziny języków XSL. Standard: W3C XSLT razem XPath 1.0 XSLT Trwają prace nad XSLT 3.0

System plików warstwa logiczna

Java Podstawy. Michał Bereta

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

Instalacja serwera baz danych PostgreSQL ze źródeł i pierwsze uruchomienie

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Współpraca FDS z arkuszem kalkulacyjnym

Qmail radość listonosza. Autorzy: Bartosz Krupowski, Marcin Landoch IVFDS

PSK. Jak przygotować maszynę wirtualną? 1. Utworzenie maszyny wirtualnej

Tomasz Grześ. Systemy zarządzania treścią

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Projektowanie układów VLSI-ASIC techniką od ogółu do szczegółu (top-down) przy użyciu pakietu CADENCE

Opis spełnienia wymagań (PSBD)

Dokumentacja kompilacji źródeł aplikacji 1.0

Co zostanie wypisane na ekranie? (1)

Programowanie I

Instalacja pakietu SAS 9.3 Audit, Performance and Measurement na platformie Windows

S P I S T R E Ś C I. Instrukcja obsługi

Wykaz zmian w programie SysLoger

Wprowadzenie do biblioteki klas C++

Nadzorowanie stanu serwerów i ich wykorzystania przez użytkowników

System Zarządzania Dystrybucją

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Tom 6 Opis oprogramowania

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

KOŁO NAUKOWE INFORMATYKÓW SYSTEMY KONTROLI WERSJI CZ.1 16 XII 2009 OPRACOWAŁ: PRZEMYSŁAW PARDEL

Sposoby wykrywania i usuwania błędów. Tomasz Borzyszkowski

System kontroli wersji, system zarządzania kodem źródłowym

Wersjonowanie baz danych podczas developmentu. Liquibase. Piotr Pelczar.

Automatyzacja kompilacji. Automatyzacja kompilacji 1/40

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Migracja XL Business Intelligence do wersji

Zad. 5: Sterowanie robotem mobilnym

Partnerzy: Laboratorium 15

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Optymalizacja programów Open Source. Profilery wysokiego poziomu część 2. Krzysztof Lichota

Zad. 6: Sterowanie robotem mobilnym

Piotr Dwieczkowski. Code coverage. Mierzenie pokrycia kodu, teoria oraz praktyka w C/C++

Programowanie w C++ Wykład 10. Katarzyna Grzelak. 21 maja K.Grzelak (Wykład 10) Programowanie w C++ 1 / 21

Instytut Technik Innowacyjnych Semantyczna integracja danych - metody, technologie, przykłady, wyzwania

public: // interfejs private: // implementacja // składowe klasy protected: // póki nie będziemy dziedziczyć, // to pole nas nie interesuje

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Programowanie Systemów Wbudowanych

Pracownia Technik Obliczeniowych

SYSTEMY CZASU RZECZYWISTEGO (SCR)

Zawartość. Wstęp. Moduł Rozbiórki. Wstęp Instalacja Konfiguracja Uruchomienie i praca z raportem... 6

Uniwersytet Mikołaja Kopernika w Toruniu. Profilowanie ruchu sieciowego w systemie GNU/Linux

1.Wstęp. 2.Generowanie systemu w EDK

Tom 6 Opis oprogramowania

Facelets ViewHandler

GIT. System Kontroli wersji GIT. Rafał Kalinowski

Mirror Tool.

VinCent v.1.40 zmiany w programie

System kontroli wersji git

WPROWADZENIE DO INFORMATYKI

Delphi podstawy programowania. Środowisko Delphi

użytkownika 1 Jak wybrać temat pracy 2 Spis treści 3 Część pierwsza problematyka 4 Część druga stosowane metody 5 Część trzecia propozycja rozwiązania

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 8. Karol Tarnowski A-1 p.

System kontroli wersji - wprowadzenie. Rzeszów,2 XII 2010

Automatyczna klasyfikacja zespołów QRS

1. Operacje na plikach i katalogach Chcąc przeprowadzić analizę danych należy załadować/wczytać dane do R, a wyniki z pewnością chcemy zapisać.

1. Operacje na plikach i katalogach Chcąc przeprowadzić analizę danych należy załadować/wczytać dane do R, a wyniki z pewnością chcemy zapisać.

Kurs programowania. Wykład 7. Wojciech Macyna. 25 kwietnia 2017

Liczby losowe i pętla while w języku Python

Podstawy Informatyki Języki programowania c.d.

Praktyka programowania projekt

Biblioteka Sweave w akcji, czyli jak pozytywnie zaskoczyc szefa albo (niekoniecznie pozytywnie) studentow. czas zabierze: Przemysław Biecek

Zapisywanie algorytmów w języku programowania

Komendy Ubuntu MARCEL GAŃCZARCZYK 2T I 1

SYSTEMY OPERACYJNE ĆWICZENIE POLECENIA SYSTEMU MSDOS

SAS Institute TECHNICAL SUPPORT )

Moduł 1 Pliki i foldery

GNU Octave (w skrócie Octave) to rozbudowany program do analizy numerycznej.

Migracja Business Intelligence do wersji

Zadanie programistyczne nr 3 z Sieci komputerowych

MDW. (Moduł Dystrybucji Wysyłek) (Moduł Magento) v Strona 1 z 11

Programy pomocnicze: diff, make, systemy rcs i cvs, debugger. Zarządzanie wersjami.

Języki Programowania. Kompilatory Fortranu. Wojciech Sobieski

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Celem tego projektu jest stworzenie

Wyrażenie include(sciezka_do_pliku) pozwala na załadowanie (wnętrza) pliku do skryptu php. Plik ten może zawierać wszystko, co może się znaleźć w

Wiersz poleceń Windows

I.1.1. Technik analityk 311[02]

Metryki. Narzędzia do pomiaru złożoności modułowej i międzymodułowej oprogramowania. autor: Zofia Kruczkiewicz

ECDL Advanced Moduł AM4 Arkusze kalkulacyjne Syllabus, wersja 2.0

Podstawy Informatyki Wprowadzenie do języka C dr inż. Jarosław Bułat

Programowanie i techniki algorytmiczne

MAMP Mac + Apache + MySQL + PHP. Kraków 8 czerwca 2009, Adam Strzelecki,

Transkrypt:

Przemyślenia i rozwiązania w temacie reprodukowalności analiz i organizacji pracy Michał Bojanowski m.bojanowski@uw.edu.pl www.bojanorama.pl ICM, Uniwersytet Warszawski Spotkania Entuzjastów R 27 luty, 2014

Wikipedia głosi Lifehack [ang. life życie, hack orig. ciąć, też kombinować ] to ogólna nazwa sposobów i trików używanych do ułatwiania sobie życia. Cel: Jak ułatwić sobie życie pracując z R?... w pewnych sytuacjach...

1 Kontekst i problem 2 Potrzeby 3 Istniejące rozwiązania 4 Alternatywne rozwiązanie 5 Podsumowanie

Kontekst Mamy różne źródła danych (pliki, bazy danych, web scrapping) Efektem końcowym ma być raport (tekst lub prezentacja) Analizy średniej skali Bardziej złożona niż jeden skrypt Być może nie Big Data In statu nascendi Względnie dużo czyszczenia i sprawdzania spójności danych Eksperymentowanie z analizami i wizualizacjami (EDA)

Problem/zadanie: reprodukowalne analizy Reprodukowalne analizy (reproducible research), co to jest i po co? Reprodukowalne przejście od danych surowych do raportu Wykonywane bez konieczności ręcznych interwencji Umożliwiają generowanie raportu nawet gdy zmieniają się kod, dane lub założenia Ręczne przeklejanie wyników do raportu pracochłonne i błędorodne. Dokumentacja procesu analitycznego Trustworthy software (Chambers 2008). Analizowanie danych to dziś pisanie software u.

Pożądane własności rozwiązania Wersjonowanie plików Śledzenie zmian. Nieinteraktywne wykonywanie skryptów Wygenerowanie raportu nie powinno wymagać za każdym razem jakiś ręcznych interwencji. Caching rezultatów Nie chcemy wykonywać analiz, dla których kod źródłowy i dane się nie zmieniły. Dokumentowanie analiz Dobrze by było trzymać dokumentację i kod razem. Obliczenia równoległe Szybciej! Prostota Nie potrzebujemy dodatkowego systemu do zarządzania i debugowania.

Istniejące rozwiązania Wersjonowanie plików Git, Subversion, etc. Nieinteraktywnie Tryb wsadowy: R CMD BATCH, Rscript, r Dokumentowanie analiz Literate programming m.in. Sweave, knitr (knitr::spin!), brew Caching rezultatów cachesweave, stashr, knitr Pakiet projecttemplate organizuje cały projekt w foldery (dane, skrypty, logi, etc.). Raczej sztywna konstrukcja. Klon GNU make? A może GNU make po prostu?

GNU Make Co to jest GNU make 1 : Narzędzie do kompilowania programów Automatycznie określa, które fragmenty większego programu powinny być skompilowane jeszcze raz Wymaga opisania zależności pomiędzy plikami (źródła i efekty kompilacji) oraz komand niezbędnych do kompilacji. Plik Makefile. Może wykonywać operacje równolegle (make -j). Można używać w innych kontekstach, w których np. przetwarzamy jakąś kolekcję plików źródłowych (dane, skrypty, etc.) 1 www.gnu.org/software/make

Zawartość Makefile Makefile przede wszystkim zawiera reguły postaci target: prerequisite1 prerequistie2.. recipe Przykład dla R: wykres.pdf: skrypt.r dane1.dat dane2.dat R CMD BATCH skrypt.r

Nieoczywistości Podzielenie analiz na moduły (podkatalogi)? make może działać rekursywnie, ale jest to nieefektywne (Miller 1997) pod względem obliczeń równoległych (make -j). Jednym skryptem R często generujemy wiele innych plików (np, wykresów) make zakłada, że jednym przepisem generujemy jeden plik wynikowy ( target ). Bynajmniej sprawy nie załatwia reguła typu: target1 target2: skrypt dane

GNU make z R Jak użyć GNU make efektywnie z R? Istniejące rozwiązania/szablony Rob J. Hyndman (autor m.in. forecast) 2 Bardzo proste Nie śledzi wszystkich targetów Bazuje na plikach.rout make może się nie zatrzymać w przypadku błędów w skryptach R. Pierre Lindenbaum 3 R jako główna powłoka make Wymaga pisania kodu R wewnątrz Makefile niezbyt wygodne. Raczej proof of concept. 2 http://robjhyndman.com/hyndsight/makefiles/ 3 http: //plindenbaum.blogspot.com/2014/01/parallelizing-rstats-using-make.html

Triki GNU make z R: modułowość bez rekursywności Podkatalogi zawierają module.mk czytany przez Makefile. +- Makefile +- dir1 +- module.mk +- skrypt1.r +- dane.dat +- dir2 +- module.mk

Triki GNU make z R: modułowość bez rekursywności ### Makefile # Puste! FILES:= include dir1/module.mk include dir2/module.mk.phony: default default: $(FILES) ### dir1/module.mk # katalog modulu local_dir:=dir1 # lokalne targety local_files:=wykres1.pdf wykres2.pdf # tutaj pełne ścieżki wzg Makefile dir1/wykres1.pdf: dir1/skrypt1.r (cd dir1 && RCMD BATCH skrypt1.r) # dopisanie tgt do FILES FILES+=$(addprefix $(local_dir)/, $(local_files))

Triki GNU make z R: wiele targetów Przykładowo w module.mk (nazwy plików powinny być ze ścieżkami relatywnie do Makefile): skrypt.res: skrypt.r dane.dat R CMD BATCH skrypt.r && tar cf wykres.pdf # generuje wykresy wykres1.pdf wykres2.pdf: skrypt.res tar xf skrypt.res -m

Podsumowanie R + knitr + GNU make jest super! Zapewnienie poprawnego działania równoległego (bez rekursywności) wymaga pilnowania ścieżek w regułach i przepisach. Pomysły: Odczytywanie targetów ze skryptu (np. składnia Roxygen?) Szersza wersja tej prezentacji niebawem na blogu Brokering Closure bc.bojanorama.pl!