A computer-implemented method for detecting a likelihood of cancer in an individual based on microsatellite instability, the method comprising: accessing a plurality of test reads and a plurality of control reads associated with a sample; selecting a plurality of markers from the test reads and the control reads, each marker identifying a set of nucleotides from the reads, the markers known to be associated with microsatellite instability in cancer; filtering the plurality of markers such that the specificity of determining an instability score increases; the filtering comprising removing heterozygous reads from sample reads such that determining marker significance and calculating instability scores uses only homozygous reads, for each marker, calculating a marker significance indicating the significance and viability for the marker in detecting MSI, the viability representing a level of similarity between characteristics of test reads and control reads of the marker, and the significance representing the statistical significance of a length variation of a repeated subset of nucleotides in the set of nucleotides in test reads of the marker relative to the length variation for the same repeated subset of nucleotides in the control reads of the marker; wherein calculating the marker significance includes calculating marker scores based on the sample reads, the marker scores including a significance score and a viability score, wherein calculating the significance score comprises quantifying the statistical significance of the variation in the microsatellite length distribution of test reads relative to control reads, wherein calculating the viability score comprises determining a high viability score above a threshold viability score if the number of test reads and control reads is the same, and a low viability score below the threshold viability score for that marker, if there is a difference between the number of test reads and the number of control reads for a marker, determining an instability score for the sample based on the calculated marker significance scores, the instability score being a ratio of significant to insignificant markers representing a likelihood that the sample contains MSI and detecting a likelihood of cancer based on the likelihood that the sample contains a MSI; wherein determining an instability score comprises - when the viability score for the marker is below the threshold viability score, not using the marker to calculate the instability score for the sample and when the viability score for the marker is above the threshold viability score, using the marker to calculate the instability score for the sample and - by comparing the significance score to a significance threshold, determining, for use in the instability score, if the marker is a significant marker or an insignificant marker. accessing a plurality of test reads and a plurality of control reads associated with a sample; selecting a plurality of markers from the test reads and the control reads, each marker identifying a set of nucleotides from the reads, the markers known to be associated with microsatellite instability in cancer; filtering the plurality of markers such that the specificity of determining an instability score increases; the filtering comprising removing heterozygous reads from sample reads such that determining marker significance and calculating instability scores uses only homozygous reads, for each marker, calculating a marker significance indicating the significance and viability for the marker in detecting MSI, the viability representing a level of similarity between characteristics of test reads and control reads of the marker, and the significance representing the statistical significance of a length variation of a repeated subset of nucleotides in the set of nucleotides in test reads of the marker relative to the length variation for the same repeated subset of nucleotides in the control reads of the marker; wherein calculating the marker significance includes calculating marker scores based on the sample reads, the marker scores including a significance score and a viability score, wherein calculating the significance score comprises quantifying the statistical significance of the variation in the microsatellite length distribution of test reads relative to control reads, wherein calculating the viability score comprises determining a high viability score above a threshold viability score if the number of test reads and control reads is the same, and a low viability score below the threshold viability score for that marker, if there is a difference between the number of test reads and the number of control reads for a marker, determining an instability score for the sample based on the calculated marker significance scores, the instability score being a ratio of significant to insignificant markers representing a likelihood that the sample contains MSI and detecting a likelihood of cancer based on the likelihood that the sample contains a MSI; wherein determining an instability score comprises - when the viability score for the marker is below the threshold viability score, not using the marker to calculate the instability score for the sample and when the viability score for the marker is above the threshold viability score, using the marker to calculate the instability score for the sample and - by comparing the significance score to a significance threshold, determining, for use in the instability score, if the marker is a significant marker or an insignificant marker.