projects
2015 - Raytracer
A non-sequential ray-tracing application written in pure C, and taking advantage of the refractive index database, thereby enabling the use of many optical surfaces.
Left: raytracing in a biconvex lens, right: octree data structure for ray-surface intersections.
Source code to be available soon under a non-restrictive licence.
2014 - Pulse propagation in nonlinear fibers
GPU implementation with PyOpenCL / reikna
Python implementation of pulse propagation in non-linear optical fibers with the Split-Step Fourier method, as well as for the Runge-Kutta in the Interaction Picture method. Speedup: 30x (double precision), 178x (single precision), with a GeForce GTX 550Ti
(GPU SP: Single point operations on the GPU. CPU, numexpr: usage of the numexpr expression evalutor)
PyQtGraph user interface
Uses UNIX sockets to fetch results from simulations running on multiple machines.
2014 - Timelapse deflickering / various photo scripts
Scripts written in Python with scikit-image for various operation on timelapse shots.
2013 - Optical Bragg grating fetching from O-Eland
This script allows the user to search for Bragg gratings satisfying a set given condition on the O-Eland website, which contains large HTML pages of wavelength-sorted gratings.
Usage:
python gratings.py
The optional URL is the page address, i.e. http://www.o-eland.com/FBG%20Inventory/FiberGrating_Uniform2000.htm
By default, the list of 1500-1599nm uniform gratings products is selected.
Once the page parsing is finished, the user can find gratings based on 4 conditions: - 'bw' : its 3dB bandwidth - 'wl' : its central wavelength - 'ref': its reflectivity in % - 'l' : its fiber length
Sorting can be achieved by adding a separated '|' sign, followed by the sorting column(s)
Example:
0.1 < bw < 0.15 and wl > 1580 | ref bw
15-021-0-60392 1590.13 46.3 0.14 1.0
15-026-5-5878 1594.206 76.4 0.13 1.5
15-026-5-5877 1594.259 81.3 0.13 1.5
15-034-3-7534 1595.064 88.9 0.134 1.5
15-022-2-8446 1594.985 96.5 0.14 1.5
15-022-2-8449 1595.031 97.9 0.14 1.5
15-052-1-p7834 1588.844 99.3 0.13 1.5
15-065-0-60591 1584.92 99.9 0.11 1.0
2012-06 - Contributions to Poole, website generator
Poole runs this website. An extension was written to support as many languages as desired.
Also, a tiny extension computing the size of files to be downloaded was implemented.
2012-05 - Photomerge
Photomerge is a very small multi-threaded C application which simply aims at merging pictures. It is written for POSIX OSes, and depends on libjpeg. It takes the maximum value of any pixel from the given set of pictures, and outputs the final image to a jpeg file.
Usage:
./photomerge *.JPG results in a file called result.jpg
2012 - Booking tools
During my time at the Photonic System Laboratory, equippement had to be booked to be used. This command line interface allows a registered user to browse existing reservations and add its own.
Also, a daemon mode is provided. In this mode, one or more items can be chosen for a given date. Items available will be booked immediately for the specified dates. Items that are currently busy will be polled for availability, and booked immediately if possible, and and e-mail will be send for confirmation.
usage: ping.py [-h] [--pattern PATTERN [PATTERN ...]] [--date-incr DATE_INCR]
[--daemon] [--dates DATES [DATES ...]]
[--sleep-time SLEEP_TIME] [--auto-book AUTO_BOOK]
optional arguments:
-h, --help show this help message and exit
--pattern PATTERN [PATTERN ...]
Pattern matching a device
--date-incr DATE_INCR
Start date increment in days
--daemon Start as daemon with the specified pattern
--dates DATES [DATES ...]
Start and end date
--sleep-time SLEEP_TIME
Daemon sleep time in seconds
--auto-book AUTO_BOOK
Autobook devices of --pattern when available
2010 - Dijkstra's shortest-path in 3D images
An extension of the previous algorithm when each pixel has 27 neighbours in an image stack. Code written in C, available soon.
2009 - Analysis of retina images, vessel detection
The C implementation also features multi-scale shortest-path search:
2009 - Bachelor thesis, Vascular Morphology Index
2007 - ASAP (Asap is Simply an Avr Project)
Project with Jean G. Conception of plateform composed of an AVR microchip from Atmel (ATMega644) clocked at 20MHz. Extension board for 3D accelerometers as well as for serial (RS232) interface were conceived.
Code written in C to drive servos (PWM), to parse NMEA data from a Garmin GPS, and to fetch values from the accelerometers.