[Swift-user] __root__ in filename
Michael Wilde
wilde at anl.gov
Wed Dec 10 16:16:41 CST 2014
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
More information about the Swift-user
mailing list