Skip to content
0:00 / 0:00

#clasp#commonlisp#llvm

Clasp: Common Lisp using LLVM and C++ for Designing Molecules

Google TechTalks

349K subscribers • 62 videos on Hallway

YouTube
  • Recommended by 2 people: 2 on Hacker News.
  • A classic. People kept recommending it from 2016 to 2020.
  • Presented by Christian Schafmeister

Advanced. Deep dive for people who know the field.

8.6K views11 years ago2 recommendations

Programming languagesSystems programmingLisp and ClojureCompilers and interpretersLanguage design and type systems

Christian Schafmeister explains Clasp, a Common Lisp implementation built on LLVM and C++ designed for molecular metaprogramming and design.

Google Tech Talk August 3, 2015 (click show more for more info) Presented by Christian Schafmeister ABSTRACT I will show you what you can do with CANDO/Clasp to design molecules. Here are some of the things that CANDO can do. - Automatic atom type assignment and partial charge estimation. - Force field energy calculations and fast energy minimization is built in (steepest descent, conjugate-gradients and truncated Newton-Raphson; the minimizers automatically switch from one approach to the other as you get closer to the energy minimum). - The energy function has a chiral restraint, and several other restraint functions built in. You can also add new energy terms and analytical first and second derivatives will be automatically generated and lowered to efficient code for energy minimizations. - It builds three-dimensional models of molecules using geometric construction (is that a term?) from a library of fragments (like rotamers). - Expose and drive OpenMM or Amber or any other molecular dynamics package written in C++, C or Fortran DIRECTLY from CANDO. - It has a built in compiled scripting language (Common Lisp) that generates LLVM-IR and native code that interoperates with C++. This is the big deal, it’s not just a scripting language. It will be fast enough that you can write ANYTHING that the chemistry problem needs in Common Lisp or in C++/C/Fortran and hook it in. - Builtin Message Passing Interface (MPI) library for running on hundreds of thousands of CPUs. - A built in serialization facility to save and load any type of object built within CANDO. Molecules, force fields, parameter files etc. Everything, including code, can be written to files, loaded or sent between processors via MPI. - Built in SMARTS for doing chem-informatics and pattern recognition on molecules. - It reads Chemdraw files, so you can sketch molecules and it will build 3D models from them. If you are doing computational drug screening, then you can do everything in CANDO. This is what I designed CANDO for: Molecular Lego represent an infinite universe of highly pre-organized molecules with programmable shapes and functional group display that are all synthetically accessible. CANDO is the engine that will rapidly build starting molecules, assign atom types and charges and then do conformational searching, docking, scoring and analysis to identify functional molecules. By tightly coupling all of these capabilities as part of a compiled language it will enable molecular design like it has never been done before. CANDO is general, it can work with any kind of molecule.

Why it's here

2 people recommend this

What people say. Recommended as an impressive demonstration of using Common Lisp and LLVM for cutting-edge scientific molecular design.

nabla9on Hacker News • Recommends

On “The Lisp Curse (2011)”

Lisp is programmable programming language, especially Common Lisp. It works as programmer amplifier. Better you are, more you benefit from it. I challenge anyone to watch this lecture from Christian Schafmeister and say they are not impressed: link and link to this video

reitzensteinmon Hacker News • Recommends

On “Energy Efficiency across Programming Languages [pdf]”

Your Google talk was one of my top 10 ever, it blew me away. It's not uncommon in the tech industry to build some mad scientist solution - pardon the expression - because we're trying to do something pedestrian but have painted ourselves in to a corner, eg HipHop VM. Doing it to help with cutting edge science is genuinely exciting. link to this video

TeMPOraLon Hacker News • Mentions

On “"I know how to program, but I don't know what to program"”

…ut them first. Programming is great as a support speciality, if you have another one to support it. Right now the only thing I'm specialized in is making better tools for developers. Which we're in need of, true, but even more so are other domains. 0 - Yesterday's talk should be up soon; in the meantime, here's his talk from last year at Google: link to this video .…

pjmlpon Hacker News • Mentions

On “How Lisp Became God's Own Programming Language”

"How the strengths of Lisp-family languages facilitate building complex and flexible bioinformatics applications." link -- US National Library of Medicine National Institutes of Health "Clasp: Common Lisp using LLVM and C++ for Designing Molecules" link to this video -- GoogleTechTalks

jakeoghon Hacker News • Mentions

On “SICL: A New Common Lisp Implementation”

Ah, related to #clasp: link Clasp: Common Lisp using LLVM and C++ for Molecular Metaprogramming link 2018 LLVM Developers Meeting: C. Schafmeister lessons Learned Implementing Common Lisp with LLVM link to this video Clasp: Common Lisp using LLVM and C++ for Designing Molecules link Modular Polymer Catalysts - Chris Schafmeister link 10S6P4 Christian Schafmeister 2010 UNTT 3rd Annual Conference Session 6 Presentation 4

jakeoghon Hacker News • Mentions

On “Christian Schafmeister – Atomically Precise Catalysts”

More presentations! I think two are almost the same presentation: link (July 2010) 10S6P4 Christian Schafmeister 2010 UNTT 3rd Annual Conference Session 6 Presentation 4 link (July 2015) Clasp: Common Lisp using LLVM and C++ for Molecular Metaprogramming link to this video (Aug 2015) Clasp: Common Lisp using LLVM and C++ for Designing Molecules link (Oct 2018) Modular Polymer Catalysts - Chris Schafmeister link (Nov 2018) LLVM Developers Meeting: C. Schafmeister lessons Learned Implementing Common Lisp with LLVM