Jeu de main Python (calculé plein de mordred)

Quel est cet article?

Un article de chimioinformatique. Il a dit qu'il utilisait Mordred (1.0.0), une bibliothèque de calcul de descripteurs, et a finalement trouvé l'inf comme résultat du calcul.

Contexte

Récemment, je m'occupe du résultat du calcul des descripteurs depuis un certain temps. Donc, il semble y avoir un résultat de "inf". Mais je ne l'ai jamais vu. J'ai recherché à la légère environ 1000, mais je n'ai pas pu le trouver. Ensuite, ouvrons-le à nouveau et calculons des dizaines de milliers de cas pour le trouver.

politique

Calcul de Mordred normalement. Donc, ajoutez sauf à chaque fois qu'une erreur se produit. J'avais l'impression qu'il continuerait à fonctionner pendant longtemps.

environnement

L'environnement suivant créé à partir d'Anaconda sur Windows 10 Pro (x64).

# Name                    Version                   Build  Channel
python                    3.6.8                h9f7ef89_7
rdkit                     2017.09.2.0      py36he334aed_1    rdkit
mordred                   1.0.0                    py36_0    mordred-descriptor

Je ne pense pas que cela affectera autre chose que ce qui précède.

résultat

Ceci est le code.

from rdkit import Chem
from mordred import Calculator, descriptors
from mordred import error as err
from datetime import datetime

descs = Calculator(descriptors, ignore_3D=False).descriptors

# ------------------------------------------------------
#  functions
# ------------------------------------------------------


# get compounds
def get_mols(file):
    return Chem.SDMolSupplier(file)


# write text
def output_text(filename, mode, values):
    with open(filename + '.csv', mode) as f:
        f.write(','.join(values) + '\n')


# calculation
def calculate_desc(calc, mol):
    value = None
    try:
        value = calc(mol)
    except ZeroDivisionError as e:
        value = 'errZero'
    except IndexError as e:
        value = 'errIndex'
    except ValueError as e:
        value = 'errValue'
    except NameError as e:
        value = 'errNone'
    except err.Missing3DCoordinate as e:
        value = 'err3D'
    except err.MultipleFragments as e:
        value = 'errMulti'
    return str(value)


# print log
def printlog(value):
    print(str(datetime.now()) + ',' + str(i))

# ------------------------------------------------------
#  main
# ------------------------------------------------------


# get compounds
filename = 'CHEMBL503873'
mols = get_mols(filename + '.sdf')

# get calculators
headers = list()
calcs = list()
headers.append('Name')
for i in range(1824):
    calcs.append(descs[i])
    headers.append(calcs[i].__str__())

# output
output_text(filename, 'w', headers)
printlog(0)
for i, mol in enumerate(mols):
    values = list()
    if mol is not None:
        values.append(mol.GetProp('_Name'))
        for calc in calcs:
            values.append(calculate_desc(calc, mol))
        output_text(filename, 'a', values)
        if i % 100 == 0:
            printlog(i)

Donc, je l'intègre dans le script, mais c'est le composé que j'ai trouvé.

https://www.ebi.ac.uk/chembl/compound_report_card/CHEMBL503873/

CHEMBL503873 C70H108O24

CO[C@H]1C[C@H](COC[C@@H]2[C@@H](C)O[C@H](C[C@@H]2OC)O[C@H]3CC[C@]4(C)[C@H]5C[C@@H](OC(=O)\C=C\c6ccccc6)[C@]7(C)[C@@](O)(CC[C@]7(O)[C@]5(O)CC=C4C3)C(=O)C)O[C@@H](C)[C@H]1COC[C@H]8C[C@H](OC)[C@H](COC[C@H]9C[C@@H](OC)[C@@H](O[C@H]%10O[C@@H](CO)[C@H](O)[C@@H](O)[C@@H]%10O)[C@H](C)O9)[C@@H](C)O8

Donc, ceci est une confirmation au cas où.

■ Jeu à la main en Python (calcul des descripteurs en unités de mordred) https://qiita.com/siinai/items/026aad1f05c9f6d51199

(py36) D:\py>python 71-01.py
GRAVH
-------------------------------------

inf

Ouaip. Vous avez certainement trouvé inf.

Impressions

J'ai posté un article un peu sérieux pour la première fois depuis longtemps. Mais après tout, il est intéressant de bouger les mains. Cependant, cela prend juste du temps. Même si j'utilise un processeur 4 cœurs / 8 threads, le facteur de charge du processeur est de 30%. Oh c'est vrai. Eh bien, ce serait bien de construire sérieusement un multi-thread et de le diviser par ordinateur ou par composé. Je veux l'essayer plus tard.

Postscript

Pour le moment, je vais coller les résultats du calcul.

Eh bien ... j'ai l'impression d'avoir pu faire de mon mieux avec une charge CPU à 100% pendant plus d'une journée rien qu'avec ce calcul ... Je ne pense pas ... C'est difficile. Je veux un GPU, mais je veux aussi un CPU. Cela fait 16 cœurs.

CHEMBL10786 CHEMBL263256 CHEMBL503873 CHEMBL501567 CHEMBL500702 CHEMBL501093 CHEMBL501094 CHEMBL505931 CHEMBL444732 CHEMBL444155 CHEMBL445174 CHEMBL445253 CHEMBL444510 CHEMBL501306 CHEMBL502034 CHEMBL499522 CHEMBL500203 CHEMBL498862 CHEMBL503717 CHEMBL503722 CHEMBL504025 CHEMBL504038 CHEMBL502642 CHEMBL500358 CHEMBL500619 CHEMBL500622 CHEMBL500058 CHEMBL500182 CHEMBL500184 CHEMBL504187 CHEMBL525749 CHEMBL525930 CHEMBL526006 CHEMBL526343 CHEMBL526355 CHEMBL526373 CHEMBL499978 CHEMBL499980 CHEMBL500099 CHEMBL500244 CHEMBL508221 CHEMBL500219 CHEMBL500223 CHEMBL506996 CHEMBL507128 CHEMBL525750 CHEMBL503778 CHEMBL503489 CHEMBL503495 CHEMBL507216 CHEMBL502664 CHEMBL502666 CHEMBL503666 CHEMBL503894 CHEMBL525940 CHEMBL525945 CHEMBL526501 CHEMBL500441 CHEMBL500451 CHEMBL502457 CHEMBL525219 CHEMBL525221 CHEMBL527042 CHEMBL525450 CHEMBL526129 CHEMBL526130 CHEMBL508387 CHEMBL508391 CHEMBL498956 CHEMBL503974 CHEMBL503979 CHEMBL507601 CHEMBL504097 CHEMBL524833 CHEMBL525962 CHEMBL525424 CHEMBL525951 CHEMBL526360 CHEMBL525216 CHEMBL525217 CHEMBL509192 CHEMBL501147 CHEMBL501266 CHEMBL503261 CHEMBL526689 CHEMBL526690 CHEMBL498967 CHEMBL501641 CHEMBL500002 CHEMBL500011 CHEMBL524521 CHEMBL506061 CHEMBL504078 CHEMBL508019 CHEMBL500187 CHEMBL500103 CHEMBL445002 CHEMBL525762 CHEMBL525763 CHEMBL525398 CHEMBL525399 CHEMBL526113 CHEMBL526115 CHEMBL526119 CHEMBL526121 CHEMBL526181 CHEMBL502415 CHEMBL502420 CHEMBL502978 CHEMBL505143 CHEMBL501291 CHEMBL502603 CHEMBL503695 CHEMBL504000 CHEMBL504159 CHEMBL526190 CHEMBL526301 CHEMBL501788 CHEMBL506306 CHEMBL500524 CHEMBL499537 CHEMBL501823 CHEMBL504080 CHEMBL504417 CHEMBL507534 CHEMBL502988 CHEMBL500373 CHEMBL500375 CHEMBL505276 CHEMBL500264 CHEMBL526336 CHEMBL525083 CHEMBL525086 CHEMBL525089 CHEMBL503245 CHEMBL503306 CHEMBL501970 CHEMBL503617 CHEMBL503852 CHEMBL503858 CHEMBL502077 CHEMBL501569 CHEMBL504902 CHEMBL526516 CHEMBL526681 CHEMBL526682 CHEMBL525441 CHEMBL501317 CHEMBL501323 CHEMBL502678 CHEMBL503342 CHEMBL507824 CHEMBL499931 CHEMBL499957 CHEMBL500483 CHEMBL500788 CHEMBL525771 CHEMBL503047 CHEMBL503286 CHEMBL504214 CHEMBL504401 CHEMBL525073 CHEMBL525624 CHEMBL526743 CHEMBL526874 CHEMBL526876 CHEMBL524358 CHEMBL524487 CHEMBL524488 CHEMBL527050 CHEMBL524494 CHEMBL524498 CHEMBL525068 CHEMBL525069 CHEMBL525407 CHEMBL525409 CHEMBL527084 CHEMBL591794 CHEMBL592148 CHEMBL592149 CHEMBL1208990 CHEMBL524531 CHEMBL524539 CHEMBL593680 CHEMBL589995 CHEMBL589997 CHEMBL525394 CHEMBL526678 CHEMBL526890 CHEMBL525224 CHEMBL525386 CHEMBL526131 CHEMBL596000 CHEMBL526544 CHEMBL526545 CHEMBL527072 CHEMBL527074 CHEMBL525419 CHEMBL525991 CHEMBL530121 CHEMBL526741 CHEMBL595999 CHEMBL526703 CHEMBL526853 CHEMBL526916 CHEMBL526922 CHEMBL525076 CHEMBL524356 CHEMBL524357 CHEMBL525237 CHEMBL525242 CHEMBL525402 CHEMBL530345 CHEMBL605624 CHEMBL608706 CHEMBL605628 CHEMBL595776 CHEMBL591446 CHEMBL607837 CHEMBL1097890 CHEMBL589278 CHEMBL589762 CHEMBL602303 CHEMBL605828 CHEMBL609471 CHEMBL604989 CHEMBL608415 CHEMBL1097888 CHEMBL1213233 CHEMBL611968 CHEMBL1099238 CHEMBL132931 CHEMBL135376 CHEMBL136703 CHEMBL194552 CHEMBL207341 CHEMBL214100 CHEMBL216830

Recommended Posts

Jeu de main Python (calculé plein de mordred)
Jeu de main Python (division)
Jeu à la main en Python (notation sur une ligne de if)
Jeu de main Python (liste à deux dimensions)
Compréhension complète du débogage Python
Jeu de main Python (code minimum argparse)
Jeu à la main Python (Pandas / DataFrame début)
Jeu de main Python (calcul du descripteur: version sérieuse)
Compréhension complète du threading Python et du multitraitement
Jeu à la main en Python (commençons avec AtCoder?)
Jouer Python async
Jouez avec 2016-Python
Les bases de Python ①
Bases de python ①
Jeu manuel Python (interopérabilité entre CSV et PostgreSQL)
Copie de python
Introduction de Python
Traitement asynchrone de Python ~ Comprenez parfaitement async et attendez ~
Python hand play (obtenir les noms de colonnes à partir du fichier CSV)
[Python] Opération d'énumération
Liste des modules python
Unification de l'environnement Python
Copie des préférences python
Principes de base du grattage Python
[python] comportement d'argmax
Jouez à YouTube en Python
Utilisation des locaux Python ()
le zen de Python
Installation de Python 3.3 rc1
recherche complète de bits python
# 4 [python] Bases des fonctions
Connaissance de base de Python
Anecdotes sobres de python3
Résumé des arguments Python
Bases de python: sortie
Installation de matplotlib (Python 3.3.2)
Application de Python 3 vars
Divers traitements de Python
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python