Basques DNA Profile Database, full alleles , 9 loci

Basques DNA Profile Database, full alleles , 9 loci




Visual basic macros and Word macros are 
between the horizontal rules. 
Before going into Visual Basic Editor go into ordinary 
Word and call up anything in the directory you want 
the VB files to go into as this is not designated in the 
following code.
Using plain text handling Notepad with no line wrap 
copy to between Sub / End Sub ,Reset and Run.
Some long conditional statements may break 
and would need reconcattenating before running.

If using straight VB6 then designate the directory 
for files by "replace all" occurances of jun01 to 
c:\vb\jun01 or whatever, also add a sound progress 
indicator before the [ next x ] line 
 
If x/1000 = Int (x/1000 ) Then Beep
 
before highlighting and copying.

In VB6 open New Project
In Form1 open up a Command1 button
Double click this button to open command 
code window and copy and paste the 'DNA' VB code 
between the Private Sub Command1_click ()
and the End Sub
Then Run/Start
Press command1
Wait until Beep/ clicks cease


' Generating 9 loci x2 profiles ' directing pairs and first divider Dim ph(18) Dim pb(18) ' initialising Random Number Generator - RNG count9 = 0 count8 = 0 Randomize a = 214013 c = 2531011 x0 = Timer z = 2 ^ 24 ' 1 file 'jun01-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 ) ' 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 "jun01-g" For Output As #1 ' outputs directed and divided by first digit Open "jun01-0" For Output As #10 Open "jun01-1" For Output As #11 Open "jun01-2" For Output As #12 Open "jun01-3" For Output As #13 Open "jun01-4" For Output As #14 Open "jun01-5" For Output As #15 Open "jun01-6" For Output As #16 Open "jun01-7" For Output As #17 Open "jun01-8" For Output As #18 Open "jun01-9" For Output As #19 ' change for different total size eg 199999 for 200,000 For x = 0 To 4999 For j = 0 To 1 ' D3 ,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.002 Then ph(j) = 11 If ph(j) < 0.009 Then ph(j) = 1 If ph(j) < 0.123 Then ph(j) = 2 If ph(j) < 0.412 Then ph(j) = 3 If ph(j) < 0.609 Then ph(j) = 4 If ph(j) < 0.745 Then ph(j) = 5 If ph(j) < 0.988 Then ph(j) = 6 If ph(j) < 1 Then ph(j) = 7 If ph(j) > 10 Then ph(j) = 0 Next j For j = 2 To 3 ' FGA ' 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.039 Then ph(j) = 11 If ph(j) < 0.131 Then ph(j) = 1 If ph(j) < 0.306 Then ph(j) = 2 If ph(j) < 0.454 Then ph(j) = 3 If ph(j) < 0.585 Then ph(j) = 4 If ph(j) < 0.767 Then ph(j) = 5 If ph(j) < 0.871 Then ph(j) = 6 If ph(j) < 0.973 Then ph(j) = 7 If ph(j) < 0.990 Then ph(j) = 8 If ph(j) < 1 Then ph(j) = 9 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.027 Then ph(j) = 11 If ph(j) < 0.046 Then ph(j) = 1 If ph(j) < 0.133 Then ph(j) = 2 If ph(j) < 0.211 Then ph(j) = 3 If ph(j) < 0.296 Then ph(j) = 4 If ph(j) < 0.568 Then ph(j) = 5 If ph(j) < 0.816 Then ph(j) = 6 If ph(j) < 0.968 Then ph(j) = 7 If ph(j) < 1 Then ph(j) = 8 If ph(j) > 10 Then ph(j) = 0 Next j For j = 6 To 7 ' 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.024 Then ph(j) = 11 If ph(j) < 0.121 Then ph(j) = 1 If ph(j) < 0.323 Then ph(j) = 2 If ph(j) < 0.602 Then ph(j) = 3 If ph(j) < 0.655 Then ph(j) = 4 If ph(j) < 0.728 Then ph(j) = 5 If ph(j) < 0.786 Then ph(j) = 6 If ph(j) < 0.789 Then ph(j) = 7 If ph(j) < 0.944 Then ph(j) = 8 If ph(j) < 0.986 Then ph(j) = 9 If ph(j) < 1 And ph(j) >= 0.986 Then pb(j) = "A" If ph(j) > 10 Then ph(j) = 0 If pb(j) <> "Z" Then ph(j) = pb(j) Next j For j = 8 To 9 ' 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.01 Then ph(j) = 11 If ph(j) < 0.041 Then ph(j) = 1 If ph(j) < 0.216 Then ph(j) = 2 If ph(j) < 0.337 Then ph(j) = 3 If ph(j) < 0.49 Then ph(j) = 4 If ph(j) < 0.675 Then ph(j) = 5 If ph(j) < 0.677 Then ph(j) = 6 If ph(j) < 0.757 Then ph(j) = 7 If ph(j) < 0.876 Then ph(j) = 8 If ph(j) < 0.915 Then ph(j) = 9 If ph(j) < 0.961 And ph(j) >= 0.915 Then pb(j) = "A" If ph(j) < 0.985 And ph(j) >= 0.961 Then pb(j) = "B" If ph(j) < 0.998 And ph(j) >= 0.985 Then pb(j) = "C" If ph(j) < 1 And ph(j) >= 0.998 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 ' D5 ' 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.031 Then ph(j) = 1 If ph(j) < 0.147 Then ph(j) = 2 If ph(j) < 0.504 Then ph(j) = 3 If ph(j) < 0.841 Then ph(j) = 4 If ph(j) < 0.996 Then ph(j) = 5 If ph(j) < 1 Then ph(j) = 6 If ph(j) > 10 Then ph(j) = 0 Next j For j = 12 To 13 ' D13 ' 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.197 Then ph(j) = 11 If ph(j) < 0.229 Then ph(j) = 1 If ph(j) < 0.285 Then ph(j) = 2 If ph(j) < 0.61 Then ph(j) = 3 If ph(j) < 0.877 Then ph(j) = 4 If ph(j) < 0.952 Then ph(j) = 5 If ph(j) < 0.996 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 = 14 To 15 ' D7 ' 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.015 Then ph(j) = 11 If ph(j) < 0.168 Then ph(j) = 1 If ph(j) < 0.28 Then ph(j) = 2 If ph(j) < 0.61 Then ph(j) = 3 If ph(j) < 0.826 Then ph(j) = 4 If ph(j) < 0.964 Then ph(j) = 5 If ph(j) < 0.996 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 ' 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.114 Then ph(j) = 1 If ph(j) < 0.16 Then ph(j) = 2 If ph(j) < 0.417 Then ph(j) = 3 If ph(j) < 0.738 Then ph(j) = 4 If ph(j) < 0.976 Then ph(j) = 5 If ph(j) < 1 Then ph(j) = 6 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) ' 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 16 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) 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) 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) 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) 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) 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) 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) 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) 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) 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) count9 = count9 + 1 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 Open "jun01-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
' Dividing file into 10 by second digit Dim ph(18) dim ps as string ' xxxx = count size from count file xxxx = ' input file Open "jun01-1" For Input As #1 ' 10 divided files Open "jun01-10" For Output As #10 Open "jun01-11" For Output As #11 Open "jun01-12" For Output As #12 Open "jun01-13" For Output As #13 Open "jun01-14" For Output As #14 Open "jun01-15" For Output As #15 Open "jun01-16" For Output As #16 Open "jun01-17" For Output As #17 Open "jun01-18" For Output As #18 Open "jun01-19" For Output As #19 count9 = 0 count8 = 0 xxxx = xxxx - 1 For x = 0 To xxxx Input #1, ps a2$ = Mid(ps, 2, 1) ph(1) = Val(a2$) If ph(1) = 0 Then Write #10, ps count0 = count0 + 1 End If If ph(1) = 1 Then Write #11, ps count1 = count1 + 1 End If If ph(1) = 2 Then Write #12, ps count2 = count2 + 1 End If If ph(1) = 3 Then Write #13, ps count3 = count3 + 1 End If If ph(1) = 4 Then Write #14, ps count4 = count4 + 1 End If If ph(1) = 5 Then Write #15, ps count5 = count5 + 1 End If If ph(1) = 6 Then Write #16, ps count6 = count6 + 1 End If If ph(1) = 7 Then Write #17, ps count7 = count7 + 1 End If If ph(1) = 8 Then Write #18, ps count8 = count8 + 1 End If If ph(1) = 9 Then Write #19, ps count9 = count9 + 1 End If Next x Close #1 Close #10 Close #11 Close #12 Close #13 Close #14 Close #15 Close #16 Close #17 Close #18 Close #19 ' output counts Open "jun01-1c" 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
' Dividing file into 10 by third digit Dim ph(18) dim ps as string ' enter count in xxxx xxxx = Open "jun01-11" For Input As #1 Open "jun01-110" For Output As #10 Open "jun01-111" For Output As #11 Open "jun01-112" For Output As #12 Open "jun01-113" For Output As #13 Open "jun01-114" For Output As #14 Open "jun01-115" For Output As #15 Open "jun01-116" For Output As #16 Open "jun01-117" For Output As #17 Open "jun01-118" For Output As #18 Open "jun01-119" For Output As #19 count9 = 0 count8 = 0 xxxx=xxxx - 1 For x = 0 To xxxx Input #1, ps a3$ = Mid(ps, 3, 1) ph(2) = Val(a3$) If ph(2) = 0 Then Write #10, ps count0 = count0 + 1 End If If ph(2) = 1 Then Write #11, ps count1 = count1 + 1 End If If ph(2) = 2 Then Write #12, ps count2 = count2 + 1 End If If ph(2) = 3 Then Write #13, ps count3 = count3 + 1 End If If ph(2) = 4 Then Write #14, ps count4 = count4 + 1 End If If ph(2) = 5 Then Write #15, ps count5 = count5 + 1 End If If ph(2) = 6 Then Write #16, ps count6 = count6 + 1 End If If ph(2) = 7 Then Write #17, ps count7 = count7 + 1 End If If ph(2) = 8 Then Write #18, ps count8 = count8 + 1 End If If ph(2) = 9 Then Write #19, ps count9 = count9 + 1 End If Next x Close #1 Close #10 Close #11 Close #12 Close #13 Close #14 Close #15 Close #16 Close #17 Close #18 Close #19 Open "jun01-11c" 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
' Dividing file into 10 by fourth digit Dim ph(18) dim ps as string ' enter count in xxxx xxxx = Open "jun01-131" For Input As #1 Open "jun01-1310" For Output As #10 Open "jun01-1311" For Output As #11 Open "jun01-1312" For Output As #12 Open "jun01-1313" For Output As #13 Open "jun01-1314" For Output As #14 Open "jun01-1315" For Output As #15 Open "jun01-1316" For Output As #16 Open "jun01-1317" For Output As #17 Open "jun01-1318" For Output As #18 Open "jun01-1319" For Output As #19 count9 = 0 count8 = 0 xxxx=xxxx - 1 For x = 0 To xxxx Input #1, ps a4$ = Mid(ps, 4, 1) ph(3) = Val(a4$) If ph(3) = 0 Then Write #10, ps count0 = count0 + 1 End If If ph(3) = 1 Then Write #11, ps count1 = count1 + 1 End If If ph(3) = 2 Then Write #12, ps count2 = count2 + 1 End If If ph(3) = 3 Then Write #13, ps count3 = count3 + 1 End If If ph(3) = 4 Then Write #14, ps count4 = count4 + 1 End If If ph(3) = 5 Then Write #15, ps count5 = count5 + 1 End If If ph(3) = 6 Then Write #16, ps count6 = count6 + 1 End If If ph(3) = 7 Then Write #17, ps count7 = count7 + 1 End If If ph(3) = 8 Then Write #18, ps count8 = count8 + 1 End If If ph(3) = 9 Then Write #19, ps count9 = count9 + 1 End If Next x Close #1 Close #10 Close #11 Close #12 Close #13 Close #14 Close #15 Close #16 Close #17 Close #18 Close #19 Open "jun01-131c" 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
' Find homozygosity ' xxxx is count = ???? xxxx = 5000 Dim ph(18) Dim ps As String count1 = 0 count2 = 0 count3 = 0 count4 = 0 count5 = 0 count6 = 0 count7 = 0 count8 = 0 count9 = 0 Open "jun01b-g.txt" For Input As #1 Open "jun01b-hz.txt" For Output As #2 xxxx = xxxx - 1 For x = 0 To xxxx Input #1, ps a1$ = Mid(ps, 1, 1) a2$ = Mid(ps, 2, 1) ph(1) = Val(a1$) ph(2) = Val(a2$) If ph(1) = ph(2) Then count1 = count1 + 1 End If a3$ = Mid(ps, 3, 1) a4$ = Mid(ps, 4, 1) ph(3) = Val(a3$) ph(4) = Val(a4$) If ph(3) = ph(4) Then count2 = count2 + 1 End If a5$ = Mid(ps, 5, 1) a6$ = Mid(ps, 6, 1) ph(5) = Val(a5$) ph(6) = Val(a6$) If ph(5) = ph(6) Then count3 = count3 + 1 End If a7$ = Mid(ps, 7, 1) a8$ = Mid(ps, 8, 1) ph(7) = Val(a7$) ph(8) = Val(a8$) If a7$ = "A" Then ph(7) = 10 If a8$ = "A" Then ph(8) = 10 If ph(7) = ph(8) Then count4 = count4 + 1 End If a9$ = Mid(ps, 9, 1) a10$ = Mid(ps, 10, 1) ph(9) = Val(a9$) ph(10) = Val(a10$) If a9$ = "A" Then ph(9) = 10 If a10$ = "A" Then ph(10) = 10 If a9$ = "B" Then ph(9) = 11 If a10$ = "B" Then ph(10) = 11 If a9$ = "C" Then ph(9) = 12 If a10$ = "C" Then ph(10) = 12 If a9$ = "D" Then ph(9) = 13 If a10$ = "D" Then ph(10) = 13 If ph(9) = ph(10) Then count5 = count5 + 1 End If a11$ = Mid(ps, 11, 1) a12$ = Mid(ps, 12, 1) ph(11) = Val(a11$) ph(12) = Val(a12$) If ph(11) = ph(12) Then count6 = count6 + 1 End If a13$ = Mid(ps, 13, 1) a14$ = Mid(ps, 14, 1) ph(13) = Val(a13$) ph(14) = Val(a14$) If ph(13) = ph(14) Then count7 = count7 + 1 End If a15$ = Mid(ps, 15, 1) a16$ = Mid(ps, 16, 1) ph(15) = Val(a15$) ph(16) = Val(a16$) If ph(15) = ph(16) Then count8 = count8 + 1 End If a17$ = Mid(ps, 17, 1) a18$ = Mid(ps, 18, 1) ph(17) = Val(a17$) ph(18) = Val(a18$) If ph(17) = ph(18) Then count9 = count9 + 1 End If Next x countsum = count1 + count2 + count3 + count4 + count5 + count6 + count7 + count8 + count9 Write #2, "Locus 1 Homozygosity Count = ", count1, " locus 2 = ", count2, " locus 3 = ", count3, " locus 4 = ", count4, " locus 5 = ", count5, " locus 6 = ", count6, " locus 7 = ", count7, " locus 8 = ", count8, " locus 9 = ", count9, " TOTAL count = ", countsum Close #1 Close #2
The next is sorting using Word Tables/ Sort Before using ,make a test batch of numbers as there are various Sort outcomes. Now I'm using string data, Text sort gave the right form on my machine. Use Ctrl+shift+Home(or End) to highlight text up or down . After sort and before saving to disk press up or down arrow to select which way the text is returned to you. My set-up was limited to no more than 15,000. To sort say 28,000 sort upper half ,then lower half then cut and paste say 0 to 2 section of lower half into the top of the top half. Re-sort the expanded 0 to 2 section then re-sort the remainder. If say selecting 2 to 3 section then cut and paste at the juncture of 2 and 3 in the other block to save some repeated sorting. Other times it is quicker to oversort then backtrack / overlap on the next sort. Many of the subdivision files are empty because of the directing. They consist of eg 4,4.. 4,5.... etc never 4,0.., 4,1.. etc and a number of 8 and 9 sections are absent back to the generator characteristics eg only first 8 of 10 are used. When you know all files are less than 15,000, or whatever Sort limit, use the next (simply a recorded macro) to sort 10 related files. An empty file will stop the macro so edit out empty files before running.
'Sort 10 related files in one go ' Documents.Open FileName:="dec14-130", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save ' Documents.Open FileName:="dec14-131", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save ' Documents.Open FileName:="dec14-132", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save ' Documents.Open FileName:="dec14-133", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save ' Documents.Open FileName:="dec14-134", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save ' Documents.Open FileName:="dec14-135", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save ' Documents.Open FileName:="dec14-136", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save ' Documents.Open FileName:="dec14-137", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save ' Documents.Open FileName:="dec14-138", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save ' Documents.Open FileName:="dec14-139", ConfirmConversions:=False, ReadOnly _ :=False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate _ :="", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="" _ , Format:=wdOpenFormatAuto Selection.Sort ExcludeHeader:=False, FieldNumber:="Paragraphs", _ SortFieldType:=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, _ FieldNumber2:="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _ wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _ wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _ wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _ :=wdLanguageNone ActiveDocument.Save
' empty files will append spurious carriage returns at ' head or tail of files so check for this before final match routine ' otherwise use Insert / File to merge files ' merge 10 related files back to one ' for convenience I named these re-concattenated ' files as .txt so they were obvious in listing ' compared to no suffix ones ' in windows explorer the file sizes of these .txt files ' should have the same file-size as the original ' unexpanded and unsorted file ' use "Word" find for any repeated repeatedend of line "^p^p" ' Documents.Add Template:="", NewTemplate:=False Selection.InsertFile FileName:="dec14-130", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False Selection.InsertFile FileName:="dec14-131", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False Selection.InsertFile FileName:="dec14-132", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False Selection.InsertFile FileName:="dec14-133", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False Selection.InsertFile FileName:="dec14-134", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False Selection.InsertFile FileName:="dec14-135", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False Selection.InsertFile FileName:="dec14-136", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False Selection.InsertFile FileName:="dec14-137", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False Selection.InsertFile FileName:="dec14-138", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False Selection.InsertFile FileName:="dec14-139", Range:="", ConfirmConversions _ :=False, Link:=False, Attachment:=False ActiveDocument.SaveAs FileName:="dec14-13.txt", FileFormat:=wdFormatText, _ LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _ :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _ SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _ False
Copy and paste all these subfiles together to submit to the next section. The final match finding, initially for 12 digits ,then change to 14,16,18 and finally 20 if 18 shows something. This routine after hours of dividing/sorting/re-merging takes only seconds to complete.
' Find matching pairs in 12 digits ' xxxx is count = ???? xxxx = b$ = "0" Count = 0 Dim ps As String Open "dec14-24.txt" For Input As #1 Open "dec14-24m12.txt" For Output As #2 ' change the 12 in the #2 file name above and ' the Left function below to suit number of matches xxxx = xxxx - 1 For x = 0 To xxxx Input #1, ps a$ = Left(ps, 12) If a$ = b$ Then Write #2, ps Count = Count + 1 End If b$ = a$ Next x Write #2, "Count ", Count close #1 Close #2
' Find matching triples in 12 digits ' xxxx is count from the count files xxxx = b$ = "0" c$ = "0" Count = 0 Dim ps As String xxxx = xxxx - 1 Open "dec14-1.txt" For Input As #1 Open "dec14-1trip.txt" For Output As #2 ' change the 12 in the #2 file name above and ' the Left function below to suit number of matches For x = 0 To xxxx Input #1, ps a$ = Left(ps, 12) a2$ = ps If a$ = c$ Then Write #2, a2$, b2$, c2$ Count = Count + 1 End If If a$ = b$ Then c$ = b$ c2$ = b2$ End If b$ = a$ b2$ = a2$ Next x Write #2, "Count ", Count Close #1 Close #2
' Find matching quadruples in 12 digits ' xxxx is from the count files xxxx = b$ = "0" c$ = "0" Count = 0 Dim ps As String xxxx = xxxx - 1 Open "dec14-3.txt" For Input As #1 Open "dec14-3quad.txt" For Output As #2 ' change the 12 in the #2 file name above and ' the Left function below to suit number of matches For x = 0 To xxxx Input #1, ps a$ = Left(ps, 12) a2$ = ps If a$ = d$ Then Write #2, a2$, b2$, c2$, d2$ Count = Count + 1 End If If a$ = c$ Then d$ = c$ d2$ = c2$ End If If a$ = b$ Then c$ = b$ c2$ = b2$ End If b$ = a$ b2$ = a2$ Next x Write #2, "Count ", Count Close #1 Close #2
' Find matching quintuples in 12 digits ' xxxx is from the count files xxxx = b$ = "0" c$ = "0" Count = 0 Dim ps As String xxxx = xxxx - 1 Open "dec14-4.txt" For Input As #1 Open "dec14-4quin.txt" For Output As #2 ' change the 12 in the #2 file name above and ' the Left function below to suit number of matches For x = 0 To xxxx Input #1, ps a$ = Left(ps, 12) a2$ = ps If a$ = e$ Then Write #2, a2$, b2$, c2$, d2$, e2$ Count = Count + 1 End If If a$ = d$ Then e$ = d$ e2$ = d2$ End If If a$ = c$ Then d$ = c$ d2$ = c2$ End If If a$ = b$ Then c$ = b$ c2$ = b2$ End If b$ = a$ b2$ = a2$ Next x Write #2, "Count ", Count Close #1 Close #2
' Find homozygosity ' xxxx is count = ???? xxxx = 5000 Dim ph(18) Dim ps As String count1 = 0 count2 = 0 count3 = 0 count4 = 0 count5 = 0 count6 = 0 count7 = 0 count8 = 0 count9 = 0 Open "jun01b-g.txt" For Input As #1 Open "jun01b-hz.txt" For Output As #2 xxxx = xxxx - 1 For x = 0 To xxxx Input #1, ps a1$ = Mid(ps, 1, 1) a2$ = Mid(ps, 2, 1) ph(1) = Val(a1$) ph(2) = Val(a2$) If ph(1) = ph(2) Then count1 = count1 + 1 End If a3$ = Mid(ps, 3, 1) a4$ = Mid(ps, 4, 1) ph(3) = Val(a3$) ph(4) = Val(a4$) If ph(3) = ph(4) Then count2 = count2 + 1 End If a5$ = Mid(ps, 5, 1) a6$ = Mid(ps, 6, 1) ph(5) = Val(a5$) ph(6) = Val(a6$) If ph(5) = ph(6) Then count3 = count3 + 1 End If a7$ = Mid(ps, 7, 1) a8$ = Mid(ps, 8, 1) ph(7) = Val(a7$) ph(8) = Val(a8$) If a7$ = "A" Then ph(7) = 10 If a8$ = "A" Then ph(8) = 10 If ph(7) = ph(8) Then count4 = count4 + 1 End If a9$ = Mid(ps, 9, 1) a10$ = Mid(ps, 10, 1) ph(9) = Val(a9$) ph(10) = Val(a10$) If a9$ = "A" Then ph(9) = 10 If a10$ = "A" Then ph(10) = 10 If a9$ = "B" Then ph(9) = 11 If a10$ = "B" Then ph(10) = 11 If a9$ = "C" Then ph(9) = 12 If a10$ = "C" Then ph(10) = 12 If a9$ = "D" Then ph(9) = 13 If a10$ = "D" Then ph(10) = 13 If ph(9) = ph(10) Then count5 = count5 + 1 End If a11$ = Mid(ps, 11, 1) a12$ = Mid(ps, 12, 1) ph(11) = Val(a11$) ph(12) = Val(a12$) If ph(11) = ph(12) Then count6 = count6 + 1 End If a13$ = Mid(ps, 13, 1) a14$ = Mid(ps, 14, 1) ph(13) = Val(a13$) ph(14) = Val(a14$) If ph(13) = ph(14) Then count7 = count7 + 1 End If a15$ = Mid(ps, 15, 1) a16$ = Mid(ps, 16, 1) ph(15) = Val(a15$) ph(16) = Val(a16$) If ph(15) = ph(16) Then count8 = count8 + 1 End If a17$ = Mid(ps, 17, 1) a18$ = Mid(ps, 18, 1) ph(17) = Val(a17$) ph(18) = Val(a18$) If ph(17) = ph(18) Then count9 = count9 + 1 End If Next x countsum = count1 + count2 + count3 + count4 + count5 + count6 + count7 + count8 + count9 Write #2, "Locus 1 Homozygosity Count = ", count1, " locus 2 = ", count2, " locus 3 = ", count3, " locus 4 = ", count4, " locus 5 = ", count5, " locus 6 = ", count6, " locus 7 = ", count7, " locus 8 = ", count8, " locus 9 = ", count9, " TOTAL count = ", countsum Close #1 Close #2
' Add homozygosity ' xxxx is count = ???? xxxx = 5000 Dim ph(18) Dim ps As String Open "jun01b-g.txt" For Input As #1 Open "jun01b-g-added-hz.txt" For Output As #2 xxxx = xxxx - 1 For x = 0 To xxxx Input #1, ps a1$ = Mid(ps, 1, 1) a2$ = Mid(ps, 2, 1) a3$ = Mid(ps, 3, 1) a4$ = Mid(ps, 4, 1) a5$ = Mid(ps, 5, 1) a6$ = Mid(ps, 6, 1) a7$ = Mid(ps, 7, 1) a8$ = Mid(ps, 8, 1) a9$ = Mid(ps, 9, 1) a10$ = Mid(ps, 10, 1) a11$ = Mid(ps, 11, 1) a12$ = Mid(ps, 12, 1) a13$ = Mid(ps, 13, 1) a14$ = Mid(ps, 14, 1) a15$ = Mid(ps, 15, 1) a16$ = Mid(ps, 16, 1) a17$ = Mid(ps, 17, 1) a18$ = Mid(ps, 18, 1) ph(0) = a1$ ph(1) = a2$ ph(2) = a3$ ph(3) = a4$ ph(4) = a5$ ph(5) = a6$ ph(6) = a7$ ph(7) = a8$ ph(8) = a9$ ph(9) = a10$ ph(10) = a11$ ph(11) = a12$ ph(12) = a13$ ph(13) = a14$ ph(14) = a15$ ph(15) = a16$ ph(16) = a17$ ph(17) = a18$ rng = 18 * Rnd If 0 <= rng And rng < 1 Then Write #2, ph(0) & ph(0) & 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) End If If 1 <= rng And rng < 2 Then Write #2, ph(0) & ph(1) & ph(2) & ph(2) & 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) End If If 2 <= rng And rng < 3 Then Write #2, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(4) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) End If If 3 <= rng And rng < 4 Then Write #2, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(6) & ph(8) & ph(9) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) End If If 4 <= rng And rng < 5 Then Write #2, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(8) & ph(10) & ph(11) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) End If If 5 <= rng And rng < 6 Then Write #2, ph(0) & ph(1) & ph(2) & ph(3) & ph(4) & ph(5) & ph(6) & ph(7) & ph(8) & ph(9) & ph(10) & ph(10) & ph(12) & ph(13) & ph(14) & ph(15) & ph(16) & ph(17) End If If 6 <= rng And rng < 7 Then Write #2, 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(12) & ph(14) & ph(15) & ph(16) & ph(17) End If If 7 <= rng And rng < 8 Then Write #2, 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(14) & ph(16) & ph(17) End If If 8 <= rng And rng < 9 Then Write #2, 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(16) End If If 9 <= rng And rng < 18 Then Write #2, 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) End If Next x Close #1 Close #2
J. Forensic Sc, Jan 2003,V 48, No 1 FSI, 115 (2001) 111-112 FSI, 119 (2001) 113-115 Basque data: all samples were from people who had gparents with Basque birth-surnames and born in the Basque country. The Basque data compared to South Spain data for the 3 principal alleles at each locus , summing allele frequencies showed following percentages Locus Spain Basque D3 67 73 FGA 50 50 D5 89 85 D13 73 79 D7 68 70 D21 54 63 D18 44 51 D16 79 81 Results for simulating 9 loci,18 datapoint for the Basques data giving 1 million profiles Pairs of matches in first 12 digit - 11,100 14 digit - 1,004 16 digit - 76 18 digit - 9 distinct pairs all cross-checked back to the undirected generator file and nothing wrong with the random generator. This square law equates with a baseline figue of about 1 in 320,000. Triples 12 dig - 527 14 dig - 10 16 dig - 0 Quads 12 dig - 37 14 - 1 Quins 12 dig - 4 14 dig - 0 I only added homozygosity ot the subest 3........ which had 422,260 profiles and in the original sorted file and had 2 separate 9 locus matched pairs 8 'locus' - 9 pairs 7 'locus' - 94 pairs 6 'locus' - 1,135 pairs At the moment I've added HZ randomly across all loci and alleles. If the random 'adder' fell on a HZ pair then no change. Originally 83,816 profiles 33.... increased to 102,641 profiles 33..... [ some 34.... , 35... etc became 33.... , the altered allele always taking the value of the first ] After randomly adding in 22.8 per cent excess homozygosity these results emerged 9 locus - 1 match 8 locus - 9 7 locus - 135 6 locus - 1,520 For triplet matches in both 3..... subsets Original , 12 dig - 4, 14 dig - 0 Added HZ, 12 dig - 65, 14 dig - 1 All very odd Checking the 9 locus matches . The one with added HZ was a new pair. One each of the previous pair had one locus changed in each so destroyed the original matches. I cannot find any errors in processing and assume this was just one of those statistical hickups. Hopefully if I process the remaining non-3 profiles a different picture will emerge. Intuitively I would have thought it made a lot off difference. Although 9 matches in each of the 8 locus cases , only 4 of these 9 were the same in both sets I only noticed yesterday that there was in fact homozygosity figures in the highly autochthonous Basques profile table. It is in terms of heterozygosity which is 1 - homoZ and is not as stark as I would have thought. D13 excess HZ 16.4% FGA +15.2% D5 -11.2% (observed is 11.2% less than expected) D13 +4.6% D7 -6.0% (less) D8 +20.3% D21 -0.7% (less) D18 +9.0% D16 -2.1% (less) I found my mislaid Australian data FSI,129 (2002) p90-98 If anything the Australian Capital Territory/ Caucasian data is more peaked in the modal groups of the 8 common with the Basques set. The Basques D16 is more peaked than the vWA Oz data for the 9th locus. So overall I would expect with a full simulation with no adjustments for excess HZ or dropped rare alleles then the baseline for Australian Caucasian on NIFS 9 loci would be a bit less than 320,000 for one match

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 recenently 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