Skip to content

Instantly share code, notes, and snippets.

@nakao
Created August 26, 2011 06:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nakao/1172813 to your computer and use it in GitHub Desktop.
Save nakao/1172813 to your computer and use it in GitHub Desktop.
probeset.js generating code
require 'rubygems'
require 'rdf'
require 'rest_client'
require 'json'
task "probeset.js" do
endpoint = "http://open-biomed.org:8890/sparql"
query = "SELECT * WHERE { GRAPH <http://open-biomed.org:8890/DAV/BH11Ujicha/HG-U133A.na31.annot> { ?subject ?predicate ?object } }"
response = RestClient.post endpoint, :query => query, :format => "application/sparql-results+json"
data = JSON.parse(response.to_str)
items = {}
data['results']['bindings'].each do |ent|
# p [ent['subject']['value'], ent['predicate']['value'], ent['object']['value']]
unless items[ent['subject']['value']]
items[ent['subject']['value']] = []
items[ent['subject']['value']] << " id : \"#{ent['subject']['value']}\" "
items[ent['subject']['value']] << " type : \"Probeset\" "
end
case ent['predicate']['value']
when RDF::RDFS.label.to_s
items[ent['subject']['value']] << " label : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:xSpecies_Scientific_Name"
items[ent['subject']['value']] << " Species : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Sequence_Type"
items[ent['subject']['value']] << " SequenceType : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Sequence_Source"
items[ent['subject']['value']] << " SequenceSource : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:xTranscript_ID_Array_Design_"
items[ent['subject']['value']] << " TranscriptIDArrayDesign : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Target_Description"
items[ent['subject']['value']] << " TargetDescription : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:xRepresentative_Public_ID"
items[ent['subject']['value']] << " NucleotideID : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:UniGene_ID"
items[ent['subject']['value']] << " UniGeneID : \"#{ent['object']['value']}\" "
when RDF::RDFS.comments
items[ent['subject']['value']] << " Comment : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Chromosomal_Location"
items[ent['subject']['value']] << " Location : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Unigene_Cluster_Type"
items[ent['subject']['value']] << " ClusterType : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:xEnsembl"
items[ent['subject']['value']] << " Ensembl : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Entrez_Gene"
items[ent['subject']['value']] << " GeneLabel : [" + ent['object']['value'].split(" /// ").map {|x| "\"#{x}\"" }.join(", ") +"] "
when "http://bio2rdf.org/affymetrix_resource:SwissProt"
items[ent['subject']['value']] << " SwissProt : [" + ent['object']['value'].split(" /// ").map {|x| "\"#{x}\"" }.join(", ") +"] "
when "http://bio2rdf.org/affymetrix_resource:xSwissProt"
items[ent['subject']['value']] << " SwissProtID : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:EC"
items[ent['subject']['value']] << " EC : [" + ent['object']['value'].split(" /// ").map {|x| "\"#{x}\"" }.join(", ") +"] "
when "http://bio2rdf.org/affymetrix_resource:xOMIM"
items[ent['subject']['value']] << " OMIM : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:xRefSeq_Protein_ID"
items[ent['subject']['value']] << " RefSeqProtein : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:xRefSeq_Transcript_ID"
items[ent['subject']['value']] << " RefSeqTranscript : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Gene_Ontology_Biological_Process"
items[ent['subject']['value']] << " GO_Process : [" + ent['object']['value'].split(" /// ").map {|x| x.split(' // ')[0] }.map {|x| "\"#{x}\"" }.join(", ") +"] "
items[ent['subject']['value']] << " GO_ProcessEC : [" + ent['object']['value'].split(" /// ").map {|x| x.split(' // ')[2] }.map {|x| "\"#{x.to_s.gsub(' ','_')}\"" }.join(", ") +"] "
items[ent['subject']['value']] << " GO_ProcessText : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Gene_Ontology_Cellular_Component"
items[ent['subject']['value']] << " GO_Component : [" + ent['object']['value'].split(" /// ").map {|x| x.split(' // ')[0] }.map {|x| "\"#{x}\"" }.join(", ") +"] "
items[ent['subject']['value']] << " GO_ComponentEC : [" + ent['object']['value'].split(" /// ").map {|x| x.split(' // ')[2] }.map {|x| "\"#{x.to_s.gsub(' ','_')}\"" }.join(", ") +"] "
items[ent['subject']['value']] << " GO_ComponentText : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Gene_Ontology_Molecular_Function"
items[ent['subject']['value']] << " GO_Function : [" + ent['object']['value'].split(" /// ").map {|x| x.split(' // ')[0] }.map {|x| "\"#{x}\"" }.join(", ") +"] "
items[ent['subject']['value']] << " GO_FunctionEC : [" + ent['object']['value'].split(" /// ").map {|x| x.split(' // ')[2] }.map {|x| "\"#{x.to_s.gsub(' ','_')}\"" }.join(", ") +"] "
items[ent['subject']['value']] << " GO_FunctionText : \"#{ent['object']['value']}\" "
when "http://bio2rdf.org/affymetrix_resource:Pathway"
items[ent['subject']['value']] << " Pathway : [" + ent['object']['value'].split(" /// ").map {|x| x.gsub(' // ',':') }.map {|x| "\"#{x}\"" }.join(", ") +"] "
when "http://bio2rdf.org/affymetrix_resource:xEntrez_Gene"
items[ent['subject']['value']] << " EntrezGene : \"#{ent['object']['value']}\" "
end
end
#
file = File.new("probeset.js", "w")
file.puts "{\n" + ' properties : { "Species" : { valueType: "url" }, "TranscriptIDArrayDesign" : { valueType: "url"}, "NucleotideID" : { valueType: "url" }, "Ensembl": { valueType: "url" }, "SwissProtID": { valueType: "url" }, "OMIM": { valueType: "url" }, "RefSeqProtein": { valueType: "url" }, "RefSeqTranscript": { valueType: "url" }, "EntrezGene": { valueType: "url" } },'
file.puts " types : { },"
file.puts " \"items\" : [ "
items.each do |k,v|
file.puts " { " + v.join(",\n ") + "\n }, "
end
file.puts " ]"
file.puts "}"
file.close
# file = File.new("probeset.html", "w")
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment