Day 3 – Wednesday, June 21
Beginning of the Developers program
- 10:30 am – 12:30pm: Arrival
- 12:30 pm – 2:00 pm: Lunch
- 2:00 pm – 3:30 pm: Welcome – Introduction and installation of the SAMSON SDK - Show (all) - Hide (all)
We introduce the Developers program of the SAMSON School, and the SAMSON Software Development Kit (SDK) that we will use to develop SAMSON Elements. We set up a programming environment for everyone, and we install the SAMSON SDK. We explore the SAMSON Connect platform from the developer point of view. We explain the structure of the SAMSON SDK. We introduce the libraries composing the SDK, and the main classes used to represent atoms, molecules and data graph nodes in SAMSON. We describe naming conventions, as well as the typical file structure of a SAMSON Element.
- 3:30 pm – 4:00 pm: Coffee break
- 4:00 pm – 5:00 pm: Programming new apps - Show (all) - Hide (all)
We use the SAMSON Element Generator to create the template of a new SAMSON app. We use this template to develop our first app: a tool to perturb atoms positions in the document. We explore the creation of the user interface, the retrieval of atoms in a document or in a user selection, and perturb atom positions using a random number generator. We use SAMSON's holding mechanism to let users undo and redo their actions.
- 5:00 pm – 5:30 pm: Editing and searching SAMSON documents - Show (all) - Hide (all)
We show how to add and remove nodes from SAMSON documents, how to construct molecules using the SDK, and how to manipulate the SAMSON data graph with indexers and predicates, which power SAMSON's Node Specification Language. We explain how to construct and manipulate predicates, and how to use them to search data graph nodes.
- 5:30 pm – 6:00 pm: Programming Graphical User Interfaces with Qt - Show (all) - Hide (all)
We further explore how to create user interfaces for SAMSON Elements using Qt and SAMSON windows. We introduce frequently used widgets, layouts, and explain Qt's signals and slots mechanism used to make interfaces react to user actions in more detail. We implement various interfaces to perform basic actions in SAMSON, and show how to save and load user-defined settings.
- 7:00 pm: Dinner
Day 4 – Thursday, June 22
- 7:30 am – 8:30 am: Breakfast
- 8:30 am – 9:00 am: Handling units and dimensional analysis - Show (all) - Hide (all)
In SAMSON, physical quantities are strongly typed. We show how to define and manipulate physical quantities and their units, in order to help ensure the quality of the calculations. We show how to convert between units, define new units and constants, and program an app that performs energy conversions.
- 9:00 am – 9:30 am: Importing and exporting data - Show (all) - Hide (all)
We describe how to import and export data into SAMSON. We implement an XYZ parser that creates a structural model based on atom coordinates and types, and we export an XYZ file based on the contents of the active document or the user selection.
- 9:30 am – 10:00 am: Creating novel visualizations - Show (all) - Hide (all)
We introduce visual models, and show how they can be used to provide new visual representations to users. We introduce SAMSON's various display functions used to simplify the rendering of spheres, cylinders, surfaces, etc. We program a van der Waals representation of a group of atoms. We show how to make objects selectable by the user.
- 10:00 am – 10:30 am: Coffee break
- 10:30 am – 11:30 am: Developing new editors - Show (all) - Hide (all)
We demonstrate how to develop editors. We show how to react to mouse and keyboard events, and implement an editor that pushes atoms around. We show how to convert back and forth between screen coordinates and world coordinates, as well as pick data graph nodes in the viewport.
- 11:30 am – 12:30 am: Programming new force fields - Show (all) - Hide (all)
We explain how to program new force fields in SAMSON. We introduce dynamical models and interaction models, and show how to create and apply a set of springs to a group of atoms. We show how to compute energies and forces based on the information contained in the dynamical model.
- 12:30 pm – 2:00 pm: Lunch
- 2:00 pm – 2:30 pm: Programming new simulation methods - Show (all) - Hide (all)
We explain how to program new simulation methods in SAMSON. We introduce state updaters, the data graph nodes used to perform interactive simulation, and we implement a Metropolis Monte Carlo sampler. We show how to save the best structures found by the Monte Carlo minimizer in the document.
- 2:30 pm – 3:00 pm: Integrating external programs - Show (all) - Hide (all)
We explain how to develop a SAMSON app that integrates an external executable. In particular, we implement a prototype app that a) creates a configuration file on disk based on the parameters the user has entered in the app GUI, b) launches the external executable and c) retrieves the output of the external executable and imports it into SAMSON.
- 3:00 pm – 3:30 pm: Integrating web services - Show (all) - Hide (all)
We demonstrate how to connect SAMSON to a web service using Qt networking capabilities. In particular, we show how to fetch a protein structure from the protein databank, write a file to the disk, and import the structure into SAMSON.
- 3:30 pm – 4:00 pm: Coffee break
- 4:00 pm – 5:30 pm: Developing adaptive algorithms - Show (all) - Hide (all)
We introduce SAMSON's signals and slots mechanism that can be used to make SAMSON Elements react to events sent by atoms, bonds, models, etc., and develop adaptive algorithms. We develop an app that computes the center of mass of a group of atoms, and incrementally updates the center of mass when an atom moves.
- 5:30 pm – 6:00 pm: Saving and loading custom nodes - Show (all) - Hide (all)
We explain serialization, the mechanism that underlies various processes in SAMSON, used in particular to copy and paste data graph nodes, as well as save and load SAMSON documents. We show how to serialize and unserialize custom data graph nodes (e.g. new visual models that we want to save and share).
- 7:00 pm: Dinner
Day 5 – Friday, June 23
- 7:30 am – 8:30 am: Breakfast
- 8:30 am – 10:00 am: Sharing functionality between SAMSON Elements - Show (all) - Hide (all)
SAMSON's introspection mechanism makes it possible to share functionality between SAMSON Elements without having access to their source code. We explain the introspection mechanism, and we show how to expose, create and share classes between SAMSON Elements.
- 10:30 am – 11:00 am: Coffee break
- 10:30 am – 11:00 am: Distributing new SAMSON Elements on SAMSON Connect - Show (all) - Hide (all)
We explain how to use the SAMSON Element Packager to prepare a SAMSON Element for distribution on SAMSON Connect. We show how to upload screenshots and describe SAMSON Elements, manage collaborators allowed to edit the SAMSON Element, as well as manage versions of SAMSON Elements.
- 11:00 am – 12:30 pm: Brainstorming – The SAMSON SDK roadmap - Show (all) - Hide (all)
We review and conclude the Developers program, and discuss about where the SAMSON SDK should head in upcoming versions. We brainstorm about possible new developer features, and prioritize them.
- 12:30 pm – 2:00 pm: Lunch
- 2:00 pm: departure