Tengo algunos fragmentos de ADN de digestiones simples y dobles utilizando tres enzimas de restricción diferentes. Estoy tratando de construir un mapa de restricción de un fragmento lineal de ADN. El mapa necesita indicar las posiciones relativas de los sitios de restricción junto con las distancias desde los extremos.
¿Se puede hacer esto usando python?
Tamaños de fragmentos de ADN (bp) - ADN sin cortar = 900
Corte de ADN con EcoRI = 500, 350, 50
Corte de ADN con HindIII = 600, 300
Corte de ADN con BamHI = 400, 300, 200
Corte de ADN con EcoRI + HindIII = 350, 300, 200, 50
Corte de ADN con EcoRI + BamHI = 300, 250, 200, 100, 50
Corte de ADN con HindIII + BamHI = 300, 200, 100
Estoy de acuerdo con la respuesta anterior. Ciertamente puede escribir una solución en python, pero primero debe formularla como un algoritmo. Si lo hace, nos permitirá sugerir una solución real.
Además, quería sugerir que publicar estas preguntas en un foro con enfoque en bioinformática (biostars.org) puede generar mejores comentarios.
Primero responderé a esta pregunta suponiendo que está aprendiendo o está a punto de aprender Python (quizás porque ha escuchado que se ha vuelto popular en bioinformática) y desea saber si se puede aplicar a este problema. La respuesta es: casi seguro que sí. Python es un lenguaje de programación del tipo que se puede utilizar para automatizar la solución de este tipo de problemas, al igual que C, C++, Java, Perl.
¿Cómo lo harías? Primero resolvería el problema a mano, analizaría la lógica de su solución y luego intentaría idear un algoritmo general basado en esta lógica que pueda manejar una variedad de casos. Entonces codificarías esto en python (o lo que sea). El programa tendría que lidiar con las imprecisiones en los valores reales de la longitud de los fragmentos (sus datos obviamente son artificiales) y la posibilidad de más de un fragmento de la misma longitud (ver más abajo). Si usó python y quería una salida gráfica, necesitaría usar una biblioteca que proporcione gráficos, ya que python no viene con gráficos como Java. Supongo que hay algunos. Sin embargo, esta ciertamente no es la tarea de programación más fácil para un principiante, como verá cuando intente analizar la lógica de la solución manual. Y, por supuesto, los datos pueden ser insuficientes para proporcionar una solución única.
Sin embargo, como se trata de una tarea, es posible que también desee encontrar un programa para verificar su respuesta y tal vez no esté seguro de cómo hacerlo. No conozco ningún paquete para hacer esto, tal vez no sea 'vanguardista'. Entonces, ¿cómo hacerlo?
Lo que haría sería comenzar con los resúmenes individuales y dibujar un conjunto de diagramas para cada uno de los arreglos posibles de los sitios de restricción en cada caso (lápiz y papel funcionan bien aquí). Luego miraría la digestión doble más simple, identificaría fragmentos únicos que también estaban presentes en las digestiones individuales y, por lo tanto, no serían cortados por la segunda enzima, y nuevamente dibujaría diagramas de las posibilidades para los pares de sitios de restricción. Ten cuidado; la doble digestión HindIII/BamHI no suma 900, por lo que debe haber dos fragmentos del mismo tamaño aquí. Cuando tiene todas las posibilidades dibujadas, presumiblemente solo hay un diagrama de restricción final que es consistente con todos los datos.
Pensándolo bien, diseñar un algoritmo para resolver este caso general sería una tarea bastante exigente. Si está comenzando a programar, primero abordaría los algoritmos más fáciles. Y un algoritmo eficaz podría adoptar un enfoque de fuerza bruta en lugar de la forma semiintuitiva en que los resolvemos a mano. Por ejemplo, su algoritmo podría generar todos los mapas posibles para cada una de las tres digestiones individuales y luego generar todos los mapas posibles para las digestiones dobles, junto con un cálculo del tamaño de los fragmentos que generarían las digestiones dobles. Estos se compararían con el tamaño de los fragmentos reales de las dobles digestiones, eliminando aquellas posibilidades que no encajan. Codificarlo implicaría escribir métodos/funciones (o como se llamen en python) para generar estos mapas,
daniel bryden johnson
daniel bryden johnson
WYSIWYG