-
Notifications
You must be signed in to change notification settings - Fork 5
Description
I find that it's pretty common to have a range of (say) rows where one parameter varies on every row, one varies every other row, one varies every 4 rows, etc. Right now there's not really a good way to specify this. You can use patterns for the first case and ranges for the last case, but for the intermediate cases you have to just list every well with commas.
I'd like a more semantic way to express this, but it also needs to be something intuitive (because I don't want the format to turn cryptic). Right now, I'm not really sure what that would be. Some ideas:
-
[row.A-H.xxoo]: Herexmeans that a well is in use, andomeans that it's not. I could use other characters as well. In order to distinguish between regular values and patterns like this, I'd have to require values to be scalar. It's nice that I could specify a range once, and then a bunch of different masks within it, e.g.:[row.A-H] xo.attr = '1' ox.attr = '2' xxoo.attr = '3' ooxx.attr = '4' xxxxoooo.attr = '5' ooooxxxx.attr = '6'You could imagine extending this syntax to multiple dimensions, e.g.
[well.A1-B12.xo-ox]specifies a pattern similar to[irow]. I might even allow[row.A-B.xo-ox]as an exact equivalent to[irow]. This is a bit interesting because it specifies a 2D pattern for rows, which up until now have been intrinsically 1D. But the semantics are pretty clear.I'm a bit worried that this syntax is getting a bit cryptic, and that it would be hard for someone who knew nothing about the format to look at and grok. I might have to do some research and see what people think.
If I do add some sort of syntax like this, I might want to remove the original pattern syntax and the irow/icol groups. That would of course be a massive backwards-incompatible change, and would require jumping to v4.