[python-mpop] 01/07: New upstream version 1.5.0

Antonio Valentino a_valentino-guest at moszumanska.debian.org
Sat Oct 21 07:34:42 UTC 2017


This is an automated email from the git hooks/post-receive script.

a_valentino-guest pushed a commit to branch master
in repository python-mpop.

commit 3bf0edc22df01ea34327a58f60a594d1d75837dd
Author: Antonio Valentino <antonio.valentino at tiscali.it>
Date:   Sat Oct 21 06:47:36 2017 +0000

    New upstream version 1.5.0
---
 .bumpversion.cfg                 |    2 +-
 changelog.rst                    | 1437 +++-----------------------------------
 mpop/channel.py                  |   97 +--
 mpop/imageo/formats/ninjotiff.py |    9 +-
 mpop/imageo/geo_image.py         |    4 +-
 mpop/instruments/viirs.py        |   15 +-
 mpop/instruments/visir.py        |    4 +-
 mpop/projector.py                |  332 +++++----
 mpop/satin/aapp1b.py             |   68 +-
 mpop/satin/eps_l1b.py            |   16 +-
 mpop/satin/mipp_xrit.py          |   28 +-
 mpop/satin/viirs_sdr.py          |   39 +-
 mpop/scene.py                    |    2 +-
 mpop/tests/test_projector.py     |   79 ++-
 mpop/version.py                  |    2 +-
 setup.cfg                        |    1 -
 utils/precompute_projection.py   |  109 +++
 17 files changed, 648 insertions(+), 1596 deletions(-)

diff --git a/.bumpversion.cfg b/.bumpversion.cfg
index 3ed55f4..36b5502 100644
--- a/.bumpversion.cfg
+++ b/.bumpversion.cfg
@@ -1,5 +1,5 @@
 [bumpversion]
-current_version = 1.4.0
+current_version = 1.5.0
 commit = True
 tag = True
 
diff --git a/changelog.rst b/changelog.rst
index 4ed0c52..4d174b7 100644
--- a/changelog.rst
+++ b/changelog.rst
@@ -1,117 +1,155 @@
 Changelog
 =========
 
-v1.4.0 (2017-02-20)
+
+v1.5.0 (2017-10-18)
 -------------------
 
+Fix
+~~~
+- Bugfix: Calibration of channel 3A reflectances was wrong!
+  [Adam.Dybbroe]
+- Bugfix: RGBs using AVHR 3a/3b with Metop GDS were wrong, as the mask
+  was not handled when stacking arrays. [Adam.Dybbroe]
+
+Other
+~~~~~
 - Update changelog. [Martin Raspaud]
+- Bump version: 1.4.0 → 1.5.0. [Martin Raspaud]
+- Add zero seconds option for ninjotiff. [Martin Raspaud]
+- Numexpr dependency fixed. [Adam.Dybbroe]
+- Fix aapp-l1b reader handling orbit numbers < 10000. [Adam.Dybbroe]
+- Add links to EUM docs in header documentation. [Adam.Dybbroe]
+- Requires python2-numexpr. [Adam.Dybbroe]
+- Fill out M07 masked values with M06, to partly mitigate missing
+  reflectance data inside VIIRS swath (increasing problem with later
+  CSPP versions) [Adam.Dybbroe]
+- Numpy>=1.10 compliant. Return a copy (instead of a view) of the band
+  geolocations when creating the SwathDefinition for the band area.
+  [Adam.Dybbroe]
 
-- Bump version: 1.3.1 → 1.4.0. [Martin Raspaud]
+  Not really sure if this is where the real problem sits, but seems to fix a problem
+  with masking with newer numpy version (>=1.10)
+- Make eps-l1b reader numpy>=1.12 compatible. [Adam.Dybbroe]
+- Change requirement to numexpr. [Adam.Dybbroe]
+- Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
+  [Adam.Dybbroe]
+- Fix geotiff transparency rules. [Martin Raspaud]
+- Change rpm dependencies to use pre-packaged numexpr. [Martin Raspaud]
+- Merge pull request #47 from tparker-usgs/master. [Martin Raspaud]
+
+  Expand error message when geolocation or band data is missing
+- Expand error message when geolocation or band data is missing. [Tom
+  Parker]
+- Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
+  [Adam.Dybbroe]
+- Add 'channel' to prologue format dictionary. [Panu Lahtinen]
+- Set default values for glob_epi and glob_pro. [Panu Lahtinen]
+- Check that EPI and PRO patterns are available. [Panu Lahtinen]
+- Handle missing PRO and EPI patterns. [Panu Lahtinen]
+- Merge pull request #46 from pytroll/feature_adjust_aapp1b_masking.
+  [Martin Raspaud]
 
+  Remove double masking of 3A and 3B channels
+- Remove double masking which discards previous mask leaving nan's
+  unmasked. [Panu Lahtinen]
+- Merge pull request #45 from pytroll/feature-preprecompute. [Martin
+  Raspaud]
+
+  Refactor mpop.projector and add a script for pre-calculating projection parameters
+- Add more tests. [Panu Lahtinen]
+
+  - test calc_nearest_params()
+  - test calc_quick_params()
+  - test calc_bilinear_params()
+  - test calc_ewa_params()
+  - test get_precompute_cache_fname()
+  - test get_area_and_id()
+
+- Remove a print statement. [Panu Lahtinen]
+- Handle missing pyresample.ewa, some PEP8. [Panu Lahtinen]
+- Add a module that can precalculate the projection parameters. [Panu
+  Lahtinen]
+- Split to more generic methods and functions. [Panu Lahtinen]
+- Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
+  [Adam.Dybbroe]
+- Pep8. [Adam.Dybbroe]
+
+
+v1.4.0 (2017-02-20)
+-------------------
+- Update changelog. [Martin Raspaud]
+- Bump version: 1.3.1 → 1.4.0. [Martin Raspaud]
 - Merge pull request #44 from pytroll/feature_bilinear. [Martin Raspaud]
 
   Feature bilinear
-
 - Clarify docstring - radius is also used with bilinear mode. [Panu
   Lahtinen]
-
 - Test that bilinear interpolation is called. [Panu Lahtinen]
-
 - Mock pyresample.bilinear, autopep8 the file. [Panu Lahtinen]
-
 - Update docstring. [Panu Lahtinen]
-
 - Move imports to top of the file. [Panu Lahtinen]
-
 - Remove Python 2.6 from the tested versions. [Panu Lahtinen]
-
 - Require Pillow version < 4.0.0 for Python 2.6. [Panu Lahtinen]
-
 - Add mask to bilinear resampled data. [Panu Lahtinen]
-
 - Fix naming. [Panu Lahtinen]
-
 - Add implicit flag to receive un-masked parameters for bilinear
   interpolation. [Panu Lahtinen]
-
 - Add bilinear interpolation. [Panu Lahtinen]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Clear cache before inserting EWA parameters. [Panu Lahtinen]
-
 - Add EWA resampling. [Panu Lahtinen]
-
 - Convert maximum extent to list before modification. [Martin Raspaud]
-
 - Do the scaling before finalization in ninjotiff's finalize. [Martin
   Raspaud]
-
 - Fix H8 template file's band names. [Martin Raspaud]
-
 - Extract elevation from viirs-sdr + Fix viirs true color.
   [Adam.Dybbroe]
 
+
 v1.3.1 (2016-12-12)
 -------------------
-
 - Update changelog. [Martin Raspaud]
-
 - Bump version: 1.3.0 → 1.3.1. [Martin Raspaud]
-
 - Update maximum_extent instead of just returning the first "geos"
   extent. [Panu Lahtinen]
-
 - Return the area extent from the area definition, if the projection is
   "geos" [Panu Lahtinen]
-
 - Fix 'sun_zen_correction_applied' not being set to true. [Martin
   Raspaud]
-
 - Merge pull request #39 from mraspaud/pre-master. [Martin Raspaud]
 
   Turn RGB ninjotiff image into RGBA when fill_value is None
-
 - Turn RGB ninjotiff image into RGBA when fill_value is None. [Martin
   Raspaud]
 
   This patch allows to replicate the behaviour when saving pil images.
 
+
 v1.3.0 (2016-10-27)
 -------------------
-
 - Update changelog. [Martin Raspaud]
-
 - Bump version: 1.2.1 → 1.3.0. [Martin Raspaud]
-
 - Add bump and gitchangelog configs. [Martin Raspaud]
-
 - Fix pep8 compliance. [Martin Raspaud]
-
 - Use filenames for mipp only if the files are relevant. [Martin
   Raspaud]
-
 - Handle time_slot tuples better by splitting them. [Martin Raspaud]
 
   This allows mpop to be backwards compatible for non mipp-based readers.
 
-
 - Allow providing filenames to the mipp xrit reader. [Martin Raspaud]
 
   This allows mpop to use filenames as provided by trollduction.
-
 - Make it possible to specify custom stretching of truecolor imagery.
   [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Merge pull request #36 from khunger/feature-fill-value-substitution.
   [Martin Raspaud]
 
   New option fill_value_subst
-
 - New option fill_value_subst. [Christian Kliche]
 
   This option can be used in conjunction with GeoImage.fill_value. Any occurrences of
@@ -126,42 +164,30 @@ v1.3.0 (2016-10-27)
   	</format_params>
   </file>
 
-
 - Merge pull request #37 from khunger/feature-xrit-sublon-metadata.
   [Martin Raspaud]
 
   Atmospheric correction and xrit metadata "sublon" in sat scene info
-
 - Algorithm for atmosheric correction. [Christian Kliche]
 
   Added new algorithm to Channel class to apply atmospheric correction
   on a copy of channel data using given satellite zenith angle data.
   Creates a new channel containing the corrected data.
 
-
 - Added xrit metadata "sublon" to sat scene info. [Christian Kliche]
-
 - Bugfix fill_value in cf-output. [Adam.Dybbroe]
-
 - Support PPS on I-band resolution. [Adam.Dybbroe]
-
 - Bugfix platform naming. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Merge pull request #35 from khunger/feature-writer-options. [Martin
   Raspaud]
 
   Feature writer options
-
 - Added tests for save with writer_options. [Christian Kliche]
-
 - Fixed unit tests. [Christian Kliche]
-
 - Changed parameter order for backwards compatibility. [Christian
   Kliche]
-
 - GeoImage.save extended by writer_options dict. [Christian Kliche]
 
   Some dict keys for options  used by GeoImage.save
@@ -169,7 +195,6 @@ v1.3.0 (2016-10-27)
   All options within this dict will be forwarded to custom writers
   like NinJoTiff writer module.
 
-
 - GeoImage.save extended by writer_options dict. [Christian Kliche]
 
   Some dict keys for options  used by GeoImage.save
@@ -177,51 +202,36 @@ v1.3.0 (2016-10-27)
   All options within this dict will be forwarded to custom writers
   like NinJoTiff writer module.
 
-
 - Allow adding int, float and str attributes to the main info object.
   [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Merge pull request #33 from meteoswiss-mdr/pre-master. [Martin
   Raspaud]
 
   H-SAF and Odyssey reader
-
 - Add odyssey reader. [hau]
-
 - Renamed hsaf reader. [hau]
-
 - Merge branch 'pre-master' of https://github.com/meteoswiss-mdr/mpop
   into pre-master. [hau]
-
 - Merge branch 'pre-master' of https://github.com/pytroll/mpop into pre-
   master. [hau]
-
 - Add config file for reading hsaf data. [hau]
-
 - Add new reader for HSAF h03 product. [hau]
-
 - Small bugfix for hdf5 SEVIRI reader. [hau]
-
 - Add option area_aggregation. [Adam.Dybbroe]
 
   Default is True for backward compatibility. If False, the band_axis p
   arameter is obsolete and all  bands are separated in 2d arrays. W
   riting goes faster this way.
 
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Merge pull request #34 from ninahakansson/pre-master. [Martin Raspaud]
 
   Faster writing in cfscene.py for pps
-
 - Merge branch 'pre-master' of https://github.com/pytroll/mpop into pre-
   master. [Nina.Hakansson]
-
 - Faster writing with time_dimension by checking the fastest condition
   first. [Nina.Hakansson]
 
@@ -229,82 +239,57 @@ v1.3.0 (2016-10-27)
   takes several seconds to check for a npp scene combined of
   some granules.
 
-
 - Pep8 editorials. [Adam.Dybbroe]
-
 - Adapt writing to new cfscene. [Adam.Dybbroe]
-
 - Bugfix sun-sat angles: Sort geofiles before. [Adam.Dybbroe]
-
 - Make writer able to have time dimension and falt band structure.
   [Adam.Dybbroe]
 
   Use time_dimension=True to use this way of storing data
-
 - Bugfix viirs geolocation. [Adam.Dybbroe]
 
   When geolocation granule files are not ordered in time,
   geolocation got wrong when calling the loader with a list of files
-
 - Add time_dimension option in CFScene writer. [Adam.Dybbroe]
 
   Time dimension is used in Diana (visualisation system at SMHI) and in PPS
-
 - Fix netcdf file output. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Ensure proper handling of lower and uppercase epsg/EPSG init strings.
   [Panu Lahtinen]
-
 - Merge branch 'pre-master' of https://github.com/pytroll/mpop into pre-
   master. [Panu Lahtinen]
-
 - Get proper srs when using init=EPSG:<int> in projection definition.
   [Panu Lahtinen]
-
 - Change keyword argument to filenames. [Adam.Dybbroe]
-
 - Adapt to pillow. [Adam.Dybbroe]
-
 - Fix palettes normalised to 0-1 for mpop. [Adam.Dybbroe]
-
 - Add imagery capability for OCA cloud parameters. [Adam.Dybbroe]
 
   Only the cloud top pressure (ctp) parameters is okay so far.
   Need to check effective radius and COT
 
-
 - Add the FY3 MERSI-I reader. [Adam.Dybbroe]
-
 - Add mpef oca reader. [Adam.Dybbroe]
-
 - Add the embeded palette to ninjotiff generation if not overriden.
   [Martin Raspaud]
-
 - Merge pull request #30 from khunger/fix-read-area-calculation. [Martin
   Raspaud]
 
   More conservative approach to handle errors in area_def_names_to_extent()
-
 - Use readers def area_extent if calculation fails. [Christian Kliche]
-
 - Merge pull request #32 from meteoswiss-mdr/pre-master. [Martin
   Raspaud]
 
   parallax correction and high resolution winds
-
 - Make use of sat_nr function in nwcsaf_msg.py. [hau]
-
 - Option for estimating cth for parallax correction. [hau]
 
   introduced a optional argument if cth should be estimated or not.
   Additionally introduced a small function to extract the satellite number.
 
-
 - User choice of background color for day_mircophysics. [hau]
-
 - Added functionality for parallax correction. [hau]
 
   added new functions:
@@ -333,18 +318,15 @@ v1.3.0 (2016-10-27)
   vinc_vect
     parallized version of the vinc function
 
-
 - Copy the information of the palette for NWCSAF products. [hau]
 
   ... when reprojecting
 
-
 - Add other satellite number definition to reader. [hau]
 
   add 8 and 9 entry for meteosat 8 and 9
   before only 08 and 09 were possible
 
-
 - Updated the _Calibrator call msg_seviri_hdf.py. [hau]
 
   Updated initialization of the _Calibrator function
@@ -364,27 +346,21 @@ v1.3.0 (2016-10-27)
 
   so now the argument bits_per_pixel is set to 10.
 
-
 - Merge branch 'test' into pre-master. [hau]
-
 - Add file to read high resolution wind data from NWCSAF. [hau]
-
 - Add code to process TRT. [hau]
 
   TRT is an MeteoSwiss tool to detect
   thunderstorm cells.
   The data can be processed with this file.
 
-
 - Add a code file to process HRW data from NWC-SAF. [hau]
-
 - Add reader for geo-hdf format EUMETSAT archive. [hau]
 
   geo-hdf is a possible data format that you can order
   from the EUMETSAT data archive
   It enables to specify smaller regions.
 
-
 - New reader nwcsaf and modified scene.py. [hau]
 
   a new file for reading NWCSAF data is submitted
@@ -394,151 +370,97 @@ v1.3.0 (2016-10-27)
   in order to specify which level specifies the desired format
   of the input file
 
-
 - Add cloud phase palette and palette2colormap function. [hau]
-
 - Test commit for submodule. [hau]
-
 - Merge pull request #31 from elfsprite/pre-master. [Martin Raspaud]
 
   Added S2A reader files to fork
-
 - Tile definition is now downloaded and converted automatically. [Matias
   Takala]
-
 - Added S2A reader files to fork. [Matias Takala]
-
 - Fix typo. [Adam.Dybbroe]
-
 - Make it possible to specify fill-value in overview_sun. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Fix bug of setting shape to viirs reader using foreign band name.
   [Martin Raspaud]
-
 - Reorganize imports. [Martin Raspaud]
-
 - Add mercator to the supported ninjo projections. [Martin Raspaud]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Lars Orum Rasmussen]
-
 - Added a config template for sentinel-1b. [Lars Orum Rasmussen]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Ninjotiff.save now supports palette ('P') mode. [ras]
-
 - New option to handle if data is scaled between 0 and 1. [ras]
-
 - Set fill values as a kw arg. [Martin Raspaud]
-
 - Use readers def area_extent if calculation fails. [Christian Kliche]
-
 - Keep mask when stacking segments in aapp1b. [Martin Raspaud]
-
 - Get sun-sat angles for modise reading. [Adam.Dybbroe]
-
 - Bugfix getting satellite zenith and azimuth and document
   get_sunsat_angles method. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Keep track of sun corrected channels for eg ears viirs. [Martin
   Raspaud]
-
 - Fix viirs_compact to remove files even when crashing. [Martin Raspaud]
-
 - Add method to retriev the sun-satellite viewing geometry.
   [Adam.Dybbroe]
-
 - Pep8. [Adam.Dybbroe]
-
 - Fix the snow_age composite to right luminosity. [Martin Raspaud]
-
 - Add MF's copyright notice for the luts. [Martin Raspaud]
-
 - Use original luts for the snow_age composite. [Martin Raspaud]
-
 - Fix projector test. [Martin Raspaud]
-
 - Work around the problem coming at night when M9-channel would mask all
   the data away. [Panu Lahtinen]
-
 - Add Snow Age RGB composite. [Panu Lahtinen]
-
 - Handle cases where DNB and/or M channel data are requested but no such
   files are present. [Panu Lahtinen]
-
 - Bugfix hdfeos. [Martin Raspaud]
 
   Checkfile was using an undefined variable
-
 - Finish integrating trollsift into hdfeos reader. [Martin Raspaud]
 
   Some parts were left unfinished. Shoud we fixed now.
-
 - Fix new hdfeos reader to look for data on invalid input. [Martin
   Raspaud]
 
   the hdfeos reader would fail looking for data in standard places when an
   iterable of invalid files would be provided.
-
 - Fix hdfeos reader to look for data on invalid input. [Martin Raspaud]
 
   the hdfeos reader would fail looking for data in standard places when an
   iterable of invalid files would be provided.
-
 - Merge branch 'pre-master' of https://github.com/pytroll/mpop into pre-
   master. [Panu Lahtinen]
-
 - Update config templates for MODIS to match recent updates in EOS
   reader. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Run travis tests in a container. [Martin Raspaud]
-
 - Fix bug related to modis DR. [Adam.Dybbroe]
-
 - Mask out dubious lon/lat values. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Added contributions from Christian (DWD) to ninjotiff. It support
   input data in the [0.0, 1.0] range. [Lars Orum Rasmussen]
-
 - Print more debug info concerning calibration. [Adam.Dybbroe]
-
 - Fix formattin character in log message. [Panu Lahtinen]
 
+
 v1.2.1 (2015-12-14)
 -------------------
-
 - Update changelog. [Martin Raspaud]
-
 - Bump version: 1.2.0 → 1.2.1. [Martin Raspaud]
-
 - Merge branch 'pre-master' [Martin Raspaud]
-
 - Merge branch 'pre-master' [Martin Raspaud]
 
   Conflicts:
   	doc/source/pp.rst
-
 - Update changelog. [Martin Raspaud]
-
 - Bump version: 1.1.0 → 1.2.0. [Martin Raspaud]
-
 - Merge branch 'pre-master' [Martin Raspaud]
 
   Conflicts:
@@ -546,73 +468,52 @@ v1.2.1 (2015-12-14)
   	setup.py
 
 
+
 v1.2.0 (2015-12-14)
 -------------------
 
 Fix
 ~~~
-
 - Bugfix: converted MSG products should be saveable. [Martin Raspaud]
-
 - Bugfix: satellite name in msg_hdf now supports missing number. [Martin
   Raspaud]
-
 - Bugfix: misspelling. [Martin Raspaud]
-
 - Bugfix: mipp_xrit: do not crash on unknown channels, just warn and
   skip. [Martin Raspaud]
-
 - Bugfix: setup.py includes now eps xml format description. [Martin
   Raspaud]
-
 - Close all h5files in viirs_sdr, not only the last one.
   [Martin.Raspaud]
-
 - Bugfix: close h5 files when done. [Martin Raspaud]
 
   Prior to h5py 3.0, the h5 files open with h5py are not closed upon
   deletion, so we have to do it ourselves...
-
 - Bugfix: area.id doesn't exist, use area.area_id. [Martin Raspaud]
-
 - Bugfix: return when each file has been loaded independently. [Martin
   Raspaud]
-
 - Bugfix: Do not crash on multiple non-nwc files. [Martin Raspaud]
-
 - Bugfix: check start and end times from loaded channels only. [Martin
   Raspaud]
-
 - Bugfix: viirs start and end times not relying on non-existant channels
   anymore. [Martin Raspaud]
-
 - Bugfix: type() doesn't support unicode, cast to str. [Martin Raspaud]
 
 Other
 ~~~~~
-
 - Update changelog. [Martin Raspaud]
-
 - Bump version: 1.1.0 → 1.2.0. [Martin Raspaud]
-
 - Add template parameters for NOAA-19 ears-nwc. [Adam.Dybbroe]
 
   Parameters needed if you want to load only with time_interval and
   not using the filename argument
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Merged (by hand) sentinel1-feature branch. [Lars Orum Rasmussen]
-
 - Added support for gdal's SetNoDataValue if fill_value is not None.
   [Lars Orum Rasmussen]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Lars Orum Rasmussen]
-
 - Added a RGB example. [Lars Orum Rasmussen]
-
 - Don't use colormaps for 16b grayscale (Ninjo will fail enhancements)
   [Lars Orum Rasmussen]
 
@@ -622,610 +523,366 @@ Other
 
   Transparent pixel for 16b IR are handled bad
 
-
 - Add template config for ears-nwc Metop-B reading. [Adam.Dybbroe]
-
 - Fix bug when using time_interval argument loading ears-nwc data.
   [Adam.Dybbroe]
-
 - Add brightness temperature calibration to the IR bands. [Adam.Dybbroe]
-
 - Update EARS config files for new (2014) PPS product format.
   [Adam.Dybbroe]
-
 - Remove old FY3 mersi reader. [Adam.Dybbroe]
-
 - Apply VIS/NIR calibration including sun-zenith correction.
   [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Now ninjotiff can list tags. [Lars Orum Rasmussen]
 
   Ninjo tags are now a dictionary
 
-
 - Add FY-3B template config file. [Adam.Dybbroe]
-
 - Add first draft FY3B VIRR reader. [Adam.Dybbroe]
 
   No calibration yet, but counts can be projected and displayed
-
 - Added contributions from Christian (DWD) to ninjotiff: now using
   tifffile.py and support for RGBA. [Lars Orum Rasmussen]
 
   Changed scaling into a value range (so it works for me)
 
-
 - Merge branch 'pre-master' of https://github.com/pytroll/mpop into pre-
   master. [Panu Lahtinen]
-
 - Delete world_map.ascii. [Martin Raspaud]
-
 - Read DNB using PyTables, separate read() to read_m() and read_dnb()
   [Panu Lahtinen]
-
 - Update coords2area_def with preview mode. [Martin Raspaud]
-
 - Merge branch 'pre-master' of https://github.com/pytroll/mpop into pre-
   master. [Panu Lahtinen]
-
 - Remove debug printout from pps reader. [Adam.Dybbroe]
-
 - Support a list of files which will be concatenated, enables usage of
   granule data. [Panu Lahtinen]
-
 - Fix for channel names and channel loading. [Panu Lahtinen]
-
 - Added Himawari-8 config template file. [Martin Raspaud]
-
 - Mask out 0-counts areas in aapp_l1b. [Martin Raspaud]
-
 - Support saving GeoImages in IO buffers. [Martin Raspaud]
-
 - Add support for noaa gac and lac data. [Martin Raspaud]
-
 - Take care of fill_value in datasets. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Fix the sun zenith angle correction fix. [Martin Raspaud]
-
 - Do not check time_slot type. [Martin Raspaud]
-
 - Bugfix ctth scaling: Only keep same datatype if data are not scaled.
   [Adam.Dybbroe]
-
 - Less debug info. [Adam.Dybbroe]
-
 - Bugfix. Sun zenith correction can now take an additional keyword - and
   data are masked out accordingly. [Adam.Dybbroe]
-
 - Fix overview_sun, avoid redish rgb's when sun is very low (below
   horizon) [Adam.Dybbroe]
-
 - Read also the palette data etc. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Add orbit number info in the scene metadata upon loading. (hdfeos)
   [Martin Raspaud]
-
 - Hdfeos: orbit number is now an int. [Martin Raspaud]
-
 - Fix geolocation reading for multiple-file processing (hdfeos) [Martin
   Raspaud]
-
 - Changed error message to a warning. [Adam.Dybbroe]
-
 - Fix hdf_eos to allow reading several granules. [Martin Raspaud]
-
 - Enhancing the dnb_overview, so that pixels with solar contamination
   are masked out. [Adam.Dybbroe]
-
 - Bringing back the night_overview (=cloudtop) [Adam.Dybbroe]
-
 - Comment out the night_overview. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Bugfix overview_sun. [Martin Raspaud]
-
 - Use builtin sunzen_corr for overview_sun. [Martin Raspaud]
-
 - Switch to nullterm string in msg_hdf for nr products. [Martin Raspaud]
-
 - Bugfix. [Adam.Dybbroe]
-
 - Improve overview for viirs and overview_sun. [Adam.Dybbroe]
-
 - Re-introduce the fix for VIIRS bowtie deletions. [Adam.Dybbroe]
-
 - Shouting when both a list of file names and a time interval is used.
   Accepts tine_interval even for local files. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
 
   Conflicts:
   	mpop/satin/nc_pps_l2.py
-
 - Fixed incorrect production sources and geolocation file names for
   'local' products. [Panu Lahtinen]
-
 - Added a unit test to the nc_pps_l2 reader, and adapted the reader a
   bit. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of https://github.com/pytroll/mpop into pre-
   master. [Panu Lahtinen]
-
 - Fixme reminder. [Adam.Dybbroe]
-
 - Restructure how the data and geolocation files are listed and read.
   [Panu Lahtinen]
-
 - Fixed workaround for DIMENSION_LIST attributes. [Panu Lahtinen]
-
 - Minor fixes - thanks Panu! [Adam.Dybbroe]
-
 - Cleaning up a bit and pep8. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of github.com:pytroll/mpop into pre-master.
   [Adam.Dybbroe]
-
 - Updated reading to support both M and DNB channel data. [Panu
   Lahtinen]
-
 - Adapt navigation to compact_viirs dnb. [Martin Raspaud]
-
 - Do not crash when an unknown channel is requested in msg_hdf. [Martin
   Raspaud]
-
 - Fix template files. [Adam.Dybbroe]
-
 - Fix template files for NOAA satellites and Metop-A/B. [Adam.Dybbroe]
-
 - Bugfix, treating cases when no geolocation is found for product.
   [Adam.Dybbroe]
-
 - More debug info. [Adam.Dybbroe]
-
 - More debug info. [Adam.Dybbroe]
-
 - Fix save function and bugfix. [Adam.Dybbroe]
-
 - More debug info and better exception handling - pps reader.
   [Adam.Dybbroe]
-
 - Rewritten the netCDF4 PPS reader. [Adam.Dybbroe]
-
 - Cleaning up for unused code. [Adam.Dybbroe]
-
 - Add the info attribute to NordRadCType. [Martin Raspaud]
-
 - Fix filename search in msg_hdf. [Martin Raspaud]
-
 - Fix extension problem in product search for msg_hdf. [Martin Raspaud]
-
 - Replace pyhl with h5py in msg_hdf reader. [Martin Raspaud]
-
 - Bugfix ascat l2 reader. [Adam.Dybbroe]
-
 - Trying to fix odd behaviour when loading list of products. But it
   still doesn't work - need a small refactoring. [Adam.Dybbroe]
-
 - Added support option to select granules in time interval.
   [Adam.Dybbroe]
-
 - More debug info - for custom compositer. [Adam.Dybbroe]
-
 - Merge pull request #17 from spareeth/pre-master. [Martin Raspaud]
 
   ASCAT SAR soil moisture level 2 netcdf data from EUMETSAT
-
 - Add new reader and config files for ASCAT SAR soil moisture level 2
   netcdf data from EUMETSAT. [Sajid Pareeth]
-
 - Add new reader and config files for ASCAT SAR soil moisture level 2
   netcdf data from EUMETSAT. [Sajid Pareeth]
-
 - Added possibility to read granule data from EARS, also some PEP8 work.
   [Panu Lahtinen]
-
 - Avoid leaking memory. [Martin Raspaud]
-
 - Bugfix. [Adam.Dybbroe]
-
 - Raise an error if projection is attempted when swathdata doesn't have
   full geolocation. [Adam.Dybbroe]
-
 - Remove one verbose debug printout. [Adam.Dybbroe]
-
 - Adapt for new PPS netCDF format modification (adding a dimension of
   length 1) [Adam.Dybbroe]
-
 - Check for cloudtype=None. [Adam.Dybbroe]
-
 - Add option to provide MSG filename to load call. [Adam.Dybbroe]
-
 - Check if PPS file is bzipped, and handle it correctly. [Adam.Dybbroe]
-
 - Fix orbit number attribute name in msg_hdf. [Martin Raspaud]
-
 - Possible to pass value range to save. [Lars Orum Rasmussen]
-
 - Chlorophyll-a palette is gone - now it raise an exception if asked
   for... [Adam.Dybbroe]
-
 - Merge branch 'feature-osisaf-sst-reader' into pre-master.
   [Adam.Dybbroe]
-
 - Adding a reader and palette support for OSISAF SST netCDF products.
   [Adam.Dybbroe]
-
 - Fixed external calibration "newer/older than data" message. [Panu
   Lahtinen]
-
 - Fix ctth writing. [Martin Raspaud]
-
 - Fixed typo. [Martin Raspaud]
-
 - Add orbit number in generated cloud product hdf files. [Martin
   Raspaud]
-
 - Fix new pyspectral calculator signature. [Martin Raspaud]
-
 - Putting back the mipp information in template config files. [Martin
   Raspaud]
-
 - Pyspectral now uses standard platform names. [Martin Raspaud]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Panu Lahtinen]
-
 - Add algorithm version in output cloud products. [Martin Raspaud]
-
 - Exception handling for missing external calibration data. [Panu
   Lahtinen]
-
 - Minor PEP8 tweaks. [Panu Lahtinen]
-
 - Script to generate external calibration files for AVHRR instruments.
   [Panu Lahtinen]
-
 - Support for external calibration coefficients for AVHRR. [Panu
   Lahtinen]
-
 - Removed obsolete "satname" and "number" from satellite configs,
   updated documentation. [Panu Lahtinen]
-
 - Renamed satellite configs to conform to OSCAR naming scheme. [Panu
   Lahtinen]
-
 - Add luts to the pps products from msg format. [Martin Raspaud]
-
 - Add metadata to nwcsaf products. [Martin Raspaud]
-
 - Add \0 to palette strings. [Martin Raspaud]
-
 - Fix pps format output for msg products. [Martin Raspaud]
-
 - Remove phase palette from msg products to avoid confusion. [Martin
   Raspaud]
-
 - Bugfix, np.string -> np.string_ [Martin Raspaud]
-
 - Change variable length strings in h5 products to fixed. [Martin
   Raspaud]
-
 - Fix some cloud product conversions. [Martin Raspaud]
-
 - Fix MSG format to PPS format conversion. [Martin Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Martin Raspaud]
-
 - Merge pull request #16 from pnuu/simplified_platforms. [Martin
   Raspaud]
 
   Simplified platform names for reading custom composites
-
 - Simplified platform names for reading custom composites. [Panu
   Lahtinen]
-
 - Change: accept arbitrary kwargs for saving msg hdf products. [Martin
   Raspaud]
-
 - Revert concatenation to it's original place, in order to keep the
   tests working. [Martin Raspaud]
-
 - Fix whole globe area_extent for loading. [Martin Raspaud]
-
 - Fix rpm building. [Martin Raspaud]
-
 - Fix masking of lonlats in viirs_sdr. [Martin Raspaud]
-
 - Fixing pps-nc reader. [Adam Dybbroe]
-
 - Clean temporary files after loading. [Adam Dybbroe]
-
 - Pep8 stuff. [Adam Dybbroe]
-
 - Fixed polar-stereographic projection bugs, thanks to Ron Goodson.
   [Lars Orum Rasmussen]
-
 - Update changelog. [Martin Raspaud]
-
 - Bump version: 1.0.2 → 1.1.0. [Martin Raspaud]
-
 - Put config files in etc/pytroll. [Martin Raspaud]
-
 - Fix version strings. [Martin.Raspaud]
-
 - Don't close the h5 files too soon. [Martin Raspaud]
-
 - Close h5 file uppon reading. [Adam Dybbroe]
-
 - Bugfix. [Adam Dybbroe]
-
 - Try a more clever handling of the case where more level-1b files exist
   for given sat and orbit. [Adam Dybbroe]
-
 - Print out files matching in debug. [Martin Raspaud]
-
 - Bugfix. [Adam Dybbroe]
-
 - Adding debug info. [Adam Dybbroe]
-
 - Bugfix. [Adam Dybbroe]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Remove ugly print statements. [Martin Raspaud]
-
 - Load the palettes also. [Martin Raspaud]
-
 - AAPP1b: use operational coefficients for vis calibrating per default.
   [Martin Raspaud]
 
    - Fallback to pre-launch if not available.
    - load(..., pre_launch_coeffs=True) to force using pre-launch coeffs)
-
 - Correct npp name in h5 files. [Martin Raspaud]
-
 - Add the pps v2014 h5 reader. [Martin Raspaud]
-
 - Use h5py for lonlat reading also. [Martin Raspaud]
-
 - Use h5py instead of netcdf for reading nc files. [Martin Raspaud]
-
 - Fix orbit as int in nc_pps loader. [Martin Raspaud]
-
 - Add overlay from config feature. [Martin Raspaud]
-
 - Remove type testing for orbit number. [Martin Raspaud]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Allowing kwargs. [Martin Raspaud]
-
 - Add 10 km to the area extent on each side, to avoid tangent cases.
   [Martin Raspaud]
-
 - Orbit doesn't have to be a string anymore. [Martin Raspaud]
-
 - Fix multiple file loading for metop l1b data. [Martin Raspaud]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Implement save for all cloudproducts. [Martin Raspaud]
-
 - Change options names to cloud_product_* and add lookup in os.environ.
   [Martin Raspaud]
-
 - Some fixes to nc_pps_l2 for correct saving. [Martin Raspaud]
-
 - Add saving to the cloudtype object. [Martin Raspaud]
-
 - Add the save method to cloudtype object. [Martin Raspaud]
-
 - Rename _md attribute to mda. [Martin Raspaud]
-
 - Mask out bowtie deleted pixels for Suomi-NPP products. [Martin
   Raspaud]
-
 - When a file is provided in nc_pps_l2, just read this file. [Martin
   Raspaud]
-
 - Fix nc_pps_l2 for filename input and PC readiness. [Martin Raspaud]
-
 - ViirsSDR: Fix not to crash on single file input. [Martin Raspaud]
-
 - Fix aapp1b to be able to run both for given filename and config.
   [Martin Raspaud]
-
 - Try loading according to config if provided file doesn't work, aapp1b.
   [Martin Raspaud]
-
 - Don't crash when reading non aapp1b file. [Martin Raspaud]
-
 - Remove "/" from instrument names when loading custom composites.
   [Martin Raspaud]
-
 - Don't say generate lon lat when returning a cached version. [Martin
   Raspaud]
-
 - Nc_pps_l2: don't crash on multiple files, just go through them one at
   the time. [Martin Raspaud]
-
 - Hdfeos: don't just exit when filename doesn't match, try to look for
   files. [Martin Raspaud]
-
 - Don't crash if the file doesn't match (hdfeos) [Martin Raspaud]
-
 - Revert nc_reader back until generalization is ready. [Martin Raspaud]
-
 - Merge branch 'ppsv2014-reader' of github.com:mraspaud/mpop into
   ppsv2014-reader. [Martin Raspaud]
-
 - Adding dataset attributes to pps reading. [Adam Dybbroe]
-
 - Allow inputing filename in the nc_pps_l2 reader. [Martin Raspaud]
-
 - Merge branch 'pre-master' into ppsv2014-reader. [Martin Raspaud]
-
 - Viirs readers fixes. [Martin Raspaud]
-
 - Hdf_eos now uses 1 out of 4 available cores to interpolate data.
   [Martin Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Martin Raspaud]
-
 - Fixed bug, now handling fill_value better. [Lars Orum Rasmussen]
-
 - More robust tiff header file decoder. [Lars Orum Rasmussen]
-
 - Add dnb_overview as a standard product (dnb, dnb, 10.8) [Martin
   Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Martin Raspaud]
-
 - Corrected the reader for SAFNWC/PPS v2014. [Sara.Hornquist]
-
 - Allow multiresolution loading in hdf eos reader. [Martin Raspaud]
-
 - Revert back to old nwcsaf-pps reader for hdf. The reading of the new
   netcdf format is done with another reader! [Adam Dybbroe]
-
 - A new pps reader for the netCDF format of v2014. [Adam Dybbroe]
-
 - Adding for new cloudmask and type formats... [Adam Dybbroe]
-
 - Enhance nwc-pps reader to support v2014 format. [Adam Dybbroe]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Put the config object back in Projector. [Martin Raspaud]
-
 - Fix area_file central search. [Martin Raspaud]
-
 - Move the area_file search inside Projector. [Martin Raspaud]
-
 - Error when satellite config file is not found. [Martin Raspaud]
-
 - Get rid of the funky logging style. [Martin Raspaud]
-
 - Log the config file used to generate the scene. [Martin Raspaud]
-
 - Support filename list to load in viirs_sdr loader. [Martin Raspaud]
-
 - Add avhrr/3 as aliar to avhrr in aapp reader. [Martin Raspaud]
-
 - Fix name matching in hdfeos_l1b. [Martin Raspaud]
 
   The full name didn't work with fnmatch, take basename instead.
-
 - Allows hdfeos_l1b to read a batch of files. [Martin Raspaud]
-
 - Add delitem, and code cleanup. [Martin Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Martin Raspaud]
-
 - Added a reader for SAFNWC/PPS v2014 PPS v2014 has a different
   fileformat than previous SAFNWC/PPS versions. [Sara.Hornquist]
-
 - Aapp1b reader, be more clever when (re)reading. [Martin Raspaud]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
 
   Conflicts:
   	mpop/satout/netcdf4.py
 
-
 - Allow reading several files at once in viirs_compact. [Martin Raspaud]
-
 - Allow reading several files at once in eps_l1b. [Martin Raspaud]
-
 - Style: use in instead for has_key() [Martin Raspaud]
-
 - Adding primitive umarf (native) format reader for meteosat. [Martin
   Raspaud]
-
 - Add logging when an info field can't be save to netcdf. [Martin
   Raspaud]
-
 - Add a name to the area when loading aapp data. [Martin Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Martin Raspaud]
-
 - For PNG files, geo_mage.tags will be saved a PNG metadata. [Lars Orum
   Rasmussen]
-
 - Add a save method to cfscene objects. [Martin Raspaud]
-
 - Don't take None as a filename in loading avhrr data. [Martin Raspaud]
-
 - Allow loading a file directly for aapp1b and eps_l1b. [Martin Raspaud]
 
   Just run global_data.load(..., filename="/path/to/myfile.1b")
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Martin Raspaud]
-
 - Viirs_sdr can now load depending on an area. [Martin Raspaud]
-
 - Pep8 cosmetics. [Adam Dybbroe]
-
 - Merge pull request #12 from pnuu/pre-master. [Martin Raspaud]
 
   Fixed "logger" to "LOGGER"
-
 - Fixed "logger" to "LOGGER" [Panu Lahtinen]
-
 - Moving pysoectral module import down to function where pyspectral is
   used. [Adam Dybbroe]
-
 - Merge branch 'smhi-premaster' into pre-master. [Adam Dybbroe]
-
 - Fixing cloudtype product: palette projection. [Adam Dybbroe]
-
 - Turned on debugging to geo-test. [Adam Dybbroe]
-
 - Added debug printout for cloud product loading. [Adam Dybbroe]
-
 - Make snow and microphysics transparent. [Martin Raspaud]
-
 - Rename day_solar to snow. [Martin Raspaud]
-
 - Keep the name of cloudtype products when projecting. [Martin Raspaud]
-
 - Explicitly load parallax corrected files if present. [Martin Raspaud]
-
 - Adding logging for MSG cloud products loading. [Martin Raspaud]
-
 - Fix the parallax file sorting problem, again. [Martin Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Martin Raspaud]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Bugfix. [Adam Dybbroe]
-
 - Merge branch '3.9reflectance' into pre-master. [Adam Dybbroe]
 
   Conflicts:
@@ -1234,413 +891,250 @@ Other
   	mpop/satin/mipp_xrit.py
   	setup.py
 
-
 - Support for rgbs using the seviri 3.9 reflectance (pyspectral) [Adam
   Dybbroe]
-
 - Adding a sun-corrected overview rgb. [Adam Dybbroe]
-
 - Adduing for "day microphysics" RGB. [Adam Dybbroe]
-
 - Deriving the day-solar RGB using pyspectral to derive the 3.9
   reflectance. [Adam Dybbroe]
-
 - Use "imp" to find input plugins. [Martin Raspaud]
-
 - Cleanup trailing whitespaces. [Martin Raspaud]
-
 - Use cartesian coordinates for lon/lat computation if near-pole
   situations. [Martin Raspaud]
-
 - Set alpha channel to the same type as the other channels. [Martin
   Raspaud]
-
 - Sort the filenames in get_best_products (msg_hdf) [Martin Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Martin Raspaud]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Merge pull request #10 from pnuu/pre-master. [Martin Raspaud]
 
   Fixed failed merging. Thanks Pnuu.
-
 - Fixed failed merging (removed "<<<<<<< HEAD" and ">>>>>>> upstream
   /pre-master" lines) [Panu Lahtinen]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Fix terra and aqua templates for the dual gain channels (13 & 14)
   [Adam Dybbroe]
-
 - Read both parallax corrected and usual cloudtype products. [Martin
   Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Martin Raspaud]
-
 - Merge pull request #9 from pnuu/pre-master. [Martin Raspaud]
 
   Possibility to get area_extent from area definition(s)
-
 - Tests for mpop.satin.helper_functions.boundaries_to_extent. [Panu
   Lahtinen]
-
 - Separated area definitions and boundary calculations. [Panu Lahtinen]
-
 - Added test if proj string is in + -format or not. [Panu Lahtinen]
-
 - Re-ordered the tests. [Panu Lahtinen]
-
 - Fixed incorrect correct values. [Panu Lahtinen]
-
 - Test using area definitions instead of definition names. [Panu
   Lahtinen]
-
 - Possibility to give also area definition objects to
   area_def_names_to_extent() and log a warning if the area definition is
   not used. [Panu Lahtinen]
-
 - Fixed import. [Panu Lahtinen]
-
 - Added tests for mpop.satin.helper_functions. [Panu Lahtinen]
-
 - Moved to mpop/tests/ [Panu Lahtinen]
-
 - Moved to mpop/tests/ [Panu Lahtinen]
-
 - Merge remote-tracking branch 'upstream/pre-master' into pre-master.
   [Panu Lahtinen]
 
   Conflicts:
   	mpop/satin/aapp1b.py
 
-
 - Removed unneeded functions. [Panu Lahtinen]
-
 - Test for area_def_names_to_extent() [Panu Lahtinen]
-
 - Removed unnecessary functions. [Panu Lahtinen]
-
 - Removed swath reduction functions. [Panu Lahtinen]
-
 - Reverted not to reduce swath data. [Panu Lahtinen]
-
 - Added possibility to do data reduction based on target area definition
   names. [Panu Lahtinen]
-
 - Added area extent calculations based on given area definition names.
   [Panu Lahtinen]
-
 - Helper functions for area extent and bondary calculations, and data
   reducing for swath data. [Panu Lahtinen]
-
 - Test for mpop.satin.mipp_xrit.lonlat_to_geo_extent() [Panu Lahtinen]
-
 - Support for lon/lat -based area extents. [Panu Lahtinen]
-
 - Add start and end time defaults for the images (runner). [Martin
   Raspaud]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Lars Orum Rasmussen]
-
 - Do not mask out negative reflectances in viirs_sdr reading. [Martin
   Raspaud]
-
 - Added navigation to hrpt_hmf plugin. [Martin Raspaud]
-
 - Started working on a new plugin version of hdfeos_l1b. [Martin
   Raspaud]
-
 - Cleanup. [Martin Raspaud]
-
 - Cleanup. [Martin Raspaud]
-
 - Cleanup. [Martin Raspaud]
-
 - Cleanup. [Martin Raspaud]
-
 - Adding scene tests to the test suite. [Martin Raspaud]
-
 - Revamped scene unittests. [Martin Raspaud]
-
 - Don't crash on errors. [Martin Raspaud]
-
 - Revamped projector tests. [Martin Raspaud]
-
 - More geo_image testing. [Martin Raspaud]
-
 - Don't use "super" in geo_image. [Martin Raspaud]
-
 - Fix testing. [Martin Raspaud]
-
 - Mock pyresample and mpop.projector in geo_image tests. [Martin
   Raspaud]
-
 - More testing geo_image. [Martin Raspaud]
-
 - Add tests for geo_image. [Martin Raspaud]
-
 - Merge branch 'unstable' of ssh://safe/data/proj/SAF/GIT/mpop into
   unstable. [Martin Raspaud]
-
 - Mock gdal for geo_image tests. [Martin Raspaud]
-
 - Added netCDF read support for four more projections. [Adam Dybbroe]
-
 - Adding support for eqc in cf format. [Adam Dybbroe]
-
 - Added config templates for GOES and MTSAT. [Lars Orum Rasmussen]
-
 - Copied visir.night_overview to seviri.night_overview, so
   night_overview.prerequisites is correct when night_overview is called
   from seviri.py. [ras]
-
 - Cloutop in seviri.py now same arguments as cloudtop in visir.py. [Lars
   Orum Rasmussen]
-
 - Fix saving as netcdf. [Martin Raspaud]
-
 - Fix floating point tiff saving. [Martin Raspaud]
-
 - Make pillow a requirement only if PIL is missing. [Martin Raspaud]
-
 - Add some modules to mock in the documentation. [Martin Raspaud]
-
 - Add pyorbital to the list of packets to install in travis. [Martin
   Raspaud]
-
 - Merge branch 'feature-travis' into unstable. [Martin Raspaud]
-
 - Test_projector doesn't pass. [Martin Raspaud]
-
 - Test_projector ? [Martin Raspaud]
-
 - Fix travis. [Martin Raspaud]
-
 - Adding test_geoimage. [Martin Raspaud]
-
 - Test_channel passes, test_image next. [Martin Raspaud]
-
 - Test_pp_core crashes, test_channel on. [Martin Raspaud]
-
 - Commenting out tests to find out the culprit. [Martin Raspaud]
-
 - Ok, last try for travis-ci. [Martin Raspaud]
-
 - What is happening with travis ? [Martin Raspaud]
-
 - More fiddling to find out why travis-ci complains. [Martin Raspaud]
-
 - Testing the simple test way (not coverage) [Martin Raspaud]
-
 - Trying to add the tests package for travis-ci. [Martin Raspaud]
-
 - Add the tests package. [Martin Raspaud]
-
 - Preprare for travis-ci. [Martin Raspaud]
-
 - Support 16 bits images (geotiff only at the moment). [Martin Raspaud]
-
 - Merge pull request #8 from pnuu/pre-master. [Martin Raspaud]
 
   Sun zenith angle correction added.
-
 - A section on mpop.tools added to documentation. [Panu Lahtinen]
-
 - Extra tests for sun_zen_corr(). [Panu Lahtinen]
-
 - Typo. [Panu Lahtinen]
-
 - Channel descriptions added. [Panu Lahtinen]
-
 - Channel desctiptions are added. [Panu Lahtinen]
-
 - Clarification to help sunzen_corr_cos() desctiption. [Panu Lahtinen]
-
 - Test cases for channel.sunzen_corr(). [Panu Lahtinen]
-
 - Sun zenith angle correction split into two functions. [Panu Lahtinen]
-
 - Revert to original version. [Panu Lahtinen]
-
 - Initial commit of mpop.tools (with Sun zenith angle correction). [Panu
   Lahtinen]
-
 - Sun zenith angle correction added. [Panu Lahtinen]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [ras]
-
 - Solve the multiple channel resolution with automatic resampling
   radius. [Martin Raspaud]
-
 - Add the "nprocs" option to projector objects and scene's project
   method. [Martin Raspaud]
-
 - Now saving orbit number (if available) as global attribute. [ras]
-
 - Adding more files to be ignored. [ras]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [ras]
-
 - New reader for hrpt level0 format. [Martin Raspaud]
-
 - Fix no calibration reading for aapp1b. [Martin Raspaud]
-
 - Add the product name to the the image info. [Martin Raspaud]
-
 - Add some debugging info about missing pixels in viirs_sdr. [Martin
   Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Corrected a comment. [Adam Dybbroe]
-
 - Fix for M13 load problem - reported by stefano.cerino at gmail.com. [Adam
   Dybbroe]
-
 - Use number of scan to load the right amount of data in compact viirs
   reader. [Martin Raspaud]
-
 - Fix hook to be able to record both filename and uri. [Martin Raspaud]
-
 - Protecting MPOP from netcdf4's unicode variables. [ras]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
-
 - Adding a new convection RGB with co2 correction for SEVIRI. [Adam
   Dybbroe]
-
 - Temporary hack to solve for hdf5 files with more than one granule per
   file. [Adam Dybbroe]
-
 - Removing messaging code from saturn and added a more generic "hook"
   argument. [Martin Raspaud]
-
 - Bumped up version. [Martin Raspaud]
-
 - Make viirs_compact scan number independent. [Martin Raspaud]
-
 - Cleanup: marking some deprecated modules, removing unfinished file,
   improving documentation. [Martin Raspaud]
-
 - Adding the ears-viirs compact format reader. Untested. [Martin
   Raspaud]
-
 - Code cleanup. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
 
   Conflicts:
   	mpop/imageo/geo_image.py
-
 - Night_color (should had beed called night_overview) is the same as
   cloudtop. [Lars Orum Rasmussen]
-
 - Bug fix from Bocheng. [Lars Orum Rasmussen]
-
 - Night_overview is just like cloudtop. [Lars Orum Rasmussen]
-
 - Now also handling Polar satellites. [Lars Orum Rasmussen]
-
 - Cosmetic. [Lars Orum Rasmussen]
-
 - Fixed merge conflict. [Lars Orum Rasmussen]
-
 - Trying out a chlorophyll product. [Lars Orum Rasmussen]
-
 - Added a night overview composite. [Lars Orum Rasmussen]
-
 - Better check for empty array. [Lars Orum Rasmussen]
-
 - Fix logging. [Martin Raspaud]
-
 - Fix backward compatibility in, and deprecate image.py. [Martin
   Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Calling numpy percentile only once when doing left and right cut offs.
   [Adam Dybbroe]
-
 - Add support for identifying npp directories by time-date as well as
   orbit number. [Adam Dybbroe]
-
 - Fix histogram-equalization stretch test. [Adam Dybbroe]
-
 - Bugfix in histogram equalization function. [Adam Dybbroe]
-
 - Using percentile function to generate histogram with constant number
   of values in each bin. [Adam Dybbroe]
-
 - Using numpy.pecentile function to cut the data in the linear stretch.
   [Adam Dybbroe]
-
 - Fix histogram stretch unit test. [Adam Dybbroe]
-
 - Correcting the histogram stretching. The com_histogram function was in
   error when asking for "normed" histograms. [Adam Dybbroe]
-
 - Added histogram method that makes a more populated histogram when the
   data are heaviliy skeewed. Fixes problem seen by Bocheng in DNB
   imagery. [Adam Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
-
 - Don't remove GeolocationFlyweight _instances, but reset it. Allowing
   for multiple "loads" [Adam Dybbroe]
-
 - Add imageo.formats to installation. [Martin Raspaud]
-
 - AAPP loading bug fix. [Martin Raspaud]
 
   the aapp1b.py loader to aapp data was broken as it was loading both
   channels 3a and 3b each time, one of them being entirely masked. This of
   course created some problem further down. Fixed by setting the not loadable
   channel to None.
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Bugfix in npp.cfg template. [Adam Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
-
 - Fixing bug concerning the identification of VIIRS geolocation files.
   Now the configuration specified in npp.cfg overwrites what is actually
   written in the metadata header of the band files. [Adam Dybbroe]
-
 - Make saturn posttroll capable. [Martin Raspaud]
-
 - Bump up version number. [Martin Raspaud]
-
 - Cosmetics. [Martin Raspaud]
-
 - Fixing test cases. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Remove dummy test to boost projection performance. [Martin Raspaud]
 
   Mpop was checking in 2 different places if the source and target areas were
@@ -1649,7 +1143,6 @@ Other
   an allclose. This was inefficient, and the programming team decided that it
   was the user's task to know before projection if the source and target area
   were the same. In other words, the user should be at least a little smart.
-
 - Remove dummy test to boost projection performance. [Martin Raspaud]
 
   Mpop was checking in 2 different places if the source and target areas were
@@ -1658,125 +1151,80 @@ Other
   an allclose. This was inefficient, and the programming team decided that it
   was the user's task to know before projection if the source and target area
   were the same. In other words, the user should be at least a little smart.
-
 - Update channel list for modis lvl2. [Martin Raspaud]
-
 - Bump up version number: 1.0.0. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Cleanup. [Martin Raspaud]
 
+
 v1.0.0 (2013-09-25)
 -------------------
-
 - Release v1.0.0. [Martin Raspaud]
-
 - Changing palette name to something more intuitive. Allow to have orbit
   number equals None. [Adam Dybbroe]
-
 - Fixing aqua/terra template config files for dual gain channels (13&14)
   [Adam Dybbroe]
-
 - Added Ninjo tiff example areas definitions. [Lars Orum Rasmussen]
-
 - Cosmetic. [Lars Orum Rasmussen]
-
 - Ninjo tiff writer now handles singel channels. [Lars Orum Rasmussen]
 
   Ninjo tiff meta-data can now all be passed as arguments
 
-
 - Better documentation. [Lars Orum Rasmussen]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
 
   Conflicts:
   	etc/npp.cfg.template
 
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Changed template to fit new npp reader. [krl]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam Dybbroe]
-
 - Updated npp confirg file template with geo_filename example. [Adam
   Dybbroe]
-
 - Make overview consistent with the standard overview. [Adam Dybbroe]
-
 - Updated npp-template to fit the new viirs reader using the (new)
   plugin-loader system. [Adam Dybbroe]
-
 - Minor clean up. [Adam Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
 
   Conflicts:
   	mpop/satin/viirs_sdr.py
 
-
 - Fix version stuff. [Martin Raspaud]
-
 - Merge branch 'feature-optimize_viirs' into unstable. [Martin Raspaud]
-
 - Make viirs_sdr a plugin of new format. [Martin Raspaud]
-
 - Finalize optimisation i new viirs reader. [Martin Raspaud]
-
 - Optimization ongoing. Mask issues. [Martin Raspaud]
-
 - Clarify failure to load hrit data. [Martin Raspaud]
-
 - Lunar stuff... [Adam Dybbroe]
-
 - Fix install requires. [Martin Raspaud]
-
 - Fix projector unit test. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Merge branch 'pre-master' of git://github.com/mraspaud/mpop into pre-
   master. [Martin Raspaud]
-
 - Fixed (temporary ?) misuse of Image.SAVE. [Lars Orum Rasmussen]
-
 - Now config reader is a singleton. [Lars Orum Rasmussen]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Merge branch 'pre-master' of git://github.com/mraspaud/mpop into pre-
   master. [Martin Raspaud]
-
 - Tmplate -> template. [Lars Orum Rasmussen]
-
 - Added support for saving in Ninjo tiff format. [Lars Orum Rasmussen]
-
 - Projector cleanup. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - New VIIRS reader. Better, faster, smarter (consumimg less memory)
   [Adam Dybbroe]
-
 - Fix area hashing. [Martin Raspaud]
-
 - Fix install dependency. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Merge branch 'pre-master' of git://github.com/mraspaud/mpop into pre-
   master. [Martin Raspaud]
 
@@ -1784,19 +1232,14 @@ v1.0.0 (2013-09-25)
   	doc/source/conf.py
   	setup.py
 
-
 - Optimize. [Martin Raspaud]
-
 - Remove the optional ahamap requirement. [Martin Raspaud]
-
 - Manage version number centrally. [Martin Raspaud]
-
 - Merge branch 'release-v0.13.0' [Martin Raspaud]
 
   Conflicts:
   	setup.py
 
-
 - Merge branch 'pre-master' [Martin Raspaud]
 
   Conflicts:
@@ -1804,192 +1247,124 @@ v1.0.0 (2013-09-25)
   	setup.py
 
 
+
 v0.13.0 (2013-05-08)
 --------------------
-
 - Bump up version number for release. [Martin Raspaud]
-
 - Merge branch 'pre-master' of git://github.com/mraspaud/mpop into pre-
   master. [Martin Raspaud]
-
 - Bump up version number. [Martin Raspaud]
-
 - Make old plugin an info instead of a warning. [Martin Raspaud]
-
 - Merge branch 'pre-master' of git://github.com/mraspaud/mpop into pre-
   master. [Martin Raspaud]
-
 - Pep8. [Adam Dybbroe]
-
 - Merge branch 'aapp1b' into unstable. [Adam Dybbroe]
-
 - Don't mask out IR channel data where count equals zero. [Adam Dybbroe]
-
 - Fixing the masking of the ir calibrated Tbs - count=0 not allowed.
   [Adam Dybbroe]
-
 - Make also vis channels masked arrays. [Adam Dybbroe]
-
 - Checking if file format is post or pre v4 : If bandcor_2 < 0 we are at
   versions higher than 4 Masking a bit more strict. [Adam Dybbroe]
-
 - Now handle data without a mask and handling lons and lats without
   crashing. [Lars Orum Rasmussen]
-
 - Read signed instead of unsigned (aapp1b). [Martin Raspaud]
-
 - Style cleanup. [Martin Raspaud]
-
 - Adding calibration type as an option to the loader. So counts,
   radiances or tbs/refl can be returned. [Adam Dybbroe]
-
 - Better show and more cosmetic. [Lars Orum Rasmussen]
-
 - Making pylint more happy and some cosmetic. [Lars Orum Rasmussen]
-
 - No need to night_overview, use cloudtop with options. [Lars Orum
   Rasmussen]
-
 - Now IR calibration returns a masked array. [Lars Orum Rasmussen]
-
 - Added som options for overview image and added a night overview. [Lars
   Orum Rasmussen]
-
 - Finalize aapp1b python-only reader. [Martin Raspaud]
-
 - Working on a aapp l1b reader. [oananicola]
-
 - Starting a aapp1b branch for directly reading aapp's l1b files. [Lars
   Orum Rasmussen]
-
 - Adding a bit of debug info... [Adam Dybbroe]
-
 - Adding orbit number to the cloud mask object. [Adam Dybbroe]
-
 - Channel cleanup and tests. [Martin Raspaud]
-
 - Merge branch 'feature_plugins' into unstable. [Martin Raspaud]
-
 - Make orbit number an 5-character string (padding with '0') [Martin
   Raspaud]
-
 - New plugin implementation, backward compatible. [Martin Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Lars Orum Rasmussen]
-
 - Reverted to previous commit. [Lars Orum Rasmussen]
-
 - Correct green-snow. [Martin Raspaud]
 
   Use 0.6 instead on 0.8
 
-
 - Now, if specified in proj4 object, add EPGS code to tiff metadata.
   [Lars Orum Rasmussen]
-
 - Added, a poor man's version, of Adam's DNB RGB image. [Lars Orum
   Rasmussen]
 
+
 v0.12.1 (2013-03-14)
 --------------------
-
 - Cleanup. [Martin Raspaud]
-
 - Add several cores for geoloc in eos. [Martin Raspaud]
-
 - Bugfix hdfeos. [Martin Raspaud]
-
 - Fix loading of terra aqua with multiple cores. [Martin Raspaud]
-
 - Add dust, fog, ash composites to VIIRS. [Martin Raspaud]
-
 - Enhance error messages. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - New template files for regional EARS (AVHRR and NWC) file support.
   [Adam Dybbroe]
-
 - Minor cosmetics. [Adam Dybbroe]
-
 - Make orbit number an 5-character string (padding with '0') [Martin
   Raspaud]
-
 - Merge branch 'fixrtd' into unstable. [Martin Raspaud]
-
 - Add pyresample to mock for doc building. [Martin Raspaud]
-
 - Get rid of the np.inf error in rtd. [Martin Raspaud]
-
 - Mock some import for the documentation. [Martin Raspaud]
-
 - Introducing clip percentage for SAR average product. [Lars Orum
   Rasmussen]
-
 - Add symlink from README.rst to README. [Martin Raspaud]
-
 - Update download link and README. [Martin Raspaud]
 
+
 v0.12.0 (2013-01-10)
 --------------------
-
 - Bump up version number. [Martin Raspaud]
-
 - Cosmetics. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
-
 - Support for calibrate option. [Adam Dybbroe]
-
 - Add template file for meteosat 10. [Martin Raspaud]
-
 - Add debug messages to hdf-eos loader. [Martin Raspaud]
 
+
 v0.11.7 (2012-12-04)
 --------------------
 
 Fix
 ~~~
-
 - Bugfix: allow more than one "-" in section names. [Martin Raspaud]
-
 - Bugfix: read aqua/terra orbit number from file only if not already
   defined. [Martin Raspaud]
-
 - Bugfix: fixed unittest case for wavelengths as lists. [Martin Raspaud]
-
 - Bugfix: remove deprecated mviri testcases. [Martin Raspaud]
-
 - Bugfix: backward compatibility with netcdf files. [Martin Raspaud]
-
 - Bugfix: removed the old mviri compositer. [Martin Raspaud]
-
 - Bugfix: When assembling, keep track of object, not just lon/lats.
   [Martin Raspaud]
-
 - Bugfix: assembling scenes would unmask some lon/lats... [Martin
   Raspaud]
-
 - Bugfix: handling of channels with different resolutions in
   assemble_segments. [Martin Raspaud]
-
 - Bugfix: Runner crashed if called with an area not in product list.
   [Martin Raspaud]
-
 - Bugfix: the nwcsaf_pps reader was crashing if no file was found...
   [Martin Raspaud]
-
 - Bugfix: pynav is not working in some cases, replace with pyorbital.
   [Martin Raspaud]
-
 - Bugfix: can now add overlay in monochromatic images. [Martin Raspaud]
-
 - Bugfix: swath scene projection takes forever from the second time.
   [Martin Raspaud]
 
@@ -1998,501 +1373,321 @@ Fix
 
 Other
 ~~~~~
-
 - Support pnm image formats. [Martin Raspaud]
-
 - The pps palette broke msg compatibility. Now there are two palettes,
   one for msg and one for pps. [Adam Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
 
   Conflicts:
   	mpop/satin/viirs_sdr.py
 
-
 - Adapted viirs reader to handle aggregated granule files. [Adam
   Dybbroe]
-
 - Fixing nwcsaf-pps ctth height palette. [Adam Dybbroe]
-
 - Take better care of the path (was uri) argument. [Martin Raspaud]
-
 - Don't do url parsing in the hdfeos reader. [Martin Raspaud]
-
 - Fix unit tests. [Martin Raspaud]
-
 - Remove the deprecated append function in scene. [Martin Raspaud]
-
 - Return when not locating hdf eos file. [Martin Raspaud]
-
 - Remove raveling in kd_tree. [Martin Raspaud]
-
 - Make use of the new strftime in the viirs reader. [Martin Raspaud]
-
 - Add a custom strftime. [Martin Raspaud]
 
   This fixes a bug in windows that prevents running strftime on string that
   contain mapping keys conversion specifiers.
-
 - Catch the error if there is no file to load from. [Martin Raspaud]
-
 - Add a proper logger in hdfeos reader. [Martin Raspaud]
-
 - Get resolution from filename for eos data. [Martin Raspaud]
-
 - Introducing stretch argument for average product. [Lars Orum
   Rasmussen]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Lars Orum Rasmussen]
-
 - Clean up. [Martin Raspaud]
-
 - Bump up version number. [Martin Raspaud]
-
 - Support passing a uri to hdfeos reader. [Martin Raspaud]
-
 - Fix the loading of BT for VIIRS M13 channel. [Martin Raspaud]
 
   Has no scale and offset
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Lars Orum Rasmussen]
-
 - Refactor the unsigned netcdf packing code. [Martin Raspaud]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Lars Orum Rasmussen]
-
 - Support packing data as unsigned in netcdf. [Martin Raspaud]
-
 - Replace auto mask and scale from netcdf4. [Martin Raspaud]
 
   Eats up too much memory.
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Lars Orum Rasmussen]
-
 - Feature: Added template for electro-l satellite. [Martin Raspaud]
-
 - Feature: taking care of missing data in the viirs reader, and allow
   for radiance retrieval. [Martin Raspaud]
-
 - Feature: last adjustments to new netcdf format. [Martin Raspaud]
-
 - Merge branch 'feature-netcdf-upgrade' into unstable. [Martin Raspaud]
 
   Conflicts:
   	mpop/satout/cfscene.py
   	mpop/satout/netcdf4.py
 
-
 - Merge branch 'unstable' into feature-netcdf-upgrade. [Martin Raspaud]
-
 - Merge branch 'unstable' into feature-netcdf-upgrade. [Martin Raspaud]
 
   Conflicts:
   	mpop/satin/mipp_xsar.py
 
-
 - Work on new netcdf format nearing completion. [Martin Raspaud]
-
 - Feature: wrapping up new netcdf format, cf-satellite 0.2. [Martin
   Raspaud]
-
 - Renamed some global attributes. [Martin Raspaud]
-
 - Netcdf: working towards better matching CF conventions. [Martin
   Raspaud]
-
 - WIP: NetCDF cleaning. [Martin Raspaud]
 
   - scale_factor and add_offset are now single values.
   - vertical_perspective to geos
 
-
 - Merge branch 'unstable' into feature-netcdf-upgrade. [Martin Raspaud]
-
 - Group channels by unit and area. [Martin Raspaud]
-
 - Do not apply scale and offset when reading. [Martin Raspaud]
-
 - WIP: updating the netcdf interface. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Changed handeling of "_FillValue"-attributes. Added
   find_FillValue_tags function to search for "_FillValue" attributes.
   The "_FillValue" attributes are used and set when variables are
   created. [Nina.Hakansson]
-
 - Cosmetics. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Fixing bug concerning viirs bandlist and the issue of preventing the
   loading of channels when only products are requested. [Adam Dybbroe]
-
 - Fixing VIIRS reader - does not try to read SDR data if you only want
   to load a product. Minor fixes in MODIS and AAPP1b readers. [Adam
   Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
-
 - Bugfix in viirs sdr reader. [Adam Dybbroe]
-
 - Added ir108 composite to Viirs. [Martin Raspaud]
-
 - RUN: add possibility to get prerequisites for a list of areas. [Martin
   Raspaud]
-
 - Updating area_id for the channel during viirs loading and assembling
   of segments. [Martin Raspaud]
-
 - Area handling in viirs and assembling segments. [Martin Raspaud]
-
 - Viirs true color should have a transparent background. [Martin
   Raspaud]
-
 - Added enhancements to the image.__call__ function. [Martin Raspaud]
-
 - Fixing runner to warn for missing functions (instead of crashing).
   [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
 
   Conflicts:
   	mpop/satin/viirs_sdr.py
 
-
 - Bug fix green-snow RGB. [Adam Dybbroe]
-
 - Cleaning up a bit in viirs reader. [Adam Dybbroe]
-
 - Temporary fix to deal with scale-factors (in CLASS archive these are
   not tuples of 2 but 6). Taken from old fix in npp-support branch.
   [Adam Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
-
 - Support for bzip2 compressed NWCSAF products (EARS-NWC) [Adam Dybbroe]
-
 - More flexible viirs reading, and fixes to viirs composites. [Martin
   Raspaud]
-
 - Added a stereographic projection translation. [Lars Orum Rasmussen]
-
 - Added modist as valid name for 'eos1' [Lars Orum Rasmussen]
-
 - Added night_microphysics. [Lars Orum Rasmussen]
-
 - Added stretch option. [Lars Orum Rasmussen]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Feature: new function to create an image from a scene. [Martin
   Raspaud]
-
 - Fixed a new npp template config file, with geo_filename example. [Adam
   Dybbroe]
-
 - Adding 500meter scan area. [Adam Dybbroe]
-
 - Fixing bug in geolocation reading and removing old style viirs
   composite file. [Adam Dybbroe]
-
 - Using a template from configuration file to find the geolocation file
   to read - for all VIIRS bands. [Adam Dybbroe]
-
 - Fixed bug in hr_natural and added a dnb method. [Adam Dybbroe]
-
 - Fixing Bow-tie effects and geolocation for VIIRS when using Cloudtype.
   Needs to be generalised to all products! [Adam Dybbroe]
-
 - Support for tiepoint grids and interpolation + masking out no-data
   geolocation (handling VIIRS Bow-tie deletetion) [Adam Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
-
 - Adding viirs composites and pps_odim reader for avhrr and viirs
   channel data in satellite projection (swath) [Adam Dybbroe]
-
 - Added a Geo Phys Product to modis level2. [Lars Orum Rasmussen]
-
 - Merge branch 'pre-master' of github.com:mraspaud/mpop into pre-master.
   [Lars Orum Rasmussen]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Adding support for ob_tran projection even though it is not cf-
   compatible yet. [Adam Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam Dybbroe]
-
 - Added the reading of geolocation data from the PPS formatet level1
   file. [Adam Dybbroe]
-
 - Added Europe Mesan area to template. [Adam Dybbroe]
-
 - Feature: MSG hdf files are now used to determine the area. [Martin
   Raspaud]
-
 - Fixed error message. [Martin Raspaud]
-
 - Cleanup: clarified import error. [Martin Raspaud]
-
 - Cleanup: More descriptive message when plugin can't be loaded. [Martin
   Raspaud]
-
 - Raised version number. [Martin Raspaud]
-
 - More relevant messages in msg_hdf reading. [Martin Raspaud]
-
 - Adding a RGB for night condition. [Lars Orum Rasmussen]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
 
+
 v0.11.5 (2012-05-21)
 --------------------
 
 Fix
 ~~~
-
 - Bugfix: importing geotiepoints. [Martin Raspaud]
-
 - Bugfix: hdfeos was not eumetcast compliant :( [Martin Raspaud]
-
 - Bugfix: Do not raise exception on loading failure (nwcsaf_pps) [Martin
   Raspaud]
-
 - Bugfix: fixed misc bugs. [Martin Raspaud]
-
 - Bugfix: comparing directories with samefile is better than ==. [Martin
   Raspaud]
-
 - Bugfix: updating old eps_l1b interface. [Martin Raspaud]
-
 - Bugfix: Fixed typo in gatherer. [Martin Raspaud]
-
 - Bugfix: taking satscene.area into consideration for get_lonlat.
   [Martin Raspaud]
-
 - Bugfix: mipp required version to 0.6.0. [Martin Raspaud]
-
 - Bugfix: updating unittest and setup for new mipp release. [Martin
   Raspaud]
-
 - Bugfix: for eps l1b, get_lonlat did not return coherent values since
   the introduction of pyresample. [Martin Raspaud]
-
 - Bugfix: mipp to mipp_xrit namechange. [Martin Raspaud]
-
 - Bugfix: better detection of needed channels in aapp1b. [Martin
   Raspaud]
-
 - Bugfix: support for other platforms. [Martin Raspaud]
-
 - Bugfix: Support python 2.4 in mipp plugin. [Martin Raspaud]
-
 - Bugfix: masked arrays should be conserved by scene.__setitem__ [Martin
   Raspaud]
-
 - Bugfix: Don't make area and time_slot static in compositer. [Martin
   Raspaud]
-
 - Bugfix: reinit channels_to_load and messages for no loading. [Martin
   Raspaud]
 
   - When the loading process is interrupted, the channels_to_load attribute was not reinitialized.
   - Added a message when loading for a given level did not load anything.
 
-
 - Bugfix: Give an informative message when area is missing for msg's hdf
   reader. [Martin Raspaud]
-
 - Bugfix: update satpos file retrieval for hrpt and eps1a. [Martin
   Raspaud]
-
 - Bugfix: fixed unittests for new plugin system. [Martin Raspaud]
-
 - Bugfix: Do not load plugins automatically... [Martin Raspaud]
-
 - Bugfix: satellite vs satname again. [Martin Raspaud]
-
 - Bugfix: don't crash if msg hdf can't be loaded. [Martin Raspaud]
-
 - Bugfix: project now chooses mode automatically by default. [Martin
   Raspaud]
-
 - Bugfix: eps_avhrr adapted to new plugin format. [Martin Raspaud]
-
 - Bugfix: loading in msg_hdf adapted to new plugin system. [Martin
   Raspaud]
-
 - Bugfix: loading plugins should fail on any exception. [Martin Raspaud]
-
 - Bugfix: stupid syntax error. [Martin Raspaud]
-
 - Bugfix: mistook satname for satellite. [Martin Raspaud]
-
 - Bugfix: move to jenkins. [Martin Raspaud]
-
 - Bugfix: affecting area to channel_image. [Martin Raspaud]
-
 - Bugfix: Better handling of alpha channel. [Martin Raspaud]
-
 - Bugfix: filewatcher would wait a long time if no new file has come.
   [Martin Raspaud]
 
 Other
 ~~~~~
-
 - Bumped up version number. [Martin Raspaud]
-
 - Modis level-2 reader and netcdf writer can now handle scenes
   containing only geo-physical product (and no channels) [Lars Orum
   Rasmussen]
-
 - Feature: Pypi ready. [Martin Raspaud]
-
 - Bufix: updating to use python-geotiepoints. [Martin Raspaud]
-
 - Bumping up the version number for the next release. [Martin Raspaud]
-
 - Doc: updating add_overlay documentation. [Martin Raspaud]
-
 - Merge pull request #2 from cheeseblok/FixViirsRedSnow. [Martin
   Raspaud]
 
   Fix typo in red_snow check_channels method
-
 - Fix typo in red_snow check_channels method. [Scott Macfarlane]
-
 - Feature: adding interpolation to modis lon lats. [Martin Raspaud]
-
 - Use pynav to get lon/lats if no file can be read. [Martin Raspaud]
-
 - Hack to handle both level2 and granules. [Martin Raspaud]
-
 - Added the possibility to provide a filename to eps_l1b loader. [Martin
   Raspaud]
-
 - Merge branch 'feature_new_eps_reader' into unstable. [Martin Raspaud]
-
 - Added xml file to etc and setup.py. [Martin Raspaud]
-
 - Bugfix in geolocation assignment. [Martin Raspaud]
-
 - Allowing for both 3a and 3A. [Martin Raspaud]
-
 - Put xml file in etc. [Martin Raspaud]
-
 - New eps l1b is now feature complete. Comprehensive testing needed.
   [Martin Raspaud]
-
 - Added a new eps l1b reader based on xml description of the format.
   [Martin Raspaud]
-
 - Corrected longitude interpolation to work around datum shift line.
   [Martin Raspaud]
-
 - Cloudtype channel now called "CT". [Martin Raspaud]
-
 - Merge branch 'pre-master' of git://github.com/mraspaud/mpop into pre-
   master. [Martin Raspaud]
-
 - SetProjCS is now correctly called after ImportFromProj4. [Lars Orum
   Rasmussen]
 
   Added SetWellKnownGeogCS if available
 
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
 
   Conflicts:
   	mpop/satin/mipp_xsar.py
 
-
 - More correct 'new area' [Lars Orum Rasmussen]
-
 - Mipp restructure. [Lars Orum Rasmussen]
-
 - Merge branch 'pre-master' into area-hash. [Lars Orum Rasmussen]
-
 - Merge branch 'pre-master' into area-hash. [Lars Orum Rasmussen]
-
 - Now more unique projection filenames (using hash of areas) [Lars Orum
   Rasmussen]
-
 - Enhancements to pps hdf format readers. [Martin Raspaud]
-
 - Feature: added support for geotiff float format in geo_image. [Martin
   Raspaud]
-
 - Don't touch satscene.area if already present (mipp reading) [Martin
   Raspaud]
-
 - Feature: get best msg hdf file using area_extent. [Martin Raspaud]
-
 - Duck typing for channel assignation. [Martin Raspaud]
-
 - Fixed meteosat reading. [Martin Raspaud]
 
   - do not change the scene metadata when no channel is loaded
   - do not crash if no PGE is present
 
-
 - Added shapes in mpop.cfg.template for pycoast. [Martin Raspaud]
-
 - Cleanup. [Martin Raspaud]
-
 - New add_overlay function, using pycoast. [Martin Raspaud]
-
 - Added test for __setitem__ (scene) [Martin Raspaud]
-
 - Feature: add a global area if possible. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Fixing so thar also other products (than Channel data) can be
   assempled. [Adam.Dybbroe]
-
 - Adding data member to CloudType. [Adam.Dybbroe]
-
 - Added support for trucolor image from modis. [Adam.Dybbroe]
-
 - Cleaning up geo_image.py. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
 
   Conflicts:
   	mpop/satin/hdfeos_l1b.py
 
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam.Dybbroe]
-
 - Minor cosmetic/editorial stuff. [Adam.Dybbroe]
-
 - Small bugfix - viirs interface. [Adam.Dybbroe]
-
 - Feature: wrapping up hdfeos upgrade. [Martin Raspaud]
 
   - migrated data to float32 instead of float64
@@ -2500,61 +1695,45 @@ Other
   - adjust channel resolution to match loaded data
   - added template terra.cfg file.
 
-
 - Trimming out dead detectors. [Adam.Dybbroe]
-
 - WIP: hdf eos now reads only the needed channels, and can have several
   resolutions. Geoloc is missing though. [Martin Raspaud]
-
 - WIP: Started working on supporting halv/quarter files for modis.
   [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Changed MODIS HDF-EOS level 1b reader to accomodate both the thinned
   EUMETCasted data and Direct readout data. Changed name from
   thin_modis.py to hdfeos_l1b.py. Added filename pattern to config.
   [Adam.Dybbroe]
-
 - Fixing indexing bug: missing last line in Metop AVHRR granule.
   [Adam.Dybbroe]
-
 - Revert "Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into
   unstable" [Martin Raspaud]
 
   This reverts commit 45809273f2f9670c8282c32197ef47071aecaa74, reversing
   changes made to 10ae6838131ae1b6e119e05e08496d1ec9018a4a.
 
-
 - Revert "Reapplying thin_modis cleaning" [Martin Raspaud]
 
   This reverts commit 52c63d6fbc9f12c03b645f29dd58250da943d24a.
 
-
 - Reapplying thin_modis cleaning. [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Martin Raspaud]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam.Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam.Dybbroe]
-
 - Merge branch 'pre-master' into unstable. [Adam.Dybbroe]
 
   Conflicts:
   	mpop/satin/eps_avhrr.py
 
-
 - Minor enhancements to nwcsaf pps cloud type reading: Adding support
   for phase and quality flags. [Adam.Dybbroe]
-
 - Fixing indexing bug: missing last line in Metop AVHRR granule.
   [Adam.Dybbroe]
-
 - Merge branch 'unstable' of /data/proj/SAF/GIT/mpop into unstable.
   [Adam.Dybbroe]
 
@@ -2573,383 +1752,228 @@ Other
   	setup.py
   	version.py
 
-
 - Merge branch 'unstable' of https://github.com/mraspaud/mpop into
   unstable. [Adam.Dybbroe]
-
 - Thin_modis Cleanup. [Martin Raspaud]
-
 - Cleanup. [Martin Raspaud]
-
 - Style: Cleaning up. [Martin Raspaud]
-
 - Doc: added screenshots. [Martin Raspaud]
-
 - Cleanup, switch to compositer globaly. [Martin Raspaud]
-
 - Doc: added more documentation to polar_segments.py. [Martin Raspaud]
-
 - Cleanup: remove old unit test for assemble_swath. [Martin Raspaud]
-
 - Bugfix in assemble_segments. [Martin Raspaud]
-
 - Cleanup: removed old assemble_swath function. [Martin Raspaud]
-
 - Doc: update docstring for project. [Martin Raspaud]
-
 - Upgrade: assemble_segments now uses scene factory. [Martin Raspaud]
-
 - DOC: examples are now functional. [Martin Raspaud]
-
 - Cleanup: removed old plugins directory. [Martin Raspaud]
-
 - Merge branch 'new_plugins' into unstable. [Martin Raspaud]
 
   Conflicts:
   	mpop/plugin_base.py
 
-
 - Init file for plugins initialization. [Adam.Dybbroe]
-
 - Merge branch 'new_plugins' of https://github.com/mraspaud/mpop into
   new_plugins. [Adam.Dybbroe]
-
 - Removing old deprecated and now buggy part - has been caught by the
   try-exception since long. Adding for plugins directory. [Adam.Dybbroe]
-
 - Corrected import bug. [Adam.Dybbroe]
-
 - Merge branch 'unstable' into new_plugins. [Adam.Dybbroe]
-
 - Bug correction - config file reading section 'format' [Adam.Dybbroe]
-
 - Removing old deprecated and now buggy part - has been caught by the
   try-exception since long. Adding for plugins directory. [Adam.Dybbroe]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
-
 - Merge branch 'unstable' of https://github.com/mraspaud/mpop into
   unstable. [Adam.Dybbroe]
-
 - First time in git. [Adam.Dybbroe]
-
 - Merge branch 'unstable' of https://github.com/mraspaud/mpop into
   unstable. [Adam.Dybbroe]
-
 - Meris level-2 reader - first commit. [Adam.Dybbroe]
-
 - Minor fixes. [Adam.Dybbroe]
-
 - Fixed typo. [Adam.Dybbroe]
-
 - Feature: updating mipp test to use factory. [Martin Raspaud]
-
 - Cleaning up an old print. [Martin Raspaud]
-
 - Merge branch 'v0.10.2-support' into unstable. [Martin Raspaud]
-
 - Feature: added support for new eumetsat names (modis) and terra.
   [Martin Raspaud]
-
 - Merge branch 'new_plugins' into unstable. [Martin Raspaud]
-
 - Moved mipp plugin back to satin. [Martin Raspaud]
-
 - Feature: all former plugins are adapted to newer format. [Martin
   Raspaud]
-
 - Style: finalizing plugin system. Now plugins directories loaded from
   mpop.cfg. [Martin Raspaud]
-
 - Cleanup: removing old stuff. [Martin Raspaud]
-
 - Feature: added reader plugins as attributes to the scene, called
   "<format>_reader". [Martin Raspaud]
-
 - Feature: new plugin format, added a few getters and made scene
   reference weak. [Martin Raspaud]
-
 - New plugin system. [Martin Raspaud]
 
   Transfered the mipp plugin.
 
-
 - DOC: fixed path for examples. [Martin Raspaud]
-
 - DOC: Added documentation examples to the project. [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
-
 - Using LOG call instead of print. [Adam.Dybbroe]
-
 - Fixed missing LOG import. [Adam.Dybbroe]
-
 - Further improvements to MODIS level2 reader and processor.
   [Adam.Dybbroe]
-
 - Feature: Added projection to the pps_hdf channels. [Martin Raspaud]
-
 - DOC: added use examples in the documentation directory. [Martin
   Raspaud]
-
 - Merge branch 'master' into unstable. [Martin Raspaud]
-
 - Added posibility to have instrument_name in the filenames.
   [Adam.Dybbroe]
-
 - Making sure we pass on orbit number when projecting the scene.
   [Adam.Dybbroe]
-
 - Added colour map for Modis Chlorophyl-A product. [Adam.Dybbroe]
-
 - Taking away the alpha parameters for RGB modes. [Martin Raspaud]
-
 - Added areas in channels for test. [Martin Raspaud]
-
 - Added the radius parameter to runner. [Martin Raspaud]
-
 - Adding preliminary NWCSAF pps product reader. [Adam.Dybbroe]
-
 - Cleaning up. [Martin Raspaud]
-
 - Updated satpos file directories. [Martin Raspaud]
-
 - Cleaning up. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Updated copyright and version number. [Martin Raspaud]
-
 - Updating setup stuff. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Adding Day/Night band support. [Adam.Dybbroe]
-
 - Adding area for mapping sample data i-bands. [Adam.Dybbroe]
-
 - Scaling reflectances to percent (%) as required in mpop.
   [Adam.Dybbroe]
-
 - Adding support for I-bands. [Adam.Dybbroe]
-
 - Merge branch 'pre-master' of https://github.com/mraspaud/mpop into
   pre-master. [Adam.Dybbroe]
-
 - Merge branch 'npp-support' into pre-master. [Adam.Dybbroe]
-
 - Renamed to npp1.cfg. [Adam.Dybbroe]
-
 - VIIRS composites - M-bands only so far. [Adam.Dybbroe]
-
 - Cleaning print statements. [Adam.Dybbroe]
-
 - NPP template. [Adam.Dybbroe]
-
 - Adding NPP/VIIRS test area for sample data: M-bands. [Adam.Dybbroe]
-
 - Adding I-band support. [Adam.Dybbroe]
-
 - Fixing for re-projection. [Adam.Dybbroe]
-
 - Various small corrections. [Adam.Dybbroe]
-
 - Corrected band widths - ned to be in microns not nm. [Adam.Dybbroe]
-
 - Support for NPP/JPSS VIIRS. [Adam.Dybbroe]
-
 - Updated copyright in sphinx doc. [Martin Raspaud]
-
 - Deprecating add_overlay in favor of pycoast. [Martin Raspaud]
-
 - Merge branch 'feature-new-nc-format' into unstable. [Martin Raspaud]
-
 - Added support for different ordering of dimensions in band data.
   [Martin Raspaud]
 
   Use the band_axis keyword argument.
 
-
 - NC reader support different dimension orderings for band-data. [Martin
   Raspaud]
-
 - NC: now band data is of shape (band, x, y). [Martin Raspaud]
 
+
 v0.11.0 (2011-09-20)
 --------------------
 
 Fix
 ~~~
-
 - Bugfix: netcdf saving didn't record lat and lon correctly. [Martin
   Raspaud]
-
 - Bugfix: netcdf saving didn't work if only one value was available.
   [Martin Raspaud]
-
 - Bugfix: test_mipp had invalid proj parameters. [Martin Raspaud]
-
 - Bugfix: satellite vs satname again. [Martin Raspaud]
-
 - Bugfix: project now chooses mode automatically by default. [Martin
   Raspaud]
-
 - Bugfix: move to jenkins. [Martin Raspaud]
-
 - Bugfix: fixed unit test for projector reflecting the new mode
   handling. [Martin Raspaud]
-
 - Bugfix: fixed None mode problem in projector. [Martin Raspaud]
-
 - Bugfix: The default projecting mode now take into account the types of
   the in and out areas. [Martin Raspaud]
-
 - Bugfix: forgot the argument to wait in filewatcher. [Martin Raspaud]
-
 - Bugfix: tags and gdal_options were class attributes, they should be
   instance attributes. [Martin Raspaud]
-
 - Bugfix: 0 reflectances were masked in aapp1b loader. [Martin Raspaud]
-
 - Bugfix: corrected parallax values as no_data in msg products reading.
   [Martin Raspaud]
-
 - Bugfix: tags and gdal_options were class attributes, they should be
   instance attributes. [Martin Raspaud]
-
 - Bugfix: Compatibility with nordrad was broken. [Martin Raspaud]
-
 - Bugfix: forgot the argument to wait in filewatcher. [Martin Raspaud]
-
 - Bugfix: forgot strptime = datetime.strptime when python > 2.5. [Martin
   Raspaud]
-
 - Bugfix: corrected parallax values as no_data in msg products reading.
   [Martin Raspaud]
-
 - Bugfix: individual channel areas are preserved when assembled
   together. [Martin Raspaud]
-
 - Bugfix: cleanup tmp directory when convertion to lvl 1b is done.
   [Martin Raspaud]
-
 - Bugfix: remove hardcoded pathes in hrpt and eps lvl 1a. [Martin
   Raspaud]
-
 - Bugfix: use mpop's main config path. [Martin Raspaud]
-
 - Bugfix: added python 2.4 compatibility. [Martin Raspaud]
-
 - Bugfix: allow all masked array as channel data. [Martin Raspaud]
-
 - Better support for channel-bound areas. [Martin Raspaud]
-
 - Bugfix: 0 reflectances were masked in aapp1b loader. [Martin Raspaud]
-
 - Bugfix: tags and gdal_options were class attributes, they should be
   instance attributes. [Martin Raspaud]
-
 - Bugfix: error checking on area_extent for loading. [Martin Raspaud]
-
 - Bugfix: non loaded channels should not induce computation of
   projection. [Martin Raspaud]
-
 - Bugfix: thin modis didn't like area extent and was locked in 2010...
   [Martin Raspaud]
-
 - Bugfix: Compatibility with nordrad was broken. [Martin Raspaud]
 
 Other
 ~~~~~
-
 - Merge branch 'release-0.11' [Martin Raspaud]
-
 - Merge branch 'pre-master' into release-0.11. [Martin Raspaud]
-
 - Updated copyright dates in setup.py. [Martin Raspaud]
-
 - Bumped version number to 0.11.0. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Now a channel can be added to a scene dynamically using dict notation.
   [esn]
-
 - Added units to aapp1b reader. [Martin Raspaud]
-
 - Deactivating mipp loading test. [Martin Raspaud]
-
 - Adjusted tests for compositer. [Martin Raspaud]
-
 - Merge branch 'feature-cleaning' into unstable. [Martin Raspaud]
-
 - Merge branch 'unstable' into feature-cleaning. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Added append function to scene.py. [Esben S. Nielsen]
-
 - New error message when no instrument-levelN section is there in the
   satellite config file. [Martin Raspaud]
-
 - Merge branch 'feature-radius-of-influence' into unstable. [Martin
   Raspaud]
-
 - Syntax bug fixed. [Martin Raspaud]
-
 - Made orbit number default to None for PolarFactory's create_scene.
   [Martin Raspaud]
-
 - Merge branch 'feature-radius-of-influence' into unstable. [Martin
   Raspaud]
-
 - Radius of influence is now a keyword parameter to the scene.project
   method. [Martin Raspaud]
-
 - Merge branch 'pre-master' into unstable. [Martin Raspaud]
-
 - Can now get reader plugin from PYTHONPATH. [Esben S. Nielsen]
-
 - Renamed asimage to as_image. [Martin Raspaud]
-
 - Wavelength and resolution are not requirements in config files
   anymore. [Martin Raspaud]
-
 - Merge branch 'feature-channel-to-image' into unstable. [Martin
   Raspaud]
-
 - Feature: added the asimage method to channels, to retrieve a black and
   white image from the channel data. [Martin Raspaud]
-
 - Merge branch 'feature-doc-examples' into unstable. [Martin Raspaud]
-
 - Doc: added more documentation to polar_segments.py. [Martin Raspaud]
-
 - DOC: examples are now functional. [Martin Raspaud]
-
 - DOC: fixed path for examples. [Martin Raspaud]
-
 - DOC: Added documentation examples to the project. [Martin Raspaud]
-
 - DOC: added use examples in the documentation directory. [Martin
   Raspaud]
-
 - Merge branch 'feature-project-mode' into unstable. [Martin Raspaud]
-
 - Doc: update docstring for project. [Martin Raspaud]
-
 - Cleanup. [Martin Raspaud]
-
 - Switched seviri and mviri to compositer. [Martin Raspaud]
-
 - Cleanup. [Martin Raspaud]
-
 - Style: Cleaning up. [Martin Raspaud]
-
 - Doc: added screenshots. [Martin Raspaud]
-
 - Cleanup, switch to compositer globaly. [Martin Raspaud]
 
   Conflicts:
@@ -2958,395 +1982,242 @@ Other
   	mpop/satin/hrpt.py
   	mpop/saturn/runner.py
 
-
 - Cleanup: remove old unit test for assemble_swath. [Martin Raspaud]
-
 - Bugfix in assemble_segments. [Martin Raspaud]
-
 - Cleanup: removed old assemble_swath function. [Martin Raspaud]
 
   Conflicts:
 
   	mpop/scene.py
 
-
 - Upgrade: assemble_segments now uses scene factory. [Martin Raspaud]
-
 - Fixed typo. [Adam.Dybbroe]
-
 - Feature: updating mipp test to use factory. [Martin Raspaud]
-
 - Cleaning up an old print. [Martin Raspaud]
 
   Conflicts:
 
   	mpop/satin/mipp.py
 
-
 - Cleanup: removing old stuff. [Martin Raspaud]
-
 - Cleaned up and updated meteosat 9 cfg template further. [Martin
   Raspaud]
-
 - Updated templates to match pytroll MSG tutorial. [Esben S. Nielsen]
-
 - Simplified reading of log-level. [Lars Orum Rasmussen]
-
 - Proposal for reading loglevel from config file. [Lars Orum Rasmussen]
-
 - Cfscene now handles channels with all masked data. [Esben S. Nielsen]
-
 - Netcdf area fix. [Martin Raspaud]
-
 - Syle: copyright updates. [Martin Raspaud]
-
 - Modified the modis-lvl2 loader and extended a bit the cf-io
   interfaces. [Adam.Dybbroe]
-
 - First time in GIT A new reader for EOS-HDF Modis level-2 files from
   NASA. See http://oceancolor.gsfc.nasa.gov/DOCS/ocformats.html#3 for
   format description. [Adam.Dybbroe]
-
 - Added license. [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
-
 - Info needs to be an instance attribute. [Lars Orum Rasmussen]
-
 - Fix initialization of self.time_slot. [Lars Orum Rasmussen]
-
 - Merge branch 'v0.10.2-support' into unstable. [Martin Raspaud]
-
 - Added pyc and ~ files to gitignore. [Martin Raspaud]
-
 - Updated thin modis reader for new file name. [Martin Raspaud]
-
 - Merge branch 'v0.10.1-support' into unstable. [Martin Raspaud]
-
 - Compression and tiling as default for geotifs. [Martin Raspaud]
-
 - Merge branch 'v0.10.0-support' into unstable. [Martin Raspaud]
-
 - Feauture: support for qc_straylight. [Martin Raspaud]
-
 - Compression and tiling as default for geotifs. [Martin Raspaud]
-
 - WIP: attempting interrupt switch for sequential runner. [Martin
   Raspaud]
-
 - Feature: changing filewatcher from processes to threads. [Martin
   Raspaud]
-
 - Feauture: support for qc_straylight. [Martin Raspaud]
-
 - Compression and tiling as default for geotifs. [Martin Raspaud]
-
 - Update: modis enhancements. [Martin Raspaud]
-
 - Feature: filewatcher keeps arrival order. [Martin Raspaud]
-
 - Feature: concatenation loads channels. [Martin Raspaud]
-
 - Feature: use local tles instead of downloading systematically. [Martin
   Raspaud]
-
 - Feature: move pyaapp as single module. [Martin Raspaud]
-
 - Feature: added ana geoloc for hrpt and eps lvl 1a. [Martin Raspaud]
-
 - Cosmetics. [Martin Raspaud]
-
 - Added gatherer and two_line_elements. [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
-
 - Moved a parenthesis six characters to the left. [Lars Orum Rasmussen]
-
 - Feature: assemble_segments function, more clever and should replace
   assemble_swaths. [Martin Raspaud]
-
 - Feature: thin modis reader upgrade, with lonlat estimator and channel
   trimmer for broken sensors. [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
-
 - Netcdf bandname now only uses integer part of resolution. [Esben S.
   Nielsen]
-
 - Improvement: made resolution int in band names, for netcdf. [Martin
   Raspaud]
-
 - Cleaning. [Martin Raspaud]
-
 - WIP: ears. [Martin Raspaud]
-
 - Trying to revive the pynwclib module. [Martin Raspaud]
-
 - Cleaning. [Martin Raspaud]
-
 - Wip: polar hrpt 0 to 1b. [Martin Raspaud]
-
 - Feature: Added proj4 parameters for meteosat 7. [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
-
 - Cosmetic. [Esben S. Nielsen]
-
 - Now channels are read and saved in order. Optimized scaling during CF
   save. [Esben S. Nielsen]
-
 - Feature: Adding more factories. [Martin Raspaud]
-
 - Documentation: adding something on factories and area_extent. [Martin
   Raspaud]
-
 - Documentation: added needed files in setup.py. [Martin Raspaud]
 
+
 v0.10.0 (2011-01-18)
 --------------------
 
 Fix
 ~~~
-
 - Bugfix: fixed matching in git command for version numbering. [Martin
   Raspaud]
-
 - Bugfix: Negative temperatures (in K) should not be valid data when
   reading aapp1b files. [Martin Raspaud]
-
 - Bugfix: remove hudson from tags when getting version. [Martin Raspaud]
-
 - Bugfix: fixed hdf inconstistencies with the old pyhl reading of msg
   ctype and ctth files. [Martin Raspaud]
-
 - Bugfix: Updated code and tests to validate unittests. [Martin Raspaud]
-
 - Bugfix: data reloaded even if the load_again flag was False. [Martin
   Raspaud]
-
 - Bugfix: updated tests for disapearance of avhrr.py. [Martin Raspaud]
-
 - Bugfix: access to CompositerClass would fail if using the old
   interface. [Martin Raspaud]
-
 - Bugfix: typesize for msg's ctth didn't please pps... [Martin Raspaud]
-
 - Bugfix: fixed data format (uint8) in msg_hdf. [Martin Raspaud]
-
 - Bugfix: wrong and forgotten instanciations. [Martin Raspaud]
-
 - Bugfix: crashing on missing channels in mipp loading. [Martin Raspaud]
-
 - Bugfix: forgot to pass along area_extent in mipp loader. [Martin
   Raspaud]
-
 - Bugfix: fixing integration test (duck typing). [Martin Raspaud]
-
 - Bugfix: pyresample.geometry is loaded lazily for area building.
   [Martin Raspaud]
-
 - Bugfix: Updated unit tests. [Martin Raspaud]
-
 - Bugfix: Last change introduced empty channel list for meteosat 09.
   [Martin Raspaud]
-
 - Bugfix: Last change introduced empty channel list for meteosat 09.
   [Martin Raspaud]
-
 - Bugfix: update unittests for new internal implementation. [Martin
   Raspaud]
-
 - Bugfix: compression argument was wrong in
   satelliteinstrumentscene.save. [Martin Raspaud]
-
 - Bugfix: adapted mpop to new equality operation in pyresample. [Martin
   Raspaud]
-
 - Bugfix: More robust config reading in projector and test_projector.
   [Martin Raspaud]
-
 - Bugfix: updated the msg_hrit (nwclib based) reader. [Martin Raspaud]
-
 - Bugfix: swath processing was broken, now fixed. [Martin Raspaud]
-
 - Bugfix: corrected the smaller msg globe area. [Martin Raspaud]
-
 - Bugfix: Erraneous assumption on the position of the 0,0 lon lat in the
   seviri frame led to many wrong things. [Martin Raspaud]
-
 - Bugfix: introduced bugs in with last changes. [Martin Raspaud]
-
 - Bugfix: new area extent for EuropeCanary. [Martin Raspaud]
-
 - Bugfix: Updated setup.py to new structure. [Martin Raspaud]
-
 - Bugfix: updated integration test to new structure. [Martin Raspaud]
-
 - Bugfix: more verbose crashing when building extensions. [Martin
   Raspaud]
-
 - Bugfix: corrected EuropeCanary region. [Martin Raspaud]
-
 - Bugfix: made missing areas message in projector more informative
   (includes missing area name). [Martin Raspaud]
-
 - Bugfix: Added missing import in test_pp_core. [Martin Raspaud]
-
 - Bugfix: fixing missing import in test_scene. [Martin Raspaud]
 
 Other
 ~~~~~
-
 - Style: remove a print statement and an unused import. [Martin Raspaud]
-
 - Feature: Added natural composite to default composite list. [Martin
   Raspaud]
-
 - Feature: made compositer sensitive to custom composites. [Martin
   Raspaud]
-
 - Documentation: Upgraded documentation to 0.10.0. [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
-
 - The RELEASE-VERSION file should not be checked into git. [Lars Orum
   Rasmussen]
-
 - Optimized parts of mpop. Fixed projector caching. [Esben S. Nielsen]
-
 - Optimized parts of mpop processing. Made projector caching functional.
   [Esben S. Nielsen]
-
 - Ignore build directory. [Lars Orum Rasmussen]
-
 - Check array in stretch_logarithmic. [Lars Orum Rasmussen]
-
 - Prevent adding unintended logging handlers. [Lars Orum Rasmussen]
-
 - Feature: Adding extra tags to the image allowed in local_runner.
   [Martin Raspaud]
-
 - Style: lines to 80 chars. [Martin Raspaud]
-
 - Merge branch 'unstable' [Martin Raspaud]
-
 - Feature: pps hdf loading and polar production update. [Martin Raspaud]
-
 - Style: cleanup. [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
 
   Conflicts:
   	mpop/satin/mipp.py
 
-
 - Fixed memory problems. Workaround for lazy import of pyresample. Now
   uses weakref for compositor. [Esben S. Nielsen]
-
 - Better logging in scene loading function. [Martin Raspaud]
-
 - Remove unneeded import. [Martin Raspaud]
-
 - New version. [Martin Raspaud]
-
 - Merge branch 'master' of github.com:mraspaud/mpop. [Lars Orum
   Rasmussen]
-
 - Feature: direct_readout chain in place. [Martin Raspaud]
-
 - Removing no longer needed avhrr.py. [Martin Raspaud]
-
 - Made scaling expression in cfscene.py nicer. [Esben S. Nielsen]
-
 - Corrected shallow copy problem with compositor. Simplyfied usage of
   GeostationaryFactory. [Esben S. Nielsen]
-
 - Feature: cleaner hdf reading for both pps and msg. [Martin Raspaud]
-
 - Stability: added failsafe in case no config file is there when
   loading. [Martin Raspaud]
-
 - Merge branch 'pps_hdf' into unstable. [Martin Raspaud]
-
 - Feature: Support area_extent in scene.load. [Martin Raspaud]
-
 - Feature: Cleaning and use the mipp area_extent and sublon. [Martin
   Raspaud]
-
 - Style: Allow to exclude all the *level? sections. [Martin Raspaud]
-
 - Redespached a few composites. [Martin Raspaud]
-
 - Style: cosmetics. [Martin Raspaud]
-
 - Feature: added the power operation to channels. [Martin Raspaud]
-
 - Removed the no longer needed meteosat09.py file. [Martin Raspaud]
-
 - Wip: iterative loading, untested. [Martin Raspaud]
-
 - More on versionning. [Martin Raspaud]
-
 - Merge branch 'unstable' into pps_hdf. [Martin Raspaud]
-
 - Feature: started working on the PPS support. [Martin Raspaud]
-
 - Spelling. [Martin Raspaud]
-
 - Added logarithmic enhancement. [Lars Orum Rasmussen]
-
 - Removed unneeded file. [Martin Raspaud]
-
 - Api: new version of mipp. [Martin Raspaud]
-
 - Added automatic version numbering. [Martin Raspaud]
-
 - Version update to 0.10.0alpha1. [Martin Raspaud]
-
 - Api: unload takes separate channels (not iterable) as input. [Martin
   Raspaud]
-
 - Doc: updated the meteosat 9 template config. [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
 
   Conflicts:
   	mpop/satellites/meteosat09.py
 
-
 - Feature: Introduced compound satscene objects. [Martin Raspaud]
 
   This is done through the use of an "image" attribute, created by the factory in the "satellites" package.
   The image attribute holds all the compositing functions, while the satscene object remains solely a container for satellite data and metadata.
 
-
 - Feature: added the get_custom_composites function and a composites
   section in mpop.cfg to load custom made composites on the fly. [Martin
   Raspaud]
-
 - Feature: make use of mipp's area_extent function. [Martin Raspaud]
-
 - Style: cleanup channels_to_load after loading. [Martin Raspaud]
-
 - Doc: introduce mpop.cfg. [Martin Raspaud]
-
 - Feature: make use of the new mpop.cfg file to find the area file.
   Added the get_area_def helper function in projector. [Martin Raspaud]
-
 - Feature: Added the new pge02f product for met09. [Martin Raspaud]
-
 - Feature: New format keyword for images. [Martin Raspaud]
-
 - Update: new version of mipp, putting the image upright when slicing.
   [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
 
@@ -3354,156 +2225,102 @@ Other
   	mpop/satout/netcdf4.py
   	mpop/scene.py
 
-
 - Corrected mipp slicing in mipp.py. Added keyword for selecting
   datatype in cfscene.py. Corrected transformation for netCDF data type
   in cfscene.py. [Esben S. Nielsen]
-
 - New add_history function, and some changes in the netcdf handling.
   [Martin Raspaud]
-
 - Upgrade: Upgraded the assemble_segments module to use only one
   coordinate class. [Martin Raspaud]
-
 - Cosmetics: Added log message when slicing in mipp. [Martin Raspaud]
-
 - Move everything to a mpop folder, so that import mpop should be used.
   [Martin Raspaud]
-
 - WIP: Completing the nc4 reader. [Martin Raspaud]
-
 - Doc: Added credits. [Martin Raspaud]
-
 - Doc: updated build for github. [Martin Raspaud]
-
 - Feature: Started to support arithmetic operations on channels. [Martin
   Raspaud]
-
 - Feature: support for calibration flag for met 9. [Martin Raspaud]
-
 - Cosmetics: Added names to copyrigths. [Martin Raspaud]
-
 - Changed default logging. [Esben S. Nielsen]
-
 - Merge branch 'dmi_fix' into unstable. [Martin Raspaud]
 
   Conflicts:
   	pp/scene.py
 
-
 - Added fill_valued as a keyworded argument. [Lars Orum Rasmussen]
-
 - Fixed oversampling error when pyresample is not present. Added
   compression as default option when writing netCDF files. [Esben S.
   Nielsen]
-
 - Moved pyresample and osgeo dependency in geo_image.py. [Esben S.
   Nielsen]
-
 - Feature: support umarf files for eps avhrr. [Martin Raspaud]
-
 - Feature: support the load_again flag for meteosat 9. [Martin Raspaud]
-
 - Feature: Allows passing arguments to reader plugins in
   SatelliteScene.load, and in particular "calibrate" to mipp. [Martin
   Raspaud]
-
 - Feature: added the fill_value argument to channel_image function.
   [Martin Raspaud]
-
 - Cosmetics: reorganized imports. [Martin Raspaud]
-
 - Cosmetics: Updated some template files. [Martin Raspaud]
-
 - Feature: Added the resave argument for saving projector objects.
   [Martin Raspaud]
-
 - Installation: Updated version number, removed obsolete file to
   install, and made the package non zip-safe. [Martin Raspaud]
-
 - Testing: Added tests for pp.satellites, and some cosmetics. [Martin
   Raspaud]
-
 - Feature: Handled the case of several instruments for
   get_satellite_class. [Martin Raspaud]
-
 - Cosmetics: changed the name of the satellite classes generated on the
   fly. [Martin Raspaud]
-
 - Testing: more on scene unit tests. [Martin Raspaud]
-
 - Testing: started integration testing of pp core parts. [Martin
   Raspaud]
-
 - Testing: completed seviri tests. [Martin Raspaud]
-
 - Testing: completed avhrr test. [Martin Raspaud]
-
 - Testing: Added tests for instruments : seviri, mviri, avhrr. [Martin
   Raspaud]
-
 - Testing: took away prerequisites tests for python 2.4 compatibility.
   [Martin Raspaud]
-
 - Testing: final adjustments for visir. [Martin Raspaud]
-
 - Testing: visir tests complete. [Martin Raspaud]
-
 - Testing: fixed nosetest running in test_visir. [Martin Raspaud]
-
 - Testing: corrected scene patching for visir tests. [Martin Raspaud]
-
 - Tests: started testing the visir instrument. [Martin Raspaud]
 
+
 v0.9.0 (2010-10-04)
 -------------------
 
 Fix
 ~~~
-
 - Bugfix: geotiff images were all saved with the wgs84 ellipsoid even
   when another was specified... [Martin Raspaud]
-
 - Bugfix: Corrected the formulas for area_extend computation in geos
   view. [Martin Raspaud]
-
 - Bugfix: satellite number in cf proxy must be an int. Added also
   instrument_name. [Martin Raspaud]
-
 - Bugfix: Erraneous on the fly area building. [Martin Raspaud]
-
 - Bugfix: geo_image: gdal_options and tags where [] and {} by default,
   which is dangerous. [Martin Raspaud]
-
 - Bugfix: Support for new namespace for osr. [Martin Raspaud]
-
 - Bugfix: remove dubble test in test_channel. [Martin Raspaud]
-
 - Bugfix: showing channels couldn't handle masked arrays. [Martin
   Raspaud]
-
 - Bugfix: Scen tests where wrong in project. [Martin Raspaud]
-
 - Bugfix: when loading only CTTH or CloudType, the region name was not
   defined. [Martin Raspaud]
-
 - Bugfix: in test_channel, Channel constructor needs an argument.
   [Martin Raspaud]
-
 - Bugfix: in test_cmp, tested GenericChannel instead of Channel. [Martin
   Raspaud]
-
 - Bugfix: Test case for channel initialization expected the wrong error
   when wavelength argument was of the wrong size. [Martin Raspaud]
-
 - Bugfix: Added length check for "wavelength" channel init argument.
   [Martin Raspaud]
-
 - Bugfix: test case for channel resolution did not follow previous patch
   allowing real resolutions. [Martin Raspaud]
-
 - Bugfix: thin modis lon/lat are now masked arrays. [Martin Raspaud]
-
 - Bugfix: in channel constructor, wavelength triplet was not correctly
   checked for type. [Martin Raspaud]
 
@@ -3512,191 +2329,116 @@ Fix
 
 Other
 ~~~~~
-
 - Cosmetics and documentation in the scene module. [Martin Raspaud]
-
 - Feature: better handling of tags and gdal options in geo_images.
   [Martin Raspaud]
-
 - Cleanup: removed uneeded hardcoded satellites and instruments. [Martin
   Raspaud]
-
 - Documentation: Updated readme, with link to the documentation. [Martin
   Raspaud]
-
 - Documentation: Added a paragraph on geolocalisation. [Martin Raspaud]
-
 - Refactoring: took away the precompute flag from the projector
   constructor, added the save method instead. [Martin Raspaud]
-
 - Cosmetics. [Martin Raspaud]
-
 - Cosmetics. [Martin Raspaud]
-
 - Feature: pyresample 0.7 for projector, and enhanced unittesting.
   [Martin Raspaud]
-
 - New template file for areas. [Martin Raspaud]
-
 - Feature: First draft for the hrpt reading (using aapp) and eps1a
   reading (using aapp and kai). [Martin Raspaud]
-
 - Cosmetics: cleaning up the etc directory. [Martin Raspaud]
-
 - Testing: Basic mipp testing. [Martin Raspaud]
-
 - Cosmetics: cfscene. [Martin Raspaud]
-
 - Feature: One mipp reader fits all :) [Martin Raspaud]
-
 - Feature: helper "debug_on" function. [Martin Raspaud]
-
 - Feature: save method for satscene. Supports only netcdf4 for now.
   [Martin Raspaud]
-
 - Feature: reload keyword for loading channels. [Martin Raspaud]
-
 - Documentation: better pp.satellites docstring. [Martin Raspaud]
-
 - Testing: updated the test_scene file to reflect scene changes. [Martin
   Raspaud]
-
 - Documentation: changed a couple of docstrings. [Martin Raspaud]
-
 - Feature: support pyresample areas in geo images. [Martin Raspaud]
-
 - Cosmetics: changing area_id to area. [Martin Raspaud]
-
 - Feature: adding metadata handling to channels. [Martin Raspaud]
-
 - Feature: now scene and channel accept a pyresample area as area
   attribute. [Martin Raspaud]
-
 - Enhancement: making a better mipp plugin. [Martin Raspaud]
-
 - Feature: Finished the netcdf writer. [Martin Raspaud]
-
 - Feature: updated the netcdf writer and added a proxy scene class for
   cf conventions. [Martin Raspaud]
-
 - Documentation: big update. [Martin Raspaud]
-
 - Documentation: quickstart now passes the doctest. [Martin Raspaud]
-
 - Documentation: reworking. [Martin Raspaud]
-
 - Feature: Moved get_satellite_class and build_satellite_class to
   pp.satellites. [Martin Raspaud]
-
 - Doc: starting documentation update. [Martin Raspaud]
-
 - Enhanced mipp reader. [Martin Raspaud]
 
   * Added metadata when loading scenes.
   * Added slicing when reading data from seviri
   * Added a draft generic reader
 
-
 - Cosmetics: enhanced error description and debug message in aapp1b,
   giving names to loaded/missing files. [Martin Raspaud]
-
 - Testing: updated test_scene. [Martin Raspaud]
-
 - Feature: Added automatic retreiving of product list for a given
   satellite. [Martin Raspaud]
-
 - Cleaning: remove class retrieving and building from runner.py. [Martin
   Raspaud]
-
 - Cosmetics: Better error message in scene when a reader is not found,
   plus some code enbelishment. [Martin Raspaud]
-
 - Feature: made scene object iteratable (channels are iterated). [Martin
   Raspaud]
-
 - Feature: Adding functions to retreive a satellite class from the
   satellites name and to build it on the fly from a configuration file.
   [Martin Raspaud]
-
 - Testing: more on channel. [Martin Raspaud]
-
 - Testing: added test for pp.scene.assemble_swaths. [Martin Raspaud]
-
 - Testing: scene loading tested. [Martin Raspaud]
-
 - Cleaning: test_scene is now more pylint friendly. [Martin Raspaud]
-
 - Feature: extended scene test. [Martin Raspaud]
-
 - Feature: more testing of scene.py. [Martin Raspaud]
-
 - Merge branch 'unstable' of github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
 
   Conflicts:
   	pp/test_scene.py
 
-
 - Feature: Enhanced unitests for scene. [Martin Raspaud]
-
 - Feature: Enhanced unitests for scene. [Martin Raspaud]
-
 - Tests: Improving unittests for channel classes. [Martin Raspaud]
-
 - Feature: Project function won't crash if pyresample can't be loaded.
   Returns the untouched scene instead. [Martin Raspaud]
-
 - Rewrote Filewatcher code. [Martin Raspaud]
-
 - Feature: added the refresh option to filewatcher to call the
   processing function even if no new file has come. [Martin Raspaud]
-
 - Refactoring: satellite, number, variant arguments to runner __init__
   are now a single list argument. [Martin Raspaud]
-
 - Cleaning: Removing pylint errors from runner.py code. [Martin Raspaud]
-
 - Resolution can now be a floating point number. [Martin Raspaud]
-
 - Added the osgeo namespace when importing gdal. [Martin Raspaud]
-
 - Warning: Eps spline interpolation does not work around poles. [Martin
   Raspaud]
-
 - Added the "info" attribute to channel and scene as metadata holder.
   [Martin Raspaud]
-
 - Functionality: Automatically build satellite classes from config
   files. [Martin Raspaud]
-
 - Added copyright notices and updated version. [Martin Raspaud]
-
 - Changed channel names for seviri. [Martin Raspaud]
-
 - Added info stuff in mipp reader. [Martin Raspaud]
-
 - Added info.area_name update on projection. [Martin Raspaud]
-
 - Added quick mode for projecting fast and dirty. [Martin Raspaud]
-
 - Added single channel image building. [Martin Raspaud]
-
 - Added support for gdal_options when saving a geo_image. [Martin
   Raspaud]
-
 - Made satout a package. [Martin Raspaud]
-
 - Added a few information tags. [Martin Raspaud]
-
 - Added support for mipp reading of met 09. [Martin Raspaud]
-
 - Added reader and writer to netcdf format. [Martin Raspaud]
-
 - Added info object to the scene object in preparation for the netCDF/CF
   writer. [Adam Dybbroe]
-
 - Added support for FY3 satellite and MERSI instrument. [Adam Dybbroe]
-
 - Merge branch 'unstable' of git at github.com:mraspaud/mpop into unstable.
   [Martin Raspaud]
 
@@ -3706,16 +2448,13 @@ Other
   Conflicts:
   	imageo/test_image.py
 
-
 - Bugfix in image unit test: testing "almost equal" instead of "equal"
   for image inversion (floating point errors). [Martin Raspaud]
-
 - Bugfix in image unit test: testing "almost equal" instead of "equal"
   for image inversion (floating point errors). [Martin Raspaud]
-
 - Modified image inversion unit test to reflect new behaviour. [Martin
   Raspaud]
-
 - New rebase. [Martin Raspaud]
 
 
+
diff --git a/mpop/channel.py b/mpop/channel.py
index 7e0ceaa..31a6292 100644
--- a/mpop/channel.py
+++ b/mpop/channel.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
-# Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015.
+# Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2017.
 
 # SMHI,
 # Folkborgsvägen 1,
@@ -43,6 +43,7 @@ except ImportError:
 
 from mpop.tools import viewzen_corr as vz_corr
 
+
 class GeolocationIncompleteError(Exception):
 
     """Exception to try catch cases where the original data have not been read or
@@ -315,7 +316,7 @@ class Channel(GenericChannel):
                       calibration_unit=self.unit)
         res.area = coverage_instance.out_area
         res.info = self.info
-        if hasattr(self, 'palette'):      # UH, new 
+        if hasattr(self, 'palette'):      # UH, new
             res.palette = self.palette    # UH, new
         if self.is_loaded():
             LOG.info("Projecting channel %s (%fμm)..."
@@ -463,11 +464,11 @@ class Channel(GenericChannel):
 
         (lons, lats) = self.area.get_lonlats()
         # Calculate observer azimuth and elevation
-        if altitude==None:
+        if altitude == None:
             altitude = np.zeros(lons.shape)
         azi, ele = orbital.get_observer_look(time_slot, lons, lats, altitude)
 
-        return (azi, ele) 
+        return (azi, ele)
 
     def vinc_vect(phi, lembda, alpha, s, f=None, a=None, degree=True):
         """ Vincenty's Direct formular
@@ -496,11 +497,11 @@ class Channel(GenericChannel):
             alpha = np.deg2rad(alpha)
 
         if f is None:
-            f = 1/298.257223563
+            f = 1 / 298.257223563
         if a is None:
             a = 6378137
 
-        two_pi = 2.0*np.pi
+        two_pi = 2.0 * np.pi
 
         if isinstance(alpha, np.ndarray):
             alpha[alpha < 0.0] += two_pi
@@ -519,7 +520,7 @@ class Channel(GenericChannel):
         """
         b = a * (1.0 - f)
 
-        tan_u1 = (1-f) * np.tan(phi)
+        tan_u1 = (1 - f) * np.tan(phi)
         u_1 = np.arctan(tan_u1)
         sigma1 = np.arctan2(tan_u1, np.cos(alpha))
 
@@ -545,7 +546,7 @@ class Channel(GenericChannel):
                 two_sigma_m = 2 * sigma1 + sigma
 
                 delta_sigma = (bb_ * np.sin(sigma) *
-                               (np.cos(two_sigma_m) + (bb_/4) *
+                               (np.cos(two_sigma_m) + (bb_ / 4) *
                                 (np.cos(sigma) *
                                  (-1 + 2 * np.power(np.cos(two_sigma_m), 2) -
                                   (bb_ / 6) * np.cos(two_sigma_m) *
@@ -573,16 +574,16 @@ class Channel(GenericChannel):
                              np.cos(u_1) * np.sin(sigma) * np.cos(alpha)),
                             ((1 - f) * np.sqrt(np.power(sinalpha, 2) +
                                                pow(np.sin(u_1) *
-                                               np.sin(sigma) -
-                                               np.cos(u_1) *
-                                               np.cos(sigma) *
-                                               np.cos(alpha), 2))))
+                                                   np.sin(sigma) -
+                                                   np.cos(u_1) *
+                                                   np.cos(sigma) *
+                                                   np.cos(alpha), 2))))
 
         deltalembda = np.arctan2((np.sin(sigma) * np.sin(alpha)),
                                  (np.cos(u_1) * np.cos(sigma) -
                                   np.sin(u_1) * np.sin(sigma) * np.cos(alpha)))
 
-        cc_ = (f/16) * cosalpha_sq * (4 + f * (4 - 3 * cosalpha_sq))
+        cc_ = (f / 16) * cosalpha_sq * (4 + f * (4 - 3 * cosalpha_sq))
 
         omega = (deltalembda - (1 - cc_) * f * sinalpha *
                  (sigma + cc_ * np.sin(sigma) * (np.cos(two_sigma_m) + cc_ *
@@ -616,7 +617,6 @@ class Channel(GenericChannel):
 
         return(phiout, lembdaout, alphaout)
 
-
     def parallax_corr(self, cth=None, time_slot=None, orbital=None, azi=None, ele=None, fill="False"):
         '''Perform the parallax correction for channel at
         *time_slot* (datetime.datetime() object), assuming the cloud top height cth
@@ -648,7 +648,7 @@ class Channel(GenericChannel):
                      "nearest": fill gaps with nearest neighbour
                      "bilinear": use scipy.interpolate.griddata with linear interpolation 
                                  to fill the gaps
-                   
+
         output: 
           parallax corrected channel
                      the content of the channel will be parallax corrected.
@@ -658,12 +658,12 @@ class Channel(GenericChannel):
         '''
 
         # get time_slot from info, if present
-        if time_slot==None:
+        if time_slot == None:
             if "time" in self.info.keys():
-                time_slot=self.info["time"]
+                time_slot = self.info["time"]
 
-        if azi==None or ele==None:
-            if time_slot==None or orbital==None:
+        if azi == None or ele == None:
+            if time_slot == None or orbital == None:
                 print "*** Error in parallax_corr (mpop/channel.py)"
                 print "    parallax_corr needs either time_slot and orbital"
                 print "    data[\"IR_108\"].parallax_corr(data[\"CTTH\"].height, time_slot=data.time_slot, orbital=orbital)"
@@ -671,7 +671,8 @@ class Channel(GenericChannel):
                 print "    data[\"IR_108\"].parallax_corr(data[\"CTTH\"].height, azi=azi, ele=ele)"
                 quit()
             else:
-                print ("... calculate viewing geometry (orbit and time are given)")
+                print (
+                    "... calculate viewing geometry (orbit and time are given)")
                 (azi, ele) = self.get_viewing_geometry(orbital, time_slot)
         else:
             print ("... azimuth and elevation angle given")
@@ -682,9 +683,10 @@ class Channel(GenericChannel):
         # Elevation displacement
         dz = cth_ / np.tan(np.deg2rad(ele))
 
-        # Create the new channel (by copying) and initialize the data with None values
+        # Create the new channel (by copying) and initialize the data with None
+        # values
         new_ch = copy.deepcopy(self)
-        new_ch.data[:,:] = np.nan
+        new_ch.data[:, :] = np.nan
 
         # Set the name
         new_ch.name += '_PC'
@@ -693,44 +695,48 @@ class Channel(GenericChannel):
         self.info["parallax_corrected"] = self.name + '_PC'
 
         # get projection coordinates in meter
-        (proj_x,proj_y) = self.area.get_proj_coords()
+        (proj_x, proj_y) = self.area.get_proj_coords()
 
         print "... calculate parallax shift"
-        # shifting pixels according to parallax corretion 
-        proj_x_pc = proj_x - np.sin(np.deg2rad(azi)) * dz # shift West-East   in m  # ??? sign correct ??? 
-        proj_y_pc = proj_y + np.cos(np.deg2rad(azi)) * dz # shift North-South in m
-
-        # get indices for the pixels for the original position 
-        (y,x)  = self.area.get_xy_from_proj_coords(proj_x, proj_y)
-            # comment: might be done more efficient with meshgrid
-            # >>> x = np.arange(-5.01, 5.01, 0.25)
-            # >>> y = np.arange(-5.01, 5.01, 0.25)
-            # >>> xx, yy = np.meshgrid(x, y)
-        # get indices for the pixels at the parallax corrected position 
-        (y_pc,x_pc) = self.area.get_xy_from_proj_coords(proj_x_pc, proj_y_pc)
+        # shifting pixels according to parallax corretion
+        # shift West-East   in m  # ??? sign correct ???
+        proj_x_pc = proj_x - np.sin(np.deg2rad(azi)) * dz
+        # shift North-South in m
+        proj_y_pc = proj_y + np.cos(np.deg2rad(azi)) * dz
+
+        # get indices for the pixels for the original position
+        (y, x) = self.area.get_xy_from_proj_coords(proj_x, proj_y)
+        # comment: might be done more efficient with meshgrid
+        # >>> x = np.arange(-5.01, 5.01, 0.25)
+        # >>> y = np.arange(-5.01, 5.01, 0.25)
+        # >>> xx, yy = np.meshgrid(x, y)
+        # get indices for the pixels at the parallax corrected position
+        (y_pc, x_pc) = self.area.get_xy_from_proj_coords(proj_x_pc, proj_y_pc)
 
         # copy cloud free satellite pixels (surface observations)
         ind = np.where(cth_.mask == True)
-        new_ch.data[x[ind],y[ind]] = self.data[x[ind],y[ind]]
+        new_ch.data[x[ind], y[ind]] = self.data[x[ind], y[ind]]
 
         print "... copy data to parallax corrected position"
         # copy cloudy pixel with new position modified with parallax shift
         ind = np.where(x_pc.mask == False)
-        new_ch.data[x_pc[ind],y_pc[ind]] = self.data[x[ind],y[ind]]
+        new_ch.data[x_pc[ind], y_pc[ind]] = self.data[x[ind], y[ind]]
 
         # Mask out data gaps (areas behind the clouds)
-        new_ch.data = np.ma.masked_where(np.isnan(new_ch.data), new_ch.data, copy=False)
+        new_ch.data = np.ma.masked_where(
+            np.isnan(new_ch.data), new_ch.data, copy=False)
 
-        if fill.lower()=="false":
+        if fill.lower() == "false":
             return new_ch
-        elif fill=="nearest":
-            print "*** fill missing values with nearest neighbour" 
+        elif fill == "nearest":
+            print "*** fill missing values with nearest neighbour"
             from scipy.ndimage import distance_transform_edt
             invalid = np.isnan(new_ch.data)
-            ind = distance_transform_edt(invalid, return_distances=False, return_indices=True)
+            ind = distance_transform_edt(
+                invalid, return_distances=False, return_indices=True)
             new_ch.data = new_ch.data[tuple(ind)]
-        elif fill=="bilinear":
-            # this function does not interpolate at the outer boundaries 
+        elif fill == "bilinear":
+            # this function does not interpolate at the outer boundaries
             from scipy.interpolate import griddata
             ind = np.where(new_ch.data.mask == False)
             points = np.transpose(np.append([y[ind]], [x[ind]], axis=0))
@@ -740,7 +746,8 @@ class Channel(GenericChannel):
             # fill the remaining pixels with nearest neighbour
             from scipy.ndimage import distance_transform_edt
             invalid = np.isnan(new_ch.data)
-            ind = distance_transform_edt(invalid, return_distances=False, return_indices=True)
+            ind = distance_transform_edt(
+                invalid, return_distances=False, return_indices=True)
             new_ch.data = new_ch.data[tuple(ind)]
         else:
             print "*** Error in parallax_corr (channel.py)"
diff --git a/mpop/imageo/formats/ninjotiff.py b/mpop/imageo/formats/ninjotiff.py
index ae0bf4f..cbf4f40 100644
--- a/mpop/imageo/formats/ninjotiff.py
+++ b/mpop/imageo/formats/ninjotiff.py
@@ -747,6 +747,7 @@ def _write(image_data, output_fn, write_rgb=False, **kwargs):
     origin_lat = float(kwargs.pop("origin_lat"))
     origin_lon = float(kwargs.pop("origin_lon"))
     image_dt = kwargs.pop("image_dt")
+    zero_seconds = kwargs.pop("zero_seconds", False)
     projection = str(kwargs.pop("projection"))
     meridian_west = float(kwargs.pop("meridian_west", 0.0))
     meridian_east = float(kwargs.pop("meridian_east", 0.0))
@@ -820,7 +821,13 @@ def _write(image_data, output_fn, write_rgb=False, **kwargs):
 
     file_dt = datetime.utcnow()
     file_epoch = calendar.timegm(file_dt.timetuple())
-    image_epoch = calendar.timegm(image_dt.timetuple())
+    if zero_seconds:
+        log.debug("Applying zero seconds correction")
+        image_dt_corr = datetime(image_dt.year, image_dt.month, image_dt.day,
+                                 image_dt.hour, image_dt.minute)
+    else:
+        image_dt_corr = image_dt
+    image_epoch = calendar.timegm(image_dt_corr.timetuple())
 
     compression = _eval_or_default("compression", int, 6)
 
diff --git a/mpop/imageo/geo_image.py b/mpop/imageo/geo_image.py
index 2e15f73..ffb821a 100644
--- a/mpop/imageo/geo_image.py
+++ b/mpop/imageo/geo_image.py
@@ -151,11 +151,11 @@ class GeoImage(Image):
                 bnd.SetNoDataValue(fill_value[i])
                 bnd.WriteArray(chn)
         else:
-            mask = np.zeros(channels[0].shape, dtype=np.bool)
+            mask = np.ones(channels[0].shape, dtype=np.bool)
             i = 0
             for i, chan in enumerate(channels):
                 dst_ds.GetRasterBand(i + 1).WriteArray(chan.filled(0))
-                mask |= np.ma.getmaskarray(chan)
+                mask &= np.ma.getmaskarray(chan)
             try:
                 mask |= np.ma.getmaskarray(opacity)
             except AttributeError:
diff --git a/mpop/instruments/viirs.py b/mpop/instruments/viirs.py
index 90de50b..4e650d5 100644
--- a/mpop/instruments/viirs.py
+++ b/mpop/instruments/viirs.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
-# Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2016.
+# Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017.
 
 # Author(s):
 
@@ -165,12 +165,21 @@ class ViirsCompositer(VisirCompositer):
         """Make a Natural Colors RGB image composite from
         M-bands only.
         """
-        self.check_channels('M05', 'M07', 'M10')
+        self.check_channels('M05', 'M06', 'M07', 'M10')
 
         ch1 = self['M10'].check_range()
         ch2 = self['M07'].check_range()
         ch3 = self['M05'].check_range()
 
+        ch2b = self['M06'].check_range()
+        ch2 = np.ma.where(ch2.mask, ch2b, ch2)
+
+        common_mask = np.logical_or(ch1.mask, ch2.mask)
+        common_mask = np.logical_or(common_mask, ch3.mask)
+        ch1.mask = common_mask
+        ch2.mask = common_mask
+        ch3.mask = common_mask
+
         img = geo_image.GeoImage((ch1, ch2, ch3),
                                  self.area,
                                  self.time_slot,
@@ -184,7 +193,7 @@ class ViirsCompositer(VisirCompositer):
 
         return img
 
-    natural.prerequisites = set(['M05', 'M07', 'M10'])
+    natural.prerequisites = set(['M05', 'M06', 'M07', 'M10'])
 
     def hr_natural(self):
         """Make a high resolution Day Natural Colors RGB image 
diff --git a/mpop/instruments/visir.py b/mpop/instruments/visir.py
index 91125ab..64bd3f4 100644
--- a/mpop/instruments/visir.py
+++ b/mpop/instruments/visir.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
-# Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015.
+# Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2017.
 
 # Author(s):
 
@@ -26,8 +26,6 @@
 from mpop.imageo import geo_image
 from mpop.compositer import Compositer
 
-import numpy as np
-
 # pylint: disable=W0612
 # remove warnings for unused prerequisites
 
diff --git a/mpop/projector.py b/mpop/projector.py
index e31dbfd..c8745e0 100644
--- a/mpop/projector.py
+++ b/mpop/projector.py
@@ -40,6 +40,10 @@ import logging
 import numpy as np
 from pyresample import image, utils, geometry, kd_tree
 from pyresample.bilinear import get_sample_from_bil_info, get_bil_info
+try:
+    from pyresample.ewa import ll2cr, fornav
+except ImportError:
+    ll2cr, fornav = None, None
 
 from mpop import CONFIG_PATH
 
@@ -131,42 +135,10 @@ class Projector(object):
         # - Add a recompute flag ?
 
         # Setting up the input area
-        try:
-            self.in_area = get_area_def(in_area)
-            in_id = in_area
-        except (utils.AreaNotFound, AttributeError):
-            try:
-                in_id = in_area.area_id
-                self.in_area = in_area
-            except AttributeError:
-                try:
-                    # TODO: Note that latlons are in order (lons, lats)
-                    self.in_area = geometry.SwathDefinition(lons=in_latlons[0],
-                                                            lats=in_latlons[1])
-                    in_id = in_area
-                except TypeError:
-                    raise utils.AreaNotFound("Input area " +
-                                             str(in_area) +
-                                             " must be defined in " +
-                                             self.area_file +
-                                             ", be an area object"
-                                             " or longitudes/latitudes must be "
-                                             "provided.")
+        in_id = self._setup_input_area(in_area, latlons=in_latlons)
 
         # Setting up the output area
-        try:
-            self.out_area = get_area_def(out_area)
-            out_id = out_area
-        except (utils.AreaNotFound, AttributeError):
-            try:
-                out_id = out_area.area_id
-                self.out_area = out_area
-            except AttributeError:
-                raise utils.AreaNotFound("Output area " +
-                                         str(out_area) +
-                                         " must be defined in " +
-                                         self.area_file + " or "
-                                         "be an area object.")
+        out_id = self._setup_output_area(out_area, latlons=None)
 
         # if self.in_area == self.out_area:
         #    return
@@ -182,11 +154,6 @@ class Projector(object):
         else:
             self.mode = mode
 
-        filename = (in_id + "2" + out_id + "_" +
-                    str(_get_area_hash(self.in_area)) + "to" +
-                    str(_get_area_hash(self.out_area)) + "_" +
-                    self.mode + ".npz")
-
         projections_directory = "/var/tmp"
         try:
             projections_directory = self.conf.get("projector",
@@ -194,7 +161,10 @@ class Projector(object):
         except ConfigParser.NoSectionError:
             pass
 
-        self._filename = os.path.join(projections_directory, filename)
+        self._filename = get_precompute_cache_fname(in_id, out_id,
+                                                    in_area, out_area,
+                                                    self.mode,
+                                                    projections_directory)
 
         try:
             self._cache = {}
@@ -204,48 +174,48 @@ class Projector(object):
                         in_id, out_id)
 
             if self.mode == "nearest":
-                valid_index, valid_output_index, index_array, distance_array = \
-                    kd_tree.get_neighbour_info(self.in_area,
-                                               self.out_area,
-                                               self.radius,
-                                               neighbours=1,
-                                               nprocs=nprocs)
-                del distance_array
-                self._cache = {}
-                self._cache['valid_index'] = valid_index
-                self._cache['valid_output_index'] = valid_output_index
-                self._cache['index_array'] = index_array
+                self._cache = calc_nearest_params(in_area, out_area,
+                                                  radius, nprocs=nprocs)
 
             elif self.mode == "quick":
-                ridx, cidx = \
-                    utils.generate_quick_linesample_arrays(self.in_area,
-                                                           self.out_area)
-                self._cache = {}
-                self._cache['row_idx'] = ridx
-                self._cache['col_idx'] = cidx
+                self._cache = calc_quick_params(in_area, out_area)
 
             elif self.mode == "ewa":
-                from pyresample.ewa import ll2cr
-                swath_points_in_grid, cols, rows = ll2cr(self.in_area,
-                                                         self.out_area)
-                self._cache = {}
-                # self._cache['ewa_swath_points_in_grid'] = \
-                #     swath_points_in_grid
-                self._cache['ewa_cols'] = cols
-                self._cache['ewa_rows'] = rows
+                if ll2cr is not None:
+                    self._cache = calc_ewa_params(in_area, out_area)
+                else:
+                    raise ImportError("Can't import pyresample.ewa")
 
             elif self.mode == "bilinear":
+                self._cache = calc_bilinear_params(in_area, out_area,
+                                                   radius, nprocs=nprocs)
 
-                bilinear_t, bilinear_s, input_idxs, idx_arr = \
-                    get_bil_info(self.in_area, self.out_area,
-                                 self.radius, neighbours=32,
-                                 nprocs=nprocs, masked=False)
-
-                self._cache = {}
-                self._cache['bilinear_s'] = bilinear_s
-                self._cache['bilinear_t'] = bilinear_t
-                self._cache['input_idxs'] = input_idxs
-                self._cache['idx_arr'] = idx_arr
+    def _setup_input_area(self, area, latlons=None):
+        """Setup self.in_area and return area id"""
+        try:
+            self.in_area, in_id = get_area_and_id(area, latlons=latlons)
+        except TypeError:
+            raise utils.AreaNotFound("Input area " +
+                                     str(area) +
+                                     " must be defined in " +
+                                     self.area_file +
+                                     ", be an area object"
+                                     " or longitudes/latitudes must be "
+                                     "provided.")
+
+        return in_id
+
+    def _setup_output_area(self, area, latlons=None):
+        """Setup output area"""
+        try:
+            self.out_area, out_id = get_area_and_id(area, latlons=latlons)
+        except AttributeError:
+            raise utils.AreaNotFound("Output area " +
+                                     str(area) +
+                                     " must be defined in " +
+                                     self.area_file + " or "
+                                     "be an area object.")
+        return out_id
 
     def save(self, resave=False):
         """Save the precomputation to disk, and overwrite existing file in case
@@ -256,66 +226,180 @@ class Projector(object):
                         self._filename)
             np.savez(self._filename, **self._cache)
 
+    def _project_array_nearest(self, data):
+        """Project array *data* using nearest neighbour resampling"""
+        if 'valid_index' not in self._cache:
+            self._cache['valid_index'] = self._file_cache['valid_index']
+            self._cache['valid_output_index'] = \
+                self._file_cache['valid_output_index']
+            self._cache['index_array'] = self._file_cache['index_array']
+
+        valid_index, valid_output_index, index_array = \
+            (self._cache['valid_index'],
+             self._cache['valid_output_index'],
+             self._cache['index_array'])
+
+        res = kd_tree.get_sample_from_neighbour_info('nn',
+                                                     self.out_area.shape,
+                                                     data,
+                                                     valid_index,
+                                                     valid_output_index,
+                                                     index_array,
+                                                     fill_value=None)
+        return res
+
+    def _project_array_quick(self, data):
+        """Project array *data* using quick interpolation"""
+        if 'row_idx' not in self._cache:
+            self._cache['row_idx'] = self._file_cache['row_idx']
+            self._cache['col_idx'] = self._file_cache['col_idx']
+        row_idx, col_idx = self._cache['row_idx'], self._cache['col_idx']
+        img = image.ImageContainer(data, self.in_area, fill_value=None)
+        res = np.ma.array(img.get_array_from_linesample(row_idx, col_idx),
+                          dtype=data.dtype)
+
+        return res
+
+    def _project_array_ewa(self, data):
+        """Project array *data* using EWA interpolation"""
+        # TODO: should be user configurable?
+        rows_per_scan = None
+
+        if 'ewa_cols' in self. not_cache:
+            self._cache['ewa_cols'] = self._file_cache['ewa_cols']
+            self._cache['ewa_rows'] = self._file_cache['ewa_rows']
+        num_valid_points, res = fornav(self._cache['ewa_cols'],
+                                       self._cache['ewa_rows'],
+                                       self.out_area, data,
+                                       rows_per_scan=rows_per_scan)
+        del num_valid_points
+
+        return res
+
+    def _project_array_bilinear(self, data):
+        """Project array *data* using bilinear interpolation"""
+        if 'bilinear_t' not in self._cache:
+            self._cache['bilinear_t'] = self._file_cache['bilinear_t']
+            self._cache['bilinear_s'] = self._file_cache['bilinear_s']
+            self._cache['input_idxs'] = self._file_cache['input_idxs']
+            self._cache['idx_arr'] = self._file_cache['idx_arr']
+
+        res = get_sample_from_bil_info(data.ravel(),
+                                       self._cache['bilinear_t'],
+                                       self._cache['bilinear_s'],
+                                       self._cache['input_idxs'],
+                                       self._cache['idx_arr'],
+                                       output_shape=self.out_area.shape)
+        res = np.ma.masked_invalid(res)
+
+        return res
+
     def project_array(self, data):
         """Project an array *data* along the given Projector object.
         """
 
         if self.mode == "nearest":
-            if not 'valid_index' in self._cache:
-                self._cache['valid_index'] = self._file_cache['valid_index']
-                self._cache['valid_output_index'] = \
-                    self._file_cache['valid_output_index']
-                self._cache['index_array'] = self._file_cache['index_array']
-
-            valid_index, valid_output_index, index_array = \
-                (self._cache['valid_index'],
-                 self._cache['valid_output_index'],
-                 self._cache['index_array'])
-
-            res = kd_tree.get_sample_from_neighbour_info('nn',
-                                                         self.out_area.shape,
-                                                         data,
-                                                         valid_index,
-                                                         valid_output_index,
-                                                         index_array,
-                                                         fill_value=None)
+            res = self._project_array_nearest(data)
 
         elif self.mode == "quick":
-            if not 'row_idx' in self._cache:
-                self._cache['row_idx'] = self._file_cache['row_idx']
-                self._cache['col_idx'] = self._file_cache['col_idx']
-            row_idx, col_idx = self._cache['row_idx'], self._cache['col_idx']
-            img = image.ImageContainer(data, self.in_area, fill_value=None)
-            res = np.ma.array(img.get_array_from_linesample(row_idx, col_idx),
-                              dtype=data.dtype)
+            res = self._project_array_quick(data)
 
         elif self.mode == "ewa":
-            from pyresample.ewa import fornav
-            # TODO: should be user configurable?
-            rows_per_scan = None
-
-            if 'ewa_cols' not in self._cache:
-                self._cache['ewa_cols'] = self._file_cache['ewa_cols']
-                self._cache['ewa_rows'] = self._file_cache['ewa_rows']
-            num_valid_points, res = fornav(self._cache['ewa_cols'],
-                                           self._cache['ewa_rows'],
-                                           self.out_area, data,
-                                           rows_per_scan=rows_per_scan)
+            if fornav is not None:
+                res = self._project_array_ewa(data)
+            else:
+                raise ImportError("Can't import pyresample.ewa")
 
         elif self.mode == "bilinear":
+            res = self._project_array_bilinear(data)
 
-            if 'bilinear_t' not in self._cache:
-                self._cache['bilinear_t'] = self._file_cache['bilinear_t']
-                self._cache['bilinear_s'] = self._file_cache['bilinear_s']
-                self._cache['input_idxs'] = self._file_cache['input_idxs']
-                self._cache['idx_arr'] = self._file_cache['idx_arr']
+        return res
 
-            res = get_sample_from_bil_info(data.ravel(),
-                                           self._cache['bilinear_t'],
-                                           self._cache['bilinear_s'],
-                                           self._cache['input_idxs'],
-                                           self._cache['idx_arr'],
-                                           output_shape=self.out_area.shape)
-            res = np.ma.masked_invalid(res)
 
-        return res
+def calc_nearest_params(in_area, out_area, radius, nprocs=1):
+    """Calculate projection parameters for nearest neighbour
+    interpolation"""
+    valid_index, valid_output_index, index_array, distance_array = \
+        kd_tree.get_neighbour_info(in_area,
+                                   out_area,
+                                   radius,
+                                   neighbours=1,
+                                   nprocs=nprocs)
+    del distance_array
+    cache = {}
+    cache['valid_index'] = valid_index
+    cache['valid_output_index'] = valid_output_index
+    cache['index_array'] = index_array
+
+    return cache
+
+
+def calc_quick_params(in_area, out_area):
+    """Calculate projection parameters for quick interpolation mode"""
+    ridx, cidx = utils.generate_quick_linesample_arrays(in_area,
+                                                        out_area)
+    cache = {}
+    cache['row_idx'] = ridx
+    cache['col_idx'] = cidx
+
+    return cache
+
+
+def calc_bilinear_params(in_area, out_area, radius, nprocs=1):
+    """Calculate projection parameters for bilinear interpolation"""
+    bilinear_t, bilinear_s, input_idxs, idx_arr = \
+        get_bil_info(in_area, out_area, radius, neighbours=32,
+                     nprocs=nprocs, masked=False)
+
+    cache = {}
+    cache['bilinear_s'] = bilinear_s
+    cache['bilinear_t'] = bilinear_t
+    cache['input_idxs'] = input_idxs
+    cache['idx_arr'] = idx_arr
+
+    return cache
+
+
+def calc_ewa_params(in_area, out_area):
+    """Calculate projection parameters for EWA interpolation"""
+    swath_points_in_grid, cols, rows = ll2cr(in_area, out_area)
+    del swath_points_in_grid
+    cache = {}
+    # cache['ewa_swath_points_in_grid'] = \
+    #     swath_points_in_grid
+    cache['ewa_cols'] = cols
+    cache['ewa_rows'] = rows
+
+    return cache
+
+
+def get_precompute_cache_fname(in_id, out_id, in_area, out_area, mode,
+                               proj_dir):
+    """Form filename for precompute cache"""
+
+    filename = (in_id + "2" + out_id + "_" +
+                str(_get_area_hash(in_area)) + "to" +
+                str(_get_area_hash(out_area)) + "_" +
+                mode + ".npz")
+
+    return os.path.join(proj_dir, filename)
+
+
+def get_area_and_id(area, latlons=None):
+    try:
+        area_def = get_area_def(area)
+        area_id = area
+    except (utils.AreaNotFound, AttributeError):
+        try:
+            area_id = area.area_id
+            area_def = area
+        except AttributeError:
+            if latlons is None:
+                raise
+            else:
+                # TODO: Note that latlons are in order (lons, lats)
+                area_def = geometry.SwathDefinition(lons=latlons[0],
+                                                    lats=latlons[1])
+                area_id = area
+
+    return area_def, area_id
diff --git a/mpop/satin/aapp1b.py b/mpop/satin/aapp1b.py
index 40f9088..ad8e172 100644
--- a/mpop/satin/aapp1b.py
+++ b/mpop/satin/aapp1b.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012, 2013, 2014, 2015, 2016 SMHI
+# Copyright (c) 2012, 2013, 2014, 2015, 2016, 2017 SMHI
 
 # Author(s):
 
@@ -50,7 +50,7 @@ LOGGER = logging.getLogger('aapp1b')
 
 def load(satscene, *args, **kwargs):
     """Read data from file and load it into *satscene*.
-    A possible *calibrate* keyword argument is passed to the AAPP reader. 
+    A possible *calibrate* keyword argument is passed to the AAPP reader.
     Should be 0 for off (counts), 1 for default (brightness temperatures and
     reflectances), and 2 for radiances only.
 
@@ -98,7 +98,7 @@ def load_avhrr(satscene, options):
     if len(chns) == 0:
         return
 
-    values = {"orbit": satscene.orbit,
+    values = {"orbit": '%05d' % int(satscene.orbit),
               "satname": satscene.satname,
               "number": satscene.number,
               "instrument": satscene.instrument_name,
@@ -132,7 +132,7 @@ def load_avhrr(satscene, options):
             candidate = ('hrpt_' +
                          str(satscene.satname) + str(satscene.number) +
                          satscene.time_slot.strftime('_%Y%m%d_%H%M_') +
-                         str(satscene.orbit) + '.l1b')
+                         '%05d' % int(satscene.orbit) + '.l1b')
             LOGGER.debug("Suggested filename = %s", str(candidate))
             candidate_found = False
             for fname in file_list:
@@ -214,7 +214,7 @@ def load_avhrr(satscene, options):
 
         try:
             from pyresample import geometry
-        except ImportError, ex_:
+        except ImportError as ex_:
 
             LOGGER.debug("Could not load pyresample: %s", str(ex_))
 
@@ -224,8 +224,8 @@ def load_avhrr(satscene, options):
             satscene.area = geometry.SwathDefinition(lons=scene.lons,
                                                      lats=scene.lats)
             area_name = ("swath_" + satscene.fullname + "_" +
-                         str(satscene.time_slot) + "_"
-                         + str(scene.lats.shape))
+                         str(satscene.time_slot) + "_" +
+                         str(scene.lats.shape))
             satscene.area.area_id = area_name
             satscene.area.name = "Satellite projection"
             satscene.area_id = area_name
@@ -602,14 +602,6 @@ class AAPP1b(object):
                 self.channels[ch_] = np.ma.vstack(channels[ch_])
             except ValueError:
                 self.channels[ch_] = None
-        if "3A" in chns or "3B" in chns:
-            self._is3b = np.vstack(is3b_all)
-        if "3A" in chns:
-            self.channels['3A'].mask = self._is3b * self.channels['3A']
-        if "3B" in chns:
-            self.channels['3B'].mask = np.logical_or((self._is3b is False) *
-                                                     self.channels['3B'],
-                                                     self.channels['3B'] < 0.1)
 
         LOGGER.debug("Calibration time %s", str(datetime.datetime.now() - tic))
 
@@ -743,12 +735,12 @@ def _ir_calibrate(header, data, irchn, calib_type):
     else:  # AAPP 1 to 4
         tb_ = (t_planck - bandcor_2) / bandcor_3
 
-    #tb_[tb_ <= 0] = np.nan
+    # tb_[tb_ <= 0] = np.nan
     # Data with count=0 are often related to erroneous (bad) lines, but in case
     # of saturation (channel 3b) count=0 can be observed and associated to a
     # real measurement. So we leave out this filtering to the user!
     # tb_[count == 0] = np.nan
-    #tb_[rad == 0] = np.nan
+    # tb_[rad == 0] = np.nan
     return np.ma.masked_array(tb_, np.isnan(tb_))
 
 
@@ -768,37 +760,41 @@ CASES = {
     "avhrr/3": load_avhrr,
 }
 
-if __name__ == "__main__":
 
+def main():
     import sys
     from mpop.utils import debug_on
 
     debug_on()
-    SCENE = AAPP1b(sys.argv[1])
-    SCENE.read()
-    for name, val in zip(SCENE._header[0].dtype.names, SCENE._header[0][0]):
-        print name, val
-    starttime = datetime.datetime(SCENE._header[0][0]["startdatayr"],
+    scene = AAPP1b(sys.argv[1])
+    scene.read()
+    for name, val in zip(scene._header[0].dtype.names, scene._header[0][0]):
+        print(name + " " + str(val))
+    starttime = datetime.datetime(scene._header[0][0]["startdatayr"],
                                   1, 1, 0, 0)
     starttime += \
-        datetime.timedelta(days=int(SCENE._header[0][0]["startdatady"]) - 1,
-                           seconds=SCENE._header[0][0]["startdatatime"] /
+        datetime.timedelta(days=int(scene._header[0][0]["startdatady"]) - 1,
+                           seconds=scene._header[0][0]["startdatatime"] /
                            1000.0)
-    print "starttime:", starttime
-    endtime = datetime.datetime(SCENE._header[-1][0]["enddatayr"], 1, 1, 0, 0)
+    print("starttime: " + str(starttime))
+    endtime = datetime.datetime(scene._header[-1][0]["enddatayr"], 1, 1, 0, 0)
     endtime += \
-        datetime.timedelta(days=int(SCENE._header[-1][0]["enddatady"]) - 1,
-                           seconds=SCENE._header[-1][0]["enddatatime"] /
+        datetime.timedelta(days=int(scene._header[-1][0]["enddatady"]) - 1,
+                           seconds=scene._header[-1][0]["enddatatime"] /
                            1000.0)
-    print "endtime:", endtime
-    # print SCENE._data['hrpt'].shape
-    #show(SCENE._data['hrpt'][:, :, 4].astype(np.float))
+    print("endtime: " + str(endtime))
+    # print scene._data['hrpt'].shape
+    # show(scene._data['hrpt'][:, :, 4].astype(np.float))
     # raw_input()
-    SCENE.calibrate()
-    SCENE.navigate()
+    scene.calibrate()
+    scene.navigate()
     for i__ in AVHRR_CHANNEL_NAMES:
-        data_ = SCENE.channels[i__]
+        data_ = scene.channels[i__]
         print >> sys.stderr, "%-3s" % i__, \
             "%6.2f%%" % (100. * (float(np.ma.count(data_)) / data_.size)), \
             "%6.2f, %6.2f, %6.2f" % (data_.min(), data_.mean(), data_.max())
-    show(SCENE.channels['2'], negate=False)
+    show(scene.channels['2'], negate=False)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/mpop/satin/eps_l1b.py b/mpop/satin/eps_l1b.py
index ade3694..f290e0d 100644
--- a/mpop/satin/eps_l1b.py
+++ b/mpop/satin/eps_l1b.py
@@ -1,11 +1,12 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
 
-# Copyright (c) 2012, 2013, 2014 Martin Raspaud
+# Copyright (c) 2012-2017 Pytroll
 
 # Author(s):
 
 #   Martin Raspaud <martin.raspaud at smhi.se>
+#   Adam Dybbroe <adam.dybbroe at smhi.se>
 
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -21,6 +22,10 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 """Reader for eps level 1b data. Uses xml files as a format description.
+See:
+http://www.eumetsat.int/website/wcm/idc/idcplg?IdcService=GET_FILE&dDocName=PDF_TEN_97231-EPS-AVHRR&RevisionSelectionMethod=LatestReleased&Rendition=Web
+and
+http://www.eumetsat.int/website/wcm/idc/idcplg?IdcService=GET_FILE&dDocName=PDF_TEN_990004-EPS-AVHRR1-PGS&RevisionSelectionMethod=LatestReleased&Rendition=Web
 """
 
 import glob
@@ -90,7 +95,7 @@ def read_raw(filename):
             if not grh:
                 break
             try:
-                rec_class = record_class[grh["record_class"]]
+                rec_class = record_class[grh["record_class"][0]]
                 sub_class = grh["RECORD_SUBCLASS"][0]
                 record = np.fromfile(fdes,
                                      form.dtype((rec_class,
@@ -98,7 +103,7 @@ def read_raw(filename):
                                      1)
                 records.append((rec_class, record, sub_class))
             except KeyError:
-                fdes.seek(grh["RECORD_SIZE"] - 20, 1)
+                fdes.seek(grh["RECORD_SIZE"][0] - 20, 1)
 
     return records, form
 
@@ -255,7 +260,7 @@ class EpsAvhrrL1bReader(object):
                 if calib_type == 1:
                     chans[chan] = np.ma.array(
                         to_refl(self["SCENE_RADIANCES"][:, 2, :],
-                                self["CH2_SOLAR_FILTERED_IRRADIANCE"]))
+                                self["CH3A_SOLAR_FILTERED_IRRADIANCE"]))
                 else:
                     chans[chan] = np.ma.array(self["SCENE_RADIANCES"][:, 2, :])
 
@@ -454,7 +459,6 @@ def load(scene, *args, **kwargs):
     loaded_channels = set()
 
     for reader in readers:
-
         for chname, arr in reader.get_channels(scene.channels_to_load,
                                                calibrate).items():
             arrs.setdefault(chname, []).append(arr)
@@ -468,7 +472,7 @@ def load(scene, *args, **kwargs):
         llats.append(lats)
 
     for chname in loaded_channels:
-        scene[chname] = np.vstack(arrs[chname])
+        scene[chname] = np.ma.vstack(arrs[chname])
         if chname in ["1", "2", "3A"]:
             scene[chname].info["units"] = "%"
         elif chname in ["4", "5", "3B"]:
diff --git a/mpop/satin/mipp_xrit.py b/mpop/satin/mipp_xrit.py
index ef02046..e383feb 100644
--- a/mpop/satin/mipp_xrit.py
+++ b/mpop/satin/mipp_xrit.py
@@ -137,8 +137,14 @@ def load_generic(satscene, options, calibrate=True, area_extent=None,
             for section in options.keys():
                 if section.endswith('-level1'):
                     break
-            pattern_pro = eval(options[section].get('filename_pro'))
-            pattern_epi = eval(options[section].get('filename_epi'))
+            try:
+                pattern_pro = eval(options[section].get('filename_pro'))
+            except TypeError:
+                pattern_pro = None
+            try:
+                pattern_epi = eval(options[section].get('filename_epi'))
+            except TypeError:
+                pattern_epi = None
             pattern = eval(options[section].get('filename'))
 
             epilogue = None
@@ -147,11 +153,17 @@ def load_generic(satscene, options, calibrate=True, area_extent=None,
 
             if pattern_epi is not None:
                 glob_epi = satscene.time_slot.strftime(
-                    pattern_epi) % ({'segment': "EPI".ljust(9, '_')})
+                    pattern_epi) % ({'segment': "EPI".ljust(9, '_'),
+                                     'channel': chn + '*'})
+            else:
+                glob_epi = 'eggs_and_spam'
 
             if pattern_pro is not None:
                 glob_pro = satscene.time_slot.strftime(
-                    pattern_pro) % ({'segment': "PRO".ljust(9, '_')})
+                    pattern_pro) % ({'segment': "PRO".ljust(9, '_'),
+                                     'channel': chn + '*'})
+            else:
+                glob_pro = 'eggs_and_spam'
 
             glob_img = satscene.time_slot.strftime(
                 pattern) % ({'segment': "*", 'channel': chn + '*'})
@@ -159,9 +171,13 @@ def load_generic(satscene, options, calibrate=True, area_extent=None,
             for filename in filenames:
                 if fnmatch.fnmatch(os.path.basename(filename), glob_img):
                     image_files.append(filename)
-                elif fnmatch.fnmatch(os.path.basename(filename), glob_pro):
+                elif pattern_pro is not None and fnmatch.fnmatch(
+                    os.path.basename(filename),
+                        glob_pro):
                     prologue = filename
-                elif fnmatch.fnmatch(os.path.basename(filename), glob_epi):
+                elif pattern_epi is not None and fnmatch.fnmatch(
+                    os.path.basename(filename),
+                        glob_epi):
                     epilogue = filename
             if len(image_files) == 0 and prologue is None and epilogue is None:
                 use_filenames = False
diff --git a/mpop/satin/viirs_sdr.py b/mpop/satin/viirs_sdr.py
index 6ee11ff..982b5f6 100644
--- a/mpop/satin/viirs_sdr.py
+++ b/mpop/satin/viirs_sdr.py
@@ -291,6 +291,7 @@ class ViirsGeolocationData(object):
                             self.latitudes[y0_:y1_, :],
                             self.elevation[y0_:y1_, :],
                             self.mask[y0_:y1_, :])
+
         self.longitudes = np.ma.array(self.longitudes,
                                       mask=self.mask,
                                       copy=False)
@@ -845,30 +846,40 @@ class ViirsSDRReader(Reader):
                                      if os.path.basename(geofile).startswith('GMTCO')]
                 if len(geofilenames_band) != len(filename_band):
                     # Try the geoid instead:
+                    num_geo = len(geofilenames_band)
                     geofilenames_band = [geofile for geofile in geofile_list
                                          if os.path.basename(geofile).startswith('GMODO')]
                     if len(geofilenames_band) != len(filename_band):
-                        raise IOError("Not all geo location files " +
-                                      "for this scene are present for band " +
-                                      band.band_id + "!")
+                        num_geo = max(num_geo, len(geofilenames_band))
+                        num_band = len(filename_band)
+                        raise IOError("Incomplete dataset. " +
+                                      "Found %d geolocation files" % num_geo +
+                                      " and %d %s files" % (num_band,
+                                                            band.band_id))
             elif band.band_id.startswith('I'):
                 geofilenames_band = [geofile for geofile in geofile_list
                                      if os.path.basename(geofile).startswith('GITCO')]
                 if len(geofilenames_band) != len(filename_band):
                     # Try the geoid instead:
+                    num_geo = len(geofilenames_band)
                     geofilenames_band = [geofile for geofile in geofile_list
                                          if os.path.basename(geofile).startswith('GIMGO')]
                     if len(geofilenames_band) != len(filename_band):
-                        raise IOError("Not all geo location files " +
-                                      "for this scene are present for band " +
-                                      band.band_id + "!")
+                        num_geo = max(num_geo, len(geofilenames_band))
+                        num_band = len(filename_band)
+                        raise IOError("Incomplete dataset. " +
+                                      "Found %d geolocation files" % num_geo +
+                                      " and %d %s files" % (num_band,
+                                                            band.band_id))
             elif band.band_id.startswith('D'):
                 geofilenames_band = [geofile for geofile in geofile_list
                                      if os.path.basename(geofile).startswith('GDNBO')]
                 if len(geofilenames_band) != len(filename_band):
-                    raise IOError("Not all geo-location files " +
-                                  "for this scene are present for " +
-                                  "the Day Night Band!")
+                    num_geo = len(geofilenames_band)
+                    num_band = len(filename_band)
+                    raise IOError("Incomplete dataset. " +
+                                  "Found %d GDNBO files " % num_geo +
+                                  "and %d %s files" % (num_band, band.band_id))
 
             band.read_lonlat(geofilepaths=geofilenames_band)
 
@@ -881,8 +892,8 @@ class ViirsSDRReader(Reader):
             satscene[chn].info['band_id'] = band.band_id
             satscene[chn].info['start_time'] = band.begin_time
             satscene[chn].info['end_time'] = band.end_time
-            if chn in ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07', 'M08', 'M09', 'M10', 'M11',
-                       'I01', 'I02', 'I03']:
+            if chn in ['M01', 'M02', 'M03', 'M04', 'M05', 'M06', 'M07',
+                       'M08', 'M09', 'M10', 'M11', 'I01', 'I02', 'I03']:
                 satscene[chn].info['sun_zen_correction_applied'] = True
 
             # We assume the same geolocation should apply to all M-bands!
@@ -893,13 +904,13 @@ class ViirsSDRReader(Reader):
             satscene[chn].area = geometry.SwathDefinition(
                 lons=np.ma.masked_where(band.data.mask,
                                         band.geolocation.longitudes,
-                                        copy=False),
+                                        copy=True),
                 lats=np.ma.masked_where(band.data.mask,
                                         band.geolocation.latitudes,
-                                        copy=False))
+                                        copy=True))
             height = np.ma.masked_where(band.data.mask,
                                         band.geolocation.elevation,
-                                        copy=False)
+                                        copy=True)
 
             area_name = ("swath_" + satscene.fullname + "_" +
                          str(satscene.time_slot) + "_"
diff --git a/mpop/scene.py b/mpop/scene.py
index 49cc802..1e89578 100644
--- a/mpop/scene.py
+++ b/mpop/scene.py
@@ -1,6 +1,6 @@
 #!/usr/bin/env python
 # -*- coding: utf-8 -*-
-# Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015, 2016.
+# Copyright (c) 2010-2017.
 
 # Author(s):
 
diff --git a/mpop/tests/test_projector.py b/mpop/tests/test_projector.py
index dc8ed80..7823508 100644
--- a/mpop/tests/test_projector.py
+++ b/mpop/tests/test_projector.py
@@ -30,10 +30,8 @@
 """Test module for mpop.projector.
 """
 import unittest
-
 import numpy as np
 
-
 from mock import MagicMock, patch
 import sys
 sys.modules['pyresample'] = MagicMock()
@@ -104,7 +102,6 @@ class TestProjector(unittest.TestCase):
             with patch.object(utils, 'parse_area_file', mock):
                 in_area = geometry.AreaDefinition()
                 self.proj = Projector(in_area, out_area_id)
-                print self.proj.in_area
                 self.assertEquals(self.proj.in_area, in_area)
 
         in_area = geometry.SwathDefinition()
@@ -209,6 +206,82 @@ class TestProjector(unittest.TestCase):
                                npload.return_value.__getitem__.return_value,
                                fill_value=None)
 
+    @patch.object(mpop.projector.kd_tree, 'get_neighbour_info')
+    def test_calc_nearest_params(self, gni):
+        gni.return_value = (1, 2, 3, 4)
+        res = mpop.projector.calc_nearest_params('in_area', 'out_area',
+                                                 'radius', nprocs='nprocs')
+        self.assertTrue(isinstance(res, dict))
+        self.assertTrue('valid_index' in res)
+        self.assertEqual(res['valid_index'], 1)
+        self.assertTrue('valid_output_index' in res)
+        self.assertEqual(res['valid_output_index'], 2)
+        self.assertTrue('index_array' in res)
+        self.assertEqual(res['index_array'], 3)
+
+    @patch.object(mpop.projector.utils, 'generate_quick_linesample_arrays')
+    def test_calc_quick_params(self, gqla):
+        gqla.return_value = (1, 2)
+        res = mpop.projector.calc_quick_params('in_area', 'out_area')
+
+        self.assertTrue(isinstance(res, dict))
+        self.assertTrue('row_idx' in res)
+        self.assertEqual(res['row_idx'], 1)
+        self.assertTrue('col_idx' in res)
+        self.assertEqual(res['col_idx'], 2)
+
+    @patch.object(mpop.projector, 'get_bil_info')
+    def test_calc_bilinear_params(self, gbi):
+        gbi.return_value = (1, 2, 3, 4)
+        res = mpop.projector.calc_bilinear_params('in_area', 'out_area',
+                                                  'radius', nprocs='nprocs')
+        self.assertTrue(isinstance(res, dict))
+        self.assertTrue('bilinear_t' in res)
+        self.assertEqual(res['bilinear_t'], 1)
+        self.assertTrue('bilinear_s' in res)
+        self.assertEqual(res['bilinear_s'], 2)
+        self.assertTrue('input_idxs' in res)
+        self.assertEqual(res['input_idxs'], 3)
+        self.assertTrue('idx_arr' in res)
+        self.assertEqual(res['idx_arr'], 4)
+
+    @patch.object(mpop.projector, 'll2cr')
+    def test_calc_ewa_params(self, ll2):
+        ll2.return_value = (0, 1, 2)
+        res = mpop.projector.calc_ewa_params('in_area', 'out_area')
+        self.assertTrue(isinstance(res, dict))
+        self.assertTrue('ewa_cols' in res)
+        self.assertEqual(res['ewa_cols'], 1)
+        self.assertTrue('ewa_rows' in res)
+        self.assertEqual(res['ewa_rows'], 2)
+
+    def test_get_precompute_cache_fname(self):
+        res = mpop.projector.get_precompute_cache_fname('in_id', 'out_id',
+                                                        'in_area', 'out_area',
+                                                        'mode', 'proj_dir')
+        cor_res = "proj_dir/in_id2out_id_-" + \
+                  "6296787761359943868to8984161303220364208_mode.npz"
+        self.assertTrue(res == cor_res)
+
+    @patch.object(mpop.projector, 'get_area_def')
+    @patch.object(mpop.projector.geometry, 'SwathDefinition')
+    def test_get_area_and_id(self, swath_def, gad):
+        # Case when get_area_def works
+        swath_def.return_value = 1
+        gad.return_value = 'adef'
+        res = mpop.projector.get_area_and_id('area')
+        self.assertTrue(res[0] == 'adef')
+        self.assertTrue(res[1] == 'area')
+        # Case when AttributeError is raised
+        with self.assertRaises(AttributeError):
+            gad.side_effect = AttributeError
+            res = mpop.projector.get_area_and_id('area')
+        # Case when AttributeError is raised and latlons are given
+        gad.side_effect = AttributeError
+        res = mpop.projector.get_area_and_id('area', latlons=[1, 2])
+        self.assertEqual(res[0], 1)
+        self.assertTrue(res[1], 'area')
+
 
 def random_string(length,
                   choices="abcdefghijklmnopqrstuvwxyz"
diff --git a/mpop/version.py b/mpop/version.py
index 89fa315..c5d9122 100644
--- a/mpop/version.py
+++ b/mpop/version.py
@@ -23,4 +23,4 @@
 """Version file.
 """
 
-__version__ = "v1.4.0"
+__version__ = "v1.5.0"
diff --git a/setup.cfg b/setup.cfg
index befd993..23ac196 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -2,4 +2,3 @@
 requires=h5py pyresample numexpr pyhdf mipp
 release=1
 doc_files = doc/Makefile doc/source/*.rst doc/examples/*.py
-
diff --git a/utils/precompute_projection.py b/utils/precompute_projection.py
new file mode 100644
index 0000000..717a2ae
--- /dev/null
+++ b/utils/precompute_projection.py
@@ -0,0 +1,109 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+# Copyright (c) 2017
+#
+# Author(s):
+#
+#   Panu Lahtinen <panu.lahtinen at fmi.fi>
+#
+# This file is part of mpop.
+#
+# mpop is free software: you can redistribute it and/or modify it
+# under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# mpop 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.  See the GNU
+# General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with mpop.  If not, see <http://www.gnu.org/licenses/>.
+
+"""Module for calculating and projection mapping look-up tables, which
+can be used with MPOP by setting 'precompute=True'"""
+
+import numpy as np
+import sys
+
+from mpop.projector import (calc_nearest_params,
+                            calc_bilinear_params,
+                            calc_quick_params,
+                            get_precompute_cache_fname,
+                            get_area_and_id)
+
+
+def save(fname, **data):
+    """Save preprojection data to npz file."""
+    np.savez(fname, **data)
+
+
+def calc_preproj_params(out_dir, mode, in_area_name, out_area_name,
+                        radius=None, nprocs=1):
+    """Calculate preprojection parameters and save to *out_dir*"""
+    in_area, in_id = get_area_and_id(in_area_name)
+    out_area, out_id = get_area_and_id(out_area_name)
+
+    fname = get_precompute_cache_fname(in_id, out_id,
+                                       in_area_name, out_area_name,
+                                       mode, out_dir)
+
+    if mode == "nearest":
+        data = calc_nearest_params(in_area, out_area,
+                                   radius, nprocs=nprocs)
+    elif mode == "bilinear":
+        data = calc_bilinear_params(in_area, out_area, radius, nprocs=nprocs)
+    elif mode == "quick":
+        data = calc_quick_params(in_area, out_area)
+
+    save(fname, **data)
+
+
+def print_usage():
+    """Print usage"""
+    print("USAGE:")
+    print("python precompute_projection.py <in_area_name> "
+          "<out_area_name>")
+    print("python precompute_projection.py <in_area_name> "
+          "<out_area_name> <mode>")
+    print("python precompute_projection.py <in_area_name> "
+          "<out_area_name> <mode> <search_radius>")
+    print("python precompute_projection.py <in_area_name> "
+          "<out_area_name> <mode> <search_radius> <nprocs>")
+    print("python precompute_projection.py <in_area_name> "
+          "<out_area_name> <mode> <search_radius> <nprocs> <out_dir>")
+
+
+def main():
+    try:
+        in_area_name = sys.argv[1]
+        out_area_name = sys.argv[2]
+    except IndexError:
+        print_usage()
+        return
+
+    try:
+        mode = sys.argv[3]
+    except IndexError:
+        mode = "nearest"
+    try:
+        radius = int(sys.argv[4])
+    except IndexError:
+        radius = 50000
+    try:
+        nprocs = int(sys.argv[5])
+    except IndexError:
+        nprocs = 1
+
+    try:
+        out_dir = sys.argv[6]
+    except IndexError:
+        out_dir = '.'
+
+    calc_preproj_params(out_dir, mode, in_area_name, out_area_name,
+                        radius=radius, nprocs=nprocs)
+
+
+if __name__ == "__main__":
+    main()

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-grass/python-mpop.git



More information about the Pkg-grass-devel mailing list