In una recente ricerca intitolata "Characterization of Leptazolines" e pubblicata nella rivista accademica Organic Letters, i ricercatori dell'Università delle Hawaii si sono accorti che gli script Python da loro utilizzati per analizzare il comportamento dei cianobatteri mostravano risultati diversi a secondo del sistema operativo adottato.
Yuheng Luo, un graduate student che lavora presso l'ateneo, è stato uno dei primi ricercatori a rendersi conto del problema. Durante la verifica di un gruppo di esperimenti sui batteri i risultati variavano in base al computer sui cui venivano eseguiti i test.
Nella ricerca è stato usato il set di script Python Willoughby–Hoye, dal nome dei due creatori, che si interfacciano con il molecular modeling environment Maestro, un software per la simulazione delle reazioni chimiche. Tali script sono stati sviluppati per gestire delle operazioni di nuclear magnetic resonance spectroscopy, ovvero dei processi di valutazione del campo magnetico intorno ai nuclei degli atomi.
When Luo ha riscontrato che su macOS Mavericks e Windows 10 i risultati ottenuti dagli script erano di un valore atteso, ovvero 173.2. Mentre su Ubuntu 16 e macOS Mojave i risultati cambiavano in 172.4 e 172.7. Si tratta di pochi decimali ma nel mondo scientifico è molto importante essere precisi e queste differenze contano molto.
Dopo diverse indagini Luo ed i suoi colleghi hanno scoperto il responsabile di questo problema. La ragione di tali differenze non risiede nel codice Python ma in una specifica system call che lascia al sistema operativo la scelta dell'ordine di lettura dei file indicati dall'utente nello script.
Per questo particolare tipo di calcoli l'ordine in cui i file vengono letti e confrontati influisce sui risultati. I ricercatori stimano che i progetti di ricerca afflitti da tale problematica possano essere più di 150.
When Luo ed i suoi colleghi non si sono scoraggiati e sono riusciti a scoprire il modo per bypassare l'ordine di lettura scelto del sistema operativo. Basta infatti utilizzare il modulo glob, una Unix style pathname pattern expansion presente in Python, con cui si può indicare al computer l'ordine esatto con cui leggere i file indicati negli script.
Really great find by Rui and Prof. Williams. When I wrote the scripts 6 years ago, the OS was able to handle the sorting. Rui and Williams added the necessary sort code and added a function to ensure the calcs were properly aligned. Kudos!
— Patrick Willoughby (@pat_willoughby) October 8, 2019
Willoughby ha ringraziato, tramite il suo profilo Twitter, Yuheng Luo ed i suoi colleghi per aver trovato il "fix" per i suoi script. Secondo lo sviluppatore 6 anni fa, quando è stato scritto il codice, i sistemi operativi gestivano l'ordine di lettura in modo preciso e univoco.