[Swift-devel] readData
Ben Clifford
benc at hawaga.org.uk
Wed Oct 10 10:38:58 CDT 2007
You may not be experiencing a race in readData.
You may instead be experiencing a race in the implementation of print. It
will print out what it knows about its parameters at the time that its
encountered. Sometimes, that is the value (if the value has been set);
sometimes its the other output you see, a description of the dataset
indicating that it doesn't have a value yet.
Its probably desirable for print to wait for its parameter to be closed.
On Wed, 10 Oct 2007, Michael Wilde wrote:
> OK, what seems to be happening is that a simple script using readdata fails
> occasionally. Ie, some kind of race.
>
> Heres the test script and data file:
>
> -- script t30.swift:
> type circle {
> int x;
> int y;
> }
>
> circle ca;
>
> ca = readdata("d1");
> print(ca.x," ",ca.y);
>
> -- and file d1:
> x y
> 1 10
> 2 20
> $
>
> Running this 6 times, I got 4 successes and 2 failures (of which 5 runs are
> shown here with a few extraneous intevening commands removed):
>
> ...
> RunID: 20071010-1024-1h41p37d
> 1 10
> $ swift -sites.file ./sites.xml -tc.file ./tc.data t30.swift
> Swift v0.3-dev r1339
>
> RunID: 20071010-1024-kiimrf7f
> 1 10
> $ swift -sites.file ./sites.xml -tc.file ./tc.data t30.swift
> Swift v0.3-dev r1339
>
> RunID: 20071010-1024-49v2bnzb
> 1 10
> $ swift -sites.file ./sites.xml -tc.file ./tc.data t30.swift
> Swift v0.3-dev r1339
>
> RunID: 20071010-1025-m0qmf0hc
> 1 10
> $ swift -sites.file ./sites.xml -tc.file ./tc.data t30.swift
> Swift v0.3-dev r1339
>
> RunID: 20071010-1025-cicpxii8
> org.griphyn.vdl.mapping.DataNode with no value at dataset=ca path=.x
> org.griphyn.vdl.mapping.DataNode with no value at dataset=ca path=.y
> $
>
>
>
> On 10/10/07 10:12 AM, Michael Wilde wrote:
> > Thats not what I encountered when I tested (which surprised me).
> > I will restest and see what confused me (or my code).
> >
> > - Mike
> >
> > On 10/10/07 9:31 AM, Mihael Hategan wrote:
> > > 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
> > >
> > >
> > _______________________________________________
> > Swift-devel mailing list
> > Swift-devel at ci.uchicago.edu
> > http://mail.ci.uchicago.edu/mailman/listinfo/swift-devel
> >
> >
> _______________________________________________
> 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