Représentation vectorielle de cellules

a marqué ce sujet comme résolu.

Bonjour à toutes et à tous !

Aujourd'hui je vous présente un morceau de code que j'ai écrit il y a un moment et qui m'est utile très régulièrement dans mon travail. Ce code crée à partir d'un fichier texte une image vectorielle d'une cellule cristallographique. Le rendu est le plus simple possible, sans ombres ni aucune fioriture, prêt à être inséré dans une publication.

Comment ça marche ?

L'idée est de partir d'une structure régulière (BCC, FCC, HCP, …) et d'insérer des défauts progressivement. La liste des défauts est présente dans le readme. On peut également ajouter du texte, mais je ne suis pas satisfait de la manière dont je le gère pour l'instant.

Il faut avoir epstool pour que ça fonctionne, et je n'ai pas la moindre idée de si ça existe sous windows ou macos. Je travaille sous GNU/linux et ça fonctionne sous ce système.

J'ai uploadé un fichier d'exemple (test.txt) qui part d'une structure BCC et ajoute des atomes interstitiels avec un numéro à coté d'eux. Ça donne le résultat suivant. Pour lancer le code, il faut simplement taper "python draw.py Nomdufichierdesortie".

L'image a été convertie par ZdS et est assez horrible maintenant, mais normalement elle rend très bien.

Le code

Tout est écrit en Python. Je n'ai jamais vraiment appris à coder, je le fais par imitation de ce que je vois, donc ça ne suit probablement aucune norme, et c'est vraisemblablement une usine à gaz. Le code est dispo ici. S'il vous plait, n'hésitez psa à me donner vos commentaires (que ce soit pour le code ou pour des fonctionnalités d'ailleurs). Vplot.py n'a pas été écrit par mes soins, et je ne pense pas le modifier.

Un mot final

Donc en gros, c'est un programme qui fait quelque chose de très particulier. Je ne m'attends pas à ce que beaucoup d'entre-vous en ait besoin, mais si je le poste aujourd'hui, c'est presque plus pour avoir des commentaires sur le code. En haut du fichier draw.py, il y a une liste de choses que je veux faire. Cette liste m'est destinée donc elle peut être un peu cryptique, mais en gros, j'aimerais trouver un moyen d'optimiser la lecture du fichier d'input.

Je ne sais pas trop comment se servir de git/github (j'ai créé mon compte cet aprem), mais si jamais vous avez besoin du programme et voulez y apporter des modifications, n'hésitez pas à le faire et à me les faire parvenir.

Bonne soirée à vous !

Coucou !

C'est un projet qui peut être intéressant. Prévois-tu la possibilité de représenter plus que des cellules de base ? Je vais par exemple travailler sur des MOF dans des cellules tricliniques, est-ce que cela serait supporté ?

Concernant le code, je n'ai jeté qu'un œil rapide, mais un poil de factorisation du code serait sympa. Ce genre de truc me fait un peu grincer des dents quand je le vois …

Je ne sais pas trop comment se servir de git/github (j'ai créé mon compte cet aprem), mais si jamais vous avez besoin du programme et voulez y apporter des modifications, n'hésitez pas à le faire et à me les faire parvenir.

Il manque une licence pour ça.

+0 -0

Oui, en effet, le code pourrait grandement être factorisé. J'aimerais bien aussi trouver un moyen plus efficace que tous les "if" à la suite pour lire le fichier d'input, mais pas vraiment d'idées pour l'instant.

J'aimerais aussi pouvoir permettre à l'utilisateur de fournir la représentation d'une cellule primaire (quelle qu'elle soit) si elle est un peu exotique. Je ne suis pas sûr de ce que tu veux dire par MOF par contre. Pourrais-tu donner la signification du sigle ?

Pour la licence, une ligne au début du fichier du code est-elle suffisante?

Je ne suis pas sûr de ce que tu veux dire par MOF par contre. Pourrais-tu donner la signification du sigle ?

Metal-Organic Frameworks. Ça donne des cellules unitaires assez funky en général =)

Pour la licence, une ligne au début du fichier du code est-elle suffisante?

Oui, avec un fichier LICENCE à la racine qui contient le texte complet.

+0 -0

L'ennui c'est que je ne peux pas créer automatiquement le code à partir d'un fichier xyz tel qu'on pourrait par exemple le trouver sur bilbao à cause des traits entre les atomes. J'avais essayé de le faire automatiquement avec un critère sur les distances entre atomes, mais le résultat est très souvent moche, voire illisible, surtout quand il y a des défauts. Si tu as une solution plus intelligente, n'hésite pas à me la suggèrer.

Du coup, même si la répétition d'une structure, ou l'insertion répétée d'un défaut complexe est facile, il faut que je demande pas mal de détails en input (position des atomes et lien à tracer). C'est pour ça que j'essayais de mettre au moins les structures les plus courantes directement dans le code.

Je m'occuperai du fichier LICENCE la prochaine fois que je mets le code à jour sur github.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte