1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%A xmlio.tex DESIGN documentation Leonard Soicher
%
%
%
\def\DESIGN{\sf DESIGN}
\def\GRAPE{\sf GRAPE}
\def\nauty{\it nauty}
\def\Aut{{\rm Aut}\,}
\def\x{\times}
\Chapter{XML I/O of block designs}
This chapter describes functions to write and read lists of binary block
designs in the \URL{http://designtheory.org} external representation
XML-format (see \cite{Extrep}).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Writing lists of block designs and their properties in XML-format}
\>BlockDesignsToXMLFile( <filename>, <designs> )
\>BlockDesignsToXMLFile( <filename>, <designs>, <include> )
\>BlockDesignsToXMLFile( <filename>, <designs>, <include>, <list_id> )
This function writes a list of (assumed distinct) binary block designs
(given in {\DESIGN} package format) to a file in external representation
XML-format (version~2.0).
The parameter <filename> is a string giving the name of the file, and
<designs> is a record whose component `list' contains the list of block
designs (<designs> can also be a list, in which case it is replaced by
`rec(list:=<designs>)').
The record <designs> should have the following components:
`list': the list of distinct binary block designs in {\DESIGN} package
format;
`pairwiseNonisomorphic' (optional): should be `true' or `false' or the
string `"unknown"', specifying the pairwise-nonisomorphism status of the
designs in `<designs>.list';
`infoXML' (optional): should contain a string in XML format for the
`<info>' element of the `<list_of_designs>' which is written.
The combinatorial and group-theoretical properties output for each
design depend on <include> (default: empty~list), which should
be a list containing zero or more of the strings `"indicators"',
`"resolvable"', `"combinatorial_properties"', `"automorphism_group"', and
`"resolutions"'. A shorthand for the list containing all these strings
is `"all"'. The strings `"indicators"', `"combinatorial_properties"',
`"automorphism_group"', and `"resolutions"' are used to specify that
those subtrees of the external representation of each design are to
be expanded and written out. In the case of `"resolutions"' being in
<include>, *all* resolutions up to isomorphism will be determined and
written out. The string `"resolvable"' is used to specify that the
`resolvable' indicator must be set (usually this is not forced), if
the `indicators' subtree is written out, and also that if a design is
resolvable but `"resolutions"' is not in <include>, then one and only
one resolution should be written out in the `resolutions' subtree.
If <list_id> is given then the id's of the output designs will be
`<list_id>-0', `<list_id>-1', `<list_id>-2', ...
\beginexample
gap> D:=[ BlockDesign(3, [[1,2],[1,3]]),
> BlockDesign(3, [[1,2],[1,2],[2,3]]) ];;
gap> designs:=rec(list:=D, pairwiseNonisomorphic:=true);;
gap> BlockDesignsToXMLFile("example.xml",designs,[],"example");
\endexample
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Reading lists of block designs in XML-format}
\>BlockDesignsFromXMLFile( <filename> )
This function reads a file with name <filename>, containing a list of
distinct binary block designs in external representation XML-format,
and returns a record <designs> in {\DESIGN} package format containing
the essential information in this file.
The record <designs> contains the following components:
`list': a list of block designs in {\DESIGN} package format of
the list of block designs in the file (certain elements such as
`<statistical_properties>' are stored verbatim as strings; certain other
elements are not stored since it is usually easier and more reliable to
recompute them -- this can be done when the block designs are written
out in XML format);
`pairwiseNonisomorphic' is set according to the attribute
`pairwise_nonisomorphic' of the XML element `<list_of_designs>'.
The component `pairwiseNonisomorphic' is `false' if this attribute
is `false', `true' if this attribute is `true', and `"unknown"' otherwise;
`infoXML' is bound iff the `<info>' element occurs as a child of the
XML `<list_of_designs>' element, and if bound, contains this `<info>'
element in a string.
\beginexample
gap> BlockDesignsFromXMLFile("example.xml");
rec(
infoXML := "<info>\n<software>\n[ DESIGN-1.7, GRAPE-4.8.2, GAPDoc-1.6.2, GAP\
-4.10.1 ]\n</software>\n</info>",
list :=
[
rec( blocks := [ [ 1, 2 ], [ 1, 3 ] ], id := "example-0",
isBinary := true, isBlockDesign := true, v := 3 ),
rec( blocks := [ [ 1, 2 ], [ 1, 2 ], [ 2, 3 ] ], id := "example-1",
isBinary := true, isBlockDesign := true, v := 3 ) ],
pairwiseNonisomorphic := true )
\endexample
|