Результати виконання домашнього завдання №2 - SlavkoPrytula/Covid-19-Tracker GitHub Wiki

Functional requirements for the system

Програма дозволяє отрмати візуалізовані дані про вірус. Також надає можливість бачити оновлений подальший розвиток. Система організована під Користувача.

1. Пошук усіх країн, де зареєстровано пацієнтів, у яких виявлено вірус:

  • Програма містить функціонал, який надає змогу користувачу здійснювати пошук оновленої інформації про останні дані різних випадків, пов’язаних із COVID-19.

  • Програма надає можливість користувачу також мати вибір серед функціоналу. Він/Вона можуть обирати також представлення даних про зараження взагальному по світу.

  • Програма дозволяє користувачу здійснювати пошук для кожної з країн окремо про зараження та кількості захворювань.

  • Програма надає можливість користувачу робити запит та отримувати інформацю про давніші випадки певної дати.

  • Програма надає можливість користувачу дивитися дані та статистику по захворюваності на COVID - 19 для кожного штату Сполучених Штатів Америки.


2. Надання візуалізації користувачу:

  • Програма дозволяє отримувати візуалізовані дані про кількість захворювань за весь час існування вірусу COVID - 19 на певній територі.

  • Програма дозволяє отримувати візуалізовані дані про кількість заражень на даний момент у певній державі чи конкретному штаті.

  • Програма дозволяє отримувати візуалізовані дані про кількість смертей пов’язаних із вірусом.

  • Програма дозволяє отримувати візуалізовані дані про кількість итх, хто зумів вилікуватися вді недуги.

  • Програма дозволяє отримувати додаткові візуалізовані дані про кількість хворих за весь час зранку та ввечері кожного дня протягом часу перебування вірусу на території.

  • Програма дозволяє отримувати додаткові візуалізовані дані про кількість хворих на даний момент зранку та ввечері кожного дня протягом часу перебування вірусу на території.

  • Програма дозволяє отримувати додаткові візуалізовані дані про кількість сменртей призведених COVID - 19 за весь час зраyку та ввечері кожного дня протягом часу перебування вірусу на території.

  • Програма дозволяє отримувати додаткові візуалізовані дані про кількість вздоровіших людей за весь час зранку та ввечері кожного дня протягом часу перебування вірусу на території.


3. Генерація та припущення даних наперед:

  • Прогарма дозволяє користувачу можливість подивитися та проаналізувати дані про захворювання наступного дня, тижні, місяця… у певній країні чи у всьому світі.

  • Програма генерує найбільш імовірше передбачення (протягом певного часу) для оновлених даних за день.

  • Програму представляє усі дані фуннкціоналу у інтерактивному вигляді - графіки та статистичні графи.

NonFunctional requirements for the system

1. Затрати часу:

  • На пошук даних буде іти невелика затримка, також для генерування наступних даних програма буде витрачати певний час.

2. Працездатність:

  • Програма буде побудована для різних плаформ (Windows, Linix, macOS, Android, IOS)


Data

Спочатку користувач вибирає, що саме (який функціонал) він/вона хотіли б побачити та дослідити. Далі програма звертається за доромогою API ключа до RapidAPI та вертає інформацію з-за допомоги бібліотеки requests.

Цей API надає інформацію про коронавірус в реальному часі. Він моніторить worldometer, cdc.gov і Johns Hopkins і вибирає найвідповіднішу інформацію.


**Існує декілька типів інформації, які можна отримати: **

  1. random_masks_usage_instructions - повертає катринку з інструкціями для бородьби з коронавірусом.

  2. affected_countries - повертає країни в яких виявлено вірус.

  3. history_by_particular_country - повертає історію розвитку коронавірусу в заданій країні. Повертає .json файл у якому міститься статистика по днях(кількість заражених, кількість померлих, кількість вилікуваних і кількість в тяжкому стані)

  4. history_by_particular_country_by_date - повертає статистику певної країни в задану дату (кількість заражених, кількість померлих, кількість вилікуваних і кількість в тяжкому стані)

  5. cases_by_country - повертає словник країн і статистику в них на даний час.

  6. johns_hopkins_latest_usa_statistic_by_state - повертає статистику по країнах за інформацією університету Джона Хопкінса

  7. latest_stat_by_country_name - повертає останню інформацію про коронавірус в зааній країні.

  8. world_total_stat - повертає інформацію про кількість заражених, померлих, вилікуваних, нових смертей за день і дату.


Дані, які вертаються нам (користувачам) можна подавати різними способами. Найлегше буде працбовувати саме .json файли, адже ключами можна вказувати та витягувати потрібну зразу інформацію.



Modules, Packages, Libraries Capabilities


  • Requests Module

Більшість існуючих модулів Python для надсилання HTTP-запитів надзвичайно громісткі (затрачається багато лінійок коду аби написати програму)

Бібліотека дозволяє надсилати HTTP / 1.1 запити надзвичайно легко. До того ж вона не займає багато місця. Після надсилання HTTP запиту, у відповідь ми отримуємо Об'єкт з усіма даними(вмістом, кодуванням, статусом...)

$ pipenv install requests

Adding requests to Pipfile's [packages]…

✔ Installation Succeeded

  • Plolty Library

Це open-source, browser-based та інтерактивна бібліотека для малювання та зобраання графіків.

plotly.js та само як і plotly.py постачається з більш, ніж 30 типами діаграм, включаючи наукові діаграми, тривимірні графіки (3D), статистичні діаграми, SVG-карти, фінансові діаграми тощо.

pip install plotly

  • NumPy Package

NumPy - основний модуль для н аукових обчислень у Python.

Він містить:

  1. Потужний об'єкт N-розмірного масиву.
  2. Складні (мовні) функції.
  3. Операції для інтеграції C / C++ та Fortran мовами.
  4. Корисну лінійну алгебру, перетворення Фур'є та випадкові числа.

NumPy також може бути використаний, як ефективний multi-dimensional для зберігання даних.

pip install numpy


Git Repository

Для поєднання спільної роботи над проектом у ми будемо використовувати один спільний git repository.

Оскільки роботи буде багато та кожен із нас буде писати велику кількість коду, ми будемо користуватися всіма чудами GitHub, аби зробити роботу приємною та продуктивною.

Спільний git repository дозволяє команді вільно розпоряджатися різними проектами оскільки основний код ніяк не змінюється. Це дозволить вільно керувати проетами та файлами. Кожен учасник буде мати змогу закидати свою власну версію коду. А комада вже ьуде дивитися та обирати потрібні частини.

Взагальному ми використовуємо структуру branch для загальної версії та branch для особистої версії. Злиття повинні колись відбуватися лише в одному напрямку, від загальної гілки до особистої. Це означає, що будь-які зміни, внесені до загальної версії, включаються в персональну версію.

Merging branches:

$ git checkout master

$ git branch new-branch

$ git checkout new-branch

# ...develop some code...

$ git add –A

$ git commit –m "Some commit message"

$ git checkout master

$ git merge new-branch

Якщо внесети зміни в свою персональну версію і захочеться змінити, щоб мати той самий код у загальній версії то потрібно буде їх просто злити. Буде потрібно трохи подумати, щоб організувати commits в особистому відділенні. Буде потрібна фіксація в особистій гілці, яка містить лише ті зміни, які будуть вноситися до загальної версії.

Два сховища можуть досягти одного і того ж. Це знизить ризик випадкового завантаження особистої версії в Github, але це зробить більш копіткою роботу з двома різними версіями.