├── environment.yml # plik do inicjalizacji środowiska 'conda'
├── production # katalog ze skryptami do produkcji danych
│ ├── combined # dane z dyskusji (nie)ustrukturyzowanych łącznie
│ │ ├── data
│ │ └── make_combined_groups.py
│ ├── freeform # dyskusje nieustrukturyzowane
│ │ ├── data # katalog z danymi wejściowymi i wyjściowymi
│ │ ├── make_group_data.py
│ │ ├── make_pairwise_data.py
│ │ └── make_user_data.py
│ └── structured # dyskusje ustrukturyzowane
│ ├── data # katalog z danymi wejściowymi i wyjściowymi
│ ├── make_group_data.py
│ ├── make_pairwise_data.py
│ └── make_user_data.py
├── README.md
├── Rmd # notebooki R-owe z analizami
├── setup.py # konfiguracja instalacji pakietu 'tt'
└── tt # generyczna logika wykorzystywana przez skrypty
├── dataloader.py
├── __init__.py
├── metrics.py
├── uniseq.py
└── validator.py
Jedyne, o co trzeba zabać na samym początku, to przygotowanie, najlepiej izolowanego, środowiska z Pythonem w wersji 3.11+. Niższe wersje też pewnie zadziałają, ale nie daję gwarancji.
Najłatwiej cel ten zrealizować, gdy mamy dostęp do dystrybucji conda
.
Wówczas (oczywiście po sklonowaniu repozytorium), wystarczy zrobić:
conda env create -f environment.yml
Następnie trzeba zainstalować pakiet tt
, który implementuje generyczną
logiką wykorzystywaną przez skrypty do produkcji danych. W trakcie
instalacji pakietu instalowane są również wszystkie zależności, więc nie
trzeba się o nie martwić.
pip install --editable .
# Instaluje w trybie edytowalnym w razie gdyby była potrzeba
# zmienić coś w kodzie źródłowym w trakcie pracy
Skrypty żyjące w podkatalogach production/**
mają dość opisowe nazwy,
więc nie będę się tu nad nimi rozwodził indywidualnie. Dość wiedzieć,
że napisane są jako "standalone" skrypty Pythonowe, które można odpalić
z dowolnego miejsca. Np.:
python production/structured/make_group_data.py
Po więcej wyjaśnień na temat danych, to tak naprawdę odsyłam do Karoliny, bo ja w tym momencie raczej nie wiem więcej niż ona.
Większość kolumn, które pojawiają się w generowawnych plikach jest
zdefiniowana jako metody-attrybuty (tzw. properties) na klasie Metrics
w tt/metrics.py
. Niestety nie są one za bardzo udokumentowane,
więc dojście do dokładnego znaczenia danej metryki może wymagać
postudiowania kodu źródłowego.
Dane wejściowe są synchronizowane przez GIT-a
(więc będą od razu dostępne po sklonwaniu repozytorium)
i znajdują się w katalogach produkcyjnych w podkatalogach data/raw
oraz data/meta
. Dane wyjściowe generowane przez skrypty nie są domyślnie
synchronizowane.
Tak długo, jak nowe pliki danych będą miały dokładnie taką samą strukturę,
jak te, które są obecnie w repozytorium w podkatalogach data/raw
,
tak długo kod powinien działać poprawnie.
Trzeba pamietać żeby każdy nowy plik danych rejestrować w słowniku w
data/meta
. Nie zarejestrowane pliki danych powoduja "BUM" :-)
UWAGA. Cały software pisałem z założeniem, że nie będzie on później używany, przez co architektura jest zdecydowanie nieoptymalna i wprowadzanie zmian do logiki może nie być takie proste (ale na pewno jest możliwe). [Sz.T]