lib/bio/io/sql.rb in bioruby-bio-1.3.0 vs lib/bio/io/sql.rb in bioruby-bio-1.3.0.5000
- old
+ new
@@ -1,186 +1,79 @@
+#module Bio
+ # class SQL
+ # #no check is made
+ # def self.establish_connection(configurations, env)
+ # #configurations is an hash similar what YAML returns.
+ # #{:database=>"biorails_development", :adapter=>"postgresql", :username=>"rails", :password=>nil}
+ # configurations.assert_valid_keys('development', 'production','test')
+ # configurations[env].assert_valid_keys('hostname','database','adapter','username','password')
+ # DummyBase.configurations = configurations
+ # DummyBase.establish_connection "#{env}"
+ #end
-require 'rubygems'
-require 'erb'
-require 'composite_primary_keys'
+
+#require 'rubygems'
+#require 'composite_primary_keys'
+#require 'erb'
# BiosqlPlug
=begin
Ok Hilmar gives to me some clarification
1) "EMBL/GenBank/SwissProt" name in term table, is only a convention assuming data loaded by genbank embl ans swissprot formats.
- If your features come from others ways for example blast or alignment ... whatever.. the user as to take care about the source.
+ If your features come from others ways for example blast or alignment ... whatever.. the user as to take care about the source.
=end
=begin
TODO:
1) source_term_id => surce_term and check before if the source term is present or not and the level, the root should always be something "EMBL/GenBank/SwissProt" or contestualized.
-2) Into DummyBase class delete connection there and use Bio::ArSQL.establish_connection which reads info from a yml file.
+2) Into DummyBase class delete connection there and use Bio::ArSQL.establish_connection which reads info from a yml file.
3) Chk Locations in Biofeatures ArSQL
=end
module Bio
- class SQL
- #no check is made
- def self.establish_connection(configurations, env)
- #configurations is an hash similar what YAML returns.
- #{:database=>"biorails_development", :adapter=>"postgresql", :username=>"rails", :password=>nil}
- configurations.assert_valid_keys('development', 'production','test')
- configurations[env].assert_valid_keys('hostname','database','adapter','username','password')
- DummyBase.configurations = configurations
- DummyBase.establish_connection "#{env}"
- end
-
+ class SQL
+
+ require 'bio/io/biosql/biosql'
+ autoload :Sequence, 'bio/db/biosql/sequence'
+
def self.fetch_id(id)
Bio::SQL::Bioentry.find(id)
end
-
+
def self.fetch_accession(accession)
- accession = accession.upcase
- Bio::SQL::Bioentry.exists?(:accession => accession) ? Bio::SQL::Sequence.new(:entry=>Bio::SQL::Bioentry.find_by_accession(accession)) : nil
+# Bio::SQL::Bioentry.exists?(:accession => accession) ? Bio::SQL::Sequence.new(:entry=>Bio::SQL::Bioentry.find_by_accession(accession)) : nil
+ Bio::SQL::Sequence.new(:entry=>Bio::SQL::Bioentry.find_by_accession(accession.upcase))
end
-
+
def self.exists_accession(accession)
- Bio::SQL::Bioentry.find_by_accession(accession.upcase).nil? ? false : true
+# Bio::SQL::Bioentry.find_by_accession(accession.upcase).nil? ? false : true
+ !Bio::SQL::Bioentry.find_by_accession(accession.upcase).nil?
end
-
+
def self.exists_database(name)
- Bio::SQL::Biodatabase.find_by_name(name).nil? ? false : true
+# Bio::SQL::Biodatabase.find_by_name(name).nil? ? false : true
+ !Bio::SQL::Biodatabase.first(:name=>name).nil?
end
-
+
def self.list_entries
- Bio::SQL::Bioentry.find(:all).collect{|entry|
+ Bio::SQL::Bioentry.all.collect do|entry|
{:id=>entry.bioentry_id, :accession=>entry.accession}
- }
+ end
end
-
+
def self.list_databases
- Bio::SQL::Biodatabase.find(:all).collect{|entry|
+ Bio::SQL::Biodatabase.all.collect do|entry|
{:id=>entry.biodatabase_id, :name => entry.name}
- }
+ end
end
-
+
def self.delete_entry_id(id)
- Bioentry.delete(id)
+ Bio::SQL::Bioentry.delete(id)
end
-
+
def self.delete_entry_accession(accession)
- Bioentry.delete(Bioentry.find_by_accession(accession))
+ Bio::SQL::Bioentry.find_by_accession(accession.upcase).destroy!
end
-
-
- class DummyBase < ActiveRecord::Base
- #NOTE: Using postgresql, not setting sequence name, system will discover the name by default.
- #NOTE: this class will not establish the connection automatically
- self.abstract_class = true
- self.pluralize_table_names = false
- #prepend table name to the usual id, avoid to specify primary id for every table
- self.primary_key_prefix_type = :table_name_with_underscore
- #biosql_configurations=YAML::load(ERB.new(IO.read(File.join(File.dirname(__FILE__),'../config', 'database.yml'))).result)
- #self.configurations=biosql_configurations
- #self.establish_connection "development"
- end #DummyBase
-
- autoload :Biodatabase, 'bio/io/biosql/biodatabase'
- autoload :Bioentry, 'bio/io/biosql/bioentry'
- autoload :BioentryDbxref, 'bio/io/biosql/bioentry_dbxref'
- autoload :BioentryPath, 'bio/io/biosql/bioentry_path'
- autoload :BioentryQualifierValue, 'bio/io/biosql/bioentry_qualifier_value'
- autoload :BioentryReference, 'bio/io/biosql/bioentry_reference'
- autoload :BioentryRelationship, 'bio/io/biosql/bioentry_relationship'
- autoload :Biosequence, 'bio/io/biosql/biosequence'
- autoload :Comment, 'bio/io/biosql/comment'
- autoload :Dbxref, 'bio/io/biosql/dbxref'
- autoload :DbxrefQualifierValue, 'bio/io/biosql/dbxref_qualifier_value'
- autoload :Location, 'bio/io/biosql/location'
- autoload :LocationQualifierValue, 'bio/io/biosql/location_qualifier_value'
- autoload :Ontology, 'bio/io/biosql/ontology'
- autoload :Reference, 'bio/io/biosql/reference'
- autoload :Seqfeature, 'bio/io/biosql/seqfeature'
- autoload :SeqfeatureDbxref, 'bio/io/biosql/seqfeature_dbxref'
- autoload :SeqfeaturePath, 'bio/io/biosql/seqfeature_path'
- autoload :SeqfeatureQualifierValue, 'bio/io/biosql/seqfeature_qualifier_value'
- autoload :SeqfeatureRelationship, 'bio/io/biosql/seqfeature_relationship'
- autoload :Taxon, 'bio/io/biosql/taxon'
- autoload :TaxonName, 'bio/io/biosql/taxon_name'
- autoload :Term, 'bio/io/biosql/term'
- autoload :TermDbxref, 'bio/io/biosql/term_dbxref'
- autoload :TermPath, 'bio/io/biosql/term_path'
- autoload :TermRelationship, 'bio/io/biosql/term_relationship'
- autoload :TermRelationshipTerm, 'bio/io/biosql/term_relationship_term'
- autoload :Sequence, 'bio/db/biosql/sequence'
+
end #biosql
-
-end #Bio
-if __FILE__ == $0
- require 'rubygems'
- require 'composite_primary_keys'
- require 'bio'
- require 'pp'
-
- # pp connection = Bio::SQL.establish_connection('bio/io/biosql/config/database.yml','development')
- connection = Bio::SQL.establish_connection({'development'=>{'database'=>"bio_test", 'adapter'=>"postgresql", 'username'=>"rails", 'password'=>nil}},'development')
- #pp YAML::load(ERB.new(IO.read('bio/io/biosql/config/database.yml')).result)
- if true
- #Bio::SQL.list_entries
-
-# biosequence = data.to_biosequence
-# puts biosequence.output(:genbank)
- db=Bio::SQL::Biodatabase.new(:name=>'JEFF', :authority=>'ME', :description=>'YOU')
- db.save!
-
- puts "### FileFile.auto"
- if ARGV.size > 0
- #embl = Bio::FlatFile.auto(ARGF.read)
- Bio::FlatFile.auto(ARGF) do |ff|
- ff.each do |data|
- biosequence=data.to_biosequence
- puts biosequence.output(:fasta)
- sqlseq = Bio::SQL::Sequence.new(:biosequence=>biosequence,:biodatabase_id=>db.biodatabase_id)
- sqlseq.save
- sqlseq.to_biosequence.output(:fasta)
- end
- end
- else
- require 'bio/io/fetch'
- server = Bio::Fetch.new('http://www.ebi.ac.uk/cgi-bin/dbfetch')
- data = Bio::EMBL.new(server.fetch('embl','AJ224123'))
- end
-
-
-# sqlseq = Bio::SQL::Sequence.new(:biosequence=>biosequence,:biodatabase_id=>db.biodatabase_id)
-# sqlseq.save
-# sqlseq_bioseq=sqlseq.to_biosequence
-# puts sqlseq_bioseq.output(:genbank)
-
-
-
- # bioseq = Bio::SQL.fetch_accession('AJ224122')
- # pp bioseq
- # pp bioseq.entry_id
- #TODO create a test only for tables not sequence here
-# pp bioseq.molecule_type
- #pp bioseq.molecule_type.class
- #bioseq.molecule_type_update('dna', 1)
-## pp Bio::SQL::Taxon.find(8121).taxon_names
-
- #sqlseq.to_biosequence
-
-# sqlseq.delete
-
-# db.destroy
- end
- #pp bioseq.molecule_type
- #term = Bio::SQL::Term.find_by_name('mol_type')
- #pp term
- #pp bioseq.entry.bioentry_qualifier_values.create(:term=>term, :rank=>2, :value=>'pippo')
- #pp bioseq.entry.bioentry_qualifier_values.inspect
- #pp bioseq.entry.bioentry_qualifier_values.find_all_by_term_id(26)
- #pp primo.class
- # pp primo.value='dna'
- # pp primo.save
- #pp bioseq.molecule_type= 'prova'
-
- #Bio::SQL::BioentryQualifierValue.delete(delete.bioentry_id,delete.term_id,delete.rank)
-
-
-end
+end #Bio