5,522 research outputs found
Extending fragment-based free energy calculations with library Monte Carlo simulation: Annealing in interaction space
Pre-calculated libraries of molecular fragment configurations have previously
been used as a basis for both equilibrium sampling (via "library-based Monte
Carlo") and for obtaining absolute free energies using a polymer-growth
formalism. Here, we combine the two approaches to extend the size of systems
for which free energies can be calculated. We study a series of all-atom
poly-alanine systems in a simple dielectric "solvent" and find that precise
free energies can be obtained rapidly. For instance, for 12 residues, less than
an hour of single-processor is required. The combined approach is formally
equivalent to the "annealed importance sampling" algorithm; instead of
annealing by decreasing temperature, however, interactions among fragments are
gradually added as the molecule is "grown." We discuss implications for future
binding affinity calculations in which a ligand is grown into a binding site
Transition Path Sampling and Forward Flux Sampling. Applications to Biological Systems.
The last decade has seen a rapid growth in the number of simulation methods and applications dealing with the sampling of transition pathways of rare nanoscale events. Such studies are crucial, for example, for understanding the mechanism and kinetics of conformational transitions and enzymatic events associated with the function of biomolecules. In this review, a broad account of transition path sampling approaches is provided, starting from the general concepts, progressing to the specific principles that underlie some of the most important methods, and eventually singling out the so-called forward flux sampling method for a more detailed description. This is done because forward flux sampling, despite its appealing simplicity and potential efficiency, has thus far received limited attention from practitioners. While path sampling methods have a widespread application to many types of rare transitional events, here only recent applications involving biomolecules are reviewed, including isomerization, protein folding, and enzyme catalysis.This publication is based on work supported in part by Award No. KUS-C1-018-02, made by King Abdullah University of Science and Technology (KAUST). Additional support from the National Science Foundation Award 0553719 is also gratefully acknowledged. The authors are also grateful to J. Hernandez-Ortiz and P. Bolhuis for allowing us to modify their picture files
Information flow analysis for a dynamically typed language with staged metaprogramming
Web applications written in JavaScript are regularly used for dealing with sensitive or personal data. Consequently, reasoning about their security properties has become an important problem, which is made very difficult by the highly dynamic nature of the language, particularly its support for runtime code generation via eval. In order to deal with this, we propose to investigate security analyses for languages with more principled forms of dynamic code generation. To this end, we present a static information flow analysis for a dynamically typed functional language with prototype-based inheritance and staged metaprogramming. We prove its soundness, implement it and test it on various examples designed to show its relevance to proving security properties, such as noninterference, in JavaScript. To demonstrate the applicability of the analysis, we also present a general method for transforming a program using eval into one using staged metaprogramming. To our knowledge, this is the first fully static information flow analysis for a language with staged metaprogramming, and the first formal soundness proof of a CFA-based information flow analysis for a functional programming language
A Transformation-Based Foundation for Semantics-Directed Code Generation
Interpreters and compilers are two different ways of implementing
programming languages. An interpreter directly executes its program
input. It is a concise definition of the semantics of a programming
language and is easily implemented. A compiler translates its program
input into another language. It is more difficult to construct, but
the code that it generates runs faster than interpreted code.
In this dissertation, we propose a transformation-based foundation for
deriving compilers from semantic specifications in the form of four
rules. These rules give apriori advice for staging, and allow
explicit compiler derivation that would be less succinct with partial
evaluation. When applied, these rules turn an interpreter that
directly executes its program input into a compiler that emits the
code that the interpreter would have executed.
We formalize the language syntax and semantics to be used for the
interpreter and the compiler, and also specify a notion of equality.
It is then possible to precisely state the transformation rules and to
prove both local and global correctness theorems. And although the
transformation rules were developed so as to apply to an interpreter
written in a denotational style, we consider how to modify
non-denotational interpreters so that the rules apply. Finally, we
illustrate these ideas by considering a larger example: a Prolog
implementation
- …