[{"data":1,"prerenderedAt":45},["ShallowReactive",2],{"analysis-playbook-hinode-xrt-level0":3},{"@context":4,"@type":5,"name":6,"description":7,"proficiencyLevel":8,"dependencies":9,"programmingLanguage":15,"keywords":16,"citation":24,"about":40,"articleBody":44},"https:\u002F\u002Fschema.org","TechArticle","Hinode\u002FXRT Level-0 Image Visualization","Visualize Hinode X-Ray Telescope (XRT) Level-0 solar corona images in soft X-rays. Lists FITS files by date from DARTS, displays images with sunpy.map (WCS, solar limb, grid) or plain matplotlib, and browses multiple images as a thumbnail grid.","beginner",[10,11,12,13,14],"sunpy","astropy","matplotlib","numpy","requests","Python",[17,18,19,20,21,22,23],"Hinode","XRT","X-Ray Telescope","solar corona","X-ray","solar image","FITS",[25,29,33,36],{"@type":26,"url":27,"name":28},"WebPage","https:\u002F\u002Fdarts.isas.jaxa.jp\u002Fdatasets\u002Fdarts:hinode-xrt-level0\u002F","Hinode XRT Level-0 dataset at DARTS",{"@type":30,"url":31,"name":32},"ScholarlyArticle","https:\u002F\u002Fdoi.org\u002F10.1007\u002Fs11207-007-9014-6","The Hinode (Solar-B) Mission: An Overview",{"@type":30,"url":34,"name":35},"https:\u002F\u002Fdoi.org\u002F10.1007\u002Fs11207-007-0182-1","The X-ray Telescope (XRT) for the Hinode Mission",{"@type":37,"url":38,"name":39},"SoftwareApplication","https:\u002F\u002Fsunpy.org\u002F","SunPy",[41],{"@type":42,"name":43},"Dataset","darts:hinode-xrt-level0","## Hinode\u002FXRT Level-0 Image Visualization\n\nHinode X-Ray Telescope (XRT) Level-0 data are raw CCD images of the solar corona in soft X-rays (2006–present).\nThe dataset page is at [DARTS](https:\u002F\u002Fdarts.isas.jaxa.jp\u002Fdatasets\u002Fdarts:hinode-xrt-level0\u002F).\n\n---\n\n### Data Files\n\nFiles are organized by observation time under:\n\n```\nhttps:\u002F\u002Fdata.darts.isas.jaxa.jp\u002Fpub\u002Fhinode\u002Fxrt\u002Flevel0\u002F{YYYY}\u002F{MM}\u002F{DD}\u002FH{NNNN}\u002F\n```\n\nwhere `H{NNNN}` is the hour-block directory (e.g., `H0000`, `H0100`, …).\nEach FITS file covers one image and is named:\n\n```\nXRT{YYYYMMDD}_{HHMMSS}.{decimal}.fits\n```\n\nQuick-look PNG images are also available at:\n\n```\nhttps:\u002F\u002Fdata.darts.isas.jaxa.jp\u002Fpub\u002Fhinode\u002Fdarts\u002Fql\u002Fxrt\u002Flevel0\u002F{YYYY}\u002F{MM}\u002F{DD}\u002F\n```\n\n#### Key FITS header keywords\n\n| Keyword    | Example value          | Description |\n|------------|------------------------|-------------|\n| `DATE_OBS` | `2017-10-12T09:02:20.111` | Observation start time (UTC) |\n| `EXPTIME`  | `0.008156`             | Exposure time (seconds) |\n| `EC_FW1_`  | `Al_poly`              | Filter wheel 1 setting |\n| `EC_FW2_`  | `Open`                 | Filter wheel 2 setting |\n| `CDELT1\u002F2` | `8.2288`               | Pixel scale (arcsec\u002Fpixel) |\n| `CRVAL1\u002F2` | `-216.5`, `-6.9`       | FOV center in helioprojective arcsec |\n| `CCD_TMPC` | `-66.3`                | CCD temperature (°C) |\n| `DATA_LEV` | `0`                    | Processing level |\n\n---\n\n### Visualization with Python\n\n#### Requirements\n\n```\npip install \"sunpy[map]\" astropy matplotlib numpy requests\n```\n\n#### Helper functions\n\n```python\nimport re\nimport requests\nimport numpy as np\nimport matplotlib.pyplot as plt\nimport sunpy.map\nfrom astropy.utils.data import download_file\n\nBASE = \"https:\u002F\u002Fdata.darts.isas.jaxa.jp\u002Fpub\u002Fhinode\u002Fxrt\u002Flevel0\"\n\ndef list_xrt_files(year, month, day):\n    \"\"\"List all FITS files for a given date.\"\"\"\n    date_url = f\"{BASE}\u002F{year:04d}\u002F{month:02d}\u002F{day:02d}\u002F\"\n    resp = requests.get(date_url, timeout=30)\n    if resp.status_code != 200:\n        return []\n    hblocks = re.findall(r'href=\"(H\\d{4}\u002F)\"', resp.text)\n    files = []\n    for hb in hblocks:\n        resp2 = requests.get(date_url + hb, timeout=30)\n        names = re.findall(r'href=\"(XRT\\w+\\.fits)\"', resp2.text)\n        files.extend([date_url + hb + n for n in names])\n    return files\n```\n\n#### Example 1: Display a single image with sunpy\n\nsunpy automatically applies the `hinodexrt` colormap and an appropriate intensity normalization.\n\n```python\nurl = list_xrt_files(2017, 10, 12)[0]\nlocal = download_file(url, cache=True)\n\nxmap = sunpy.map.Map(local)\nprint(f\"Date: {xmap.date}\")\nprint(f\"Filter: {xmap.meta['EC_FW1_']} \u002F {xmap.meta['EC_FW2_']}\")\nprint(f\"Exposure: {xmap.meta['EXPTIME']:.4f} s\")\nprint(f\"Scale: {xmap.scale[0]:.2f}\u002Fpix\")\n\nfig = plt.figure(figsize=(7, 7))\nax = fig.add_subplot(projection=xmap)\nxmap.plot(axes=ax)\nxmap.draw_limb(axes=ax)\nxmap.draw_grid(axes=ax)\nplt.title(f\"Hinode\u002FXRT  {xmap.date}  [{xmap.meta['EC_FW1_']} \u002F {xmap.meta['EC_FW2_']}]\")\nplt.tight_layout()\nplt.savefig(\"hinode_xrt_single.png\", dpi=150, bbox_inches=\"tight\")\nplt.close()\n```\n\n#### Example 2: Browse multiple images in a day as a thumbnail grid\n\n```python\nurls = list_xrt_files(2017, 10, 12)\nprint(f\"{len(urls)} files found\")\n\nstep = max(1, len(urls) \u002F\u002F 9)\nselected = urls[::step][:9]\n\nfig, axes = plt.subplots(3, 3, figsize=(12, 12))\nfor ax, url in zip(axes.flat, selected):\n    local = download_file(url, cache=True)\n    xmap = sunpy.map.Map(local)\n    xmap.plot(axes=ax, annotate=False)\n    ax.set_title(xmap.date.strftime(\"%H:%M:%S\"), fontsize=8)\n    ax.set_axis_off()\n\nfig.suptitle(\"Hinode\u002FXRT 2017-10-12 (sample)\")\nplt.tight_layout()\nplt.savefig(\"hinode_xrt_grid.png\", dpi=150, bbox_inches=\"tight\")\nplt.close()\n```\n\n#### Example 3: Simple display without sunpy\n\n```python\nfrom astropy.io import fits\nimport matplotlib.colors as colors\n\nlocal = download_file(list_xrt_files(2017, 10, 12)[0], cache=True)\n\nwith fits.open(local) as hdul:\n    image = hdul[0].data.astype(float)\n    header = hdul[0].header\n\n# Level-0 images are in raw DN; clip to positive values before log scaling\nvmin = np.percentile(image, 1)\nimage_clipped = np.clip(image, max(vmin, 1), None)\n\nfig, ax = plt.subplots(figsize=(7, 7))\nim = ax.imshow(image_clipped, origin=\"lower\", cmap=\"hot\",\n               norm=colors.LogNorm())\nfig.colorbar(im, ax=ax, label=\"Intensity (DN)\")\nax.set_title(f\"Hinode\u002FXRT  {header['DATE_OBS']}\\n\"\n             f\"{header['EC_FW1_']} \u002F {header['EC_FW2_']}  \"\n             f\"exp={header['EXPTIME']:.4f} s\")\nplt.tight_layout()\nplt.savefig(\"hinode_xrt_simple.png\", dpi=150, bbox_inches=\"tight\")\nplt.close()\n```\n\n---\n\n### Notes\n\n- Level-0 data are not corrected for dark current, vignetting, or CCD artifacts. For science use, calibrated data processed with `xrt_prep.pro` in SSW\u002FIDL is recommended.\n- The two filter wheel settings (`EC_FW1_`, `EC_FW2_`) determine the temperature response of each image. Different combinations give sensitivity to different coronal temperatures (typically 6.0–8.0 in log T).\n- The pixel scale is 8.2288 arcsec\u002Fpixel for full-resolution images (2048×2048), but many observations use CCD summing (e.g., this example is 256×256 due to `CHIP_SUM = 8`).\n\n---\n\n### Acknowledgement\n\nWhen using this data in publications, please follow the [Hinode data use guidelines](https:\u002F\u002Fdarts.isas.jaxa.jp\u002Fmissions\u002Fhinode\u002Fguidelines.html) and cite:\n\n- Kosugi, T. et al. (2007), Sol. Phys., 243, 3. [doi:10.1007\u002Fs11207-007-9014-6](https:\u002F\u002Fdoi.org\u002F10.1007\u002Fs11207-007-9014-6) — Hinode mission\n- Golub, L. et al. (2007), Sol. Phys., 243, 223. [doi:10.1007\u002Fs11207-007-0182-1](https:\u002F\u002Fdoi.org\u002F10.1007\u002Fs11207-007-0182-1) — XRT instrument\n",1780296758189]