Iterative Verarbeitung von Python durch Chemoinfomatik gelernt

Einführung

In Anlehnung an Bedingte Verzweigung von Python durch Chemoinfomatik werde ich die "Iterationsverarbeitung" mit dem Thema Lipidomik (umfassende Analyse von Lipiden) erläutern. Wir werden hauptsächlich praktische Beispiele für Chemoinfomatik erläutern. Wenn Sie also die Grundlagen überprüfen möchten, lesen Sie bitte den folgenden Artikel, bevor Sie diesen Artikel lesen.

Forscher eines Pharmaunternehmens haben die Python-Kontrollanweisungen zusammengefasst

zur Aussage

for kann verwendet werden, um eine vorbestimmte Anzahl von Malen zu wiederholen. Beschreiben Sie den Verarbeitungsinhalt als "für Variable in iterable (Liste usw.):", indem Sie die Zeile unterbrechen und 4 Leerzeichen mit halber Breite einrücken.

carbon_numbers = [16, 18, 20, 22, 24]

for Cn in carbon_numbers:
    print(Cn, 0, sep=':')

In dem obigen Beispiel wird "Kohlenstoffzahlen" als eine Liste von Kohlenstoffatomen (Kettenlänge) von Fettsäuren verwendet, und die entsprechenden Abkürzungen von gesättigten Fettsäuren werden erzeugt.

range

Sie können range auch als iterable verwenden. range ist ein Bild wie eine fortlaufende Liste von Ganzzahlen in einem bestimmten Bereich.

Cn = 22

for Un in range(4, 7):
    print(Cn, Un, sep=':')
    
for Un in range(7):
    print(Cn, Un, sep=':')

Im obigen Beispiel gibt "Bereich (4, 7)" eine kontinuierliche ganze Zahl von 4 bis 6 (4, 5, 6) an. Das Schreiben von "Bereich (7)" bedeutet auch aufeinanderfolgende ganze Zahlen von 0 bis 6 (0, 1, 2, 3, 4, 5, 6). Hier wird ein numerischer Wert erzeugt, der den Sättigungsgrad von Fettsäuren (die Anzahl der Doppelbindungen in der Kohlenstoffkette) angibt.

enumerate

Wenn Sie "Aufzählung" wie unten gezeigt verwenden, können Sie die iterierbare Indexnummer und das iterierbare Element als Satz abrufen.

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}')

Im obigen Beispiel wird die Indexnummer der Liste "Fettsäuren" in "i" gespeichert, die Werte der Elemente der Liste "Fettsäuren" werden in der Reihenfolge "Fettsäure" gespeichert und von "print" ausgegeben. ..

Wörterbuch

Sie können ein Wörterbuch auch mit for durchlaufen. Ein Beispiel ist unten gezeigt.

fatty_acids = {'Palmitic acid': 'FA 16:0', 'Stearic acid': 'FA 18:0', 'Oleic acid': 'FA 18:1'} #Name der Fettsäure (gebräuchlicher Name) und Abkürzung

for key in fatty_acids.keys(): #Wörterbuchschlüssel
    print(key)
    
for value in fatty_acids.values(): #Wörterbuchwert
    print(value)
    
for key, value in fatty_acids.items(): #Wörterbuchschlüssel und -werte
    print(f'{key} is {value}')

    
exact_mass = {'C': 12, 'H': 1.00783, 'O': 15.99491} #Elementsymbol und Atomgewicht
formula_pa = {'C': 16, 'H': 32, 'O': 2} #Elementsymbol und Anzahl der Atome (Zusammensetzungsformel)
em_pa = 0

for key, value in formula_pa.items():
    em_pa += exact_mass[key] * value #Multiplizieren Sie das Atomgewicht und die Anzahl der Atome
print(em_pa)


fatty_acids = {16: [0, 1], 18: [0, 1, 2, 3, 4], 20: [0, 3, 4, 5], 22: [0, 4, 5, 6]} #Ein Wörterbuch mit der Anzahl der Kohlenstoffatome der Fettsäure als Schlüssel und der Anzahl der Doppelbindungen als Wert

for Cn, Uns in fatty_acids.items():
    for Un in Uns:
        print(Cn, Un, sep=':')

Hier kann "a = a + n" als "a + = n" geschrieben werden. Der Teil "em_pa + = genaue_Masse [Schlüssel] * Wert" bedeutet, dass jedes Atom mit dem Atomgewicht und der Anzahl der Atome multipliziert und zu der Variablen "em_pa" addiert wird, die die genaue Masse berechnet.

Kombination mit bedingter Verzweigung

Natürlich kann es auch mit "wenn" kombiniert werden.

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 = [] #Leere Liste (Ich werde Werte in die nachfolgende Verarbeitung eingeben)
unsaturated_fatty_acids = [] #Leere Liste (Ich werde Werte in die nachfolgende Verarbeitung eingeben)

for fatty_acid in fatty_acids:
    if fatty_acid[-1] == '0':
        saturated_fatty_acids.append(fatty_acid) #Gesättigte Fettsäuren
    else:
        unsaturated_fatty_acids.append(fatty_acid) #Ungesättigten Fettsäuren
        
print(saturated_fatty_acids)
print(unsaturated_fatty_acids)

brechen und weitermachen

Verwenden Sie "break" wie unten gezeigt, um den iterativen Prozess zu unterbrechen. "else" wird verwendet, um zu beschreiben, was passiert, wenn die iterative Verarbeitung endet, ohne "zu brechen". Es spielt keine Rolle, ob Sie kein "Sonst" haben.

fatty_acids = ['FA 16:0', 'FA 18:0', '', 'FA 18:1']

for fatty_acid in fatty_acids:
    if fatty_acid == '':
        print('Es ist leer. Bricht die Verarbeitung ab.')
        break
    print(fatty_acid) # 「FA 18:Ausgabe bis "0"
else:
        print('Der Vorgang ist abgeschlossen.') #Hier nicht ausgegeben

Im obigen Beispiel ist das dritte Element von links in der Liste "fat_acids" leer, iteriert also bis zum vorherigen Element und gibt den Wert des Elements aus. In diesem Beispiel werden "else" und darunter nicht ausgeführt, da der Prozess durch "break" unterbrochen wird.

Wenn Sie dagegen "Weiter" verwenden, wird die Iteration übersprungen.

fatty_acids = ['FA 16:0', 'FA 18:0', '', 'FA 18:1']

for fatty_acid in fatty_acids:
    if fatty_acid == '':
        print('Es ist leer. Überspringen')
        continue
    print(fatty_acid) #Überspringen Sie die leeren Elemente "FA 18:Ausgänge bis zu 1 "

Im obigen Beispiel werden leere Elemente durch "Weiter" übersprungen, sodass der Elementwert nicht ausgegeben wird, sondern bis zum Ende verarbeitet wird und auch "FA 18: 1" ausgegeben wird. Wenn Sie "else" eingeben, wird auch Folgendes ausgeführt.

Anwendung: SMILES-Notation

Als Anwendung betrachten wir hier die Anzahl der Kohlenstoffatome und die Anzahl der Doppelbindungen der Kohlenstoffkette aus der in SMILES-Notation geschriebenen Zeichenfolge.

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=':')

Wenn Sie in der Zeichenfolge von links "C" sehen, erhöhen Sie die Variable "Cn", die die Anzahl der Kohlenstoffatome zählt, um 1, und wenn "=" und das nächste Zeichen "C" ist (es gibt auch Carbonylkohlenstoff). Weil) wird die Variable "Un", die die Anzahl der Doppelbindungen zählt, um 1 erhöht.

while-Anweisung

Wenn Sie "while" verwenden, iterieren Sie, solange die angegebenen Bedingungen erfüllt sind. Beschreiben Sie den Vorgang, indem Sie die Linie als "while-Bedingung" unterbrechen und 4 Leerzeichen mit halber Breite einrücken.

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)

Im obigen Beispiel werden die Elemente von der Rückseite der ursprünglichen Listen "gesättigte Fettsäuren" und "ungesättigte Fettsäuren" übernommen und in die neue leere Liste "Fettsäuren" verschoben. Hier bezieht sich "len (Liste)> 0" auf den Fall, in dem die Liste einige Elemente enthält. Nachdem ich das Element nach fat_acids verschoben habe, versuche ich, das Element mit pop aus der ursprünglichen Liste zu entfernen. Beachten Sie, dass der Vorgang auf unbestimmte Zeit wiederholt wird, wenn Sie vergessen, dies zu löschen (Endlosschleife).

Anwendung: SMILES-Notation

Lassen Sie uns abschließend als Anwendung die Anzahl der Kohlenstoffatome mit "while" in der SMILES-Notation zählen.

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)

Wenn die SMILES-Zeichenfolge das Zeichen "C" enthält und das Zeichen ganz links "C" ist, erhöhen Sie die Variable "Cn", die die Anzahl der Kohlenstoffatome zählt, um 1. Das Zeichen ganz links wird jedes Mal gelöscht, unabhängig davon, ob es "C" ist oder nicht. Auf diese Weise können Sie die Anzahl der C in SMILES zählen.

Wie oben erwähnt, wird "for" verwendet, wenn die Anzahl der Wiederholungen festgelegt ist, und "while" wird verwendet, wenn die Anzahl der Wiederholungen nicht festgelegt ist.

Zusammenfassung

Hier haben wir Pythons iterative Verarbeitung erklärt, wobei wir uns auf praktisches Wissen konzentrieren, das in der Chemoinfomatik verwendet werden kann. Lassen Sie uns die wichtigsten Punkte noch einmal überprüfen.

--for kann verwendet werden, wenn die Anzahl der Wiederholungen festgelegt ist. Sie können auch "break" oder "continue" verwenden, um die Verarbeitung unter bestimmten Bedingungen zu stoppen oder zu überspringen. --while hat keine feste Anzahl von Wiederholungen und kann verwendet werden, um den Vorgang zu wiederholen, bis die voreingestellten Bedingungen erfüllt sind. Es muss darauf geachtet werden, keine "Endlosschleife" zu erstellen.

Im folgenden Artikel werden die Python-Funktionen erläutert.

Mit Chemoinfomatik erlernte Python-Funktionen

Referenzmaterialien / Links

Überraschend wenige! ?? "Minimale" Kenntnisse für die Programmierung in einem Pharmaunternehmen erforderlich

Recommended Posts

Iterative Verarbeitung von Python durch Chemoinfomatik gelernt
Python lernen mit ChemTHEATER 03
Python lernen mit ChemTHEATER 05-1
Python lernen mit ChemTHEATER 02
Python lernen mit ChemTHEATER 01
Verbessertes Lernen ab Python
Maschinelles Lernen mit Python! Vorbereitung
Beginnend mit maschinellem Python-Lernen
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
"Scraping & maschinelles Lernen mit Python" Lernnotiz
FizzBuzz in Python3
Scraping mit Python
[Python] Lernnotiz 1
Python-Lernnotizen
Statistik mit Python
Scraping mit Python
Python mit Go
Python-Lernausgabe
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
Twilio mit Python
In Python integrieren
Spielen Sie mit 2016-Python
AES256 mit Python
Python-Lernseite
Getestet mit Python
Python-Lerntag 4
Python beginnt mit ()
[Shakyo] Begegnung mit Python zum maschinellen Lernen
mit Syntax (Python)
Python Deep Learning
Python-Lernen (Ergänzung)
Zundokokiyoshi mit Python
Datenanalyse beginnend mit Python (Datenvorverarbeitung - maschinelles Lernen)
[Python] Probieren Sie mit Keras-RL ganz einfach erweitertes Lernen (DQN) aus
Python-Lernnotizen
Aufbau einer KI / maschinellen Lernumgebung mit Python
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
[Python] Einfache Einführung in das maschinelle Lernen mit Python (SVM)
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
[Python] Sammeln Sie Bilder mit Icrawler für maschinelles Lernen [1000 Blatt]
Ich habe mit der maschinellen Vorverarbeitung von Python Data begonnen
Erstellen Sie eine Python-Umgebung für maschinelles Lernen mit Containern
Serielle Kommunikation mit Python
Zip, entpacken mit Python
Django 1.11 wurde mit Python3.6 gestartet
Primzahlbeurteilung mit Python
Python mit Eclipse + PyDev.
Socket-Kommunikation mit Python
Datenanalyse mit Python 2
Scraping in Python (Vorbereitung)
Sequentielle Suche mit Python
Python-Modul (Python-Lernnotiz ④)
Führen Sie Python mit VBA aus
Umgang mit Yaml mit Python
Erweitertes Lernen 1 Python-Installation
Löse AtCoder 167 mit Python
Serielle Kommunikation mit Python