Zadanie domowe 3 (multiprocessing)

Wstecz; Ostatnia modyfikacja: 21.05.2015
Napisz trzy programy, które dla zbioru przynajmniej 5 wybranych bakterii (w tym jednej bakterii referencyjnej) wykonują:
  • make_dbs_multi.py - przygotowuje bazy danych BLAST
  • run_blast_multi.py - uruchamia obliczenia programem blastp, wyszukując sekwencje genów kodujących białka z bakterii referencyjnej w bazach danych BLAST przygotowanych dla pozostałych bakterii.
  • combine_results_multi.py - dla każdego genu, który był zapytaniem BLAST wyznacza liczbę bakterii, w których znajduje się wysoce podobna sekwencja. Przyjmij próg e-value jako $10^{-10}$, oraz PID (percent of identity) jako 50%
Sugerowana organizacja plików i folderów:
  • bacteria.txt - plik z listą nazw bakterii
  • genomes/ - folder z sekwencjami FASTA dla bakterii
  • dbs/ - folder z bazami danych FASTA (wygenorowanymi przez makedbs_multi.py
  • blasts/ - folder z outputem BLASTa
  • results.csv - plik wynikami zbiorczymi
Plik z wynikami zbiorczymi powinien być w formacie CVS (Comma Separated Values), gdzie kolejne kolumny oznaczają: (i) identyfikator genu w bakterii referencyjnej; (ii) długość genu w bakterii referencyjnej; (iii) liczbę bakterii w których dany gen ma sekwencję podobną.

Wszystkie powyższe kroki powinny być wykonane przy wykorzystaniu biblioteki multiprocessing. Dodatkowy punkt jest za przetestowanie czasów działania i przygotowanie pliku porównującego działanie programu run_blast_multi.py, uruchomionego na k procesorach.

Do testów może przydać się komenda zabijająca wszystkie procesy z multi w nazwie, np.:
kill -9 `ps x | grep multi | awk '{print $1}'`
Do zdobycia jest 7p (1p+2p+3p [3 programy]) + 1p (punkt bonusowy za porównanie czasów działania).

Rozwiązanie (kod oraz spakowane sekwencje wejściowe bakterii) wyślij poprzez platformę moodle.mimuw.edu.pl. Termin: 3.6.2015.