Hello everyone! Just a quick introduction about myself before I jump into the current prospects of the programming side to this project. My name is Sorabh Gupta and I am a student at the Georgia Institute of Technology. I came across this project when I met Mayank Tahilramani at a family friend’s wedding where he described it to me. And although I do not know much (if anything) about the biological aspects regarding this project, I have had experience in programming using MATLAB.
With that said, it’s time to let you know what I’m currently doing in terms of programming in MATLAB. To date, I’ve been on the project for about 4 days so I have not done a significant amount of coding. However, I have spent the last few days planning and structuring the way I’d like to code the matrix manipulations. Here’s what I’m thinking in terms of structuring the code:
(1) Right now, we’re creating the matrices from the image files and storing them into text files to be read into MATLAB which is a good starting point. In order for MATLAB to interpret data from a text file, functions that MATLAB relies on for file I/O will need to be utilized.
(2) After getting that to work, the next step would be to begin manipulating the matrix. In order to account for different levels of magnification, there will need to be code that iterates through the matrix to remove rows and columns (preferrably every other row and column for consistency). As the matrix gets resized into a smaller matrix, it’ll represent lower levels of magnification.
(3) There also needs to be a count variable that keeps track of the number of 1’s (the “white” in the grayscale representation) for the original matrix as well as the resized matrices. Note: the count needs to be able to differentiate between various levels of the matrix depending on how far along the Z-axis we are. Since we’re working on a 3 dimensional scale, this minor detail will be very important.
(4) Another task is to keep track of X, Y, and Z values which are represented by the index at which a 1 occurs within the matrix. I’m thinking the best way is to build another matrix that keeps track of this information where the row number will represent the point along the X-axis and the index from the imported matrix and stored in the, let’s call it “coordinate matrix,” will represent the Y-axis. I’ll also append another column at the end of the matrix so that the final value will represent the Z-axis, but only after the coordinate matrix is already filled. One issue that came about was that there could be a mismatch of dimensions because the number of 1’s may not necessarily be the same in each row. In order to get around that, I’m proposing to create a matrix of zeros that is the same size as the imported matrix from (1) and fill it in. This way, any leftover zeros will just end up becoming a point along the X-axis and not interfere with the data we want.
(5) The final thing is to export all the new matrices created into a text file with a consistent nomenclature. For this step, it’s just more File I/O.
To accomplish all these tasks, I’m thinking of using many for loops, and more likely nested for loops. There will definitely be if statements to account for some special cases, such as the count. Hopefully, all goes well but for now everything is in the testing phase.
-Sorabh G.