Exploring other DNA profile match scenarios

Exploring other DNA profile match scenarios


Firstly a familial derrived profile.
Then a mixed sample simulation

Familial derrived profile Exploring the DNA 'evidence' so far in a real case where the suspect's profile was derrived from sampling his wife and two sons. Lets choose 2 randomly generated profiles for the father F and mother M for vWA,THO1,D8,FGA,D21,D18,D2,D16,D19,D3 M (17,18)(6,9.3)(12,13)(20,21)(28,30)(12,15)(17,23)(11,13)(14,14)(17,18) F (16,17)(7,8) (13,15) (20,24)(29,30)(13,17)(21,24)(12,12)(14,15)(17,17) Then randomly (coin toss) pick one allele from each parent to find 2 sons Sa and Sb Sa 18 ,16 /9.3 ,7 /12 ,15 /20 ,20 /30 ,30 /15 ,17 /23 ,21 /11 ,12 /14 ,15 /18 ,17 Sa - directed (16,18)(7,9.3)(12,15)(20,20)(30,30)(15,17)(21,23)(11,12)(14,15)(17,18) Sb 17 ,17 /9.3 ,8 /12 ,15 /21 ,20 /28 ,30 /12 ,17 /17 ,21 /13 ,12 /14 ,14 /18 ,17 Sb - directed (17,17)(8,9.3)(12,15)(20,21)(28,30)(12,17)(17,21)(12,13)(14,14)(17,18) so M (17,18)(6,9.3)(12,13)(20,21)(28,30)(12,15)(17,23)(11,13)(14,14)(17,18) Sa (16,18)(7,9.3)(12,15)(20,20)(30,30)(15,17)(21,23)(11,12)(14,15)(17,18) Sb (17,17)(8,9.3)(12,15)(20,21)(28,30)(12,17)(17,21)(12,13)(14,14)(17,18) Then working backwards from known M and Sa and Sb . For each locus any allels/s in Sa and Sb but not in M must be from deduced father - A , somewhat holey compared to F (16,*)(7,8)(*,15)(*,*)(*,*)(*,17)(21,*)(12,*)(*,15)(*,*) * is anything and for eg (12,*) read (*,12) as well So the only fully identifying locus is the second one ( THO1) of (7,8) and for the population data I was using 19.4 % of people have '7' and 10.8% of people have '8' giving in simple terms (2 x 0.198 x 0.108 ) = 4% of that population with THO1 (7,8) Forgetting for the moment the sexual contact could have been a few days earlier and not the murderer. Dating is from proportion of live/dead sperm cells and rather vague. For more discrimination it would be necessary to know how many datapoints determined for the sexual contact profile P . There is no mention sofar of semen stained clothing , only internal, so mixed fluid, and mixed sample of contact P and victim V, so randomly picking another profile for V let V be (17,18)(8,9.3)(13,14)(20,23)(28,30)(15,17)(17,24)(11,12)(13,14)(15,16) now mix with profile of F (16,17)(7,8) (13,15) (20,24) (29,30)(13,17)(21,24)(12,12)(14,15)(17,17) then the defining alien P profile would be ($,16)(7,$)(15,$)($,24)(29,$)(13,$)(21,$)($,$)(15,$)($,17) where $ represents any of the alleles with repeated presence from V or F and that is the ideal profile assuming all loci pass through the analysis process. So compare P and A ($,16)(7,$)(15,$)($,24)(29,$)(13,$)(21,$)($,$) (15,$) ($,17) (16,*)(7,8)(*,15)(*,*) (*,*) (*,17)(21,*)(12,*)(*,15)(*,*) and of course all the 'inverse' directed pairs in each case. Not even the THO1 (7,8) is fully evidential $1 = 16, 17 or 18; $2 = 7,8 or 9.3; $3 = 13,14 or 15; $4 = 20,23 or 24 $5 = 29 or 30; $6 = 13,15 or 17; $7 = 17,21 or 24 $8(2) = 11 or 12; $9 = 13,14 or 15; $10 = 15,16 or 17 So nothing excluding P from being A but on the other hand perhaps not very strong power of inclusion which is where independent inclusionary evidence would come in. The A profile despite the holes should be otherwise accurate for the known alleles. The P profile can often be incomplete and missing a number of the alleles shown here for the ideal situation.
Mixed fluid, and so mixed sample of contact P (rapist) and victim V, so randomly let V be (17,18)(8,9.3)(13,14)(20,23)(28,30)(15,17) now mix with profile of F (random suspect) (16,17)(7,8) (13,15) (20,24) (29,30)(13,17) then the defining alien P profile would be ($,16)(7,$)(15,$)($,24)(29,$)(13,$) where $ represents any of the alleles with repeated presence from V or F $1 = 16, 17 or 18; $2 = 7,8 or 9.3; $3 = 13,14 or 15; $4 = 20,23 or 24 $5 = 29 or 30; $6 = 13,15 or 17 Certainly the P profile could be from F but also anyone with any of those $ number permutations as well. Only males with one or more NOT in that set of 3,3,3,3,2,3 numbers could be excluded I adapted my simultions to give a numerical determination of matches to this P profile. For a run of 200,000 completely randomly generated profiles including all rare alleles with no coancestry factored in but otherwise obeying UK caucasian allele frequencies. Then matches to the P profile Locus 1 : 51,758 Locus 1 and 2 : 10,196 1,2 and 3 : 1,128 1,2,3 & 4 : 109 1,2,3,4 and 5 : 13 1,2,3,4,5, and 6 : 1 which was (16,18)(7,9.3)(13,15)(24,24)(29,29)(13,17) Repeating for one million profiles gave 7 matches to P
Two VB routines separated by horizontal line. The first generates and the second determines the number of matches by progressively checking each pair at each locus.
' Generating 10 loci x2 profiles Dim ph(20) Dim pb(20) ' initialising Random Number Generator - RNG count9 = 0 count8 = 0 Randomize a = 214013 c = 2531011 x0 = Timer z = 2 ^ 24 ' 1 file 'sep30-g' for original, un-directed pairs, source data. Open "sep30-g" For Output As #1 ' outputs directed and not divided by first digit Open "sep30-f" For Output As #10 ' change for different total size eg 199999 for 200,000 For x = 0 To 9999 For j = 0 To 1 ' vWA ,first locus ' RNG random number generator temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.001 Then ph(j) = 11 If ph(j) < 0.106 Then ph(j) = 1 If ph(j) < 0.186 Then ph(j) = 2 If ph(j) < 0.402 Then ph(j) = 3 If ph(j) < 0.672 Then ph(j) = 4 If ph(j) < 0.891 Then ph(j) = 5 If ph(j) < 0.984 Then ph(j) = 6 If ph(j) < 0.998 Then ph(j) = 7 If ph(j) < 1 Then ph(j) = 8 If ph(j) > 10 Then ph(j) = 0 Next j For j = 2 To 3 ' THO1 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.002 Then ph(j) = 11 If ph(j) < 0.243 Then ph(j) = 1 If ph(j) < 0.437 Then ph(j) = 2 If ph(j) < 0.545 Then ph(j) = 3 If ph(j) < 0.546 Then ph(j) = 4 If ph(j) < 0.686 Then ph(j) = 5 If ph(j) < 0.99 Then ph(j) = 6 If ph(j) < 1 Then ph(j) = 7 If ph(j) > 10 Then ph(j) = 0 Next j For j = 4 To 5 ' D8 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.018 Then ph(j) = 11 If ph(j) < 0.031 Then ph(j) = 1 If ph(j) < 0.125 Then ph(j) = 2 If ph(j) < 0.191 Then ph(j) = 3 If ph(j) < 0.334 Then ph(j) = 4 If ph(j) < 0.667 Then ph(j) = 5 If ph(j) < 0.876 Then ph(j) = 6 If ph(j) < 0.964 Then ph(j) = 7 If ph(j) < 0.995 Then ph(j) = 8 If ph(j) < 1 Then ph(j) = 9 If ph(j) > 10 Then ph(j) = 0 Next j For j = 6 To 7 ' FGA ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.025 Then ph(j) = 11 If ph(j) < 0.081 Then ph(j) = 1 If ph(j) < 0.224 Then ph(j) = 2 If ph(j) < 0.226 And ph(j) >= 0.224 Then pb(j) = "A" If ph(j) < 0.413 Then ph(j) = 3 If ph(j) < 0.415 And ph(j) >= 0.413 Then pb(j) = "B" If ph(j) < 0.58 Then ph(j) = 4 If ph(j) < 0.591 And ph(j) >= 0.58 Then pb(j) = "C" If ph(j) < 0.73 Then ph(j) = 5 If ph(j) < 0.734 And ph(j) >= 0.73 Then pb(j) = "D" If ph(j) < 0.88 Then ph(j) = 6 If ph(j) < 0.882 And ph(j) >= 0.88 Then pb(j) = "E" If ph(j) < 0.957 Then ph(j) = 7 If ph(j) < 0.992 Then ph(j) = 8 If ph(j) < 0.999 Then ph(j) = 9 If ph(j) < 1 And ph(j) >= 0.999 Then pb(j) = "F" If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) Next j For j = 8 To 9 ' D21 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.001 Then pb(j) = "A" If ph(j) < 0.002 And ph(j) >= 0.001 Then pb(j) = "B" If ph(j) < 0.033 Then ph(j) = 11 If ph(j) < 0.193 Then ph(j) = 1 If ph(j) < 0.419 Then ph(j) = 2 If ph(j) < 0.677 Then ph(j) = 3 If ph(j) < 0.704 Then ph(j) = 4 If ph(j) < 0.773 Then ph(j) = 5 If ph(j) < 0.866 Then ph(j) = 6 If ph(j) < 0.884 Then ph(j) = 7 If ph(j) < 0.974 Then ph(j) = 8 If ph(j) < 0.975 And ph(j) >= 0.974 Then pb(j) = "C" If ph(j) < 0.997 Then ph(j) = 9 If ph(j) < 1 And ph(j) >= 0.997 Then pb(j) = "D" If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) Next j For j = 10 To 11 ' D18 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.001 Then pb(j) = "A" If ph(j) < 0.009 And ph(j) >= 0.001 Then pb(j) = "B" If ph(j) < 0.021 Then ph(j) = 11 If ph(j) < 0.16 Then ph(j) = 1 If ph(j) < 0.285 Then ph(j) = 2 If ph(j) < 0.449 Then ph(j) = 3 If ph(j) < 0.594 Then ph(j) = 4 If ph(j) < 0.731 Then ph(j) = 5 If ph(j) < 0.846 Then ph(j) = 6 If ph(j) < 0.926 Then ph(j) = 7 If ph(j) < 0.967 Then ph(j) = 8 If ph(j) < 0.982 Then ph(j) = 9 If ph(j) < 0.992 And ph(j) >= 0.982 Then pb(j) = "C" If ph(j) < 0.997 And ph(j) >= 0.992 Then pb(j) = "D" If ph(j) < 0.998 And ph(j) >= 0.997 Then pb(j) = "E" If ph(j) < 1 And ph(j) >= 0.998 Then pb(j) = "F" ' allele 20 (C) reduced from .017 to .015 as allele ' frequencies summed to 1.002 If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) Next j For j = 12 To 13 ' D2S1338 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.037 Then ph(j) = 11 If ph(j) < 0.222 Then ph(j) = 1 If ph(j) < 0.309 Then ph(j) = 2 If ph(j) < 0.419 Then ph(j) = 3 If ph(j) < 0.557 Then ph(j) = 4 If ph(j) < 0.589 Then ph(j) = 5 If ph(j) < 0.613 Then ph(j) = 6 If ph(j) < 0.725 Then ph(j) = 7 If ph(j) < 0.867 Then ph(j) = 8 If ph(j) < 0.978 Then ph(j) = 9 If ph(j) < 0.997 And ph(j) >= 0.978 Then pb(j) = "A" If ph(j) < 1 And ph(j) >= 0.997 Then pb(j) = "B" If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) Next j For j = 14 To 15 ' D16 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.019 Then ph(j) = 11 If ph(j) < 0.148 Then ph(j) = 1 If ph(j) < 0.202 Then ph(j) = 2 If ph(j) < 0.491 Then ph(j) = 3 If ph(j) < 0.779 Then ph(j) = 4 If ph(j) < 0.965 Then ph(j) = 5 If ph(j) < 0.994 Then ph(j) = 6 If ph(j) < 1 Then ph(j) = 7 If ph(j) > 10 Then ph(j) = 0 Next j For j = 16 To 17 ' D19 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.087 Then ph(j) = 11 If ph(j) < 0.309 Then ph(j) = 1 If ph(j) < 0.322 Then ph(j) = 2 If ph(j) < 0.704 Then ph(j) = 3 If ph(j) < 0.719 Then ph(j) = 4 If ph(j) < 0.896 Then ph(j) = 5 If ph(j) < 0.934 Then ph(j) = 6 If ph(j) < 0.975 Then ph(j) = 7 If ph(j) < 0.992 Then ph(j) = 8 If ph(j) < 0.997 Then ph(j) = 9 If ph(j) < 0.999 And ph(j) >= 0.997 Then pb(j) = "A" If ph(j) < 1 And ph(j) >= 0.999 Then pb(j) = "B" If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) Next j For j = 18 To 19 ' D3 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.001 Then ph(j) = 11 If ph(j) < 0.007 Then ph(j) = 1 If ph(j) < 0.139 Then ph(j) = 2 If ph(j) < 0.404 Then ph(j) = 3 If ph(j) < 0.651 Then ph(j) = 4 If ph(j) < 0.846 Then ph(j) = 5 If ph(j) < 0.987 Then ph(j) = 6 If ph(j) < 1 Then ph(j) = 7 If ph(j) > 10 Then ph(j) = 0 Next j ' output the original generated file Write #1, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) ' Because in real DNA profiles without further info ,no one ' knows which allele in each pair came from the mother or father ' by convention they are written smaller ,larger (or equal). ' The following directs each pair For j = 0 To 18 Step 2 If ph(j + 1) < ph(j) Then jjj = ph(j) ph(j) = ph(j + 1) ph(j + 1) = jjj End If Next j Write #10, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count0 = count0 + 1 Next x Close #10 Close #1 ' count file for data to fix for - next loops in sucessive dividings Open "sep30-c" For Output As #20 Write #20, 0, count0, 1, count1, 2, count2, 3, count3, 4, count4, 5, count5, 6, count6, 7, count7, 8, count8, 9, count9 Close #20
' mixed sample simulation, 6 loci case Dim ps As String Dim ph(20) ' Locus 1 temp = "sep30-f" temp0 = "sep30-r1" tempc = "sep30-r1c" Open temp For Input As #1 Open temp0 For Output As #10 count0 = 0 Do Until (EOF(1) = True) zz = 0 Input #1, ps a1$ = Mid(ps, 1, 1) ph(1) = Val(a1$) a2$ = Mid(ps, 2, 1) ph(2) = Val(a2$) ' change these 2 lines for each locus If ph(1) = 3 And (ph(2) = 3 Or ph(2) = 4 Or ph(2) = 5) Then zz = 1 If ph(2) = 3 And (ph(1) = 3 Or ph(1) = 4 Or ph(1) = 5) Then zz = 1 If zz = 1 Then Write #10, ps count0 = count0 + 1 End If x = x + 1 Loop Close (1) Close #1 Close #10 ' output counts Open tempc For Output As #20 Write #20, 0, count0 Close #20 ' Locus 2 temp = "sep30-r1" temp0 = "sep30-r2" tempc = "sep30-r2c" Open temp For Input As #1 Open temp0 For Output As #10 count0 = 0 Do Until (EOF(1) = True) zz = 0 Input #1, ps a3$ = Mid(ps, 3, 1) ph(3) = Val(a3$) a4$ = Mid(ps, 4, 1) ph(4) = Val(a4$) ' change these 2 lines for each locus If ph(3) = 2 And (ph(4) = 2 Or ph(4) = 3 Or ph(4) = 6) Then zz = 1 If ph(4) = 2 And (ph(3) = 2 Or ph(3) = 3 Or ph(3) = 6) Then zz = 1 If zz = 1 Then Write #10, ps count0 = count0 + 1 End If x = x + 1 Loop Close (1) Close #1 Close #10 ' output counts Open tempc For Output As #20 Write #20, 0, count0 Close #20 ' Locus 3 temp = "sep30-r2" temp0 = "sep30-r3" tempc = "sep30-r3c" Open temp For Input As #1 Open temp0 For Output As #10 count0 = 0 Do Until (EOF(1) = True) zz = 0 Input #1, ps a5$ = Mid(ps, 5, 1) ph(5) = Val(a5$) a6$ = Mid(ps, 6, 1) ph(6) = Val(a6$) ' change these 2 lines for each locus If ph(5) = 7 And (ph(6) = 5 Or ph(6) = 6 Or ph(6) = 7) Then zz = 1 If ph(6) = 7 And (ph(5) = 5 Or ph(5) = 6 Or ph(5) = 7) Then zz = 1 If zz = 1 Then Write #10, ps count0 = count0 + 1 End If x = x + 1 Loop Close (1) Close #1 Close #10 ' output counts Open tempc For Output As #20 Write #20, 0, count0 Close #20 ' Locus 4 temp = "sep30-r3" temp0 = "sep30-r4" tempc = "sep30-r4c" Open temp For Input As #1 Open temp0 For Output As #10 count0 = 0 Do Until (EOF(1) = True) zz = 0 Input #1, ps a7$ = Mid(ps, 7, 1) ph(7) = Val(a7$) a8$ = Mid(ps, 8, 1) ph(8) = Val(a8$) ' change these 2 lines for each locus If ph(7) = 6 And (ph(8) = 2 Or ph(8) = 5 Or ph(8) = 6) Then zz = 1 If ph(8) = 6 And (ph(7) = 2 Or ph(7) = 5 Or ph(7) = 6) Then zz = 1 If zz = 1 Then Write #10, ps count0 = count0 + 1 End If x = x + 1 Loop Close (1) Close #1 Close #10 ' output counts Open tempc For Output As #20 Write #20, 0, count0 Close #20 ' Locus 5 temp = "sep30-r4" temp0 = "sep30-r5" tempc = "sep30-r5c" Open temp For Input As #1 Open temp0 For Output As #10 count0 = 0 Do Until (EOF(1) = True) zz = 0 Input #1, ps a9$ = Mid(ps, 9, 1) ph(9) = Val(a9$) a10$ = Mid(ps, 10, 1) ph(10) = Val(a10$) ' change these 2 lines for each locus If ph(9) = 2 And (ph(10) = 2 Or ph(10) = 3) Then zz = 1 If ph(10) = 2 And (ph(9) = 2 Or ph(9) = 3) Then zz = 1 If zz = 1 Then Write #10, ps count0 = count0 + 1 End If x = x + 1 Loop Close (1) Close #1 Close #10 ' output counts Open tempc For Output As #20 Write #20, 0, count0 Close #20 ' Locus 6 temp = "sep30-r5" temp0 = "sep30-r6" tempc = "sep30-r6c" Open temp For Input As #1 Open temp0 For Output As #10 count0 = 0 Do Until (EOF(1) = True) zz = 0 Input #1, ps a11$ = Mid(ps, 11, 1) ph(11) = Val(a11$) a12$ = Mid(ps, 12, 1) ph(12) = Val(a12$) ' change these 2 lines for each locus If ph(11) = 2 And (ph(12) = 2 Or ph(12) = 4 Or ph(12) = 6) Then zz = 1 If ph(12) = 2 And (ph(11) = 2 Or ph(11) = 4 Or ph(11) = 6) Then zz = 1 If zz = 1 Then Write #10, ps count0 = count0 + 1 End If x = x + 1 Loop Close (1) Close #1 Close #10 ' output counts Open tempc For Output As #20 Write #20, 0, count0 Close #20

The Devil in the Detail

Mixed sample DNA profile analysis - art or science ? or artifice. A 'text book' case study example of how flakey this profile business is when removed from the niceties of the research lab and processing real-world samples. Plenty of chances of sleight-of-hand, safe in the knowledge that few outside the business would pick it up. The following I posted to Yahoo forensic science group but no response so far. I'm looking at a 2003 published journal report concerning analysis of a mixed sample. Unusually suspect as major components and victim as minor. Suspect was an employee and presumably prosecuted for rape. Analysis with PowerPlex profiling so 15loci + 1 . Electropherograms of mixed stains, and referenece samples from suspect and victim are shown. With standard threshold setting of 150 units shows 11 alleles consistent with the victim and one vWA (14) that is alien to suspect and victim. Only 2 persons concerned in this sample, going by the maximum number of any allleles. Unmistakable peak well above threshold level shown in the plot but not apparently labelled as 14 - (tippexed out before publication ? ) There should ideally be 18 alleles from the victim so they lowered the threshold to 50 units and this brought up to 18. This plot is not shown in the publication , surprise , surprise. The >150 plot shows traces of the missing 7 but also 2 other alleles that must be >50 but alien to victim and suspect. A medical anomoly (trisomy ) concerning the victim was explained but nothing about this vWA (14) or the other unwanted 2 as spontaneous mutation or anything. A low resolution pdf of this journal article is on http://www.cmj.hr/2003/4403/18DROBNIC.pdf or http://www.cmj.hr/2003/44/3/12808732.pdf Croatian Medical Journal 44(3) :p150 - 154, 2003 The BL photocopy of the printed version of this article is slighly clearer but not much. The highly questionable spikes are evident in both PDF and printed versions. On page 351 on the bottom row , section B, two blocks of spikes from left, are spikes labeled 15,16 and 17 but to the left of them is definitely a spike at position 14. The following will need magnifying the pdf. The 3 lines of this B plot , including arrowed sites are D3, THO1, D21, D18, Penta E D5, D13, D7, D16, CSF, Penta D XY, vWA, D8, TPOX, FGA The extra spikes greater than the 50 threshold that are not arrowed would be D21 (29) [ third set on top row ] and D5 (10) [ first set of middle row ] and probably numerous others. There is at least one unlablelled spike in the SGM 'A' plot of D19 (13) first in bottom row but all this 'A' plot are indistinct in this plot, again exclusionary The allele frequencies for this area of Europe are on http://cjpa.freeservers.com/fsislov.htm (for SGM not powerplex so incomplete ) rarest alleles of victim D18 (11), 0.8% D18 (20) 2.6% The vWA(14) is not on the SGM+ run but if processed by a 'defense' testing house would have been exclusionary/exculpatory evidence without any evidence of spontaneous mutation in suspect or victim explaining this anomaly. ps the chromosome 21 trisomy, signature of Down syndrome, was an interesting medical aside.
The following is some quotes from that journal article <...> Preparation and Quantification of DNA Buccal epithelial cells from the suspect and the victim were collected by use of cotton swabs from C. D. S. Swab Safe Box ( Swissforensix AG, Bern, Switzerland) . Blood sample was also taken from the victim as the second reference sample. <...> Figure 1. Electropherograms of AmpFlSTR SGM Plus ( A ) and PowerPlex 16 system ( B ) amplified DNA from the penile swabs showing a mixture with a dominant male component. Several minor peaks are visible, but some of them ( D18S51, Penta E, D5S818, D8S51, and FGA) are not labeled at the threshold value of 150 rfu on PowerPlex 16 ( arrows) , as routinely used in our laboratory, whereas for the AmpFlSTR SGM Plus the default minimum threshold is set at 75 rfu. When we reanalyzed the amplified samples from PowerPlex 16 at a minimum threshold of 50 rfu, all the alleles marked with the arrows became labeled ( data not shown) . The profile from the minor component could not be distinguished from that of the victim s. The gray box indicates the same three-band profile observed at locus D21S11 in the sample from the victim ( Figs. 2 and 3) and in the minor component of the suspect s penile swabs. <...> Results No seminal fluid and/ or sperm cells could be de-tected in any of the items of evidence taken from the victim ( clothes and cervicovaginal samples) . The amount of DNA recovered from each of the two swabs taken from the suspect s penis was below the lowest DNA reference standard ( 0.15 ng) . Conse-quently, 200 uL of both extracts were pooled and concentrated on Microcon -100 filters up to 50 uL Then, 10 uL of DNA extract from pooled sample was successfully amplified with the AmpFlSTR SGM Plus. Multilocus profile obtained from the penile swabs indicated mixed STR profile by the presence of more than two bands at some loci ( Fig. 1A) . Since the number of extra allelic peaks did not exceed four peaks, with the exception of locus D21S11, we as-sumed that the mixture contained DNA from two per-sons. To obtain more information, seven additional loci were analyzed with PowerPlex 16 using the same amount of DNA sample ( Fig. 1B) . The number of the bands at any locus did not exceed four. It was possible to separate the major and the minor compo-nent by visual examination. The alleles in the minor component were specific for the victim ( Fig. 2A and 3A) , whereas the major component matched the sus-pect ( Fig. 2B and 3B) . However, in the case of amplifi-cation with PowerPlex 16, some alleles were not la-beled, but the signals were detectable ( Fig. 1B) . In our laboratory, we routinely analyze DNA am-plified with AmpFlSTR Plus at 75 rfu cut-off; the min-imum threshold for DNA amplified by Powerplex 16 is set at 150 rfu. The reason for such a practice is that we have much more experience with DNA samples amplified with AmpFlSTR kit than with PowerPlex kit. However, we reanalyzed the same DNA sample from the penile swab at the threshold set at 50 rfu, and alleles specific for the victim were labeled at all loci, except for the loci D7S820 and TPOX, where the genotype of the suspect and the victim were the same ( Table 1) . At this threshold, determined alleles could still be clearly distinguished from the background ( data not shown) . <...> Table 1. STR typing results of the suspect s penile swa-bs and the reference samples from the victim and the suspect* Locus / Victim / Penile swab / Suspect STR SGM Plus kit:
D3S1358 17, 18 / 17 , 18 / 18, 18 VWA 15, 16 / 15 , 16, 17 / 16, 17 D16S539 9, 11 / 9 , 11, 12 / 11, 12 D2S1338 19, 20 / 17, 19 , 20 , 23 / 17, 23 D8S1179 11, 13 / 11 , 13 , 14 / 14, 14 D21S11 28, 31.2, 32.2 / 28 , 30, 31.2 , 32.2 , 33.2 / 30, 33.2 D18S51 11, 20 / 11 , 15, 20 / 15, 15 D19S433 12, 16 / 12 , 14, 15, 16 / 14, 15 THO1 6, 9.3 / 6, 9.3 / 6, 6 FGA 21, 24 / 18, 21 , 24 / 18, 24 Amelogenin XX / XY / XY Powerplex 16 kit: D3S1358 17, 18 / 17 , 18 / 18, 18 THO1 6, 9.3 / 6, 9.3 / 6, 6 D21S11 28, 31.2, 32.2 / 28 , 30, 31.2 , 32.2 , 33.2 / 30, 33.2 D18S51 11, 20 / 11 , 15, 20 / 15, 15 Penta E 12, 14 / 7, 9, 12 , 14 / 7, 9 D5S818 11, 13 / 11, 12, 13 / 11, 12 D13S317 10, 12 / 10 , 11, 12 / 11, 12 D7S820 12, 13 / 12, 13 / 12, 13 D16S539 9, 11 / 9 , 11, 12 / 11, 12 CSF1PO 10, 13 / 10 , 11, 13 / 11, 13 Penta D 9, 13 / 9 , 12, 13 , 14 / 12, 14 VWA 15, 16 / 15 , 16, 17 / 16, 17 D8S1179 11, 13 / 11 , 13 , 14 / 14, 14 TPOX 8, 8 / 8 / 8, 8 FGA 21, 24 / 18, 21 , 24 / 18, 24 Amelogenin XX / XY / XY * Alleles given in bold letters represent peaks that could be assigned to the victim.

DNA Test for paternity

Like a lot of things with DNA profiles proof of exclusion is excellent but proof of inclusion can be problematic. The example below, no mother profile, shows the 'father' and 'daughter ' were not related. One zero in the listing could be explained by mutation on one allele in the biological process but 5 zeroes is exclusion or lab error (or fraud - as party not present in DNA profiling is a grey area/illegal, results not forensically admissible AFAIA, there are many fraudsters in on the game).

To prove inclusion is not so conclusive but can be very high probability. In example below one of the pair of numbers for the 'daughter' must be present in the 'father' to be related. Each person inherits one 'number' from father and one from mother . If, unlike this case, there were 15 such shared numbers then very high probility they are related. There is a very small probability that someone else provided those matching 15 numbers/alleles and as the source of these numbers are not identified then a matched pair could be provided by one of the mother's where her profile is unknown

A worked example is on a forensic science thread 22 Oct,2005 ,on
http://groups.yahoo.com/group/forensic-science/message/8992
my psedonym there is Nona Revers / nonarevers, from message 9044 in that thread using 15 markers + the sex determiner Amel. The person posting the data has lost formatting and by convention where homozygous (a person having 2 numbers the same) then only one number is placed in the list. Copying to her posting has lost the format and I've expanded up to include likely original ( D3,D21 and Penta E could be different interpretation as lost in formatting) Expanding her table to make clearer adding commas etc, Allele range is just the range of possibles that are tested for in that lab, DI is a probability factor comparing to the racial background frequency of occurance for that marker (STR-locus) (zero = zero probability, assuming no mutation) str-locus (Allele Range) 'father alleles' / 'daughter alleles' *Direct Index D3S1358 (12-20) 16,18 / 18 ,18 *6.562
TH01 (4-13.3) 6, 9 / 7, 9 *2.100
D21S11 (24-38) 28, 29 / 30,30 *Zero { or 28,28 / 29,30 }
Penta E (5-24) 13, 15 / 16,16 *Zero { or 13,13 / 15,16 }
D5S818 (7-16) 13,13 / 9, 12 *Zero
D13S317 (7-15) 9, 12 / 9 ,12 *2.256
D7S820 (6-14) 8, 9 / 9, 11 * 2.827
D16S539 (5-15) 9, 12 / 9, 11 * 2.059
CSF1PO (6-15) 8, 10 / 10, 12 * 1.208
Penta D (2.2-17) 12, 13 / 9, 13 * 1.400
Amelogenin(XX-XY) Male XY / Female XX
vWa (10-12) 16, 20 / 18, 19 * Zero
D8S1179 (7-18) 13, 14 / 11, 13 * 0.902
TPOX (6-13) 12,12 / 8, 11 * Zero
FGA (16-46.2) 20, 21 /19, 24 * Zero
If there were no zeroes in the list then a very high probability of being related but not absolute certainty, multiplying the resultant 15 numbers together giving the degree of certainty. If a one zero case then the whole exercise can be repeated with a different profiling kit that uses different markers.

Mutation , especially in male germ cell line (sperm) can be highly significant forensically as say a rapist leaving a sperm stain can have one marker different via mutation to that same marker as determined by cheek-cell sample. Leading to both false suspect inclusions and false suspect exclusions

Adjusting the dnas6 macro slightly for >=6.6% AFs, giving 11.8 per cent of all allele profiles when simulated contain no alleles rarer than 6.6% allele frequency, ie no Jamaican grandfather or Polish mother etc to protect from false matches, in other words dead common, the modal group within the UK.
' Generating 10 loci x2 profiles with ' AF >= 6.6% ' the minimum AF in matches in full allele simulatioons ' directing pairs and first divider Dim ph(20) Dim pb(20) ' initialising Random Number Generator - RNG count9 = 0 count8 = 0 countf = 0 Randomize a = 214013 c = 2531011 x0 = Timer z = 2 ^ 24 ' 1 file 'apr15-g' for original, un-directed pairs, source data. ' This file is necessary to check on the performance of the RNG ' when a matched pair is found then it is highly unlikely that ' both sequences as generated, before pair directing, would ' be the same - more likely a manifest of repeat within the RNG ' (reason for adopting the 214013 / 2531011 RNG ) ' In final match checking use 'Word' find function on part of the sequences, including pair reversals, ' with luck would include a 'homozygotic' pair eg (3,3) say ,so no reversal ' on that pair Open "apr15-g" For Output As #1 ' outputs directed and divided by first digit Open "apr15-0" For Output As #10 Open "apr15-1" For Output As #11 Open "apr15-2" For Output As #12 Open "apr15-3" For Output As #13 Open "apr15-4" For Output As #14 Open "apr15-5" For Output As #15 Open "apr15-6" For Output As #16 Open "apr15-7" For Output As #17 Open "apr15-8" For Output As #18 Open "apr15-9" For Output As #19 ' change for different total size eg 199999 for 200,000 For x = 0 To 9999 flag = 0 For j = 0 To 1 ' vWA ,first locus ' RNG random number generator temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.001 Then ph(j) = 11 If ph(j) < 0.106 Then ph(j) = 1 If ph(j) < 0.186 Then ph(j) = 2 If ph(j) < 0.402 Then ph(j) = 3 If ph(j) < 0.672 Then ph(j) = 4 If ph(j) < 0.891 Then ph(j) = 5 If ph(j) < 0.984 Then ph(j) = 6 If ph(j) < 0.998 Then ph(j) = 7 If ph(j) < 1 Then ph(j) = 8 If ph(j) > 10 Then ph(j) = 0 If ph(j) = "0" Then flag = 1 If ph(j) = "2" Then flag = 1 If ph(j) = "7" Then flag = 1 If ph(j) = "8" Then flag = 1 Next j For j = 2 To 3 ' THO1 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.002 Then ph(j) = 11 If ph(j) < 0.243 Then ph(j) = 1 If ph(j) < 0.437 Then ph(j) = 2 If ph(j) < 0.545 Then ph(j) = 3 If ph(j) < 0.546 Then ph(j) = 4 If ph(j) < 0.686 Then ph(j) = 5 If ph(j) < 0.99 Then ph(j) = 6 If ph(j) < 1 Then ph(j) = 7 If ph(j) > 10 Then ph(j) = 0 If ph(j) = "0" Then flag = 1 If ph(j) = "4" Then flag = 1 If ph(j) = "7" Then flag = 1 Next j For j = 4 To 5 ' D8 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.018 Then ph(j) = 11 If ph(j) < 0.031 Then ph(j) = 1 If ph(j) < 0.125 Then ph(j) = 2 If ph(j) < 0.191 Then ph(j) = 3 If ph(j) < 0.334 Then ph(j) = 4 If ph(j) < 0.667 Then ph(j) = 5 If ph(j) < 0.876 Then ph(j) = 6 If ph(j) < 0.964 Then ph(j) = 7 If ph(j) < 0.995 Then ph(j) = 8 If ph(j) < 1 Then ph(j) = 9 If ph(j) > 10 Then ph(j) = 0 If ph(j) = "0" Then flag = 1 If ph(j) = "1" Then flag = 1 If ph(j) = "3" Then flag = 1 If ph(j) = "8" Then flag = 1 If ph(j) = "9" Then flag = 1 Next j For j = 6 To 7 ' FGA ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.025 Then ph(j) = 11 If ph(j) < 0.081 Then ph(j) = 1 If ph(j) < 0.224 Then ph(j) = 2 If ph(j) < 0.226 And ph(j) >= 0.224 Then pb(j) = "A" If ph(j) < 0.413 Then ph(j) = 3 If ph(j) < 0.415 And ph(j) >= 0.413 Then pb(j) = "B" If ph(j) < 0.58 Then ph(j) = 4 If ph(j) < 0.591 And ph(j) >= 0.58 Then pb(j) = "C" If ph(j) < 0.73 Then ph(j) = 5 If ph(j) < 0.734 And ph(j) >= 0.73 Then pb(j) = "D" If ph(j) < 0.88 Then ph(j) = 6 If ph(j) < 0.882 And ph(j) >= 0.88 Then pb(j) = "E" If ph(j) < 0.957 Then ph(j) = 7 If ph(j) < 0.992 Then ph(j) = 8 If ph(j) < 0.999 Then ph(j) = 9 If ph(j) < 1 And ph(j) >= 0.999 Then pb(j) = "F" If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) If ph(j) = "0" Then flag = 1 If ph(j) = "1" Then flag = 1 If ph(j) = "8" Then flag = 1 If ph(j) = "9" Then flag = 1 If pb(j) = "A" Then flag = 1 If pb(j) = "B" Then flag = 1 If pb(j) = "C" Then flag = 1 If pb(j) = "D" Then flag = 1 If pb(j) = "E" Then flag = 1 If pb(j) = "F" Then flag = 1 Next j For j = 8 To 9 ' D21 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.001 Then pb(j) = "A" If ph(j) < 0.002 And ph(j) >= 0.001 Then pb(j) = "B" If ph(j) < 0.033 Then ph(j) = 11 If ph(j) < 0.193 Then ph(j) = 1 If ph(j) < 0.419 Then ph(j) = 2 If ph(j) < 0.677 Then ph(j) = 3 If ph(j) < 0.704 Then ph(j) = 4 If ph(j) < 0.773 Then ph(j) = 5 If ph(j) < 0.866 Then ph(j) = 6 If ph(j) < 0.884 Then ph(j) = 7 If ph(j) < 0.974 Then ph(j) = 8 If ph(j) < 0.975 And ph(j) >= 0.974 Then pb(j) = "C" If ph(j) < 0.997 Then ph(j) = 9 If ph(j) < 1 And ph(j) >= 0.997 Then pb(j) = "D" If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) If ph(j) = "0" Then flag = 1 If ph(j) = "4" Then flag = 1 If ph(j) = "7" Then flag = 1 If ph(j) = "9" Then flag = 1 If pb(j) = "A" Then flag = 1 If pb(j) = "B" Then flag = 1 If pb(j) = "C" Then flag = 1 If pb(j) = "D" Then flag = 1 Next j For j = 10 To 11 ' D18 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.001 Then pb(j) = "A" If ph(j) < 0.009 And ph(j) >= 0.001 Then pb(j) = "B" If ph(j) < 0.021 Then ph(j) = 11 If ph(j) < 0.16 Then ph(j) = 1 If ph(j) < 0.285 Then ph(j) = 2 If ph(j) < 0.449 Then ph(j) = 3 If ph(j) < 0.594 Then ph(j) = 4 If ph(j) < 0.731 Then ph(j) = 5 If ph(j) < 0.846 Then ph(j) = 6 If ph(j) < 0.926 Then ph(j) = 7 If ph(j) < 0.967 Then ph(j) = 8 If ph(j) < 0.982 Then ph(j) = 9 If ph(j) < 0.992 And ph(j) >= 0.982 Then pb(j) = "C" If ph(j) < 0.997 And ph(j) >= 0.992 Then pb(j) = "D" If ph(j) < 0.998 And ph(j) >= 0.997 Then pb(j) = "E" If ph(j) < 1 And ph(j) >= 0.998 Then pb(j) = "F" ' allele 20 (C) reduced from .017 to .015 as allele ' frequencies summed to 1.002 If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) If ph(j) = "0" Then flag = 1 If ph(j) = "8" Then flag = 1 If ph(j) = "9" Then flag = 1 If pb(j) = "A" Then flag = 1 If pb(j) = "B" Then flag = 1 If pb(j) = "C" Then flag = 1 If pb(j) = "D" Then flag = 1 If pb(j) = "E" Then flag = 1 If pb(j) = "F" Then flag = 1 Next j For j = 12 To 13 ' D2S1338 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.037 Then ph(j) = 11 If ph(j) < 0.222 Then ph(j) = 1 If ph(j) < 0.309 Then ph(j) = 2 If ph(j) < 0.419 Then ph(j) = 3 If ph(j) < 0.557 Then ph(j) = 4 If ph(j) < 0.589 Then ph(j) = 5 If ph(j) < 0.613 Then ph(j) = 6 If ph(j) < 0.725 Then ph(j) = 7 If ph(j) < 0.867 Then ph(j) = 8 If ph(j) < 0.978 Then ph(j) = 9 If ph(j) < 0.997 And ph(j) >= 0.978 Then pb(j) = "A" If ph(j) < 1 And ph(j) >= 0.997 Then pb(j) = "B" If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) If ph(j) = "0" Then flag = 1 If ph(j) = "5" Then flag = 1 If ph(j) = "6" Then flag = 1 If pb(j) = "A" Then flag = 1 If pb(j) = "B" Then flag = 1 Next j For j = 14 To 15 ' D16 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.019 Then ph(j) = 11 If ph(j) < 0.148 Then ph(j) = 1 If ph(j) < 0.202 Then ph(j) = 2 If ph(j) < 0.491 Then ph(j) = 3 If ph(j) < 0.779 Then ph(j) = 4 If ph(j) < 0.965 Then ph(j) = 5 If ph(j) < 0.994 Then ph(j) = 6 If ph(j) < 1 Then ph(j) = 7 If ph(j) > 10 Then ph(j) = 0 If ph(j) = "0" Then flag = 1 If ph(j) = "2" Then flag = 1 If ph(j) = "6" Then flag = 1 If ph(j) = "7" Then flag = 1 Next j For j = 16 To 17 ' D19 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj pb(j) = "Z" If ph(j) < 0.087 Then ph(j) = 11 If ph(j) < 0.309 Then ph(j) = 1 If ph(j) < 0.322 Then ph(j) = 2 If ph(j) < 0.704 Then ph(j) = 3 If ph(j) < 0.719 Then ph(j) = 4 If ph(j) < 0.896 Then ph(j) = 5 If ph(j) < 0.934 Then ph(j) = 6 If ph(j) < 0.975 Then ph(j) = 7 If ph(j) < 0.992 Then ph(j) = 8 If ph(j) < 0.997 Then ph(j) = 9 If ph(j) < 0.999 And ph(j) >= 0.997 Then pb(j) = "A" If ph(j) < 1 And ph(j) >= 0.999 Then pb(j) = "B" If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) If ph(j) = "2" Then flag = 1 If ph(j) = "4" Then flag = 1 If ph(j) = "6" Then flag = 1 If ph(j) = "7" Then flag = 1 If ph(j) = "8" Then flag = 1 If ph(j) = "9" Then flag = 1 If pb(j) = "A" Then flag = 1 If pb(j) = "B" Then flag = 1 Next j For j = 18 To 19 ' D3 ' RNG temp = x0 * a + c temp = temp / z x1 = (temp - Fix(temp)) * z x0 = x1 phj = x1 / z ph(j) = phj If ph(j) < 0.001 Then ph(j) = 11 If ph(j) < 0.007 Then ph(j) = 1 If ph(j) < 0.139 Then ph(j) = 2 If ph(j) < 0.404 Then ph(j) = 3 If ph(j) < 0.651 Then ph(j) = 4 If ph(j) < 0.846 Then ph(j) = 5 If ph(j) < 0.987 Then ph(j) = 6 If ph(j) < 1 Then ph(j) = 7 If ph(j) > 10 Then ph(j) = 0 If ph(j) = "0" Then flag = 1 If ph(j) = "1" Then flag = 1 If ph(j) = "7" Then flag = 1 Next j If flag = 1 Then countf = countf + 1 If flag = 0 Then ' output the original generated file Write #1, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) ' Because in real DNA profiles without further info ,no one ' knows which allele in each pair came from the mother or father ' by convention they are written smaller ,larger (or equal). ' The following directs each pair For j = 0 To 18 Step 2 If ph(j + 1) < ph(j) Then jjj = ph(j) ph(j) = ph(j + 1) ph(j + 1) = jjj End If Next j ' put extra conditional statements here to reduce ' the number of files or just delete some of the following ' ' dividing on first column, file by file If ph(0) = 0 Then Write #10, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count0 = count0 + 1 End If If ph(0) = 1 Then Write #11, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count1 = count1 + 1 End If If ph(0) = 2 Then Write #12, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count2 = count2 + 1 End If If ph(0) = 3 Then Write #13, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count3 = count3 + 1 End If If ph(0) = 4 Then Write #14, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count4 = count4 + 1 End If If ph(0) = 5 Then Write #15, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count5 = count5 + 1 End If If ph(0) = 6 Then Write #16, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count6 = count6 + 1 End If If ph(0) = 7 Then Write #17, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count7 = count7 + 1 End If If ph(0) = 8 Then Write #18, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count8 = count8 + 1 End If If ph(0) = 9 Then Write #19, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) & ph(18) & ph(19) count9 = count9 + 1 End If End If Next x Close #10 Close #11 Close #12 Close #13 Close #14 Close #15 Close #16 Close #17 Close #18 Close #19 Close #1 ' count file for data to fix for - next loops in sucessive dividings ' count for >= 8.7% alleles is x minus countf ' countf is the count of rejected profiles with at least one ' allele less than 8.7% af Open "apr15-c" For Output As #20 Write #20, 0, count0, 1, count1, 2, count2, 3, count3, 4, count4, 5, count5, 6, count6, 7, count7, 8, count8, 9, count9, "countflag", countf Close #20

Email Paul Nutteing by removing 4 of the 5 dots
or email Paul Nutteing ,remove all but one dot
Or a message on usenet group uk.legal has got to me recently a couple of times.
A lot of the contents of this file plus other material 'peer reviewed' on the main forensic science usergroup

Background
A simulation of a large DNA profile database
A simulation of DNA profile 'families'
A simulation of DNA profile families with consanguinity
A simulation of DNA profile 'families' for 6 generations
dnas.htm revisited with all alleles represented
dnas.htm revisited for >8 percent allele frequency subset (similar ancestry )
Simulation of Taiwanese Tao and Rukai populations to explore the effect of within and without ancestral clusters
Basques autochthonous DNA profiles simulation, 9 loci
Australian Capital Caucasian 9 loci simulation
Australian Capital Caucasian 9 loci simulation, >= 5% allele frequency
CODIS, 13 Loci Caucasian Simulation
Automating the macros
Exploring other DNA profile match scenarios
Suspect familial matching
Return to co-ancestry factor in the NDNAD simulations
144 random matches in 65,000 -- ONLY?


Powered by counter.bloke.com