- L’interfaccia utente grafica
- Chimica semantica
- Costruire una molecola: atomo per atomo
- Costruire una molecola: da frammenti
- Preparazione dell’input per i codici quantistici
- Allineamento e misure
- Visualizzazione
- Rappresentazioni standard
- Calcoli quantistici e struttura elettronica
- Struttura biologica secondaria
- GLSL, visualizzazione innovativa
- Ray tracing
- La libreria Avogadro in uso
- Packmol
- XtalOpt
L’interfaccia utente grafica
La prima cosa che la maggior parte delle persone vedrà è la finestra principale dell’applicazione Avogadro, come mostrato nella Figura 4. Sono forniti installatori binari per Apple Mac OS X e Microsoft Windows, insieme a pacchetti per tutte le principali distribuzioni Linux. Questo significa che Avogadro può essere installato abbastanza facilmente sulla maggior parte dei sistemi operativi. Istruzioni facili da seguire su come compilare l’ultimo codice sorgente sono anche fornite sul sito web principale di Avogadro per i più avventurosi, o per quelli che usano un sistema operativo che non è ancora supportato.
Il toolkit Qt dà ad Avogadro un look and feel nativo sui tre principali sistemi operativi supportati – Linux, Apple Mac OS X, e Microsoft Windows. La funzionalità di base che ci si aspetta da un costruttore e visualizzatore di molecole è stata implementata, insieme a diverse caratteristiche meno comuni. È molto facile per i nuovi utenti installare Avogadro e costruire le loro prime molecole in pochi minuti. Grazie alla libreria Open Babel, Avogadro supporta una gran parte dei formati di file chimici di uso comune. La stragrande maggioranza di questa funzionalità è stata scritta usando l’interfaccia messa a disposizione degli scrittori di plugin, e viene caricata a runtime. Discuteremo queste interfacce di plugin e le descrizioni dei tipi di plugin più avanti.
Chimica semantica
Avogadro ha usato CML come formato di file predefinito fin dall’inizio; questo è stato scelto rispetto ad altri formati di file a causa della struttura estensibile e semantica fornita da CML, e il supporto disponibile in Open Babel . Il formato CML offre una serie di vantaggi rispetto ad altri di uso comune, compresa la possibilità di estendere il formato. Questo permette ad Avogadro e ad altri programmi di essere a prova di futuro, aggiungendo nuove informazioni e caratteristiche necessarie per un editor avanzato semanticamente consapevole in un secondo momento, pur rimanendo leggibile nelle vecchie versioni di Avogadro.
Attraverso l’uso di Open Babel , una vasta gamma di formati di file può essere interpretata. Quando si è esteso Avogadro per leggere quantità maggiori dell’output dei codici quantistici, è stato necessario dedicare significative risorse di sviluppo per comprendere e aggiungere un significato semantico all’output del codice quantistico. Questo lavoro è stato sviluppato in un plugin, che è stato poi suddiviso in una piccola libreria indipendente chiamata OpenQube . Più recentemente una grande quantità di lavoro è stato fatto dal progetto Quixote, JUMBO-Converters, e il Semantic Physical Science workshop per aumentare i codici quantistici per produrre più dati direttamente dal codice. Poiché CML può essere esteso, è possibile riutilizzare le convenzioni esistenti per i dati di struttura molecolare, e aggiungere nuove convenzioni per i dati quantistici aggiuntivi.
Costruire una molecola: atomo per atomo
Dopo aver aperto Avogadro viene presentata una finestra come quella mostrata in Figura 4. Per default, lo strumento draw è selezionato. Cliccando semplicemente con il tasto sinistro del mouse sulla parte nera del display, l’utente può disegnare un atomo di carbonio. Se l’utente spinge il tasto sinistro del mouse verso il basso e trascina, un atomo di carbonio legato viene disegnato tra il punto di partenza e la posizione finale in cui viene rilasciato il mouse.
Un grande sforzo è stato fatto per creare uno strumento intuitivo per disegnare piccole molecole. Gli elementi chimici comuni possono essere selezionati da un elenco a discesa, o una tabella periodica può essere visualizzata per selezionare elementi meno comuni. Cliccando su un atomo esistente lo si cambia nell’elemento attualmente selezionato, trascinando si cambia l’atomo nel suo elemento precedente e si disegna un nuovo atomo legato all’originale. Se i legami sono cliccati con il tasto sinistro del mouse, l’ordine di legame passa ciclicamente tra singolo, doppio e triplo. Sono disponibili anche dei tasti di scelta rapida, ad esempio, digitando il simbolo atomico (ad esempio, “C-o” per il cobalto) si cambia l’elemento selezionato, o digitando i numeri “1,” “2,” e “3” si cambia l’ordine di legame.
Cliccando con il tasto destro del mouse su atomi o legami li si cancella. Se la casella “Adjust Hydrogens” è selezionata, il numero di idrogeni legati ad ogni atomo viene automaticamente regolato per soddisfare la valenza. In alternativa, questo può anche essere fatto alla fine di una sessione di editing usando l’estensione “Add hydrogens” nel menu build.
Oltre allo strumento draw, ci sono due strumenti per regolare la posizione degli atomi nelle molecole esistenti. Lo strumento “atom centric manipulate” può essere usato per spostare un atomo o un gruppo di atomi selezionati. Lo strumento “bond centric manipulate” può essere usato per selezionare un legame, e poi regolare tutte le posizioni degli atomi rispetto al legame selezionato in vari modi (ad esempio, alterando la lunghezza del legame, gli angoli di legame o gli angoli diedri). Questi tre strumenti permettono una grande flessibilità nella costruzione di piccole molecole in modo interattivo sullo schermo.
Una volta che la struttura molecolare è completa, l’estensione del campo di forza può essere utilizzata per eseguire un’ottimizzazione della geometria. Cliccando su “Extensions” e “Optimize Geometry” viene eseguita una rapida ottimizzazione della geometria della molecola. Il campo di forza e i parametri di calcolo possono essere regolati, ma i valori predefiniti sono adeguati per la maggior parte delle molecole. Questo flusso di lavoro è tipico quando si costruiscono piccole strutture molecolari da usare come input per calcoli quantistici, o figure di qualità per la pubblicazione.
Un’alternativa è combinare lo strumento “Auto Optimization” con lo strumento di disegno. Questo presenta un modo unico di scolpire la molecola mentre la geometria è costantemente minimizzata sullo sfondo. L’ottimizzazione della geometria è animata, e l’effetto di cambiare gli ordini di legame, aggiungere nuovi gruppi o rimuovere gruppi può essere osservato interattivamente.
Sono implementate diverse finestre di dialogo per fornire informazioni sulle proprietà della molecola e per cambiare con precisione i parametri, come le coordinate cartesiane degli atomi nella molecola.
Costruire una molecola: da frammenti
Oltre a costruire molecole atomo per atomo, gli utenti possono inserire frammenti precostruiti di molecole comuni, ligandi o sequenze di amminoacidi, come mostrato nella Figura 5. In tutti i casi, dopo aver inserito il frammento, viene selezionato lo strumento di manipolazione centrato sull’atomo, permettendo al frammento di essere spostato o ruotato in posizione facilmente.
Gli utenti possono anche inserire una stringa SMILES per una molecola. In questo caso, viene generata una geometria 3D approssimativa usando Open Babel e una rapida ottimizzazione del campo di forza.
Preparazione dell’input per i codici quantistici
Sono state sviluppate diverse estensioni per Avogadro che assistono l’utente nella preparazione di file di input per codici quantistici popolari come GAMESS-US, NWChem, Gaussian, Q-Chem, Molpro, e MOPAC200x . Le finestre di dialogo grafiche presentano le caratteristiche necessarie per eseguire calcoli quantistici di base; alcuni esempi sono mostrati nella Figura 6.
L’anteprima del file di input nella parte inferiore di ogni finestra di dialogo viene aggiornata quando le opzioni vengono modificate. Questo approccio aiuta i nuovi utenti dei codici quantistici a imparare la sintassi dei file di input per diversi codici, e a generare rapidamente file di input utili man mano che imparano. L’input può anche essere modificato a mano nel dialogo prima che il file venga salvato e sottoposto al codice quantistico. L’estensione MOPAC può anche eseguire direttamente il programma MOPAC200x se è disponibile sul computer dell’utente, e poi ricaricare il file di output in Avogadro una volta che il calcolo è completo. Questa caratteristica sarà estesa ad altri codici quantistici nelle future versioni di Avogadro.
Il plugin GAMESS-US è uno dei più sviluppati, con un dialogo di base presente nella maggior parte degli altri generatori di mazzi di input, così come un dialogo avanzato che espone molti dei tipi di calcolo più insoliti e complessi. Oltre alla finestra di dialogo avanzata, il mazzo di input può essere modificato in linea e presenta l’evidenziazione della sintassi (Figura 7) come usata in molti editor popolari destinati agli sviluppatori di software. Questo può indicare semplici errori di battitura nelle parole chiave, così come errori di spazi bianchi più difficili da individuare che altrimenti causerebbero il fallimento del mazzo di input modificato a mano quando viene letto da GAMESS-US.
Allineamento e misure
Uno degli strumenti specializzati inclusi nella distribuzione standard Avogadro è lo strumento di allineamento. Questo strumento del mouse facilita l’allineamento di una struttura molecolare con l’origine delle coordinate se è selezionato un atomo, e lungo l’asse specificato se sono selezionati due atomi. Lo strumento di allineamento può essere combinato con gli strumenti di misura, selezione e manipolazione per creare input per codici quantistici in cui la posizione e l’orientamento della molecola sono importanti. Un esempio di ciò sono i calcoli in cui un campo elettrico esterno viene applicato alla molecola. In questi tipi di calcoli, l’allineamento della molecola può avere un grande effetto. La figura 8 mostra lo strumento di misura in azione con la finestra di configurazione dello strumento di allineamento visibile nell’angolo in basso a sinistra.
Si potrebbero creare strumenti di allineamento più complessi per compiti specifici. Lo strumento di allineamento è stato creato in poche ore per un progetto di ricerca specifico. Questo è un primo esempio in cui l’estensibilità era molto importante per eseguire la ricerca utilizzando uno strumento grafico di chimica computazionale. Non varrebbe la pena di creare una nuova applicazione solo per allineare le strutture molecolari ad un asse, ma creare un plugin per un progetto estensibile non è irragionevole.
Visualizzazione
L’applicazione Avogadro usa OpenGL per rendere le rappresentazioni molecolari sullo schermo in modo interattivo. OpenGL offre un’API di alto livello e multipiattaforma per il rendering di immagini tridimensionali usando la grafica accelerata dall’hardware. OpenGL 1.1 e inferiori è usato nella maggior parte del codice di rendering, e così Avogadro può essere usato anche su sistemi di computer più vecchi, o quelli senza grafica accelerata più moderna. È in grado di trarre vantaggio da alcune delle nuove caratteristiche disponibili in OpenGL 2.0 come descritto di seguito, ma questo è stato mantenuto come una caratteristica opzionale extra quando si lavora su nuove visualizzazioni della struttura molecolare.
Rappresentazioni standard
In chimica, ci sono diverse rappresentazioni standard della struttura molecolare, originariamente basate su quelle possibili con modelli fisici. L’applicazione Avogadro implementa ciascuna di queste rappresentazioni mostrate nella Figura 2 come plugin. Queste vanno dalla semplice rappresentazione wireframe, stick/licorice, ball and stick, e sfere di Van der Waals.
È anche possibile combinare diverse rappresentazioni, come ball and stick con il rendering dell’anello (Figura 2 (d)), e una rappresentazione semi-trasparente di Van der Waals space-filling con una rappresentazione stick per chiarire la spina dorsale molecolare (Figura 2 (f)).
Calcoli quantistici e struttura elettronica
I codici quantistici sono stati originariamente sviluppati per le stampanti a righe, e purtroppo da allora poco è cambiato nei file di log standard. Ci sono diversi formati sviluppati per l’uso in altri codici e specificamente per la visualizzazione e l’analisi, ma c’è poco accordo su un formato di file standard nella comunità della chimica quantistica computazionale. Un plugin è stato sviluppato in Avogadro per visualizzare l’output di vari codici quantistici, e ottenere i dati nel formato giusto per ulteriori visualizzazioni e analisi.
Inizialmente è stato aggiunto ed esteso il supporto in Open Babel per i file Gaussian cube. Questo formato fornisce coordinate atomiche e una o più griglie regolarmente spaziate di valori scalari. Questo può essere letto e tecniche come l’algoritmo marching cubes possono essere utilizzate per calcolare maglie triangolari di isosuperfici a valori di densità elettronica, per esempio. Una volta che il codice è stato sviluppato per visualizzare queste isosuperfici, è diventato chiaro che sarebbe stato utile essere in grado di calcolare questi cubi al volo, e a diversi livelli di dettaglio a seconda dell’uso previsto.
Il primo formato, che è stato in qualche modo documentato al momento del suo sviluppo, è il formato di checkpoint formattato Gaussiano. Questo formato è molto più facile da analizzare rispetto ai file di log generati durante l’esecuzione del programma, e fornisce tutti i dettagli necessari per calcolare i valori scalari dell’orbitale molecolare o della densità elettronica in qualsiasi punto dello spazio. Una volta sviluppata una struttura di classe per gli orbitali di tipo Gaussiano, l’approccio è stato esteso per leggere diversi altri formati di file di output popolari tra cui Q-Chem, GAMESS-US, NWChem e Molpro. Il supporto per MOPAC200x è stato aggiunto successivamente, insieme al supporto per il formato AUX e gli orbitali di tipo Slater utilizzati in quel codice. Tutti questi codici producono le loro configurazioni finali usando la combinazione lineare standard di orbitali atomici, il che significa che la parallelizzazione è estremamente semplice.
Il plugin è stato sviluppato per sfruttare l’approccio map-reduce offerto da QtConcurrent al fine di utilizzare tutti i core del processore disponibili. Questo offre una scalabilità quasi lineare poiché ogni punto della griglia può essere calcolato indipendentemente da tutti gli altri punti, i cui risultati possono essere visti nella Figura 9. Un approccio alternativo al calcolo degli orbitali molecolari è stato sviluppato in un secondo plugin che da allora è stato scisso in un progetto separato chiamato “OpenQube”. La libreria “OpenQube” è stata anche aggiunta come backend opzionale in VTK durante la Google Summer of Code 2011, portando il supporto per diversi formati di file di output e il calcolo di file cubo che possono poi essere inseriti in pipeline di dati più avanzate.
Una gerarchia di classi con un’API standard è fornita per l’output quantistico. L’aggiunta del supporto per nuovi codici ha comportato lo sviluppo di un nuovo parser e la garanzia che l’insieme Gaussiano o Slater sia popolato con l’ordinamento corretto e lo schema di normalizzazione previsto. Gli orbitali gaussiani di tipo s, p e d sono supportati, con il supporto f e g previsto per supportare il crescente numero di calcoli che utilizzano questi orbitali di ordine superiore. Il Basis Set Exchange ospitato da EMSL fornisce l’accesso ai set di basi di uso comune, anche se al momento questi set di basi sono normalmente letti direttamente dai file di output. Ci sono diversi progetti correlati per aggiungere un significato semantico a questo tipo di output, incluso il progetto JUMBO-Converters e Quixote. Si spera che più codici adotteranno l’output semantico in futuro, usando un formato comune in modo che lo scambio di dati, la convalida e l’analisi diventino più facili tra diversi codici. Questo è stato l’argomento di un recente incontro con diversi codici di chimica computazionale che iniziano ad usare FoX per l’output CML. È iniziato lo sviluppo di codice per leggere l’output CML, sia direttamente dai codici che dalla conversione di altri formati usando Open Babel o i convertitori JUMBO. Se una struttura semantica sufficiente può essere aggiunta al CML, e i convertitori supportano una gamma abbastanza ampia di output, questo potrebbe sostituire la maggior parte del codice di parsing presente in OpenQube. Il significato semantico è uno dei più difficili da estrarre dai file di log, e unirsi come comunità aiuterà progetti come Avogadro a ricavare più significato dagli output di questi codici.
Struttura biologica secondaria
Avogadro usa il lettore PDB di Open Babel per leggere la struttura biologica secondaria. Esistono due plugin per elaborare e rendere queste informazioni. Il primo è un plugin che rende un semplice tubo tra gli atomi della spina dorsale della biomolecola. Un secondo plugin più avanzato calcola le mesh per le eliche alfa e i fogli beta. Mentre il primo plugin è molto più veloce, il plugin avanzato produce più accuratamente l’output atteso sul campo. Questo permette agli utenti la flessibilità per il rendering delle strutture biologiche secondarie.
GLSL, visualizzazione innovativa
GLSL, o OpenGL Shader Language, è una sintassi simile al C che può essere usata per sviluppare codice che verrà eseguito su schede grafiche e incluso nella specifica OpenGL 2.0. È stato usato con grande effetto dall’industria dei giochi, così come in molte aree di visualizzazione dei dati. Diversi articoli recenti evidenziano il potenziale nella chimica, come QuteMol nell’aggiungere il supporto per caratteristiche come l’ambient occlusion per aggiungere profondità alle immagini.
Avogadro ha il supporto per programmi vertex e fragment shader, e diversi esempi sono inclusi nel pacchetto. Se la scheda grafica dell’utente ne è capace, questi programmi possono essere caricati in fase di esecuzione e usati con grande effetto per visualizzare la struttura. Alcuni di questi includono tecniche di sintesi come il rendering delle isosuperfici dove solo i bordi ortogonali al piano di vista sono visibili, dando una resa molto migliore sia della struttura molecolare che di quella elettronica (Figura 10).
Ray tracing
Avogadro utilizza un’astrazione del pittore che rende molto più facile per gli sviluppatori aggiungere nuovi tipi di visualizzazione. Inoltre astrae il renderer, rendendo possibile l’aggiunta di supporto per backend alternativi. Attualmente sono supportati solo OpenGL e POV-Ray. Grazie all’astrazione, siamo in grado di utilizzare le superfici implicite disponibili nei ray tracer per rendere la struttura molecolare a livelli molto alti di chiarezza e con nessuno degli artefatti triangolari presenti nelle immagini renderizzate OpenGL standard. La trasparenza e la riflessione di qualità molto più elevata consentono inoltre di utilizzare le immagini in poster e presentazioni orali, nonché in articoli di ricerca (Figura 11).
Questa funzione è implementata in un’estensione, con una classe aggiuntiva di pittore che deriva dalla classe base e un dialogo che permette all’utente di modificare i controlli base del rendering. Il file di input di POV-Ray può anche essere mantenuto e modificato per produrre immagini più complesse, o per permettere un controllo molto più fine del processo di rendering, se lo si desidera.
La libreria Avogadro in uso
Il primo utilizzo della libreria Avogadro fu l’applicazione Avogadro, seguita da vicino dal programma della tavola periodica Kalzium che fa parte della collezione di software KDE. Questo lavoro iniziale è stato finanziato in parte dal programma Google Summer of Code nel 2007, e ha anche portato all’aggiunta di diverse altre caratteristiche nella libreria Avogadro per supportare Kalzium e la visualizzazione generale e la modifica della struttura molecolare (Figura 12).
Il pacchetto Q-Chem ha sviluppato “QUI – The Q-Chem User Interface” intorno ad Avogadro, originariamente come estensione di Avogadro. Questa è una versione più avanzata del generatore di input sviluppato in Avogadro, con un’integrazione molto più stretta. Molpro ha anche pubblicato alcuni risultati dal loro sviluppo di un’interfaccia Molpro utilizzando la libreria Avogadro.
Packmol
Packmol è un pacchetto di terze parti progettato per creare configurazioni iniziali “impacchettate” di molecole per la dinamica molecolare o altre simulazioni. Gli esempi includono l’avvolgimento di una proteina con solvente, miscele di solventi, bilayer lipidici, micelle sferiche, posizionamento di controioni, aggiunta di ligandi a nanoparticelle, ecc. In genere, gli utenti possono avere “scatole di solvente” equilibrate che sono state eseguite per lunghe simulazioni per garantire una densità adeguata e interazioni a breve e lungo raggio tra le molecole di solvente. L’uso di tali scatole di solventi permette di collocare le molecole di soluto, come le proteine, in una struttura iniziale approssimativamente corretta, come quella mostrata nella Figura 13. Il soluto viene aggiunto nella scatola, e le molecole di solvente con atomi sovrapposti vengono rimosse. Mentre queste utilità sono spesso sufficienti, la creazione di file di input complessi non è sempre facile. Per i sistemi più complicati, Packmol può creare una configurazione iniziale basata su densità definite, geometrie (ad esempio, sfera, scatola, ecc.), e le molecole da posizionare. Uno sviluppatore di Avogadro ha scritto un plugin esterno per facilitare l’uso di Packmol, inclusa la stima del numero di molecole in un dato volume.
Il plugin non è attualmente distribuito con Avogadro come caratteristica standard, sebbene sia previsto per qualche versione futura. Serve come esempio di come Avogadro possa facilitare un flusso di lavoro con un pacchetto orientato al testo (Packmol), incluso il salvataggio di file nel formato PDB richiesto da Packmol, la generazione di un file di input e la lettura dell’output per la visualizzazione, l’analisi e ulteriori simulazioni.
XtalOpt
Il pacchetto software XtalOpt è implementato come estensione C++ di terze parti per Avogadro e fa un uso intenso delle API di libavogadro. L’estensione implementa un algoritmo evolutivo su misura per la previsione della struttura dei cristalli. Il team di sviluppo di XtalOpt ha scelto Avogadro come piattaforma per la sua licenza open-source, l’API ben progettata, i potenti strumenti di visualizzazione e l’interfaccia utente intuitiva. XtalOpt esiste come una finestra di dialogo (Figura 14) e usa la finestra principale di Avogadro per visualizzare le strutture candidate mentre si evolvono. L’API si adatta bene alle esigenze di XtalOpt, fornendo un semplice meccanismo per permettere all’utente di visualizzare, modificare ed esportare le strutture generate durante la ricerca. Sfruttando le capacità multipiattaforma di Avogadro e delle sue dipendenze, XtalOpt è disponibile per Linux, Windows e Mac.