imw 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. data/.gitignore +15 -0
  2. data/CHANGELOG +0 -0
  3. data/LICENSE +674 -0
  4. data/README.rdoc +101 -0
  5. data/Rakefile +20 -0
  6. data/VERSION +1 -0
  7. data/etc/imwrc.rb +76 -0
  8. data/lib/imw.rb +42 -0
  9. data/lib/imw/boot.rb +58 -0
  10. data/lib/imw/dataset.rb +233 -0
  11. data/lib/imw/dataset/datamapper.rb +66 -0
  12. data/lib/imw/dataset/datamapper/time_and_user_stamps.rb +37 -0
  13. data/lib/imw/dataset/loaddump.rb +50 -0
  14. data/lib/imw/dataset/old/file_collection.rb +88 -0
  15. data/lib/imw/dataset/old/file_collection_utils.rb +71 -0
  16. data/lib/imw/dataset/scaffold.rb +132 -0
  17. data/lib/imw/dataset/scraped_uri.rb +305 -0
  18. data/lib/imw/dataset/scrub/old_working_scrubber.rb +87 -0
  19. data/lib/imw/dataset/scrub/scrub.rb +147 -0
  20. data/lib/imw/dataset/scrub/scrub_simple_url.rb +38 -0
  21. data/lib/imw/dataset/scrub/scrub_test.rb +60 -0
  22. data/lib/imw/dataset/scrub/slug.rb +101 -0
  23. data/lib/imw/dataset/stats.rb +73 -0
  24. data/lib/imw/dataset/stats/counter.rb +23 -0
  25. data/lib/imw/dataset/task.rb +38 -0
  26. data/lib/imw/dataset/workflow.rb +81 -0
  27. data/lib/imw/files.rb +110 -0
  28. data/lib/imw/files/archive.rb +113 -0
  29. data/lib/imw/files/basicfile.rb +122 -0
  30. data/lib/imw/files/binary.rb +28 -0
  31. data/lib/imw/files/compressed_file.rb +93 -0
  32. data/lib/imw/files/compressed_files_and_archives.rb +348 -0
  33. data/lib/imw/files/compressible.rb +103 -0
  34. data/lib/imw/files/csv.rb +112 -0
  35. data/lib/imw/files/json.rb +41 -0
  36. data/lib/imw/files/sgml.rb +65 -0
  37. data/lib/imw/files/text.rb +68 -0
  38. data/lib/imw/files/yaml.rb +46 -0
  39. data/lib/imw/packagers.rb +8 -0
  40. data/lib/imw/packagers/archiver.rb +108 -0
  41. data/lib/imw/packagers/s3_mover.rb +28 -0
  42. data/lib/imw/parsers.rb +7 -0
  43. data/lib/imw/parsers/html_parser.rb +382 -0
  44. data/lib/imw/parsers/html_parser/matchers.rb +306 -0
  45. data/lib/imw/parsers/line_parser.rb +87 -0
  46. data/lib/imw/parsers/regexp_parser.rb +72 -0
  47. data/lib/imw/utils.rb +24 -0
  48. data/lib/imw/utils/components.rb +61 -0
  49. data/lib/imw/utils/config.rb +46 -0
  50. data/lib/imw/utils/error.rb +54 -0
  51. data/lib/imw/utils/extensions/array.rb +125 -0
  52. data/lib/imw/utils/extensions/class/attribute_accessors.rb +8 -0
  53. data/lib/imw/utils/extensions/core.rb +43 -0
  54. data/lib/imw/utils/extensions/dir.rb +24 -0
  55. data/lib/imw/utils/extensions/file_core.rb +64 -0
  56. data/lib/imw/utils/extensions/hash.rb +218 -0
  57. data/lib/imw/utils/extensions/hpricot.rb +48 -0
  58. data/lib/imw/utils/extensions/string.rb +49 -0
  59. data/lib/imw/utils/extensions/struct.rb +42 -0
  60. data/lib/imw/utils/extensions/symbol.rb +28 -0
  61. data/lib/imw/utils/extensions/typed_struct.rb +22 -0
  62. data/lib/imw/utils/extensions/uri.rb +59 -0
  63. data/lib/imw/utils/log.rb +67 -0
  64. data/lib/imw/utils/misc.rb +63 -0
  65. data/lib/imw/utils/paths.rb +115 -0
  66. data/lib/imw/utils/uri.rb +59 -0
  67. data/lib/imw/utils/uuid.rb +33 -0
  68. data/lib/imw/utils/validate.rb +38 -0
  69. data/lib/imw/utils/version.rb +12 -0
  70. data/lib/imw/utils/view.rb +113 -0
  71. data/lib/imw/utils/view/dump_csv.rb +112 -0
  72. data/lib/imw/utils/view/dump_csv_older.rb +117 -0
  73. data/spec/data/sample.csv +131 -0
  74. data/spec/data/sample.tsv +131 -0
  75. data/spec/data/sample.txt +131 -0
  76. data/spec/data/sample.xml +653 -0
  77. data/spec/data/sample.yaml +652 -0
  78. data/spec/imw/dataset/datamapper/uri_spec.rb +43 -0
  79. data/spec/imw/dataset/datamapper_spec_helper.rb +11 -0
  80. data/spec/imw/files/archive_spec.rb +118 -0
  81. data/spec/imw/files/basicfile_spec.rb +121 -0
  82. data/spec/imw/files/bz2_spec.rb +32 -0
  83. data/spec/imw/files/compressed_file_spec.rb +96 -0
  84. data/spec/imw/files/compressible_spec.rb +100 -0
  85. data/spec/imw/files/file_spec.rb +144 -0
  86. data/spec/imw/files/gz_spec.rb +32 -0
  87. data/spec/imw/files/rar_spec.rb +33 -0
  88. data/spec/imw/files/tar_spec.rb +31 -0
  89. data/spec/imw/files/text_spec.rb +23 -0
  90. data/spec/imw/files/zip_spec.rb +31 -0
  91. data/spec/imw/files_spec.rb +38 -0
  92. data/spec/imw/packagers/archiver_spec.rb +125 -0
  93. data/spec/imw/packagers/s3_mover_spec.rb +7 -0
  94. data/spec/imw/parsers/line_parser_spec.rb +96 -0
  95. data/spec/imw/parsers/regexp_parser_spec.rb +42 -0
  96. data/spec/imw/utils/extensions/file_core_spec.rb +72 -0
  97. data/spec/imw/utils/extensions/find_spec.rb +113 -0
  98. data/spec/imw/utils/paths_spec.rb +38 -0
  99. data/spec/imw/workflow/rip/local_spec.rb +89 -0
  100. data/spec/imw/workflow/rip_spec.rb +27 -0
  101. data/spec/rcov.opts +1 -0
  102. data/spec/spec.opts +4 -0
  103. data/spec/spec_helper.rb +32 -0
  104. data/spec/support/archive_contents_matcher.rb +94 -0
  105. data/spec/support/custom_matchers.rb +21 -0
  106. data/spec/support/directory_contents_matcher.rb +61 -0
  107. data/spec/support/extensions.rb +18 -0
  108. data/spec/support/file_contents_matcher.rb +50 -0
  109. data/spec/support/random.rb +210 -0
  110. data/spec/support/without_regard_to_order_matcher.rb +58 -0
  111. metadata +196 -0
@@ -0,0 +1,112 @@
1
+ # #
2
+ # # views
3
+ # #
4
+ # require 'imw/view/db_infochimps'
5
+ #
6
+
7
+
8
+ #
9
+ # This is where views of the metadata will go (right now it's all just
10
+ # sitting in a crapheap within model.rb).
11
+ #
12
+ # we'll have routines for
13
+ #
14
+ # - dumping/undumping to yaml
15
+ # - dumping/undumping to files that load right into the ics database.
16
+ #
17
+ class IMWObject
18
+
19
+ def self.from_icss(hsh)
20
+ # lists of dumpables
21
+ self._attr_objlists.each do |attr, cl|
22
+ if (vals = hsh.delete(attr.to_s))
23
+ hsh[attr] = vals.map{ |val| cl.from_icss(val) }
24
+ end
25
+ end
26
+ # simply dumpable objects
27
+ self._attr_objs.each do |attr, cl|
28
+ if (val = hsh.delete(attr.to_s))
29
+ hsh[attr] = cl.from_icss(val)
30
+ end
31
+ end
32
+ self.new(hsh)
33
+ end
34
+
35
+ # Dump as a plain hash
36
+ def to_icss()
37
+ hsh = instance_values
38
+ # lists of dumpable objects
39
+ self.class._attr_objlists.keys.map(&:to_s).each do |attr|
40
+ hsh[attr] = (hsh.delete(attr)||[]).map{ |a| a.to_icss() }
41
+ end
42
+ # simply dumpable objects
43
+ self.class._attr_objs.keys.map(&:to_s).each do |attr|
44
+ (v=hsh.delete attr) && hsh[attr] = v.to_icss
45
+ end
46
+ hsh
47
+ end
48
+
49
+ # Pivot from object to relational view
50
+ def to_csv(parent_id=nil)
51
+ tables = {}
52
+ sub_ids = []
53
+ my_cl = self.class.to_s
54
+ self.class._attr_objs.sort.each do |attr, cl|
55
+ tables[attr] ||= [] ; tables[attr].push(self[attr].to_csv(id))
56
+ join = "%s_%s" % [my_cl, cl.to_s].sort
57
+ tables[join] ||= [] ; tables[join].push(id, self[attr].id)
58
+ sub_ids.push self[attr].handle
59
+ end
60
+
61
+ self.class._attr_objlists.sort.each do |attr, cl|
62
+ tables[attr] ||= []
63
+ join = "%s_%s" % [my_cl, cl.to_s].sort
64
+ tables[join] ||= []
65
+ self[attr].each do |obj|
66
+ tables[attr].push(obj.to_csv(id))
67
+ tables[join].push(id, obj.id)
68
+ sub_ids.push obj.handle
69
+ end
70
+ end
71
+
72
+
73
+ tables[self.class.to_s] = [
74
+ [self.id, parent_id].compact +
75
+ slice(self.class._attr_scalars.keys - [:id]) +
76
+ sub_ids
77
+ ]
78
+ tables
79
+ end
80
+
81
+ end
82
+
83
+ class Note < IMWObject
84
+ def to_pair()
85
+ { self.handle => self.desc }
86
+ end
87
+ def to_icss()
88
+ to_pair
89
+ end
90
+ def self.from_icss(pair)
91
+ self.new Hash.zip([:handle,:desc], pair.to_pair)
92
+ end
93
+ end
94
+
95
+
96
+ class TagList
97
+ def self.from_icss(str)
98
+ self.from(str)
99
+ end
100
+ def to_icss()
101
+ self.to_s
102
+ end
103
+ def to_csv(parent_id=nil)
104
+ [self.to_s]
105
+ end
106
+
107
+ def handle() to_s end
108
+ end
109
+
110
+
111
+
112
+ # You acquire the vision of a sharp-eyed tanzier. We'll just assume that's good.
@@ -0,0 +1,117 @@
1
+ # #
2
+ # # views
3
+ # #
4
+ # require 'imw/view/db_infochimps'
5
+ #
6
+
7
+
8
+ #
9
+ # This is where views of the metadata will go (right now it's all just
10
+ # sitting in a crapheap within model.rb).
11
+ #
12
+ # we'll have routines for
13
+ #
14
+ # - dumping/undumping to yaml
15
+ # - dumping/undumping to files that load right into the ics database.
16
+ #
17
+ class IMWBase
18
+
19
+ def self.from_icss(hsh)
20
+ # simply dumpable objects
21
+ self._attr_has_one.map(&:to_s).each do |attr|
22
+ if (val = hsh.delete(attr.to_s))
23
+ hsh[attr] = get_attr_class(attr).from_icss(val)
24
+ end
25
+ end
26
+ # lists of dumpables
27
+ self._attr_manys.each do |attr|
28
+ if (vals = hsh.delete(attr.to_s))
29
+ hsh[attr] = vals.map{ |val| get_attr_class(attr).from_icss(val) }
30
+ end
31
+ end
32
+ self.new(hsh)
33
+ end
34
+
35
+ # Dump as a plain hash
36
+ def to_icss()
37
+ hsh = instance_values
38
+ # simply dumpable objects
39
+ self.class._attr_has_one.map(&:to_s).each do |attr|
40
+ (v=hsh.delete attr) && hsh[attr] = v.to_icss
41
+ end
42
+ # lists of dumpable objects
43
+ self.class._attr_manys.each do |attr|
44
+ hsh[attr] = (hsh.delete(attr)||[]).map{ |a| a.to_icss() }
45
+ end
46
+ hsh
47
+ end
48
+
49
+ # Pivot from object to relational view
50
+ def to_csv(parent_id=nil)
51
+ tables = {}
52
+ sub_ids = []
53
+ my_cl = self.class.to_s
54
+ self.class._attr_has_one.map(&:to_s).sort.each do |attr|
55
+ # Banks the object
56
+ obj = self[attr]
57
+ cl = self.class.get_attr_class(attr).to_s
58
+ tables[attr] ||= [] ; tables[attr].push( obj.to_csv(id) )
59
+ # tie the parent and child together
60
+ join = "%s_%s" % [my_cl, cl].sort
61
+ tables[join] ||= [] ; tables[join].push( [id, obj.id] )
62
+ sub_ids.push obj.handle
63
+ end
64
+
65
+ self.class._attr_manys.sort.each do |attr|
66
+ objs = self[attr] or next
67
+ cl = self.class.get_attr_class(attr).to_s
68
+ tables[attr] ||= []
69
+ join = "%s_%s" % [my_cl, cl.to_s].sort
70
+ tables[join] ||= []
71
+ objs.each do |obj|
72
+ tables[attr].push(obj.to_csv(id))
73
+ tables[join].push(id, obj.id)
74
+ sub_ids.push obj.handle
75
+ end
76
+ end
77
+
78
+
79
+ tables[self.class.to_s] = [
80
+ [self.id, parent_id].compact +
81
+ slice(self.class._attr_scalar - [:id]) +
82
+ sub_ids
83
+ ].zip(['id', 'pid']+(self.class._attr_scalar - [:id])+self.class._attr_has_one.map(&:to_s).sort)
84
+ tables
85
+ end
86
+
87
+ end
88
+
89
+ class Note < IMWBase
90
+ # { :format_name => {}, ... } -- must be a hash
91
+ def to_pair()
92
+ { self.handle => self.desc }
93
+ end
94
+ def to_icss()
95
+ to_pair
96
+ end
97
+ def self.from_icss(pair)
98
+ self.new Hash.zip([:handle,:desc], pair.to_pair)
99
+ end
100
+ end
101
+
102
+
103
+ class TagList
104
+ def self.from_icss(str)
105
+ self.from(str)
106
+ end
107
+ def to_icss()
108
+ self.to_s
109
+ end
110
+ def to_csv(parent_id=nil)
111
+ [self.to_s]
112
+ end
113
+
114
+ def handle() to_s end
115
+ end
116
+
117
+
@@ -0,0 +1,131 @@
1
+ ID,Name,Genus,Species
2
+ 001,Gray-bellied Night Monkey,Aotus,lemurinus
3
+ 002,Panamanian Night Monkey,Aotus,zonalis
4
+ 003,Hernández-Camacho's Night Monkey,Aotus,jorgehernandezi
5
+ 004,Gray-handed Night Monkey,Aotus,griseimembra
6
+ 005,Hershkovitz's Night Monkey,Aotus,hershkovitzi
7
+ 006,Brumback's Night Monkey,Aotus,brumbacki
8
+ 007,Three-striped Night Monkey,Aotus,trivirgatus
9
+ 008,Spix's Night Monkey,Aotus,vociferans
10
+ 009,Malaysian Lar Gibbon,Hylobates,lar lar
11
+ 010,Carpenter's Lar Gibbon,Hylobates,lar carpenteri
12
+ 011,Central Lar Gibbon,Hylobates,lar entelloides
13
+ 012,Sumatran Lar Gibbon,Hylobates,lar vestitus
14
+ 013,Yunnan Lar Gibbon,Hylobates,lar yunnanensis
15
+ 014,Mountain Agile Gibbon,Hylobates,agilis agilis
16
+ 015,Bornean White-bearded Gibbon,Hylobates,agilis albibarbis
17
+ 016,Lowland Agile Gibbon,Hylobates,agilis unko
18
+ 017,Müller's Gray Gibbon,Hylobates,muelleri muelleri
19
+ 018,Abbott's Gray Gibbon,Hylobates,muelleri abbotti
20
+ 019,Northern Gray Gibbon,Hylobates,muelleri funereus
21
+ 020,Black Tamarin,Saguinas,niger
22
+ 021,Black-mantled Tamarin,Saguinas,nigricollis
23
+ 022,Brown-mantled Tamarin,Saguinas,fuscicollis
24
+ 023,Cottontop Tamarin or Pinché Tamarin,Saguinas,oedipus
25
+ 024,Emperor Tamarin,Saguinas,imperator
26
+ 025,Geoffroy's Tamarin,Saguinas,geoffroyi
27
+ 026,Golden-mantled Tamarin,Saguinas,tripartitus
28
+ 027,Graells's Tamarin,Saguinas,graellsi
29
+ 028,Martins's Tamarin,Saguinas,martinsi
30
+ 029,Mottle-faced Tamarin,Saguinas,inustus
31
+ 030,Moustached Tamarin,Saguinas,mystax
32
+ 031,Pied Tamarin,Saguinas,bicolor
33
+ 032,Red-capped Tamarin,Saguinas,pileatus
34
+ 033,Red-handed Tamarin,Saguinas,midas
35
+ 034,White-footed Tamarin,Saguinas,leucopus
36
+ 035,White-lipped Tamarin,Saguinas,labiatus
37
+ 036,White-mantled Tamarin,Saguinas,melanoleucus
38
+ 037,Allen's Swamp Monkey,Allenopithecus,nigroviridis
39
+ 038,Angolan Talapoin,Miopithecus,talapoin
40
+ 039,Gabon Talapoin,Miopithecus,ogouensis
41
+ 040,Patas Monkey,Erythrocebus,patas
42
+ 041,Green Monkey,Chlorocebus,sabaeus
43
+ 042,Grivet,Chlorocebus,aethiops
44
+ 043,Bale Mountains Vervet,Chlorocebus,djamdjamensis
45
+ 044,Tantalus Monkey,Chlorocebus,tantalus
46
+ 045,Vervet Monkey,Chlorocebus,pygerythrus
47
+ 046,Malbrouck,Chlorocebus,cynosuros
48
+ 047,Dryas Monkey or Salongo Monkey,Cercopithecus,dryas
49
+ 048,Diana Monkey,Cercopithecus,diana
50
+ 049,Roloway Monkey,Cercopithecus,roloway
51
+ 050,Greater Spot-nosed Monkey,Cercopithecus,nictitans
52
+ 051,Blue Monkey,Cercopithecus,mitis
53
+ 052,Silver Monkey,Cercopithecus,doggetti
54
+ 053,Golden Monkey,Cercopithecus,kandti
55
+ 054,Sykes's Monkey,Cercopithecus,albogularis
56
+ 055,Mona Monkey,Cercopithecus,mona
57
+ 056,Campbell's Mona Monkey,Cercopithecus,campbelli
58
+ 057,Lowe's Mona Monkey,Cercopithecus,lowei
59
+ 058,Crested Mona Monkey,Cercopithecus,pogonias
60
+ 059,Wolf's Mona Monkey,Cercopithecus,wolfi
61
+ 060,Dent's Mona Monkey,Cercopithecus,denti
62
+ 061,Lesser Spot-nosed Monkey,Cercopithecus,petaurista
63
+ 062,White-throated Guenon,Cercopithecus,erythrogaster
64
+ 063,Sclater's Guenon,Cercopithecus,sclateri
65
+ 064,Red-eared Guenon,Cercopithecus,erythrotis
66
+ 065,Moustached Guenon,Cercopithecus,cephus
67
+ 066,Red-tailed Monkey,Cercopithecus,ascanius
68
+ 067,L'Hoest's Monkey,Cercopithecus,lhoesti
69
+ 068,Preuss's Monkey,Cercopithecus,preussi
70
+ 069,Sun-tailed Monkey,Cercopithecus,solatus
71
+ 070,Hamlyn's Monkey,Cercopithecus,hamlyni
72
+ 071,De Brazza's Monkey,Cercopithecus,neglectus
73
+ 072,Barbary Macaque,Macaca,sylvanus
74
+ 073,Lion-tailed Macaque,Macaca,silenus
75
+ 074,Southern Pig-tailed Macaque or Beruk,Macaca,nemestrina
76
+ 075,Northern Pig-tailed Macaque,Macaca,leonina
77
+ 076,Pagai Island Macaque or Bokkoi,Macaca,pagensis
78
+ 077,Siberut Macaque,Macaca,siberu
79
+ 078,Moor Macaque,Macaca,maura
80
+ 079,Booted Macaque,Macaca,ochreata
81
+ 080,Tonkean Macaque,Macaca,tonkeana
82
+ 081,Heck's Macaque,Macaca,hecki
83
+ 082,Gorontalo Macaque,Macaca,nigrescens
84
+ 083,Celebes Crested Macaque or Black "Ape",Macaca,nigra
85
+ 084,Crab-eating Macaque or Long-tailed Macaque or Kera,Macaca,fascicularis
86
+ 085,Stump-tailed Macaque or Bear Macaque,Macaca,arctoides
87
+ 086,Rhesus Macaque,Macaca,mulatta
88
+ 087,Formosan Rock Macaque,Macaca,cyclopis
89
+ 088,Japanese Macaque,Macaca,fuscata
90
+ 089,Toque Macaque,Macaca,sinica
91
+ 090,Bonnet Macaque,Macaca,radiata
92
+ 091,Assam Macaque,Macaca,assamensis
93
+ 092,Tibetan Macaque or Milne-Edwards' Macaque,Macaca,thibetana
94
+ 093,Arunachal Macaque or Munzala,Macaca,munzala
95
+ 094,Grey-cheeked Mangabey,Lophocebus,albigena
96
+ 095,Black Crested Mangabey,Lophocebus,aterrimus
97
+ 096,Opdenbosch's Mangabey,Lophocebus,opdenboschi
98
+ 097,Uganda Mangabey,Lophocebus,ugandae
99
+ 098,Johnston's Mangabey,Lophocebus,johnstoni
100
+ 099,Osman Hill's Mangabey,Lophocebus,osmani
101
+ 100,Kipunji,Rungwecebus,kipunji
102
+ 101,Hamadryas Baboon,Papio,hamadryas
103
+ 102,Guinea Baboon,Papio,papio
104
+ 103,Olive Baboon,Papio,anubis
105
+ 104,Yellow Baboon,Papio,cynocephalus
106
+ 105,Chacma Baboon,Papio,ursinus
107
+ 106,Gelada,Theropithecus,gelada
108
+ 107,Sooty Mangabey,Cercocebus,atys
109
+ 108,Collared Mangabey,Cercocebus,torquatus
110
+ 109,Agile Mangabey,Cercocebus,agilis
111
+ 110,Golden-bellied Mangabey,Cercocebus,chrysogaster
112
+ 111,Tana River Mangabey,Cercocebus,galeritus
113
+ 112,Sanje Mangabey,Cercocebus,sanjei
114
+ 113,Mandrill,Mandrillus,sphinx
115
+ 114,Drill,Mandrillus,leucophaeus
116
+ 115,Black Colobus,Colobus,satanas
117
+ 116,Angola Colobus,Colobus,angolensis
118
+ 117,King Colobus,Colobus,polykomos
119
+ 118,Ursine Colobus,Colobus,vellerosus
120
+ 119,Mantled Guereza,Colobus,guereza
121
+ 120,Western Red Colobus,Piliocolobus,badius
122
+ 121,Pennant's Colobus,Piliocolobus,pennantii
123
+ 122,Preuss's Red Colobus,Piliocolobus,preussi
124
+ 123,Thollon's Red Colobus,Piliocolobus,tholloni
125
+ 124,Central African Red Colobus,Piliocolobus,foai
126
+ 125,Ugandan Red Colobus,Piliocolobus,tephrosceles
127
+ 126,Uzungwa Red Colobus,Piliocolobus,gordonorum
128
+ 127,Zanzibar Red Colobus,Piliocolobus,kirkii
129
+ 128,Tana River Red Colobus,Piliocolobus,rufomitratus
130
+ 129,Olive Colobus,Procolobus,verus
131
+ 130,Maroon Leaf Monkey,Presbytis,rubicunda
@@ -0,0 +1,131 @@
1
+ ID Name Genus Species
2
+ 001 Gray-bellied Night Monkey Aotus lemurinus
3
+ 002 Panamanian Night Monkey Aotus zonalis
4
+ 003 Hernández-Camacho's Night Monkey Aotus jorgehernandezi
5
+ 004 Gray-handed Night Monkey Aotus griseimembra
6
+ 005 Hershkovitz's Night Monkey Aotus hershkovitzi
7
+ 006 Brumback's Night Monkey Aotus brumbacki
8
+ 007 Three-striped Night Monkey Aotus trivirgatus
9
+ 008 Spix's Night Monkey Aotus vociferans
10
+ 009 Malaysian Lar Gibbon Hylobates lar lar
11
+ 010 Carpenter's Lar Gibbon Hylobates lar carpenteri
12
+ 011 Central Lar Gibbon Hylobates lar entelloides
13
+ 012 Sumatran Lar Gibbon Hylobates lar vestitus
14
+ 013 Yunnan Lar Gibbon Hylobates lar yunnanensis
15
+ 014 Mountain Agile Gibbon Hylobates agilis agilis
16
+ 015 Bornean White-bearded Gibbon Hylobates agilis albibarbis
17
+ 016 Lowland Agile Gibbon Hylobates agilis unko
18
+ 017 Müller's Gray Gibbon Hylobates muelleri muelleri
19
+ 018 Abbott's Gray Gibbon Hylobates muelleri abbotti
20
+ 019 Northern Gray Gibbon Hylobates muelleri funereus
21
+ 020 Black Tamarin Saguinas niger
22
+ 021 Black-mantled Tamarin Saguinas nigricollis
23
+ 022 Brown-mantled Tamarin Saguinas fuscicollis
24
+ 023 Cottontop Tamarin or Pinché Tamarin Saguinas oedipus
25
+ 024 Emperor Tamarin Saguinas imperator
26
+ 025 Geoffroy's Tamarin Saguinas geoffroyi
27
+ 026 Golden-mantled Tamarin Saguinas tripartitus
28
+ 027 Graells's Tamarin Saguinas graellsi
29
+ 028 Martins's Tamarin Saguinas martinsi
30
+ 029 Mottle-faced Tamarin Saguinas inustus
31
+ 030 Moustached Tamarin Saguinas mystax
32
+ 031 Pied Tamarin Saguinas bicolor
33
+ 032 Red-capped Tamarin Saguinas pileatus
34
+ 033 Red-handed Tamarin Saguinas midas
35
+ 034 White-footed Tamarin Saguinas leucopus
36
+ 035 White-lipped Tamarin Saguinas labiatus
37
+ 036 White-mantled Tamarin Saguinas melanoleucus
38
+ 037 Allen's Swamp Monkey Allenopithecus nigroviridis
39
+ 038 Angolan Talapoin Miopithecus talapoin
40
+ 039 Gabon Talapoin Miopithecus ogouensis
41
+ 040 Patas Monkey Erythrocebus patas
42
+ 041 Green Monkey Chlorocebus sabaeus
43
+ 042 Grivet Chlorocebus aethiops
44
+ 043 Bale Mountains Vervet Chlorocebus djamdjamensis
45
+ 044 Tantalus Monkey Chlorocebus tantalus
46
+ 045 Vervet Monkey Chlorocebus pygerythrus
47
+ 046 Malbrouck Chlorocebus cynosuros
48
+ 047 Dryas Monkey or Salongo Monkey Cercopithecus dryas
49
+ 048 Diana Monkey Cercopithecus diana
50
+ 049 Roloway Monkey Cercopithecus roloway
51
+ 050 Greater Spot-nosed Monkey Cercopithecus nictitans
52
+ 051 Blue Monkey Cercopithecus mitis
53
+ 052 Silver Monkey Cercopithecus doggetti
54
+ 053 Golden Monkey Cercopithecus kandti
55
+ 054 Sykes's Monkey Cercopithecus albogularis
56
+ 055 Mona Monkey Cercopithecus mona
57
+ 056 Campbell's Mona Monkey Cercopithecus campbelli
58
+ 057 Lowe's Mona Monkey Cercopithecus lowei
59
+ 058 Crested Mona Monkey Cercopithecus pogonias
60
+ 059 Wolf's Mona Monkey Cercopithecus wolfi
61
+ 060 Dent's Mona Monkey Cercopithecus denti
62
+ 061 Lesser Spot-nosed Monkey Cercopithecus petaurista
63
+ 062 White-throated Guenon Cercopithecus erythrogaster
64
+ 063 Sclater's Guenon Cercopithecus sclateri
65
+ 064 Red-eared Guenon Cercopithecus erythrotis
66
+ 065 Moustached Guenon Cercopithecus cephus
67
+ 066 Red-tailed Monkey Cercopithecus ascanius
68
+ 067 L'Hoest's Monkey Cercopithecus lhoesti
69
+ 068 Preuss's Monkey Cercopithecus preussi
70
+ 069 Sun-tailed Monkey Cercopithecus solatus
71
+ 070 Hamlyn's Monkey Cercopithecus hamlyni
72
+ 071 De Brazza's Monkey Cercopithecus neglectus
73
+ 072 Barbary Macaque Macaca sylvanus
74
+ 073 Lion-tailed Macaque Macaca silenus
75
+ 074 Southern Pig-tailed Macaque or Beruk Macaca nemestrina
76
+ 075 Northern Pig-tailed Macaque Macaca leonina
77
+ 076 Pagai Island Macaque or Bokkoi Macaca pagensis
78
+ 077 Siberut Macaque Macaca siberu
79
+ 078 Moor Macaque Macaca maura
80
+ 079 Booted Macaque Macaca ochreata
81
+ 080 Tonkean Macaque Macaca tonkeana
82
+ 081 Heck's Macaque Macaca hecki
83
+ 082 Gorontalo Macaque Macaca nigrescens
84
+ 083 Celebes Crested Macaque or Black "Ape" Macaca nigra
85
+ 084 Crab-eating Macaque or Long-tailed Macaque or Kera Macaca fascicularis
86
+ 085 Stump-tailed Macaque or Bear Macaque Macaca arctoides
87
+ 086 Rhesus Macaque Macaca mulatta
88
+ 087 Formosan Rock Macaque Macaca cyclopis
89
+ 088 Japanese Macaque Macaca fuscata
90
+ 089 Toque Macaque Macaca sinica
91
+ 090 Bonnet Macaque Macaca radiata
92
+ 091 Assam Macaque Macaca assamensis
93
+ 092 Tibetan Macaque or Milne-Edwards' Macaque Macaca thibetana
94
+ 093 Arunachal Macaque or Munzala Macaca munzala
95
+ 094 Grey-cheeked Mangabey Lophocebus albigena
96
+ 095 Black Crested Mangabey Lophocebus aterrimus
97
+ 096 Opdenbosch's Mangabey Lophocebus opdenboschi
98
+ 097 Uganda Mangabey Lophocebus ugandae
99
+ 098 Johnston's Mangabey Lophocebus johnstoni
100
+ 099 Osman Hill's Mangabey Lophocebus osmani
101
+ 100 Kipunji Rungwecebus kipunji
102
+ 101 Hamadryas Baboon Papio hamadryas
103
+ 102 Guinea Baboon Papio papio
104
+ 103 Olive Baboon Papio anubis
105
+ 104 Yellow Baboon Papio cynocephalus
106
+ 105 Chacma Baboon Papio ursinus
107
+ 106 Gelada Theropithecus gelada
108
+ 107 Sooty Mangabey Cercocebus atys
109
+ 108 Collared Mangabey Cercocebus torquatus
110
+ 109 Agile Mangabey Cercocebus agilis
111
+ 110 Golden-bellied Mangabey Cercocebus chrysogaster
112
+ 111 Tana River Mangabey Cercocebus galeritus
113
+ 112 Sanje Mangabey Cercocebus sanjei
114
+ 113 Mandrill Mandrillus sphinx
115
+ 114 Drill Mandrillus leucophaeus
116
+ 115 Black Colobus Colobus satanas
117
+ 116 Angola Colobus Colobus angolensis
118
+ 117 King Colobus Colobus polykomos
119
+ 118 Ursine Colobus Colobus vellerosus
120
+ 119 Mantled Guereza Colobus guereza
121
+ 120 Western Red Colobus Piliocolobus badius
122
+ 121 Pennant's Colobus Piliocolobus pennantii
123
+ 122 Preuss's Red Colobus Piliocolobus preussi
124
+ 123 Thollon's Red Colobus Piliocolobus tholloni
125
+ 124 Central African Red Colobus Piliocolobus foai
126
+ 125 Ugandan Red Colobus Piliocolobus tephrosceles
127
+ 126 Uzungwa Red Colobus Piliocolobus gordonorum
128
+ 127 Zanzibar Red Colobus Piliocolobus kirkii
129
+ 128 Tana River Red Colobus Piliocolobus rufomitratus
130
+ 129 Olive Colobus Procolobus verus
131
+ 130 Maroon Leaf Monkey Presbytis rubicunda