Logiciel de CAO

Le logiciel FreeCAD permet la création de modèle 3D. Nous allons utiliser ce logiciel car il est gratuit, opensource et permets de lancer des scripts pour réaliser des pièces de manière automatisée. https://www.freecad.org/ La version utilisée est la 1.0.1.

Fichier de description

Description

Il a été choisi d’utiliser des fichiers .mol2 comme source de description des molécules.

mol2.pdf

Trois fichiers mol2 ont été fourni comme base de travail :

MLA.mol2

Nicotine.mol2

Strychnine.mol2

Chaque fichier mol2 contient :

Chaque atome est identifié par un numéro unique. A partir de ce fichier, il est possible de dessiner en trois dimensions une représentation de la molécule.

Lecture d’un fichier source

La bibliothèque “biopandas” permet de lire les fichiers mol2. https://biopandas.github.io/biopandas/

Le code suivant permet d’ouvrir un fichier mol2 et d’afficher la liste des atomes et des liaisons.

from biopandas.mol2 import PandasMol2
import numpy as np
import re
import pandas as pd

mol2file = '/Users/bastien/BV/Documents/ANR_PIRATE/mol2/Nicotine.mol2'

def bond_parset(filename):
    with open(filename, 'r') as f:
        f_text = f.read()
    bonds =  np.array(re.sub(r'\s+', ' ', re.search(r'@<TRIPOS>BOND([a-z0-9\s]*)@', f_text).group(1)).split()).reshape((-1, 4))
    df_bonds = pd.DataFrame(bonds, columns=['bond_id', 'atom1', 'atom2', 'bond_type'])
    #df_bonds.set_index(['bond_id'], inplace=True)
    return df_bonds

pmol = PandasMol2().read_mol2(mol2file)
pmolbonds = bond_parset(mol2file)

print('Molecule ID: %s' % pmol.code)

print("Liste atomes")
for index, row in pmol.df.iterrows():
	print("ID: ",row['atom_id'], "\tType: ",row['atom_type'], "\tType simple:", row['atom_type'].split('.')[0], "\tPosition 3D: (", row['x'],",",row['y'],",",row['z'],")")

print("Liste liaisons")
for index, row in pmolbonds.iterrows():
	print("ID: ",row['bond_id'], "\t - Atomes: ",row['atom1'], "/", row['atom2'], "\t - Type: ",row['bond_type'])

Utilisation du logiciel de CAO - FreeCAD