Nano Hash - криптовалюты, майнинг, программирование

Пользовательский ввод для проверки последовательности ДНК на наличие сайтов рестрикции с помощью BioPython

Я хочу написать сценарий, который принимает введенное пользователем имя фермента рестрикции (следовательно, строку) и анализирует заданную последовательность ДНК (также строку) на наличие экземпляров последовательности фермента рестрикции. Ввод будет иметь доступ к библиотеке ферментов рестрикции, содержащейся в модуле Bio.Restriction. Очень простой пример:

from Bio.Restriction import *

sequence=('ACGGCTATCGATAACTG...')
enzyme=input('Enter the name of your restriction enzyme: ')
enzymeSite=Bio.Restriction.enzyme.site
enzymeSite in sequence
#True or False

Проблема, конечно, в том, что переменная enzyme является строковым объектом, а не объектом RestrictionType, необходимым для доступа к классу.

type(enzyme)
<class 'str'>

type(Bio.Restriction.EcoRI)
RestrictionType

Я попытался использовать пакет importlib. Однако ферменты представляют собой классы, а не модули, поэтому importlib не может помочь.

i=importlib.import_module('Bio.Restriction',fromlist=[''])
dir(i)
#list of Bio.Restriction contents

i=importlib.import_module('Bio.Restriction.EcoRI',fromlist=[''])
Traceback (most recent call last):
  File "<pyshell#391>", line 1, in <module>
    i=__import__('Bio.Restriction.EcoRI',fromlist=[''])
ImportError: No module named 'Bio.Restriction.EcoRI'

Я также довольно новичок в Python, поэтому я не получил слишком многого от чтения исходных файлов Restriction.

Существуют очевидные ограничения на принудительный доступ к ферменту рестрикции в командной строке. Одним из решений этой проблемы является наличие двух сценариев Python, один из которых запрашивает у пользователя фермент, а затем последовательно заменяет код и импортирует выходные данные из другого сценария. Другое решение состоит в том, чтобы просто создать словарь всех возможных ферментов рестрикции и их сайтов. Оба этих решения отвратительны. Идеальным решением для меня было бы преобразовать введенную пользователем строку в правильный объект RestrictionType, который затем можно было бы использовать для доступа к сайтам. Спасибо за чтение, и я был бы признателен за любую помощь с этой проблемой.


Ответы:


1

Я никогда раньше не использовал Biopython, но меня интересует биоинформатика, поэтому я немного изучил ее. Я не могу гарантировать, что это оптимальный способ сделать это, поскольку это довольно странно, но, похоже, это работает.

Я сделал RestrictionBatch и добавил фермент в пакет в виде строки, прежде чем использовать batch.get() для извлечения объекта RestrictionType, используя ту же строку, что и запрос. Я понял, что имена ферментов очень чувствительны к регистру, я использовал EcoRI для проверки. Я работал с вашим примером:

from Bio.Restriction.Restriction import RestrictionBatch

sequence=('ACGGCGAATTCTATCGATAACTG...')

# Read enzyme name from input. 
enzyme_name = input("Enter enzyme name:\n") # E.g EcoRI
print (type(enzyme_name)) # <type 'str'>

# Get RestrictionType by name
batch = RestrictionBatch()
batch.add(enzyme_name)
enzyme = batch.get(enzyme_name)
print (type(enzyme)) # RestrictionType

print (enzyme.site in sequence) # True

Это похоже на то, что вы ищете?

31.05.2015
  • Это именно то решение, которое я искал, большое спасибо! Я не совсем уверен, как работает RestrictionBatch, но это очень похоже на словарь. В любом случае, это должно прекрасно соответствовать моим целям. 01.06.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..