From 76a26782268538076be2db781105cf4cbc0c1fa0 Mon Sep 17 00:00:00 2001 From: Austin Sanders Date: Thu, 17 Dec 2020 21:31:29 -0700 Subject: [PATCH] Cleaned up cropping notebooks --- isis/notebooks/crop_chandrayaan.ipynb | 206 ++++---- isis/notebooks/crop_crism.ipynb | 174 +------ isis/notebooks/crop_crism_trdr.ipynb | 241 +--------- isis/notebooks/crop_kaguya.ipynb | 42 +- isis/notebooks/crop_lo.ipynb | 277 ++--------- isis/notebooks/crop_lo_reimport.ipynb | 344 ++------------ isis/notebooks/crop_marci.ipynb | 70 ++- isis/notebooks/crop_mimap.ipynb | 645 +++----------------------- 8 files changed, 310 insertions(+), 1689 deletions(-) diff --git a/isis/notebooks/crop_chandrayaan.ipynb b/isis/notebooks/crop_chandrayaan.ipynb index 3383bd2fb3..18f52ff39f 100644 --- a/isis/notebooks/crop_chandrayaan.ipynb +++ b/isis/notebooks/crop_chandrayaan.ipynb @@ -18,24 +18,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", - " def encode_time(self, value):\n", - " if value.microsecond:\n", - " second = u'%02d.%06d' % (value.second, value.microsecond)\n", - " else:\n", - " second = u'%02d' % value.second\n", - "\n", - " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "chan_file = '/home/arsanders/testData/chandrayaan/forwardDescending/input/M3G20081129T171431_V03_L1B.LBL'\n", @@ -44,8 +29,10 @@ }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, + "execution_count": 3, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "header = pvl.load(chan_file)" @@ -53,10 +40,13 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, + "execution_count": 4, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ + "# chan1m32isis requires 4 different files\n", "rdn_file = os.path.dirname(chan_file) + \"/\"+ header['RDN_FILE']['^RDN_IMAGE']\n", "obs_file = os.path.dirname(chan_file) + \"/\"+ header['OBS_FILE']['^OBS_IMAGE']\n", "loc_file = os.path.dirname(chan_file) + \"/\"+ header['LOC_FILE']['^LOC_IMAGE']\n", @@ -65,8 +55,10 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, + "execution_count": 5, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(rdn_file, 'rb') as f:\n", @@ -77,8 +69,10 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, + "execution_count": 6, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "n_lines = 5\n", @@ -87,8 +81,10 @@ }, { "cell_type": "code", - "execution_count": 8, - "metadata": {}, + "execution_count": 7, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "def read_chandrayaan(b_image_data, line_length, n_lines, n_bands):\n", @@ -102,8 +98,10 @@ }, { "cell_type": "code", - "execution_count": 9, - "metadata": {}, + "execution_count": 8, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "n_bands = header['RDN_FILE']['RDN_IMAGE']['BANDS']\n", @@ -114,27 +112,7 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(15, 304)" - ] - }, - "execution_count": 10, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "cropped_image_data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": { "scrolled": true }, @@ -142,16 +120,16 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 11, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -168,8 +146,10 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, + "execution_count": 10, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(obs_file, 'rb') as f:\n", @@ -180,8 +160,10 @@ }, { "cell_type": "code", - "execution_count": 13, - "metadata": {}, + "execution_count": 11, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "n_bands = header['OBS_FILE']['OBS_IMAGE']['BANDS']\n", @@ -190,42 +172,22 @@ }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(50, 304)" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "obs_image_data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 15, + "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 15, + "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -242,8 +204,10 @@ }, { "cell_type": "code", - "execution_count": 16, - "metadata": {}, + "execution_count": 13, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(loc_file, 'rb') as f:\n", @@ -254,8 +218,10 @@ }, { "cell_type": "code", - "execution_count": 17, - "metadata": {}, + "execution_count": 14, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "line_length = header['LOC_FILE']['LOC_IMAGE']['LINE_SAMPLES'] * (header['LOC_FILE']['LOC_IMAGE']['SAMPLE_BITS']//8)\n", @@ -270,22 +236,22 @@ }, { "cell_type": "code", - "execution_count": 18, + "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 18, + "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -302,10 +268,13 @@ }, { "cell_type": "code", - "execution_count": 19, - "metadata": {}, + "execution_count": 16, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ + "# Set up files names for each of the four files\n", "rdn_fn, rdn_ext = os.path.splitext(rdn_file)\n", "obs_fn, obs_ext = os.path.splitext(obs_file)\n", "loc_fn, loc_ext = os.path.splitext(loc_file)\n", @@ -326,33 +295,34 @@ }, { "cell_type": "code", - "execution_count": 20, - "metadata": {}, + "execution_count": 17, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "header['RDN_FILE']['^RDN_IMAGE'] = mini_rdn_bn\n", - "header['OBS_FILE']['^OBS_IMAGE'] = mini_obs_bn\n", - "header['LOC_FILE']['^LOC_IMAGE'] = mini_loc_bn\n", - "header['UTC_FILE']['^UTC_TIME_TABLE'] = mini_tab_bn\n", - "\n", "header['RDN_FILE']['FILE_RECORDS'] = n_lines\n", "header['RDN_FILE']['RDN_IMAGE']['LINES'] = n_lines\n", "header['RDN_FILE']['RDN_IMAGE']['BANDS'] = n_output_bands\n", "header['RDN_FILE']['RECORD_BYTES'] = int(n_output_bands * (header['RDN_FILE']['RDN_IMAGE']['SAMPLE_BITS']/8) *header['RDN_FILE']['RDN_IMAGE']['LINE_SAMPLES'])\n", "\n", + "header['LOC_FILE']['^LOC_IMAGE'] = mini_loc_bn\n", "header['LOC_FILE']['FILE_RECORDS'] = n_lines\n", "header['LOC_FILE']['LOC_IMAGE']['LINES'] = n_lines\n", "\n", + "header['OBS_FILE']['^OBS_IMAGE'] = mini_obs_bn\n", "header['OBS_FILE']['FILE_RECORDS'] = n_lines\n", "header['OBS_FILE']['OBS_IMAGE']['LINES'] = n_lines\n", "\n", + "header['UTC_FILE']['^UTC_TIME_TABLE'] = mini_tab_bn\n", "header['UTC_FILE']['FILE_RECORDS'] = n_lines\n", "header['UTC_FILE']['UTC_TIME_TABLE']['ROWS'] = n_lines" ] }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 18, "metadata": {}, "outputs": [ { @@ -361,7 +331,7 @@ "7527" ] }, - "execution_count": 21, + "execution_count": 18, "metadata": {}, "output_type": "execute_result" } @@ -372,15 +342,17 @@ "\n", "grammar = pvl.grammar.ISISGrammar()\n", "grammar.comments+=((\"#\", \"\\n\"), )\n", - "encoder = RealIsisCubeLabelEncoder()\n", + "encoder = pvl.encoder.ISISEncoder()\n", "\n", "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" ] }, { "cell_type": "code", - "execution_count": 22, - "metadata": {}, + "execution_count": 19, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(mini_rdn_fn, 'wb+') as f:\n", @@ -391,8 +363,10 @@ }, { "cell_type": "code", - "execution_count": 23, - "metadata": {}, + "execution_count": 20, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(mini_loc_fn, 'wb+') as f:\n", @@ -403,8 +377,10 @@ }, { "cell_type": "code", - "execution_count": 24, - "metadata": {}, + "execution_count": 21, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(mini_obs_fn, 'wb+') as f:\n", @@ -415,8 +391,10 @@ }, { "cell_type": "code", - "execution_count": 25, - "metadata": {}, + "execution_count": 22, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(tab_file) as f:\n", @@ -429,16 +407,18 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python autocnet", "language": "python", - "name": "python3" + "name": "autocnet" }, "language_info": { "codemirror_mode": { @@ -450,7 +430,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.0" + "version": "3.7.6" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_crism.ipynb b/isis/notebooks/crop_crism.ipynb index 1d52d18810..0e0cdfed21 100644 --- a/isis/notebooks/crop_crism.ipynb +++ b/isis/notebooks/crop_crism.ipynb @@ -3,7 +3,9 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pvl\n", @@ -30,7 +32,9 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "header = pvl.load(crism_file)" @@ -146,11 +150,12 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(crism_file, 'rb') as f:\n", - " # If detached label, \"^IMAGE\" will be a list.\n", " image_file = os.path.dirname(crism_file) + \"/\" + header[\"^IMAGE\"].lower()\n", " with open(image_file, 'rb') as im_f:\n", " b_image_data = im_f.read()" @@ -171,7 +176,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_data = []\n", @@ -212,7 +219,7 @@ } ], "source": [ - "plt.imshow(image_data, cmap='magma')" + "plt.imshow(image_data)" ] }, { @@ -234,23 +241,6 @@ "header['FILE_RECORDS'] = n_lines -1\n" ] }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", - " def encode_time(self, value):\n", - " if value.microsecond:\n", - " second = u'%02d.%06d' % (value.second, value.microsecond)\n", - " else:\n", - " second = u'%02d' % value.second\n", - "\n", - " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time" - ] - }, { "cell_type": "code", "execution_count": 11, @@ -273,7 +263,7 @@ "\n", "grammar = pvl.grammar.ISISGrammar()\n", "grammar.comments+=((\"#\", \"\\n\"), )\n", - "encoder = RealIsisCubeLabelEncoder()\n", + "encoder = pvl.encoder.ISISEncoder()\n", "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" ] }, @@ -290,142 +280,6 @@ " f.seek(0, 2)\n", " f.write(b_reduced_image_data)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "header = pvl.load(out_label)" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "PVLModule([\n", - " ('PDS_VERSION_ID', 'PDS3')\n", - " ('RECORD_TYPE', 'FIXED_LENGTH')\n", - " ('RECORD_BYTES', 3920)\n", - " ('FILE_RECORDS', 9)\n", - " ('LABEL_REVISION_NOTE',\n", - " '2003-11-19, S. Slavney (GEO); 2005-09-25, S. Murchie (JHU/APL); 2007-03-09, '\n", - " 'E. Malaret (ACT Corp.); 2007-09-14, C. Hash (ACT Corp)')\n", - " ('^IMAGE', 't1865_mrrde_70n185_0256_1_cropped.img')\n", - " ('DATA_SET_ID', 'MRO-M-CRISM-5-RDR-MULTISPECTRAL-V1.0')\n", - " ('PRODUCT_ID', 'T1865_MRRDE_70N185_0256_1')\n", - " ('INSTRUMENT_HOST_NAME', 'MARS RECONNAISSANCE ORBITER')\n", - " ('SPACECRAFT_ID', 'MRO')\n", - " ('INSTRUMENT_NAME', 'COMPACT RECONNAISSANCE IMAGING SPECTROMETER FOR MARS')\n", - " ('INSTRUMENT_ID', 'CRISM')\n", - " ('TARGET_NAME', 'MARS')\n", - " ('PRODUCT_TYPE', 'MAP_PROJECTED_MULTISPECTRAL_RDR')\n", - " ('PRODUCT_CREATION_TIME',\n", - " datetime.datetime(2007, 12, 22, 16, 50, 47, 432000, tzinfo=datetime.timezone.utc))\n", - " ('START_TIME', 'N/A')\n", - " ('STOP_TIME', 'N/A')\n", - " ('SPACECRAFT_CLOCK_START_COUNT', 'N/A')\n", - " ('SPACECRAFT_CLOCK_STOP_COUNT', 'N/A')\n", - " ('PRODUCT_VERSION_ID', '1')\n", - " ('PRODUCER_INSTITUTION_NAME', 'APPLIED PHYSICS LABORATORY')\n", - " ('SOFTWARE_NAME', 'PIPE_create_crism_mrdr_product')\n", - " ('SOFTWARE_VERSION_ID', '12.21.07')\n", - " ('MRO:WAVELENGTH_FILE_NAME', 'T1865_MRRWV_70N185_0256_1.TAB')\n", - " ('IMAGE',\n", - " {'BANDS': 1,\n", - " 'BAND_NAME': ['Solar longitude, deg',\n", - " 'Solar distance, AU',\n", - " 'Observation ID, VNIR',\n", - " 'Observation ID, IR',\n", - " 'Ordinal counter, VNIR',\n", - " 'Ordinal counter, IR',\n", - " 'Column number, VNIR',\n", - " 'Column number, IR',\n", - " 'Line, or frame number, VNIR',\n", - " 'Line, or frame number, IR',\n", - " 'INA at areoid, deg',\n", - " 'EMA at areoid, deg',\n", - " 'Phase angle, deg',\n", - " 'Latitude, areocentric, deg N',\n", - " 'Longitude, areocentric, deg E',\n", - " 'INA at surface from MOLA, deg',\n", - " 'EMA at surface from MOLA, deg',\n", - " 'Slope magnitude from MOLA, deg',\n", - " 'MOLA slope azimuth, deg clkwise from N',\n", - " 'Elevation, meters relative to MOLA',\n", - " 'Thermal inertia, J m^-2 K^-1 s^-0.5',\n", - " 'Bolometic albedo',\n", - " 'Local solar time, hours',\n", - " 'Spare'],\n", - " 'BAND_STORAGE_TYPE': 'BAND_SEQUENTIAL',\n", - " 'LINES': 10,\n", - " 'LINE_SAMPLES': 980,\n", - " 'SAMPLE_BITS': 32,\n", - " 'SAMPLE_TYPE': 'PC_REAL'})\n", - " ('IMAGE_MAP_PROJECTION',\n", - " {'A_AXIS_RADIUS': Quantity(value=3396, units='KM'),\n", - " 'B_AXIS_RADIUS': Quantity(value=3396, units='KM'),\n", - " 'CENTER_LATITUDE': Quantity(value=67.5000001, units='DEGREE'),\n", - " 'CENTER_LONGITUDE': Quantity(value=185.0, units='DEGREE'),\n", - " 'COORDINATE_SYSTEM_NAME': 'PLANETOCENTRIC',\n", - " 'COORDINATE_SYSTEM_TYPE': 'BODY-FIXED ROTATING',\n", - " 'C_AXIS_RADIUS': Quantity(value=3396, units='KM'),\n", - " 'EASTERNMOST_LONGITUDE': Quantity(value=9.9999999, units='DEGREE'),\n", - " 'FIRST_STANDARD_PARALLEL': 'N/A',\n", - " 'LINE_FIRST_PIXEL': 1,\n", - " 'LINE_LAST_PIXEL': 1280,\n", - " 'LINE_PROJECTION_OFFSET': 18560.0,\n", - " 'MAP_PROJECTION_ROTATION': 0.0,\n", - " 'MAP_PROJECTION_TYPE': 'EQUIRECTANGULAR',\n", - " 'MAP_RESOLUTION': Quantity(value=256, units='PIXEL/DEGREE'),\n", - " 'MAP_SCALE': Quantity(value=0.231528833585, units='KM/PIXEL'),\n", - " 'MAXIMUM_LATITUDE': Quantity(value=72.5, units='DEGREE'),\n", - " 'MINIMUM_LATITUDE': Quantity(value=67.5000001, units='DEGREE'),\n", - " 'POSITIVE_LONGITUDE_DIRECTION': 'EAST',\n", - " 'REFERENCE_LATITUDE': 'N/A',\n", - " 'REFERENCE_LONGITUDE': 'N/A',\n", - " 'SAMPLE_FIRST_PIXEL': 1,\n", - " 'SAMPLE_LAST_PIXEL': 980,\n", - " 'SAMPLE_PROJECTION_OFFSET': 47360.0,\n", - " 'SECOND_STANDARD_PARALLEL': 'N/A',\n", - " 'WESTERNMOST_LONGITUDE': Quantity(value=360.0, units='DEGREE'),\n", - " '^DATA_SET_MAP_PROJECTION': 'MRR_MAP.CAT'})\n", - "])" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "header" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/isis/notebooks/crop_crism_trdr.ipynb b/isis/notebooks/crop_crism_trdr.ipynb index 17f65660d3..6c5094df69 100644 --- a/isis/notebooks/crop_crism_trdr.ipynb +++ b/isis/notebooks/crop_crism_trdr.ipynb @@ -238,7 +238,6 @@ "outputs": [], "source": [ "with open(crism_file, 'rb') as f:\n", - " # If detached label, \"^IMAGE\" will be a list.\n", " image_file = os.path.dirname(crism_file) + \"/\" + header['FILE'][\"^IMAGE\"].lower()\n", " with open(image_file, 'rb') as im_f:\n", " b_image_data = im_f.read()" @@ -281,10 +280,10 @@ }, "outputs": [], "source": [ + "#\n", "n_output_bands = 107\n", "n_bands = header['FILE']['IMAGE']['BANDS']\n", "image_data = read_crism_trdr(b_image_data, line_length, n_lines, n_bands)\n", - "#cropped_image_data = image_data[np.where(np.arange(image_data.shape[0]) % n_bands < n_output_bands)]\n", "\n", "cropped_image_data = image_data" ] @@ -345,28 +344,7 @@ "header['FILE']['ROWNUM_TABLE']['ROWS'] = n_output_bands\n", "# Access the second instance of \"FILE\", which can't be accessed by name\n", "header[-1][1]['TRDR_HK_TABLE'] = 0\n", - "header[-1][1]['^TRDR_HK_TABLE'] = 0\n", - "#header[-1][1]['FILE_RECORDS'] = n_lines\n", - "#header[-1][1]['TRDR_HK_TABLE']['ROWS'] = n_lines" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", - " def encode_time(self, value):\n", - " if value.microsecond:\n", - " second = u'%02d.%06d' % (value.second, value.microsecond)\n", - " else:\n", - " second = u'%02d' % value.second\n", - "\n", - " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time" + "header[-1][1]['^TRDR_HK_TABLE'] = 0" ] }, { @@ -391,7 +369,7 @@ "\n", "grammar = pvl.grammar.ISISGrammar()\n", "grammar.comments+=((\"#\", \"\\n\"), )\n", - "encoder = RealIsisCubeLabelEncoder()\n", + "encoder = pvl.encoder.ISISEncoder()\n", "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" ] }, @@ -408,219 +386,6 @@ " f.seek(0, 2)\n", " f.write(b_reduced_image_data)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "header = pvl.load(out_label)" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "PVLModule([\n", - " ('PDS_VERSION_ID', 'PDS3')\n", - " ('LABEL_REVISION_NOTE',\n", - " '2004-11-22, S. Slavney (GEO); 2005-12-20, H. Taylor (JHU/APL); 2006-04-05, '\n", - " 'S. Murchie (JHU/APL); 2006-09-18, P. Cavender (JHU/APL); 2007-02-19, P. '\n", - " 'Cavender (JHU/APL); Version 2, new stray light subtraction 2010-06-01, D. '\n", - " 'Humm (JHU/APL); Version 3, shutter mirror correction 2010-10-12, C. Hash '\n", - " '(ACT); Version 3, Added data filter control parameters')\n", - " ('DATA_SET_ID', 'MRO-M-CRISM-3-RDR-TARGETED-V1.0')\n", - " ('PRODUCT_ID', 'FRT0001E5C3_07_IF124S_TRR3')\n", - " ('INSTRUMENT_HOST_NAME', 'MARS RECONNAISSANCE ORBITER')\n", - " ('SPACECRAFT_ID', 'MRO')\n", - " ('INSTRUMENT_NAME', 'COMPACT RECONNAISSANCE IMAGING SPECTROMETER FOR MARS')\n", - " ('INSTRUMENT_ID', 'CRISM')\n", - " ('TARGET_NAME', 'MARS')\n", - " ('PRODUCT_TYPE', 'TARGETED_RDR')\n", - " ('PRODUCT_CREATION_TIME',\n", - " datetime.datetime(2011, 6, 8, 10, 52, 30, tzinfo=datetime.timezone.utc))\n", - " ('START_TIME',\n", - " datetime.datetime(2011, 6, 2, 4, 3, 9, 29000, tzinfo=datetime.timezone.utc))\n", - " ('STOP_TIME',\n", - " datetime.datetime(2011, 6, 2, 4, 5, 0, 763000, tzinfo=datetime.timezone.utc))\n", - " ('SPACECRAFT_CLOCK_START_COUNT', '10/0991454621.14521')\n", - " ('SPACECRAFT_CLOCK_STOP_COUNT', '10/0991454732.62633')\n", - " ('ORBIT_NUMBER', None)\n", - " ('OBSERVATION_TYPE', 'FRT')\n", - " ('OBSERVATION_ID', '16#0001E5C3#')\n", - " ('MRO:OBSERVATION_NUMBER', 7)\n", - " ('MRO:ACTIVITY_ID', 'IF124')\n", - " ('MRO:SENSOR_ID', 'S')\n", - " ('MRO:DETECTOR_TEMPERATURE', -53.663)\n", - " ('MRO:OPTICAL_BENCH_TEMPERATURE', -42.348)\n", - " ('MRO:SPECTROMETER_HOUSING_TEMP', -65.178)\n", - " ('MRO:SPHERE_TEMPERATURE', -42.484)\n", - " ('MRO:FPE_TEMPERATURE', 5.269)\n", - " ('PRODUCT_VERSION_ID', '3')\n", - " ('SOURCE_PRODUCT_ID',\n", - " frozenset({'CDR400991452611_SP0042501S_3',\n", - " 'CDR400991452639_BP0042500S_3',\n", - " 'CDR400991452639_BP1018400S_3',\n", - " 'CDR400991454611_BI1018400S_3',\n", - " 'CDR400991454611_UB1018400S_3',\n", - " 'CDR400991454737_BI1018400S_3',\n", - " 'CDR400991454737_UB1018400S_3',\n", - " 'CDR410000000000_SH0000001S_4',\n", - " 'CDR410000000000_SS0000001S_2',\n", - " 'CDR450924300802_DM0000000S_3',\n", - " 'CDR450924300802_NU1000001S_3',\n", - " 'CDR450924300802_SF0000000S_2',\n", - " 'CDR450924300802_TD0000000S_2',\n", - " 'CDR6_0_0991440032_ST_J_0',\n", - " 'CDR6_1_0000000000_AS_S_0',\n", - " 'CDR6_1_0000000000_DB_S_0',\n", - " 'CDR6_1_0000000000_EB_S_0',\n", - " 'CDR6_1_0000000000_GH_S_1',\n", - " 'CDR6_1_0000000000_HD_J_1',\n", - " 'CDR6_1_0000000000_HK_J_1',\n", - " 'CDR6_1_0000000000_HV_J_1',\n", - " 'CDR6_1_0000000000_LC_S_1',\n", - " 'CDR6_1_0000000000_LI_J_0',\n", - " 'CDR6_1_0000000000_VL_S_0',\n", - " 'CDR6_2_0835294537_PP_S_0',\n", - " 'FRT0001E5C3_07_SC124S_EDR0'}))\n", - " ('MRO:INVALID_PIXEL_LOCATION', frozenset())\n", - " ('PRODUCER_INSTITUTION_NAME',\n", - " 'JOHNS HOPKINS UNIVERSITY APPLIED PHYSICS LABORATORY')\n", - " ('SOFTWARE_NAME', 'crism_imagecal')\n", - " ('SOFTWARE_VERSION_ID', '2.5.3')\n", - " ('TARGET_CENTER_DISTANCE', Quantity(value=None, units='KM'))\n", - " ('SOLAR_DISTANCE', Quantity(value=213788591.232902, units='KM'))\n", - " ('SOLAR_LONGITUDE', 303.590051)\n", - " ('SHUTTER_MODE_ID', 'OPEN')\n", - " ('LIGHT_SOURCE_NAME', 'NONE')\n", - " ('MRO:CALIBRATION_LAMP_STATUS', 'OFF')\n", - " ('MRO:CALIBRATION_LAMP_LEVEL', 'N/A')\n", - " ('PIXEL_AVERAGING_WIDTH', 1)\n", - " ('MRO:INSTRUMENT_POINTING_MODE', 'DYNAMIC POINTING')\n", - " ('SCAN_MODE_ID', 'SHORT')\n", - " ('MRO:FRAME_RATE', Quantity(value=3.75, units='HZ'))\n", - " ('MRO:EXPOSURE_PARAMETER', 184)\n", - " ('SAMPLING_MODE_ID', 'HYPERSPEC')\n", - " ('COMPRESSION_TYPE', 'NONE')\n", - " ('MRO:WAVELENGTH_FILTER', '0')\n", - " ('MRO:WAVELENGTH_FILE_NAME', 'CDR450924300802_WA0000000S_2.IMG')\n", - " ('MRO:PIXEL_PROC_FILE_NAME', 'CDR6_2_0835294537_PP_S_0.TAB')\n", - " ('MRO:INV_LOOKUP_TABLE_FILE_NAME', 'CDR6_1_0000000000_LI_J_0.TAB')\n", - " ('MRO:ATMO_CORRECTION_FLAG', 'OFF')\n", - " ('MRO:THERMAL_CORRECTION_MODE', 'OFF')\n", - " ('MRO:PHOTOCLIN_CORRECTION_FLAG', 'OFF')\n", - " ('MRO:SPATIAL_RESAMPLING_FLAG', 'OFF')\n", - " ('MRO:SPATIAL_RESAMPLING_FILE', 'N/A')\n", - " ('MRO:SPATIAL_RESCALING_FLAG', 'OFF')\n", - " ('MRO:SPATIAL_RESCALING_FILE', 'N/A')\n", - " ('MRO:SPECTRAL_RESAMPLING_FLAG', 'OFF')\n", - " ('MRO:SPECTRAL_RESAMPLING_FILE', 'N/A')\n", - " ('MRO:HDF_SOFTWARE_NAME', 'crismhdf')\n", - " ('MRO:HDF_SOFTWARE_VERSION_ID', '1.0.5')\n", - " ('MRO:IF_MIN_VALUE', 0.0)\n", - " ('MRO:IF_MAX_VALUE', 1.0)\n", - " ('MRO:TRACE_MIN_VALUE', 0.01)\n", - " ('MRO:TRACE_MAX_VALUE', 100.0)\n", - " ('MRO:REFZ_MEDIAN_BOX_WIDTH', 15)\n", - " ('MRO:REFZ_SMOOTH_BOX_WIDTH', 5)\n", - " ('MRO:FRAM_STAT_MEDIAN_BOX_WIDTH', 5)\n", - " ('MRO:FRAM_STAT_MIN_DEVIATION', 0.005)\n", - " ('MRO:FRAM_STAT_MEDIAN_CONF_LVL', 0.999999)\n", - " ('MRO:FRAM_STAT_IQR_CONF_LVL', 0.999999)\n", - " ('MRO:RSC_REF_XY_MEDIAN_WIDTH', 15)\n", - " ('MRO:RSC_REF_XY_SMOOTH_WIDTH', 5)\n", - " ('MRO:RSC_REF_YZ_MEDIAN_WIDTH', 15)\n", - " ('MRO:RSC_REF_YZ_SMOOTH_WIDTH', 5)\n", - " ('MRO:RSC_RATIO_XY_MEDIAN_WIDTH', 25)\n", - " ('MRO:RSC_RATIO_XY_SMOOTH_WIDTH', 13)\n", - " ('MRO:RSC_RES_XY_PLY_ORDER', 5)\n", - " ('MRO:RSC_RES_XY_PLY_EXTND_WIDTH', 38)\n", - " ('MRO:LOG_XFORM_NEG_CLIP_VALUE', 'N/A')\n", - " ('MRO:IKF_NUM_REGIONS', 'N/A')\n", - " ('MRO:IKF_START_CHANNEL', ['N/A', 'N/A'])\n", - " ('MRO:IKF_STOP_CHANNEL', ['N/A', 'N/A'])\n", - " ('MRO:IKF_CONFIDENCE_LEVEL', ['N/A', 'N/A'])\n", - " ('MRO:IKF_WEIGHTING_STDDEV', ['N/A', 'N/A'])\n", - " ('MRO:IKF_KERNEL_SIZE_X', ['N/A', 'N/A'])\n", - " ('MRO:IKF_KERNEL_SIZE_Y', ['N/A', 'N/A'])\n", - " ('MRO:IKF_KERNEL_SIZE_Z', ['N/A', 'N/A'])\n", - " ('MRO:IKF_MODEL_ORDER_X', ['N/A', 'N/A'])\n", - " ('MRO:IKF_MODEL_ORDER_Y', ['N/A', 'N/A'])\n", - " ('MRO:IKF_MODEL_ORDER_Z', ['N/A', 'N/A'])\n", - " ('FILE',\n", - " {'FILE_RECORDS': 108,\n", - " 'IMAGE': {'BANDS': 107,\n", - " 'BAND_STORAGE_TYPE': 'LINE_INTERLEAVED',\n", - " 'LINES': 1,\n", - " 'LINE_SAMPLES': 640,\n", - " 'SAMPLE_BITS': 32,\n", - " 'SAMPLE_TYPE': 'PC_REAL',\n", - " 'UNIT': 'I_OVER_F'},\n", - " 'RECORD_BYTES': 2560,\n", - " 'RECORD_TYPE': 'FIXED_LENGTH',\n", - " 'ROWNUM_TABLE': {'COLUMN': {'BIT_MASK': 511,\n", - " 'BYTES': 2,\n", - " 'COLUMN_NUMBER': 1,\n", - " 'DATA_TYPE': 'MSB_UNSIGNED_INTEGER',\n", - " 'DESCRIPTION': 'Detector row number from which '\n", - " 'the data was taken.',\n", - " 'NAME': 'DETECTOR_ROW_NUMBER',\n", - " 'START_BYTE': 1},\n", - " 'COLUMNS': 1,\n", - " 'DESCRIPTION': 'The detector is subsampled in the spectral '\n", - " 'direction by selecting specific rows to be '\n", - " 'downlinked. This table provides a list of '\n", - " 'the rows selected for all frames in this '\n", - " 'multidimensional image cube.',\n", - " 'INTERCHANGE_FORMAT': 'BINARY',\n", - " 'NAME': 'SELECTED ROWS FROM DETECTOR',\n", - " 'ROWS': 107,\n", - " 'ROW_BYTES': 2},\n", - " '^IMAGE': 'frt0001e5c3_07_if124s_trr3_cropped.img',\n", - " '^ROWNUM_TABLE': ['frt0001e5c3_07_if124s_trr3_cropped.img', 108]})\n", - " ('FILE',\n", - " {'FILE_RECORDS': 420,\n", - " 'RECORD_BYTES': 1221,\n", - " 'RECORD_TYPE': 'FIXED_LENGTH',\n", - " 'TRDR_HK_TABLE': 0,\n", - " '^TRDR_HK_TABLE': 0})\n", - "])" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "header" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/isis/notebooks/crop_kaguya.ipynb b/isis/notebooks/crop_kaguya.ipynb index 17deb1e8b1..e18806b614 100644 --- a/isis/notebooks/crop_kaguya.ipynb +++ b/isis/notebooks/crop_kaguya.ipynb @@ -3,7 +3,9 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pvl\n", @@ -18,7 +20,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "#kaguya_file = '/scratch/arsanders/kaguyatc/TC2S2B0_01_03043N107E3384.img'\n", @@ -30,7 +34,9 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "header = pvl.load(kaguya_file)" @@ -126,7 +132,9 @@ { "cell_type": "code", "execution_count": 6, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(kaguya_file, 'rb') as f:\n", @@ -150,7 +158,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "n_lines = 40\n", @@ -160,7 +170,9 @@ { "cell_type": "code", "execution_count": 8, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_data = []\n", @@ -225,7 +237,9 @@ { "cell_type": "code", "execution_count": 11, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", @@ -242,7 +256,9 @@ { "cell_type": "code", "execution_count": 12, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_fn, image_ext = os.path.splitext(image_file)\n", @@ -292,7 +308,9 @@ { "cell_type": "code", "execution_count": 14, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(mini_image_fn, 'ab+') as f:\n", @@ -304,7 +322,9 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [] } @@ -325,7 +345,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.0" + "version": "3.5.3" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_lo.ipynb b/isis/notebooks/crop_lo.ipynb index 193003f750..e62a2f5ce5 100644 --- a/isis/notebooks/crop_lo.ipynb +++ b/isis/notebooks/crop_lo.ipynb @@ -18,7 +18,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "lo_file = '/home/arsanders/testData/lo/case03/input/3083_med_tohi_isis2.cub'" @@ -27,7 +29,9 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "header = pvl.load(lo_file)" @@ -204,7 +208,9 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(lo_file, 'rb') as f:\n", @@ -216,7 +222,9 @@ { "cell_type": "code", "execution_count": 6, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "n_lines = 5\n", @@ -226,7 +234,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_data = []\n", @@ -244,36 +254,16 @@ { "data": { "text/plain": [ - "(5, 100)" + "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" - } - ], - "source": [ - "image_data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -290,239 +280,56 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", - " def encode_time(self, value):\n", - " if value.microsecond:\n", - " second = u'%02d.%06d' % (value.second, value.microsecond)\n", - " else:\n", - " second = u'%02d' % value.second\n", - "\n", - " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, + "execution_count": 9, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_fn, image_ext = os.path.splitext(lo_file)\n", - "crop = '_cropped'\n", "mini_image_fn = image_fn + crop + image_ext\n", "mini_image_bn = os.path.basename(mini_image_fn)\n", "\n", "grammar = pvl.grammar.ISISGrammar()\n", "grammar.comments+=((\"#\", \"\\n\"), )\n", - "encoder = RealIsisCubeLabelEncoder()\n", + "encoder = pvl.encoder.ISISEncoder()\n", "\n", "\n", "# Overwrite the number of lines in the label\n", - "\n", "header['^QUBE'] = pvl.collections.Units(len(pvl.dumps(header, encoder=encoder, grammar=grammar)), 'BYTES')\n", "header['QUBE']['CORE_ITEMS'][1] = n_lines" ] }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "PVLModule([\n", - " ('CCSD3ZF0000100000001NJPL3IF0PDS200000001', 'SFDU_LABEL')\n", - " ('RECORD_TYPE', 'FIXED_LENGTH')\n", - " ('RECORD_BYTES', 512)\n", - " ('FILE_RECORDS', 167)\n", - " ('LABEL_RECORDS', 25)\n", - " ('FILE_STATE', 'CLEAN')\n", - " ('^HISTORY', 26)\n", - " ('HISTORY', PVLObject([]))\n", - " ('^QUBE', Units(value=5425, units='BYTES'))\n", - " ('QUBE',\n", - " {'AXES': 3,\n", - " 'AXIS_NAME': ['SAMPLE', 'LINE', 'BAND'],\n", - " 'BAND_BIN': {'BAND_BIN_CENTER': 1.0,\n", - " 'BAND_BIN_ORIGINAL_BAND': 1,\n", - " 'BAND_BIN_UNIT': 'NONE'},\n", - " 'CORE_BASE': 0.0,\n", - " 'CORE_HIGH_INSTR_SATURATION': 255,\n", - " 'CORE_HIGH_REPR_SATURATION': 255,\n", - " 'CORE_ITEMS': [100, 5, 1],\n", - " 'CORE_ITEM_BYTES': 1,\n", - " 'CORE_ITEM_TYPE': 'PC_UNSIGNED_INTEGER',\n", - " 'CORE_LOW_INSTR_SATURATION': 0,\n", - " 'CORE_LOW_REPR_SATURATION': 0,\n", - " 'CORE_MULTIPLIER': 1.0,\n", - " 'CORE_NAME': 'RAW_DATA_NUMBER',\n", - " 'CORE_NULL': 0,\n", - " 'CORE_UNIT': 'NONE',\n", - " 'CORE_VALID_MINIMUM': 1,\n", - " 'IMAGE_NUMBER': '308300',\n", - " 'ISIS_GEOMETRY': {'BASE_KERNELS': ['/usgs/cpkgs/isis2/lsb/isisd/data/mk98264a.tls',\n", - " '/usgs/cpkgs/isis2/lsb/isisd/lodata/lo1_fict.tsc',\n", - " '/usgs/cpkgs/isis2/lsb/isisd/lodata/lo2_fict.tsc',\n", - " '/usgs/cpkgs/isis2/lsb/isisd/lodata/lo3_fict.tsc',\n", - " '/usgs/cpkgs/isis2/lsb/isisd/lodata/lo4_fict.tsc',\n", - " '/usgs/cpkgs/isis2/lsb/isisd/lodata/lo5_fict.tsc',\n", - " '/usgs/cpkgs/isis2/lsb/isisd/data/pck00005.tpc'],\n", - " 'CAMERA_KERNELS': '/farm/proc1/lo/isislodata/lo3_support.bck',\n", - " 'CAMERA_KERNEL_TYPES': 1,\n", - " 'KERNLST': '/farm/proc1/lo/isislodata/lo3_kernels.def.1',\n", - " 'LEV_SOFTWARE_VERSION': 'LO_MED_1.0',\n", - " 'NAIF_SOFTWARE_VERSION': 'CSPICE_N0058',\n", - " 'SPACECRAFT_KERNELS': ['/usgs/cpkgs/isis2/lsb/isisd/data/de405.bsp',\n", - " '/farm/proc1/lo/isislodata/lo3_support.bsp']},\n", - " 'ISIS_INGESTION': {'LO_SLICE_VERSION': '07_JUL_2003',\n", - " 'SCAN_CREATION_DATE': '2004-02-05T10:31:07',\n", - " 'SCAN_DENSITY_RANGE': '0.6_TO_3.0',\n", - " 'SCAN_RESOLUTION': '25um',\n", - " 'TIF2ISIS_VERSION': '22_FEB_2002'},\n", - " 'ISIS_INSTRUMENT': {'BORESIGHT_LINE': 4550.455,\n", - " 'BORESIGHT_SAMPLE': 5427.039,\n", - " 'FIDUCIAL_COORD_MICRON': '50um',\n", - " 'FRAME_NUMBER': '3083',\n", - " 'INSTPARS': '/farm/proc1/lo/isislodata/lo_parameters.def.4',\n", - " 'INSTRUMENT_ID': '80_MM_FOCAL_LENGTH_CAMERA',\n", - " 'LINES': 8750,\n", - " 'SAMPLES': 11800,\n", - " 'SPACECRAFT_NAME': 'LUNAR_ORBITER_3',\n", - " 'START_TIME': '1967-02-17T21:09:27.610'},\n", - " 'ISIS_MOSAIC': {'IMAGE_NUMBER': ['308309030',\n", - " '308309040',\n", - " '308309050',\n", - " '308309060',\n", - " '308309070',\n", - " '308309080',\n", - " '308309090',\n", - " '308309110',\n", - " '308309120',\n", - " '308309130',\n", - " '308309140',\n", - " '308309150',\n", - " '308309160',\n", - " '308309170',\n", - " '308309180',\n", - " '308309190',\n", - " '308309210',\n", - " '308309220',\n", - " '308309230',\n", - " '308309240',\n", - " '308309250',\n", - " '308309260',\n", - " '308309271',\n", - " '308309280',\n", - " '308309300',\n", - " '308309310',\n", - " '308309320'],\n", - " 'INSTRUMENT_ID': ['80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA',\n", - " '80_MM_FOCAL_LENGTH_CAMERA'],\n", - " 'SPACECRAFT_NAME': ['LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3',\n", - " 'LUNAR_ORBITER_3']},\n", - " 'ISIS_TARGET': {'LATITUDE_SYSTEM': 'OGRAPHIC',\n", - " 'LONGITUDE_SYSTEM': 360,\n", - " 'TARGDEF': '/usgs/cpkgs/isis2/lsb/isisd/data/targets/moon_east.def.1',\n", - " 'TARGET_NAME': 'MOON'},\n", - " 'OUTPUT_MICRON': '50um',\n", - " 'PRODUCT_ID': '3083M',\n", - " 'SUFFIX_BYTES': 4,\n", - " 'SUFFIX_ITEMS': [0, 0, 0]})\n", - "])" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "header" - ] - }, - { - "cell_type": "code", - "execution_count": 13, + "execution_count": 10, "metadata": {}, "outputs": [ { - "data": { - "text/plain": [ - "'CCSD3ZF0000100000001NJPL3IF0PDS200000001 = SFDU_LABEL\\nRECORD_TYPE = FIXED_LENGTH\\nRECORD_BYTES = 512\\nFILE_RECORDS = 167\\nLABEL_RECORDS = 25\\nFILE_STATE = CLEAN\\n^HISTORY = 26\\nObject = HISTORY\\n\\nEnd_Object = HISTORY\\n^QUBE = 5425 \\nObject = QUBE\\n AXES = 3\\n AXIS_NAME = (SAMPLE, LINE, BAND)\\n CORE_ITEMS = (100, 5, 1)\\n CORE_ITEM_BYTES = 1\\n CORE_ITEM_TYPE = PC_UNSIGNED_INTEGER\\n CORE_BASE = 0.0\\n CORE_MULTIPLIER = 1.0\\n CORE_VALID_MINIMUM = 1\\n CORE_NULL = 0\\n CORE_LOW_REPR_SATURATION = 0\\n CORE_LOW_INSTR_SATURATION = 0\\n CORE_HIGH_INSTR_SATURATION = 255\\n CORE_HIGH_REPR_SATURATION = 255\\n SUFFIX_BYTES = 4\\n SUFFIX_ITEMS = (0, 0, 0)\\n CORE_NAME = RAW_DATA_NUMBER\\n CORE_UNIT = NONE\\n IMAGE_NUMBER = \"308300\"\\n OUTPUT_MICRON = 50um\\n PRODUCT_ID = 3083M\\n Group = BAND_BIN\\n BAND_BIN_UNIT = NONE\\n BAND_BIN_ORIGINAL_BAND = 1\\n BAND_BIN_CENTER = 1.0\\n End_Group = BAND_BIN\\n Group = ISIS_INGESTION\\n TIF2ISIS_VERSION = 22_FEB_2002\\n LO_SLICE_VERSION = 07_JUL_2003\\n SCAN_RESOLUTION = 25um\\n SCAN_DENSITY_RANGE = 0.6_TO_3.0\\n SCAN_CREATION_DATE = \"2004-02-05T10:31:07\"\\n End_Group = ISIS_INGESTION\\n Group = ISIS_MOSAIC\\n SPACECRAFT_NAME = (LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3,\\n LUNAR_ORBITER_3, LUNAR_ORBITER_3, LUNAR_ORBITER_3)\\n INSTRUMENT_ID = (80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA, 80_MM_FOCAL_LENGTH_CAMERA,\\n 80_MM_FOCAL_LENGTH_CAMERA)\\n IMAGE_NUMBER = (\"308309030\", \"308309040\", \"308309050\", \"308309060\",\\n \"308309070\", \"308309080\", \"308309090\", \"308309110\",\\n \"308309120\", \"308309130\", \"308309140\", \"308309150\",\\n \"308309160\", \"308309170\", \"308309180\", \"308309190\",\\n \"308309210\", \"308309220\", \"308309230\", \"308309240\",\\n \"308309250\", \"308309260\", \"308309271\", \"308309280\",\\n \"308309300\", \"308309310\", \"308309320\")\\n End_Group = ISIS_MOSAIC\\n Group = ISIS_INSTRUMENT\\n FIDUCIAL_COORD_MICRON = 50um\\n SPACECRAFT_NAME = LUNAR_ORBITER_3\\n FRAME_NUMBER = \"3083\"\\n INSTRUMENT_ID = 80_MM_FOCAL_LENGTH_CAMERA\\n START_TIME = \"1967-02-17T21:09:27.610\"\\n LINES = 8750\\n SAMPLES = 11800\\n BORESIGHT_LINE = 4550.455\\n BORESIGHT_SAMPLE = 5427.039\\n INSTPARS = /farm/proc1/lo/isislodata/lo_parameters.def.4\\n End_Group = ISIS_INSTRUMENT\\n Group = ISIS_TARGET\\n TARGET_NAME = MOON\\n LATITUDE_SYSTEM = OGRAPHIC\\n LONGITUDE_SYSTEM = 360\\n TARGDEF = /usgs/cpkgs/isis2/lsb/isisd/data/targets/moon_east.def.1\\n End_Group = ISIS_TARGET\\n Group = ISIS_GEOMETRY\\n BASE_KERNELS = (/usgs/cpkgs/isis2/lsb/isisd/data/mk98264a.tls,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo1_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo2_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo3_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo4_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/lodata/lo5_fict.tsc,\\n /usgs/cpkgs/isis2/lsb/isisd/data/pck00005.tpc)\\n SPACECRAFT_KERNELS = (/usgs/cpkgs/isis2/lsb/isisd/data/de405.bsp,\\n /farm/proc1/lo/isislodata/lo3_support.bsp)\\n CAMERA_KERNELS = /farm/proc1/lo/isislodata/lo3_support.bck\\n CAMERA_KERNEL_TYPES = 1\\n KERNLST = /farm/proc1/lo/isislodata/lo3_kernels.def.1\\n NAIF_SOFTWARE_VERSION = CSPICE_N0058\\n LEV_SOFTWARE_VERSION = LO_MED_1.0\\n End_Group = ISIS_GEOMETRY\\nEnd_Object = QUBE\\nEND'" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" + "ename": "NameError", + "evalue": "name 'crop' is not defined", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mlabel_fn\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel_ext\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mos\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0msplitext\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlo_file\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mout_label\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mlabel_fn\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mcrop\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mlabel_ext\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 3\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4\u001b[0m \u001b[0mpvl\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdump\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mheader\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mout_label\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mencoder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mencoder\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mgrammar\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mgrammar\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mNameError\u001b[0m: name 'crop' is not defined" + ] } ], "source": [ "label_fn, label_ext = os.path.splitext(lo_file)\n", "out_label = label_fn + crop + label_ext\n", "\n", - "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)\n", - "pvl.dumps(header, encoder=encoder, grammar=grammar)" + "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" ] }, { "cell_type": "code", - "execution_count": 14, - "metadata": {}, + "execution_count": null, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(mini_image_fn, 'ab+') as f:\n", @@ -535,16 +342,18 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python autocnet", "language": "python", - "name": "python3" + "name": "autocnet" }, "language_info": { "codemirror_mode": { @@ -556,7 +365,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.0" + "version": "3.7.6" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_lo_reimport.ipynb b/isis/notebooks/crop_lo_reimport.ipynb index 7b1aeb2eeb..f01f4ec702 100644 --- a/isis/notebooks/crop_lo_reimport.ipynb +++ b/isis/notebooks/crop_lo_reimport.ipynb @@ -3,7 +3,9 @@ { "cell_type": "code", "execution_count": 1, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pvl\n", @@ -18,7 +20,9 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "lo_file = '/home/arsanders/testData/lo/reimport/input/3133_h1.pds.img'" @@ -27,7 +31,9 @@ { "cell_type": "code", "execution_count": 3, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "header = pvl.load(lo_file)" @@ -282,7 +288,9 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(lo_file, 'rb') as f:\n", @@ -294,7 +302,9 @@ { "cell_type": "code", "execution_count": 6, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "n_lines = 5\n", @@ -304,7 +314,9 @@ { "cell_type": "code", "execution_count": 7, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_data = []\n", @@ -322,36 +334,16 @@ { "data": { "text/plain": [ - "(5, 151)" + "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" - } - ], - "source": [ - "image_data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -368,25 +360,10 @@ }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, - "outputs": [], - "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", - " def encode_time(self, value):\n", - " if value.microsecond:\n", - " second = u'%02d.%06d' % (value.second, value.microsecond)\n", - " else:\n", - " second = u'%02d' % value.second\n", - "\n", - " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, + "execution_count": 9, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_fn, image_ext = os.path.splitext(lo_file)\n", @@ -396,7 +373,7 @@ "\n", "grammar = pvl.grammar.ISISGrammar()\n", "grammar.comments+=((\"#\", \"\\n\"), )\n", - "encoder = RealIsisCubeLabelEncoder()\n", + "encoder = pvl.encoder.ISISEncoder()\n", "\n", "# Overwrite the number of lines in the label\n", "header['IMAGE']['LINES'] = n_lines\n", @@ -407,262 +384,16 @@ }, { "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "PVLModule([\n", - " ('PDS_VERSION_ID', 'PDS3')\n", - " ('RECORD_TYPE', 'FIXED_LENGTH')\n", - " ('RECORD_BYTES', 604)\n", - " ('FILE_RECORDS', 162)\n", - " ('LABEL_RECORDS', 11)\n", - " ('INTERCHANGE_FORMAT', 'BINARY')\n", - " ('^IMAGE', Units(value=5230, units='BYTES'))\n", - " ('DATA_SET_ID', 'LO-L-LO3/4/5-4-CDR-V1.0')\n", - " ('PRODUCT_ID', '3133_H1')\n", - " ('ORIGINAL_PRODUCT_ID', '3133H')\n", - " ('PRODUCT_TYPE', 'CDR')\n", - " ('MISSION_NAME', 'LUNAR ORBITER')\n", - " ('SPACECRAFT_NAME', 'LUNAR_ORBITER_3')\n", - " ('INSTRUMENT_NAME', '24_INCH_FOCAL_LENGTH_CAMERA')\n", - " ('INSTRUMENT_ID', '24INCH_FLC')\n", - " ('TARGET_NAME', 'MOON')\n", - " ('START_TIME',\n", - " datetime.datetime(1967, 2, 20, 8, 14, 28, 610000, tzinfo=datetime.timezone.utc))\n", - " ('IMAGE_NUMBER',\n", - " ['313312921',\n", - " '313312930',\n", - " '313312941',\n", - " '313312950',\n", - " '313312961',\n", - " '313312970',\n", - " '313312990',\n", - " '313313000',\n", - " '313313010',\n", - " '313313020',\n", - " '313313030',\n", - " '313313040',\n", - " '313313051',\n", - " '313313060',\n", - " '313313070',\n", - " '313313090',\n", - " '313313100',\n", - " '313313110',\n", - " '313313120',\n", - " '313313130',\n", - " '313313140',\n", - " '313313150',\n", - " '313313160',\n", - " '313313170',\n", - " '313313190',\n", - " '313313200',\n", - " '313313211',\n", - " '313313220',\n", - " '313313230'])\n", - " ('FRAME_NUMBER', 3133)\n", - " ('LO:FILMSTRIP_SCAN_CREATION_DATE',\n", - " datetime.datetime(2003, 12, 4, 10, 9, 41, tzinfo=datetime.timezone.utc))\n", - " ('LO:FILMSTRIP_SCAN_RESOLUTION', Quantity(value=25, units='micron'))\n", - " ('LO:FILMSTRIP_SCAN_PROCESSING_RESOLUTION', Quantity(value=50, units='micron'))\n", - " ('LO:FIDUCIAL_ID',\n", - " ['1b',\n", - " '2a',\n", - " '23b',\n", - " '47b',\n", - " '48b',\n", - " '72b',\n", - " '73a',\n", - " '93b',\n", - " '94b',\n", - " '34b',\n", - " '96b',\n", - " '117b',\n", - " '118b',\n", - " '143b',\n", - " '144b',\n", - " '167b',\n", - " '168b',\n", - " '189b',\n", - " '190b',\n", - " '99b',\n", - " '193b',\n", - " '194b',\n", - " '213b',\n", - " '214b',\n", - " '239b',\n", - " '263b',\n", - " '264b',\n", - " '286b',\n", - " '236b',\n", - " '283b'])\n", - " ('LO:FIDUCIAL_SAMPLES',\n", - " [Quantity(value=32162.0, units='pixels'),\n", - " Quantity(value=32192.0, units='pixels'),\n", - " Quantity(value=29745.0, units='pixels'),\n", - " Quantity(value=27114.0, units='pixels'),\n", - " Quantity(value=27116.0, units='pixels'),\n", - " Quantity(value=24484.0, units='pixels'),\n", - " Quantity(value=24295.0, units='pixels'),\n", - " Quantity(value=22070.0, units='pixels'),\n", - " Quantity(value=22072.0, units='pixels'),\n", - " Quantity(value=28653.0, units='pixels'),\n", - " Quantity(value=21854.0, units='pixels'),\n", - " Quantity(value=19438.0, units='pixels'),\n", - " Quantity(value=19441.0, units='pixels'),\n", - " Quantity(value=16593.0, units='pixels'),\n", - " Quantity(value=16593.0, units='pixels'),\n", - " Quantity(value=13961.0, units='pixels'),\n", - " Quantity(value=13960.0, units='pixels'),\n", - " Quantity(value=11551.0, units='pixels'),\n", - " Quantity(value=11548.0, units='pixels'),\n", - " Quantity(value=21412.0, units='pixels'),\n", - " Quantity(value=11114.0, units='pixels'),\n", - " Quantity(value=11109.0, units='pixels'),\n", - " Quantity(value=8918.0, units='pixels'),\n", - " Quantity(value=8914.0, units='pixels'),\n", - " Quantity(value=6070.0, units='pixels'),\n", - " Quantity(value=3440.0, units='pixels'),\n", - " Quantity(value=3436.0, units='pixels'),\n", - " Quantity(value=1027.0, units='pixels'),\n", - " Quantity(value=6505.0, units='pixels'),\n", - " Quantity(value=1248.0, units='pixels')])\n", - " ('LO:FIDUCIAL_LINES',\n", - " [Quantity(value=8510.0, units='pixels'),\n", - " Quantity(value=597.0, units='pixels'),\n", - " Quantity(value=8505.0, units='pixels'),\n", - " Quantity(value=8506.0, units='pixels'),\n", - " Quantity(value=589.0, units='pixels'),\n", - " Quantity(value=587.0, units='pixels'),\n", - " Quantity(value=8504.0, units='pixels'),\n", - " Quantity(value=8502.0, units='pixels'),\n", - " Quantity(value=583.0, units='pixels'),\n", - " Quantity(value=590.0, units='pixels'),\n", - " Quantity(value=587.0, units='pixels'),\n", - " Quantity(value=8496.0, units='pixels'),\n", - " Quantity(value=581.0, units='pixels'),\n", - " Quantity(value=8498.0, units='pixels'),\n", - " Quantity(value=584.0, units='pixels'),\n", - " Quantity(value=8496.0, units='pixels'),\n", - " Quantity(value=581.0, units='pixels'),\n", - " Quantity(value=8500.0, units='pixels'),\n", - " Quantity(value=579.0, units='pixels'),\n", - " Quantity(value=8495.0, units='pixels'),\n", - " Quantity(value=8493.0, units='pixels'),\n", - " Quantity(value=580.0, units='pixels'),\n", - " Quantity(value=8496.0, units='pixels'),\n", - " Quantity(value=584.0, units='pixels'),\n", - " Quantity(value=8493.0, units='pixels'),\n", - " Quantity(value=8497.0, units='pixels'),\n", - " Quantity(value=580.0, units='pixels'),\n", - " Quantity(value=584.0, units='pixels'),\n", - " Quantity(value=581.0, units='pixels'),\n", - " Quantity(value=8496.0, units='pixels')])\n", - " ('LO:FIDUCIAL_COORDINATE_MICRON', Quantity(value=50, units='um'))\n", - " ('LO:FIDUCIAL_X_COORDINATES',\n", - " [Quantity(value=-108.168, units='mm'),\n", - " Quantity(value=-108.339, units='mm'),\n", - " Quantity(value=-91.403, units='mm'),\n", - " Quantity(value=-73.101, units='mm'),\n", - " Quantity(value=-73.046, units='mm'),\n", - " Quantity(value=-54.733, units='mm'),\n", - " Quantity(value=-53.474, units='mm'),\n", - " Quantity(value=-38.026, units='mm'),\n", - " Quantity(value=-37.964, units='mm'),\n", - " Quantity(value=-83.703, units='mm'),\n", - " Quantity(value=-36.446, units='mm'),\n", - " Quantity(value=-19.716, units='mm'),\n", - " Quantity(value=-19.684, units='mm'),\n", - " Quantity(value=0.08, units='mm'),\n", - " Quantity(value=0.122, units='mm'),\n", - " Quantity(value=18.376, units='mm'),\n", - " Quantity(value=18.427, units='mm'),\n", - " Quantity(value=35.174, units='mm'),\n", - " Quantity(value=35.198, units='mm'),\n", - " Quantity(value=-33.441, units='mm'),\n", - " Quantity(value=38.211, units='mm'),\n", - " Quantity(value=38.23, units='mm'),\n", - " Quantity(value=53.474, units='mm'),\n", - " Quantity(value=53.498, units='mm'),\n", - " Quantity(value=73.296, units='mm'),\n", - " Quantity(value=91.568, units='mm'),\n", - " Quantity(value=91.579, units='mm'),\n", - " Quantity(value=108.352, units='mm'),\n", - " Quantity(value=70.25, units='mm'),\n", - " Quantity(value=106.844, units='mm')])\n", - " ('LO:FIDUCIAL_Y_COORDINATES',\n", - " [Quantity(value=27.476, units='mm'),\n", - " Quantity(value=-27.488, units='mm'),\n", - " Quantity(value=27.483, units='mm'),\n", - " Quantity(value=27.498, units='mm'),\n", - " Quantity(value=-27.497, units='mm'),\n", - " Quantity(value=-27.488, units='mm'),\n", - " Quantity(value=27.5, units='mm'),\n", - " Quantity(value=27.496, units='mm'),\n", - " Quantity(value=-27.49, units='mm'),\n", - " Quantity(value=-27.494, units='mm'),\n", - " Quantity(value=-27.488, units='mm'),\n", - " Quantity(value=27.495, units='mm'),\n", - " Quantity(value=-27.494, units='mm'),\n", - " Quantity(value=27.505, units='mm'),\n", - " Quantity(value=-27.493, units='mm'),\n", - " Quantity(value=27.496, units='mm'),\n", - " Quantity(value=-27.49, units='mm'),\n", - " Quantity(value=27.492, units='mm'),\n", - " Quantity(value=-27.486, units='mm'),\n", - " Quantity(value=27.499, units='mm'),\n", - " Quantity(value=27.488, units='mm'),\n", - " Quantity(value=-27.485, units='mm'),\n", - " Quantity(value=27.49, units='mm'),\n", - " Quantity(value=-27.487, units='mm'),\n", - " Quantity(value=27.491, units='mm'),\n", - " Quantity(value=27.474, units='mm'),\n", - " Quantity(value=-27.49, units='mm'),\n", - " Quantity(value=-27.481, units='mm'),\n", - " Quantity(value=-27.488, units='mm'),\n", - " Quantity(value=27.479, units='mm')])\n", - " ('PRODUCER_INSTITUTION_NAME', 'U.S. GEOLOGICAL SURVEY')\n", - " ('PRODUCT_CREATION_TIME',\n", - " datetime.datetime(2010, 2, 12, 1, 12, 12, tzinfo=datetime.timezone.utc))\n", - " ('IMAGE',\n", - " {'CORE_HIGH_INSTR_SATURATION': 4286578686,\n", - " 'CORE_HIGH_REPR_SATURATION': 4286578687,\n", - " 'CORE_LOW_INSTR_SATURATION': 4286578685,\n", - " 'CORE_LOW_REPR_SATURATION': 4286578684,\n", - " 'CORE_NULL': 4286578683,\n", - " 'LINES': 5,\n", - " 'LINE_SAMPLES': 151,\n", - " 'MAXIMUM': 170.0,\n", - " 'MINIMUM': 29.0,\n", - " 'SAMPLE_BITS': 32,\n", - " 'SAMPLE_BIT_MASK': 4294967295,\n", - " 'SAMPLE_TYPE': 'PC_REAL'})\n", - "])" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "header" - ] - }, - { - "cell_type": "code", - "execution_count": 17, + "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ - "'PDS_VERSION_ID = PDS3\\nRECORD_TYPE = FIXED_LENGTH\\nRECORD_BYTES = 604\\nFILE_RECORDS = 162\\nLABEL_RECORDS = 11\\nINTERCHANGE_FORMAT = BINARY\\n^IMAGE = 5230 \\nDATA_SET_ID = LO-L-LO3/4/5-4-CDR-V1.0\\nPRODUCT_ID = 3133_H1\\nORIGINAL_PRODUCT_ID = 3133H\\nPRODUCT_TYPE = CDR\\nMISSION_NAME = \"LUNAR ORBITER\"\\nSPACECRAFT_NAME = LUNAR_ORBITER_3\\nINSTRUMENT_NAME = 24_INCH_FOCAL_LENGTH_CAMERA\\nINSTRUMENT_ID = 24INCH_FLC\\nTARGET_NAME = MOON\\nSTART_TIME = 1967-02-20T08:14:28.610000\\nIMAGE_NUMBER = (\"313312921\", \"313312930\", \"313312941\", \"313312950\",\\n \"313312961\", \"313312970\", \"313312990\", \"313313000\", \"313313010\",\\n \"313313020\", \"313313030\", \"313313040\", \"313313051\", \"313313060\",\\n \"313313070\", \"313313090\", \"313313100\", \"313313110\", \"313313120\",\\n \"313313130\", \"313313140\", \"313313150\", \"313313160\", \"313313170\",\\n \"313313190\", \"313313200\", \"313313211\", \"313313220\", \"313313230\")\\nFRAME_NUMBER = 3133\\nLO:FILMSTRIP_SCAN_CREATION_DATE = 2003-12-04T10:09:41\\nLO:FILMSTRIP_SCAN_RESOLUTION = 25 \\nLO:FILMSTRIP_SCAN_PROCESSING_RESOLUTION = 50 \\nLO:FIDUCIAL_ID = (1b, 2a, 23b, 47b, 48b, 72b, 73a, 93b, 94b, 34b, 96b, 117b,\\n 118b, 143b, 144b, 167b, 168b, 189b, 190b, 99b, 193b, 194b,\\n 213b, 214b, 239b, 263b, 264b, 286b, 236b, 283b)\\nLO:FIDUCIAL_SAMPLES = (32162.0 , 32192.0 , 29745.0 ,\\n 27114.0 , 27116.0 , 24484.0 ,\\n 24295.0 , 22070.0 , 22072.0 ,\\n 28653.0 , 21854.0 , 19438.0 ,\\n 19441.0 , 16593.0 , 16593.0 ,\\n 13961.0 , 13960.0 , 11551.0 ,\\n 11548.0 , 21412.0 , 11114.0 ,\\n 11109.0 , 8918.0 , 8914.0 ,\\n 6070.0 , 3440.0 , 3436.0 , 1027.0\\n , 6505.0 , 1248.0 )\\nLO:FIDUCIAL_LINES = (8510.0 , 597.0 , 8505.0 , 8506.0\\n , 589.0 , 587.0 , 8504.0 ,\\n 8502.0 , 583.0 , 590.0 , 587.0\\n , 8496.0 , 581.0 , 8498.0 ,\\n 584.0 , 8496.0 , 581.0 , 8500.0\\n , 579.0 , 8495.0 , 8493.0 ,\\n 580.0 , 8496.0 , 584.0 , 8493.0\\n , 8497.0 , 580.0 , 584.0 ,\\n 581.0 , 8496.0 )\\nLO:FIDUCIAL_COORDINATE_MICRON = 50 \\nLO:FIDUCIAL_X_COORDINATES = (-108.168 , -108.339 , -91.403 ,\\n -73.101 , -73.046 , -54.733 , -53.474\\n , -38.026 , -37.964 , -83.703 ,\\n -36.446 , -19.716 , -19.684 , 0.08\\n , 0.122 , 18.376 , 18.427 , 35.174\\n , 35.198 , -33.441 , 38.211 , 38.23\\n , 53.474 , 53.498 , 73.296 , 91.568\\n , 91.579 , 108.352 , 70.25 ,\\n 106.844 )\\nLO:FIDUCIAL_Y_COORDINATES = (27.476 , -27.488 , 27.483 , 27.498\\n , -27.497 , -27.488 , 27.5 , 27.496\\n , -27.49 , -27.494 , -27.488 ,\\n 27.495 , -27.494 , 27.505 , -27.493\\n , 27.496 , -27.49 , 27.492 ,\\n -27.486 , 27.499 , 27.488 , -27.485\\n , 27.49 , -27.487 , 27.491 , 27.474\\n , -27.49 , -27.481 , -27.488 ,\\n 27.479 )\\nPRODUCER_INSTITUTION_NAME = \"U.S. GEOLOGICAL SURVEY\"\\nPRODUCT_CREATION_TIME = 2010-02-12T01:12:12\\nObject = IMAGE\\n LINES = 5\\n LINE_SAMPLES = 151\\n SAMPLE_TYPE = PC_REAL\\n SAMPLE_BITS = 32\\n SAMPLE_BIT_MASK = 4294967295\\n MINIMUM = 29.0\\n MAXIMUM = 170.0\\n CORE_NULL = 4286578683\\n CORE_LOW_REPR_SATURATION = 4286578684\\n CORE_LOW_INSTR_SATURATION = 4286578685\\n CORE_HIGH_REPR_SATURATION = 4286578687\\n CORE_HIGH_INSTR_SATURATION = 4286578686\\nEnd_Object = IMAGE\\nEND'" + "5230" ] }, - "execution_count": 17, + "execution_count": 10, "metadata": {}, "output_type": "execute_result" } @@ -671,14 +402,15 @@ "label_fn, label_ext = os.path.splitext(lo_file)\n", "out_label = label_fn + crop + label_ext\n", "\n", - "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)\n", - "pvl.dumps(header, encoder=encoder, grammar=grammar)" + "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" ] }, { "cell_type": "code", - "execution_count": 18, - "metadata": {}, + "execution_count": 11, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(mini_image_fn, 'ab+') as f:\n", @@ -691,16 +423,18 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python autocnet", "language": "python", - "name": "python3" + "name": "autocnet" }, "language_info": { "codemirror_mode": { @@ -712,7 +446,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.0" + "version": "3.7.6" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_marci.ipynb b/isis/notebooks/crop_marci.ipynb index 2ed92a32a1..23417cc9f5 100644 --- a/isis/notebooks/crop_marci.ipynb +++ b/isis/notebooks/crop_marci.ipynb @@ -18,11 +18,11 @@ { "cell_type": "code", "execution_count": 2, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ - "#kaguya_file = '/scratch/arsanders/kaguyatc/TC2S2B0_01_03043N107E3384.img'\n", - "#kaguya_file = '/home/arsanders/testData/apollo/AS15-M-1450.lbl'\n", "marci_file = '/home/arsanders/testData/marci/T02_001251_1292_MU_00N237W.IMG'\n", "image_file = marci_file" ] @@ -69,7 +69,7 @@ " ('LINE_EXPOSURE_DURATION', Quantity(value=3129.737, units='MSEC'))\n", " ('SAMPLING_FACTOR', 8)\n", " ('SAMPLE_FIRST_PIXEL', 0)\n", - " ('FILTER_NAME', frozenset({'SHORT_UV', 'LONG_UV'}))\n", + " ('FILTER_NAME', frozenset({'LONG_UV', 'SHORT_UV'}))\n", " ('RATIONALE_DESC', 'global map swath')\n", " ('DATA_QUALITY_DESC', 'ERROR')\n", " ('ORBIT_NUMBER', 1251)\n", @@ -98,7 +98,9 @@ { "cell_type": "code", "execution_count": 4, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(marci_file, 'rb') as f:\n", @@ -117,7 +119,9 @@ { "cell_type": "code", "execution_count": 5, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "n_lines = 100\n", @@ -127,7 +131,9 @@ { "cell_type": "code", "execution_count": 6, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_data = []\n", @@ -147,7 +153,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 7, @@ -156,7 +162,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ "
" ] @@ -174,24 +180,9 @@ { "cell_type": "code", "execution_count": 8, - "metadata": {}, - "outputs": [], - "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", - " def encode_time(self, value):\n", - " if value.microsecond:\n", - " second = u'%02d.%06d' % (value.second, value.microsecond)\n", - " else:\n", - " second = u'%02d' % value.second\n", - "\n", - " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_fn, image_ext = os.path.splitext(image_file)\n", @@ -201,7 +192,7 @@ "\n", "grammar = pvl.grammar.ISISGrammar()\n", "grammar.comments+=((\"#\", \"\\n\"), )\n", - "encoder = RealIsisCubeLabelEncoder()\n", + "encoder = pvl.encoder.ISISEncoder()\n", "\n", "# Overwrite the number of lines in the label\n", "header['IMAGE']['LINES'] = n_lines\n", @@ -216,7 +207,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 9, "metadata": {}, "outputs": [ { @@ -225,7 +216,7 @@ "1796" ] }, - "execution_count": 10, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } @@ -239,29 +230,32 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, + "execution_count": 10, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ - "with open(mini_image_fn, 'ab+') as f:\n", + "with open(mini_image_fn, 'wb+') as f:\n", " b_reduced_image_data = image_data.tobytes()\n", - " #f.seek(0, 2)\n", " f.write(b_reduced_image_data)" ] }, { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python autocnet", "language": "python", - "name": "python3" + "name": "autocnet" }, "language_info": { "codemirror_mode": { @@ -273,7 +267,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.0" + "version": "3.7.6" } }, "nbformat": 4, diff --git a/isis/notebooks/crop_mimap.ipynb b/isis/notebooks/crop_mimap.ipynb index 0907d4cbc0..c8d66a558f 100755 --- a/isis/notebooks/crop_mimap.ipynb +++ b/isis/notebooks/crop_mimap.ipynb @@ -2,8 +2,10 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, - "metadata": {}, + "execution_count": null, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "import pvl\n", @@ -17,523 +19,44 @@ }, { "cell_type": "code", - "execution_count": 2, - "metadata": {}, + "execution_count": null, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ - "kaguya_file = '/Users/kdlee/builds/ISIS3/isis/tests/data/mimap2isis/MI_MAP_02_N65E328N64E329SC.img'\n", - "image_file = kaguya_file" + "mimap_file = '/Users/kdlee/builds/ISIS3/isis/tests/data/mimap2isis/MI_MAP_02_N65E328N64E329SC.img'\n", + "image_file = mimap_file" ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "PVLModule([\n", - " ('PDS_VERSION_ID', 'PDS3')\n", - " ('RECORD_TYPE', 'UNDEFINED')\n", - " ('FILE_NAME', 'MI_MAP_02_N65E328N64E329SC.img')\n", - " ('PRODUCT_ID', 'MI_MAP_02_N65E328N64E329SC')\n", - " ('DATA_FORMAT', 'PDS')\n", - " ('^GEOMETRIC_DATA_ALTITUDE', Quantity(value=19800, units='BYTES'))\n", - " ('^IMAGE', Quantity(value=16797016, units='BYTES'))\n", - " ('SOFTWARE_NAME', 'RGC_TC_MI')\n", - " ('SOFTWARE_VERSION', '2.10.1')\n", - " ('PROCESS_VERSION_ID', 'MAP')\n", - " ('PRODUCT_CREATION_TIME',\n", - " datetime.datetime(2011, 10, 25, 4, 31, 2, tzinfo=datetime.timezone.utc))\n", - " ('PROGRAM_START_TIME',\n", - " datetime.datetime(2011, 10, 25, 4, 25, 7, tzinfo=datetime.timezone.utc))\n", - " ('PRODUCER_ID', 'LISM')\n", - " ('PRODUCT_SET_ID', 'MI_MAP')\n", - " ('PRODUCT_VERSION_ID', '02')\n", - " ('REGISTERED_PRODUCT', 'Y')\n", - " ('LEVEL2A_FILE_NAME',\n", - " ['MV52A0_02NM04884_004_0030.img',\n", - " 'MV52A0_02NM04883_004_0030.img',\n", - " 'MV52A0_02NM04884_004_0029.img',\n", - " 'MV52A0_02NM04883_004_0029.img',\n", - " 'MV52A0_02NM04884_004_0028.img',\n", - " 'MV52A0_02NM04883_004_0028.img',\n", - " frozenset({'MV22A0_02NL01385_002_0045.img', 'MV22A0_02NL01385_002_0044.img'}),\n", - " frozenset({'MV22A0_02NL01384_003_0045.img', 'MV22A0_02NL01384_003_0046.img'}),\n", - " frozenset({'MV22A0_02NL01385_002_0046.img', 'MV22A0_02NL01385_002_0045.img'}),\n", - " frozenset({'MV22A0_02NL01384_003_0047.img', 'MV22A0_02NL01384_003_0046.img'}),\n", - " frozenset({'MV22A0_02NL01385_002_0046.img',\n", - " 'MV22A0_02NL01385_002_0047.img'})])\n", - " ('SPICE_METAKERNEL_FILE_NAME',\n", - " ['RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_05_LongCK_D_V02_de421_110706.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk',\n", - " 'RGC_INF_TCv401IK_MIv200IK_SPv105IK_RISE100i_04_LongCK_D_de421_101125.mk'])\n", - " ('MISSION_NAME', 'SELENE')\n", - " ('SPACECRAFT_NAME', 'SELENE-M')\n", - " ('DATA_SET_ID', 'MI_MAP')\n", - " ('INSTRUMENT_NAME', 'Multiband Imager')\n", - " ('INSTRUMENT_ID', 'MI')\n", - " ('TARGET_NAME', 'MOON')\n", - " ('OBSERVATION_MODE_ID', 'NORMAL')\n", - " ('SENSOR_DESCRIPTION',\n", - " 'MI is a multiband push-broom imaging camera consisting of VIS(V) and NIR(N) '\n", - " 'sensors (each has nadir-directed optics of f number 65 mm and F ratio 3.7). '\n", - " 'Detector pixel sizes in micron are 13(V) and 40(N).')\n", - " ('SENSOR_DESCRIPTION2',\n", - " 'Physical band arrangement [from satellite -x to +x] are '\n", - " 'VIS1>VIS2>VIS5>VIS4>VIS3 and NIR3>NIR4>NIR1>NIR2. Parallax between nearest '\n", - " 'band sets [degree] are 2.7 for VIS and 2.6 for NIR. Sampling time [msec] are '\n", - " '13 for VIS and 39 for NIR.')\n", - " ('FILTER_NAME', ['MV1', 'MV2', 'MV3', 'MV4', 'MV5', 'MN1', 'MN2', 'MN3', 'MN4'])\n", - " ('CENTER_FILTER_WAVELENGTH',\n", - " Quantity(value=[414.0, 749.0, 901.0, 950.0, 1001.0, 1000.0, 1049.0, 1248.0, 1548.0], units='nm'))\n", - " ('BANDWIDTH',\n", - " Quantity(value=[20.0, 12.0, 21.0, 30.0, 42.0, 27.0, 28.0, 33.0, 48.0], units='nm'))\n", - " ('BASE_BAND', 'MV5')\n", - " ('GEOMETRIC_DATA_ALTITUDE',\n", - " {'BINNING_INTERVAL': 1,\n", - " 'BINNING_START_PIXEL_POSITION': [1, 1],\n", - " 'LINES': 2048,\n", - " 'LINE_SAMPLES': 2048,\n", - " 'SAMPLE_BITS': 32,\n", - " 'SAMPLE_TYPE': 'IEEE_REAL',\n", - " 'UNIT': 'km'})\n", - " ('IMAGE',\n", - " {'BANDS': 9,\n", - " 'BAND_STORAGE_TYPE': 'BAND SEQUENTIAL',\n", - " 'IMAGE_VALUE_TYPE': 'REFLECTANCE',\n", - " 'INVALID_PIXELS': [[94, 365, 0, 0],\n", - " [176, 370, 0, 0],\n", - " [147, 378, 0, 0],\n", - " [228, 340, 0, 0],\n", - " [218, 386, 0, 0],\n", - " [161, 989, 0, 0],\n", - " [430, 774, 0, 0],\n", - " [162, 1245, 0, 0],\n", - " [585, 952, 0, 0]],\n", - " 'INVALID_TYPE': ['SATURATION', 'MINUS', 'DUMMY_DEFECT', 'OTHER'],\n", - " 'INVALID_VALUE': [-20000, -21000, -22000, -23000],\n", - " 'LINES': 2048,\n", - " 'LINE_SAMPLES': 2048,\n", - " 'MAX_FOR_STATISTICAL_EVALUATION': [32767,\n", - " 32767,\n", - " 32767,\n", - " 32767,\n", - " 32767,\n", - " 32767,\n", - " 32767,\n", - " 32767,\n", - " 32767],\n", - " 'MIN_FOR_STATISTICAL_EVALUATION': [0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " 'OFFSET': 0.0,\n", - " 'OUT_OF_IMAGE_BOUNDS_PIXELS': [0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " 'OUT_OF_IMAGE_BOUNDS_VALUE': -30000,\n", - " 'SAMPLE_BITS': 16,\n", - " 'SAMPLE_TYPE': 'MSB_INTEGER',\n", - " 'SCALING_FACTOR': 2e-05,\n", - " 'SCENE_AVERAGE_DN': [3096.5,\n", - " 5582.3,\n", - " 5993.3,\n", - " 6101.0,\n", - " 6480.5,\n", - " 6425.4,\n", - " 6767.4,\n", - " 8075.3,\n", - " 9526.2],\n", - " 'SCENE_MAXIMUM_DN': [32268,\n", - " 32178,\n", - " 32562,\n", - " 31727,\n", - " 32684,\n", - " 32528,\n", - " 32179,\n", - " 32293,\n", - " 32433],\n", - " 'SCENE_MINIMUM_DN': [0, 0, 0, 0, 0, 0, 0, 0, 1],\n", - " 'SCENE_MODE_DN': [2980, 5635, 3, 6095, 6324, 0, 0, 7965, 9305],\n", - " 'SCENE_STDEV_DN': [1232.1,\n", - " 1933.4,\n", - " 2080.3,\n", - " 2053.8,\n", - " 2138.1,\n", - " 2049.9,\n", - " 2110.4,\n", - " 2367.1,\n", - " 2629.7],\n", - " 'SHADOWED_AREA_MAXIMUM': [327, 327, 327, 327, 327, 327, 327, 327, 327],\n", - " 'SHADOWED_AREA_MINIMUM': [0, 0, 0, 0, 0, 0, 0, 0, 0],\n", - " 'SHADOWED_AREA_PERCENTAGE': [2, 2, 2, 2, 1, 3, 2, 1, 1],\n", - " 'STRETCHED_FLAG': False,\n", - " 'UNIT': 'ND'})\n", - " ('IMAGE_MAP_PROJECTION',\n", - " {'A_AXIS_RADIUS': Quantity(value=1737.4, units='km'),\n", - " 'B_AXIS_RADIUS': Quantity(value=1737.4, units='km'),\n", - " 'CENTER_LATITUDE': Quantity(value=0.0, units='deg'),\n", - " 'CENTER_LONGITUDE': Quantity(value=0.0, units='deg'),\n", - " 'COORDINATE_SYSTEM_NAME': 'PLANETOCENTRIC',\n", - " 'COORDINATE_SYSTEM_TYPE': 'BODY-FIXED ROTATING',\n", - " 'C_AXIS_RADIUS': Quantity(value=1737.4, units='km'),\n", - " 'EASTERNMOST_LONGITUDE': Quantity(value=328.99951172, units='deg'),\n", - " 'FIRST_STANDARD_PARALLEL': 'N/A',\n", - " 'LINE_FIRST_PIXEL': 1,\n", - " 'LINE_LAST_PIXEL': 2048,\n", - " 'LINE_PROJECTION_OFFSET': Quantity(value=133120.0, units='pixel'),\n", - " 'MAP_PROJECTION_ROTATION': Quantity(value=0.0, units='deg'),\n", - " 'MAP_PROJECTION_TYPE': 'Simple Cylindrical',\n", - " 'MAP_RESOLUTION': Quantity(value=2048.0, units='pixel/deg'),\n", - " 'MAP_SCALE': Quantity(value=0.01480632, units='km/pixel'),\n", - " 'MAXIMUM_LATITUDE': Quantity(value=65.0, units='deg'),\n", - " 'MINIMUM_LATITUDE': Quantity(value=64.00048828, units='deg'),\n", - " 'POSITIVE_LONGITUDE_DIRECTION': 'EAST',\n", - " 'REFERENCE_LATITUDE': 'N/A',\n", - " 'REFERENCE_LONGITUDE': 'N/A',\n", - " 'SAMPLE_FIRST_PIXEL': 1,\n", - " 'SAMPLE_LAST_PIXEL': 2048,\n", - " 'SAMPLE_PROJECTION_OFFSET': Quantity(value=-65536.0, units='pixel'),\n", - " 'SECOND_STANDARD_PARALLEL': 'N/A',\n", - " 'WESTERNMOST_LONGITUDE': Quantity(value=328.0, units='deg')})\n", - " ('PROCESSING_PARAMETERS',\n", - " {'DARK_FILE_NAME': [frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", - " 'MIV_DRK_04724_05494_M___002.csv'}),\n", - " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", - " 'MIV_DRK_04724_05494_M___002.csv'}),\n", - " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", - " 'MIV_DRK_04724_05494_M___002.csv'}),\n", - " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", - " 'MIV_DRK_04724_05494_M___002.csv'}),\n", - " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", - " 'MIV_DRK_04724_05494_M___002.csv'}),\n", - " frozenset({'MIN_DRK_04724_05494_M___002.csv',\n", - " 'MIV_DRK_04724_05494_M___002.csv'}),\n", - " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", - " 'MIV_DRK_01226_01571_L___002.csv'}),\n", - " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", - " 'MIV_DRK_01226_01571_L___002.csv'}),\n", - " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", - " 'MIV_DRK_01226_01571_L___002.csv'}),\n", - " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", - " 'MIV_DRK_01226_01571_L___002.csv'}),\n", - " frozenset({'MIN_DRK_01226_01571_L___002.csv',\n", - " 'MIV_DRK_01226_01571_L___002.csv'})],\n", - " 'DARK_VALID_MINIMUM': [-3, -3, -3, -3, -3, -10, -10, -10, -10],\n", - " 'DTM_MOSAIC_FILE_NAME': ['N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A'],\n", - " 'EFFIC_FILE_NAME': [frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_EFF_PRFLT_N___v01.csv',\n", - " 'MIV_EFF_PRFLT_N___v01.csv'})],\n", - " 'FLAT_FILE_NAME': [frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", - " 'MIV_FLT_04724_05494_N___002.csv'}),\n", - " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", - " 'MIV_FLT_04724_05494_N___002.csv'}),\n", - " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", - " 'MIV_FLT_04724_05494_N___002.csv'}),\n", - " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", - " 'MIV_FLT_04724_05494_N___002.csv'}),\n", - " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", - " 'MIV_FLT_04724_05494_N___002.csv'}),\n", - " frozenset({'MIN_FLT_04724_05494_N___002.csv',\n", - " 'MIV_FLT_04724_05494_N___002.csv'}),\n", - " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", - " 'MIV_FLT_01226_01571_L___002.csv'}),\n", - " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", - " 'MIV_FLT_01226_01571_L___002.csv'}),\n", - " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", - " 'MIV_FLT_01226_01571_L___002.csv'}),\n", - " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", - " 'MIV_FLT_01226_01571_L___002.csv'}),\n", - " frozenset({'MIN_FLT_01226_01571_L___002.csv',\n", - " 'MIV_FLT_01226_01571_L___002.csv'})],\n", - " 'FT_FILE_NAME': ['MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv',\n", - " 'MIV_FTF_PRFLT_N___v01.csv'],\n", - " 'FT_VALID_MINIMUM': -2,\n", - " 'L2A_DEAD_PIXEL_THRESHOLD': [35, 35, 35, 35, 35, 200, 200, 200, 200],\n", - " 'L2A_SATURATION_THRESHOLD': [1023,\n", - " 1023,\n", - " 1023,\n", - " 1023,\n", - " 1023,\n", - " 4095,\n", - " 4095,\n", - " 4095,\n", - " 4095],\n", - " 'MATCHING_MOSAIC': 'N/A',\n", - " 'NONLIN_FILE_NAME': [frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'}),\n", - " frozenset({'MIN_NLT_PRFLT_N___v01.csv',\n", - " 'MIV_NLT_PRFLT_N___v01.csv'})],\n", - " 'OVERLAP_SELECTION_ID': 'Prioritized order : nominal mission period and '\n", - " 'phase angle closer to the standard geometry',\n", - " 'PHOTO_CORR_COEF': [[0.5,\n", - " -0.019,\n", - " 0.000242,\n", - " -1.46e-06,\n", - " 0.05678,\n", - " 1.913,\n", - " 0.0643,\n", - " 0.2448,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.06797,\n", - " 1.3,\n", - " -0.0144,\n", - " 0.2441,\n", - " -0.00265,\n", - " 0.00174,\n", - " -0.000381],\n", - " [0.5,\n", - " -0.019,\n", - " 0.000242,\n", - " -1.46e-06,\n", - " 0.06921,\n", - " 1.487,\n", - " -0.0382,\n", - " 0.2122,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.08916,\n", - " 0.997,\n", - " -0.2526,\n", - " 0.1986,\n", - " -0.00265,\n", - " 0.00174,\n", - " -0.000381],\n", - " [0.5,\n", - " -0.019,\n", - " 0.000242,\n", - " -1.46e-06,\n", - " 0.05908,\n", - " 1.43,\n", - " 0.056,\n", - " 0.227,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.09298,\n", - " 0.918,\n", - " -0.2251,\n", - " 0.198,\n", - " -0.00265,\n", - " 0.00174,\n", - " -0.000381],\n", - " [0.5,\n", - " -0.019,\n", - " 0.000242,\n", - " -1.46e-06,\n", - " 0.05345,\n", - " 1.413,\n", - " 0.1263,\n", - " 0.2409,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.08705,\n", - " 0.883,\n", - " -0.1655,\n", - " 0.2052,\n", - " -0.00265,\n", - " 0.00174,\n", - " -0.000381],\n", - " [0.5,\n", - " -0.019,\n", - " 0.000242,\n", - " -1.46e-06,\n", - " 0.05096,\n", - " 1.377,\n", - " 0.0736,\n", - " 0.2383,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.09746,\n", - " 0.889,\n", - " -0.2248,\n", - " 0.1933,\n", - " -0.00265,\n", - " 0.00174,\n", - " -0.000381],\n", - " [0.5,\n", - " -0.019,\n", - " 0.000242,\n", - " -1.46e-06,\n", - " 0.05096,\n", - " 1.377,\n", - " 0.0736,\n", - " 0.2383,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.09746,\n", - " 0.889,\n", - " -0.2248,\n", - " 0.1933,\n", - " -0.00265,\n", - " 0.00174,\n", - " -0.000381],\n", - " [0.5,\n", - " -0.019,\n", - " 0.000242,\n", - " -1.46e-06,\n", - " 0.03968,\n", - " 1.335,\n", - " 0.1809,\n", - " 0.2632,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.09486,\n", - " 0.843,\n", - " -0.2059,\n", - " 0.1958,\n", - " -0.00265,\n", - " 0.00174,\n", - " -0.000381],\n", - " [0.5,\n", - " -0.019,\n", - " 0.000242,\n", - " -1.46e-06,\n", - " 0.06407,\n", - " 1.103,\n", - " -0.0062,\n", - " 0.2168,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.11201,\n", - " 0.773,\n", - " -0.3129,\n", - " 0.175,\n", - " -0.00265,\n", - " 0.00174,\n", - " -0.000381],\n", - " [0.5,\n", - " -0.019,\n", - " 0.000242,\n", - " -1.46e-06,\n", - " 0.09175,\n", - " 0.954,\n", - " 0.0111,\n", - " 0.1967,\n", - " 0.0,\n", - " 0.0,\n", - " 0.0,\n", - " 0.12374,\n", - " 0.692,\n", - " -0.2914,\n", - " 0.1648,\n", - " -0.00265,\n", - " 0.00174,\n", - " -0.000381]],\n", - " 'PHOTO_CORR_ID': 'LISM ORIGINAL',\n", - " 'RADIANCE_SATURATION_THRESHOLD': Quantity(value=425.971, units='W/m**2/micron/sr'),\n", - " 'RAD_CNV_COEF': Quantity(value=[[1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085], [1.470593, 2.204781, 2.244315, 2.734361, 1.885889, 3.04924, 3.312096, 4.788256, 7.969085]], units='W/m**2/micron/sr'),\n", - " 'REF_CNV_COEF': Quantity(value=[0.002353311, 0.002450451, 0.003549924, 0.003886012, 0.004316842, 0.004316842, 0.004893535, 0.007400877, 0.01218292], units='1/(W/m**2/micron/sr)'),\n", - " 'REF_SATURATION_THRESHOLD': Quantity(value=0.65534, units='ND'),\n", - " 'RESAMPLING_METHOD': 'Bi-Linear',\n", - " 'STANDARD_GEOMETRY': [30.0, 0.0, 30.0],\n", - " 'TCO_MOSAIC_FILE_NAME': ['N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A',\n", - " 'N/A']})\n", - "])" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], "source": [ - "header = pvl.load(kaguya_file)\n", + "header = pvl.load(mimap_file)\n", "header" ] }, { "cell_type": "code", - "execution_count": 4, - "metadata": {}, + "execution_count": null, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ - "with open(kaguya_file, 'rb') as f:\n", + "with open(mimap_file, 'rb') as f:\n", " try:\n", " image_offset = header[\"^IMAGE\"].value-(header['IMAGE']['SAMPLE_BITS']//8)\n", " f.seek(image_offset)\n", " b_image_data = f.read()\n", " except AttributeError:\n", " # If detached label, \"^IMAGE\" will be a list.\n", - " image_file = os.path.dirname(kaguya_file) + \"/\" + header[\"^IMAGE\"][0]\n", + " image_file = os.path.dirname(mimap_file) + \"/\" + header[\"^IMAGE\"][0]\n", " image_offset = header[\"^IMAGE\"][1].value\n", " with open(image_file, 'rb') as im_f:\n", " b_image_data = im_f.read()" @@ -541,8 +64,10 @@ }, { "cell_type": "code", - "execution_count": 5, - "metadata": {}, + "execution_count": null, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "n_lines = 5\n", @@ -552,8 +77,10 @@ }, { "cell_type": "code", - "execution_count": 6, - "metadata": {}, + "execution_count": null, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_data = []\n", @@ -566,79 +93,22 @@ }, { "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(46, 5)" - ] - }, - "execution_count": 7, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "image_data.shape" - ] - }, - { - "cell_type": "code", - "execution_count": 8, + "execution_count": null, "metadata": { + "collapsed": true, "scrolled": true }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "plt.imshow(image_data)" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": {}, "outputs": [], "source": [ - "class RealIsisCubeLabelEncoder(pvl.encoder.ISISEncoder): \n", - " def encode_time(self, value):\n", - " if value.microsecond:\n", - " second = u'%02d.%06d' % (value.second, value.microsecond)\n", - " else:\n", - " second = u'%02d' % value.second\n", - "\n", - " time = u'%02d:%02d:%s' % (value.hour, value.minute, second)\n", - " return time" + "plt.imshow(image_data)" ] }, { "cell_type": "code", - "execution_count": 10, - "metadata": {}, + "execution_count": null, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "image_fn, image_ext = os.path.splitext(image_file)\n", @@ -648,13 +118,13 @@ "\n", "grammar = pvl.grammar.ISISGrammar()\n", "grammar.comments+=((\"#\", \"\\n\"), )\n", - "encoder = RealIsisCubeLabelEncoder()\n", + "encoder = pvl.encoder.ISISEncoder()\n", "\n", "# Overwrite the number of lines and samples in the label\n", "header['IMAGE']['LINES'] = n_lines\n", "header['IMAGE']['LINE_SAMPLES'] = n_samples\n", "\n", - "if kaguya_file != image_file:\n", + "if mimap_file != image_file:\n", " # If detached label, point the mini label to the mini image\n", " header['^IMAGE'] = [mini_image_bn, pvl.collections.Units(1, 'BYTES')]\n", " header['FILE_NAME'] = mini_image_bn\n", @@ -665,22 +135,13 @@ }, { "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "15766" - ] - }, - "execution_count": 11, - "metadata": {}, - "output_type": "execute_result" - } - ], + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], "source": [ - "label_fn, label_ext = os.path.splitext(kaguya_file)\n", + "label_fn, label_ext = os.path.splitext(mimap_file)\n", "out_label = label_fn + crop + label_ext\n", "\n", "pvl.dump(header, out_label, encoder=encoder, grammar=grammar)" @@ -688,8 +149,10 @@ }, { "cell_type": "code", - "execution_count": 12, - "metadata": {}, + "execution_count": null, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [ "with open(mini_image_fn, 'ab+') as f:\n", @@ -702,16 +165,18 @@ { "cell_type": "code", "execution_count": null, - "metadata": {}, + "metadata": { + "collapsed": true + }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python autocnet", "language": "python", - "name": "python3" + "name": "autocnet" }, "language_info": { "codemirror_mode": { @@ -723,7 +188,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.0" + "version": "3.7.6" } }, "nbformat": 4,