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ú:
- Anàlisi de contaminació de basses
- Càlculs estadístics: Biaix de codó
- 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ó:
- 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
- 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")