#!/usr/bin/env python
#
# Copyright (c) 2019 Opticks Team. All Rights Reserved.
#
# This file is part of Opticks
# (see https://bitbucket.org/simoncblyth/opticks).
#
# Licensed under the Apache License, Version 2.0 (the "License"); 
# you may not use this file except in compliance with the License.  
# You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software 
# distributed under the License is distributed on an "AS IS" BASIS, 
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
# See the License for the specific language governing permissions and 
# limitations under the License.
#

"""
Folding on the standard raster::


    In [20]: imap[:(len(imap)/20)*20,0].reshape(-1,20)
    Out[20]: 
    array([[  60.,   61.,   62.,   63.,   64.,   65.,   66.,   67.,   68.,   69.,   70.,   71.,   72.,   73.,   74.,   75.,   76.,   77.,   78.,   79.],
           [  80.,   81.,   82.,   83.,   84.,   85.,   86.,   87.,   88.,   89.,   90.,   91.,   92.,   93.,   94.,   95.,   96.,   97.,   98.,   99.],
           [ 100.,  101.,  102.,  103.,  104.,  105.,  106.,  107.,  108.,  109.,  110.,  111.,  112.,  113.,  114.,  115.,  116.,  117.,  118.,  119.],
           [ 120.,  121.,  122.,  123.,  124.,  125.,  126.,  127.,  128.,  129.,  130.,  131.,  132.,  133.,  134.,  135.,  136.,  137.,  138.,  139.],
           [ 140.,  141.,  142.,  143.,  144.,  145.,  146.,  147.,  148.,  149.,  150.,  151.,  152.,  153.,  154.,  155.,  156.,  157.,  158.,  159.],
           [ 160.,  161.,  162.,  163.,  164.,  165.,  166.,  167.,  168.,  169.,  170.,  171.,  172.,  173.,  174.,  175.,  176.,  177.,  178.,  179.],
           [ 180.,  181.,  182.,  183.,  184.,  185.,  186.,  187.,  188.,  189.,  190.,  191.,  192.,  193.,  194.,  195.,  196.,  197.,  198.,  199.],
           [ 200.,  201.,  202.,  203.,  204.,  205.,  206.,  207.,  208.,  209.,  210.,  211.,  212.,  213.,  214.,  215.,  216.,  217.,  218.,  219.],
           [ 220.,  221.,  222.,  223.,  224.,  225.,  226.,  227.,  228.,  229.,  230.,  231.,  232.,  233.,  234.,  235.,  236.,  237.,  238.,  239.],
           [ 240.,  241.,  242.,  243.,  244.,  245.,  246.,  247.,  248.,  249.,  250.,  251.,  252.,  253.,  254.,  255.,  256.,  257.,  258.,  259.],
           [ 260.,  261.,  262.,  263.,  264.,  265.,  266.,  267.,  268.,  269.,  270.,  271.,  272.,  273.,  274.,  275.,  276.,  277.,  278.,  279.],
           [ 280.,  281.,  282.,  283.,  284.,  285.,  286.,  287.,  288.,  289.,  290.,  291.,  292.,  293.,  294.,  295.,  296.,  297.,  298.,  299.],
           [ 300.,  301.,  302.,  303.,  304.,  305.,  306.,  307.,  308.,  309.,  310.,  311.,  312.,  313.,  314.,  315.,  316.,  317.,  318.,  319.],
           [ 320.,  321.,  322.,  323.,  324.,  325.,  326.,  327.,  328.,  329.,  330.,  331.,  332.,  333.,  334.,  335.,  336.,  337.,  338.,  339.],
           [ 340.,  341.,  342.,  343.,  344.,  345.,  346.,  347.,  348.,  349.,  350.,  351.,  352.,  353.,  354.,  355.,  356.,  357.,  358.,  359.],
           [ 360.,  361.,  362.,  363.,  364.,  365.,  366.,  367.,  368.,  369.,  370.,  371.,  372.,  373.,  374.,  375.,  376.,  377.,  378.,  379.],
           [ 380.,  381.,  382.,  383.,  384.,  385.,  386.,  387.,  388.,  389.,  390.,  391.,  392.,  393.,  394.,  395.,  396.,  397.,  398.,  399.],
           [ 400.,  401.,  402.,  403.,  404.,  405.,  406.,  407.,  408.,  409.,  410.,  411.,  412.,  413.,  414.,  415.,  416.,  417.,  418.,  419.],
           [ 420.,  421.,  422.,  423.,  424.,  425.,  426.,  427.,  428.,  429.,  430.,  431.,  432.,  433.,  434.,  435.,  436.,  437.,  438.,  439.],
           [ 440.,  441.,  442.,  443.,  444.,  445.,  446.,  447.,  448.,  449.,  450.,  451.,  452.,  453.,  454.,  455.,  456.,  457.,  458.,  459.],
           [ 460.,  461.,  462.,  463.,  464.,  465.,  466.,  467.,  468.,  469.,  470.,  471.,  472.,  473.,  474.,  475.,  476.,  477.,  478.,  479.],
           [ 480.,  481.,  482.,  483.,  484.,  485.,  486.,  487.,  488.,  489.,  490.,  491.,  492.,  493.,  494.,  495.,  496.,  497.,  498.,  499.],
           [ 500.,  501.,  502.,  503.,  504.,  505.,  506.,  507.,  508.,  509.,  510.,  511.,  512.,  513.,  514.,  515.,  516.,  517.,  518.,  519.],
           [ 520.,  521.,  522.,  523.,  524.,  525.,  526.,  527.,  528.,  529.,  530.,  531.,  532.,  533.,  534.,  535.,  536.,  537.,  538.,  539.],
           [ 540.,  541.,  542.,  543.,  544.,  545.,  546.,  547.,  548.,  549.,  550.,  551.,  552.,  553.,  554.,  555.,  556.,  557.,  558.,  559.],
           [ 560.,  561.,  562.,  563.,  564.,  565.,  566.,  567.,  568.,  569.,  570.,  571.,  572.,  573.,  574.,  575.,  576.,  577.,  578.,  579.],
           [ 580.,  581.,  582.,  583.,  584.,  585.,  586.,  587.,  588.,  589.,  590.,  591.,  592.,  593.,  594.,  595.,  596.,  597.,  598.,  599.],
           [ 600.,  601.,  602.,  603.,  604.,  605.,  606.,  607.,  608.,  609.,  610.,  611.,  612.,  613.,  614.,  615.,  616.,  617.,  618.,  619.],
           [ 620.,  621.,  622.,  623.,  624.,  625.,  626.,  627.,  628.,  629.,  630.,  631.,  632.,  633.,  634.,  635.,  636.,  637.,  638.,  639.],
           [ 640.,  641.,  642.,  643.,  644.,  645.,  646.,  647.,  648.,  649.,  650.,  651.,  652.,  653.,  654.,  655.,  656.,  657.,  658.,  659.],
           [ 660.,  661.,  662.,  663.,  664.,  665.,  666.,  667.,  668.,  669.,  670.,  671.,  672.,  673.,  674.,  675.,  676.,  677.,  678.,  679.],
           [ 680.,  681.,  682.,  683.,  684.,  685.,  686.,  687.,  688.,  689.,  690.,  691.,  692.,  693.,  694.,  695.,  696.,  697.,  698.,  699.],
           [ 700.,  701.,  702.,  703.,  704.,  705.,  706.,  707.,  708.,  709.,  710.,  711.,  712.,  713.,  714.,  715.,  716.,  717.,  718.,  719.],
           [ 720.,  721.,  722.,  723.,  724.,  725.,  726.,  727.,  728.,  729.,  730.,  731.,  732.,  733.,  734.,  735.,  736.,  737.,  738.,  739.],
           [ 740.,  741.,  742.,  743.,  744.,  745.,  746.,  747.,  748.,  749.,  750.,  751.,  752.,  753.,  754.,  755.,  756.,  757.,  758.,  759.],
           [ 760.,  761.,  762.,  763.,  764.,  765.,  766.,  767.,  768.,  769.,  770.,  771.,  772.,  773.,  774.,  775.,  776.,  777.,  778.,  779.],
           [ 780.,  781.,  782.,  783.,  784.,  785.,  786.,  787.,  788.,  789.,  790.,  791.,  792.,  793.,  794.,  795.,  796.,  797.,  798.,  799.],
           [ 800.,  801.,  802.,  803.,  804.,  805.,  806.,  807.,  808.,  809.,  810.,  811.,  812.,  813.,  814.,  815.,  816.,  817.,  818.,  819.]], dtype=float32)

    In [21]: imap[:(len(imap)/20)*20,1].reshape(-1,20)
    Out[21]: 
    array([[ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ,  1.696 ],
           [ 1.696 ,  1.6952,  1.6945,  1.6937,  1.6929,  1.6922,  1.6914,  1.6906,  1.6899,  1.6891,  1.6883,  1.6876,  1.6868,  1.686 ,  1.6853,  1.6845,  1.6837,  1.683 ,  1.6822,  1.6814],
           [ 1.6807,  1.6801,  1.6795,  1.6789,  1.6783,  1.6777,  1.6772,  1.6766,  1.676 ,  1.6754,  1.6748,  1.6742,  1.6736,  1.6731,  1.6725,  1.6719,  1.6713,  1.6707,  1.6701,  1.6695],
           [ 1.669 ,  1.6685,  1.668 ,  1.6676,  1.6671,  1.6667,  1.6662,  1.6657,  1.6653,  1.6648,  1.6644,  1.6639,  1.6634,  1.663 ,  1.6625,  1.6621,  1.6616,  1.6611,  1.6607,  1.6602],
           [ 1.6598,  1.6594,  1.659 ,  1.6586,  1.6583,  1.6579,  1.6575,  1.6572,  1.6568,  1.6564,  1.656 ,  1.6557,  1.6553,  1.6549,  1.6546,  1.6542,  1.6538,  1.6534,  1.6531,  1.6527],
           [ 1.6523,  1.652 ,  1.6517,  1.6514,  1.6511,  1.6508,  1.6505,  1.6502,  1.6499,  1.6496,  1.6493,  1.649 ,  1.6487,  1.6484,  1.6481,  1.6478,  1.6475,  1.6472,  1.6468,  1.6465],
           [ 1.6462,  1.646 ,  1.6457,  1.6455,  1.6452,  1.645 ,  1.6447,  1.6445,  1.6442,  1.6439,  1.6437,  1.6434,  1.6432,  1.6429,  1.6427,  1.6424,  1.6422,  1.6419,  1.6417,  1.6414],
           [ 1.6412,  1.6409,  1.6407,  1.6405,  1.6403,  1.6401,  1.6399,  1.6396,  1.6394,  1.6392,  1.639 ,  1.6388,  1.6386,  1.6384,  1.6381,  1.6379,  1.6377,  1.6375,  1.6373,  1.6371],
           [ 1.6368,  1.6367,  1.6365,  1.6363,  1.6361,  1.6359,  1.6357,  1.6356,  1.6354,  1.6352,  1.635 ,  1.6348,  1.6346,  1.6345,  1.6343,  1.6341,  1.6339,  1.6337,  1.6335,  1.6333],
           [ 1.6332,  1.633 ,  1.6328,  1.6327,  1.6325,  1.6324,  1.6322,  1.632 ,  1.6319,  1.6317,  1.6316,  1.6314,  1.6313,  1.6311,  1.6309,  1.6308,  1.6306,  1.6305,  1.6303,  1.6301],
           [ 1.63  ,  1.6298,  1.6297,  1.6296,  1.6294,  1.6293,  1.6291,  1.629 ,  1.6289,  1.6287,  1.6286,  1.6285,  1.6283,  1.6282,  1.628 ,  1.6279,  1.6278,  1.6276,  1.6275,  1.6273],
           [ 1.6272,  1.6271,  1.627 ,  1.6268,  1.6267,  1.6266,  1.6265,  1.6264,  1.6262,  1.6261,  1.626 ,  1.6259,  1.6257,  1.6256,  1.6255,  1.6254,  1.6253,  1.6251,  1.625 ,  1.6249],
           [ 1.6248,  1.6247,  1.6246,  1.6244,  1.6243,  1.6242,  1.6241,  1.624 ,  1.6239,  1.6238,  1.6237,  1.6236,  1.6235,  1.6234,  1.6233,  1.6232,  1.623 ,  1.6229,  1.6228,  1.6227],
           [ 1.6226,  1.6225,  1.6224,  1.6223,  1.6222,  1.6221,  1.622 ,  1.622 ,  1.6219,  1.6218,  1.6217,  1.6216,  1.6215,  1.6214,  1.6213,  1.6212,  1.6211,  1.621 ,  1.6209,  1.6208],
           [ 1.6207,  1.6206,  1.6205,  1.6205,  1.6204,  1.6203,  1.6202,  1.6201,  1.62  ,  1.6199,  1.6199,  1.6198,  1.6197,  1.6196,  1.6195,  1.6194,  1.6194,  1.6193,  1.6192,  1.6191],
           [ 1.619 ,  1.6189,  1.6189,  1.6188,  1.6187,  1.6186,  1.6186,  1.6185,  1.6184,  1.6183,  1.6182,  1.6182,  1.6181,  1.618 ,  1.6179,  1.6179,  1.6178,  1.6177,  1.6176,  1.6176],
           [ 1.6175,  1.6174,  1.6173,  1.6173,  1.6172,  1.6171,  1.6171,  1.617 ,  1.6169,  1.6169,  1.6168,  1.6167,  1.6166,  1.6166,  1.6165,  1.6164,  1.6164,  1.6163,  1.6162,  1.6162],
           [ 1.6161,  1.616 ,  1.616 ,  1.6159,  1.6158,  1.6158,  1.6157,  1.6156,  1.6156,  1.6155,  1.6155,  1.6154,  1.6153,  1.6153,  1.6152,  1.6151,  1.6151,  1.615 ,  1.6149,  1.6149],
           [ 1.6148,  1.6148,  1.6147,  1.6146,  1.6146,  1.6145,  1.6145,  1.6144,  1.6144,  1.6143,  1.6142,  1.6142,  1.6141,  1.6141,  1.614 ,  1.614 ,  1.6139,  1.6138,  1.6138,  1.6137],
           [ 1.6137,  1.6136,  1.6136,  1.6135,  1.6135,  1.6134,  1.6133,  1.6133,  1.6132,  1.6132,  1.6131,  1.6131,  1.613 ,  1.613 ,  1.6129,  1.6129,  1.6128,  1.6128,  1.6127,  1.6127],
           [ 1.6126,  1.6126,  1.6125,  1.6125,  1.6124,  1.6124,  1.6123,  1.6123,  1.6122,  1.6122,  1.6121,  1.6121,  1.612 ,  1.612 ,  1.6119,  1.6119,  1.6118,  1.6118,  1.6117,  1.6117],
           [ 1.6116,  1.6116,  1.6115,  1.6115,  1.6114,  1.6114,  1.6114,  1.6113,  1.6113,  1.6112,  1.6112,  1.6111,  1.6111,  1.611 ,  1.611 ,  1.611 ,  1.6109,  1.6109,  1.6108,  1.6108],
           [ 1.6107,  1.6107,  1.6106,  1.6106,  1.6106,  1.6105,  1.6105,  1.6104,  1.6104,  1.6103,  1.6103,  1.6103,  1.6102,  1.6102,  1.6101,  1.6101,  1.6101,  1.61  ,  1.61  ,  1.6099],
           [ 1.6099,  1.6099,  1.6098,  1.6098,  1.6097,  1.6097,  1.6097,  1.6096,  1.6096,  1.6095,  1.6095,  1.6095,  1.6094,  1.6094,  1.6093,  1.6093,  1.6093,  1.6092,  1.6092,  1.6092],
           [ 1.6091,  1.6091,  1.609 ,  1.609 ,  1.609 ,  1.6089,  1.6089,  1.6089,  1.6088,  1.6088,  1.6087,  1.6087,  1.6087,  1.6086,  1.6086,  1.6086,  1.6085,  1.6085,  1.6085,  1.6084],
           [ 1.6084,  1.6084,  1.6083,  1.6083,  1.6083,  1.6082,  1.6082,  1.6082,  1.6081,  1.6081,  1.608 ,  1.608 ,  1.608 ,  1.6079,  1.6079,  1.6079,  1.6078,  1.6078,  1.6078,  1.6077]], dtype=float32)

"""


import os, logging, numpy as np
log = logging.getLogger(__name__)

from opticks.ana.base import opticks_main 

if __name__ == '__main__':
    ok = opticks_main()

    pmap = np.load(os.path.expandvars("$TMP/GPropertyMapTest/FlintGlass/refractive_index.npy"))
    imap = np.load(os.path.expandvars("$TMP/GPropertyMapTest_Interpolated/FlintGlass/refractive_index.npy"))

    assert np.all( imap[::20] == pmap )



