Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Storage needs

2 views
Skip to first unread message

Demian Riccardi

unread,
Jun 23, 2015, 1:30:02 PM6/23/15
to mo...@perl.org
Hello,

I'm trying to add storage to my library (HackaMol), and I think I'm close to getting it to work. My library depends on a non-moose class (Math::Vector::Real), which I was able to get serialized:


Any attributes that are Math::Vector:Real objects serialize, unless they are an additional level below in the object, e.g. (ArrayRef[Math::Vector::Real])  In the script below (along with runtime errors) I can store and load the HackaMol::Atom if I remove the coords attribute.  The coords attribute has Array traits for storing large numbers of atomic configurations, a characteristic that is central to HackaMol.

you can see what I added to get the storage to sorta work here:

you'll notice the strange add_custom_type_handler( '[Math::Vector::Real]'   which was a step I was hoping would bring me closer.  Is there a way to get this to work?  

Thanks!

Demian

use Modern::Perl;

use Math::Vector::Real;

use HackaMol;


my $atom = HackaMol::Atom->new(Z=>1, coords=>[V(1,1,2)]);

print $atom->dump;


$atom->store('atom.json');


my $atom_again = HackaMol::Atom->load('atom.json');

print $atom_again->dump;




Object ({1, 1, 2}) does not have a &pack method, cannot collapse at /Users/riccade/perl5/perlbrew/perls/p5.20.1t/lib/site_perl/5.20.1/MooseX/Storage/Engine.pm line 209.

MooseX::Storage::Engine::__ANON__(Math::Vector::Real=ARRAY(0x7f93a8805468), HASH(0x7f93a8f90700)) called at /Users/riccade/perl5/perlbrew/perls/p5.20.1t/lib/site_perl/5.20.1/MooseX/Storage/Engine.pm line 254

MooseX::Storage::Engine::__ANON__(ARRAY(0x7f93a882d478), HASH(0x7f93a8f90700)) called at /Users/riccade/perl5/perlbrew/perls/p5.20.1t/lib/site_perl/5.20.1/MooseX/Storage/Engine.pm line 92

MooseX::Storage::Engine::collapse_attribute_value(MooseX::Storage::Engine=HASH(0x7f93ac54b138), Moose::Meta::Class::__ANON__::SERIAL::2=HASH(0x7f93ab1ec208), HASH(0x7f93a8f90700)) called at /Users/riccade/perl5/perlbrew/perls/p5.20.1t/lib/site_perl/5.20.1/MooseX/Storage/Engine.pm line 62

MooseX::Storage::Engine::collapse_attribute(MooseX::Storage::Engine=HASH(0x7f93ac54b138), Moose::Meta::Class::__ANON__::SERIAL::2=HASH(0x7f93ab1ec208), HASH(0x7f93a8f90700)) called at /Users/riccade/perl5/perlbrew/perls/p5.20.1t/lib/site_perl/5.20.1/MooseX/Storage/Engine.pm line 145

MooseX::Storage::Engine::map_attributes(MooseX::Storage::Engine=HASH(0x7f93ac54b138), "collapse_attribute", HASH(0x7f93a8f90700)) called at /Users/riccade/perl5/perlbrew/perls/p5.20.1t/lib/site_perl/5.20.1/MooseX/Storage/Engine.pm line 39

MooseX::Storage::Engine::collapse_object(MooseX::Storage::Engine=HASH(0x7f93ac54b138)) called at /Users/riccade/perl5/perlbrew/perls/p5.20.1t/lib/site_perl/5.20.1/MooseX/Storage/Basic.pm line 14

MooseX::Storage::Basic::pack(HackaMol::Atom=HASH(0x7f93a882d550)) called at /Users/riccade/perl5/perlbrew/perls/p5.20.1t/lib/site_perl/5.20.1/MooseX/Storage/Format/JSON.pm line 25

MooseX::Storage::Format::JSON::freeze(HackaMol::Atom=HASH(0x7f93a882d550)) called at /Users/riccade/perl5/perlbrew/perls/p5.20.1t/lib/site_perl/5.20.1/MooseX/Storage/IO/File.pm line 20

MooseX::Storage::IO::File::store(HackaMol::Atom=HASH(0x7f93a882d550), "atom.json") called at atom.pl line 6




0 new messages