Skip to content

Instantly share code, notes, and snippets.

require "dm-core"
require "dm-timestamps"
# Note, a GSE etc could have two of the same field (i.e. Pubmed so check for that
# and make an array instead)
# GDS
# has 1 GSE
# has n GDSSubsets
# GDSSubset
INFO = <<HERE
TABLES:
gds
- key gds
gse
- key gse
gds_gse
- key gds
- int gse
# workaround from
# http://stackoverflow.com/questions/1987386/foreign-key-name-in-datamapper-associations
field_naming_convention = lambda do |v|
if v.name.to_s[0..0] == v.name.to_s[0..0].upcase
v.name.to_s
else
DataMapper::NamingConventions::Field::Underscored.call(v)
end
end
field_naming_convention = lambda do |v|
if v.name.to_s[0..0] == v.name[0..0].to_s.upcase
DataMapper::NamingConventions::Field::Underscored(v)
else
v.name.to_s
end
end
# file1.rb
USER_RPT_REPOSITORY_NAME = :user_rpt
class Gene
include DataMapper::Resource
def self.default_repository_name; USER_RPT_REPOSITORY_NAME; end
belongs_to :gene_info, :child_key => [:GeneID], :parent_key => [:GeneID],
:key => true, :repository => repository(:annot_gene)
belongs_to :homologene, :child_key => [:HID], :parent_key => [:HID],
class MRCONSO
include DataMapper::Resource
def self.default_repository_name; UMLS_REPOSITORY_NAME; end
# storage_names[UMLS_REPOSITORY_NAME] = "MRCONSO"
def self.storage_name(repository)
"MRCONSO"
end
property :CUI, String
r>> require 'orm'
ArgumentError: +name+ was :key, which cannot be used as a property name since it collides with an existing method
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/property.rb:787:in `initialize'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/property/numeric.rb:19:in `initialize'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/property/integer.rb:15:in `initialize'
from /Library/Ruby/Gems/1.8/gems/dm-validations-1.0.0/lib/dm-validations.rb:41:in `new'
from /Library/Ruby/Gems/1.8/gems/dm-validations-1.0.0/lib/dm-validations.rb:41:in `new'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/model/property.rb:84:in `property'
from ./user_orm.rb:17
from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
>> require 'orm'
NoMethodError: undefined method `name' for nil:NilClass
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/property_set.rb:161:in `initialize'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/property_set.rb:161:in `map'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/property_set.rb:161:in `initialize'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/associations/relationship.rb:256:in `new'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/associations/relationship.rb:256:in `parent_key'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/associations/many_to_one.rb:52:in `child_key'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core.rb:332:in `finalize_model'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core.rb:331:in `each'
class Gene
include DataMapper::Resource
def self.default_repository_name; USER_RPT_REPOSITORY_NAME; end
belongs_to :gene_info, :key => true, :child_key => [:GeneID], :parent_key => [:GeneID],
:repository => repository(:annot_gene)
belongs_to :homologene, :child_key => [:HID], :parent_key => [:HID],
:repository => repository(:annot_gene)
belongs_to :subset_comparison, :key => true,
:repository => repository(:nosology)
# ERROR ONE
>> c = Cor.get(1060, :cid, :spearman)
~ (0.002499) SELECT `id`, `type`, `meth`, `cor`, `pval`, `pval_adj`, `perm_pval`, `len` FROM `cors` WHERE (`type` = 1 AND `meth` = 2 AND `id` = '1060') ORDER BY `id`, `type`, `meth` LIMIT 1
=> #<Cor @id="1060" @type=:cid @cor=0.0115675 @pval=0.315327 @pval_adj=nil @perm_pval=0.311 @meth=:spearman @len=7537>
>> c.update :pval_adj => 0.001
DataMapper::ImmutableError: Immutable resource cannot be modified
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/resource/state/immutable.rb:16:in `set'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/model/property.rb:269:in `pval_adj='
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/resource.rb:345:in `__send__'
from /Library/Ruby/Gems/1.8/gems/dm-core-1.0.0/lib/dm-core/resource.rb:345:in `attributes='