Skip to content

majkelEXE/Bioinformatic_App

Repository files navigation

Bioinformatic App

Aplikacja analizująca ciąg DNA lub RNA. Wynikiem programu jest lista białek w podanej sekwencji, wraz z wizualizacją ich struktury oraz zestawieniem właściwości fizycznych.

Instalacja

Aby w poprawny sposób zainstalować aplikację, wykonaj poniższe polecenia(Python 3.10.6 lub nowszy):

  git clone [email protected]:majkelEXE/Bioinformatic_App.git

  cd Bioinformatic_App

  py -3 -m venv .venv

  .venv\scripts\activate

  pip install -r requirements.txt

  python main.py

Przykładowe sekwencje do sprawdzenia poprawności zainstalowanej aplikacji:

  • taagaggctacacagtcttgaggaaactagaattagaaactaacgctactctcgtctccgtccccgttcttaaaggtaagccgcgtgcactaggtcagcgggcgggatcctcttcgttatcctcccccaaaaggtcttgcggcaccaaggatccccaccataaaactcatgcctatcactagtcgcgactggatgcttataagcgacagcggcctagtgaagggtggtagacaatctcagtgtcttacaaacggtatacctgacctgcgacggctaattacgcactttcaatcttaagttgaggttatcagccggaccaaacactctgtgctcttacttgctgggttccaggagtgcgcgccacgtgaagtcgacaaacttcaaaagcttcgcaggactccacgcagggactccaacggaccttctaacctacccgtgatgtctgctccacgccagctagactcatgccgtcaatgtctggctatattggttaaaagctctcatcaccgtcgatttttttgtggttcgaggccacggctttactagtcccgtaagaccgtggtggtatgggcagcctacgatatgtttagcatcggagaacgtgaagtaaagatattggagatactggacctgattcgatgcactacacaaggccagtctctataggggccctctttgtgtccttagaattacgagcgagattaatgctacaaaggaaagagaaggtcggatgagggtgttagtgacaaatactatgtggtgggccacgaacattacatcacctccacggcacggaggcatggtacgcatatatctttttccctgtttgaccagggggttgatcagacgattcttttgccagtaacagtaacgcgtcagcattgctacgtcatgagtgattcgctagcagaccttgtccacgaataatggcgcacaaactccgcgaacccctcgttcactgaatcaatggttgtgccagcgttggcggtgtgacatacgg
  • caaccacactggagaacgagtaagggatcgggcgagcggtactctaaatccaaacggtataataagagctccgcgtaaagtcaaggattctgaaagatttgagtgtctcgccgcattccgctacaaagatctggcatattggtcaccttctatcggttaattccgaaaaatttggctaccagatatggatatgagttagatttaaagcggtagtgagaagttccaccacattgcgccgatcagtagaatggcccaaaagtcgcctatctgcctagtcagaaactgaccgagagcgggagtccgtagcactctcaagagagacgttgtatagtgtgcagtcacttcggtgccctactgcgtaacctggggtccagccggccaatgcgggtcggcgtcggacgatacgtgcagctacgctaaaactcccagagggaggcagacaccaaggggtcaccatccagtgccacaaagagcctataatggttggatggcttcttattataaaagaaggagagcataactgcggtggtggtaggtttacaatccagcgagccgggcgtcgtactgattagagcatataaacctggattaatcaacacccttcatcacggctcgattccatcggacggcagacgaaagcagactggcttttgcggcacggggatatgcggtaagccaggataagaacaacattttacttcgcaaatgacctggtgcgcttttacgacaataataggtcgtttttgggaagtcacgggtcggcggattcgggatcagcgggttatctagatcggcgcgtttagcaagggtgccgcaggccgtactgtactattgacacttaatacccgtactaatggatgaacagcgttctaatactgtcacggtacctcatgcatgacctagaacaagtccatatcgaagcttgttcgagcatcgtgaaaccggccgagcacccggtcttgctactggctcccattatctaacggctaacaagggacc

Spis treści

I. Wstęp

 1. Podział dokumentacji

 2. Organizacja pracy

 3. Proces developmentu

 4. Ogólne spostrzeżenia

II. Funkcjonalnośc aplikacji

 1. Interfejs

 2. Analiza sekwencji

 3. Wizualizacja białka

 4. Wykres właściwości fizycznych białka

III. Struktura aplikacji

 1. Główna architektura aplikacji

 2. amino_acid_interpreter

 3. amino_acid_plots

 4. amino_acid_visualizer

 5. tests

I. Wstęp

1. Podział dokumentacji

Dokumentacja została podzielona na 4 główne sekcje:

- Wstęp – informacje o przebiegu, organizacji oraz indywidualnych odczuciach związanych z pracą nad aplikacją

- Funkcjonalność aplikacji – „właściwa dokumentacja” określająca sposób użytkowania aplikacji, wraz z wszelkimi informacjami na temat jej działania

- Struktura aplikacji – sekcja opisująca techniczną architekturę aplikacji, poświęcona w głównej mierze opisie autorskich modułów, z których została utworzona

- Źródła – artykuły, poradniki, bądź badania, które w szczególny sposób przysłużyły się rozwojowi aplikacji

2. Organizacja pracy

Nietypowa tematyka aplikacji - bioinformatyka zmusiła nas do podziału drużyna na 2 obozy. Wśród nich jeden stanowiły osoby zajmujące się poszukiwaniem informacji na temat aminokwasów, następnie segregacją znalezionych danych, przygotowaniem funkcjonalnych przykładów a także edukacją drugiej części drużyny. Ta odpowiedzialna była za utworzenie funkcjonalnego programu w oparciu o zdobytą wiedzę oraz szablony utworzone przez osoby zajmujące się częścią teoretyczną.

3. Proces developmentu

Aplikacja zaczęła powstawać od końca listopada, a pracę nad nią trwały aż do końca lutego. Wspomniany okres był szczególnie intensywny na początku grudnia, kiedy to aby odpowiedzieć sobie na pytanie jak coś funkcjonuje, musieliśmy najpierw postawić przed sobą dwa zupełnie nowe pytania. Każdy początkowy krok do przodu wymagał od nas dwóch kroków w tył, co pierwotnie sprawiało błędne wrażenie, że zamiast iść do przodu – cofamy się. Wraz ze zdobyciem informacji, przygotowaniem danych do testów oraz czasochłonną edukacją pozostałych członków drużyny, rozpoczął się proces właściwego powstawania aplikacji – wreszcie pojawiły się pierwsze linijki kodu.

Do napisania aplikacji zdecydowaliśmy się posłużyć językiem Python ze względu na jego wszechstronność oraz satysfakcję z pracy. Wadą tego rozwiązania okazała się być wydajność, lecz istotna była dla nas przede wszystkim zabawa. Zdecydowaliśmy jej sobie nie odbierać i użyć języka, w którym każdy się odnajduje. Pełny kształt aplikacja osiągnęła na początku lutego, lecz ilość rzeczy do poprawy, bądź przebudowy wciąż była przytłaczająco duża. Mimo narastającej presji czasu pod koniec lutego aplikacja osiągnęła swój finalny kształt oraz została zabezpieczona przed błędami.

4. Ogólne spostrzeżenia

Wszyscy członkowie drużyny musieli zmierzyć się z ogromnym wyzwaniem, aby zająć się tematem zupełnie dla nas obcym. Zdecydowanie dobrym pomysłem był podział drużyny na dwie podgrupy, gdyż część zawodników naszej drużyny ma naturalną zdolność do przyswajania nowej wiedzy na wszelkie tematy, podczas gdy dla pozostałych temat biologii i chemii to obcy i dość przerażający świat. To rozwiązanie pomogło przydzielić każdemu zajęcie, które sprawia mu najmniej trudności i daje siłę do dalszej pracy. Ostatecznie każdy czuje zadowolenie z wykonanej aplikacji, ponieważ wyzwanie którego się podjęliśmy nie należało do najprostszych. Mówiąc szczerze mogliśmy wybrać coś innego, co wykonalibyśmy po najprostszej linii oporu, jednak to by nas tak nie usatysfakcjonowało. Koniec końcu stworzyliśmy coś z czego jesteśmy niesamowicie dumni, niezależnie czy przyniesie nam to przepustkę do trzeciego etapu czy też nie.

II. Funkcjonalnośc aplikacji

1. Interfejs

Interfejs

A – input służący do wczytania sekwencji DNA, bądź RNA

B – przycisk do importu sekwencji DNA lub RNA z pliku tekstowego, wczytana sekwencja pojawia się w inpucie A

C – przycisk do wykonania analizy podanego DNA lub RNA. Jest on zablokowany, aż do momentu gdy w inpucie A znajdzie się całkowicie poprawna sekwencja DNA lub RNA

D – przyciski wyboru ramek odczytu(Frame 1: +1; Frame 2: +2; Frame 3: +3). Stają się one aktywne dopiero po przeanalizowaniu sekwencji za pomocą przycisku C

E – białka zawarte w danej ramce odczytu. Treść tej sekcji pojawia się dopiero przeanalizowaniu sekwencji, a następnie wybraniu danej ramki. Blok E może być pusty, gdy w danej ramce odczytu nie udało się znaleźć żadnego białka, bądź zawierać listę przeanalizowanych białek

2. Analiza sekwencji

Wprowadź poprawną sekwencję RNA(litery: A,U,C,G) lub DNA(litery: A,T,C,G) ręcznie, bądź wybierz przycisk „Import” aby zaimportować sekwencję z pliku tekstowego. Do momentu aż prawidłowa sekwencja nie pojawi się w inpucie - program nie umożliwi wykonywania dalszej części operacji.

UWAGA!

Wprowadzana sekwencja nie może zawierać żadnych białych znaków(spacji, enterów itp.) ani w inpucie, ani w pliku tekstowym.

Wczytanie

Po przeanalizowaniu białek należy wybrać jedną z trzech ramek odczytu(Frame 1: +1; Frame 2: +2; Frame 3: +3). Ramka odczytu, definiuje od którego nukleotydu podana sekwencja będzie zamieniana na kodony.

Analiza

Po wybraniu jednej spośród trzech dostępnych ramek odczytu, pojawiają się zawarte w niej białka. Obok każdego białka będą są dostępne dwa przyciski*: „Visualization”*(wizualizacja białka) oraz *„Plots”(*właściwości fizyczne białka).

Ramki

3. Wizualizacja białka

Po wczytaniu sekwencji RNA lub DNA, a następnie wybraniu ramki odczytu, pojawia się lista białek wraz z dwoma widocznymi przyciskami obok każdego elementu. Aby wyświetlić wzór strukturalny wybranego białka należy kliknąć w podany obok niego przycisk „Visualization”.

Wizualizacja przycisk

Po kliknięciu pojawia się load screen, który znika w momencie gdy wizualizacja białka jest gotowa do wyświetlenia.

Uwaga!

Im dłuższa sekwencja tym dłuższy czas oczekiwania na wygenerowanie wzoru strukturalnego. W skrajnych przypadkach proces generacji może się wydłużyć nawet do kilku minut.

Splash screen

Po wygenerowaniu wizualizacji użytkownik otrzymuje rezultat w postaci dwóch wzorów strukturalnych. Pierwszy z nich jest przedstawiony w sposób szablonowy, bez wyszczególnionych aminokwasów, podczas gdy drugi umożliwia rozróżnienie konkretnych aminokwasów we wzorze za pomocą kolorów(legenda po kliknięciu we wzór). Aby uzyskać bardziej szczegółowy widok należy kliknąć w jeden z dwóch wzorów.

Co więcej tuż nad przyciskiem „Save Svgs” znajduje informacja o masie wybranego białka.

Główna wizualizacja

Po kliknięciu w pierwszy wzór strukturalny otwiera się okienko przedstawiające wizualizacje w powiększeniu.

Bazowa wizualizacja

Kliknięcie w drugi spośród wzorów również poskutkuje otwarciem okienka wraz z powiększoną wizualizacją, w tym wypadku w prawym górnym rogu widoczna jest legenda, przypisującą kolory konkretnym aminokwasom.

Kolorowa wizualizacja

Użytkownik ma także możliwość zapisu wygenerowanych wzorów strukturalnych w postaci plików SVG(zawierających kompresję bezstratną). Aby zapisać wzory należy kliknąć w przycisk „Save Svgs” głównego okienka wizualizacji.

Save Svgs przycisk

4. Wykres właściwości fizycznych białka

W celu analizy właściwości fizycznych białka, należy uprzednio podać poprawną sekwencję RNA lub DNA, następnie ją przeanalizować i wybrać jedną z pośród trzech ramek odczytu. Następnie obok każdego białka w wybranej ramce odczytu pokaże się przycisk „Plots”, który należy kliknąć w celu uzyskania konkretnej analizy właściwości fizycznych białka.

Wykresy przycisk

Po kliknięciu przycisku pojawi się gotowa analiza właściwości fizycznych białka. Na osi pionowej Y znajdują się wartości, z kolei na osi X pozycje aminokwasów w sekwencji. Nad wykresami znajduje się również informacja o wartości punktu izoelektrycznego.

Uwaga!

Niezwykle krótkie białka(składające się z mniej niż 6 aminokwasów) mogą uniemożliwić jego pełną analizę, dlatego niektóre właściwości nie zostaną obliczone.

Wykresy główna

Przedstawiona analiza umożliwia użytkownikowi interakcję. W celu przybliżenia wykresów należy posłużyć się scroll’em myszki.

Ponadto poza przybliżeniem wykresu użytkownik może również przesuwać wykres, w celu skupienia się na interesujących go fragmentach sekwencji. Aby przesunąć wykres należy kliknąć lewy przycisk myszki a następnie przesunąć go w daną stronę(kierunek przesuwania zgodny jest z metodą drag).

Wykresy przybliżone

III. Struktura aplikacji

1. Główna architektura aplikacji

Aplikacja została podzielona na trzy główne moduły wykonawcze oraz jeden moduł testowy. Każdy z konkretnych modułów odpowiada za inne funkcje:

- amino_acid_interpreter – analiza wprowadzonej sekwencji RNA lub DNA oraz zwrócenie białek zawartych w podanej sekwencji, wraz z rozróżnieniem na konkretne ramki odczytu

- amino_acid_plots – algorytmy obliczające wartości właściwości fizycznych dla wybranego białka wraz z architekturą i implemetacją okienka przedstawiającego wyliczone wartości

- amino_acid_visualizer – generowanie wzorów strukturalnych, a także masy podanego białka, wraz z architekturą okienka oraz jego implementacją

- tests – testy jednostkowe sprawdzające poprawność zaimplementowanej funkcjonalności

- main.py – główny plik definiujący interfejs aplikacji

2. amino_acid_interpreter

Moduł odpowiedzialny za analizę otrzymanej sekwencji DNA lub RNA. Zaimplementowano w nim autorski algorytm interpretujący sekwencję w trzech ramkach odczytu, a także zabezpieczający przed wczytaniem niepoprawnych znaków w sekwencji. Jako rezultat zwracany jest słownik zawierający białka w konkretnych ramkach odczytu.

TECH STACK: Python

3. amino_acid_plots

Moduł implementujący interfejs umożliwiający wgląd w konkretne właściwości fizyczne białka, jak również interakcję z uzyskanymi wynikami(przybliżenie i przesuwanie wykresów). Ponadto zawiera on algorytmy obliczające właściwości fizyczne dla danego białka. Wyszczególniony moduł podzielony jest na dwa podmoduły:

- analysis_tools – zawierający definicję algorytmów obliczających właściwości fizyczne

- plots_tools – zawierający definicję algorytmów umożliwiających interakcje z wykresem

TECH STACK: Python, PySide6, Matplotlib

4. amino_acid_visualizer

Moduł generujący wizualizację białka, a także interfejs graficzny umożliwiający wgląd w jego dokładną strukturę. Zawiera on również algorytm obliczającą masę białka. Moduł generuje strukturę jako plik SVG, dzięki czemu użytkownik ma możliwość zapisu go na własnym urządzeniu.

TECH STACK: Python, PySide6, Rdkit, Pickachu, Pickachu-Chem

5. tests

Moduł odpowiedzialny za przeprowadzenie testów jednostkowych sprawdzających poprawność wykonywanej aplikacji.

TECH STACK: Unittest

Autorzy

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages