class PubliSci::Readers::RCross
Public Instance Methods
codes(client, var, options={})
click to toggle source
# File lib/publisci/readers/r_cross.rb, line 66 def codes(client, var, options={}) [] end
dimensions(client, var, options={})
click to toggle source
# File lib/publisci/readers/r_cross.rb, line 61 def dimensions(client, var, options={}) # dimension_properties([""],var) [] end
generate_n3(client, var, outfile_base, options={})
click to toggle source
# File lib/publisci/readers/r_cross.rb, line 7 def generate_n3(client, var, outfile_base, options={}) meas = measures(client,var,options) dim = dimensions(client,var,options) codes = codes(client,var,options) #write structure open(outfile_base+'_structure.ttl','w'){|f| f.write structure(client,var,options)} 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,options)} 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,options) labels = labels_for(obs_data,chrom.to_s,indi) open(outfile_base+"_#{chrom}.ttl",'a'){|f| observations(meas,dim,codes,obs_data,labels,var,options).map{|obs| f.write obs}} puts "(#{chrom}) #{indi}/#{n_individuals}" unless options[:quiet] } } end
labels_for(data,chr,individual,options={})
click to toggle source
# File lib/publisci/readers/r_cross.rb, line 70 def labels_for(data,chr,individual,options={}) 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={})
click to toggle source
# File lib/publisci/readers/r_cross.rb, line 51 def measures(client, var, options={}) pheno_names = client.eval("names(#{var}$pheno)").to_ruby if options[:measures] (pheno_names & options[:measures]) | ["genotype","markerpos","marker"] else pheno_names | ["genotype","markerpos","marker"] end # measure_properties(measures,var,options) end
num_individuals(client, var, options={})
click to toggle source
# File lib/publisci/readers/r_cross.rb, line 105 def num_individuals(client, var, options={}) client.eval("#{var}$pheno").payload.first.to_ruby.size end
observation_data(client, var, chr, row_individ, geno_chr, entries_per_individual, options={})
click to toggle source
# File lib/publisci/readers/r_cross.rb, line 76 def observation_data(client, var, chr, row_individ, geno_chr, entries_per_individual, options={}) 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={})
click to toggle source
# File lib/publisci/readers/r_cross.rb, line 37 def structure(client,var,options={}) meas = measures(client,var,options) dim = dimensions(client,var,options) codes = codes(client,var,options) str = prefixes(var,options) str << data_structure_definition(meas,dim,codes,var,options) str << dataset(var,options) component_specifications(meas, dim, codes, var, options).map{ |c| str << c } measure_properties(meas,var,options).map{|m| str << m} str end