
Biophysics and Physicobiology Vol. 16, pp. 485–489 (2019) Supplementary Materials Supplementary Text S1. Introduction File format support using simulation packages/molecular visualization systems In the field of computational molecular science, there are various file formats containing the chemical information of proteins such as PDB, PDBx/mmCIF, and PDBML[1]. In computational studies, researchers use such containers for pre- processing and post-processing in computation, for example, preparation of an initial structure for computation including molecular dynamics (MD) simulation and visualization of the final structure of the MD simulation. The PDB file format is supported by various MD packages, including Amber[2], NAMD[3], and Charmm[4], and Molecular Graphics Systems, including VMD[5] and UCSF Chimera[6], despite its data update support being finished on 21 November 2012 according to wwPDB. PDBx/mmCIF, the current standard file format, is also supported by the various tools mentioned above. In contrast, PDBML, XML-conversion of PDBx/mmCIF, is generally not supported by such tools except for PDBj-supplying tools such as jV[7] and Molmil[8]. The way of describing the information of a single atom differs among PDB, PDBx/mmCIF, and PDBML. Advantage of PDBML In the field of information technologies, the XML format is widely used as a file format capable of extending attributes of hierarchically structured data. The XML file I/O function is necessary to follow an advancement of file formats for biomolecules such as new attribute addition, which is required by next-generation research. For example, the PDBML format by wwPDB is an XML file format which has identical information to the PDBx/mmCIF file format, which is highly suitable for future extension. ©2016 THE BIOPHYSICAL SOCIETY OF JAPAN 1 2 Biophysics and Physicobiology Vol. 16 Methods Programming strategies Model-View-Controller model The Model-View-Controller (MVC) model[9] is an architectural pattern used in applications with user interface (UI). In the MVC model, an application is divided into three components: Model, View, and Controller. Model manages the data, logic, and rules of the application. View represents information users can see such as diagrams or tables (Figure S1). Controller accepts input from users, converting it to commands for the Model/View. Facade pattern The facade pattern[10] is one of the software design patterns by the Gang of Four (GoF). This software design pattern uses a wrapper class to call a sub-system from the client component, UI. The wrapper class is delegated to conduct complex sub-systems in order to implement complex logic. In other words, wrapper components mask the complex implementation of a sub-system, providing a simple interface for client components as in Figure S2. The software design pattern divides a software application into three layers: UI layer; a wrapper layer which implements complex logic; sub- system layer called by the wrapper layer. An expert user, who is an expert in software development to generate custom-made software, can enhance logic by modifying the wrapper layer, and speeding up an application by editing the sub-system layer, whereas non-expert users can easily call new logic by editing the UI layer. 2 Onishi et al.: An tool for computational science on biomolecules 3 Programming language and libraries Scala Scala[11], scalable language, is a highly-scalable, object-oriented programming language with some features of a functional programming language, which was developed by Martin Odersky, a professor at École Polytechnique Fédérale de Lausanne in Lausanne, Switzerland. Scala is adopted in Twitter, LinkedIn, and GitBucket. Scala has the following features: a multi-paradigm programming language of object-oriented programming language and functional programming language; runs on a Java Virtual Machine, which means availability of various Java class-libraries and platform- independence; powerful regular-expression functions; type-inference; availability for interpreter usage as in Python; Some/None type, devastating NullPointerException hell; XML-syntax support. A Scala compiler has an auto-translation feature turning procedural programming expressions in the source code into functional programming expressions. For example, for-loop, which many developers are familiar with, is internally converted to the foreach function. This feature allows non-expert users to use powerful features of the functional programming language without knowledge of a category theory such as monads. Scala supports XML-syntax (Figure S3). Scala accepts XML in code and has an XML class, which corresponds to XML parser in Java, for XML file I/O. Since PDBML files are automatically generated by computers, they basically must be valid XML without human modification. In addition, either the Author or Label attributes can be empty in some cases. We chose XML parser in Scala as the PDBML handler despite the existence of the XML parser in Fortran, Java, etc. due to Scala’s XML-syntax support and the existence of XML file I/O functions. Scala supports easy access to the XML tag hierarchical structure, which allows users to easily edit XML values and attributes, and even tag hierarchical structures. Scala can call shell commands almost as is (Figure S4). Pipe handling is also available in Scala. This ability helps users to build Model components which use Shell commands. Scala differs from Java in the following points: (1) powerful regular-expression functions; (2) allowance of data update of outer class by inner class, which is prohibited in Java. Unlike implementation in Java and other languages, regular expression in Scala is free from “escape hell”, where many programmers struggle to escape various special characters, e.g. backslash \, depending on the environment including the OS and 3 4 Biophysics and Physicobiology Vol. 16 programming language they use (Figure S5). Scala has triple-quoted String syntax, which allows programmers to write pure regular expressions (Figure S6). Furthermore, Scala can easily extract data matched to a pattern (Figure S7). Scala also allows developers to update the data of the outer class by inner class, which is prohibited in Java. This feature leads to easy implementation of new functions in smaller code, which speeds up GUI implementation. Scala is type-safe (the compiler will validate types while compiling), or strong static typing, unlike script language like Python. A type-safe programming language is highly maintainable especially in the case of server side applications. Unlike Java, Scala enforces parameters of a method immutable for parallelization. Mis-modification of data will never happen in the case of immutable data. Standard Widget Toolkit Standard Widget Toolkit (SWT) [12] is the Java GUI toolkit provided by the Eclipse Foundation, which is used in Eclipse, an integrated development environment (IDE) provided by the Eclipse Foundation. Unlike Swing in Java, SWT uses native window- widgets of each OS to open directories/files, resulting in a fast response. Needing complex implementation, developers can use JFace[13], an extension of SWT, although SWT provides only simple functions. JLine JLine[14] is a Java library for handling console input. JLine provides Linux-shell-like interfaces such as bash/tcsh. We used JLine for Scala[15], the fork of the original JLine, to build a character user interface (CUI). Lightweight Java Game Library The Lightweight Java Game Library (LWJGL) [16] is a Java-OpenGL wrapper which supports stereoscopic 3D graphics by Quad-buffered stereo, in Java/Scala. Minecraft, a famous video game, uses this library. By using LWJGL, stereoscopic 3D graphics are available with a 3D display and video card supporting Quad-buffered stereo. LWJGL enables researchers to develop molecular visualization systems capable of providing stereoscopic 3D graphics, which are necessary to understand the structure of biomolecules. 4 Onishi et al.: An tool for computational science on biomolecules 5 User’s guide Setup Java STCSB needs Java8 or higher. Please install Java before using STCSB. Check Java version If you already have installed Java, please check the Java version with the following command. java -version If you got any of the following standard output, you can use STCSB. XXX is the build number. # java8 java version "1.8.0_XXX" # java10 java version "1.10.0_XXX" # java12 java version "12.0.1_XXX" Setting Environment variables Set Environment variable, ST_HOME Linux/Unix # Assuming /home/user/STCSB is a root directory # bash export ST_HOME=/home/user/STCSB # csh, tcsh set ST_HOME=/home/user/STCSB macOS # Assuming /home/user/STCSB is a root directory export ST_HOME=/home/user/STCSB 5 6 Biophysics and Physicobiology Vol. 16 Windows rem Assuming c:\home\user\STCSB is a root directory set ST_HOME=c:\home\user\STCSB rem ------------------------------------------- rem If path to a root directory contains white-spaces, rem enclose a path by double-quotes set ST_HOME="C:\Program Files\STCSB" Setting Environment variable, PATH Linux/Unix # bash export PATH=$PATH:$ST_HOME/bin # csh, tcsh set PATH=$PATH:$ST_HOME/bin macOS export PATH=$PATH:$ST_HOME/bin Windows set PATH=%PATH%:%ST_HOME%\bin How to use modules we have already prepared CUI startup CUI # Linux/Unix/macOS $ exeCUI # Windows $ exeCUI.bat use sub-commands (platform-independent) # ls user@domain dir> ls directory1 files # cd user@domain dir> cd directory1 # 6 Onishi et al.: An tool for computational science on biomolecules 7 user@domain
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages19 Page
-
File Size-