Skip to content
Snippets Groups Projects
slice.t 4.95 KiB
Newer Older
	plan tests => 46;
Graham McVicker's avatar
Graham McVicker committed
my $START         = 30_270_000;
my $END           = 31_200_000;
my $STRAND        = 1;
my $ASSEMBLY_TYPE = 'NCBI_30';
my $DBID          = 123;
my $multi_db = MultiTestDB->new;
my $db = $multi_db->get_DBAdaptor('core');
#
#2-5 TEST - Slice creation from adaptor
#
my $slice_adaptor = $db->get_SliceAdaptor;
my $slice = $slice_adaptor->fetch_by_chr_start_end($CHR, $START, $END);
ok($slice->chr_name eq $CHR);
ok($slice->chr_start == $START); 
ok($slice->chr_end == $END);
ok($slice->adaptor);
  
#
#6 TEST - Slice::new (empty)
#
$slice = new Bio::EnsEMBL::Slice(-empty => 1);
#
#7-12 TEST - Slice::new
#
$slice = new Bio::EnsEMBL::Slice(-chr_name  => $CHR,
		   -chr_start => $START,
		   -chr_end   => $END,
		   -strand    => $STRAND,
		   -assembly_type => $ASSEMBLY_TYPE,
		   -dbid     => $DBID);
ok($slice->chr_name eq $CHR);
ok($slice->chr_start == $START);
ok($slice->chr_end == $END);
ok($slice->strand == $STRAND);
ok($slice->assembly_type eq $ASSEMBLY_TYPE);
ok($slice->dbID == $DBID);
#
#13 Test - Slice::adaptor
#
$slice->adaptor($slice_adaptor);
ok($slice->adaptor == $slice_adaptor);
#
#14 Test - Slice::dbID
#
$slice->dbID(10);
ok($slice->dbID==10);
#
#15-17 Test Slice::name
#
#verify that chr_name start and end are contained in the name
my $name = $slice->name;
ok($name =~/$CHR/);
ok($name =~/$START/);
ok($name =~/$END/);
#
#18 Test Slice::id
#
ok($slice->id eq $slice->name);
#
#19 Test Slice::length
#
ok($slice->length == ($END-$START + 1));
#
#20-22 Test Slice::invert
#
my $inverted_slice = $slice->invert;
ok($slice != $inverted_slice); #slice is not same object as inverted slice
#inverted slice on opposite strand
ok($slice->strand == ($inverted_slice->strand * -1)); 
#slice still on same strand
ok($slice->strand == $STRAND);
Graham McVicker's avatar
Graham McVicker committed
my $seq = uc $slice->seq;
my $invert_seq = uc $slice->invert->seq;
ok(length($seq) == $slice->length); #sequence is correct length
Graham McVicker's avatar
Graham McVicker committed

$seq = reverse $seq;  #reverse complement seq
$seq =~ tr/ACTG/TGAC/; 

ok($seq eq $invert_seq); #revcom same as seq on inverted slice
Graham McVicker's avatar
Graham McVicker committed
my $sub_seq = uc $slice->subseq(-$SPAN,$SPAN);
my $invert_sub_seq = uc $slice->invert->subseq( $slice->length - $SPAN + 1, 
						$slice->length + $SPAN + 1);

Graham McVicker's avatar
Graham McVicker committed
$sub_seq = reverse $sub_seq;
$sub_seq =~ tr/ACTG/TGAC/;

ok($sub_seq eq $invert_sub_seq);

#
# 27 Test Slice::get_all_PredictionTranscripts
#
my $pts = $slice->get_all_PredictionTranscripts;
ok(scalar @$pts);


#
# 28 Test Slice::get_all_DnaAlignFeatures
#
my $count = 0;
my $dafs = $slice->get_all_DnaAlignFeatures;
ok(scalar @$dafs);
$count += scalar @$dafs;

#
# 29 Test Slice::get_all_ProteinAlignFeatures
#
my $pafs = $slice->get_all_ProteinAlignFeatures;
ok(scalar @$pafs);
$count += scalar @$pafs;

#
# 30 Test Slice::get_all_SimilarityFeatures
#
ok($count == scalar @{$slice->get_all_SimilarityFeatures});

#
# 31 Test Slice::get_all_SimpleFeatures
#
ok(scalar @{$slice->get_all_SimpleFeatures});

#
# 32 Test Slice::get_all_RepeatFeatures
#
ok(scalar @{$slice->get_all_RepeatFeatures});

#
# 33 Test Slice::get_all_Genes
#
ok(scalar @{$slice->get_all_Genes});

#
# 34 Test Slice::get_all_Genes_by_type
#
ok(scalar @{$slice->get_all_Genes_by_type('ensembl')});

#
# 35 Test Slice::chr_name
#
my $old_val = $slice->chr_name;
my $new_val = 'Y';
$slice->chr_name($new_val);
ok($slice->chr_name eq $new_val);
$slice->chr_name($old_val);

#
# 36 Test Slice::chr_start
#
$old_val = $slice->chr_start;
$new_val = 123;
$slice->chr_start($new_val);
ok($slice->chr_start == $new_val);
$slice->chr_start($old_val);

#
# 37 Test Slice::chr_end
#
$old_val = $slice->chr_end;
$new_val = 1234567;
$slice->chr_end($new_val);
ok($slice->chr_end == $new_val);
$slice->chr_end($old_val);

#
# 38 Test Slice::strand
#
$old_val = $slice->strand;
$new_val = $old_val * -1;
$slice->strand($new_val);
ok($slice->strand == $new_val);
$slice->strand($old_val);

#
# 39 Test Slice::assembly_type
#
$old_val = $slice->assembly_type;
$new_val = 'TEST';
$slice->assembly_type($new_val);
ok($slice->assembly_type eq $new_val);
$slice->assembly_type($old_val);
Graham McVicker's avatar
Graham McVicker committed
#
# 40 Test Slice::get_all_KaryotypeBands
#
ok(scalar @{$slice->get_all_KaryotypeBands});
Graham McVicker's avatar
Graham McVicker committed
#
# 41-42 Test Slice::get_Chromosome
#
my $chromo;
ok($chromo = $slice->get_Chromosome);
ok($chromo->chr_name eq $slice->chr_name);

#
# 43-44 Test Slice::get_RepeatMaskedSeq
#
$seq = $slice->seq;
ok(length($slice->get_repeatmasked_seq->seq) == length($seq));

my $softmasked_seq = $slice->get_repeatmasked_seq(['RepeatMask'], 1)->seq;

ok($softmasked_seq ne $seq);
ok(uc($softmasked_seq) eq $seq);

$softmasked_seq = $seq = undef;  

#
# 45 Test Slice::get_all_MapFrags
#
# ok(scalar @{$slice->get_all_MapFrags('cloneset')});
Graham McVicker's avatar
Graham McVicker committed

#
# 46 Test Slice::get_tiling_path
#
Graham McVicker's avatar
Graham McVicker committed
ok(scalar @{$slice->get_tiling_path});