Сравнение биопионов
Я использую biopython для выполнения простой задачи: из определенного заполнения генного банка извлекать идентификатор гена и связанную с ним информацию в таблицу.
Когда я пытался сравнить, если Seq.SeqFeature.SeqFeature.location
из разных SeqFeature
, это дает мне False
каждый раз. Даже в ситуации ниже:
from Bio.SeqFeature import FeatureLocation
location1 = FeatureLocation(0,0,strand = 1)
location2 = FeatureLocation(0,0,strand = 1)
print(location1 == location2) # will print False
Только это даст мне желаемый результат:
print(location1.start == location2.start and location1.end == location2.end and location1.strand == location2.strand) # will print True.
Проблема была решена следующим образом, но я до сих пор брожу, задумано ли это по какой-то причине или метод сравнения еще не встроен.
Ниже приведен процесс, почему я пришел к этой проблеме:
- Сначала я только добыл
feat.type == 'CDS'
информация из файла genbank, и обнаружил, что все псевдогены потеряны. Тогда я пришел с идеей, записав информацию в
feat.type == 'gene'
а потом ищи'CDS'
или же'misc_feature'
записать больше информации для этого гена.Это создает необходимость подтверждения
'CDS'
или же'misc_feature'
аннотируется в том же месте в случае, если есть несколько'misc_feature'
аннотирование некоторых доменов одного и того же гена.
1 ответ
Я до сих пор брожу, задумано ли это по какой-то причине или метод сравнения еще не встроен.
Ответ, кажется, последний. Насколько я могу сказать, __eq__
метод для FeatureLocation
предполагалось, что он будет добавлен в 2011 году, но не вошел в него. Даже другие объекты Biopython отмечают отсутствие возможности сравнивать FeatureLocation
объекты в комментариях к исходному коду.
Тем не менее, он находится в исходном коде для еще не выпущенного Biopython 1.70
Единственная разница между будущей реализацией и вашей - это сравнение ref
а также ref_db
поля по умолчанию None
Так что, если вы не используете их, нет проблем.
Для получения дополнительной информации см. Запрос на получение ответа 1309.