[Swift-devel] readData
Ben Clifford
benc at hawaga.org.uk
Wed Oct 10 11:12:47 CDT 2007
if you want a hack to stop the below, you can say something like:
print(@strcat(a,""))
instead of
print(a)
I think.
On Wed, 10 Oct 2007, Ben Clifford wrote:
>
> 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