Judge Quicksilver This was a very impressive contest entry given a single day in which to complete the required project components and the optional extra components. Given that my commentary/critiscm is based on what I would desire from a perfect entry which is obviously not possible in the time permitted. ============= MAIN PROJECT ============= ---------------------------- SUMMARY REPORT DOCUMENT ---------------------------- This document contained all of the required content EXCEPT for a "Description of the final main code along with a code listing". Completeness and quality of report: The report is somewhat well organized. The problem description reads more as an abstract (Section 1 Malaria) than a full problem description. A full problem description would a list of all equations from the original instructions/description so that subsequent modifications could be compared to these without referencing the original material. This is akin to including the description of the problem in your answer. Ideally, this is a self contained document. There are numerous places where you refer to a figure or equation, but do not reference a figure number or equation number. Also not every figure has a caption. These captions should be descriptive "Simulation of malaria in a population where T_final=200 days, biteRate=X, immunityRate=X, ....". The analysis of the figure/table should be included in the main text not the caption. Description of the main code and code listing: I did not find this. What I would expect is something like the following. malaria_control_start.py This Python module contains the completed base code that simulates malaria in a combined human and mosquito population over a specified time period. Contained within are initial conditions, parameters modeling the birth/death/etc. rates associated with the human and mosquito populations, and functions for updating these populations. This module uses the external Python package matplotlib. malaria_control_start_function.py Description sensitivity.py Description extra_part1.py Description extra_part2.py Description extra_part3.py Description Demonstrated understanding of the system and model: The model in the problem description given by XSEDE had errors such as the equation of HealthyVillagers which should have either been noted as the equation for the change in the number of HealthyVillagers or should have included the current number of HealthyVillagers. You should have noticed this, corrected it, and noted it. Your other comments about how and why you modified the model demonstrated your understanding however you were overly vague in summarizing the model. You could have gone into more depth about possible changes to the model you could make to make it more realistic (ex. People with malaria might have different birth rates. This can be implemented in the current model by setting different death rates for the different populations of villagers). Descriptions of the runs and results: You go straight to the sensitivity study. You should have instead shown Fig 2a and listed the parameters you chose for this particular simulation and given an analysis of this figure. This would provide the reader context for the sensitivity study. Sensitivity runs description: It would have also been helpful if you explained why you chose to analyze the parameters you did. It would have been helpful if you included more time snapshots to show a progression. ”This may be an effect of the underlying model or the assumptions made in the model." <--- This sentence is vague. Immediately, the next question is "What parts and or assumptions of the underlying model explain this?" which you do not answer. Include your speculation about what specific assumptions, modeling choices, and your thoughts of why this may or may not differ from reality. -------------- CODES -------------- You might want to use a tool like autopep8 or pylint to check for formatting errors and missing documentation of your code. You might want to make this a git repository and note that so that judges can see a progression of your work (non-essential). You might consider updating the variable names so that the source code is more readable. At the moment the given XSEDE variable names are terrible which makes the code hard to read. Furthermore, none of the functions you have implemented have docStrings. These are needed to identify what variables are and what they are for. The block comments defining the equations would be an excellent place to start for docstrings. The functions/code as they are now are nearly unreadable because of the uninformative variable names. Part of the problem is the provided XSEDE skeleton code is NOT a good example. Instead of using lists they should have used numpy arrays. Smaller easier to read helper functions should have been employed for values like newlyRecoveredVillagers, newlyImmuneVillages, etc. ex:: def newlyRecoveredVillagers(sickVillagers, recoveryRate=1-midrV): “”” Given the current number of sick villages and the rate at which they become recover calculate the number of newly recovered villagers for a single day. :param float sickVillagers: The current number of sick villagers :param float recoveryRate: The recovery rate (people/day) of sick villagers :rtype: float :returns: The current number of newly recovered villagers “”” return sickVillagers*recoveryRate With functions like this one the coded equations could be updated to read:: def updateSickVillagers(sickVillagers, immuneToday, recoveredToday, deathRate=drV, maralriaInducedDeathRate=midrV): “”” descriptive doc string “”” deaths = (malariaInducedDeathRate + deathRate)*sickVillagers sickVillagers += max(sickVillagers - deaths - recoveredToday - newlyImmuneToday, 0) return sickVillagers This would minimize recalculation of the same number within the for loop import numpy as np sickVillagerArray = np.zeros(num_days+1) for i in xrange(num_days): recoveredToday = newlyRecoveredSickVillagers(sickVillagers[i]) immuneToday = SOMETHING sickVillagers[i+1] = updateSickVillagers(sickVillagers[i], immuneToday, recoveredToday) The more readable code is the easier it is for judges to read and judge for both correctness and innovation. There are many correct ways to solve this problem and the easier it is for a judge to read the easier for them to tell if it is correct or not. -------------- SAGE CODE -------------- It appears that your code is correct. =================== BONUS POINTS =================== -------------- Relapse -------------- Your code looks correct as does your analysis. However, the equations included in your document are incorrect. In figure 2 you show a side by side comparison of the populations. Another option would have been to shown overlays of the different simulations with the original model shown with a solid line and the new model shown with a dotted line. ---------------------------- Seasonal Mosquito population ---------------------------- Your code looks correct as does your analysis. In figure 2 you show a side by side comparison of the populations. Another option would have been to shown overlays of the different simulations with the original model shown with a solid line and the new model shown with a dotted line. ------------------------------ Preventative Net Cost Analysis ------------------------------ Here you need to show plots of the populations as done in the previous sections. You also need to describe how and why you updated the model to account for the different net options. The code needs to be at least documented at the level of the XSEDE code skeleton. As you have not described your model NOR commented the new code it is unclear whether your code or analysis is correct.