[Up] [Previous] [Index]

10 XML I/O of block designs

Sections

  1. Writing lists of block designs and their properties in XML-format
  2. Reading lists of block designs in XML-format

This chapter describes functions to write and read lists of binary block designs in the http://designtheory.org external representation XML-format (see Extrep).

10.1 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, ...

    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"); 
    

    10.2 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.

    gap> BlockDesignsFromXMLFile("example.xml");
    rec( 
      infoXML := "<info>\n<software>\n[ DESIGN-1.8, GRAPE-4.9.0, GAPDoc-1.6.6, GAP\
    -4.12.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 )
    

    [Up] [Previous] [Index]

    design manual
    February 2023