Variables Python et types de données appris avec la chimio-automatique

introduction

Les travaux des sociétés pharmaceutiques portent souvent sur la structure des composés. Des compétences dans la mesure de la concentration et l'analyse structurelle de nouveaux composés candidats-médicaments synthétisés en interne et de leurs métabolites, ainsi que des métabolites endogènes (acides aminés, sucres, lipides, etc.) naturellement présents dans l'organisme sont importantes.

Par conséquent, ici, nous allons expliquer la programmation Python à l'aide de Lipidomics, qui est une analyse complète des lipides existant dans le corps vivant. Il existe des espèces moléculaires avec diverses structures dans le corps des lipides, et il existe plus d'un million d'espèces moléculaires qui peuvent générer des structures avec * in silico *. Il est pratiquement difficile de décrire manuellement la structure de chacune de ces espèces moléculaires et de calculer les valeurs de propriétés physiques telles que le poids moléculaire et la polarité, et la programmation est essentielle.

Si nous pouvons gérer la structure et les propriétés physiques des lipides par programmation, cela sera applicable à la chimioinfomatique pour de nouveaux composés candidats-médicaments, j'espère donc que vous l'apprendrez.

Cette fois, je vais expliquer les "variables et types de données". 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 de la société pharmaceutique a résumé les règles de description de base de Python Les chercheurs des sociétés pharmaceutiques ont résumé les variables en Python Les chercheurs des sociétés pharmaceutiques ont résumé les opérateurs utilisés dans Python

Veuillez lire l'article suivant sur la construction d'environnement.

Comment installer Anaconda pour les chercheurs des sociétés pharmaceutiques

Chaînes et nombres

Créer et générer des variables

Vous pouvez créer une nouvelle variable en définissant variable = valeur. Vous pouvez également utiliser print () pour imprimer les objets entre parenthèses (valeurs des variables, résultats de l'exécution du programme, etc.). Les chaînes de caractères après «#» sont reconnues comme commentaires et sont exclues de la plage d'exécution du programme. Il peut être utilisé pour écrire des notes dans le script ou pour empêcher l'exécution de la partie où l'erreur se produit.

lipid_class = 'FA' #Chaîne
Cn = 16 #Valeur numérique
Un = 0 #Valeur numérique

print(lipid_class) #Lipide variable_Sortie de la valeur de "classe"
print(Cn) #Sortie de la valeur de la variable "Cn"
print(Un) #Sortie de la valeur de la variable "Un"

Vous pouvez également créer plusieurs variables sur une seule ligne, comme indiqué ci-dessous. De plus, en définissant print (objet 1, objet 2), il sera affiché comme ʻobjet 1 (espace demi-largeur) objet 2. Si vous voulez changer l'espace demi-largeur en un autre caractère ou symbole, vous pouvez le changer avec sep =. Si sep = '' est défini, ʻobject 1 et object 2 sont concaténés et sortis sans espaces.

Cn, Un = 16, 0 # 「Cn = 16、Un =Signifie "0"
print(Cn) #"16" est sorti
print(Un) #"0" est émis
print(Cn, Un) #"160" est émis
print(Cn, Un, sep='Quand') # 「16Quand0」Quand出力される

Comment nommer des variables et des notes

Tout d'abord, le nom de la variable utilise essentiellement des mots anglais, et il n'est pas possible de donner un nom de variable commençant par un nombre (il est également possible d'utiliser un nombre s'il s'agit du deuxième caractère ou plus tard). Il est bon d'utiliser un nom de variable qui vous permet de voir en un coup d'œil quelle valeur est stockée dans la variable. S'il y a plusieurs mots, séparez-les par _ (trait de soulignement) et écrivez essentiellement chaque mot dans toutes les lettres minuscules.

Lorsque vous nommez des variables, vous devez faire attention à ne pas utiliser de mots-clés (mots réservés) définis à l'avance dans Python. Vous pouvez vérifier les mots réservés avec le script suivant. (Vous n'avez pas besoin de connaître les détails tels que ʻimport` pour l'instant. J'espère que vous pourrez le vérifier en exécutant simplement le script suivant en tant que copie et rythme.)

import keyword
import pprint


pprint.pprint(keyword.kwlist, compact=True)

Le résultat de l'exécution est le suivant. N'utilisez pas de noms de variables pour tout ce qui est inclus ci-dessous.

['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue',
 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global',
 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise',
 'return', 'try', 'while', 'with', 'yield']

Remarques sur les chaînes de caractères et comment vérifier le type de données

La chaîne doit être placée entre `` '' (guillemets). Inversement, les nombres entre guillemets sont également traités comme des chaînes.

Cn_int = 16 #"16" comme valeur numérique
print(type(Cn_int)) # <class 'int'>

Cn_str = '16' #"16" comme chaîne de caractères
print(type(Cn_str)) # <class 'str'>

Vous pouvez vérifier le type de données de l'objet entre parenthèses en utilisant type.

Séquence d'échappement

Une chaîne de caractères spéciale (séquence d'échappement) est fournie au cas où vous souhaiteriez écrire une citation ou commencer une nouvelle ligne dans la citation. Un exemple est présenté ci-dessous.

print('molecular species: FA 16:0')
print('\'molecular species: FA 16:0\'') #Ajouter des devis
print('molecular species: \nFA 16:0') #Insérer un saut de ligne

Dans l'exemple ci-dessus, \ '' représente `'' lui-même. Par conséquent, la citation est sortie séparément de la citation qui entoure la chaîne de caractères. De plus, «\ n» indique un saut de ligne. Par conséquent, dans le résultat de sortie de «impression», un saut de ligne est inséré après «espèce moléculaire:».

Concaténation de chaînes

Ici, "FA" stocké dans la variable "lipid_class" est une abréviation pour "acide gras" ou "acide gras". «lipid_class» est la «classe des lipides» en japonais et indique la catégorie des lipides. De plus, "Cn" est le "nombre d'atomes de carbone", c'est-à-dire le nombre d'atomes de carbone (longueur de la chaîne carbonée). ʻUn` indique le "nombre (degré) d'insaturation" c'est-à-dire le degré d'insaturation (le nombre de doubles liaisons).

Dans la classe des lipides, les acides gras ont la structure la plus simple, et si vous spécifiez «Cn» et «Un», la structure est presque déterminée. De nombreuses autres classes de lipides ont une structure chimique dans laquelle les acides gras sont liés au squelette, comme le glycérol, et la partie du squelette caractérise la classe des lipides. En combinant la classe des lipides, le nombre d'atomes de carbone et le degré de saturation, l'espèce moléculaire du lipide est presque déterminée. Alors, envisagez de combiner lipid_class, Cn et ʻUn` comme une chaîne.

À propos, l'espèce moléculaire des acides gras avec 16 atomes de carbone et 0 double liaison est l'acide palmitique. La structure chimique de l'acide palmitique est publiée sur la page liée ci-dessous, veuillez donc vous y référer le cas échéant. Palmitic acid (FA 16:0) | LIPID MAPS Structure Database

lipid_class = 'FA'
Cn = 16
Un = 0

molecular_species = lipid_class + ' ' + str(Cn) + ':' + str(Un)
print(molecular_species) # 「FA 16:0 "est émis

Vous pouvez combiner des chaînes en utilisant «+». Ici, '' est un espace demi-largeur. De plus, str est une abréviation de" string ", qui convertit l'objet entre parenthèses en données de chaîne. Ceci est dû au fait que «Cn» et «Un» sont des nombres ici, ils ne peuvent donc pas être combinés comme une chaîne tels quels. De plus, dans le domaine de la lipidomique, il est courant de relier "Cn" et "Un" avec ":".

Utilisez ʻintoufloat pour convertir un numéro de chaîne en données numériques. ʻInt est une abréviation pour "entier" et fait référence à un entier, et "float" se réfère à un nombre avec une virgule décimale (nombre à virgule flottante).

Cn = 16

Cn_str = str(Cn)
Cn_int = int(Cn_str)
print(type(Cn_str)) # <class 'str'>
print(type(Cn_int)) # <class 'int'>


exact_mass = 256.2402 #Masse de précision de l'acide palmitique
exact_mass_str = str(exact_mass)
exact_mass_float = float(exact_mass_str)
print(type(exact_mass_str)) # <class 'str'>
print(type(exact_mass_float)) # <class 'float'>

La différence entre l'utilisation de l'opérateur «+» pour les données numériques et son utilisation pour les données de chaîne de caractères est la suivante.

Cn = 16
Un = 0

print(Cn + Un) #Valeur numérique "16"
print(type(Cn + Un))

print(str(Cn) + str(Un)) #Chaîne de caractères "160" (chaîne de caractères dans laquelle les 1, 6 et 0 sont alignés)
print(type(str(Cn) + str(Un)))

Lorsque des variables numériques sont ajoutées ensemble, l'ajout est effectué normalement, mais lorsque des variables de chaîne sont ajoutées ensemble, les chaînes de caractères sont combinées. (Ajouter Cn et ʻUn` n'a pas de signification chimique, mais ici il est donné à titre d'exemple pour montrer le comportement du programme.)

Vous pouvez également combiner des chaînes (incorporer des valeurs de variables dans des chaînes) en écrivant comme suit.

lipid_class = 'FA'
Cn = 16
Un = 0

molecular_species = '{0} {1}:{2}'.format(lipid_class, Cn, Un)
print(molecular_species) #C'est aussi "FA 16:0 "est émis

Écrivez «{}» dans la citation, arrangez les variables entre parenthèses du «format» et mettez le 0, 1 et 2 entre parenthèses du «format» dans l'ordre du «{}». Il est intégré à partir de la variable de gauche. Dans le monde de la programmation, les numéros de série commencent souvent par le numéro 0 au lieu du numéro 1, soyez donc prudent lorsque vous démarrez la programmation.

De plus, dans Python 3.6 et versions ultérieures, il est possible d'incorporer des variables dans une chaîne de caractères avec une méthode d'écriture plus simple appelée "f-string" comme indiqué ci-dessous.

lipid_class = 'FA'
Cn = 16
Un = 0

molecular_species = f'{lipid_class} {Cn}:{Un}'
print(molecular_species)

Définissez simplement la chaîne de caractères que vous voulez créer comme «f'character string» et mettez le nom de la variable dans «{}», et la partie «{}» sera remplacée par la variable spécifiée.

Remplacement de la chaîne de caractères

Vous pouvez utiliser replace pour remplacer une chaîne particulière par une autre.

molecular_species = 'FA 16:0'

print(molecular_species.replace(':', '_')) # 「:"(Colon) à"_"(Souligner)
print(molecular_species.replace(' ', '')) #Supprimer l'espace demi-largeur

Application: notation SMILES

Il existe une méthode appelée "notation SMILES (système d'entrée de ligne de saisie moléculaire simplifié)" comme méthode de description de la structure d'un composé. Vous pouvez décrire la structure chimique avec juste une chaîne, comme indiqué ci-dessous.

smiles_pa = 'OC(' + 'C' * (Cn - 1) + ')=O' # 'pa'Est'palmitic acid'Abréviation pour
print(smiles_pa)

Comme indiqué ci-dessus, la notation SMILES décrit la structure chimique sans utiliser l'atome d'hydrogène (H). Avec la notation SMILES, la structure moléculaire peut être décrite automatiquement même si la valeur de «Cn» change. * peut être utilisé non seulement pour multiplier les nombres, mais aussi pour répéter la même chaîne.

Ensuite, considérons une espèce moléculaire appelée acide linoléique, qui a 18 atomes de carbone et 2 doubles liaisons. Linoleic acid (FA 18:2) | LIPID MAPS Structure Database

smiles_la = 'OC(CCCCCCC/C=C\C/C=C\CCCCC)=O' #L'acide linoléique

Les doubles jointures sont décrites en utilisant =. / et \ indiquent si la double liaison est * cis * ou * trans *, * cis * si les symboles avant ou après l'atome de carbone formant la double liaison ont des orientations différentes, et s'ils ont la même orientation. Cela devient * trans *.

smiles_la = 'OC(CCCC/C=C\C/C=C\CCCCCCCC)=O' #L'acide linoléique

smiles_la_oxidized = smiles_la.replace('/C=C\C', 'C(O)CC')
print(smiles_la_oxidized)

De cette manière, le "replace" mentionné ci-dessus peut être utilisé pour exprimer l'oxydation de la partie à double liaison. Au fait, il semble qu'il puisse être remplacé par .replace ('/ C = C \', 'C (O) C'), mais la partie après / C = C \ ' ' La séquence d'échappement mentionnée ci-dessus et les guillemets pour fermer la chaîne sont reconnus comme des guillemets dans la chaîne, ce qui entraîne une erreur de syntaxe. Donc, ici, j'ai mis un autre atome de carbone à droite et l'ai fait .replace ('/ C = C \ C', 'C (O) CC')`.

Valeur booléenne

Les valeurs booléennes (Boolean) font référence à des types de données qui sont soit «Vrai» soit «Faux». Il peut être utilisé pour comparer si plusieurs variables sont identiques ou pour savoir si une certaine condition est remplie.

palmitic_acid = 'FA 16:0' #Acide palmitique (acide gras saturé à 16 atomes de carbone)
stearic_acid = 'FA 18:0' #Acide stealique (acide gras saturé avec 18 atomes de carbone)

print(molecular_species == palmitic_acid) # True
print(molecular_species == stearic_acid) # False

Un acide gras avec 16 atomes de carbone et 0 double liaison est "acide palmitique", et non "acide stéarique".

Résumé

Ici, nous avons expliqué les variables et les types de données Python, en nous concentrant sur les connaissances pratiques qui peuvent être utilisées en chimioinfomatique. Revoyons à nouveau les principaux points.

Ensuite, l'article suivant explique la structure des données de Python (liste, dictionnaire, etc.).

Structure de données Python apprise avec chemoinfomatics

Documents de référence / liens

Étonnamment peu! ?? Connaissances "minimales" requises pour la programmation dans une entreprise pharmaceutique

Recommended Posts

Variables Python et types de données appris avec la chimio-automatique
Classe Python pour apprendre avec la chimioinfomatique
Fonctions Python apprises avec la chimioinfomatique
Structure de données Python apprise avec la chimioinfomatique
Hashing de données en R et Python
Représentez facilement des données graphiques dans le shell et Python
Recevoir et afficher les données de formulaire HTML en Python
[Python] Permutation des lignes et des colonnes de données Numpy
[python] Différence entre variable et self. Variable dans la classe
TensorFlow: exécuter des données apprises en Python sur Android
Organiser les types en Python
fonctions cv2 et types de données (liaison python OpenCV)
Premiers pas avec python3 # 2 En savoir plus sur les types et les variables
Traitement pleine largeur et demi-largeur des données CSV en Python
Différence entre Ruby et Python en termes de variables
Symboles logiques appris dans le mariage (et exemples d'implémentation en Python)
Gérer les données ambiantes en Python
Python: variables de classe et d'instance
Refactoring appris avec Python (Basic)
À propos des variables et des objets Python
Afficher les données UTM-30LX en Python
Gérer les variables d'environnement en Python
Variables de classe et d'instance Python
Pile et file d'attente en Python
Variables Python et ID d'objet
Unittest et CI en Python
Ce que j'ai appris en Python
Code de caractère appris en Python
Avec les types de données algébriques et FizzBuzz
Ordre de référence des variables de classe et des variables d'instance dans "self. Variables de classe" en Python
Afficher les nombres et les caractères affectés aux variables dans l'impression python
Graphique des données de séries chronologiques en Python à l'aide de pandas et matplotlib
Obtenez des données LeapMotion en Python.
Notes sur Python et les types de dictionnaire
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Différence entre list () et [] en Python
Différence entre == et est en python
Afficher les photos en Python et html
Lire les données des tampons de protocole avec Python3
Algorithme de tri et implémentation en Python
Obtenir des données de Quandl en Python
Les mines terrestres cachées dans les variables de classe Python
Manipuler des fichiers et des dossiers en Python
À propos de Python et Cython dtype
Gérez les données au format NetCDF avec Python
Affectations et modifications des objets Python
Avec les types de données algébriques et la correspondance de modèles
Vérifiez et déplacez le répertoire en Python
Utilisation de variables globales dans les fonctions python
Chiffrement avec Python: IND-CCA2 et RSA-OAEP
J'ai essayé d'étudier le processus avec Python
Synthèse de fonctions et application en Python
Utilisation élémentaire d'ITK apprise avec Python
Exporter et exporter des fichiers en Python
Avec les types de données algébriques et la programmation orientée objet
Inverser le pseudonyme plat et le katakana en Python2.7
Lire et écrire du texte en Python
[GUI en Python] Menu PyQt5 et barre d'outils-
Créer et lire des paquets de messages en Python