← Nieuwste papers
💻 computer science

r2py: AI-Assisted Conversion of R Statistical Packages to Python

Het artikel introduceert r2py, een door mensen gesuperviseerd AI-agent-framework dat een meerfasig vertalings- en rigoureus verificatieproces orkestreert om R statistische pakketten om te zetten naar native Python-bibliotheken, waarbij de gecompileerde code behouden blijft en de numerieke correctheid ten opzichte van de originele implementaties wordt gewaarborgd.

Oorspronkelijke auteurs: Jun Li, Yufei Cai

Gepubliceerd 2026-08-19
📖 7 min leestijd🧠 Diepgaand

Oorspronkelijke auteurs: Jun Li, Yufei Cai

Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer

In de wereld van data-analyse domineren twee verschillende talen al lang het landschap. De ene, genaamd R, is de historische thuisbasis van de statistiek, waar nieuwe wiskundige methoden voor het begrijpen van de wereld vaak als eerste worden geschreven. Het is de referentielibriotheek voor wetenschappers, die duizenden gespecialiseerde instrumenten bevat die decennialang zijn onderzocht en vertrouwd. De andere, Python, is de standaard geworden voor moderne computing, machine learning en het bouwen van software die in de echte wereld draait. Jarenlang hebben deze twee werelden naast elkaar bestaan. Wanneer een onderzoeker in Python een specifieke statistische methode nodig heeft die alleen in R bestaat, staat hij voor een moeilijke keuze. Hij kan proberen beide talen naast elkaar te draaien, wat onhandig is en zware software-installaties vereist, of hij kan proberen de R-code vanaf nul in Python te herschrijven. Dat laatste is een enorme, foutgevoelige onderneming die er vaak niet in slaagt de subtiele gedragingen van het originele instrument te vangen.

Een team van onderzoekers heeft nu een nieuwe manier ontwikkeld om deze kloof te overbruggen, niet door de twee talen te dwingen samen te bestaan, maar door de statistische instrumenten zelf te vertalen naar native Python-code. Ze creëerden een systeem genaamd r2py, dat kunstmatige intelligentie gebruikt om R-pakketten om te zetten in Python-bibliotheken die werken zonder dat de oorspronkelijke R-software geïnstalleerd hoeft te zijn. De onderzoekers testten dit systeem op twee grote, complexe statistische pakketten die breed worden gebruikt in de wetenschap. Het resultaat is een set Python-tools die bijna exact hetzelfde gedragen als hun R-originelen, waardoor wetenschappers decennia aan statistische innovatie kunnen gebruiken binnen de moderne Python-omgeving.

De kernuitdaging in dit werk is dat R en Python niet alleen verschillende dialecten van dezelfde taal zijn; het zijn fundamenteel verschillende systemen met hun eigen regels. In R kan een eenvoudige opdracht om een variantie te berekenen een specifieke correctie toepassen die Python niet standaard gebruikt. In R kan een functie een lijst met resultaten in een specifieke volgorde teruggeven, terwijl Python een andere structuur verwacht. Als een mens deze instrumenten met de hand probeert te vertalen, kunnen zij deze subtiele verschillen missen, wat leidt tot code die er correct uitziet maar net iets verkeerde getallen produceert. In de wetenschap, waar een minuscule numerieke fout een conclusie kan veranderen, is dit onacceptabel. Bovendien vertrouwen veel R-pakketten op oudere, gecompileerde code geschreven in talen zoals C of Fortran om zware berekeningen uit te voeren. Het simpelweg vertalen van de hoogwaardige instructies is niet genoeg; het systeem moet ook uitzoeken hoe het de nieuwe Python-code kan verbinden met deze oude, snelle rekenmotoren.

Om dit op te lossen, bouwden de onderzoekers een framework dat het vertaalproces opdeelt in zeven afzonderlijke stappen, geleid door menselijke experts maar uitgevoerd door kunstmatige intelligentie-agenten. In plaats van een computer te vragen om in één keer een heel boek aan code te vertalen, brengt het systeem eerst de structuur van het pakket in kaart, waarbij het begrijpt welke functies van welke andere functies afhankelijk zijn. Vervolgens maakt het een gedetailleerde handleiding voor elk type opdracht dat in de R-code wordt gevonden, waarbij precies wordt besloten hoe elke opdracht in Python moet worden weergegeven voordat de eigenlijke vertaling begint. Dit zorgt ervoor dat dezelfde R-opdracht altijd op dezelfde manier wordt vertaald, wat de inconsistenties voorkomt die ontstaan wanneer verschillende delen van de code apart worden behandeld.

Zodra het plan klaar is, vertaalt het systeem de code functie voor functie, in de juiste volgorde. Cruciaal is dat het niet probeert de zware wiskundige berekeningen die al in gecompileerde code zijn geschreven, te herschrijven. In plaats daarvan houdt het de originele, snelle code exact zoals die is en bouwt het een nieuwe brug in Python die deze kan aanroepen. Voor een van de pakketten die ze testten, was dit rechttoe waarvan af. Voor het andere, dat een complexere manier gebruikte om met zijn interne code te communiceren, moest het systeem eerst een kleine, zelfstandige versie van de interne taal van het R-systeem reconstrueren, zodat de oude code kon draaien zonder dat de oorspronkelijke R-software aanwezig was. Dit stelde het nieuwe Python-pakket in staat om exact dezelfde rekenmotor te gebruiken als het origineel, wat ervoor zorgde dat eventuele verschillen in de resultaten alleen voortkwamen uit de vertaling, en niet uit een verandering in de wiskunde.

De onderzoekers onderwierpen deze nieuwe pakketten vervolgens aan een reeks strenge tests. Ze controleerden niet alleen of de code draaide; ze vergeleken de getallen die door de nieuwe Python-tools werden geproduceerd met de getallen die door de originele R-tools werden geproduceerd over honderden verschillende scenario's. Ze testten standaardgevallen, moeilijke randgevallen en zelfs de foutmeldingen die de tools produceren. In het ene pakket voerden ze 846 aparte tests uit. In het andere voerden ze er 518 uit. De resultaten toonden aan dat de nieuwe Python-tools de originele R-resultaten met extreem hoge precisie reproduceerden, waarbij de getallen overeenkwamen tot binnen een minuscule marge die acceptabel is voor wetenschappelijk werk.

De procedure onthulde echter ook dat de vertaling niet in elk detail perfect is. In een paar specifieke gevallen produceerden de nieuwe tools resultaten die licht verschilden van het origineel, maar alleen op manieren die onmogelijk te herstellen waren zonder de fundamentele aard van het instrument te veranderen. Bijvoorbeeld: de originele R-tool toont de opdracht exact zoals de gebruiker deze heeft getypt, een functie die rust op het geheugen van het R-systeem voor de invoer van de gebruiker. De nieuwe Python-tool, die alleen de uiteindelijke berekende waarden ziet, kan die exacte tekstweergave niet recreëren. De onderzoekers identificeerden deze verschillen en documenteerden ze duidelijk, in plaats van te proberen ze te verbergen. Ze ontdekten ook een werkelijke fout in de originele R-code die een kleine fout veroorzaakte in specifieke situaties; omdat hun doel was om een getrouwe kopie te maken, reproduceerden ze deze fout exact in de nieuwe Python-versie, om ervoor te zorgen dat wetenschappers die de nieuwe tool gebruiken, dezelfde resultaten krijgen als degenen die de oude gebruiken.

De meest verrassende ontdekking kwam uit het testproces zelf. De onderzoekers ontdekten dat de beste manier om verborgen fouten te vangen niet het schrijven van nieuwe tests was, maar het vertalen van de originele tests die bij de R-pakketten hoorden. Deze oude tests waren geschreven door de oorspronkelijke auteurs om te controleren op zeer specifieke, ongebruikelijke omstandigheden die een nieuwe vertaler misschien nooit zou bedenken om te testen. Door deze vertaalde tests uit te voeren, vond het systeem subtiele bugs die alle andere controles hadden overleefd, inclusief een verborgen fout in de berekening van een controleparameter die alleen optrad bij zeer diepe, complexe berekeningen. Dit bevestigde dat de originele testsuites een essentieel onderdeel zijn van het vertaalproces, en fungeren als een vangnet dat problemen opvangt die geen enkele menselijke inspectie zou kunnen vinden.

Het werk laat zien dat het converteren van complexe statistische software van de ene taal naar de andere mogelijk is, maar dat dit een gedisciplineerde, stapsgewijze aanpak vereist in plaats van een eenvoudige automatische vertaling. De onderzoekers hebben niet alleen twee pakketten geconverteerd; ze hebben een methode gebouwd die op anderen kan worden toegepast. Ze hebben aangetoond dat door het scheiden van de planning, de vertaling van regels en de verificatie van resultaten, en door de zware rekenmotoren ongemoeid te laten, het mogelijk is om native Python-tools te creëren die getrouw zijn aan hun R-oorsprong. De geconverteerde pakketten zijn nu beschikbaar voor iedereen om te gebruiken, geïnstalleerd als elke andere Python-software, waardoor decennia aan statistische innovatie in de moderne computingomgeving worden gebracht zonder dat de oorspronkelijke, zware software geïnstalleerd hoeft te zijn. Het succes van dit project suggereert dat de barrière tussen de statistische methoden van het verleden en de computingtools van de toekomst minder onoverkomelijk is dan voorheen gedacht, mits de vertaling gebeurt met zorg, structuur en een toewijding aan numerieke nauwkeurigheid.

Verdrinkt u in papers in uw vakgebied?

Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.

Probeer Digest →