Projekten

Hier zal ik referenties opnemen naar werk dat ik publiek mag maken.

matlab_mongodb

Op GitHub heb ik een verzameling MATLAB functies neergezet die laten zien hoe men met de MongoDB java driver vanuit de MATLAB omgeving kan werken met MongoDB databases.

De voorbeelden laten zien hoe men een collection (een ruimer begrip dan een tabel in het relationele data model) kan vullen vanuit een Excel sheet en queries en MapReduce operaties doet op zo'n collection.

knitr_matlab_stata

Ook op GitHub heb een uitbreiding op knitr geplaatst. knitr is een R application waarmee R code in b.v. LaTeX kan worden geïntegreerd. Voor sommige andere talen (zoals b.v. Python) bestonden al engines, maar nog niet voor MATLAB en Stata. Deze zijn daarom door mij aangemaakt.

De repository bevat de broncode (in R) van deze engines en geeft een uitgebreid voorbeeld dat laat zien hoe je met knitr kunt werken en natuurlijk in het bijzonder met de twee nieuwe engines. De input file in rnw-formaat en de andere inputs zijn daar ook beschikbaar samen met het resulterende pdf bestand.

matlab_publish_latex

Deze repository bevat een uitbreiding op de MATLAB publish functionaliteit voor LaTeX. De extra functionaliteit biedt de mogelijkheid om via extra parameters

  • aan te geven wat de documentclass en de layout (orientatie en margins) van het document moet worden
  • MATLAB code en listings van m-files te laten zien in een mooie layout (dank zij het package matlab-prettifier van Julien Cretel)
  • de hyperref opties aan te geven die de attributen van de uiteindelijke pdf-file bepalen
  • te bepalen hoe het begin van het document wordt gepresenteerd: moeten titel, auteur, inhoud, lijst met figuren of lijst met listings worden opgenomen?

en via eenvoudige invoegingen in de m-file onderschriften van en referenties naar figuren op te nemen.

Voorbeelden van de aangemaakte tex-bestanden en de daaruit aangemaakte pdf-files zijn opgenomen.

matlab_wordserver

Deze repository bevat een MATLAB class waarmee men een Microsoft Word document kan aanmaken en bewerken. Het is een uitbreiding van wordreport door Laurent Vaylet met de volgende extra functionaliteit:

  • de code is ingepakt in een MATLAB class
  • tabellen en MATLAB figuren kunnen in het document worden opgenomen met onderschriften (captions) en referenties naar deze tabellen of figuren
  • headers en footers kunnen worden opgenomen indien gewenst met pagina nummering
  • de functies (methods) zijn erg flexibel aan te roepen met argumenten als structures, cell arrays of naam-waarde paren
  • alle wd constanten (die worden gebruikt) zijn opgenomen in een functie met vertaal routine zodat de routines snel aan te passen zijn.

Een uitgebreid voorbeeld en het daaruit aangemaakte document zijn ook opgenomen in de repository

rmd_pdf_examples

En deze GitHub repository laat zien hoe je met behulp van RMarkdown pdf-bestanden kunt aanmaken. RMarkdown code maakt gebruikt van knitr om stukken R-code uit te voeren en samen te voegen met een layout. Het specificeren van deze layout gaat veel gemakkelijker met RMarkdown (format rmd) dan met LaTeX (format rnw).

De repository bevat een aantal voorbeelden. In de eenvoudigste wordt géén LaTeX gebruikt en deze kan dan ook behalve naar pdf direct naar html of docx formaat worden omgezet. De andere voorbeelden gebruiken steeds meer toegevoegde LaTeX waardoor de functionaliteit toeneemt: andere pagina indeling, andere kleuren, onderschriften referenties naar figuren en tabellen en een bibliografie toevoegen wordt dan mogelijk.
Een voorbeeld van de output in html formaat kun je vinden op iris_data_set_vm1.html. NB deze pagina is door programmatuur aangemaakt en gebruikt in tegenstelling tot de andere pagina's javascript en is ook niet geïntegreerd in de website.

misc_hoqc

In deze GitHub repository heb ik items opgenomen die voornamelijk te maken hebben met geografische informatie. Verdere experimenten hiermee zal ik opnemen in deze repository (als ze interessant zouden kunnen zijn voor anderen). Voorlopig gaat het om:

  • In postcode.pdf laat ik zien hoe je voor een adres (b.v. een postcode) de coordinaten kunt opvragen met behulp van de Google Maps API.
  • spatial1.pdf laat zien hoe je in R een kaart kunt tonen. Als voorbeeld toon ik hoe mijn woonplaats Amstelveen ligt ten opzichte van de omliggende gemeenten.
  • spatial2.pdf toont hoe je met informatie van het Kadaster over b.v. wegen, gebouwen en water nauwkeurige kaarten kunt maken waarbij je zelf bepaalt wat er op komt en hoe dat er uit ziet. Als voorbeeld nam ik weer Amstelveen en nu ook Schiphol.
  • odata_cbs.pdf en odata_cbs_plot.pdf tonen hoe je informatie van het Centraal Bureau voor de Statistiek (CBS) kunt ophalen met het OData protocol en daarvan plots maken met behulp van de ook beschikbaar gestelde kaart informatie.
  • debug1.pdf werkt een idee van John Mount uit om een functie te debuggen door de argumenten veilig te stellen van het moment waarop de functie fout loopt.
  • tedcsv.pdf laat zien hoe je de csv versie van de TED database (een overzicht van openbare aanbestedingen in Europa) kunt downloaden naar een data.frame of een MongoDB collectie. De zeer grote csv-file is niet helemaal regelmatig: extra scheidingstekens in tekst velden en het soms ontbreken van het laatste veld maakt het direct gebruik van read.csv onmogelijk. Voorbeelden van MongoDB queries zijn bijgevoegd.
  • hoqc_LOG.m is een MATLAB class waarmee messages naar het scherm of een logfile kunnen worden weggeschreven. Ook beschikbaar is een PDF demo file demo_hoqc_LOG.pdf die laat zien hoe de class gebruikt kan worden. De PDF is gemaakt vanuit demo_hoqc_LOG.m met publish_demo_hoqc_LOG.m en matlab_publish_latex en de benodigde bestanden zijn bijgesloten.

R package odataR

In misc_hoqc liet ik zien hoe CBS data kan worden opgehaald met het OData protocol. De hierbij gebruikte R code heb ik in het R package odataR samengevat. Na installatie kun je met één regel code een CBS tabel (indien gewenst met geselecteerde rijen en kolommen) omzetten naar een data.frame. (Dit package werkt op basis van JSON. Een oudere versie op basis van XML kun je vinden in het R package odataR_old ) Ook bijgevoegd is een pdf document dat beschrijft hoe CBS tabellen in de MATLAB omgeving kunnen worden ingelezen.