Molekylär visualisering spelar en viktig roll när det gäller att bygga upp databaser och arkiv, förbereda initiala strukturer för kvant- och molekyldynamikberäkningar och analysera bankkoordinater i realtid. Visualisering och interaktiv redigering av molekylernas struktur kan effektivt minska simuleringströskeln och förbättra effektiviteten. Den senaste utvecklingen inom området högpresterande datorer (HPC) och molntjänster har lett till många datorplattformar online. Till exempel MatCloud , rescale , WebMO och MolCalc erbjuder webbtjänster för beräkningar av material och kemi. Dessa webbaserade verktyg ger möjlighet att fjärrstyra beräkningsresurser, och deras tillgänglighet och kompatibilitet gör dem mycket populära. Numera är det vanligt att använda de webbaserade 3D-strukturvisualiserings- och redigeringsverktygen för att generera modellstrukturer och förbereda inmatningsfilerna för simuleringar.
Den senaste visualiseringsprogramvaran inom området beräkningskemi är huvudsakligen utvecklad i skrivbordsmiljö, t.ex. Avogadro , Materials Studio , och VESTA . Med den ökande efterfrågan på webbaserad visualisering har flera relevanta verktyg dykt upp. Till exempel 3Dmol , JSmol och Web3DMol innehåller kraftfulla visualiseringsmöjligheter, men strukturredigeringsfunktionen saknas. Andra verktyg, t.ex. ChemdoodleWeb , Kekule.js , JSME , kan endast redigera tvådimensionella strukturer (2D). Verktyg för redigering av 3D-strukturer (t.ex. ChemMozart , CH5M3D ) rapporteras också i litteraturen. Dessa verktyg är dock inriktade på organisk molekylär modellering och stöder inte bearbetning av kristallstrukturer. Dessutom är ChemMozart implementerat med hjälp av node.js-ramverket, och det kan inte användas enbart som ett lättviktsbibliotek.
För att bearbeta kemisk information på webbserver har vi utvecklat ett avancerat kemiskt visualiserings- och redigeringsprogram med följande funktioner. För det första kan både icke-periodiska organiska molekyler och kristallstrukturer visualiseras, byggas och redigeras interaktivt. För det andra tillhandahålls ett stort antal cheminformatiska algoritmer för kristallstruktur, t.ex. klyvning av ytor, upprättande av vakuumskikt och skapande av superceller. För det tredje är det ett lättviktsbibliotek som implementeras med hjälp av JavaScript, och det kan lätt användas för att tillhandahålla webbtjänster oberoende av varandra eller integreras i andra webbplattformar. Slutligen kan de initiala inmatningsfilerna för VASP och Gaussian genereras genom att interagera med dialogrutor.
Implementation
Samma som de flesta program med grafiskt användargränssnitt (GUI) för beräkning av kemi , fokuserar 3DStructGen på generering av initial molekylär geometri. Som framgår av figur 1 består de grundläggande modulerna för molekyl, kristall och ytplatta av flera metoder för att hantera icke-periodiska molekyler, periodiska kristaller och ytplattor. HTML5 canvas är den centrala modulen för att visa 3D-strukturer och för att ansluta alla andra moduler. Musmodulen tillhandahåller ett antal interaktiva operationer med musen för användarna. Behandlingsmetoderna för allmänna kemiska filformat (XYZ, SD, MOL, CIF) stöds i IO-modulen, och den inledande inmatningsfilen för VASP och Gaussian kan framställas med hjälp av gränssnittsmodulen. Utforskarmodulen skriver ut den interaktiva informationen (t.ex. filnamn, gitterparameter, atomavstånd, atomkoordinat etc.) för användarna i realtid. Dessutom erbjuder ChemKit API utvidgningar av 3DStructGen genom att integrera andra cheminformatiska verktyg.
Element, atom och molekyl
Parametrarna för element (t.ex, atomnummer, elementsymbol, atommassa, färg, kovalenta radier osv.) definieras som en lista i funktionen ”element ()”. Funktionen ”addElem ()” används för att lägga till ett element som anges av användarna, och motsvarande atommodell kommer att visualiseras på canvas. Alla element visas i samma färg som i VESTA-programmet. Metanmolekylen presenteras på canvas när 3DStructGen initieras. ”Boll och pinne”-representationen av strukturerna med atomernas storlek baserad på deras kovalenta radier som standard. Dessutom kan ”stick-and-line”-modellerna också specificeras av användare.
Funktionerna ”addAtom ()” och ”delAtom ()” används för att lägga till en ny atom respektive ta bort en befintlig atom i en molekyl. Som standard kommer ett lämpligt antal väteatomer att läggas till enligt regeln för oktettteori, och bindningsvinklarna tilldelas ett värde baserat på orbitalhybridisering (sp3 som standard) som valts av användare.
När en ny atom läggs till skapas en bindning inom dess värde av summan av de bundna atomernas kovalenta radier. Förbindelsen mellan atompar kan läggas till med hjälp av musoperationer genom att anropa funktionen ”addBond ()”, definierad i filer eller beräknad av 3DStructGen. Funktionen ”createBond ()” beskriver den detaljerade bindningsregeln: först upprättas en lista över möjliga bindningsatomer baserat på bindningsvalansmodellen, och sedan beräknas avståndet för dessa möjliga bindningsatomer. En bindning skapas om avståndet ligger mellan 0,5 och 1,2 gånger summan av de kovalenta radierna för dessa bindningsatomer. Här används 0,5 gånger avståndet för att undvika bindningar mellan slutna atomer (kanske överlappande atomer). Funktionen ”bondMatrix ()” definierar en offentlig rutin för att lagra och återge bindningslistan. Algoritmen för grafmärkning (pseudokod i fig. 2) som används för att känna igen ramverk och gäster (inklusive lösningsmedelsmolekyl) har utvecklats för att hantera metallorganiska ramverk (MOF) i databasen Cambridge structural database (CSD). Vår bindningsmetod har visat tillfredsställande resultat för denna uppgift, och visualiseringsresultaten finns i avsnittet ”Structure visualization”.
När en struktur skapas kan en atom eller en grupp atomer som valts ut av användarna flyttas i uppåt-, nedåt-, vänster- och högerriktning med ett användarspecificerat avstånd. En grov geometrioptimering stöds för icke-periodiska molekyler genom att optimera bindningslängder, bindningsvinklar och dihedral enligt samma metod som i CH5M3D . En valfri geometrioptimering baserad på force filed-metoden tillhandahålls också genom att använda ChemKit API, vilket förklaras närmare i avsnittet ”ChemKit API”.
Kristall och ytplatta
Funktionen ”buildCrystal ()” används för att bygga upp kristallgitterstrukturen. Genom att klicka på dialogrutan ”build crystal” kan symmetriutrymningsgrupper (230 totalt), gitterparametrar, atomtyper och koordinater interaktivt väljas eller redigeras av användare. När alla operationer är klara visas en kristallstruktur i canvas.
Supercellplattan är en strukturell modell som används i kvant- eller molekyldynamiksimuleringar för att studera ytans kinetiska , termodynamiska och elektroniska egenskaper. Funktionen ”cleaveSurf ()” visar en algoritm för att konstruera en ytplatta med valfri Miller-indexorientering från en bulkenhetscell i ett valfritt Bravaisgitter. En platta med två ytor är inbäddad i vakuumområden i en supercell. Sun föreslog en effektiv algoritm för att konstruera en ytplatta, och samma metod används för att hitta två basvektorer som sträcker sig över en given ytorientering, \(\varvec{v}_{1}\) och \(\varvec{v}_{2}\). Följande är de detaljerade beskrivningarna:
Om ett Miller-index inte innehåller några nollor tar vi (hkl) som exempel:
Om ett Miller-index innehåller en nolla tar vi (hk0) som exempel:
Om ett Miller-index innehåller två nollor tar vi (h00) som exempel:
För en kristallstruktur som består av en enhetscell, och en uppsättning atomer är anordnade på ett sådant sätt att atomerna upprepas periodiskt i tre dimensioner på ett gitter. Funktionen ”displayStyle ()” tillhandahåller flera metoder för att visa de upprepade atomerna, och de relevanta bilderna visas i fig. 3. Följande alternativ kan väljas i 3DStructGen:
-
”Asymmetrisk”: Den minsta underenheten i en kristall presenteras och består av en eller flera atomer, joner eller molekyler, vars geometriska arrangemang inte är relaterat till kristallografisk symmetri.
-
”Original”: Med den här stilen visas varje atom på sin ursprungliga plats, tillsammans med kopior som bildas genom att tillämpa var och en av symmetrigruppens operatorer.
-
”In-cell”: Atomer visas baserat på om deras koordinater, liksom deras symmetriska kopior, befinner sig i gittercellen.
-
”Packing”: Atomen visas baserat på om deras koordinater, liksom deras symmetriska kopior, befinner sig i gittercellen: De kompletta molekylerna och deras symmetriska kopior i en gittercell visas beroende på det geometriska centret för anslutna uppsättningar av atomer. Detta ger en visning av konventionell cell för de flesta typer av kristallsystem.
Ovanstående stilar gör det möjligt för användare att visualisera atomer på önskat sätt för olika scenarier. Den ”asymmetriska” kan vara användbar för att fokusera på detaljer i den minimala strukturen när alla kopior är osynliga, särskilt för stora och komplexa modeller. Stilarna ”Original” och ”Packing” ger kopior av enheter som visar symmetrisk information om en kristall. Stilen ”In-cell” ger en glimt av alla möjliga atomer i gittercellen, vilket stämmer överens med den verkliga scenen när man avkortar en gittercell från hela det periodiska systemet.