IO.pod (PDL-2.082) | : | IO.pod (PDL-2.083) | ||
---|---|---|---|---|
=head1 NAME | =head1 NAME | |||
PDL::IO - An overview of the modules in the PDL::IO namespace. | PDL::IO - An overview of the modules in the PDL::IO namespace. | |||
=head1 SYNOPSIS | =head1 SYNOPSIS | |||
# At your system shell, type: | # At your system shell, type: | |||
perldoc PDL::IO | perldoc PDL::IO | |||
# from perldl: | ||||
pdl> ?? PDL::IO | ||||
=head1 DESCRIPTION | =head1 DESCRIPTION | |||
PDL contains many modules for displaying, loading, and saving data. | PDL contains many modules for displaying, loading, and saving data. | |||
=over | =over | |||
=item * Perlish or Text-Based | =item * Perlish or Text-Based | |||
A few IO modules provide Perl-inspired capabilities. These are | A few IO modules provide Perl-inspired capabilities. These are | |||
PDL::IO::Dumper and PDL::IO::Storable. PDL::IO::Misc provides | PDL::IO::Dumper and PDL::IO::Storable. PDL::IO::Misc provides | |||
simpler routines for dealing with delimited files, though its | simpler routines for dealing with delimited files, though its | |||
capabilities are limited to tabular or at most 3-d data sets. | capabilities are limited to tabular or at most 3-d data sets. | |||
=item * Raw Format | =item * Raw Format | |||
PDL has two modules that store their data in a raw binary format; they | PDL has two modules that store their data in a raw binary format; they | |||
are PDL::IO::FastRaw and PDL::IO::FlexRaw. They are fast but the files | are PDL::IO::FastRaw and PDL::IO::FlexRaw. They are fast but the files | |||
they produce will not be readable across different architectures. | they produce will not be readable across different architectures. | |||
These two modules are so similar that they could probably be combined. | These two modules are so similar that they could probably be combined. | |||
You can also directly access the data from Perl using | ||||
L<PDL::Core/get_dataref>. | ||||
=item * Data Browsing | =item * Data Browsing | |||
At the moment, only PDL::IO::Browser provides data browsing functionality. | At the moment, only PDL::IO::Browser provides data browsing functionality. | |||
=item * Image Handling | =item * Image Handling | |||
PDL has a handful of modules that will load images into ndarrays for you. | PDL has a handful of modules that will load images into ndarrays for you. | |||
They include PDL::IO::Dicom, PDL::IO::FITS, PDL::IO::GD, PDL::IO::Pic, | They include PDL::IO::Dicom, PDL::IO::FITS, PDL::IO::GD, PDL::IO::Pic, | |||
and PDL::IO::Pnm. However, PDL::IO::FITS should also be considered something | and PDL::IO::Pnm. However, PDL::IO::FITS should also be considered something | |||
of a general data format. | of a general data format. | |||
skipping to change at line 52 | skipping to change at line 58 | |||
Both PDL::IO::FastRaw and PDL::IO::FlexRaw provide for direct ndarray-to-disk | Both PDL::IO::FastRaw and PDL::IO::FlexRaw provide for direct ndarray-to-disk | |||
mapping, but they use PDL's underlying mmap functionality to do it, and that | mapping, but they use PDL's underlying mmap functionality to do it, and that | |||
doesn't work for Windows. However, users of all operating systems can still | doesn't work for Windows. However, users of all operating systems can still | |||
use PDL::DiskCache, which can use any desired IO read/write functionality | use PDL::DiskCache, which can use any desired IO read/write functionality | |||
(though you may have to write a small wrapper function). | (though you may have to write a small wrapper function). | |||
=item * General Data Storage Formats | =item * General Data Storage Formats | |||
PDL has a number of modules that interface general data storage libraries. | PDL has a number of modules that interface general data storage libraries. | |||
They include PDL::IO::HDF and PDL::IO::NDF (the latter is now a separate | They include L<PDL::IO::HDF> and L<PDL::IO::NDF> (the latter is now a separate | |||
CPAN module). There is a PDL::IO::IDL, | CPAN module). There is L<PDL::IO::IDL>. | |||
though at the moment it is not distributed with PDL. PDL::IO::FITS is | L<PDL::IO::FITS> is | |||
something of a general data format, since ndarray data can be stored to a | something of a general data format, since ndarray data can be stored to a | |||
FITS file without loss. PDL::IO::FlexRaw and PDL::IO::FastRaw read and | FITS file without loss. PDL::IO::FlexRaw and PDL::IO::FastRaw read and | |||
write data identical C's low-level C<write> function and PDL::IO::FlexRaw | write data identical C's low-level C<write> function and PDL::IO::FlexRaw | |||
can work with FORTRAN 77 UNFORMATTED files. FlexRaw and Storable provide | can work with FORTRAN 77 UNFORMATTED files. FlexRaw and Storable provide | |||
general data storage capabilities. Finally, PDL can read Grib (weather-data) | general data storage capabilities. Finally, PDL can read Grib (weather-data) | |||
files using the CPAN module PDL::IO::Grib. | files using the CPAN module PDL::IO::Grib. | |||
=item * Making Movies | =item * Making Movies | |||
You can make an MPEG animation using PDL::IO::Pic's wmpeg function. | You can make an MPEG animation using PDL::IO::Pic's wmpeg function. | |||
skipping to change at line 89 | skipping to change at line 95 | |||
If you find yourself writing scripts to procss many data files, | If you find yourself writing scripts to procss many data files, | |||
especially if that data processing is not necessarily in sequential | especially if that data processing is not necessarily in sequential | |||
order, you should consider using PDL::DiskCache. To read more, | order, you should consider using PDL::DiskCache. To read more, | |||
check the L<PDL::DiskCache documentation|PDL::DiskCache>. | check the L<PDL::DiskCache documentation|PDL::DiskCache>. | |||
=head2 PDL::IO::Browser | =head2 PDL::IO::Browser | |||
The Browser module provides a text-based data browser for 2D data sets. | The Browser module provides a text-based data browser for 2D data sets. | |||
It uses the CURSES library to do the scrolling, so if your operating | It uses the CURSES library to do the scrolling, so if your operating | |||
system does not have the cureses library, you won't be able to install | system does not have the curses library, you won't be able to install | |||
this on your machine. (Note that the package containing the header | this on your machine. (Note that the package containing the header | |||
files for the CURSES library may be called C<libcurses> or possibly | files for the CURSES library may be called C<libcurses> or possibly | |||
C<libncurses>.) | C<libncurses>.) | |||
To see if the module is installed on your machine (and to get more | To see if the module is installed on your machine (and to get more | |||
information about PDL::IO::Browser), follow L<this link|PDL::IO::Browser> | information about PDL::IO::Browser), follow L<this link|PDL::IO::Browser> | |||
or type at the system prompt: | or type at the system prompt: | |||
perldoc PDL::IO::Browser | perldoc PDL::IO::Browser | |||
skipping to change at line 210 | skipping to change at line 216 | |||
=head2 PDL::IO::Grib | =head2 PDL::IO::Grib | |||
A CPAN module last updated in 2000 that allows you to read Grib files. | A CPAN module last updated in 2000 that allows you to read Grib files. | |||
GRIB is a data format commonly used in meteorology. In the off-chance | GRIB is a data format commonly used in meteorology. In the off-chance | |||
that you have it installed, you should L<read PDL::IO::Grib's | that you have it installed, you should L<read PDL::IO::Grib's | |||
documentation|PDL::IO::Grib>. | documentation|PDL::IO::Grib>. | |||
=head2 PDL::IO::HDF, PDL::IO::HDF5 | =head2 PDL::IO::HDF, PDL::IO::HDF5 | |||
Provides an interface to HDF4 and HDF5 file formats, which are kinda like | Provides an interface to HDF4 and HDF5 file formats, which are kinda like | |||
cross-platform binary XML files. HDF stands for B<H>eierarchicl B<D>ata | cross-platform binary XML files. HDF stands for B<H>ierarchical B<D>ata | |||
B<F>ormat. HDF was originally developed at the NCSA. To read more about | B<F>ormat. HDF was originally developed at the NCSA. To read more about | |||
HDF, see L<http://www.hdfgroup.org/>. Note that HDF5 is not presently | HDF, see L<http://www.hdfgroup.org/>. Note that HDF5 is not presently | |||
distributed with PDL, and neither HDF4 nor HDF5 will be installed unless | distributed with PDL, and neither HDF4 nor HDF5 will be installed unless | |||
you have the associated C libraries that these modules interface. Also | you have the associated C libraries that these modules interface. Also | |||
note that the HDF5 library on CPAN is rather old and somebody from HDF | note that the HDF5 library on CPAN is rather old and somebody from HDF | |||
contacted the mailing list in the Fall of 2009 to develop new and better | contacted the mailing list in the Fall of 2009 to develop new and better | |||
HDF5 bindings for Perl. | HDF5 bindings for Perl. | |||
You should look into the L<PDL::IO::HDF (4) documentation|PDL::IO::HDF> or | You should look into the L<PDL::IO::HDF (4) documentation|PDL::IO::HDF> or | |||
L<PDL::IO::HDF5 documentation|PDL::IO::HDF5>, depending upon which module | L<PDL::IO::HDF5 documentation|PDL::IO::HDF5>, depending upon which module | |||
you have installed. | you have installed. | |||
=head2 PDL::IO::IDL | =head2 PDL::IO::IDL | |||
Once upon a time, PDL had a module for reading IDL data files. Unfortunately, i | PDL has a module for reading IDL data files: L<PDL::IO::IDL>. | |||
t | ||||
cannot be distributed because the original author, Craig DeForest, | ||||
signed the IDL license agreement and was unable to negotiate the administrative | ||||
hurdles to get it published. However, it can be found in Sourceforge's CVS atti | ||||
c, and | ||||
any PDL user who has not signed IDL's license agreement can fix it up and resubm | ||||
it it. | ||||
=head2 PDL::IO::Misc | =head2 PDL::IO::Misc | |||
Provides mostly text-based IO routines. Data input and output is | Provides mostly text-based IO routines. Data input and output is | |||
restricted mostly to tabular (i.e. two-dimensional) data sets, | restricted mostly to tabular (i.e. two-dimensional) data sets, | |||
though limited support is provided for 3d data sets. | though limited support is provided for 3d data sets. | |||
Alternative text-based modules support higher dimensions, such | Alternative text-based modules support higher dimensions, such | |||
as PDL::IO::Dumper and PDL::IO::Storable. Check the | as PDL::IO::Dumper and PDL::IO::Storable. Check the | |||
L<PDL::IO::Misc documentation|PDL::IO::Misc> for more details. | L<PDL::IO::Misc documentation|PDL::IO::Misc> for more details. | |||
skipping to change at line 262 | skipping to change at line 264 | |||
need that on your machine in order for this to work. To read more, | need that on your machine in order for this to work. To read more, | |||
see the L<PDL::IO::Pic documentation|PDL::IO::Pic>. Also look into | see the L<PDL::IO::Pic documentation|PDL::IO::Pic>. Also look into | |||
the next module, as well as PDL::IO::GD. | the next module, as well as PDL::IO::GD. | |||
=head2 PDL::IO::Pnm | =head2 PDL::IO::Pnm | |||
Provides methods for reading and writing pnm files (of which pbm is | Provides methods for reading and writing pnm files (of which pbm is | |||
but one). Check the L<PDL::IO::Pnm documentation|PDL::IO::Pnm> for | but one). Check the L<PDL::IO::Pnm documentation|PDL::IO::Pnm> for | |||
more details. Also check out the previous module and PDL::IO::GD. | more details. Also check out the previous module and PDL::IO::GD. | |||
=head2 PDL::IO::STL | ||||
Read and write STL (STereo Lithography) files, containing 3D | ||||
objects. There are many files available from the "Thingiverse". You can | ||||
then view the data in L<PDL::Graphics::TriD>. | ||||
=head2 PDL::IO::Storable | =head2 PDL::IO::Storable | |||
Implements the relevant methods to be able to store and retrieve ndarrays | Implements the relevant methods to be able to store and retrieve ndarrays | |||
via Storable. True, you can use many methods to save a single ndarray. | via Storable. True, you can use many methods to save a single ndarray. | |||
In contrast, this module is particularly useful if you need to save a complex Pe rl structure | In contrast, this module is particularly useful if you need to save a complex Pe rl structure | |||
that contain ndarrays, such as an array of hashes, each of which contains | that contain ndarrays, such as an array of hashes, each of which contains | |||
ndarrays. | ndarrays. | |||
Check the L<PDL::IO::Storable documentation|PDL::IO::Storable> for more | Check the L<PDL::IO::Storable documentation|PDL::IO::Storable> for more | |||
details. See also PDL::IO::Dumper for an alternative stringifier. | details. See also PDL::IO::Dumper for an alternative stringifier. | |||
=head1 Out-of-tree Third-party Modules | =head1 Out-of-tree Third-party Modules | |||
=head2 PDL::IO::CSV | =head2 PDL::IO::CSV | |||
Load/save PDL from/to CSV file (optimized for speed and large data). | Load/save PDL from/to CSV file (optimized for speed and large data). | |||
See the L<PDL::IO::CSV documentation|PDL::IO::CSV>. | See the L<PDL::IO::CSV documentation|PDL::IO::CSV>. | |||
=head2 PDL::IO::DBI | ||||
Load PDL from a L<DBI> handle. See L<PDL::IO::CSV>. | ||||
=head2 PDL::IO::Dcm | ||||
Load PDL from a Dicom file. See L<PDL::IO::Dcm>. | ||||
=head2 PDL::IO::Touchstone | =head2 PDL::IO::Touchstone | |||
A simple interface for reading and writing RF Touchstone files (also known as | A simple interface for reading and writing RF Touchstone files (also known as | |||
".sNp" files). Touchstone files contain complex-valued RF sample data for a | ".sNp" files). Touchstone files contain complex-valued RF sample data for a | |||
device or RF component with some number of ports. The data is (typically) | device or RF component with some number of ports. The data is (typically) | |||
measured by a vector network analyzer under stringent test conditions. | measured by a vector network analyzer under stringent test conditions. | |||
The resulting files are usually provided by manufacturers so RF design | The resulting files are usually provided by manufacturers so RF design | |||
engineers can estimate signal behavior at various frequencies in their circuit | engineers can estimate signal behavior at various frequencies in their circuit | |||
designs. Examples of RF components include capacitors, inductors, resistors, | designs. Examples of RF components include capacitors, inductors, resistors, | |||
skipping to change at line 305 | skipping to change at line 321 | |||
=head2 PDL::IO::MDIF | =head2 PDL::IO::MDIF | |||
A simple interface for reading and writing RF MDIF files (also known as MDF or | A simple interface for reading and writing RF MDIF files (also known as MDF or | |||
.mdf files). MDIF files contain multiple Touchstone files in a text format for | .mdf files). MDIF files contain multiple Touchstone files in a text format for | |||
use in optimizing circuits. For example, a single MDIF file could contain the | use in optimizing circuits. For example, a single MDIF file could contain the | |||
Touchstone RF data for each available value in a line of capacitors (ie, from | Touchstone RF data for each available value in a line of capacitors (ie, from | |||
10pF to 1000pF) provided by a particular manufacturer. | 10pF to 1000pF) provided by a particular manufacturer. | |||
See the L<PDL::IO::MDIF documentation|PDL::IO::MDIF> | See the L<PDL::IO::MDIF documentation|PDL::IO::MDIF> | |||
=head2 PDL::IO::Image | ||||
Load/save PDL from/to image files. See L<PDL::IO::Image>. | ||||
=head2 PDL::IO::XLSX | ||||
Load/save PDL from/to an Excel spreadsheet. See L<PDL::IO::XLSX>. | ||||
=head2 PDL::NetCDF | ||||
Load/save PDL from/to NetCDF files. See L<PDL::NetCDF>. | ||||
=head2 PDL::IO::Nifti | ||||
Load/save PDL from/to Nifti-1 files. See L<PDL::IO::Nifti>. | ||||
=head2 PDL::IO::Matlab | ||||
Load/save PDL from/to MATLAB files. See L<PDL::IO::Matlab>. | ||||
=head2 PDL::IO::Sereal | ||||
Load/save PDL from/to L<Sereal> files. See L<PDL::IO::Sereal>. | ||||
=head2 PDL::CCS | ||||
Has IO modules to load/save PDL from/to sparse data file formats, including | ||||
FITS, LDA-C, MatrixMarket, PETSc. See L<PDL::CCS>. | ||||
=head1 COPYRIGHT | =head1 COPYRIGHT | |||
Copyright 2010 David Mertens (dcmertens.perl@gmail.com). You can | Copyright 2010 David Mertens (dcmertens.perl@gmail.com). You can | |||
distribute and/or modify this document under the same terms as the | distribute and/or modify this document under the same terms as the | |||
current Perl license. | current Perl license. | |||
See: http://dev.perl.org/licenses/ | See: L<http://dev.perl.org/licenses/> | |||
End of changes. 10 change blocks. | ||||
13 lines changed or deleted | 55 lines changed or added |