Aligning Images


I recently wrote a program to align images using OpenCV in Python. I drew a rectangle with ten dots on it and took pictures of it at different angles. I used the locations where each of the corresponding dots moved to find a homography between the straight picture and each angled picture. I then warped the angled pictures using this homography to align them.

Here is a link to download the folder with the images and Python code in it as well as an image of the output. Make sure to download the whole folder and run the python code from within that folder.







Habitable Exoplanets


I developed a machine learning Python program that uses a Support Vector Machine classifier from the sklearn module to predict if an exoplanet is in the habitable zone of its star system (the zone where liquid water can exist). The features of the planet required by the classifier to make the prediction are the orbital period of planet in days, number of planets in the system, and number of stars in the system.

I used the astroquery module to obtain the data from the Open Exoplanet Catalog

Link to download Python code

Here are some pictures of the program:

Screen Shot 2017-06-09 at 1.38.30 PM.png

Predicting Intel Revenue


I wrote a machine learning Python program using the sklearn module that predicts the revenue for Intel Corporation. I got the data for the training set from a website called Quandl that has a wide variety of financial data. I used Ridge regression with a 3rd degree polynomial for my machine learning algorithm.

Link to download Python code

Here is a picture of the output of my program:

Screen Shot 2017-06-06 at 3.58.49 PM.png

Classifying Hydrocarbons


I developed a machine learning Python program using the sklearn module that classifies a simple single-chain hydrocarbon  into categories based on the type of bonds it has given the number of carbons and hydrogens (alkanes have single bonds, alkenes have double bonds and alkynes have triple bonds).

Although there are easy ways to tell what type of bonds a simple single-chain hydrocarbon has given the number of carbons and hydrogens, I wanted to use a training set and a Linear SVM(Linear Support Vector Machine) to classify them in order to introduce myself to machine learning.

Link to download Python code

Here is a picture of the output of my program:
Screen Shot 2017-06-04 at 4.18.25 PM.png



I just finished creating a two player Chess game using Processing and Java where human players take turns at the computer.

To play Chess download the Chess folder from this link

Then download Processing for your operating system from this link

Open the Chess.pde file in the Chess folder you downloaded with Processing

2048 Game


I recently created a version of the popular online game 2048 using Processing and Java. The objective of the game is to combine two tiles with the same number until you get to the 2048 tile. When two tiles of the same number combine into one tile, the new tile’s number is the sum of both the original tile’s numbers. Pressing the arrow keys on your keyboard combines all the tiles in that direction. Every time an arrow key is pressed a new tile randomly spawns somewhere on the grid. The game ends when there are no tiles that can be combined and the board is full.

Here is a link to download Mac OSX and Windows versions of the game

Route Finder App Part 2


I finished my Route Finder Android app. It now finds the best driving route through a set of cities using Google Directions API data (I used this instead of the Google Distance Matrix API because it was easier to work with) and Google Maps API as well as an algorithm I wrote. The first city that is entered when the app starts is the city that the route starts and ends at. When a city is entered a marker is added to the map and the optimal route is recalculated to include that city.

The app still lags at times (the button sometimes has to be pressed multiple times to add a city to the map and find the optimal route). So there is still room for improvement, but at least it is in somewhat usable shape.

Here is a video demonstrating the app:

To run the app make sure you have an android device, go to the following link on the device and download the APK file. You will be prompted to install it.

Link to APK file