- Det grafiska användargränssnittet
- Semantisk kemi
- Bygga en molekyl: atom för atom
- Bygga en molekyl: från fragment
- Förberedelse av indata för kvantkoder
- Uppriktning och mätningar
- Visualisering
- Standardrepresentationer
- Kvantumberäkningar och elektronisk struktur
- Sekundär biologisk struktur
- GLSL, ny visualisering
- Ray tracing
- Avogadro-biblioteket i bruk
- Packmol
- XtalOpt
Det grafiska användargränssnittet
Det första som de flesta kommer att se är huvudfönstret för Avogadro, som visas i figur 4. Binära installationsprogram finns för Apple Mac OS X och Microsoft Windows, tillsammans med paket för alla större Linuxdistributioner. Detta innebär att Avogadro kan installeras ganska enkelt på de flesta operativsystem. På huvudwebbplatsen för Avogadro finns också lättfattliga instruktioner om hur man kompilerar den senaste källkoden för de mer äventyrliga, eller för dem som använder ett operativsystem som ännu inte stöds.
Med Qt-verktygslådan får Avogadro ett inhemskt utseende på de tre stora operativsystem som stöds – Linux, Apple Mac OS X och Microsoft Windows. Den grundläggande funktionalitet som förväntas av en molekylbyggare och -visare har implementerats, tillsammans med flera mindre vanliga funktioner. Det är mycket enkelt för nya användare att installera Avogadro och bygga sina första molekyler inom några minuter. Tack vare Open Babel-biblioteket , stöder Avogadro en stor del av de kemiska filformat som är vanligt förekommande. Den stora majoriteten av denna funktionalitet har skrivits med hjälp av det gränssnitt som gjorts tillgängligt för pluginförfattare, och laddas vid körning. Vi kommer att diskutera dessa plugin-gränssnitt och beskrivningar av plugin-typerna senare.
Semantisk kemi
Avogadro har använt CML som standardfilformat från ett mycket tidigt skede; detta valdes framför andra filformat på grund av den utbyggbara, semantiska struktur som tillhandahålls av CML och det stöd som finns tillgängligt i Open Babel . CML-formatet erbjuder ett antal fördelar jämfört med andra vanliga format, bland annat möjligheten att utöka formatet. Detta gör det möjligt för Avogadro och andra program att vara framtidssäkra, genom att lägga till ny information och nya funktioner som behövs för en avancerad semantiskt medveten redigerare vid en senare tidpunkt, samtidigt som de fortfarande är läsbara i äldre versioner av Avogadro.
Genom användningen av Open Babel kan ett stort antal filformat tolkas. När Avogadro utökades för att läsa in större mängder av utdata från kvantkoder var det nödvändigt att ägna betydande utvecklingsresurser åt att förstå och lägga till semantisk betydelse till kvantkodernas utdata. Detta arbete utvecklades i ett insticksprogram, som senare delades upp i ett litet oberoende bibliotek kallat OpenQube . På senare tid har Quixote-projektet, JUMBO-Converters och Semantic Physical Science-workshopen gjort mycket arbete för att öka kvantkoderna så att mer av dessa data kan skickas ut direkt från koden. Eftersom CML kan utökas är det möjligt att återanvända befintliga konventioner för molekylstrukturdata och lägga till nya konventioner för ytterligare kvantdata.
Bygga en molekyl: atom för atom
När man öppnar Avogadro visas ett fönster som det som visas i figur 4. Som standard är ritverktyget valt. Genom att helt enkelt vänsterklicka på den svarta delen av skärmen kan användaren rita en kolatom. Om användaren trycker ner vänster musknapp och drar, ritas en bunden kolatom mellan startpunkten och slutpositionen där musen släpps.
En stor ansträngning har lagts ner på att skapa ett intuitivt verktyg för att rita små molekyler. Vanliga kemiska grundämnen kan väljas från en rullgardinslista, eller så kan ett periodiskt system visas för att välja mindre vanliga grundämnen. Genom att klicka på en befintlig atom ändras den till det för närvarande valda elementet, genom att dra ändras atomen tillbaka till det tidigare elementet och en ny atom ritas som är bunden till den ursprungliga. Om man vänsterklickar på bindningarna växlar bindningsordningen mellan enkel, dubbel och trippel. Genvägstangenter finns också tillgängliga, t.ex. genom att skriva in atomsymbolen (t.ex. ”C-o” för kobolt) ändras det valda elementet, eller genom att skriva in siffrorna ”1”, ”2” och ”3” ändras bindningsordningen.
Högerklick på atomer eller bindningar raderar dem. Om rutan ”Adjust Hydrogens” är markerad justeras antalet väteämnen som är bundna till varje atom automatiskt för att uppfylla valensen. Alternativt kan detta också göras i slutet av en redigeringssession genom att använda tillägget ”Add hydrogens” i byggmenyn.
Förutom ritverktyget finns det två verktyg för att justera atomernas position i befintliga molekyler. Verktyget ”atom centric manipulate” kan användas för att flytta en atom eller en grupp valda atomer. Verktyget ”bond centric manipulate” kan användas för att välja en bindning och sedan justera alla atomers positioner i förhållande till den valda bindningen på olika sätt (t.ex. genom att ändra bindningslängden, bindningsvinklarna eller dihedralvinklarna). Dessa tre verktyg ger stor flexibilitet när det gäller att bygga små molekyler interaktivt på skärmen.
När den molekylära strukturen är färdig kan kraftfältsutvidgningen användas för att utföra en geometrioptimering. Genom att klicka på ”Extensions” och ”Optimize Geometry” utförs en snabb geometrioptimering på molekylen. Kraftfältet och beräkningsparametrarna kan justeras, men standardvärdena är tillräckliga för de flesta molekyler. Detta arbetsflöde är typiskt när man bygger upp små molekylära strukturer för användning som indata till kvantberäkningar, eller figurer av publikationskvalitet.
Ett alternativ är att kombinera verktyget ”Auto Optimization” med ritverktyget. Detta ger ett unikt sätt att skulptera molekylen medan geometrin ständigt minimeras i bakgrunden. Geometrioptimeringen är animerad och effekten av att ändra bindningsordningar, lägga till nya grupper eller ta bort grupper kan observeras interaktivt.
Flera dialoger är implementerade för att ge information om molekylens egenskaper och för att exakt ändra parametrar, t.ex. de kartesiska koordinaterna för atomerna i molekylen.
Bygga en molekyl: från fragment
Förutom att bygga molekyler atom för atom kan användarna infoga förbyggda fragment av vanliga molekyler, ligander eller aminosyrasekvenser, vilket visas i figur 5. I samtliga fall väljs det atomcentrerade manipuleringsverktyget efter insättning av fragmentet, vilket gör att fragmentet enkelt kan flyttas eller roteras i position.
Användare kan också infoga en SMILES-sträng för en molekyl. I detta fall genereras en grov 3D-geometri med hjälp av Open Babel och en snabb kraftfältsoptimering.
Förberedelse av indata för kvantkoder
Flera tillägg utvecklades för Avogadro som hjälper användaren att förbereda indatafiler för populära kvantkoder som GAMESS-US, NWChem, Gaussian, Q-Chem, Molpro och MOPAC200x . De grafiska dialogrutorna presenterar de funktioner som krävs för att köra grundläggande kvantberäkningar; några exempel visas i figur 6.
Förhandsgranskningen av inmatningsfilen längst ner i varje dialog uppdateras när alternativen ändras. Detta tillvägagångssätt hjälper nya användare av kvantkoder att lära sig syntaxen för inmatningsfiler för olika koder och att snabbt generera användbara inmatningsfiler när de lär sig. Inmatningen kan också redigeras för hand i dialogrutan innan filen sparas och skickas till kvantkoden. MOPAC-tillägget kan också köra MOPAC200x-programmet direkt om det finns tillgängligt på användarens dator, och sedan ladda om utdatafilen till Avogadro när beräkningen är klar. Denna funktion kommer att utvidgas till andra kvantkoder i framtida versioner av Avogadro.
Inlägget GAMESS-US är ett av de mest utvecklade, med en grundläggande dialog som finns i de flesta andra generatorer av inmatningsdäck, samt en avancerad dialog som exponerar många av de mer ovanliga och komplexa beräkningstyperna. Förutom den avancerade dialogen kan inmatningsdäcket redigeras inline och har syntaxmarkering (figur 7) som används i många populära redaktörer som riktar sig till programvaruutvecklare. Detta kan indikera enkla skrivfel i nyckelord, liksom svårare att upptäcka fel i vitrymden som annars skulle leda till att den handredigerade inmatningsdäcken misslyckas när den läses av GAMESS-US.
Uppriktning och mätningar
Ett av de specialiserade verktygen som ingår i Avogadros standarddistribution är uppriktningsverktyget. Detta musverktyg underlättar inriktningen av en molekylär struktur med koordinatursprunget om en atom är vald, och längs den angivna axeln om två atomer är valda. Utjämningsverktyget kan kombineras med verktygen mäta, välja och manipulera för att skapa indata för kvantkoder där molekylens position och orientering är viktig. Ett exempel på detta är beräkningar där ett externt elektriskt fält appliceras på molekylen. I dessa typer av beräkningar kan molekylens inriktning ha en stor effekt. Figur 8 visar mätverktyget i aktion med konfigurationsdialogrutan för inriktningsverktyget synlig i det nedre vänstra hörnet.
Det skulle kunna skapas mer komplexa anpassningsverktyg för specifika uppgifter. Anpassningsverktyget skapades på bara några timmar för ett specifikt forskningsprojekt. Detta är ett utmärkt exempel där utbyggbarhet var mycket viktigt för att utföra forskning med hjälp av ett grafiskt verktyg för beräkningskemi. Det skulle inte vara värt investeringen att skapa ett nytt program bara för att anpassa molekylära strukturer till en axel, men att skapa ett plugin för ett utbyggbart projekt är inte orimligt.
Visualisering
Avogadro-applikationen använder OpenGL för att interaktivt återge molekylära representationer på skärmen. OpenGL erbjuder ett plattformsoberoende API på hög nivå för rendering av tredimensionella bilder med hjälp av hårdvaruaccelererad grafik. OpenGL 1.1 och lägre används i större delen av renderingskoden, så Avogadro kan användas även på äldre datorsystem eller sådana som saknar modernare accelererad grafik. Den kan dra nytta av några av de nyare funktionerna i OpenGL 2.0 som beskrivs nedan, men detta har behållits som en valfri extrafunktion när man arbetar med nya visualiseringar av molekylstruktur.
Standardrepresentationer
I kemin finns det flera standardrepresentationer av molekylstruktur, ursprungligen baserade på dem som är möjliga med fysiska modeller. Avogadro-applikationen implementerar var och en av dessa representationer som visas i figur 2 som en insticksmodul. Dessa sträcker sig från den enkla wireframe-representationen, pinne/licorice, boll och pinne samt Van der Waals-sfärer.
Det är också möjligt att kombinera flera representationer, t.ex. boll och pinne med ringrendering (figur 2 (d)) och en halvtransparent Van der Waals-rymdfyllnadsrepresentation med en pinne-representation för att belysa den molekylära ryggraden (figur 2 (f)).
Kvantumberäkningar och elektronisk struktur
Kvantumkoder utvecklades ursprungligen för radskrivare, och tyvärr har inte mycket förändrats sedan dess i standardloggfilerna. Det finns flera format som utvecklats för användning i andra koder och specifikt för visualisering och analys, men det finns knappast någon överenskommelse om något standardfilformat i samhället för beräkningsbaserad kvantkemi. Ett plugin utvecklades i Avogadro för att visualisera utdata från olika kvantkoder och få in data i rätt format för vidare visualisering och analys.
Inledningsvis lades stöd till och utökades i Open Babel för Gaussian cube-filer. Detta format tillhandahåller atomkoordinater och ett eller flera regelbundet fördelade rutnät av skalära värden. Detta kan läsas in, och tekniker som algoritmen Marching Cubes kan användas för att beräkna triangulära maskor av isytor vid värden för t.ex. elektrontäthet. När koden väl har utvecklats för att visualisera dessa isytor blev det tydligt att det skulle vara användbart att kunna beräkna dessa kuber i farten och på olika detaljeringsnivåer beroende på den avsedda användningen.
Det första formatet, som var något dokumenterat när det utvecklades, är det Gaussiskt formaterade kontrollpunktsformatet. Detta format är mycket lättare att analysera än de loggfiler som genereras när programmet körs, och ger alla detaljer som behövs för att beräkna skalära värden av molekylorbitalet eller elektrontätheten i vilken punkt som helst i rummet. När en klassstruktur hade utvecklats för orbitaler av Gaussisk typ utvidgades tillvägagångssättet till att läsa in flera andra populära format för utdatafiler, däribland Q-Chem, GAMESS-US, NWChem och Molpro. Stöd för MOPAC200x lades senare till, tillsammans med stöd för AUX-formatet och orbitaler av Slater-typ som används i den koden. Alla dessa koder ger ut sina slutkonfigurationer med hjälp av den standardiserade linjära kombinationen av atomära orbitaler, vilket innebär att parallellisering är extremt enkel.
Pluginet utvecklades för att dra nytta av den map-reduce-strategi som QtConcurrent erbjuder för att använda alla tillgängliga processorkärnor. Detta erbjuder nästan linjär skalning eftersom varje punkt i rutnätet kan beräknas oberoende av alla andra punkter, vars resultat kan ses i figur 9. Ett alternativt tillvägagångssätt för att beräkna molekylära orbitaler utvecklades i ett andra insticksprogram som sedan dess har delats upp i ett separat projekt med namnet ”OpenQube”. Biblioteket ”OpenQube” har också lagts till som en valfri backend i VTK under 2011 års Google Summer of Code, vilket ger stöd för flera format för utdatafiler och beräkning av kubfiler som senare kan matas in i mer avancerade datapipelines.
En klasshierarki med ett standard-API tillhandahålls för kvantutdata. Att lägga till stöd för nya koder innebar att utveckla en ny parser och se till att Gaussian eller Slater set fylls med rätt ordning och det förväntade normaliseringsschemat. Gaussiska orbitaler av s-, p- och d-typ stöds, och stöd för f och g planeras för att stödja det ökande antalet beräkningar som använder dessa orbitaler av högre ordning. Basis Set Exchange som finns hos EMSL ger tillgång till de basuppsättningar som används allmänt, även om dessa basuppsättningar för närvarande normalt läses in direkt från utdatafiler. Det finns flera relaterade projekt för att lägga till semantisk betydelse till denna typ av utdata, bland annat JUMBO-Converters-projektet och Quixote. Förhoppningen är att fler koder kommer att införa semantisk output i framtiden och använda ett gemensamt format så att datautbyte, validering och analys blir lättare för flera koder. Detta var ämnet för ett möte nyligen där flera koder för beräkningskemi började använda FoX för att ge ut CML. Utveckling har påbörjats av kod för att läsa in CML-utdata, antingen direkt från koderna eller genom konvertering av andra format med hjälp av Open Babel eller JUMBO-konverterare. Om tillräcklig semantisk struktur kan läggas till i CML och om konverterarna stöder ett tillräckligt stort antal utdata, skulle detta kunna ersätta större delen av den parsingkod som finns i OpenQube. Semantisk betydelse är något av det svåraste att extrahera från loggfiler, och att komma samman som en gemenskap kommer att hjälpa projekt som Avogadro att härleda mer betydelse från utdata från dessa koder.
Sekundär biologisk struktur
Avogadro använder PDB-läsaren från Open Babel för att läsa in den sekundära biologiska strukturen. Det finns två plugins för att bearbeta och återge denna information. Den första är en insticksmodul som renderar ett enkelt rör mellan biomolekylens ryggradatomer. En andra mer avancerad plugin beräknar maskor för alfahelixer och betablad. Det första insticksprogrammet är mycket snabbare, men det avancerade insticksprogrammet ger mer exakt resultat som förväntas på fältet. Detta ger användarna flexibilitet för rendering av sekundära biologiska strukturer.
GLSL, ny visualisering
GLSL, eller OpenGL Shader Language, är en C-liknande syntax som kan användas för att utveckla kod som kan köras på grafikkort och som ingår i OpenGL 2.0-specifikationen. Det har använts med stor effekt av spelindustrin, liksom inom många områden av datavisualisering. Flera nyligen publicerade artiklar belyser potentialen inom kemi, t.ex. QuteMol som lägger till stöd för funktioner som ambient occlusion för att lägga till djup till bilder.
Avogadro har stöd för vertex- och fragmentshaderprogram och flera exempel finns med i paketet. Om användarens grafikkort har kapacitet kan dessa program laddas vid körning och användas med stor effekt för att visualisera strukturer. Några av dessa inkluderar sammanfattningstekniker som isosurface rendering där endast de kanter som är ortogonala till vyplanet är synliga, vilket ger en mycket bättre återgivning av både den molekylära och elektroniska strukturen (figur 10).
Ray tracing
Avogadro använder sig av en abstraktion av målare som gör det mycket lättare för utvecklare att lägga till nya visningstyper. Den abstraherar också bort rendern, vilket gör det möjligt att lägga till stöd för alternativa backends. För närvarande stöds endast OpenGL och POV-Ray. Tack vare abstraktionen kan vi använda de implicita ytor som finns tillgängliga i ray tracers för att återge molekylära strukturer på mycket höga nivåer av klarhet och utan några av de triangelartefakter som finns i standard OpenGL-återgivna bilder. Transparens och reflektion av mycket högre kvalitet gör det också möjligt att använda bilderna i poster- och muntliga presentationer samt forskningsartiklar (figur 11).
Den här funktionen är implementerad i en förlängning, med ytterligare en painter-klass som härstammar från basklassen och en dialogruta som gör det möjligt för användaren att redigera de grundläggande renderingskontrollerna. POV-Ray-inmatningsfilen kan också behållas och redigeras för att producera mer komplexa bilder, eller för att möjliggöra en mycket finare kontroll av renderingsprocessen om så önskas.
Avogadro-biblioteket i bruk
Avogadro-bibliotekets första användning var Avogadro-applikationen, tätt följt av det periodiska systemet Kalzium som är en del av KDE:s programvarusamling. Detta första arbete finansierades delvis av programmet Google Summer of Code 2007 och resulterade också i att flera andra funktioner lades till i Avogadro-biblioteket för att stödja Kalzium och allmän visualisering och redigering av molekylstruktur (figur 12).
Paketet Q-Chem har utvecklat ”QUI – The Q-Chem User Interface” kring Avogadro, ursprungligen som ett Avogadro-tillägg. Detta är en mer avancerad version av den inmatningsgenerator som utvecklats i Avogadro, med mycket tätare integration. Molpro har också publicerat några resultat från deras utveckling av ett Molpro-gränssnitt med hjälp av Avogadro-biblioteket .
Packmol
Packmol är ett tredjepartspaket som är utformat för att skapa initiala ”packade” konfigurationer av molekyler för molekyldynamik eller andra simuleringar . Exempel är att omge ett protein med lösningsmedel, lösningsmedelsblandningar, lipiddubbelskikt, sfäriska miceller, placera motjoner, lägga till ligander till nanopartiklar osv. Vanligtvis kan användarna ha jämviktade ”lösningsmedelslådor” som har körts i långa simuleringar för att säkerställa korrekt densitet och både kort- och långdistansinteraktioner mellan lösningsmedelsmolekylerna. Genom att använda sådana lösningsmedelslådor kan man placera lösningsmolekyler, t.ex. proteiner, i en ungefärlig korrekt initial struktur, t.ex. den som visas i figur 13. Lösningen läggs till i lådan och lösningsmedelsmolekyler med överlappande atomer tas bort. Även om dessa verktyg ofta är tillräckliga är det inte alltid lätt att skapa komplexa inmatningsfiler. För mer komplicerade system kan Packmol skapa en inledande konfiguration baserad på definierade tätheter, geometrier (t.ex. sfär, låda osv.) och de molekyler som ska placeras. En Avogadro-utvecklare skrev ett externt plugin för att underlätta användningen av Packmol, bland annat genom att uppskatta antalet molekyler i en given volym.
Inlägget distribueras för närvarande inte med Avogadro som standardfunktion, även om det är planerat för någon framtida version. Det tjänar som ett exempel på hur Avogadro kan underlätta ett arbetsflöde med ett textorienterat paket (Packmol), inklusive att spara filer i det PDB-format som Packmol kräver, generera en inmatningsfil och läsa utmatningen för visualisering, analys och ytterligare simuleringar.
XtalOpt
Programvarupaketet XtalOpt implementeras som ett C++-förlängningstillägg till Avogadro från en tredje part och använder sig i hög grad av API:et libavogadro. Tillägget implementerar en evolutionär algoritm som är skräddarsydd för prediktion av kristallstrukturer. Utvecklingsteamet för XtalOpt valde Avogadro som plattform på grund av dess licens med öppen källkod, väl utformade API, kraftfulla visualiseringsverktyg och intuitiva användargränssnitt. XtalOpt existerar som ett dialogfönster (figur 14) och använder Avogadros huvudfönster för att visualisera kandidatstrukturer medan de utvecklas. API:et är väl lämpat för XtalOpts behov och tillhandahåller en enkel mekanism som gör det möjligt för användaren att visa, redigera och exportera de strukturer som genereras under sökningen. XtalOpt drar nytta av de plattformsoberoende möjligheterna hos Avogadro och dess beroenden och finns tillgängligt för Linux, Windows och Mac.