I want to use DeleteCases (or any appropriate function) to remove elements of a list, which in turn are lists of fixed size. The rule I wish to apply is that any element of the list which already appear elsewhere in the list, up to any number of -1 is to be removed. But I don't know how to do this kind of tricky pattern matching. For example, I have the following list:
myData = {{h -> 255.155, c -> 0, s -> -10000.},
{h -> -255.155, c -> 0, s -> 10000.},
{h -> 0, c -> 0, s -> 10000.},
{h -> 0, c -> 0, s -> -10000.},
{h -> 255.155, c -> 0, s -> 10000.},
{h -> -255.155, c -> 0, s -> -10000.},
{h -> -255.155, c -> 1870.83, s -> 3535.53},
{h -> 255.155, c -> -1870.83, s -> -3535.53},
{h -> 0, c -> 1870.83, s -> 3535.53},
{h -> 0, c -> -1870.83, s -> -3535.53},
{h -> 255.155, c -> 1870.83, s -> 3535.53},
{h -> -255.155, c -> -1870.83, s -> -3535.53},
{h -> 255.155, c -> -4000., s -> 0},
{h -> -255.155, c -> 4000., s -> 0},
{h -> 0, c -> 4000., s -> 0},
{h -> 0, c -> -4000., s -> 0},
{h -> 255.155, c -> 4000., s -> 0},
{h -> -255.155, c -> -4000., s -> 0},
{h -> 255.155, c -> 1870.83, s -> -3535.53},
{h -> -255.155, c -> -1870.83, s -> 3535.53},
{h -> 0, c -> 1870.83, s -> -3535.53},
{h -> 0, c -> -1870.83, s -> 3535.53},
{h -> 255.155, c -> -1870.83, s -> 3535.53},
{h -> -255.155, c -> 1870.83, s -> -3535.53},
{h -> 255.155, c -> 0, s -> 0},
{h -> -255.155, c -> 0, s -> 0},
{h -> 0, c -> 0, s -> 0}}
As can be seen the first element myData[[1]] (which is a list of three items) is a duplicate (up to the minus signs) myData[[2]] myData[[5]] myData[[6]]. But I don't know how to get Mathematica to remove these.
As an added bonus, it would be nice that, among the ones that are duplicates up to -1, the one with the least number of negatives is kept, and all others are removed. (In the example above, myData[[5]] would be among those that would be kept.)

GatherBydoes as well ("It is based on tagging the list entries with some function of the entry that serves as an equivalence tag") – Szabolcs Feb 05 '13 at 23:12GatherBycomes to my mind first, beforeReap-Sow, but for some reason here it didn't.GatherByis actually several times faster, but here it is not seen, since the bottleneck in your code is elsewhere (mapping, rule application). – Leonid Shifrin Feb 05 '13 at 23:22#/@, so I don't even know how your code works... :( – QuantumDot Feb 06 '13 at 04:05# /@ & #2- no, what I had there was just rule application{h, c, s} /. #2, where#2is a second argument which, in the context of last optional argument ofReap, gives a list of collected results for a given tag. – Leonid Shifrin Feb 06 '13 at 04:10Reap, it has the third optional argument, which is a functionf[tag,collected]. So,#2simply means a list of results collected byReapfor a given tag. Since I am not interested in the tag itself,#1is not present in the code. – Leonid Shifrin Feb 07 '13 at 16:55