Moleculaire visualisatie speelt een vitale rol bij de opbouw van databases en repositories, de voorbereiding van initiële structuren voor kwantum- en moleculaire-dynamicaberekeningen, en de analyse van de baancoördinaten in real time. Het visualiseren en interactief bewerken van de structuur van de moleculen kan de simulatiedrempel effectief verlagen en de efficiëntie verbeteren. Recente ontwikkelingen op het gebied van high-performance computing (HPC) en cloud computing hebben geleid tot vele online rekenplatforms. MatCloud , rescale , WebMO , en MolCalc , bijvoorbeeld, bieden webdiensten voor materiaal- en chemieberekeningen. Deze webgebaseerde instrumenten bieden de mogelijkheid om rekenhulpbronnen op afstand te beheren, en hun toegankelijkheid en compatibiliteit maken ze uiterst populair. Tegenwoordig is het gebruikelijk om de web-gebaseerde 3D structuurvisualisatie en editor tools te gebruiken om de modelstructuren te genereren en de invoerbestanden voor simulaties voor te bereiden.
De state-of-the-art visualisatiesoftware op het gebied van de computationele chemie is voornamelijk ontwikkeld op desktop-omgeving, zoals Avogadro , Materials Studio , en VESTA . Met de toenemende vraag naar web-based visualisatie, zijn verschillende relevante tools ontstaan. Zo bevatten 3Dmol , JSmol en Web3DMol krachtige visualisatiemogelijkheden, maar de structuurbewerkingsfunctie ontbreekt. Andere hulpmiddelen, zoals ChemdoodleWeb , Kekule.js , JSME , kunnen alleen tweedimensionale (2D) structuren bewerken. Gereedschappen voor het bewerken van 3D-structuren (bv. ChemMozart , CH5M3D ) worden ook in de literatuur vermeld. Deze hulpmiddelen zijn echter gericht op organische moleculaire modellering en ondersteunen niet de bewerking van kristalstructuren. Bovendien is ChemMozart geïmplementeerd met behulp van node.js framework, en het kan niet worden gebruikt als een lichtgewicht bibliotheek alleen.
Om chemische informatie op de webserver te verwerken, ontwikkelden we een geavanceerde chemische visualisatie en editor programma met de volgende kenmerken. Ten eerste kunnen zowel niet-periodieke organische moleculen als kristalstructuren interactief gevisualiseerd, opgebouwd en bewerkt worden. Ten tweede, een breed scala aan cheminformatica algoritmen voor kristalstructuur zijn beschikbaar, zoals het klieven van oppervlakken, het opzetten van vacuüm lagen, en het creëren van supercellen. Ten derde is het een lichtgewicht bibliotheek die is geïmplementeerd met behulp van JavaScript, en kan het gemakkelijk worden gebruikt om zelfstandig webdiensten te verlenen of te integreren in andere webplatforms. Tenslotte kunnen de initiële invoerbestanden voor VASP en Gaussian worden gegenereerd door interactie met dialoogvensters.
Implementatie
Zoals de meeste grafische gebruikersinterface (GUI) programma’s voor computationele chemie , 3DStructGen richt zich op het genereren van de initiële moleculaire geometrie. Zoals te zien is in Fig. 1, bestaan de basismodules van molecuul, kristal en oppervlakteplaat uit verschillende methoden om respectievelijk niet-periodiek molecuul, periodiek kristal en oppervlakteplaat te behandelen. Het HTML5 canvas is de centrale module voor het weergeven van 3D structuren en het verbinden van alle andere modules. De muismodule biedt gebruikers een aantal interactieve handelingen met de muis. De verwerkingsmethoden voor algemene chemische bestandsformaten (XYZ, SD, MOL, CIF) worden ondersteund in de IO-module, en het initiële invoerbestand voor VASP en Gaussian kan worden geproduceerd met behulp van de interfacemodule. De verkennermodule drukt de interactieve informatie (bv. bestandsnaam, roosterparameter, atoomafstand, atoomcoördinaat, enz.) voor gebruikers in real-time af. Bovendien biedt ChemKit API uitbreidingen van 3DStructGen door andere cheminformaticahulpmiddelen te integreren.
Element, atoom en molecule
De parameters van elementen (bijv, atoomnummer, element symbool, atoommassa, kleur, covalente radii, enz.) worden gedefinieerd als een lijst in “element ()” functie. De functie “addElem ()” wordt gebruikt om een door de gebruiker gespecificeerd element toe te voegen, en het overeenkomstige atoommodel zal op het canvas worden gevisualiseerd. Alle elementen worden in dezelfde kleur weergegeven als in het VESTA-programma. De methaanmolecule wordt in het canvas weergegeven wanneer 3DStructGen wordt geïnitialiseerd. De “bal-en-stok”-voorstelling van de structuren met de grootte van de atomen gebaseerd op hun covalente radii is standaard. Bovendien kunnen de “stick-and-line” modellen ook door gebruikers worden gespecificeerd.
De functies “addAtom ()” en “delAtom ()” worden gebruikt om respectievelijk een nieuw atoom toe te voegen en een bestaand atoom in een molecuul te verwijderen. Standaard wordt een geschikt aantal waterstofatomen toegevoegd volgens de regel van de octettheorie, en de bindingshoeken krijgen een waarde toegewezen op basis van de door gebruikers geselecteerde orbitaal hybridisatie (sp3 in standaard).
Wanneer een nieuw atoom wordt toegevoegd, wordt een binding gemaakt binnen de waarde van de som van de covalente radii van de gebonden atomen. De verbinding tussen atomenparen kan worden toegevoegd met behulp van muisbewerkingen door de functie “addBond ()” aan te roepen, gedefinieerd in bestanden of berekend door de 3DStructGen. De functie “createBond ()” beschrijft in detail de bindingsregel: eerst wordt een lijst van mogelijke bindingsatomen op basis van het bindingsvalantiemodel opgesteld, en vervolgens wordt de afstand voor deze mogelijke bindingsatomen berekend. Een binding wordt gecreëerd als de afstand tussen 0,5 en 1,2 maal de som van de covalente stralen van deze bindingsatomen ligt. Hier wordt de 0.5 keer afstand gebruikt om binding tussen de gesloten atomen (misschien overlappende atomen) te voorkomen. De “bondMatrix ()” functie definieert een publieke routine om de bindingslijst op te slaan en terug te geven. Het grafiek-labeling algoritme (pseudo code in Fig. 2) gebruikt voor het herkennen van kader en gast (inclusief oplosmiddel molecuul) zijn ontwikkeld om te gaan met metaal-organische kaders (MOF) in Cambridge structurele database (CSD) database. Onze bindingsmethode heeft voor deze taak bevredigende resultaten opgeleverd, en de visualisatieresultaten zijn te vinden in de sectie “Structuurvisualisatie”.
Wanneer een structuur wordt gemaakt, kan een atoom of een groep atomen die door gebruikers zijn geselecteerd, worden verplaatst in de richtingen omhoog, omlaag, naar links en naar rechts met een door de gebruiker gespecificeerde afstand. Een ruwe geometrie optimalisatie wordt ondersteund voor niet-periodieke molecule door het optimaliseren van de bindingslengtes, bindingshoeken en dihedraal volgens dezelfde methode in CH5M3D . Een optionele geometrie optimalisatie op basis van ingevulde krachten methode is ook voorzien door het gebruik van ChemKit API, die in meer detail wordt uitgelegd in de “ChemKit API” sectie.
Kristal en oppervlakte plaat
De “buildCrystal ()” functie wordt gebruikt om kristal rooster structuur op te bouwen. Door te klikken op het dialoogvenster van “bouw kristal”, kunnen de symmetrie ruimte groepen (230 in totaal), rooster parameters, atoom typen en coördinaten interactief worden geselecteerd of bewerkt door gebruikers. Als alle bewerkingen zijn voltooid, zal een kristalstructuur worden getoond in het canvas.
De supercel plak is een structureel model dat wordt gebruikt in quantum of moleculaire dynamica simulaties om de oppervlakte kinetische , thermodynamische , en elektronische eigenschappen te bestuderen. De functie “cleaveSurf ()” toont een algoritme om een oppervlakteplaat te construeren met een willekeurige Miller index oriëntatie vanuit een bulk unit cell van een willekeurig Bravais raster. Een plaat met twee oppervlakken is ingebed in vacuümgebieden in een supercel. Sun stelde een efficiënt algoritme voor om een plaatoppervlak te construeren, en dezelfde methode wordt gebruikt om twee basisvectoren te vinden die een gegeven oriëntatie van het oppervlak overspannen, namelijk (\varvec{v}_{1}) en \(\varvec{v}_{2}). Hieronder volgen de gedetailleerde beschrijvingen:
Als een Miller index geen nullen bevat, nemen we (hkl) als voorbeeld:
Als een Miller index één nul bevat, nemen we (hk0) als voorbeeld:
Als een Miller-index twee nullen bevat, nemen we (h00) als voorbeeld:
Voor een kristalstructuur die bestaat uit een eenheidscel, en een verzameling atomen zijn zo gerangschikt dat de atomen periodiek in drie dimensies herhaald worden op een rooster. De functie “displayStyle ()” biedt verschillende methoden om de herhaalde atomen weer te geven, en de relevante afbeeldingen zijn te zien in Fig. 3. De volgende opties kunnen worden gekozen in de 3DStructGen:
-
“Asymmetrisch”: De minimale subeenheid van een kristal wordt gepresenteerd, bestaande uit een of meer atomen, ionen of moleculen, waarvan de geometrische rangschikking niet gerelateerd is door kristallografische symmetrie.
-
“Origineel”: Bij gebruik van deze stijl wordt elk atoom op zijn oorspronkelijke plaats weergegeven, samen met kopieën die zijn gevormd door toepassing van elk van de operatoren van de symmetriegroep.
-
“In-cel”: De atomen worden weergegeven op basis van de vraag of hun coördinaten en hun symmetrische kopieën zich in de roostercel bevinden.
-
“Packing”: De volledige moleculen en hun symmetrische kopieën in een traliecel worden weergegeven op basis van het geometrische middelpunt van verbonden verzamelingen atomen. Dit geeft een weergave van conventionele cellen voor de meeste typen kristalsystemen.
De bovenstaande stijlen stellen gebruikers in staat atomen op de gewenste manier te visualiseren voor verschillende scenario’s. De “Asymmetrische” kan nuttig zijn om te focussen op details van de minimale structuur wanneer alle kopieën onzichtbaar zijn, vooral voor grote en complexe modellen. De stijlen “Origineel” en “Verpakking” geven de kopieën van eenheden, die symmetrische informatie van een kristal laten zien. De “In-cel” stijl vangt een glimp op van alle mogelijke atomen in de roostercel, die overeenkomt met de werkelijke scène van het afkappen van een roostercel uit het gehele periodieke systeem.