cocopp.archiving.OfficialArchives(object) class documentationcocopp.archiving
(View In Hierarchy)
overdesigned class to connect URLs, names, and classes of "official" archives.
The all archive name gets special treatment. The 'all'-archive is
currently needed in cocopp.main but could be dropped otherwise.
The class collects the "official" online data archives as attributes.
Each suite is also a different class inheriting from COCODataArchive.
The class may become the same for some or all suites in future.
cocopp.archives is an instance of OfficialArchives and contains as
archive attributes (at this point in time):
all: COCODataArchive, the list of all archived data from
all test suites.
bbob: COCOBBOBDataArchive, the list of archived data run on the
bbob test suite.
bbob_noisy: COCOBBOBNoisyDataArchive, ditto on the bbob_noisy
test suite.
bbob_biobj: COCOBBOBBiobjDataArchive, ditto...
The names property is a list of all "official" archive names available.
1) To list all available data:
>>> import cocopp >>> cocopp.archives.all # doctest:+ELLIPSIS,+SKIP, ['bbob/2009/AL...
2) To see all available data from a given test suite:
>>> cocopp.archives.bbob # doctest:+ELLIPSIS,+SKIP, ['2009/ALPS...
or
>>> cocopp.archives.bbob_biobj # doctest:+ELLIPSIS,+SKIP, ['2016/DEMO_Tusar...
or
>>> cocopp.archives.bbob_noisy # doctest:+ELLIPSIS,+SKIP, ['2009/ALPS...
3) We can extract a subset from any test suite (such as
cocopp.archives.all, cocopp.archives.bbob, ...) of the
archive by sub-string matching:
>>> cocopp.archives.bbob.find('bfgs') # doctest:+NORMALIZE_WHITESPACE,+ELLIPSIS,+SKIP ['2009/BFGS_ros_noiseless.tgz', '2012/DE-BFGS_voglis_noiseless.tgz', '2012/PSO-BFGS_voglis_noiseless.tgz', '2014-others/BFGS-scipy-Baudis.tgz', '2014-others/L-BFGS-B-scipy-Baudis.tgz'...
or by regex pattern matching:
>>> cocopp.archives.bbob.find('bfgs') == cocopp.archives.bbob.find('.*bfgs') True
but
>>> len(cocopp.archives.bbob.find('bfgs')) > len(cocopp.archives.bbob.find('bfgs.*')) True
The find method will not download data and is only for inspecting the
archives. If we want to actually process the data we need to use get,
get_all, get_extended or get_found, or use the same search string
in cocopp.main appending a * if more than one algorithm should be
processed:
4) When postprocessing data via `cocopp.main`, we can use the archive like
>>> cocopp.main(cocopp.archives.bbob.get_all('bfgs').as_string) # doctest:+SKIP
or the shortcut
>>> cocopp.main('bfgs*') # doctest:+SKIP
using the special meaning of the trailing * in this case (see below).
The get and get_extended methods are called on each argument given in a
string to main. We can do things like
>>> cocopp.main('bbob/2009/BIPOP DE-BFGS') # doctest:+SKIP
When a string has multiple matches, the postprocessing bails out. For
such cases, we can use the trailing symbols * (AKA take all matches)
and ! (AKA take the first match) which uses the get_extended method
under the hood:
>>> cocopp.main('BIPOP! 2012/DE*') # doctest:+SKIP
will expand to the following:
Post-processing (2+)
Using:
/.../.cocopp/data-archive/bbob/2009/BIPOP-CMA-ES_hansen_noiseless.tgz
/.../.cocopp/data-archive/bbob/2012/DE-AUTO_voglis_noiseless.tgz
/.../.cocopp/data-archive/bbob/2012/DE-BFGS_voglis_noiseless.tgz
/.../.cocopp/data-archive/bbob/2012/DE-ROLL_voglis_noiseless.tgz
/.../.cocopp/data-archive/bbob/2012/DE-SIMPLEX_voglis_noiseless.tgz
/.../.cocopp/data-archive/bbob/2012/DE_posik_noiseless.tgz
/.../.cocopp/data-archive/bbob/2012/DEAE_posik_noiseless.tgz
/.../.cocopp/data-archive/bbob/2012/DEb_posik_noiseless.tgz
/.../.cocopp/data-archive/bbob/2012/DEctpb_posik_noiseless.tgz
Post-processing (2+)
loading data...
[...]
5) If we want to also pass other arguments to the postprocessing (e.g. the output folder) in case 3) above, string concatenation does the trick:
>>> cocopp.main('-o myoutputfolder ' + cocopp.archives.bbob.get_all('bfgs').as_string) # doctest:+SKIP
For case 4), this works directly:
>>> cocopp.main('-o myoutputfolder BIPOP! 2012/DE*') # doctest:+SKIP
| Method | __init__ | all URLs and classes (optional) in one place. |
| Method | add_archive | Allow to use a new official archive. |
| Method | set_as_attributes_in | Assign all archives as attribute of target except for 'test'. |
| Method | names | a list of valid key names |
| Method | urls | a name->URL dictionary |
| Method | url | return url of "official" archive named name. |
| Method | class_ | class of archive named name when returned by get |
| Method | update_all | Undocumented |
| Method | _get | get j-th entry of name, where j==0 is the URL and j==1 is the class |
all URLs and classes (optional) in one place.
The archive names are identical with the last part of the URL. The only
exception is made for 'all', which is removed to get the URL.
Allow to use a new official archive.
The archive must exist as a subfolder of http://coco.gforge.inria.fr/data-archive
Assign all archives as attribute of target except for 'test'.
target is by default self.
Details: This method can only be called when the class names and the module
attribute official_archives: OfficialArchive (used in get) are
available. Depending on the implementation of get, it may download the
definition files on its first-ever call by/on any given user/machine.