Dans la continuité de Branchage conditionnel de Python appris par chimioinfomatique, j'expliquerai le «traitement d'itération» avec le thème de la lipidomique (analyse complète des lipides). Nous expliquerons principalement des exemples pratiques de chimioinfomatique, donc si vous souhaitez vérifier les bases, veuillez lire l'article suivant avant de lire cet article.
Un chercheur d'une société pharmaceutique a résumé les déclarations de contrôle Python
«for» peut être utilisé pour itérer un nombre prédéterminé de fois.
Comme pour variable in iterable (list etc.):
, Décrivez le contenu de traitement en coupant la ligne et en indentant 4 espaces demi-largeur.
carbon_numbers = [16, 18, 20, 22, 24]
for Cn in carbon_numbers:
print(Cn, 0, sep=':')
Dans l'exemple ci-dessus, les "nombres de carbone" sont utilisés comme liste d'atomes de carbone (longueur de chaîne) d'acides gras, et les abréviations d'acides gras saturés correspondant à chacun sont créées.
range
Vous pouvez également utiliser range
comme itérable.
range
est une image comme une liste continue d'entiers dans une plage spécifiée.
Cn = 22
for Un in range(4, 7):
print(Cn, Un, sep=':')
for Un in range(7):
print(Cn, Un, sep=':')
Dans l'exemple ci-dessus, «range (4, 7)» indique un entier continu de 4 à 6 (4, 5, 6). De plus, écrire «range (7)» signifie des entiers consécutifs de 0 à 6 (0, 1, 2, 3, 4, 5, 6). Ici, une valeur numérique indiquant le degré de saturation des acides gras (le nombre de doubles liaisons dans la chaîne carbonée) est générée.
enumerate
Vous pouvez récupérer le numéro d'index itérable et l'élément sous forme d'ensemble en utilisant ʻenumerate` comme indiqué ci-dessous.
fatty_acids = ['FA 16:0', 'FA 18:0', 'FA 18:1']
for fatty_acid in fatty_acids:
print(fatty_acid)
for i, fatty_acid in enumerate(fatty_acids):
print(f'{i}: {fatty_acid}')
Dans l'exemple ci-dessus, le numéro d'index de la liste «gras_acides» est stocké dans «i», la valeur de l'élément de la liste «gras_acids» est stockée dans l'ordre «gras_acid», et elle est sortie par «print». ..
Vous pouvez également parcourir un dictionnaire en utilisant for
.
Un exemple est présenté ci-dessous.
fatty_acids = {'Palmitic acid': 'FA 16:0', 'Stearic acid': 'FA 18:0', 'Oleic acid': 'FA 18:1'} #Nom et abréviation des acides gras (nom usuel)
for key in fatty_acids.keys(): #Clé du dictionnaire
print(key)
for value in fatty_acids.values(): #Valeur du dictionnaire
print(value)
for key, value in fatty_acids.items(): #Clés et valeurs du dictionnaire
print(f'{key} is {value}')
exact_mass = {'C': 12, 'H': 1.00783, 'O': 15.99491} #Symbole d'élément et poids atomique
formula_pa = {'C': 16, 'H': 32, 'O': 2} #Symbole d'élément et nombre d'atomes (formule de composition)
em_pa = 0
for key, value in formula_pa.items():
em_pa += exact_mass[key] * value #Multipliez le poids atomique et le nombre d'atomes
print(em_pa)
fatty_acids = {16: [0, 1], 18: [0, 1, 2, 3, 4], 20: [0, 3, 4, 5], 22: [0, 4, 5, 6]} #Un dictionnaire avec le nombre d'atomes de carbone de l'acide gras comme clé et le nombre de doubles liaisons comme valeur
for Cn, Uns in fatty_acids.items():
for Un in Uns:
print(Cn, Un, sep=':')
Ici, ʻa = a + n peut être écrit comme ʻa + = n
. La partie de ʻem_pa + = exact_mass [clé] * valeur signifie que chaque atome est multiplié par le poids atomique et le nombre d'atomes et ajouté à la variable ʻem_pa
qui calcule la masse précise.
Bien sûr, il peut également être combiné avec «si».
fatty_acids = ['FA 16:0', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 20:4', 'FA 22:6', 'FA 24:0']
saturated_fatty_acids = [] #Liste vide (j'entrerai des valeurs dans le traitement suivant)
unsaturated_fatty_acids = [] #Liste vide (j'entrerai des valeurs dans le traitement suivant)
for fatty_acid in fatty_acids:
if fatty_acid[-1] == '0':
saturated_fatty_acids.append(fatty_acid) #Les acides gras saturés
else:
unsaturated_fatty_acids.append(fatty_acid) #Acides gras insaturés
print(saturated_fatty_acids)
print(unsaturated_fatty_acids)
Utilisez break
comme indiqué ci-dessous pour interrompre le processus itératif.
ʻElse est utilisé pour décrire ce qui se passe lorsque le traitement itératif se termine sans
rupture`.
Ce n'est pas grave si vous n'avez pas «sinon».
fatty_acids = ['FA 16:0', 'FA 18:0', '', 'FA 18:1']
for fatty_acid in fatty_acids:
if fatty_acid == '':
print('C'est vide. Annule le traitement.')
break
print(fatty_acid) # 「FA 18:Sortie jusqu'à "0"
else:
print('Le processus est terminé.') #Pas de sortie ici
Dans l'exemple ci-dessus, le troisième élément en partant de la gauche de la liste gras_acids
est vide, donc itère jusqu'à l'élément précédent et imprime la valeur de l'élément.
Dans cet exemple, ʻelse et ci-dessous ne sont pas exécutés car le processus est interrompu par
break`.
D'un autre côté, utiliser continue
saute l'itération.
fatty_acids = ['FA 16:0', 'FA 18:0', '', 'FA 18:1']
for fatty_acid in fatty_acids:
if fatty_acid == '':
print('C'est vide. Sauter')
continue
print(fatty_acid) #Passer les éléments vides "FA 18:Sorties jusqu'à 1 "
Dans l'exemple ci-dessus, les éléments vides sont ignorés par «continue», de sorte que la valeur de l'élément n'est pas sortie, mais elle est traitée jusqu'à la fin et «FA 18: 1» est également sortie. Si ʻelse` est entré, ce qui suit sera également exécuté.
Ici, comme application, nous allons envisager de trouver le nombre d'atomes de carbone et le nombre de doubles liaisons dans la chaîne carbonée à partir de la chaîne de caractères écrite en notation SMILES.
smiles_fa = 'OC(CCCCCCC/C=C\C/C=C\CCCCC)=O'
Cn = 0
Un = 0
for i in range(len(smiles_fa)):
if smiles_fa[i] == 'C':
Cn += 1
elif smiles_fa[i] == '=' and smiles_fa[i+1] == 'C':
Un += 1
print(Cn, Un, sep=':')
En regardant la chaîne de caractères de gauche, si c'est «C», augmentez la variable «Cn» qui compte le nombre d'atomes de carbone par 1, et si «=» et le caractère suivant est «C» (il y a aussi du carbone carbonyle) Parce que), la variable «Un» qui compte le nombre de doubles liaisons est augmentée de 1.
Si vous utilisez while
, effectuez une itération tant que les conditions spécifiées sont remplies.
Décrivez le processus en coupant la ligne comme «condition while:» et en indentant 4 espaces demi-largeur.
saturated_fatty_acids = ['FA 16:0', 'FA 18:0']
unsaturated_fatty_acids = ['FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 20:4', 'FA 22:6']
fatty_acids = []
while len(saturated_fatty_acids) > 0:
fatty_acids.append(saturated_fatty_acids[-1])
saturated_fatty_acids.pop()
while len(unsatturated_fatty_acids) > 0:
fatty_acids.append(unsaturated_fatty_acids[-1])
unsaturated_fatty_acids.pop()
print(fatty_acids)
Dans l'exemple ci-dessus, les éléments sont pris à l'arrière des listes d'origine «satured_fatty_acids» et «unsatured_fatty_acids» et déplacés vers la nouvelle liste vide «gras_acids».
Ici, len (liste)> 0
fait référence au cas où la liste contient des éléments. Après avoir déplacé l'élément vers gras_acids
, j'essaye de supprimer l'élément de la liste d'origine avec pop
. Notez que si vous oubliez de supprimer ceci, le processus sera répété indéfiniment (boucle infinie).
Enfin, en tant qu'application, considérons de compter le nombre d'atomes de carbone en utilisant while
en notation SMILES.
smiles_fa = 'OC(CCCCCCCCCCCCCCC)=O'
Cn = 0
while 'C' in smiles_fa:
if smiles_fa[0] == 'C':
Cn += 1
smiles_fa = smiles_fa[1:]
print(Cn)
Si la chaîne SMILES contient le caractère «C» et que le caractère le plus à gauche est «C», augmentez la variable «Cn», qui compte le nombre d'atomes de carbone, de 1.
Le caractère le plus à gauche est effacé à chaque fois, qu'il s'agisse de «C» ou non.
Cela vous permettra de compter le nombre de C
s dans SMILES.
Comme mentionné ci-dessus, «for» est utilisé lorsque le nombre de répétitions est fixe, et «while» est utilisé lorsque le nombre de répétitions n'est pas fixe.
Ici, j'ai expliqué le traitement itératif de Python, en me concentrant sur les connaissances pratiques pouvant être utilisées en chimioinfomatique. Revoyons à nouveau les principaux points.
--for
peut être utilisé lorsque le nombre de répétitions est fixe. Vous pouvez également utiliser «pause» ou «continuer» pour arrêter ou ignorer le traitement dans certaines conditions.
Ensuite, l'article suivant explique les fonctions Python.
Fonctions Python apprises avec chemoinfomatics
Recommended Posts