Il Mini Tavolo LED: Illumina l’Universo dei Dettagli Nascosti!

Quante volte ti sei trovato a guardare le tue decorazioni per i dolci, chiedendoti quante perle rimangono nella scatola? Hai mai provato a contare quante piante di senape, basilico o pepe puoi coltivare con i semi che hai in magazzino? E cosa dire dell’urgenza di conoscere il numero esatto delle sfere in acciaio inossidabile da un millimetro che hai recentemente acquistato nel tuo negozio di fai-da-te preferito?
Per questo scopo, un po’ di cartone di recupero, una striscia di LED e un Raspberry Pi Zero con la sua piccola camera potrebbero aiutare a soddisfare il tuo desiderio matematico di enumerare questi oggetti minuscoli.
In un recente articolo su Instructables, abbiamo descritto l’ illuminante esperienza con tutti i dettagli costruttivi di un mini tavolo LED (MTL) compatto, alimentato a batteria, facile da usare e conveniente. Oltre all’hardware viene fortito anche un software opensource basato su OpenCv per l’acquisizione e la semplice elaborazione delle immagini degli oggetti sul MTL per possibili applicazioni.

Caratteristiche principali del progetto:

  • Un tavolo a LED compatto, portatile ed economico realizzato con un foglio di cartone di imballaggio e una striscia di LED bianchi.
  • Può essere alimentato alimentato da una batteria elettrica e ha un dimmer per regolare l’intensità della luce.
  • È dotato di una camera Raspberry Pi per acquisire le immagini (con la distanza focale modificata per mettere a fuoco oggetti vicini).
  • Il software in Python fornito come OpenSource consente di controllare la camera e di elaborare le immagini per contare gli oggetti sul tavolo.

L’articolo originale (in inglese) del MTL si trova sul mio sito Instructables.

L’articolo contiene le istruzioni dettagliate e i file STL per la stampa 3D dei componenti necessari. Il progetto è stato realizzato in collaborazione con i miei due cari collaboratori, in particolare Leonardo. È un progetto semplice e accessibile che può essere utilizzato anche a scopo educativo per imparare concetti di costruzione, elettronica, ottica e programmazione.

Introduzione alla programmazione in Python (III)

Puntate precedenti:

  1. Introduzione alla programmazione in Python (I)
  2. Introduzione alla programmazione in Python (II)

Siamo giunti alla terza parte di questa serie dove vedremo come usare le istruzion condizionali per il controllo del flusso del programma.

DIAGRAMMI DI FLUSSO

Per una descrizione più semplice e intuitiva dei commandi per il controllo del programma, verranno utilizzati diagrammi di flusso. Un diagramma di flusso è un tipo di diagramma (grafico o simbolico) che rappresenta un algoritmo o un processo. Ogni passo nel processo è rappresentato da un simbolo diverso e contiene una breve descrizione del passo del processo. I simboli del diagramma di flusso sono collegati tra loro con frecce che mostrano la direzione del flusso del processo. Un diagramma di flusso mostra tipicamente il flusso dei dati in un processo, dettagliando le operazioni/passi in un formato pittorico che è più facile da capire rispetto alla lettura di un formato testuale.

Continue reading

Retro programming Nostalgia IV: Acid/Base Equilibrium and Titration (Part I)

The motivation for this article stems from my interest in retro-computing connected, on the one hand, to the re-evaluation of my youthful explorations of scientific computing in the BASIC language and, on the other, to the popularity they are having in the amateur sector in recent years and of teaching, single-board microcomputers (single-board computers, such as, for example, the Raspberry Pi). These small computers have considerably more power at a much lower cost than the microcomputers of the 80s. This made it possible to emulate the operating systems of the legendary Commodore home computer models and the MSX extension on these computers.

Therefore, a renewed interest in the BASIC programming language is also occurring. This interest in retro-computing reflects the nostalgia for the great emotions that the development of consumer information technology brought to my generation in the 1970s and 1980s. I remember being so struck by the creativity in using and programming these microcomputers that it redirected my scientific interests and academic career. I have written in other articles about my first programming adventures with Commodore home computers and MSX systems in the late 80s and early 90s and my rediscoveries in computer archaeology. Among the exhibits, I found a small program I used to study acid/base titrations developed in MSX BASIC. Therefore, I took the opportunity to write notes on acid-base balance and titration and thus provide a restored and improved version of my program to students passionate about programming and grappling with this important concept of analytical chemistry.

Continue reading

Easter 2023: Superquadric and Squared-Eggs

First there was the Great Cosmic Egg.

Huai-nan Tzu, China 100 BCE 

Another Easter is arriving, and here I am for a new article on old friends: the Eggs. In my blog for Easter 2021, I mentioned squared eggs paraphrasing a sentence attributed to the extraordinary jeweler Peter Carl Fabergé:” This year, your Highness, we will be featuring square eggs.” A hen is unlikely to make a cubic-shaped egg, but we can still transform a cooked egg to get the cuboid shape. If you look for squared eggs on the internet, you will find a tool called the egg cuber that does the magic. Unfortunately, I could not yet try one, but it seems to be doing an excellent job from the reviews. The shape of the egg is not a perfect cube but a cuboid, namely a cube with rounded corners. In my previous article, I anticipated that this shape could be obtained using the superquadric function. Curiouser and curiouser! In this article, I will give a bit of mathematical background and even a source code to play with such a function as my Easter Bunny gift.

Continue reading

FORTRAN Programming (PART III): NUMERICAL DIFFERENTIATION

In the fall of 1972 President Nixon announced that the rate of increase of inflation was decreasing. This was the first time a sitting president used the third derivative to advance his case for reelection.

Hugo Rossi. Mathematics Is an Edifice, Not a Toolbox, Notices of the AMS, v. 43, no. 10, October 1996.

Welcome to the third part is the third part of the essential introduction to the FORTRAN programming series. In this part, we will introduce the use of functions and subroutines to structure the programs. Then we use them to make a program to calculate numerical derivatives of mathematical functions.

Continue reading

Study of the Absorption of Covid19 Spike RBD on Silica Nanosurface

Silica is an essential component of many everyday materials. We use silica in containers, appliances, and electronic devices such as smartphones, computers, and tablet screens. These surfaces come into frequent contact with our skin, providing ample opportunities for pathogens, viruses, and microbes to accumulate. Therefore, it is crucial to study the adsorption mechanisms of these microorganisms on silica surfaces.

In collaboration with experimental groups at the University of Lincoln, the University of Greenwich, and Diamond Light Source, we investigate the adsorption mechanisms of isolated RBD regions of the COVID-19 spikes on silica nanoparticles. Our study proposes a simple geometrical model for packing protein particles on spherical silica nanoparticles, which aligns well with the available experimental data. This model revealed a surface occupancy of 32% relative to the maximum theoretical RBD packing, indicating significant adsorption.

My computational contribution to this study involved using molecular dynamics (MD) simulations to explore the binding modes and orientations of the protein adsorbed on a model silica surface. The model consisted of a flat patch of silica surface, which serves as a good approximation of the nanoparticle surface used in the experimental part of this study, given their size. Our findings showed that up to 25% of the RBD’s secondary structures underwent conformational changes as a result of adsorption onto silica nanoparticles.

These insights enhance our understanding of the principles governing protein-surface interactions and can contribute to strategies for controlling the spread of SARS-CoV-2 through contaminated objects.


MD simulations of RBD-silica interaction. (A) Representation of the RBD adsorbed on silica in a representative configuration at the end point of simulation 1. The rectangle highlights the area of contact detailed in panel B. (B) Detailed representation of three residues in close contact with silica: arginine 346 (R346), lysine 356 (K356) and glutamic acid 340 (E340) from left to right. The distances
between hydrogen and oxygen atoms at the interface are indicated and are compatible with the hydrogen bonds length.

REFERENCE

Soloviev, M., Siligardi, G., Roccatano, D. and Ferrari, E., 2022. Modelling the adsorption of proteins to nanoparticles at the solid-liquid interface. Journal of Colloid and Interface Science, 605, pp.286-295.

Numeric Solutions of the Schrödinger equation

For Schrödinger, the atom was an oscillating system — like the string of a musical instrument — for which there exist a number of modes of oscillation (fundamentals and overtones) which are interpreted as the atom’s energy states.

Armin Hermann. Werner Heisenberg 1901-1976.

This set of slides is from one of my courses in Computational Chemistry. It covers the one-dimensional solution of the Schrödinger equation using Numerov’s method. The material for this article was mainly taken from the excellent Levin textbook in the reference.
If you are interested in more details, please like it and subscribe to my website. This way, I will be motivated to add more of these contents.

Continue reading

FORTRAN Programming: A Basic Introduction (PART II)

In college, before video games, we would amuse our- selves by posing programming exercises. One of the favorites was to write the shortest self-reproducing program. Since this is an exercise divorced from reality, the usual vehicle was FORTRAN. Actually, FORTRAN was the language of choice for the same reason that three-legged races are popular.

Ken Thompson, Communications of the ACM. 27 (8), 761–763, 1984.

This is the second part of the basic introductin to FORTRAN programming series.

Control Statements 

Relational operators

Relational operators are used for comparison between variables

< or .lt. : less than 

<= or .le. : less than or equal to 

> or .gt. : greater than 

>= or .ge. :greater than or equal to

== or .eq. : equal to  

/= or .ne. : not equal to

Logical operators

Logical operator are used to perfrom

.and. : Logical multiplication ( and) 

.or. : Logical addition (or) 

.not. : Logical negation (not)

Continue reading

FORTRAN Programming: A Basic Introduction (PART I)

In college, before video games, we would amuse our- selves by posing programming exercises. One of the favorites was to write the shortest self-reproducing pro- gram. Since this is an exercise divorced from reality, the usual vehicle was FORTRAN. Actually, FORTRAN was the language of choice for the same reason that three-legged races are popular.

Ken Thompson, Communications of the ACM. 27 (8), 761–763, 1984.

In December of last year, I celebrated the 30th anniversary of my Laurea in Chemistry dissertation. The starting of my thesis dissertation also signed my acquaintance to one of the grannies of the scientific programming languages, FORTRAN. Since then, I have used and (continue to) this language for my research activity by writing several thousands of lines of code. Therefore, I want to share some of my modest programming achievements using this language.

I will concisely introduce this captivating programming language in a series of articles. This is a primer on a programming language with much more to offer, especially in the new versions starting from the FORTRAN 90. Readers interested in deepening their knowledge in FORTRAN can find online many excellent tutorials and discussion groups, as well as plenty of excellent textbooks that have been written.

The FORTRAN language 

Fortran (FORmula TRANslation) language was introduced in 1957 and remains the language of choice for most scientific programming. The language was constantly restyled and updated (e.g. Fortran IV, Fortran 77). Recent improvements, recently introduced with the Fortran 90 and 95/2003, include several extensions in more modern languages (e.g. in the C language). Some of the most important features of Fortran 90/95 include recursive subroutines, dynamic storage allocation and pointers, user-defined data structures, modules, and the ability to manipulate entire arrays. Fortran 90 is compatible with Fortran 77 but not the other way around. However, the new Fortran language has evolved in a modern computer language by incorporating constructs from other languages.  

Continue reading

A Practical Introduction to the C Language for Computational Chemistry. Part 4

Controlling complexity is the essence of computer programming.

Brian W. Kernighan. in Software Tools (with PJ Plauger), 1976.

THE FUNCTIONS

A C program is a collection of functions. A C function is equivalent to the subroutine in FORTRAN or BASIC and procedures in PASCAL, PERL, or PYTHON programming languages. A portion of the program cannot be executed independently but only as part of another program. The function contains a specific algorithm or a stand-alone procedure. You have already used several library functions in your previous programs. Output commands for printing or reading files (such as printf(), openf()), mathematical functions (sqrt(), cos() are a library or intrinsic functions as well. Other library functions, we can classify as follows

  • Input/output functions. Input/output on the computer devices (e.g. output to the terminal, printer, hard disk, input from keyboard). It is usually used with #include <stdio.h>;
  • String manipulation functions. This library contains common operations on strings (e.g., concatenation, length, search, and extraction of substrings). It is usually used with #include <string.h>;
  • Mathematical functions. Mathematical calculations (e.g. trigonometrics functions, exponentiation, square root extraction). It is usually used with #include <math.h>;
  • Graphical functions. Function for graphics operations (open a graphical window and canvas) and drawing graphical primitives (e.g. points, line, curves).
  • Operative system control functions. Operation requiriing allocation of the computer resources or devices (e.g. date and time, allocation of memory). It is usually used with, for example, #include <time.h>;
  • Data conversion functions. Operation for data conversion (e.g. change characters type, ascii to integer). It is usually used with #include <ctype.h>;

To use these function, you need to use the precompiler instruction #include at the beginning of the program. The compiler use by deafult the standard library #include <stdlib.h>;

You can write your functions, and it is called user-defined functions. The use of function allows the program to structure and makes its organization and reading easier. C language is structured around the use of functions. The main() function is a function that contains calls to other functions, both intrinsic and user-defined functions.

Continue reading