Учебная страница курса биоинформатики,
год поступления 2013
Дата посл. изменения 22 окт 2013. ААл
Ошибка в формулировке
Автор ошибки - ААл; Sorry.
- "id" - функция, определенная в python. Поэтому слово "id" не следует использовать для своих переменных. В текстовом редакторе IDLE из пакета python об этом можно догадаться по тому, что это слово выделено цветом шрифта.
- Использование своей переменной с именем id не приводит к ошибке в скрипте, но приводит к уничтожению функции id
Функция id(<имя объекта>) выдает уникальный идентификатор объекта.
- Полученный идентификатор - адрес того места в памяти компьютера, в котором лежит объект.
- Эта функция не является часто используемой; тем не менее, в определенных случаях она нужна, и поэтому ее не следует портить
- Пример:
>>> b = 1 >>> id(b) 30723976L >>>
- То же касается слова "list" и других, определенных в python классов
Повторяющиеся ошибки в скриптах студентов
При чтении последовательности из файла в формате fasta не удаляются невидимые символы (т.н. whitespace characters): пробелы, символ конца строки "\n", другие невидимые символы "\t" - символ табуляции, "\r" - возврат каретки (и некоторые другие). Эти символы (кроме пробела в середине строки) не видны в текстовом файле. Формат fasta допускает их наличие, но, конечно, они должны игнорироваться при чтении последовательности.
Вот как можно удалить все невидимые символы.
import string
Такую команду надо выполнить один раз чтобы подключить класс string. После этого написать команду (пример):
>>> sequence = " M dfstq ggg " >>> sequence.translate(None,string.whitespace) 'Mdfstqggg' >>>
Метод строки .translate с первым аргументом None удаляет все символы, содержащиеся во втором аргументе (строке). В примере string.whitespace - строка из всех невидимых символов, они и удаляются, как это видно на примере.
Формат fasta разрешает включать в файл нумерацию нуклеотидов (или аминокислотных остатков). Пример:
>test_sequence atctttttcg gcttttttta gtatccacag aggttatcga caacattttc 50 cccctgtgga caaggttttt tcaacaggtt gtccgctttg tggataagat 100
Удалить все цифры и невидимые символы можно так (пример):
>>> seq = " aggttatcga caacattttc 50 " >>> seq.translate(None,string.whitespace + string.digits) 'aggttatcgacaacattttc' >>>
Отклонения от формата fasta в последовательности, выводимой в выходной поток (на экран). Первая строка должна выглядеть так (пример)"
>protein_name description of the protein
Не ошибка, но пожелание на будущее: буду премного благодарен, если подумаете об удобстве проверки вашей работы :). Так, в директорию credits стоило положить не только скрипт, но и последовательность, с которой он работает.
Полезные замечания
Нельзя использовать в качестве имен переменных слова, уже определенные в python, такие как
- file
- list
- id
- и много других
Используйте редактор IDLE для python вместо FAR для того, чтобы вовремя заметить, что данное слово уже определено в python - при наборе текста такое слово будет выделено цветом шрифта [В Far это тоже видно: все ключевые слова языка подкрашиваются белым, в то время как обычные имена переменных – голубые. ДД.]
Про методы строки
- Метод строки strip() удаляет только концевые символы (witespace или те, что укажите в параметрах)
- Метод строки .translate с первым аргументом None удаляет все символы, содержащиеся во втором аргументе (строке).
>>> a = " afrd dgt nt " >>> a.translate(None, " \r\n") 'afrddgtnt' >>>
В примере удаляются смимволы: пробел, "\n" - конец строки, "\r" - возврат каретки.
- Для удаления символов, например, пробелов из середины строки можно использовать метод replace. Пример
>>> a = " afrd dgt nt " >>> a.replace(" ","") 'afrddgtnt' >>>
Заменяются все символы " " - пробелы, на пустой символ ""
Подсказки по методам разных типов переменных, функций и классов
- Чтобы узнать другие методы строки, напишите в консоли python:
help(str)
- Так же можно получить подсказки по методам других классов. Например:
help(list)