[Swift-devel] readData

Mihael Hategan hategan at mcs.anl.gov
Wed Oct 10 09:31:08 CDT 2007


On Wed, 2007-10-10 at 09:00 -0500, Michael Wilde wrote:
> Mihael, all - readdata() works great, and I think gives Andrew exactly 
> what he asked for.
> 
> I updated the example parameter-sweep loop to use readdata to grab the 
> multi-column input file.
> 
> One note: as far as I can tell, you use the conventions the data columns 
> must be exactly 16 characters wide, space separated. Is that correct? (I 
> assume we'll generalize this time permits).

No. They must be horizontal-whitespace separated. The 16 characters wide
restriction does not exist. The following is valid:
a b           c                        d
1 2 3 4
5             6 7 8
9                        10        11		12

> 
> Here's the new example, Andrew.
> 
> - Mike
> 
> type file;
> 
> // Simulate encapsulating an app's parameters as a struct
> 
> type params {
>    int x;
>    int y;
>    float r;
>    boolean b;
>    string infilename;
>    string outfilename;
> };
> 
> // Simulate an app
> 
> myapp(params p, file infile, file outfile )
> {
>      app {
>          db "pecho:" p.x p.y p.r p.b p.infilename p.outfilename  @infile 
> @outfile ;
>      }
> }
> 
> // Loop over the parameter array, calling app in parallel
> 
> doall(params plist[])
> {
>    foreach pval,j in plist {
> 
>      // convert filename string to mapped file reference
>      file infile <single_file_mapper;file=pval.infilename>;
>      file outfile <single_file_mapper;file=pval.outfilename>;
> 
>      // Call the application
>      myapp(pval,infile, outfile);
>    }
> }
> 
> // Main
> 
> params plist[];
> plist = readdata("parameters");
> doall(plist);
> 
> // Data File "parameters" follows.  Data files listed in it must exist.
> // each line is greater than 80 bytes and is only wrapped here by email
> // (actual files attached)
> 
> x               y               r               b 
> infilename      outfilename
> 1               2               1.234           1 
> inf001.data     outf001.data
> 3               4               5.678           0 
> inf002.data     outf002.data
> 
> 
> 
> 
> 
> On 10/10/07 5:23 AM, Ben Clifford wrote:
> > Mihael added the below language construct to the language the other day.
> > 
> > This might be useful where the csv_mapper was being used before to read in 
> > non-file data.
> > 
> > Its in the SVN.
> > 
> > 
> > Mihael Hategan wrote:
> > 
> > There's a new function: readData. It's not an @function, so don't use it
> > that way because it won't work (it needs to know what variable it
> > assigns to, so that it knows how to interpret the contents of the
> > file). 
> > 
> > It can read primitive things, arrays of primitive things, structs and
> > arrays of structs. 
> > 
> > It can either take a file or a string as a parameter, although I
> > recommend the former since it can deal with data dependencies.
> > 
> > For example usage, see tests/language-behaviour/readData.swift.
> > 
> > Here's a short preview:
> > type circle {
> >         int x;
> >         int y;
> >         float r;
> >         string name;
> > }
> > 
> > circle ca[];
> > 
> > ca = readData("readData.circleArray.in");
> > 
> > readData.circleArray.in:
> > x               y               r               name
> > 1               1               5               CircleOne
> > 2               2               7               CircleTwo
> > 
> > It doesn't deal with spaces in strings in the CSV format for now, but
> > it's a start.
> > 
> > Mihael
> > 
> plain text document attachment (t5g.swift)
> type file;
> 
> // Simulate encapsulating an app's parameters as a struct
> 
> type params {
>   int x;
>   int y;
>   float r;
>   boolean b;
>   string infilename;
>   string outfilename;
> };
> 
> // Simulate an app
> 
> myapp(params p, file infile, file outfile )
> {  
>     app {  
>         db "pecho:" p.x p.y p.r p.b p.infilename p.outfilename  @infile @outfile ;
>     }  
> }  
> 
> // Loop over the parameter array, calling app in parallel
> 
> doall(params plist[])
> {
>   foreach pval,j in plist {
> 
>     // convert filename string to mapped file reference
>     file infile <single_file_mapper;file=pval.infilename>;
>     file outfile <single_file_mapper;file=pval.outfilename>;
> 
>     // Call the application
>     myapp(pval,infile, outfile);
>   }
> }
> 
> // Main
> 
> params plist[];
> plist = readdata("parameters");
> doall(plist);
> plain text document attachment (parameters)
> x               y               r               b               infilename      outfilename
> 1               2               1.234           1               inf001.data     outf001.data
> 3               4               5.678           0               inf002.data     outf002.data
> _______________________________________________
> Swift-devel mailing list
> Swift-devel at ci.uchicago.edu
> http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel




More information about the Swift-devel mailing list