For what it is worth, using approx() from PDL::Core
was needed to fix a number of PDL tests for PDL-2.4.10
that involved floating point values. The other trick
that I've found useful is to use diag() from
Test::More with the tests to output diagnostic
information. Many times the test can be formulated
like:
ok(test($a,$b), 'my test') || diag("\$a = $a; \$b = $b\n");
Puneet, I'm glad it seems to be working for you now.
One of the things I've read about cpanm is that it
gobbles up errors etc.. That makes it very nice for
the "no problems" scenario but I'm not sure how
helpful it is if there are difficulties.
Cheers,
Chris
On 12/22/2011 10:29 PM, Maggie X wrote:
Thank you for trying it out. Glad it worked! But I'm not sure why just
printing out the numbers would make it work. Was there anything else that
you have tried to make it work?
Best,
Maggie
On Thu, Dec 22, 2011 at 10:13 PM, Puneet Kishor<[email protected]> wrote:
Here ya go... I did as you said, and now it says all tests passed. My
guess is that the darn thing would work well if I just installed it without
testing it, but `cpanm` stops as soon as the first test croaks.
punkish@mumbai ~/Projects/PDL-Stats-0.5.5$make test
PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command::MM"
"-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/stats_basic.t ..... ok
t/stats_glm.t ....... ok
t/stats_kmeans.t .... 1/18 R2 0.786191536748329
centroid
[
[ 1.5 5.5]
[ 8.5 12]
[15.5 19]
]
cluster
[
[1 1 1 1 0 0 0]
[0 0 0 0 1 1 1]
]
ms
[
[ 1.25 0.25]
[ 1.25 0.66666667]
[ 1.25 0.66666667]
]
n [4 3]
-6.66666570836583e-08R2 0.786191536748329
centroid
[
[ 1.5 5.5]
[ 8.5 12]
[15.5 19]
]
cluster
[
[1 1 1 1 0 0 0]
[0 0 0 0 1 1 1]
]
ms
[
[ 1.25 0.25]
[ 1.25 0.66666667]
[ 1.25 0.66666667]
]
n [4 3]
t/stats_kmeans.t .... ok
t/stats_ols_rptd.t .. ok
t/stats_ts.t ........ ok
All tests successful.
Files=5, Tests=147, 1 wallclock secs ( 0.03 usr 0.01 sys + 0.93
cusr 0.03 csys = 1.00 CPU)
Result: PASS
No tests defined for PDL::Stats::Basic extension.
PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command::MM"
"-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
t/stats_distr.t .. ok
All tests successful.
Files=1, Tests=43, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.13
cusr 0.00 csys = 0.15 CPU)
Result: PASS
No tests defined for PDL::Stats::GLM extension.
No tests defined for PDL::Stats::Kmeans extension.
PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command::MM"
"-e" "test_harness(0, '../blib/lib', '../blib/arch')" t/*.t
t/cdf.t .. ok
All tests successful.
Files=1, Tests=4, 0 wallclock secs ( 0.02 usr 0.00 sys + 0.06
cusr 0.00 csys = 0.08 CPU)
Result: PASS
No tests defined for PDL::Stats::TS extension.
punkish@mumbai ~/Projects/PDL-Stats-0.5.5$
On Dec 22, 2011, at 9:08 PM, Maggie X wrote:
I've seen cases where the test fails simply because of the precision
differ
on different platforms. That's why I wanted to see what you get when you
do
print $m{ms}->sumover(). But I guess make test doesn't actually print out
the values to stdout... How about this?
Add
print STDERR t_kmeans_bad();
168> is(tapprox( t_kmeans_bad(), 0 ), 1);
169> sub t_kmeans_bad {
170> my $data = sequence 7, 3;
171> $data = $data->setbadat(4,0);
172> my %m = $data->kmeans({NCLUS=>2, NTRY=>10, V=>0});
print STDERR "$_\t$m{$_}\n" for (sort keys %m);
173> return sum( $m{ms}->sumover - pdl qw( 1.5 1.9166667 1.9166667
) );
174> }
Best,
Maggie
On Thu, Dec 22, 2011 at 9:06 PM, Puneet Kishor<[email protected]>
wrote:
I should have added my congratulations and gratitude for taking 2.4.9
to a
point that it builds and installs beautifully, without any heartburn.
Perhaps because most of the dependencies got installed when I installed
2.4.6 via MacPorts.
Dependencies are definitely an issue, but we've been working
to improve the auto-detection and build logic so things are
much less fragile than before...
I am doing a lot of stuff using R, so am curious to try out PDL::Stats.
For now, I am using R compiled inside Postgres using PL/R... what a
wonderful experience to get my data out of Postgres and analyze it right
within the database.
Wrt PDL::Stats, my guess is the test failure has nothing to do with it
being on a Mac/10.7. Perl 5.14.1 should be Perl 5.14.1 no matter what
platform, no?
On Dec 22, 2011, at 7:50 PM, chm wrote:
On 12/22/2011 7:48 PM, Puneet Kishor wrote:
Inspired by the lovely blurb below, I tried to install PDL::Stats but
failed. Here is the relevant bit from the log of my failed attempt --
----
PERL_DL_NONLAZY=1 /opt/local/bin/perl "-MExtUtils::Command::MM" "-e"
"test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/stats_basic.t ..... ok
t/stats_glm.t ....... ok
# Failed test at t/stats_kmeans.t line 168.
# got: ''
# expected: '1'
# Looks like you failed 1 test of 18.
t/stats_kmeans.t ....
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/18 subtests
t/stats_ols_rptd.t .. ok
t/stats_ts.t ........ ok
Test Summary Report
-------------------
t/stats_kmeans.t (Wstat: 256 Tests: 18 Failed: 1)
Failed test: 13
Non-zero exit status: 1
Files=5, Tests=147, 1 wallclock secs ( 0.03 usr 0.01 sys + 0.91
cusr
0.04 csys = 0.99 CPU)
Result: FAIL
Failed 1/5 test programs. 1/147 subtests failed.
make: *** [test_dynamic] Error 255
-> FAIL Installing PDL::Stats failed. See
/Volumes/roller/Users/punkish/.cpanm/build.log for details.
----
Here is line 168 (test #13) from t/stats_kmeans.t
168> is(tapprox( t_kmeans_bad(), 0 ), 1);
169> sub t_kmeans_bad {
170> my $data = sequence 7, 3;
171> $data = $data->setbadat(4,0);
172> my %m = $data->kmeans({NCLUS=>2, NTRY=>10, V=>0});
173> return sum( $m{ms}->sumover - pdl qw( 1.5 1.9166667
1.9166667
) );
174> }
I am on Mac OS X Lion with Perl 5.14.1 and PDL 2.4.6 installed via
MacPorts
^^^^^
|||||
My guess it the problem is you are using PDL-2.4.6 and not
the current PDL-2.4.9 (or even better the current CPAN
Developers release version).
I know there were some fixes the are in PDL-2.4.9 that
helped Maggie X's stuff work. Maybe she can recall any
tricks to build her modules with a fairly old PDL (i.e.,
one not having the many fixes and features added in the
past couple of years).
--Chris
On Dec 22, 2011, at 3:26 PM, Maggie X wrote:
Hi Chris,
Thanks for including the info! Here's the blurb for PDL::Stats.
--------------
This is a collection of statistics modules in Perl Data Language,
with
a
quick-start guide for non-PDL people.
They make perldl--the simple shell for PDL--work like a teenie weenie
R,
but with PDL threading--"the fast (and automagic) vectorised
iteration
of
'elementary operations' over arbitrary slices of multidimensional
data"--of
procedures including t-test, ordinary least squares regression, and
k-means
clustering.
---------------
Best,
Maggie
_______________________________________________
Perldl mailing list
[email protected]
http://mailman.jach.hawaii.edu/mailman/listinfo/perldl