Please use this identifier to cite or link to this item:
Publication type: Article in scientific journal
Type of review: Peer review (publication)
Title: chemf : a purely functional chemistry toolkit
Authors: Höck, Stefan
Riedl, Rainer
DOI: 10.1186/1758-2946-4-38
Published in: Journal of Cheminformatics
Volume(Issue): 4
Issue: 38
Issue Date: 2012
Publisher / Ed. Institution: BioMed Central
ISSN: 1758-2946
Language: English
Subjects: chemf; Medicinal chemistry; Cheminformatics; Molecular modeling
Subject (DDC): 005: Computer programming, programs and data
540: Chemistry
Abstract: Background: Although programming in a type-safe and referentially transparent style offers several advantages over working with mutable data structures and side effects, this style of programming has not seen much use in chemistry-related software. Since functional programming languages were designed with referential transparency in mind, these languages offer a lot of support when writing immutable data structures and side-effects free code. We therefore started implementing our own toolkit based on the above programming paradigms in a modern, versatile programming language. Results: We present our initial results with functional programming in chemistry by first describing an immutable data structure for molecular graphs together with a couple of simple algorithms to calculate basic molecular properties before writing a complete SMILES parser in accordance with the OpenSMILES specification. Along the way we show how to deal with input validation, error handling, bulk operations, and parallelization in a purely functional way. At the end we also analyze and improve our algorithms and data structures in terms of performance and compare it to existing toolkits both object-oriented and purely functional. All code was written in Scala, a modern multi-paradigm programming language with a strong support for functional programming and a highly sophisticated type system. Conclusions: We have successfully made the first important steps towards a purely functional chemistry toolkit. The data structures and algorithms presented in this article perform well while at the same time they can be safely used in parallelized applications, such as computer aided drug design experiments, without further adjustments. This stands in contrast to existing object-oriented toolkits where thread safety of data structures and algorithms is a deliberate design decision that can be hard to implement. Finally, the level of type-safety achieved by Scala highly increased the reliability of our code as well as the productivity of the programmers involved in this project.
Fulltext version: Published version
License (according to publishing contract): CC BY 2.0: Attribution 2.0 Generic
Departement: Life Sciences and Facility Management
Organisational Unit: Institute of Chemistry and Biotechnology (ICBT)
Appears in collections:Publikationen Life Sciences und Facility Management

Files in This Item:
File Description SizeFormat 
2012_Hoeck_chemf_Journal of Cheminformatics.pdf1.09 MBAdobe PDFThumbnail
Show full item record
Höck, S., & Riedl, R. (2012). chemf : a purely functional chemistry toolkit. Journal of Cheminformatics, 4(38).
Höck, S. and Riedl, R. (2012) ‘chemf : a purely functional chemistry toolkit’, Journal of Cheminformatics, 4(38). Available at:
S. Höck and R. Riedl, “chemf : a purely functional chemistry toolkit,” Journal of Cheminformatics, vol. 4, no. 38, 2012, doi: 10.1186/1758-2946-4-38.
HÖCK, Stefan und Rainer RIEDL, 2012. chemf : a purely functional chemistry toolkit. Journal of Cheminformatics. 2012. Bd. 4, Nr. 38. DOI 10.1186/1758-2946-4-38
Höck, Stefan, and Rainer Riedl. 2012. “Chemf : A Purely Functional Chemistry Toolkit.” Journal of Cheminformatics 4 (38).
Höck, Stefan, and Rainer Riedl. “Chemf : A Purely Functional Chemistry Toolkit.” Journal of Cheminformatics, vol. 4, no. 38, 2012,

Items in DSpace are protected by copyright, with all rights reserved, unless otherwise indicated.