1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
|
package Demeter::PCA::Xanes;
use Moose::Role;
use PDL::Lite;
has 'emin' => (is => 'rw', isa => 'LaxNum', default => Demeter->co->default('pca', 'emin'));
has 'emax' => (is => 'rw', isa => 'LaxNum', default => Demeter->co->default('pca', 'emax'));
sub space_description {
my ($self) = @_;
return q{normalized mu(E)};
};
sub ylabel {
my ($self) = @_;
return q{Normalized absorption};
};
sub update {
my ($self, $data) = @_;
$data -> _update('fft');
return $data;
};
sub interpolate_data {
my ($self, $data) = @_;
$self->update($data);
$self->data($data);
$self->dispense('analysis', 'pca_interpolate', {suff=>$data->nsuff});
$self->data(q{});
return $self;
};
sub interpolate_stack {
my ($self) = @_;
$self->xmin($self->emin);
$self->xmax($self->emax);
my @groups = @{ $self->stack };
@groups = grep {ref($_) =~ m{Data\z}} @groups;
my $first = shift @groups;
$self->update($first);
my $e1 = $first->bkg_e0 + $self->xmin;
my $i1 = $first->iofx('energy', $e1);
my $e2 = $first->bkg_e0 + $self->xmax;
my $i2 = $first->iofx('energy', $e2);
$self->observations($i2-$i1+1);
$self->undersampled($self->observations <= $#{$self->stack});
$first->standard;
$self->dispense('analysis', 'pca_prep', {suff=>$first->nsuff, i1=>$i1, i2=>$i2});
foreach my $g (@groups) {
$self->interpolate_data($g);
};
$first->unset_standard;
$self->update_stack(0);
return $self;
};
1;
=head1 NAME
Demeter::PCA::Deriv - Principle components analysis on mu(E) data
=head1 VERSION
This documentation refers to Demeter version 0.9.26.
=head1 SYNOPSIS
=head1 SERIALIZATION AND DESERIALIZATION
Good question ...
=head1 CONFIGURATION AND ENVIRONMENT
See L<Demeter::Config> for a description of the configuration system.
See the C<pca> configuration group for the relevant parameters.
=head1 DEPENDENCIES
Demeter's dependencies are in the F<Build.PL> file.
=head1 BUGS AND LIMITATIONS
=over 4
=item *
Document me!
=back
Please report problems to the Ifeffit Mailing List
(L<http://cars9.uchicago.edu/mailman/listinfo/ifeffit/>)
Patches are welcome.
=head1 AUTHOR
Bruce Ravel (L<http://bruceravel.github.io/home>)
L<http://bruceravel.github.io/demeter/>
=head1 LICENCE AND COPYRIGHT
Copyright (c) 2006-2019 Bruce Ravel (L<http://bruceravel.github.io/home>). All rights reserved.
This module is free software; you can redistribute it and/or
modify it under the same terms as Perl itself. See L<perlgpl>.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
=cut
|