Browse Source

alpha version

cjs3
Stephen Lorenz 3 years ago
parent
commit
fe87c7cb7a
  1. 4
      bin/efm.R
  2. 153
      cjs/cjs/automate.py
  3. 1
      cjs/cjs/convert.py
  4. 37
      cjs/cjs/core/batch.py
  5. 1
      cjs/cjs/core/interface.py
  6. 11
      cjs/cjs/database.py
  7. 0
      cjs/cjs/graphs.py
  8. 8
      cjs/cjs/main.py
  9. 0
      cjs/cjs/reqbt.py
  10. 66
      tools/convert_population_frequency.py
  11. 1193
      tools/fst-population_frequency.csv
  12. BIN
      tools/ocme_population_frequencies_efm.zip
  13. 81
      tools/ocme_population_frequencies_efm/Identifiler_Asian.csv
  14. 81
      tools/ocme_population_frequencies_efm/Identifiler_Black.csv
  15. 81
      tools/ocme_population_frequencies_efm/Identifiler_Caucasian.csv
  16. 81
      tools/ocme_population_frequencies_efm/Identifiler_Hispanic.csv

4
bin/efm.R

@ -103,7 +103,7 @@ workingDir = testFile$working_dir # cjs: stephen
setwd(workingDir) # cjs: stephen
#get popfreq file:
databaseFile = paste0(testFile$resource_dir, "/", settings$databaseFile) # opt$database # cjs: stephen
databaseFile = paste0(testFile$resource_dir, "/", "Identifiler_", testFile$population, ".csv") # opt$database # cjs: stephen
#The allele frequency file
popFreq <- readFreq(databaseFile) #import population freqs
#names(popFreq) #loci to consider
@ -140,7 +140,7 @@ if(dropin) {
#Outfile to store results
setup <- paste0("T",threshT,"_fst",fst,"_pC",pC,"_C",nC)
outf <- paste0("output/", testFile$batch_dir, "/qualitative_", testFile$test_name,".csv") # cjs: stephen
outf <- paste0(testFile$output_dir, "/qualitative_", testFile$test_name, ".csv") # cjs: stephen
cn=c("EvidFile","POI","log10LR")
out = matrix(nrow=0,ncol=length(cn))

153
cjs/cjs/automate.py

@ -15,12 +15,16 @@ from utils.io import write_csv
from utils.io import read_json
from utils.io import write_json
import utils.fs
from utils.fs import create_dir
# TODO: implement a better way of handling PKG_dir
# NOTE: see __init__ for PKG_DIR
from . import PKG_DIR
from .core.batch import generic_worker
from .core.batch import spawn_workers
from .core.batch import spawn_foreman
from .core.batch import run_process
from .core.batch import AutomateState
@ -45,7 +49,7 @@ from .fmt.efm import reqbt_to_settings
file_okay=False,
resolve_path=True
),
default=PKG_DIR/'.resources', # NOTE: see __init__ for PKG_DIR
default=PKG_DIR/'../data', # NOTE: see __init__ for PKG_DIR
show_default=True,
help='Set the working directory.')
@click.option(
@ -61,13 +65,18 @@ from .fmt.efm import reqbt_to_settings
def cli(ctx, num_workers, resource_dir, bin_dir):
'''Bulk test systems.'''
address = ctx.obj['address']
port = ctx.obj['port']
# add additional arguments and options to click's context object
# NOTE: this may be inefficient, but increases readability
ctx.obj = {
**ctx.obj, # include previous key: value pairs
'num_workers': num_workers,
'resource_dir': resource_dir,
'bin_dir': bin_dir
'bin_dir': bin_dir,
# initialize an AutomateInterface object to communicate with
# the cjs daemon at the given address:port
'interface': AutomateInterface(address, port)
}
# Main-entry point to the EuroForMix subcommand
@ -78,25 +87,19 @@ def efm(ctx, database_name):
'''Run multisampleUsage.R.\f'''
# unpack the click context object
# cjs daemon variables
address = ctx.obj['address']
port = ctx.obj['port']
database = ctx.obj['database']
# cjs state variables
working_dir = ctx.obj['working_dir']
resource_dir = ctx.obj['resource_dir']
bin_dir = ctx.obj['bin_dir']
# cjsd variables
interface = ctx.obj['interface']
# cjs worker variables
num_workers = ctx.obj['num_workers']
# initialize an AutomateInterface object to communicate with
# the cjs daemon at the given address:port
server = AutomateInterface(address, port)
# obtain the latest batch name from the cjs daemon
batch = server.current_batch(database)
batch = interface.current_batch(database_name)
batch = batch['name']
# resolve the input and output directory paths
# ensure input and output directories exist
@ -109,56 +112,33 @@ def efm(ctx, database_name):
# initialize an AutomateState object to share information among
# the worker threads and the 'foreman' thread
state = AutomateState(
working_dir,
input_dir, # where input files will be stored
output_dir, # where result files will be stored
resource_dir, # where pg software settings files are stored
bin_dir,
num_workers # max size of queue == number of threads
)
# begin worker threads
# they will initially wait for the job queue to fill up
spawn_workers(efm_qualitative, state, num_workers)
thread_list = spawn_workers(
efm_qualitative,
state,
num_workers
)
# initialize 'foreman' or supervisor thread
# the foreman the status and progress of the workers
# it communicates this information with the CJS host
fss = FileSystemScanner()
obs = Observer()
obs.schedule(fss, path=output_dir)
obs.start()
while True:
# get and add job queue
resp = rest_post('%s/automate/next_job' % host, {'database': name})
job = json.loads(resp.content.decode('utf-8'))
# add job to queue
state.input_queue.put(job)
# update job status
try:
while True:
status = state.output_queue.get(block=False)
print(status)
state.output_queue.task_done()
except queue.Empty as e:
print('Foreman: output_queue is empty. Moving on...')
# upload result file
try:
while True:
file_ = fss.pending_files.get(block=False)
print(file_)
fss.pending_files.task_done()
except queue.Empty as e:
print('Foreman: pending_file is empty. Moving on...')
# stop watching the output directory
obs.stop()
spawn_foreman(state, interface, database_name, output_dir)
# stop workers
for i in range(num_threads):
# TODO: implement SIGINT handler
for i in range(num_workers):
state.input_queue.put(None)
for t in threads:
t.join()
for thread in thread_list:
thread.join()
# TODO: find a better way around passing profile - possibly object decorator?
@generic_worker
@ -185,42 +165,51 @@ def efm_qualitative(state, job):
write_csv(evidence_file, evidence_tsv, delimiter='\t')
write_csv(comparison_file, comparison_csv, delimiter=',')
test_settings = {
'working_dir': state.working_dir,
'resource_dir': state.resource_dir,
'evidence_file': evidence_file,
'comparison_file': comparison_file,
**reqbt_to_settings(
evidence_data,
comparison_data
for ethnicity in ['Asian', 'Black', 'Caucasian', 'Hispanic']:
test_settings = {
'working_dir': state.working_dir,
'output_dir': state.output_dir,
'resource_dir': state.resource_dir,
'evidence_file': evidence_file,
'comparison_file': comparison_file,
'population': ethnicity,
**reqbt_to_settings(
evidence_data,
comparison_data
)
}
# determine test filename
test_file = '%s/%s-%s-%s.json' % (
state.input_dir,
evidence_data['name'],
comparison_data['name'],
ethnicity
)
}
# determine test filename
test_file = '%s/%s-%s.json' % (
state.output_dir,
evidence_data['name'],
comparison_data['name']
)
# write settings file to tmp
write_json(test_file, test_settings)
click.echo('* Starting %s and %s' % (evidence_data['name'], comparison_data['name']))
try:
# initialize start time to calculate the average runtime
start_time = time.time()
euroformix_bin = '%s/efm.R' % state.bin_dir
# run euroformix in a separate process and wait for it to finish
run_process([euroformix_bin, test_file])
end_time = time.time()
elapsed = end_time-start_time
except subprocess.CalledProcessError as e:
print(e.stderr)
except Exception as e:
raise
# write settings file to tmp
write_json(test_file, test_settings)
click.echo('* Starting %s and %s (%s)' % (
evidence_data['name'],
comparison_data['name'],
ethnicity
)
)
try:
# initialize start time to calculate the average runtime
start_time = time.time()
euroformix_bin = '%s/efm.R' % state.bin_dir
# run euroformix in a separate process and wait for it to finish
run_process([euroformix_bin, test_file])
end_time = time.time()
elapsed = end_time-start_time
except subprocess.CalledProcessError as e:
print(e.stderr)
except Exception as e:
raise

1
cjs/cjs/convert.py

@ -38,6 +38,7 @@ jfs2003id_loci = [
@click.group()
@click.pass_context
def convert(ctx):
'''Transcribe different system formats.'''
pass
@convert.command()

37
cjs/cjs/core/batch.py

@ -45,7 +45,8 @@ def send_error(subject, message):
subject, message)
class AutomateState:
def __init__(self, input_dir, output_dir, resource_dir, bin_dir, queue_size):
def __init__(self, working_dir, input_dir, output_dir, resource_dir, bin_dir, queue_size):
self.working_dir = working_dir
# pg software inputs
self.input_dir = input_dir
# results files
@ -110,5 +111,35 @@ def spawn_workers(target_func, State, num_workers, *args, **kwargs):
return thread_list
def spawn_foreman(State):
pass
def spawn_foreman(state, interface, database, scan_dir):
import time
fss = FileSystemScanner()
obs = Observer()
obs.schedule(fss, path=scan_dir)
obs.start()
while True:
# get and add job queue
if not state.input_queue.full():
job = interface.next_job(database)
print('Foreman: Received %s and %s' % (job['evidence']['name'], job['comparison']['name']))
state.input_queue.put(job)
# update job status
try:
while True:
status = state.output_queue.get(block=False)
state.output_queue.task_done()
except queue.Empty as e:
pass
# upload result file
try:
while True:
file_ = fss.pending_files.get(block=False)
print('Foreman: Sending %s to cjsd' % file_)
fss.pending_files.task_done()
except queue.Empty as e:
pass
# stop watching the output directory
obs.stop()

1
cjs/cjs/core/interface.py

@ -33,7 +33,6 @@ class WebInterface:
except Exception as e:
raise
content = response.content.decode('utf-8')
print(content)
if content:
data = json.loads(content)
return data

11
cjs/cjs/database.py

@ -28,10 +28,7 @@ def cli(ctx):
ctx.obj = {
**ctx.obj,
'interface': DatabaseInterface(
address,
port
)
'interface': DatabaseInterface(address, port)
}
@cli.command()
@ -119,11 +116,7 @@ def upload(ctx, database_name, input_file):
type_ = value['type']
with click.progressbar(value['data']) as bar:
for data in bar:
interface.upload(
database_name,
type_,
data
)
interface.upload(database_name, type_, data)

0
cjsd/cjsd/graphs.py → cjs/cjs/graphs.py

8
cjs/cjs/main.py

@ -8,6 +8,9 @@ import click
# TODO: implement a plugin manager for simplicity's sake
from . import database
from . import automate
from . import convert
from . import graphs
from . import reqbt
# main-entry point to the entire command-line interface
@click.group()
@ -57,7 +60,10 @@ def cli(ctx, address, port, working_dir):
COMMAND_LIST = [
database.cli,
automate.cli
automate.cli,
convert.convert,
graphs.graphs,
reqbt.reqbt
]
# register each module's click group in the COMMAND_LIST

0
cjsd/cjsd/reqbt.py → cjs/cjs/reqbt.py

66
tools/convert_population_frequency.py

@ -0,0 +1,66 @@
#!/usr/bin/env python3
import csv
from pprint import pprint
population_file = 'fst-population_frequency.csv'
population_data = {
'Asian': {},
'Black': {},
'Caucasian': {},
'Hispanic': {}
}
# a list of each locus seen in the dump file
loci_list = []
def cast_int_or_float(str_):
try:
return int(str_)
except ValueError:
try:
return float(str_)
except Exception:
raise
with open(population_file, 'r') as fh:
reader = csv.DictReader(fh)
for row in reader:
# unpack row into variables
ethnicity = row['Ethnicity']
locus = row['Locus']
allele = cast_int_or_float(row['Allele desig.'])
frequency = cast_int_or_float(row['freq'])
# alias the dictionary to a shorthand variable
data = population_data[ethnicity]
# check if it is an unseen allele and init a dict if so
# before we try to add the locus and frequency pair
if allele not in data:
data[allele] = {}
data[allele][locus] = frequency
if locus not in loci_list:
loci_list.append(locus)
for ethnicity, data in population_data.items():
# use a list to keep ordered output, dict will mess it up
output_list = [['Allele', *loci_list]]
print(ethnicity)
for allele, loci_data in sorted(data.items(), key=lambda item: item[0]):
tmp_list = [str(allele)]
for locus in loci_list:
try:
frequency = str(loci_data[locus])
tmp_list.append(frequency)
except KeyError:
tmp_list.append('')
output_list.append(tmp_list)
with open('Identifiler_%s.csv' % ethnicity, 'w') as fh:
writer = csv.writer(fh)
writer.writerows(output_list)

1193
tools/fst-population_frequency.csv
File diff suppressed because it is too large
View File

BIN
tools/ocme_population_frequencies_efm.zip

81
tools/ocme_population_frequencies_efm/Identifiler_Asian.csv

@ -0,0 +1,81 @@
Allele,CSF1PO,D13S317,D16S539,D18S51,D19S433,D21S11,D2S1338,D3S1358,D5S818,D7S820,D8S1179,FGA,Penta D,Penta E,TH01,TPOX,vWA
0,0.02,0.02,0.02,0.02,0.007,0.02,0.007,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02,0.02
2.2,,,,,,,,,,,,,0.016,,,,
3.2,,,,,,,,,,,,,0.016,,,,
4,,,,,,,,,,,,,,,0.016,,
5,,0.016,0.016,,,,,,,,,,0.016,0.04,0.016,,
6,0.016,0.016,0.016,,,,,,,0.016,,,0.016,0.016,0.11,0.016,
6.3,,,,,,,,,,0.016,,,,,,,
7,0.016,0.016,0.016,0.016,,,,,0.039,0.016,,,0.016,0.028,0.271,0.016,
8,0.016,0.284,0.016,,,,,,0.016,0.152,0.016,,0.053,0.016,0.061,0.513,
8.3,,,,,,,,,,,,,,,0.016,,
9,0.065,0.126,0.245,0.016,0.016,,,0.016,0.084,0.068,0.016,,0.357,0.016,0.465,0.165,
9.2,,,,,,,,,,0.016,,,,,,,
9.3,,,,,,,,,,,,,0.016,,0.045,,
10,0.229,0.184,0.142,0.016,0.016,,,0.016,0.213,0.155,0.087,,0.171,0.031,0.048,0.032,0.016
10.2,,,,0.016,0.016,,,,,,,,,,,,
11,0.258,0.216,0.268,0.016,0.016,,,0.016,0.297,0.368,0.152,,0.087,0.124,0.016,0.274,0.016
11.2,,,,,0.016,,,,,,,,0.016,,,,
12,0.342,0.139,0.21,0.058,0.026,,,0.016,0.248,0.197,0.139,,0.134,0.112,,0.016,0.016
12.2,,,,,0.016,,,,,,,,,,,,
13,0.081,0.039,0.106,0.171,0.245,,,0.016,0.103,0.042,0.19,,0.106,0.062,,0.016,0.016
13.2,,,,0.016,0.048,,,,,,,,0.016,0.016,,,
13.3,,,,,,,,,,,,,,,0.016,,
14,0.016,0.016,0.019,0.184,0.277,,,0.035,0.016,0.016,0.181,,0.071,0.068,,,0.239
14.2,,,,0.016,0.077,,,,,,,,,,,,
15,0.016,0.016,0.016,0.152,0.068,,0.016,0.348,0.016,0.016,0.184,,0.016,0.109,,,0.035
15.2,,,,0.016,0.155,,,0.016,,,,0.016,,,,,0.016
16,,,,0.145,0.026,,0.019,0.361,0.016,,0.061,0.016,0.016,0.109,,,0.168
16.2,,,,,0.048,,,,,,,0.016,,,,,
17,,,,0.087,0.016,,0.055,0.203,,,0.016,0.016,0.016,0.096,,,0.252
17.2,,,,,0.016,,,,,,,0.016,,,,,
18,,,,0.045,,,0.119,0.045,,,0.016,0.042,,0.047,,,0.158
18.2,,,,,0.016,,,,,,,0.016,,,,,
19,,,,0.052,,,0.21,0.016,,,0.016,0.058,,0.081,,,0.11
19.2,,,,,,,,,,,,0.016,,,,,
20,,,,0.035,,,0.11,0.016,,,,0.052,,0.034,,,0.023
20.2,,,,,,,,,,,,0.016,,,,,
20.3,,,,,,,,,,,,,,0.016,,,
21,,,,0.016,,,0.039,,,,,0.119,,0.025,,,0.016
21.2,,,,,,,,,,,,0.016,,,,,
22,,,,0.029,,,0.052,,,,,0.152,,0.016,,,0.016
22.2,,,,,,,,,,,,0.016,,,,,
23,,,,0.016,,,0.194,,,,,0.219,,0.016,,,0.016
23.2,,,,,,0.016,,,,,,0.016,,,,,
24,,,,0.016,,0.016,0.135,,,,,0.19,,0.016,,,0.016
24.2,,,,,,0.016,,,,,,0.016,,,,,
25,,,,0.016,,0.016,0.055,,,,,0.058,,0.016,,,
25.2,,,,,,,,,,,,0.016,,,,,
26,,,,0.016,,0.016,0.016,,,,,0.035,,,,,
26.2,,,,,,,,,,,,0.016,,,,,
27,,,,,,0.016,0.016,,,,,0.016,,,,,
27.2,,,,,,,,,,,,0.016,,,,,
28,,,,,,0.045,0.016,,,,,0.016,,,,,
28.2,,,,,,0.016,,,,,,0.016,,,,,
29,,,,,,0.268,,,,,,0.016,,,,,
29.2,,,,,,0.016,,,,,,0.016,,,,,
30,,,,,,0.252,,,,,,0.016,,,,,
30.2,,,,,,0.016,,,,,,0.016,,,,,
31,,,,,,0.097,,,,,,0.016,,,,,
31.2,,,,,,0.094,,,,,,0.016,,,,,
32,,,,,,0.029,,,,,,,,,,,
32.2,,,,,,0.158,,,,,,0.016,,,,,
33,,,,,,0.016,,,,,,,,,,,
33.1,,,,,,0.016,,,,,,,,,,,
33.2,,,,,,0.035,,,,,,0.016,,,,,
34,,,,,,0.016,,,,,,,,,,,
34.2,,,,,,0.016,,,,,,0.016,,,,,
35,,,,,,0.016,,,,,,,,,,,
35.2,,,,,,0.016,,,,,,,,,,,
36,,,,,,0.016,,,,,,,,,,,
37,,,,,,0.016,,,,,,,,,,,
38,,,,,,0.016,,,,,,,,,,,
42.2,,,,,,,,,,,,0.016,,,,,
43.2,,,,,,,,,,,,0.016,,,,,
44.2,,,,,,,,,,,,0.016,,,,,
45.2,,,,,,,,,,,,0.016,,,,,
46.2,,,,,,,,,,,,0.016,,,,,
47.2,,,,,,,,,,,,0.016,,,,,
48.2,,,,,,,,,,,,0.016,,,,,
50.2,,,,,,,,,,,,0.016,,,,,
51.2,,,,,,,,,,,,0.016,,,,,

81
tools/ocme_population_frequencies_efm/Identifiler_Black.csv

@ -0,0 +1,81 @@
Allele,CSF1PO,D13S317,D16S539,D18S51,D19S433,D21S11,D2S1338,D3S1358,D5S818,D7S820,D8S1179,FGA,Penta D,Penta E,TH01,TPOX,vWA
0,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016,0.016
2.2,,,,,,,,,,,,,0.122,,,,
3.2,,,,,,,,,,,,,0.018,,,,
4,,,,,,,,,,,,,,,0.02,,
5,,0.02,0.02,,,,,,,,,,0.047,0.14,0.02,,
6,0.02,0.02,0.02,,,,,,,0.02,,,0.018,0.018,0.108,0.044,
6.3,,,,,,,,,,0.02,,,,,,,
7,0.056,0.02,0.02,0.02,,,,,0.02,0.02,,,0.022,0.133,0.408,0.02,
8,0.072,0.02,0.02,,,,,,0.06,0.172,0.02,,0.147,0.14,0.248,0.324,
8.3,,,,,,,,,,,,,,,0.02,,
9,0.024,0.032,0.196,0.02,0.007,,,0.02,0.02,0.132,0.02,,0.14,0.054,0.136,0.212,
9.2,,,,,,,,,,0.02,,,,,,,
9.3,,,,,,,,,,,,,0.018,,0.092,,
10,0.292,0.02,0.108,0.02,0.015,,,0.02,0.068,0.34,0.02,,0.101,0.05,0.02,0.104,0.02
10.2,,,,0.02,0.007,,,,,,,,,,,,
11,0.216,0.364,0.288,0.02,0.071,,,0.02,0.252,0.204,0.032,,0.169,0.05,0.02,0.28,0.02
11.2,,,,,0.007,,,,,,,,0.018,,,,
12,0.288,0.376,0.22,0.064,0.108,,,0.02,0.344,0.116,0.116,,0.108,0.122,,0.02,0.02
12.2,,,,,0.063,,,,,,,,,,,,
13,0.032,0.144,0.152,0.056,0.298,,,0.02,0.236,0.024,0.148,,0.104,0.126,,0.02,0.028
13.2,,,,0.02,0.057,,,,,,,,0.018,0.018,,,
13.3,,,,,,,,,,,,,,,0.02,,
14,0.02,0.044,0.02,0.084,0.21,,,0.068,0.02,0.02,0.384,,0.018,0.05,,,0.06
14.2,,,,0.02,0.042,,,,,,,,,,,,
15,0.02,0.02,0.02,0.204,0.048,,0.007,0.312,0.02,0.02,0.216,,0.018,0.04,,,0.212
15.2,,,,0.02,0.034,,,0.02,,,,0.02,,,,,0.02
16,,,,0.16,0.024,,0.053,0.292,0.02,,0.064,0.02,0.018,0.047,,,0.264
16.2,,,,,0.024,,,,,,,0.02,,,,,
17,,,,0.148,0.007,,0.108,0.24,,,0.02,0.02,0.018,0.032,,,0.228
17.2,,,,,0.007,,,,,,,0.02,,,,,
18,,,,0.12,,,0.056,0.064,,,0.02,0.02,,0.018,,,0.096
18.2,,,,,0.007,,,,,,,0.02,,,,,
19,,,,0.068,,,0.142,0.02,,,0.02,0.076,,0.018,,,0.072
19.2,,,,,,,,,,,,0.02,,,,,
20,,,,0.048,,,0.06,0.02,,,,0.044,,0.018,,,0.02
20.2,,,,,,,,,,,,0.02,,,,,
20.3,,,,,,,,,,,,,,0.018,,,
21,,,,0.02,,,0.14,,,,,0.136,,0.018,,,0.02
21.2,,,,,,,,,,,,0.02,,,,,
22,,,,0.02,,,0.132,,,,,0.196,,0.018,,,0.02
22.2,,,,,,,,,,,,0.02,,,,,
23,,,,0.02,,,0.108,,,,,0.172,,0.018,,,0.02
23.2,,,,,,0.02,,,,,,0.02,,,,,
24,,,,0.02,,0.02,0.098,,,,,0.144,,0.018,,,0.02
24.2,,,,,,0.02,,,,,,0.02,,,,,
25,,,,0.02,,0.02,0.081,,,,,0.096,,0.018,,,
25.2,,,,,,,,,,,,0.02,,,,,
26,,,,0.02,,0.02,0.02,,,,,0.052,,,,,
26.2,,,,,,,,,,,,0.02,,,,,
27,,,,,,0.068,0.007,,,,,0.02,,,,,
27.2,,,,,,,,,,,,0.02,,,,,
28,,,,,,0.256,0.007,,,,,0.02,,,,,
28.2,,,,,,0.02,,,,,,0.02,,,,,
29,,,,,,0.16,,,,,,0.02,,,,,
29.2,,,,,,0.02,,,,,,0.02,,,,,
30,,,,,,0.18,,,,,,0.02,,,,,
30.2,,,,,,0.028,,,,,,0.02,,,,,
31,,,,,,0.112,,,,,,0.02,,,,,
31.2,,,,,,0.032,,,,,,0.02,,,,,
32,,,,,,0.02,,,,,,,,,,,
32.2,,,,,,0.064,,,,,,0.02,,,,,
33,,,,,,0.02,,,,,,,,,,,
33.1,,,,,,0.02,,,,,,,,,,,
33.2,,,,,,0.02,,,,,,0.02,,,,,
34,,,,,,0.02,,,,,,,,,,,
34.2,,,,,,0.02,,,,,,0.02,,,,,
35,,,,,,0.024,,,,,,,,,,,
35.2,,,,,,0.02,,,,,,,,,,,
36,,,,,,0.02,,,,,,,,,,,
37,,,,,,0.02,,,,,,,,,,,
38,,,,,,0.02,,,,,,,,,,,
42.2,,,,,,,,,,,,0.02,,,,,
43.2,,,,,,,,,,,,0.02,,,,,
44.2,,,,,,,,,,,,0.02,,,,,
45.2,,,,,,,,,,,,0.02,,,,,
46.2,,,,,,,,,,,,0.02,,,,,
47.2,,,,,,,,,,,,0.02,,,,,
48.2,,,,,,,,,,,,0.02,,,,,
50.2,,,,,,,,,,,,0.02,,,,,
51.2,,,,,,,,,,,,0.02,,,,,

81
tools/ocme_population_frequencies_efm/Identifiler_Caucasian.csv

@ -0,0 +1,81 @@
Allele,CSF1PO,D13S317,D16S539,D18S51,D19S433,D21S11,D2S1338,D3S1358,D5S818,D7S820,D8S1179,FGA,Penta D,Penta E,TH01,TPOX,vWA
0,0.017,0.017,0.017,0.017,0.009,0.017,0.009,0.017,0.017,0.017,0.017,0.017,0.017,0.017,0.017,0.017,0.017
2.2,,,,,,,,,,,,,0.015,,,,
3.2,,,,,,,,,,,,,0.015,,,,
4,,,,,,,,,,,,,,,0.021,,
5,,0.021,0.021,,,,,,,,,,0.015,0.067,0.021,,
6,0.021,0.021,0.021,,,,,,,0.021,,,0.015,0.015,0.231,0.021,
6.3,,,,,,,,,,0.021,,,,,,,
7,0.021,0.021,0.021,0.021,,,,,0.021,0.025,,,0.015,0.174,0.161,0.021,
8,0.021,0.161,0.021,,,,,,0.021,0.132,0.021,,0.015,0.015,0.124,0.624,
8.3,,,,,,,,,,,,,,,0.021,,
9,0.033,0.095,0.099,0.021,0.007,,,0.021,0.029,0.112,0.021,,0.172,0.015,0.19,0.12,
9.2,,,,,,,,,,0.021,,,,,,,
9.3,,,,,,,,,,,,,0.015,,0.285,,
10,0.264,0.021,0.062,0.021,0.007,,,0.021,0.079,0.281,0.079,,0.116,0.093,0.021,0.037,0.021
10.2,,,,0.021,0.007,,,,,,,,,,,,
11,0.331,0.273,0.298,0.025,0.007,,,0.021,0.281,0.269,0.07,,0.148,0.102,0.021,0.174,0.021
11.2,,,,,0.007,,,,,,,,0.015,,,,
12,0.277,0.326,0.351,0.12,0.077,,,0.021,0.351,0.14,0.116,,0.238,0.209,,0.037,0.021
12.2,,,,,0.007,,,,,,,,,,,,
13,0.066,0.091,0.14,0.128,0.289,,,0.021,0.236,0.033,0.289,,0.209,0.096,,0.021,0.021
13.2,,,,0.021,0.017,,,,,,,,0.015,0.015,,,
13.3,,,,,,,,,,,,,,,0.021,,
14,0.021,0.033,0.029,0.207,0.341,,,0.132,0.021,0.021,0.252,,0.055,0.061,,,0.103
14.2,,,,0.021,0.009,,,,,,,,,,,,
15,0.021,0.021,0.021,0.157,0.158,,0.007,0.24,0.021,0.021,0.132,,0.026,0.038,,,0.124
15.2,,,,0.021,0.027,,,0.021,,,,0.021,,,,,0.021
16,,,,0.116,0.042,,0.047,0.236,0.021,,0.033,0.021,0.015,0.049,,,0.182
16.2,,,,,0.017,,,,,,,0.021,,,,,
17,,,,0.116,0.007,,0.173,0.273,,,0.021,0.021,0.015,0.049,,,0.277
17.2,,,,,0.007,,,,,,,0.021,,,,,
18,,,,0.087,,,0.063,0.095,,,0.021,0.021,,0.017,,,0.198
18.2,,,,,0.007,,,,,,,0.021,,,,,
19,,,,0.021,,,0.138,0.021,,,0.021,0.099,,0.015,,,0.095
19.2,,,,,,,,,,,,0.021,,,,,
20,,,,0.021,,,0.146,0.021,,,,0.116,,0.015,,,0.021
20.2,,,,,,,,,,,,0.021,,,,,
20.3,,,,,,,,,,,,,,0.015,,,
21,,,,0.021,,,0.026,,,,,0.194,,0.015,,,0.021
21.2,,,,,,,,,,,,0.021,,,,,
22,,,,0.021,,,0.04,,,,,0.178,,0.015,,,0.021
22.2,,,,,,,,,,,,0.021,,,,,
23,,,,0.021,,,0.115,,,,,0.132,,0.015,,,0.021
23.2,,,,,,0.021,,,,,,0.021,,,,,
24,,,,0.021,,0.021,0.118,,,,,0.124,,0.015,,,0.021
24.2,,,,,,0.021,,,,,,0.021,,,,,
25,,,,0.021,,0.021,0.106,,,,,0.074,,0.015,,,
25.2,,,,,,,,,,,,0.021,,,,,
26,,,,0.021,,0.021,0.027,,,,,0.041,,,,,
26.2,,,,,,,,,,,,0.021,,,,,
27,,,,,,0.021,0.007,,,,,0.021,,,,,
27.2,,,,,,,,,,,,0.021,,,,,
28,,,,,,0.136,0.007,,,,,0.021,,,,,
28.2,,,,,,0.021,,,,,,0.021,,,,,
29,,,,,,0.198,,,,,,0.021,,,,,
29.2,,,,,,0.021,,,,,,0.021,,,,,
30,,,,,,0.281,,,,,,0.021,,,,,
30.2,,,,,,0.045,,,,,,0.021,,,,,
31,,,,,,0.054,,,,,,0.021,,,,,
31.2,,,,,,0.083,,,,,,0.021,,,,,
32,,,,,,0.021,,,,,,,,,,,
32.2,,,,,,0.136,,,,,,0.021,,,,,
33,,,,,,0.021,,,,,,,,,,,
33.1,,,,,,0.021,,,,,,,,,,,
33.2,,,,,,0.021,,,,,,0.021,,,,,
34,,,,,,0.021,,,,,,,,,,,
34.2,,,,,,0.021,,,,,,0.021,,,,,
35,,,,,,0.021,,,,,,,,,,,
35.2,,,,,,0.021,,,,,,,,,,,
36,,,,,,0.021,,,,,,,,,,,
37,,,,,,0.021,,,,,,,,,,,
38,,,,,,0.021,,,,,,,,,,,
42.2,,,,,,,,,,,,0.021,,,,,
43.2,,,,,,,,,,,,0.021,,,,,
44.2,,,,,,,,,,,,0.021,,,,,
45.2,,,,,,,,,,,,0.021,,,,,
46.2,,,,,,,,,,,,0.021,,,,,
47.2,,,,,,,,,,,,0.021,,,,,
48.2,,,,,,,,,,,,0.021,,,,,
50.2,,,,,,,,,,,,0.021,,,,,
51.2,,,,,,,,,,,,0.021,,,,,

81
tools/ocme_population_frequencies_efm/Identifiler_Hispanic.csv

@ -0,0 +1,81 @@
Allele,CSF1PO,D13S317,D16S539,D18S51,D19S433,D21S11,D2S1338,D3S1358,D5S818,D7S820,D8S1179,FGA,Penta D,Penta E,TH01,TPOX,vWA
0,0.021,0.021,0.021,0.021,0.007,0.021,0.007,0.021,0.021,0.021,0.021,0.021,0.021,0.021,0.021,0.021,0.021
2.2,,,,,,,,,,,,,0.012,,,,
3.2,,,,,,,,,,,,,0.012,,,,
4,,,,,,,,,,,,,,,0.017,,
5,,0.017,0.017,,,,,,,,,,0.012,0.031,0.017,,
6,0.017,0.017,0.017,,,,,,,0.017,,,0.012,0.012,0.242,0.02,
6.3,,,,,,,,,,0.017,,,,,,,
7,0.02,0.017,0.017,0.017,,,,,0.053,0.017,,,0.012,0.079,0.235,0.017,
8,0.017,0.099,0.033,,,,,,0.03,0.149,0.017,,0.024,0.038,0.132,0.44,
8.3,,,,,,,,,,,,,,,0.017,,
9,0.017,0.103,0.199,0.017,0.009,,,0.017,0.036,0.103,0.017,,0.186,0.012,0.152,0.116,
9.2,,,,,,,,,,0.017,,,,,,,
9.3,,,,,,,,,,,,,0.012,,0.232,,
10,0.281,0.063,0.123,0.017,0.009,,,0.017,0.056,0.268,0.089,,0.186,0.038,0.017,0.056,0.017
10.2,,,,0.017,0.009,,,,,,,,,,,,
11,0.285,0.238,0.255,0.017,0.009,,,0.017,0.308,0.262,0.056,,0.176,0.062,0.017,0.301,0.017
11.2,,,,,0.009,,,,,,,,0.012,,,,
12,0.325,0.315,0.209,0.103,0.062,,,0.017,0.338,0.175,0.109,,0.157,0.189,,0.063,0.017
12.2,,,,,0.019,,,,,,,,,,,,
13,0.05,0.136,0.152,0.096,0.16,,,0.017,0.169,0.03,0.321,,0.179,0.115,,0.017,0.017
13.2,,,,0.017,0.086,,,,,,,,0.012,0.012,,,
13.3,,,,,,,,,,,,,,,0.017,,
14,0.017,0.046,0.03,0.175,0.317,,,0.04,0.017,0.017,0.199,,0.055,0.081,,,0.07
14.2,,,,0.017,0.05,,,,,,,,,,,,
15,0.017,0.017,0.017,0.159,0.135,,0.009,0.351,0.017,0.017,0.166,,0.012,0.103,,,0.132
15.2,,,,0.017,0.088,,,0.017,,,,0.017,,,,,0.017
16,,,,0.123,0.043,,0.024,0.298,0.017,,0.033,0.017,0.012,0.084,,,0.291
16.2,,,,,0.029,,,,,,,0.017,,,,,
17,,,,0.159,0.009,,0.212,0.195,,,0.017,0.017,0.012,0.055,,,0.228
17.2,,,,,0.009,,,,,,,0.017,,,,,
18,,,,0.073,,,0.041,0.096,,,0.017,0.017,,0.033,,,0.142
18.2,,,,,0.009,,,,,,,0.017,,,,,
19,,,,0.05,,,0.228,0.017,,,0.017,0.043,,0.022,,,0.109
19.2,,,,,,,,,,,,0.017,,,,,
20,,,,0.026,,,0.138,0.017,,,,0.119,,0.031,,,0.02
20.2,,,,,,,,,,,,0.017,,,,,
20.3,,,,,,,,,,,,,,0.012,,,
21,,,,0.023,,,0.026,,,,,0.126,,0.022,,,0.017
21.2,,,,,,,,,,,,0.017,,,,,
22,,,,0.017,,,0.074,,,,,0.195,,0.012,,,0.017
22.2,,,,,,,,,,,,0.017,,,,,
23,,,,0.017,,,0.114,,,,,0.149,,0.012,,,0.007
23.2,,,,,,0.017,,,,,,0.017,,,,,
24,,,,0.017,,0.017,0.085,,,,,0.123,,0.012,,,0.007
24.2,,,,,,0.017,,,,,,0.017,,,,,
25,,,,0.017,,0.017,0.052,,,,,0.116,,0.012,,,
25.2,,,,,,,,,,,,0.017,,,,,
26,,,,0.017,,0.017,0.009,,,,,0.056,,,,,
26.2,,,,,,,,,,,,0.017,,,,,
27,,,,,,0.03,0.009,,,,,0.03,,,,,
27.2,,,,,,,,,,,,0.017,,,,,
28,,,,,,0.126,0.009,,,,,0.017,,,,,
28.2,,,,,,0.017,,,,,,0.017,,,,,
29,,,,,,0.205,,,,,,0.017,,,,,
29.2,,,,,,0.017,,,,,,0.017,,,,,
30,,,,,,0.219,,,,,,0.017,,,,,
30.2,,,,,,0.023,,,,,,0.017,,,,,
31,,,,,,0.043,,,,,,0.017,,,,,
31.2,,,,,,0.119,,,,,,0.017,,,,,
32,,,,,,0.017,,,,,,,,,,,
32.2,,,,,,0.119,,,,,,0.017,,,,,
33,,,,,,0.017,,,,,,,,,,,
33.1,,,,,,0.017,,,,,,,,,,,
33.2,,,,,,0.063,,,,,,0.017,,,,,
34,,,,,,0.017,,,,,,,,,,,
34.2,,,,,,0.017,,,,,,0.017,,,,,
35,,,,,,0.017,,,,,,,,,,,
35.2,,,,,,0.017,,,,,,,,,,,
36,,,,,,0.017,,,,,,,,,,,
37,,,,,,0.017,,,,,,,,,,,
38,,,,,,0.017,,,,,,,,,,,
42.2,,,,,,,,,,,,0.017,,,,,
43.2,,,,,,,,,,,,0.017,,,,,
44.2,,,,,,,,,,,,0.017,,,,,
45.2,,,,,,,,,,,,0.017,,,,,
46.2,,,,,,,,,,,,0.017,,,,,
47.2,,,,,,,,,,,,0.017,,,,,
48.2,,,,,,,,,,,,0.017,,,,,
50.2,,,,,,,,,,,,0.017,,,,,
51.2,,,,,,,,,,,,0.017,,,,,
Loading…
Cancel
Save