Kodomo

Пользователь

Учебная страница курса биоинформатики,
год поступления 2013

Дата посл. изменения 22 окт 2013. ААл

Ошибка в формулировке

Автор ошибки - ААл; Sorry.

>>> b = 1
>>> id(b)
30723976L
>>> 

Повторяющиеся ошибки в скриптах студентов

  1. При чтении последовательности из файла в формате 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'
>>> 
  1. Отклонения от формата fasta в последовательности, выводимой в выходной поток (на экран). Первая строка должна выглядеть так (пример)"

>protein_name description of the protein

  1. Не ошибка, но пожелание на будущее: буду премного благодарен, если подумаете об удобстве проверки вашей работы :). Так, в директорию credits стоило положить не только скрипт, но и последовательность, с которой он работает.

Полезные замечания

  1. Нельзя использовать в качестве имен переменных слова, уже определенные в python, такие как

    • file
    • list
    • id
    • и много других
  2. Используйте редактор IDLE для python вместо FAR для того, чтобы вовремя заметить, что данное слово уже определено в python - при наборе текста такое слово будет выделено цветом шрифта [В Far это тоже видно: все ключевые слова языка подкрашиваются белым, в то время как обычные имена переменных – голубые. ДД.]

  3. Про методы строки

    • Метод строки strip() удаляет только концевые символы (witespace или те, что укажите в параметрах)
    • Метод строки .translate с первым аргументом None удаляет все символы, содержащиеся во втором аргументе (строке).

>>> a = "  afrd  dgt     nt "
>>> a.translate(None, " \r\n")
'afrddgtnt'
>>> 

В примере удаляются смимволы: пробел, "\n" - конец строки, "\r" - возврат каретки.

>>> a = "  afrd  dgt     nt "
>>> a.replace(" ","")
'afrddgtnt'
>>> 

Заменяются все символы " " - пробелы, на пустой символ ""

  1. Подсказки по методам разных типов переменных, функций и классов

    • Чтобы узнать другие методы строки, напишите в консоли python:

help(str)  

help(list)