partial fix for arp (-end now works and counts ? as ambigious sequence instead of...
[bioperl-live.git] / t / OntologyEngine.t
blobc6e09768488f8b3282b7f3a16365357633208eb8
1 # -*-Perl-*- Test Harness script for Bioperl
2 # $Id$
4 use strict;
6 BEGIN {
7         use lib 't/lib';
8     use BioperlTest;
9     
10     test_begin(-tests => 27,
11                            -requires_module => 'Graph::Directed');
12         
13         use_ok('Bio::Ontology::Term');
14         use_ok('Bio::Ontology::Relationship');
15         use_ok('Bio::Ontology::RelationshipType');
16         use_ok('Bio::Ontology::SimpleOntologyEngine');
17         use_ok('Bio::Ontology::Ontology');
20 my $ont = Bio::Ontology::Ontology->new(-name => "My Ontology");
22 my $eng = Bio::Ontology::SimpleOntologyEngine->new();
23 $ont->engine($eng);
24 isa_ok( $eng,"Bio::Ontology::OntologyEngineI" );
25 is ($ont->engine, $eng);
27 my @terms = (
28              [-identifier => "IPR000001",
29               -name => "Kringle",
30               -definition => "Kringles are autonomous structural domains ...",
31               -ontology => $ont
32               ],
33              [-identifier => "IPR000002",
34               -name => "Cdc20/Fizzy",
35               -definition => "The Cdc20/Fizzy region is almost always ...",
36               -ontology => $ont
37               ],
38              [-identifier => "IPR000003",
39               -name => "Retinoid X receptor",
40               -definition => "Steroid or nuclear hormone receptors ...",
41               -ontology => $ont
42               ],
43              [-identifier => "IPR000004",
44               -name => "Test4",
45               -definition => "Test4 definition ...",
46               -ontology => $ont
47               ],
48              );
50 for(my $i = 0; $i < @terms; $i++) {
51     $terms[$i] = Bio::Ontology::Term->new(@{$terms[$i]});
52     $ont->add_term($terms[$i]);
55 my $rel_type = Bio::Ontology::RelationshipType->get_instance("IS_A", $ont);
56 my $rel_type1 = Bio::Ontology::RelationshipType->get_instance("PART_OF", $ont);
58 my @rels = (
59             [-object_term => $terms[0],
60              -subject_term => $terms[1],
61              -predicate_term => $rel_type,
62              -ontology => $ont,
63              ],
64             [-object_term => $terms[1],
65              -subject_term => $terms[2],
66              -predicate_term => $rel_type,
67              -ontology => $ont,
68              ],
69             [-object_term => $terms[0],
70              -subject_term => $terms[3],
71              -predicate_term => $rel_type,
72              -ontology => $ont,
73              ],
74             [-object_term => $terms[3],
75              -subject_term => $terms[2],
76              -predicate_term => $rel_type,
77              -ontology => $ont,
78              ],
79             );
81 for(my $i = 0; $i < @rels; $i++) {
82     $rels[$i] = Bio::Ontology::Relationship->new(@{$rels[$i]});
83     $ont->add_relationship($rels[$i]);
86 my @child_terms = sort { $a->identifier() cmp $b->identifier();
87                      } $ont->get_child_terms($terms[0]);
88 is (scalar(@child_terms), 2);
89 is( $child_terms[0], $terms[1] );
90 my @child_terms1 = sort { $a->identifier() cmp $b->identifier();
91                       } $ont->get_child_terms($terms[0], $rel_type);
92 is (scalar(@child_terms), 2);
93 is( $child_terms1[0], $terms[1] );
94 is (scalar($ont->get_child_terms($terms[0], $rel_type1)), 0);
96 my @descendant_terms = sort { $a->identifier() cmp $b->identifier();
97                           } $ont->get_descendant_terms($terms[0]);
98 is( scalar(@descendant_terms), 3);
99 is( $descendant_terms[1], $terms[2] );
101 my @descendant_terms1 = sort { $a->identifier() cmp $b->identifier();
102                            } $ont->get_descendant_terms($terms[0], $rel_type);
103 is( $descendant_terms1[1], $terms[2] );
104 is (scalar(@descendant_terms1), 3);
105 is (scalar($ont->get_descendant_terms($terms[0], $rel_type1)), 0);
107 my @parent_terms = sort { $a->identifier() cmp $b->identifier();
108                       } $ont->get_parent_terms($terms[1]);
109 is (scalar(@parent_terms), 1);
110 is( $parent_terms[0], $terms[0] );
112 my @ancestor_terms = sort { $a->identifier() cmp $b->identifier();
113                         } $ont->get_ancestor_terms($terms[2]);
114 is( $ancestor_terms[0], $terms[0] );
115 is (scalar(@ancestor_terms), 3);
116 is (scalar($ont->get_ancestor_terms($terms[2], $rel_type)), 3);
117 is (scalar($ont->get_ancestor_terms($terms[2], $rel_type1)), 0);
119 my @leaf_terms = $ont->get_leaf_terms();
120 # print scalar(@leaf_terms)."\n";
121 is (scalar(@leaf_terms), 1);
122 is( $leaf_terms[0], $terms[2]);
124 my @root_terms = $ont->get_root_terms();
125 # print scalar(@root_terms)."\n";
126 is (scalar(@root_terms), 1);
127 is( $root_terms[0], $terms[0]);
129 #print $ont->engine->to_string();