Module: Exodb::GenomeLocationField::ClassMethods

Defined in:
lib/exodb/datamodel/locationfield.rb

Instance Method Summary collapse

Instance Method Details

#cover?(loc_str) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
33
34
35
# File 'lib/exodb/datamodel/locationfield.rb', line 27

def cover?(loc_str)
	dat = loc_str.split(/(:|\.\.|-)/)
	if dat[4]
		querystr = {:'location.chromosome' => dat[0], :'location.start'.lte => dat[2].to_i, :'location.stop'.gte => dat[4].to_i}
	else
		querystr = {:'location.chromosome' => dat[0], :'location.start'.lte => dat[2].to_i, :'location.stop'.gte => dat[2].to_i}
	end
	return self.where(querystr)
end

#in?(loc_str) ⇒ Boolean

Returns:

  • (Boolean)


43
44
45
46
47
# File 'lib/exodb/datamodel/locationfield.rb', line 43

def in?(loc_str)
	dat = loc_str.split(/(:|\.\.|-)/)
	querystr = {:'location.chromosome' => dat[0], :'location.start'.gte => dat[2].to_i, :'location.stop'.lte => dat[4].to_i}
	return self.where(querystr)
end

#intersect?(loc_str) ⇒ Boolean

Returns:

  • (Boolean)


37
38
39
40
41
# File 'lib/exodb/datamodel/locationfield.rb', line 37

def intersect?(loc_str)
	dat = loc_str.split(/(:|\.\.|-)/)
	querystr = {:'$or' => [{:'location.chromosome' => dat[0], :'location.start'.lte => dat[2].to_i, :'location.stop'.gte => dat[2].to_i}, {:'location.chromosome' => dat[0], :'location.start'.lte => dat[4].to_i, :'location.stop'.gte => dat[4].to_i}]}
	return self.where(querystr)
end