1.0 Introduction

1.1 Purpose

The purpose of this project is to use a computer program to help model the possibility of identical humans being born at separate births. This project was selected on the basis of curiosity. Biology has always been an area of science that has been an interest to this team. Both members of this team are presently students in Advanced Biology II. The project became of interest while discussing what would make a good Supercomputing project with Professor Miller at Western New Mexico University. Knowing that cloning is a "hot" topic in the world today, Professor Miller suggested the idea of trying to model identical humans at separate births. The chance of two identical offspring being produced at separate births is a commonly asked question. To find the solution of this problem, the team first had to understand genetics and meiosis. After gathering the needed knowledge, the team wrote up two computer programs. The first program models meiosis (See Appendix 1), while the second deals with the relation of pairing chromosomes.

1.2 Computer Program

The two programs were written using C++. The C++ language made it possible to successfully write the programs. Mathematically, the chance of two identical offspring being produced at separate births is a number that reaches the trillions. By using long integers, it allows the computer (if needed) to reach those high probabilities.

 

2.0 Problem Statement

2.1 Problem Definition

"Are You One of a Kind?" is a project based on genetics and evolution. This project models the chromosomes in different organisms, and the probability of producing identical offspring at two separate births.

The computer models were written very simply, yet requires the use of a Supercomputer. The first program models meiosis and the division of the sex cells and their chromosomes. This is to better understand and apply the process of meiosis to the second program. The second program was written using the result of meiosis, which is the division of cells and their chromosomes.

 

 

 

 

 

 

 

 

 

 

 

3.0 Method of Solution

3.1 Mathematical Model

Before writing a computer program, it was required to understand mathematically, the chances of identical offspring being produced at separate births. After meeting with Dr. Thomas Gruszka, a math professor at Western New Mexico University, the team gained the knowledge of the possibility mathematically. A fruit fly carries four chromosome pairs in each of its cells. After meiosis, its sex cells only carry four chromosomes (one member of each pair). Therefore, when a male sex cell and a female sex cell join, there is a possibility of four different combinations. With this information, one can figure that the chances of the same chromosomes being picked twice would be (2^2) (2^2) = 2^4 = 16. The same applies to humans, as it would be (2^23) (2^23) = 2^46 = 70,368,744,177,700. This math concept was then applied to the computer program.

3.2 Computational Methods

As mentioned before, the team wrote out two programs. In the first program, while modeling meiosis, it was decided to write the program based on fruit flies. The reason for using fruit flies was because they consist of only four chromosomes. A two dimensional array was used to represent the egg and sperm cells. Before the process of meiosis, a fruit fly’s egg or sperm cells consist of two homologous pairs. After meiosis, four new cells are formed, which are called gametes. Each gamete consists of two chromosomes, one coming from each parent. This pairing of chromosomes is random, and when sperm and egg cells meet, a new human’s genetic make-up is formed. Taking into account the knowledge of the result of meiosis aided in writing the second program. Since it is known that after meiosis, the resulted egg and sperm cells randomly collect from their original forty-six chromosomes, one member of each homologous pair, it was understood how to create sex cells.

At first, writing the second program, an array was used to randomly match up the chromosomes, making gametes. However, this idea failed. The array could not be set big enough to hold and check all the twenty-three chromosomes in each new cell. This program was run on three servers: equus (Silver High server), mode lanl (Supercomputer Challenge server), and tesuque (Adventures in Supercomputing server). There was no way it was going to work. The program was re-written using a one-dimensional array. This way, an original human is already produced, and the program simply tries to duplicate that specific human.

The new version of the program was also run on equus, mode lanl, and tesuque. Equus had a limit of run time, and shut off before a matching pair of egg and sperm cells could be found. Tesuque sever was in the process of being moved when needed to run the program. The program was then run on mode lanl. After running for seven days straight, and reaching a number of 21,661,675,761, it was decided to stop the program. After talking to a science teacher, it was discovered that once the count gets so large, the probability is considered impossible.

One last change was made to the program. It seemed more practical to make it a user-input program. This allows the user to find the result for any organism with any number of chromosomes. Being that with forty-six chromosomes, the program ran for a week, it would be impracticable to pick organisms with large number of chromosomes.

 

4.0 Results

4.1 Calculations

The team ran the program using chromosomes numbering from 2 – 23 (Appendix 5). The program was run on all three servers. This allowed the comparison of results from different computers. It was felt that this would give more accurate results. The program was identical for the equus and the mode lanl servers. An alteration had to be made for the tesuque server. In the function n_rand to generate a random integer, RAND_MAX was not build into the library stdib.h. Using the book C++ for You++, it was discovered that RAND_MAX is approximately 2^15 – 1. Therefore this value was substituted for RAND_MAX.

In the function n_rand, a random integer was found. It would have either the value of one or two. This value was sent back to the main program. If the value was one, the chromosome number would be multiplied by one hundred, simulating the process of being a duplicate member of the homologous pair. If the function n_rand returned a two, the simulation was that the original member of the homologous pair belonged to this chromosome; therefore the chromosome number would be used.

Once all the chromosomes of the original organism were randomly created (amy[] array), the program continued to create randomly new organisms (clone[] array) until an identical match was found to the original organism (amy[]=clone[]). Once found, the program prints out to the screen the number of new organisms that were created, before a match to the original was found.

The program used another function called checker. As named, its purpose was to check to see if a match of the organisms was made. If the match was made, it returned a value of one, which was given to the variable "found."

4.2 Result Table

Some of the results obtained for some organisms are:

Organisms

Equus

Run time

Mode Lanl

Run time

Tesuque

Run time

Fruit Fly

8

194

1 second

194

1 second

182

1 second

Rice

12

4871

1 second

4871

1 second

4298

2 second

Grass

Hopper

14

 

5456

 

1.5 second

 

5456

 

1 second

 

4873

 

2 seconds

For complete table of results see Appendix - 2

 

 

 

 

 

4.3 Comparisons

The use of 3 different servers helped in finding results. It was interesting to note that the time used in running the results also varies from server to server. Using the approximate value of 215 -1 for RAND_MAX seemed to give a smaller value for most of the organisms. (See Appendix - 3 )

 

 

 

 

 

 

 

 

 

 

5.0 Conclusions

    1. Computer Program
    2. To try and make the computer program as efficient and useable as possible, the team took the advice given at the Challenge Regional Evaluation. The user is allowed to enter the number of chromosomes for the organism. The program runs printing to the screen only every 1,000,000th count. The function named "checker" will automatically return a zero once it finds the first chromosome that does not match the original's. ( See Appendix - 4 C++ program) Making these minor changes helped the speed of running the program. Sometimes, less is really more!

      When running the program for humans a major run time problem was discovered. The program could not run on the school's local server due to the fact that idle logins are "Killed" after twelve hours. Thanks to the mode server, which allows access from students who joined the Supercomputer Challenge, the program was allowed to run for seven days. Realizing that the count had already reached over 21 billion, going to the max size of a long integer (2,147,483,647) and returning to zero five times (2,147,483,647 *10) plus (21,374,836,470 +286,840,291 = 21,661,675,761) during the time span of one week. The program was finally discontinued realizing that the expected value could go as high as 70,368,744,177,700.

      "As the number approached infinity, the ability of success will approach zero" as stated by Ms. Taylor, physic teacher at Silver High School. Thus, the conclusion was determined that the possibility of identical humans being born at separate births was assumed impossible.

    3. Data

Examining the data obtained from the three servers and using the mathematical equation presented by Dr. Gruszka, the following conclusions were derived.

The data from equus and mode servers was closer to the expected results derived by using the math formula. ( See Appendix - 5). The values found for duplicating fruit flies, four paired (8) chromosomes, was 194 using the C++ program and expected to be 256. The program, modeling the natural process of identical offspring being produced at separate births, comes close the to the expected; but like nature, it is not exact.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

References

Litvin, Maria and Gary, C++ for You++ an Introduction to Programming, Skylight Publishing, Andover, Massachusetts, 1999, Page 173.