Method: Ensembl::Core::Slice#split

Defined in:
lib/bio-ensembl/core/slice.rb

#split(max_size = 100000, overlap = 0) ⇒ Array<Slice>

Creates overlapping subslices for a given Slice.

Examples:

my_slice.split(50000, 250).each do |sub_slice|
  puts sub_slice.display_name
end

Parameters:

  • max_size (Integer) (defaults to: 100000)

    Maximal size of subslices

  • overlap (Integer) (defaults to: 0)

    Overlap in bp between consecutive subslices

Returns:

  • (Array<Slice>)

    Array of Slice objects



386
387
388
389
390
391
392
393
394
395
# File 'lib/bio-ensembl/core/slice.rb', line 386

def split(max_size = 100000, overlap = 0)
	sub_slices = Array.new
  i = 0
	self.start.step(self.length, max_size - overlap - 1) do |i|
    sub_slices.push(self.sub_slice(i, i + max_size - 1))
  end
	i -= (overlap + 1)
  sub_slices.push(self.sub_slice(i + max_size))
	return sub_slices
end