La visualizzazione molecolare gioca un ruolo vitale nella costruzione di database e archivi, nella preparazione di strutture iniziali per calcoli quantistici e di dinamica molecolare e nell’analisi delle coordinate della traiettoria in tempo reale. Visualizzare e modificare interattivamente la struttura delle molecole può ridurre efficacemente la soglia di simulazione e migliorare l’efficienza. Il recente sviluppo nel campo del calcolo ad alte prestazioni (HPC) e del cloud computing ha portato a molte piattaforme di calcolo online. Per esempio, MatCloud, rescale, WebMO, e MolCalc, forniscono servizi web per il calcolo dei materiali e della chimica. Questi strumenti basati sul web forniscono risorse di calcolo a controllo remoto, e la loro accessibilità e compatibilità li rendono estremamente popolari. Al giorno d’oggi, è comune utilizzare la visualizzazione strutturale 3D basata sul web e gli strumenti di editor per generare le strutture del modello e preparare i file di input per le simulazioni.
Il software di visualizzazione allo stato dell’arte nel campo della chimica computazionale è principalmente sviluppato su ambiente desktop, come Avogadro , Materials Studio , e VESTA . Con la crescente domanda di visualizzazione basata sul web, sono emersi diversi strumenti rilevanti. Per esempio, 3Dmol , JSmol e Web3DMol contengono potenti capacità di visualizzazione, ma manca la funzione di editing della struttura. Altri strumenti, come ChemdoodleWeb, Kekule.js, JSME, possono solo modificare strutture a 2 dimensioni (2D). Strumenti di editing della struttura 3D (ad esempio, ChemMozart , CH5M3D ) sono anche riportati in letteratura. Tuttavia, questi strumenti si concentrano sulla modellazione molecolare organica e non supportano l’elaborazione della struttura dei cristalli. Inoltre, ChemMozart è implementato utilizzando il framework node.js, e non può essere utilizzato solo come una libreria leggera.
Al fine di elaborare le informazioni chimiche sul server web, abbiamo sviluppato un programma avanzato di visualizzazione chimica ed editor con le seguenti caratteristiche. In primo luogo, sia la molecola organica non periodica che la struttura del cristallo possono essere visualizzate, costruite e modificate interattivamente. In secondo luogo, viene fornita una vasta gamma di algoritmi cheminformatici per la struttura del cristallo, come la scissione delle superfici, la creazione di strati di vuoto e la creazione di supercelle. In terzo luogo, è una libreria leggera implementata utilizzando JavaScript, e può essere facilmente utilizzata per fornire servizi web in modo indipendente o integrata in altre piattaforme web. Infine, i file di input iniziali per VASP e Gaussian possono essere generati interagendo con le finestre di dialogo.
Implementazione
Come la maggior parte dei programmi di interfaccia grafica utente (GUI) per il calcolo della chimica, 3DStructGen si concentra sulla generazione della geometria molecolare iniziale. Come mostrato in Fig. 1, i moduli di base di molecola, cristallo e lastra di superficie consistono in diversi metodi per trattare rispettivamente la molecola non periodica, il cristallo periodico, così come il sistema di lastra di superficie. La tela HTML5 è il modulo centrale per visualizzare le strutture 3D e collegare tutti gli altri moduli. Il modulo del mouse fornisce una serie di operazioni interattive con il mouse per gli utenti. I metodi di elaborazione per i formati di file chimici generali (XYZ, SD, MOL, CIF) sono supportati nel modulo IO, e il file di input iniziale per VASP e Gaussian può essere prodotto usando il modulo interfaccia. Il modulo explorer stampa le informazioni interattive (ad esempio, nome del file, parametro del reticolo, distanza degli atomi, coordinate degli atomi, ecc. Inoltre, ChemKit API fornisce estensioni di 3DStructGen integrando altri strumenti cheminformatici.
Elemento, atomo e molecola
I parametri degli elementi (es, numero di atomo, simbolo dell’elemento, massa atomica, colore, raggi covalenti, ecc.) sono definiti come una lista nella funzione “element ()”. La funzione “addElem ()” è usata per aggiungere un elemento specificato dagli utenti, e il modello di atomo corrispondente sarà visualizzato su tela. Tutti gli elementi sono visualizzati nello stesso colore del programma VESTA. La molecola di metano è presentata nel canvas quando 3DStructGen è inizializzato. La rappresentazione “ball-and-stick” delle strutture con la dimensione degli atomi basata sui loro raggi covalenti per default. Inoltre, i modelli “stick-and-line” possono essere specificati anche dagli utenti.
Le funzioni “addAtom ()” e “delAtom ()” sono usate per aggiungere un nuovo atomo e cancellare un atomo esistente in una molecola, rispettivamente. Per impostazione predefinita, verrà aggiunto un numero adeguato di atomi di idrogeno secondo la regola della teoria dell’ottetto, e agli angoli di legame viene assegnato un valore basato sull’ibridazione orbitale (sp3 di default) selezionata dagli utenti.
Quando viene aggiunto un nuovo atomo, viene creato un legame entro il suo valore della somma dei raggi covalenti degli atomi legati. Il legame tra coppie di atomi può essere aggiunto con operazioni del mouse chiamando la funzione “addBond ()”, definita nei file o calcolata dal 3DStructGen. La funzione “createBond ()” descrive in dettaglio la regola di legame: in primo luogo, viene costruita una lista di possibili atomi di legame basata sul modello di valenza del legame, e poi viene calcolata la distanza per questi possibili atomi di legame. Un legame viene creato se la distanza è compresa tra 0,5 e 1,2 volte la somma dei raggi covalenti per questi atomi di legame. Qui, la distanza di 0,5 volte viene usata per evitare il legame tra gli atomi chiusi (forse gli atomi di sovrapposizione). La funzione “bondMatrix ()” definisce una routine pubblica per memorizzare e restituire la lista dei legami. L’algoritmo di etichettatura dei grafi (pseudo codice in Fig. 2) usato per riconoscere la struttura e l’ospite (inclusa la molecola di solvente) sono sviluppati per trattare le strutture metallo-organiche (MOF) nel database strutturale di Cambridge (CSD). Il nostro metodo di legame ha mostrato risultati soddisfacenti per questo compito, e i risultati di visualizzazione possono essere trovati nella sezione “Visualizzazione della struttura”.
Quando una struttura viene creata, un atomo o un gruppo di atomi selezionati dagli utenti possono essere spostati in alto, in basso, a sinistra e a destra di una distanza specificata dall’utente. Un’ottimizzazione grezza della geometria è supportata per la molecola non periodica ottimizzando le lunghezze di legame, gli angoli di legame e il diedro seguendo lo stesso metodo in CH5M3D. Un’ottimizzazione opzionale della geometria basata sul metodo della forza archiviata è anche fornita dall’uso dell’API ChemKit, che è spiegata in ulteriori dettagli nella sezione “API ChemKit”.
Cristallo e lastra di superficie
La funzione “buildCrystal ()” è usata per costruire la struttura del reticolo di cristallo. Cliccando la finestra di dialogo di “build crystal”, i gruppi di spazio di simmetria (230 in totale), i parametri del reticolo, i tipi di atomi e le coordinate possono essere selezionati o modificati interattivamente dagli utenti. Quando tutte le operazioni sono finite, una struttura cristallina sarà mostrata nel canvas.
La lastra a supercella è un modello strutturale usato nelle simulazioni quantistiche o di dinamica molecolare per studiare le proprietà cinetiche, termodinamiche ed elettroniche della superficie. La funzione “cleaveSurf ()” mostra un algoritmo per costruire lastre di superficie con qualsiasi orientamento dell’indice di Miller da una cella unitaria di massa di qualsiasi reticolo di Bravais. Una lastra con due superfici è incorporata con regioni di vuoto in una supercella. Sun ha proposto un algoritmo efficiente per costruire la superficie della lastra, e lo stesso metodo è usato per trovare due vettori base che abbracciano un dato orientamento della superficie, \(\varvec{v}_{1}}) e \(\varvec{v}_{2}). Le seguenti sono le descrizioni dettagliate:
Se un indice Miller non contiene zeri, prendiamo (hkl) come esempio:
Se un indice Miller contiene uno zero, prendiamo (hk0) come esempio:
Se un indice Miller contiene due zeri, prendiamo (h00) come esempio:
Per una struttura cristallina composta da una cella unitaria, e un insieme di atomi sono disposti in modo che gli atomi siano periodicamente ripetuti in tre dimensioni su un reticolo. La funzione “displayStyle ()” fornisce diversi metodi per visualizzare gli atomi ripetuti, e le relative immagini sono mostrate in Fig. 3. Le seguenti opzioni possono essere scelte nel 3DStructGen:
-
“Asymmetric”: Viene presentata la subunità minima di un cristallo, costituita da uno o più atomi, ioni o molecole, la cui disposizione geometrica non è legata dalla simmetria cristallografica.
-
“Originale”: Usando questo stile, ogni atomo sarà visualizzato nella sua posizione originale, insieme alle copie formate applicando ciascuno degli operatori del gruppo di simmetria.
-
“In-cell”: Gli atomi sono visualizzati in base al fatto che le loro coordinate, così come le loro copie simmetriche siano nella cella del reticolo.
-
“Packing”: Le molecole complete e le loro copie simmetriche in una cella del reticolo saranno visualizzate in base al centro geometrico degli insiemi di atomi collegati. Questo dà una visualizzazione della cella convenzionale per la maggior parte dei tipi di sistemi cristallini.
Gli stili di cui sopra permettono agli utenti di visualizzare gli atomi nei modi desiderati per diversi scenari. L'”Asymmetric” può essere utile per concentrarsi sui dettagli della struttura minima quando tutte le copie sono invisibili, specialmente per modelli grandi e complessi. Gli stili “Original” e “Packing” forniscono le copie delle unità, che dimostrano le informazioni simmetriche di un cristallo. Lo stile “In-cell” cattura un assaggio di tutti i possibili atomi nella cella del reticolo, che corrisponde alla scena reale del troncamento di una cella del reticolo dall’intero sistema periodico.