programacion python biotecnologia

C

buenas!
tengo un problemay es bastante urgente, me pidieron un trabajo que consta de 2 partes y la primera ya la he logrado hacer pero la segundo no hay manera y si alguien que supiera de python m pudiera echar una mano loagradeceria y mucho, aqui os dejo el ejercicio y la primeraparte echa para que le deisun vistazo, le provado y funciona aunque nsea el formato ni el mas economico ni el convencional muchas gracias.

ejercicio:

Introducció a la Programació
Pràctica del curs
Es demana que realitzeu un programa amb Python que mostri el següent menú:

  1. Anàlisi de contaminació de basses
  2. Càlculs estadístics: Biaix de codó
  3. Sortir

El programa ha de permetre que l’usuari repetidament seleccioni una opció i s’executi
la tasca seleccionada fins que premi l’opció 3 que es finalitzarà el programa.
Descripció de cada opció:

  1. Anàlisi de contaminació de basses:
    S’ha fet un estudi per analitzar l’estat de les basses de l’entorn. En cada bassa s’ha
    mesurat zero, una o més vegades la concentració de matèria orgànica (DQO), la
    concentració d’oxigen (O2) i la biomassa bacteriana (DBO).
    Es vol conèixer quina bassa té el màxim i el mínim de cadascuna de les tres
    mesures (DQO, O2, DBO).
    L’usuari entrarà:
    per cada bassa analitzada:
    un identificador de la bassa i
    el paràmetre mesurat i el valor obtingut per tantes mesures com s’hagin
    fet.
    Les mesures de cada bassa es finalitzen amb 0
    La seqüència es finalitzarà amb un -1.
    En el cas de que s’hagi mesurat un paràmetre més d’una vegada dins la mateixa
    bassa, s’agafarà el promig dels valors obtinguts com a mesura d’aquest paràmetre
    en aquesta bassa.
    Exemple: (vosaltres els escriureu un sota l’altre)

El_Toll DQO 22 O2 40 DBO 37 O2 36 0 Gran O2 37 DBO 42 0 El_raig DQO 23 DQO
19 O2 60 DBO 36 0 -1

En l’exemple anterior el resultat seria:
La bassa amb més DQO és: El_Toll
La bassa amb menys DQO és: El_raig
La bassa amb més DBO és: Gran
La bassa amb menys DBO és: El_raig
La bassa amb més O2 és: El_raig
La bassa amb menys O2 és: Gran

  1. Càlculs estadístics: Biaix de codó

Disposem de dos fitxers:
El primer és un fitxer amb format FASTA que conté un una primera línia amb la
descripció de la codificació seguida per una seqüència de línies que contenen
una seqüència d’ARN. Exemple:

ENSG00000128573|ENST00000393495
AUGAUGCAGGAAUCUGCGACAGAGACAAUAAGCAACAGUUCAAUGAAUCAAAAUGGAAUG
AGCACUCUAAGCAGCCAAUUAGAUGCUGGCAGCAGAGAUGGAAGAUCAAGUGGUGACACC
AGCUCUGAAGUAAGCACAGUAGAACUGCUGCAUCUGCAACAACAGCAGCAGCAGCAGCAG
CAGCAGCAGCAACAGCAAUUGGCAGCCCAGCAGCUUGUCUUCCAGCAGCAGCUUCUCCAG
AUGCAACAACUCCAGCAGCAGCAGCAUCUGCUCAGCCUUCAGCGUCAGGGACUCAUCUCC
AUUCCACCUGGCCAGGCAGCACUUCCUGUCCAAUCGCUGCCUCAAGCUGGCUUAAGUCCU
GCUGAGAUUCAGCAGUUAUGGAAAGAAGUGACUGGAGUUCACAGUAUGGAAGACAAUGGC
AUUAAACAUGGAGGGCUAGACCUCACUACUAACAAUUCCUCCUCGACUACCUCCUCCAAC
ACUUCCAAAGCAUCACCACCAAUAACUCAUC

El segon és un fitxer amb format FASTA que conté una seqüència d’aminoàcids
que es correspon a la codificació de la seqüència donada en el primer fitxer.
Exemple:

ENSG00000128573|ENST00000393495
MMQESATETISNSSMNQNGMSTLSSQLDAGSRDGRSSGDTSSEVSTVELLHLQQQQQQQQ
QQQQQQLAAQQLVFQQQLLQMQQLQQQQHLLSLQRQGLISIPPGQAALPVQSLPQAGLSP
AEIQQLWKEVTGVHSMEDNGIKHGGLDLTTNNSSSTTSSNTSKASPPITH
Es demana que es calculi el biaix de codó: per cada aminoàcid donar el percentatge
d’utilització de cada codó en la codificació i quantes vegades apareix.
Exemple:

A : GCU – 3 - 33,33%
GCC – 1 - 11,11%
GCA – 4 - 44,44%
GCG – 1 - 11,11%

D : GAU – 2 - 40%
GAC – 3 - 60%

Q : CAA – 10 – 27,77%
CAG – 26 – 72,22%
...

menu + primera parte:

#!/usr/bin/python
import os
print (20 * "-")
print (" Menu principal ")
print ("1. Analisi de contaminacio de basses")
print ("2. Calculs estadistics: Baix de codo")
print ("3. Sortir")
print (20 * "-")

salir_del_programa=0
while not salir_del_programa :
try :
choice = int ( raw_input('Selecciona una opcio valida [1-3] : ') )
if choice == 1:
os.system("clear")
print(20 * "-")
print(20 * "-")
print("Analisi de contaminacio de basses")
print(20 * "-")
print(20 * "-")
print("Introduzca una secuencia : ")
secuencia = raw_input()
secuencia = secuencia.split(' ')
lagos = {}
lagoactual = -1
tipodato = -1
for i in secuencia:
if i == "DQO":
tipodato = i
elif i == "O2":
tipodato = i
elif i == "DBO":
tipodato = i
elif i == "0":
lagoactual = -1
else:
if i != "-1":
if lagoactual == -1:
lagoactual = i
lagoactual = str(lagoactual)
if lagoactual not in lagos:
lagos[str(i)] = {}
lagos[str(i)]['DQO'] = {}
lagos[str(i)]['O2'] = {}
lagos[str(i)]['DBO'] = {}
else:
if tipodato != -1:
if tipodato == 'DQO':
leng = len(lagos[lagoactual]['DQO'])
lagos[lagoactual]['DQO'][leng] = i
elif tipodato == 'O2':
leng = len(lagos[lagoactual]['O2'])
lagos[lagoactual]['O2'][leng] = i
elif tipodato == 'DBO':
leng = len(lagos[lagoactual]['DBO'])
lagos[lagoactual]['DBO'][leng] = i
lagosmedia = {}
for lago in lagos:
lagosmedia[lago] = {}
mediadqo = 0
mediadbo = 0
mediao2 = 0
for dato in lagos[lago]:
if dato == "DQO":
for i in lagos[lago][dato]:
mediadqo = int(mediadqo) + int(lagos[lago][dato])
dividirdqo = 1
if len(lagos[lago]['DQO'])==0:
lagosmedia[lago]['dqo'] = -1
else:
if len(lagos[lago]['DQO'])>0:
dividirdqo = len(lagos[lago]['DQO'])
mediadqo = int(mediadqo) / int(dividirdqo)
lagosmedia[lago]['dqo'] = mediadqo
elif dato == "DBO":
for i in lagos[lago][dato]:
mediadbo = int(mediadbo) + int(lagos[lago][dato])
dividirdbo = 1
if len(lagos[lago]['DBO'])==0:
lagosmedia[lago]['dbo'] = -1
else:
if len(lagos[lago]['DBO'])>0:
dividirdbo = len(lagos[lago]['DBO'])
mediadbo = int(mediadbo) / int(dividirdbo)
lagosmedia[lago]['dbo'] = mediadbo

				elif dato == "O2":
					for i in lagos[lago][dato]:
						mediao2 = int(mediao2) + int(lagos[lago][dato][i])
					dividiro2 = 1
					if len(lagos[lago]['O2'])==0:
						lagosmedia[lago]['o2'] = -1
					else:
						if len(lagos[lago]['O2'])>0:
							dividiro2 = len(lagos[lago]['O2'])
						mediao2 = int(mediao2) / int(dividiro2)
						lagosmedia[lago]['o2'] = mediao2
					
		mindqo = 999999999999999999
		maxdqo = 0
		lagodqomin = -1
		lagodqomax = -1
		mindbo = 999999999999999999
		maxdbo = 0
		lagodbomin = -1
		lagodbomax = -1
		mino2 = 9999999999999999999
		maxo2 = 0
		lagoo2min = -1
		lagoo2max = -1
		o = 0
		print ("obteniendo resultado")
		for lago in lagosmedia:
			dqolago = lagosmedia[lago]['dqo']
			dbolago = lagosmedia[lago]['dbo']
			o2lago = lagosmedia[lago]['o2']
			
			if o == 0:
				if dqolago != -1:
					mindqo = dqolago
					maxdqo = dqolago
					lagodqomin = lago
					lagodqomax = lago
				if dbolago != -1:
					mindbo = dbolago
					maxdbo = dbolago
					lagodbomin = lago
					lagodbomax = lago
				if o2lago != -1:
					mino2 = o2lago
					maxo2 = o2lago
					lagoo2min = lago
					lagoo2max = lago
				
			else:
				if dqolago != -1:
					if dqolago < mindqo:
						lagodqomin = lago
						mindqo = dqolago
					if dqolago > maxdqo:
						lagodqomax = lago
						maxdqo = dqolago
				if dbolago != -1:

					if dbolago < mindbo:
						lagodbomin = lago
						mindbo = dbolago
					if dbolago > maxdbo:
						lagodbomax = lago
						maxdbo = dbolago
				if o2lago != -1:
					if o2lago < mino2:
						lagoo2min = lago
						mino2 = o2lago
					if o2lago > maxo2:
						lagoo2max = lago
						maxo2 = o2lago

						
			o = o + 1
		print ("La bassa amb mes DQO es: " + str(lagodqomax))
		print ("La bassa amb menys DQO es: " + str(lagodqomin))
		print ("La bassa amb mes DBO es: " + str(lagodbomax))
		print ("La bassa amb menys DBO es: " + str(lagodbomin))
		print ("La bassa amb mes o2 es: " + str(lagoo2max))
		print ("La bassa amb menys o2 es: " + str(lagoo2min))	
	elif choice == 2:
		os.system("clear")
		print("Accion2")
	elif choice == 3:
		os.system("clear")
		print(20 * "-");
		print("Moltes Gracies")
		salir_del_programa = 1
		print(20 * "-");
    except ValueError, e :
            print ("Introduce un numero del 1 al 5")
C

las caras son simples parentesis jejeje

Lecherito

Entre que está en catalán, sin indentar, y sin la etiqueta código... vas apañao, muchacho.

5
Fyn4r

No entiendo el enunciado pero bueno, podrías empezar por hacer un codigo legible, que tienes 170 lineas y ni una triste funcion

C

ya pero silo supiera hacer n pediria ayuda y nse necesita codigo fuente para hacer estos programuchos...

Nucklear

La solución es...

spoiler
1 respuesta
Ronso

LoooL catalan, todo a piñon, sin coregir los smyles... Apañao es poco xD

Eyvindur

Igual si lo tradujeras al español e hicieras un código legible alguien podría echarte una mano.

B

sube el codigo a pastebin, y le echaré un ojo

mortadelegle

Creo que un programador acaba de morir

2 1 respuesta
C

#6 pare eso n contestes anormal...

C

#10 nono si es una asignatur ak tengo porgramar n es mi intencion jamas...

1 respuesta
mortadelegle

#12 Vale, muy bien, pero te repito lo que han dicho antes, primero traduce el enunciado, asi probablemente pueda ayudarte mas gente, y segundo, por favor, usa la etiqueta code, no es tan complicado de verdad

KinachO

No hay recompensa, no hay ayuda para hacer los deberes.

Y menos unos que sean tan ilegibles.

Fin de la cita.

Tema cerrado

Usuarios habituales