¿Es posible crear un mapa de restricción usando python? [cerrado]

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

He actualizado la descripción, así que espero que sea más claro.
¿Quizás apuntando en la dirección correcta? ¿Dónde encontrar posibles módulos que hagan esto? No todos somos expertos.
Voto para cerrar esta pregunta como fuera de tema porque se trata de programación en python y no realmente de biología o bioinformática.

Respuestas (2)

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,

Gracias por el consejo David. Era una tarea asignada y me las arreglé para resolverlo. Mi consulta sobre si era posible usar python es de interés ya que acabo de comenzar a aprenderlo.
ESTÁ BIEN. Editaré mi respuesta para tener en cuenta eso.
Python tiene buenas funciones de cadena, al igual que Java y C++. Podría hacer una lista de enzimas de restricción, probablemente un mapa o hashmap. Luego carga su secuencia de ADN como una cadena e itera a través de la lista de enzimas, buscando el sitio de restricción en la cadena de ADN y devolviendo la posición del sitio en la secuencia de ADN. Si las cadenas no coinciden, se devolverá un -1. Entonces, si solo desea una lista, puede imprimir en la consola o en un archivo de texto. Si desea una imagen, debe hacer una lista de sitios de restricción, con el tipo de enzima y la ubicación de corte, luego use pygame o algo así para dibujar el mapa.
Dibujar el mapa tampoco es difícil. Si es lineal, el ADN de las bases B es una línea de P píxeles de largo. Entonces, el sitio de restricción en la posición b se dibuja en el píxel p donde p = P * b/B. Cuando sea circular, deberá calcular el píxel desde un ángulo, donde el ángulo es 360 * b/B.