I have been doing some more literature review about my subject recently, since I need to learn as much as I can about how different cells, specifically cancer cells, progress through the cell cycle. Many of the articles I read through are very mathematical--many researchers seem to be interested in applying mathematical models to cell proliferation and other aspects in biology (such as the way organisms move in media). These math-heavy articles are not useful for my task now, but I find them very interesting, since they use partial derivatives and a variety of probability distributions to model life. I think probability theory and applied math research are intriguing, although I don't have any research experience in those areas...possible college research topics?
Next week, I will be giving a presentation on what I have learned about other computer simulations of cells that have been done. This is important to know so that we are not reinventing the wheel by doing something that someone else has already done. The most relevant article I have encountered was published in 1990, so the programming language mentioned is outdated (Cellsim). The more recent articles do not explain the programming process as well, and many use very high-level programming languages specific to scientific statistical modeling, which is not helpful since I am working with Java. They also tend to not include examples of their code, so it is difficult for me to figure out how exactly they were able to implement their steps.
As for my program, I am trying to hurdle the obstacle of programming cell proliferation correctly. Currently, my program can only track the mitotic divisions of the original cells, and not the daughter cells. Since the daughter cells have a different start time from the original cells, I would need a separate time counter for each generation of cells, which I haven't figured out how to do yet. When I talked to my mentor, he said that each cell should be an index in an array. Originally, I just had an input and output--no arrays.
UPDATE: I recently met with my mentor, Dr. Shoghi, and he clarified the goal of this computer simulation: to determine the kinetic parameters (such as cycle/phase durations, proportion of cells in each phase initially) under which there is a correlation between number of total cells and number of cells in the Synthesis phase. The S phase is significant because this is when the cell duplicates its DNA to pass on to daughter cells. By decreasing the number of cells in S phase, the growth of cancerous tumors can be slowed, since the genetic material will not be able to be passed on. Another goal of the simulation is to determine when there is a correlation between the total cell number and the number of cells that are not in G0 phase (in other words, are in the growth stages). I will try to do this if I have time; I am currently still working on the first goal. As for the visual representation mentioned in my first post, I won't have the time to accomplish that within the May Project time frame.
Today, I basically scrapped my previous programming and rewrote it. Before, I was assuming that all cells started out in the same condition: in G1 phase. However, after reading more articles, I realized that one of the program inputs should be the number of cells in each phase at the beginning of the simulation. Thus, I had to account for the fact that not all cells will be the same at the start. As of now, my program is not working as it should be, but I'll keep working on it. I probably have something wrong in the many nested loops that I have. (I love bugs!) Once I can get the program to spit out the right numbers, I will graph them using Excel. Hopefully, I can get to that and obtain some findings that I can present.
Another issue that I have come across is the statistical knowledge that comes with programming this. I am not sure how to program certain probability distributions mentioned in various articles, such as the Gaussian distribution, so I am currently just assuming that all cells spend the same amount of time in each phase (which is not accurate, since there is a distribution of times).
At times, it is frustrating trying to program, since I feel that I am not adept enough at programming to accomplish these tasks. Many times, I have to look up methods and classes in Java just to see what I have to work with. I have also been trying to learn algorithms, though learning the relevant ones that I can apply to my work now seems to be impractical. Sometimes, when I don't know what I'm doing, I try to write out each of my steps in my notebook and then resume my attempts at translating them into code.
Working at my desk can be very tedious at times. I share my office space with a very nice man named Tim, who also works with Dr. Shoghi. He is currently working on building a device that can manipulate the growing conditions of a small area (e.g. pH, cell density) that cells can be grown in and studied in their 3D forms under the microscope. (I hope I explained that correctly.)
Also, here is a picture of a piece of Cellsim code from one of the papers I read. I am not sure how the TRAP (trapezoid) function is used for the distribution of the times in each cell cycle phase. Another article I read contains FORTRAN code, which is pretty outdated. But I am using some of their program ideas to help with mine.
Also, here is a picture of the general overview of the simulation. My mentor wrote this. This board is right across from my desk, so whenever I feel confused, I just swivel around and look at it.
Olivia,
ReplyDeleteIt certainly sounds like you've got a big challenge here - If your using Java, I'm assuming you can make a Cell class and have a constructor that takes parameters indicating where in the growth phase the cell is, what type of cell, a specific time it takes to progress, etc. Then, have the program work with an array of these Cells. This is most certainly within your range of ability - so don't give up!! FORTRAN - LOL I learned that in college in 1995!