OK here is some deeper diving in to the problem
use PDL; $x = rcols 'tmp.dat'; # This does causes the error #$x = sequence(4)+1; # This works print $x, "\n"; $x *= 100; print $x, "\n"; $y=&PDL::_clump_int($x,-1); print $y, "\n"; # prints [0 0 0 0] ; looks like the error is happening in the internal pp routine _clump_int in slices.pd. I also found ->sever() had the same behaviour with rcols: pdl> $x = rcols 'tmp.dat' Reading data into ndarrays of type: [ Double ] Read in 4 elements. pdl> $x *= 100 pdl> p $x [100 200 300 400] pdl> p $x->sever [0 0 0 0] Note this is not a general problem with dataflow, if I make a sequence and slice or index is then the ops work fine. It is just something weird on the ndarray produced by rcols. Karl > On 7 Jan 2024, at 3:41 pm, Karl Glazebrook via pdl-general > <pdl-general@lists.sourceforge.net> wrote: > > Ah! I believe the difference between medover and median is a clump(-1) to > collapse the dimensions > > There does it indeed to be something wrong with clump too, so that is > probably the underlying cause > > pdl> $x = rcols 'tmp.dat' > > Reading data into ndarrays of type: [ Double ] > Read in 4 elements. > > pdl> p $x > > [1 2 3 4] > pdl> $x *= 100 > > > pdl> p $x > > [100 200 300 400] > pdl> p $x->clump(-1) > > [0 0 0 0] > > What could be happening in rcols() that produces an ndarray that behaves like > that? > > Karl > > >> On 7 Jan 2024, at 12:48 pm, Luis Mochan <moc...@icf.unam.mx >> <mailto:moc...@icf.unam.mx>> wrote: >> >> I noticed that medover and maxover do work as expected in this case. >> >> >> On Sun, Jan 07, 2024 at 11:26:56AM +1100, Karl Glazebrook via pdl-general >> wrote: >>> Hi all, >>> >>> This dinosaur just upgraded from PDL v2.025 to v.2.084 (yes, I know that is >>> lame) >>> >>> I noticed a few things when running one of my complicated codes, I will >>> start seperate email threads >>> >>> First there seems to be a serious rcols bug: >>> >>> >>> e.g. create a file >>> >>> # tmp.dat >>> 1 >>> 2 >>> 3 >>> 4 >>> >>> >>> Loaded PDL v2.084 (supports bad values) >>> pdl> $x = rcols 'tmp.dat' >>> Reading data into ndarrays of type: [ Double ] >>> Read in 4 elements. >>> >>> pdl> p $x >>> [1 2 3 4] >>> pdl> $x *= 100 >>> >>> pdl> p $x >>> [100 200 300 400] >>> pdl> p median($x) >>> 0 >>> pdl> p $x >>> [100 200 300 400] >>> >>> >>> It seems the median function sees the values BEFORE the inplace >>> multiplacation, whereas print does not. This is very bad. min() and max() >>> are similar. No idea what is going on here! The behaviour or absent from >>> v2.025 >>> >>> Notes >>> - making a $x->copy() removes the effect >>> - creating $x using sequence also removes, so it is something to do with >>> rcols() and not inplace in general? >>> >>> I’d be interested to know if others can reproduce this. It definitely needs >>> a fix >>> >>> best >>> >>> Karl >>> >>> >>> >> >> >>> _______________________________________________ >>> pdl-general mailing list >>> pdl-general@lists.sourceforge.net <mailto:pdl-general@lists.sourceforge.net> >>> https://lists.sourceforge.net/lists/listinfo/pdl-general >> >> >> -- >> >> o >> W. Luis Mochán, | tel:(52)(777)329-1734 /<(*) >> Instituto de Ciencias Físicas, UNAM | fax:(52)(777)317-5388 `>/ /\ >> Av. Universidad s/n CP 62210 | (*)/\/ \ >> Cuernavaca, Morelos, México | moc...@fis.unam.mx >> <mailto:moc...@fis.unam.mx> /\_/\__/ >> GPG: 791EB9EB, C949 3F81 6D9B 1191 9A16 C2DF 5F0A C52B 791E B9EB > > _______________________________________________ > pdl-general mailing list > pdl-general@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/pdl-general
_______________________________________________ pdl-general mailing list pdl-general@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/pdl-general