[Swift-user] __root__ in filename

Ketan Maheshwari ketan at mcs.anl.gov
Wed Dec 10 19:37:15 CST 2014


Thanks! The separate files mapping approach seems to be working.

On Wed, Dec 10, 2014 at 4:16 PM, Michael Wilde <wilde at anl.gov> wrote:

> Here's a few more examples of simpler approaches. These *should* work
> correctly for both relative and absolute filename mappings, even with
> the __root__ convention.
>
> - Mike
>
> $ cat regexpmap1.swift
>
> type file;
>
> file data[]<filesys_mapper; prefix="f", suffix=".dat">;
>
> file image[] <structured_regexp_mapper;
>    source=data,
>    match="^(.*)dat$",
>    transform="\\1img">;
>
> foreach j, i in data {
>    tracef(" data[%i] = %s\nimage[%i] = %s\n",
>           i, filename(data[i]),
>           i, filename(image[i]));
> }
>
> $ swift ./regexpmap1.swift
> Swift 0.95 RC5 swift-r7605 cog-r3874
> RunID: run077
> Progress: Wed, 10 Dec 2014 22:10:29+0000
>   data[0] = f1.dat
> image[0] = f1.img
>   data[3] = f4.dat
> image[3] = f4.img
>   data[1] = f2.dat
> image[1] = f2.img
>   data[2] = f3.dat
> image[2] = f3.img
> Final status:Wed, 10 Dec 2014 22:10:29+0000
>
> The simplest approach is to just map one array to each file suffix. The
> filesys mapper will return the files in the same lexicographic order for
> each pattern:
>
> $ cat ./regexpmap3.swift
>
> type file;
>
> file data[]  <filesys_mapper; prefix="f", suffix=".dat">;
> file image[] <filesys_mapper; prefix="f", suffix=".img">;
>
> foreach j, i in data {
>    tracef(" data[%i] = %s\nimage[%i] = %s\n",
>           i, filename(data[i]),
>           i, filename(image[i]));
> }
>
> $ swift ./regexpmap3.swift
> Swift 0.95 RC5 swift-r7605 cog-r3874
> RunID: run078
> Progress: Wed, 10 Dec 2014 22:10:56+0000
>   data[2] = f3.dat
> image[2] = f3.img
>   data[3] = f4.dat
> image[3] = f4.img
>   data[0] = f1.dat
> image[0] = f1.img
>   data[1] = f2.dat
> image[1] = f2.img
> Final status:Wed, 10 Dec 2014 22:10:56+0000
> swift$
>
> On 12/10/14 3:52 PM, Michael Wilde wrote:
> > This example may be helpful:
> >
> > $ cat -n regexpmap.swift
> >        1    type file;
> >        2
> >        3    string fnames[] = [
> >        4    "/data/dir/000001/f01.dat",
> >        5    "/data/dir/000001/f02.dat",
> >        6    "/data/dir/000002/f03.dat",
> >        7    "/data/dir/000002/f04.dat",
> >        8    "/data/dir/000003/f05.dat",
> >        9    "/data/dir/000003/f06.dat"];
> >       10
> >       11    file data[]<array_mapper; files=fnames>;
> >       12
> >       13    file image[] <structured_regexp_mapper;
> >       14      source=data,
> >       15      match="(/data/dir/[0-9][0-9]*/.*?)dat$",
> >       16      transform="\\1img">;
> >       17
> >       18    iterate i {
> >       19      tracef(" data[%i] = %s\nimage[%i] = %s\n",
> >       20             i, filename(data[i]),
> >       21             i, filename(image[i]));
> >       22    } until (i==6);
> >
> > $ swift regexpmap.swift
> >
> > Swift 0.95 RC5 swift-r7605 cog-r3874
> > RunID: run067
> > Progress: Wed, 10 Dec 2014 21:50:42+0000
> >    data[0] = __root__/data/dir/000001/f01.dat
> > image[0] = __root__/data/dir/000001/f01.img
> >    data[1] = __root__/data/dir/000001/f02.dat
> > image[1] = __root__/data/dir/000001/f02.img
> >    data[2] = __root__/data/dir/000002/f03.dat
> > image[2] = __root__/data/dir/000002/f03.img
> >    data[3] = __root__/data/dir/000002/f04.dat
> > image[3] = __root__/data/dir/000002/f04.img
> >    data[4] = __root__/data/dir/000003/f05.dat
> > image[4] = __root__/data/dir/000003/f05.img
> >    data[5] = __root__/data/dir/000003/f06.dat
> > image[5] = __root__/data/dir/000003/f06.img
> > Final status:Wed, 10 Dec 2014 21:50:42+0000
> >
> >
> >
> > On 12/10/14 3:21 PM, Mihael Hategan wrote:
> >> Hi,
> >>
> >> In 0.95 this is a bit of a known problem. This should be fixed in trunk.
> >> A backport of the fix may be possible and should probably be done. Can
> >> you easily switch to trunk? If not, I'll try to do the backport sooner.
> >>
> >> Mihael
> >>
> >> On Wed, 2014-12-10 at 15:11 -0600, Ketan Maheshwari wrote:
> >>> Hi,
> >>>
> >>> In an app that needs input files with same name but different
> extension, I
> >>> am trying to use regexp on the filename() of a mapped file. However,
> Swift
> >>> adds '__root__' to the path of file which cause the file to be not
> found in
> >>> the new location resulting in error as:
> >>>
> >>> org.griphyn.vdl.mapping.MissingDataException: File not found for
> >>> variable 'in_sto':
> >>>
> file://localhost/__root__/lcrc/project/NEXTGENOPT/DSP_old/examples/smps/dcap/dcap332_500.sto
> >>>
> >>> Relevant code is:
> >>>
> >>> file timfiles[]<filesys_mapper;
> >>> location="/lcrc/project/NEXTGENOPT/DSP_old/examples/smps/dcap",
> >>> pattern="*.tim">;
> >>> file in_sto <single_file_mapper; file=regexp(filename(timfiles[0]),
> "tim",
> >>> "sto")>;
> >>>
> >>> Thanks for any workaround suggestions for this,
> >>> Ketan
> >>> _______________________________________________
> >>> Swift-user mailing list
> >>> Swift-user at ci.uchicago.edu
> >>> https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user
> >> _______________________________________________
> >> Swift-user mailing list
> >> Swift-user at ci.uchicago.edu
> >> https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user
>
> --
> Michael Wilde
> Mathematics and Computer Science          Computation Institute
> Argonne National Laboratory               The University of Chicago
>
> _______________________________________________
> Swift-user mailing list
> Swift-user at ci.uchicago.edu
> https://lists.ci.uchicago.edu/cgi-bin/mailman/listinfo/swift-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/swift-user/attachments/20141210/cea23401/attachment.html>


More information about the Swift-user mailing list