Class: PubliSci::Readers::RCross
- Inherits:
-
Object
- Object
- PubliSci::Readers::RCross
- Includes:
- Dataset::DataCube, Output
- Defined in:
- lib/bio-publisci/readers/r_cross.rb
Instance Method Summary collapse
- #codes(client, var, options = {}) ⇒ Object
- #dimensions(client, var, options = {}) ⇒ Object
- #generate_n3(client, var, outfile_base, options = {}) ⇒ Object
- #labels_for(data, chr, individual, options = {}) ⇒ Object
- #measures(client, var, options = {}) ⇒ Object
- #num_individuals(client, var, options = {}) ⇒ Object
- #observation_data(client, var, chr, row_individ, geno_chr, entries_per_individual, options = {}) ⇒ Object
- #structure(client, var, options = {}) ⇒ Object
Methods included from Output
Methods included from Dataset::DataCube
#abbreviate_known, #code_lists, #component_gen, #component_specifications, #concept_codes, #data_structure_definition, #dataset, #defaults, #dimension_properties, #encode_data, #generate, #generate_resources, #measure_properties, #observations, #prefixes, #vocabulary
Methods included from Parser
#add_node, #bnode_value, #encode_value, #get_ary, #get_hashes, #is_complex?, #is_uri?, #load_string, #observation_hash, #sanitize, #sanitize_hash, #strip_prefixes, #strip_uri, #to_literal, #to_resource, #turtle_indent
Instance Method Details
#codes(client, var, options = {}) ⇒ Object
66 67 68 |
# File 'lib/bio-publisci/readers/r_cross.rb', line 66 def codes(client, var, ={}) [] end |
#dimensions(client, var, options = {}) ⇒ Object
61 62 63 64 |
# File 'lib/bio-publisci/readers/r_cross.rb', line 61 def dimensions(client, var, ={}) # dimension_properties([""],var) [] end |
#generate_n3(client, var, outfile_base, options = {}) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/bio-publisci/readers/r_cross.rb', line 7 def generate_n3(client, var, outfile_base, ={}) meas = measures(client,var,) dim = dimensions(client,var,) codes = codes(client,var,) #write structure open(outfile_base+'_structure.ttl','w'){|f| f.write structure(client,var,)} n_individuals = client.eval("length(#{var}$pheno[[1]])").payload.first chromosome_list = (1..19).to_a.map(&:to_s) + ["X"] chromosome_list.map{|chrom| open(outfile_base+"_#{chrom}.ttl",'w'){|f| f.write prefixes(var,)} entries_per_individual = client.eval("length(#{var}$geno$'#{chrom}'$map)").to_ruby #get genotype data (currently only for chromosome 1) geno_chr = client.eval("#{var}$geno$'#{chrom}'") #get number of markers per individual #write observations n_individuals.times{|indi| obs_data = observation_data(client,var,chrom.to_s,indi,geno_chr,entries_per_individual,) labels = labels_for(obs_data,chrom.to_s,indi) open(outfile_base+"_#{chrom}.ttl",'a'){|f| observations(meas,dim,codes,obs_data,labels,var,).map{|obs| f.write obs}} puts "(#{chrom}) #{indi}/#{n_individuals}" unless [:quiet] } } end |
#labels_for(data, chr, individual, options = {}) ⇒ Object
70 71 72 73 74 |
# File 'lib/bio-publisci/readers/r_cross.rb', line 70 def labels_for(data,chr,individual,={}) labels=(((data.first.last.size*individual)+1)..(data.first.last.size*(individual+1))).to_a.map(&:to_s) labels.map{|l| l.insert(0,"#{chr}_")} labels end |
#measures(client, var, options = {}) ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/bio-publisci/readers/r_cross.rb', line 51 def measures(client, var, ={}) pheno_names = client.eval("names(#{var}$pheno)").to_ruby if [:measures] (pheno_names & [:measures]) | ["genotype","markerpos","marker"] else pheno_names | ["genotype","markerpos","marker"] end # measure_properties(measures,var,options) end |
#num_individuals(client, var, options = {}) ⇒ Object
105 106 107 |
# File 'lib/bio-publisci/readers/r_cross.rb', line 105 def num_individuals(client, var, ={}) client.eval("#{var}$pheno").payload.first.to_ruby.size end |
#observation_data(client, var, chr, row_individ, geno_chr, entries_per_individual, options = {}) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/bio-publisci/readers/r_cross.rb', line 76 def observation_data(client, var, chr, row_individ, geno_chr, entries_per_individual, ={}) data = {} data["chr"] = [] data["genotype"] = [] data["individual"] = [] data["marker"] = [] data["markerpos"] = [] pheno_names = client.eval("names(#{var}$pheno)").to_ruby pheno_names.map{|name| data[name] = [] } data["individual"] << (1..entries_per_individual).to_a.fill(row_individ) pheno_names.map{|name| data[name] << (1..entries_per_individual).to_a.fill(client.eval("#{var}$pheno$#{name}").to_ruby[row_individ]) } num_markers = geno_chr.payload.first.to_ruby.column_size data["chr"] << (1..num_markers).to_a.fill(chr) data["genotype"] << geno_chr.payload["data"].to_ruby.row(row_individ).to_a data["marker"] << client.eval("names(#{var}$geno$'#{chr}'$map)").payload data["markerpos"] << geno_chr.payload["map"].to_a data.map{|k,v| v.flatten!} data end |
#structure(client, var, options = {}) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/bio-publisci/readers/r_cross.rb', line 37 def structure(client,var,={}) meas = measures(client,var,) dim = dimensions(client,var,) codes = codes(client,var,) str = prefixes(var,) str << data_structure_definition(meas,dim,codes,var,) str << dataset(var,) component_specifications(meas, dim, codes, var, ).map{ |c| str << c } measure_properties(meas,var,).map{|m| str << m} str end |