CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

HELP! Examen python

PoneyDruNevada
PoneyDruNevada
Niveau 4
17 janvier 2013 à 08:54:31

Mon partiel de python commence dans 5min, des volontaires pour m'aider?

guyver2
guyver2
Niveau 10
17 janvier 2013 à 09:01:40

Mais oui envoie on va t'aider. N'est ce pas les gars ? :)
Ce serai injuste que juste parce que t'as rien glandé du semestre tu te tape une sale note.

PoneyDruNevada
PoneyDruNevada
Niveau 4
17 janvier 2013 à 09:04:10

J'ai pas "rien glandé", les cours sont fait par un thésard en informatique, et nous on est en bio. Et le prof est, comme qui dirait, dans sa bulle... :)

PoneyDruNevada
PoneyDruNevada
Niveau 4
17 janvier 2013 à 09:07:34

A tout hasard :

2 Exercice 1
Les fonctions sont à coder dans le fichier exercice1.py.
1. Écrire la fonction freq_codon(seq: string, codon: string) -> float qui renvoie la frequence (probabilité) du codon codon dans la séquence d’ADN seq. Si la séquence termine
sur un codon « incomplet », il ne sera pas comptabilisé dans le calcul de la probabilité. (Astuce : initialiser une variable x = 0.0 au lieu de x = 0 permet de la considérer comme un
réel et de faire tous les calculs la concernant en flottant). Pour le découpage en codon, on ne
considérera uniquement que le 1er frame de lecture.

freq_codon("GGATTATCGTTA", "TTA")

0.5

freq_codon("","TCT")

0.0

freq_codon("TCTTCTAG", "TCT")

1.0
2. Écrire la fonction what_is_it(seq: string) -> string qui prend en argument une chaîne
de caractère et retourne la chaîne de caractères :
– « DNA »si seq est composée uniquement des caractères A, T, C, G,
– « RNA »si seq est composée uniquement des caractères A, U, C, G,
1 / 4Partiel: Bio-informatique
2012 - 2013
– « Both »si les caractères de seq ne permettent pas de distinguer entre ARN et ADN,
– « None »sinon.

what_is_it("ATCG")

’DNA’

what_is_it("AUCG")

’RNA’

what_is_it("ACCCG")

’Both’

what_is_it("ACGTU")

’None’
3. Écrire la fonction transcript_file(filename: string) -> None qui prend en argument
le chemin vers un fichier ayant le format suivant :
gene1 sequence1
gene2 sequence2
...
genen sequencen
où chaque ligne contient un nom de gène et une séquence séparés par un espace. La fonction
doit afficher avec le même format le nom du gène et la séquence transcrite correspondante.
Par exemple, soit le fichier sequences.txt (présent sur l’intranet) dont le contenu est :
SRlUOp CAGTGCCCATAATTTTGCAGAAGAGCCCCGC
RMschW GGCCTACAGATACATCGCAGGAACGA
hTuplY TTTCTAGGACTACTGAACGTCTTCGCC
btPRtP GACACCCCTTCACATGTGCCGCGTCTGGCGCGA
BFxSpQ TCATGGTACACATACCGGAGTCCCATTG

transcript_file("sequences.txt")

SRlUOp GUCACGGGUAUUAAAACGUCUUCUCGGGGCG
RMschW CCGGAUGUCUAUGUAGCGUCCUUGCU
hTuplY AAAGAUCCUGAUGACUUGCAGAAGCGG
btPRtP CUGUGGGGAAGUGUACACGGCGCAGACCGCGCU
BFxSpQ AGUACCAUGUGUAUGGCCUCAGGGUAAC
3 Exercice 2
Les fonctions sont à coder dans le fichier exercice2.py.
Aligner deux séquences consiste à insérer des trous dans les séquences afin de minimiser le
nombre de discordances (mismatch). Une discordance est soit :
– Une substitution (mutation) où on aligne deux nucléotides différents.
– Un indel (insertion-deletion) où un nucléotide est aligné avec un trou (gap).
Les séquences, une fois alignées, ont forcément la même longueur. Le nombre de total de discordances est la distance d’alignement.
Soit par exemple l’alignement suivant :
AT-ACG
-TTACT
Cet alignement possède 2 indels, 1 substitutions et donc une distance de 3.
1. Écrire la fonction info(x: string, y:string) -> tuple qui à partir de deux séquences
x et y alignées, retourne un couple composée du nombre de substitutions, et du nombre
d’indels.
2 / 4Partiel: Bio-informatique
2012 - 2013

info("ATCG", "A-CT")

(1, 1)

info("A--T", "-CAT")

(0, 3)
2. On souhaite pondérer le côut de substitution par rapport au coût d’indel. Soit a le coût d’une
substitution et b le cout d’un indel. Écrire la fonction distance(x: string, y: string,
a: float, b: float) -> float qui à partir de deux séquences alignées retourne le score
d’alignement en respectant ces pondérations. Vous pouvez bien évidemment utiliser la fonction précédente.

distance("AT-ACG", "-TTACT", 1, 1) # 2*1 + 1*1

3

distance("AT-ACG", "-TTACT", 0.5, 2) # 2*2 + 0.5*1

4.5
3. Plusieurs alogorithmes ont été utilisé pour aligner deux séquences et on souhaite selectionner le meilleur alignement (cet à dire celui avec la plus petite distance). Écrire la fonction select_alignment(alignments: list, a: float, b: float) -> tuple qui à partir d’une liste d’alignements (i.e, une liste de couple (x; y)) selectionne celui avec de distance
minimale en respectant les pondérations a et b. (Astuce : v = infty permet d’initialiser v
à +1.)
Soit par exemple les alignements suivants :
TATA-C-C
T-TAGCGC
-TATAC-C
TTA-GCGC
-TATACC
TTAGCGC

mylist = [ ("TATA-C-C","T-TAGCGC"),("-TATAC-C","TTA-GCGC"), ("-TATACC", "TTAGCGC") ]
select_alignment(mylist, 1, 1)

(’TATA-C-C’, ’T-TAGCGC’)

select_alignment(mylist, 1, 2)

(’-TATACC’, ’TTAGCGC’)
4 Exercice 3
Les fonctions sont à coder dans le fichier exercice3.py. Une entreprise de pharma a mis au
point deux nouveaux tests de dépistage d’une maladie. Les tests ont été menés au sein d’une
population de 5000 personnes tirées au hazard. Les résultats sont sous forme d’un tableau dans le
fichier analysis.csv disponible sur l’intranet. Ce fichier est composée de 4 colonnes séparées par
des espaces :
1. la première colonne est le nom du patient (inutile ici),
2. la seconde est le phénotype du patient, 1 signifie qu’il est malade 0 qu’il est sain,
3. la troisième est le résultat du test A, 1 signifie qu’il a été depisté malade, 0 qu’il a été dépisté
sain,
4. la dernière est le résultat du test B, 1 signigie qu’il a été depisté malade, 0 qu’il a été depisté
sain.
La premier ligne du fichier renseigne les noms de colonnes, elle est donc inutile. Voici un extrait
du fichier :
Patient Type TestA TestB
tkQjKR 0 0 0
RhtpqJ 1 1 1
Ucuqtj 0 0 0
CDRfBD 0 0 0
3 / 4Partiel: Bio-informatique
2012 - 2013
DhhYiE 1 1 0
qsdHba 1 1 0
rwPjIu 1 1 1
gdQnJW 0 0 0
sIaTCo 0 0 1
TQHvVN 0 1 0
SlVoJe 0 1 0
SUPjRm 0 0 1
...
Questions
1. Écrire la fonction analysis(filename: string) -> None est qui affiche les statistiques
suivantes :
– La probabilité que le patient soit sain :
– La probabilité que le patient soit malade :
– La sensibilité du test A :
– La sensibilité du test B :
– Le taux de faux positifs du test A :
– Le taux de faux positifs du test B :
– Le taux de bonne classification du test A :
– Le taux de bonne classification du test B :
(Vous êtes libres d’écrire autant de fonctions annexes que vous le souhaitez).
Test Négatif Test Positif
Patient (négatif) sains TN FP
Patient (positif) malade FN TP
On appelle :
Sensibilité la probabilité que détecter positivement (comme malade) un patient malade :
Sensibilite =
T P
F N + T P
Taux de faux positif la probabilité de détecter positivement (comme malade) un patient
sain.
f pr =
F P
T N + F P
Taux de bonne classification la probabilité de prédire correctement (prédire malade quand
le patient est malade, sain quand le patient est sain).
accuracy =
T N + T P
T N + T P + F N + F P

analysis("analysis.csv")

La probabilité que le patient soit sain: 0.801
La probabilité que le patient soit malade: 0.199
La sensibilité du test A: 0.895477386935
La sensibilité du test B: 0.691457286432
Le taux de faux positifs du test A: 0.398501872659
Le taux de faux positifs du test B: 0.103870162297
Le taux de bonne classification du test A: 0.66
Le taux de bonne classification du test B: 0.8554
2. Quel test vous semble le plus efficace ? Justifiez votre réponse (quel critère vous permet
d’affirmer cela). Que pourrait-on faire pour améliorer la détection ? Répondez à cette question
en utilisant un commentaire python à la fin de votre fichier.

guyver2
guyver2
Niveau 10
17 janvier 2013 à 09:09:33

lol, "les cours sont fait par un thésard en info". Alors t'as du bol. Il pratique certainement bcp plus la prog et le python que le maitre de conf en charge du cours :)

T'es en bio alors l'info c'est loin d'etre une priorité ou une passion (en general), c'est normal. Pour te rassurer tu peux te dire qu'une sale note avec un petit coef c'est pas la mort ; pour peu que tu ai un poil bosser dans les autres matières.

aller, bon courage

PoneyDruNevada
PoneyDruNevada
Niveau 4
17 janvier 2013 à 09:16:51

Ok, aucune chance d'obtenir de l'aide? :(

guyver2
guyver2
Niveau 10
17 janvier 2013 à 09:25:49

non, pas ici. Si tu avais demandé plus tot tu t'en serai rendu compte. Mais pour ça comme pour les révisions, généralement il vaut mieux s'y prendre un peu plus tot que 3 minutes avant.

Et encore tu as du bol de tomber sur moi :) Certain ici auraient été bcp plus rude et cassant (j'ai meme hesité un instant a te filer du code pourri :) ). On est plusieurs a avoir une expérience de l'enseignement supérieur, en tant que maitre de conf ou juste des (ex-)thésard en informatique. Crois moi les tricheurs et les glandeurs ça se repère a 100 lieues et ils ne suscitent jamais la pitié, quelque soit leur excuse (étrangement à les écouter c'est toujours la faute de qq'un d'autre, tu ne fais pas écart a la règle)

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment