Module: GENOME
- Defined in:
- lib/genome.rb,
lib/genome/snp.rb,
lib/genome/genome.rb,
lib/genome/version.rb,
lib/genome/genotype.rb
Defined Under Namespace
Classes: Genome, Genotype, SNP
Constant Summary
collapse
- VERSION =
'0.1.1'.freeze
Class Method Summary
collapse
Class Method Details
.ancestry_reader(line) ⇒ Object
31
32
33
34
35
36
37
38
|
# File 'lib/genome.rb', line 31
def self.ancestry_reader(line)
rsid, chromosome, position, allele1, allele2 = line.split
genotype = allele1 + allele2
snp = SNP.new(chromosome = chromosome,
position = position,
genotype = Genotype.new(genotype))
[rsid, snp]
end
|
.load(_filename, _provider = '23andme') ⇒ Object
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
# File 'lib/genome.rb', line 40
def self.load(_filename, _provider = '23andme')
raise ProviderError, "#{_provider} is not supported." unless %w[23andme ancestry].include? _provider
first_line = File.open(_filename, &:readline)
if _provider == '23andme'
raise FileTypeError, "#{_filename} is not in a correct #{_provider} format" unless first_line.downcase.include? '23'.downcase
elsif _provider == 'ancestry'
raise FileTypeError, "#{_filename} is not in a correct #{_provider} format" unless first_line.downcase.include? 'ancestry'.downcase
end
genome = Genome.new(name = _filename)
reader = if _provider == '23andme'
:ttandme_reader
elsif _provider == 'ancestry'
:ancestry_reader
end
File.open(_filename).each do |line|
next if line.start_with?('#') || line.start_with?('rsid')
rsid, snp = send reader, line
genome[rsid] = snp
end
genome
end
|
.ttandme_reader(line) ⇒ Object
23
24
25
26
27
28
29
|
# File 'lib/genome.rb', line 23
def self.ttandme_reader(line)
rsid, chromosome, position, genotype = line.split
snp = SNP.new(chromosome = chromosome,
position = position,
genotype = Genotype.new(genotype))
[rsid, snp]
end
|