Skip to content

Homework 5#1

Open
zmitserbio wants to merge 17 commits into
mainfrom
development
Open

Homework 5#1
zmitserbio wants to merge 17 commits into
mainfrom
development

Conversation

@zmitserbio
Copy link
Copy Markdown
Owner

No description provided.

Copy link
Copy Markdown

@nvaulin nvaulin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Привет!

Хорошая работа

  1. Классный README, спасибо
  2. Неплохая структура коммитов:)
  3. Очень крутые изменения по прошлым ДЗ. На самом деле, не совсем все исправлено, но то что исправлено - оно прям основательно. Только смущает что одна из белковых функций так и не работает - отметил в коде.
  4. По фильтратору - отличная работа. Мне понравилось что как ты структурировал модуль. С отдельными проверками, отдельными местами для хранения констант. Логика довольно хорошо разбита. Были некоторые комментарии. Из общих и самых частны выделю пожалуй следующее:
  • Константы называют капсом
  • Проверки типов делают функцией isinstance
    У тебя оно конечно все работает и ок, но так просто принято.
  1. Много мелких комментов по качеству кода, не везде уже их отмечал. Будь чуть аккуратнее с такими вещами как нейминги аннотации типов, следи за пробелами и пустыми строками. В этом плане любая IDE в помощь. Оно не критично, но тут вот чуть-чуть не хватило чтобы совсем идеально было.

Баллы

  • За модуль и качество кода 2.9/3
  • За работу над ДЗ 3 и 4 0.9/1
    Функция падает с ошибкой::(( Но объем исправлений на самом деле поражает
  • README 2/2
  • За главную функцию фильтрации 1/1
  • За 3 фильтратора 3/3

Итого: 9.8

Виден очень большой прогресс, ты молодец! Продолжаем в том же духе 💪🏻

Comment thread README.md
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Очень основательное ридми, круто! Отдельный лайк за секцию Contacts and acknowledgements.

Comment thread modules/dna_rna_tools.py
return
- no return
"""
from modules.dna_rna_constants import dna_rna_alphabet
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Импорты все таки лучше делать в начале скрипта вне функций. А то так каждый раз при вызове функции будет повторяться импорт

Comment thread modules/dna_rna_tools.py
"""
from modules.dna_rna_constants import dna_rna_alphabet
for seq in seqs:
if type(seq) != str:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Чаще принято все таки делать проверку через if isinstance(seq, str), хотя так тоже работает

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ты же кстати вроде в ДЗ 3 и использовал её уже

Comment thread modules/dna_rna_tools.py
Comment on lines +19 to +23
if i == 'T' or i == 't':
t_present = True
if i == 'U' or i == 'u':
u_present = True
if t_present and u_present:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment thread modules/dna_rna_tools.py
raise ValueError('Invalid input: all sequences must be of type str!')
t_present = False
u_present = False
for i in seq:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут все таки лучше не i, это же не счетчик какой-то или индекс, это нуклеотид.

Suggested change
for i in seq:
for nucl in seq:

Comment on lines +17 to +18
for i in seqs[seq_name][0]:
if i not in fastq_dna_code:
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут лучше было бы сделать проверку на множествах:)

@@ -0,0 +1,87 @@
def check_fastq(seqs: dict):
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Очень хорошая глубокая система проверок:)

for i in seqs[seq_name][0]:
if i not in fastq_dna_code:
raise ValueError('Invalid input: sequences must contain only letters "A", "T", "G", "C" in upper case!')
if seq_name[0] != '@':
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мб кстати тут лучше было бы не [0] а seq_name.startswith('@'). По сути одно и то же, но читается имхо сильно понятнее

for nucleotide in seq:
if nucleotide == 'G' or nucleotide == 'C':
gc_sum += 1
return gc_bounds[0] <= gc_sum/len(seq)*100 <= gc_bounds[1]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хех, компактность огонь:)
Мб деление на длину и умножение на 100 стоило бы даже на отдельную строчку вынести, все таки отдельный шаг логики

return:
- (bool): whether length of a sequence is in the range provided
"""
return length_bounds[0] <= len(seq) <= length_bounds[1]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants