Goals • to have a semester-long programming project that you can work on alittle bit each week.• to develop a simulation of group/pooled testing.[100 points]Requirementsand Notes • Read Alan’s article on our class web site about group/pooled testing.• Program a simulation of the testing protocol described in Alan’s article. Run yoursimulation on population of 1000 people (at Lirst) in groups of 8 assuming a 2%infection rate and 100% accurate tests. Output the results in a manner similar to thoseshown below.Using the protocol described in Alan’s article, there are three possibilities to consider:(1) there are no infected samples(2) there is exactly one infected sample(3) there are two or more infected samplesWe can determine the likelihood of each possibility based on the number of sampleswe pool into each group and the infection rate of the disease. For details of thosepercentages and how and we can derive them, read the article again.Program your simulation to test groups of 8 for a disease with an infection rate of 2% .For 1000 people (where 20 of them (2%) are infected and 980 are infection-free), youwould make 125 groups of 8 samples each and simulate the tests. Based on theexpected values (see the article) we expect the results to be as follows:Case (1): 125 × 0.8500 = 106.25 instances requiring 107 tests (there are no partial tests)Case (2): 125 × 0.1496 = 18.70 instances requiring 131 testsCase (3): 125 × 0.0004 = 0.05 round up to 1 instance requiring 11 tests———————————————————————————————————————249 tests to screen a population of 1000 people for a disease with 2% infection rate.The output of your simulation should match or be very close to those values. Once youhave that working, try it with 10,000 and 100,000 and 1M people, still in groups of 8,still with a 2% infection rate, still with 100% accurate tests. The larger the populationyou test, the closer you should get to the statistically expected values.Document the results of your simulation for the various population sizes with LaTeXand commit that to your GitHub repository along with your code.Resources • Everything we’re doing this semester is likely to be of use for you in this project.Hints Start early. Do a little bit every day.Submi6ngYour Work Commit your Linal work in your private GitHub repository on or before the due date (seeour syllabus).
Questions, Answers, and CommentsQ: What data structure should I use to store each group of 8?A: An array or a list of some sort would be good. Actually, you could hold the entire population to be testedin an array or a list.Q: Does our program have to come up with the likelihood of each case occurring (0.85 0.1496 0.0004) orcan we set them as constants?A: Your program/simulation should produce those numbers as output by counting the number ofoccurrences of each case. You’ll know you’ve got it right when your output matches the statisticallyexpected values.Q: Should the total number of people being tested get input by the user, or set in the code?A: To avoid complicating things with I/O, take a command-line parameter for the population size. If theprogram is called “sim” . . .> sim 1000. . . would run the simulation on 1000 people, while . . .> sim 1000000. . . would run the simulation on 1 million people.Q: Will randomness be apart of our program?A: Yes. You need to use a random() function. There is probably one built in to your programming language.Q: How will individual positive or negative people be represented? (ex. 1’s and 0’s ?)A: It’s up to you, but I like 1s and 0s.Q: What’s the best way for those 1000 people to be broken up into groups of 8 and then inserted into a datastructure?A: Randomly. Kinda. It’s actually not all that important. Let’s say you are running the simulation on 1000people, take the Lirst 8 as a group, then the next 8 as a group, and so through the 125th group.Q: If the theoretical approach to the pooled testing is assuming 100% testing accuracy, would the entirenature of the test (being binary) fall apart due to the inaccuracies of actual testing?A: No. But a simulation that accounts for test accuracy would be more accurate than one that assumes100% accuracy. But we’ve got to start somewhere. For now, assume 100% test accuracy. Once you’ve gotthat simulation working, consider taking into account the accuracy of the test as a reLinement later.Q: I looked over the semester project assignment and your article. After reading both a few of times I feel Iam missing something. I was under the impression that we would be using a binary tree to isolate theinfected individuals. I feel like this is also in the “recipe for the test plan” section of the article. However, atcertain points during the reading I got the impression that we should split the initial population into 125groupings of 8. Which is it?A: It’s a subtle point that I did not make very well. We could build a binary tree and use its nodes ascontainers for the tests, as seen in the Ligure below. But we don’t need to. I’m using a binary tree as aconceptual representation to explain our divide and conquer approach. If we test a group of eight and there’san infection then we’ll test four and four, and when there is one or more infection(s) from those tests (andthere must be) then we’ll do individual tests. The process is conceptually similar a binary tree (at least atlevels 0 and 1 of a binary tree). But as a matter of code, we can test population[0] – population[7] as onetest, and if it’s positive, use population[0] – population[3] and population[4] – population[7] for thenext two tests. This illustration from the article, below, shows that, with the colored rectangles in the circles.Q: Any idea to reduce the amount of testing while getting accurate results can be extremely beneLicial incombatting this crisis. I Lind it interesting that a World War II era technique remains valid today. I have aquestion about the experiment: I understand testing randomly would be the most efLicient way to test alarge group but wouldn’t it be better to test groups of people who live around the same area (i.e., studentsfrom the same resident hall)?A: Excellent insight. That’s exactly what we’re doing at Marist College. We’ve grouped dormitories intoclusters (e.g., Champagnat and Midrise form one cluster, Leo and Sheahan and Marian form another) andare making random selections from within those clusters.
Reviews
There are no reviews yet.