code: def fetch_moving_objects(
      data_home=None, download_if_missing=True, Parker2008_cuts=False
  ):
      """Loader for SDSS moving objects datasets
  
      Parameters
      ----------
      data_home : optional, default=None
          Specify another download and cache folder for the datasets. By default
          all astroML data is stored in '~/astroML_data'.
  
      download_if_missing : optional, default=True
          If False, raise a IOError if the data is not locally available
          instead of trying to download the data from the source site.
  
      Parker2008_cuts : bool (optional)
          If true, apply cuts on magnitudes and orbital parameters used in
          Parker et al. 2008
  
      Returns
      -------
      data : recarray, shape = (??,)
          record array containing 60 values for each item
  
      Notes
      -----
      See http://www.astro.washington.edu/users/ivezic/sdssmoc/sdssmoc3.html
      Columns 0, 35, 45, and 56 are left out of the fetch: they are string
      parameters.  Only columns with known orbital parameters are saved.
  
      Examples
      --------
      >>> from astroML.datasets import fetch_moving_objects
      >>> data = fetch_moving_objects()  # doctest: +IGNORE_OUTPUT +REMOTE_DATA
      >>> # number of objects
      >>> print(len(data))  # doctest: +REMOTE_DATA
      43424
      >>> # first five u-g colors of the dataset
      >>> u_g = data['mag_u'] - data['mag_g']  # doctest: +REMOTE_DATA
      >>> print(u_g[:5])  # doctest: +REMOTE_DATA
      [1.4899998 1.7800007 1.6500015 2.0100002 1.8199997]
      """
      data_home = get_data_home(data_home)
  
      archive_file = os.path.join(data_home, ARCHIVE_FILE)
  
      if not os.path.exists(archive_file):
          if not download_if_missing:
              raise IOError(
                  "data not present on disk. "
                  "set download_if_missing=True to download"
              )
  
          print(
              "downloading moving object catalog from %s to %s"
              % (DATA_URL, data_home)
          )
  
          zipped_buf = download_with_progress_bar(
              DATA_URL, return_buffer=True
          )
          gzf = GzipFile(fileobj=zipped_buf, mode="rb")
          print("uncompressing file...")
          extracted_buf = BytesIO(gzf.read())
          data = np.loadtxt(extracted_buf, dtype=ADR4_dtype)
  
          # Select unique sources with known orbital elements
          flag = (data["ast_flag"] == 1) & (data["ast_det_count"] == 1)
          data = data[flag]
  
          np.save(archive_file, data)
  
      else:
          data = np.load(archive_file)
  
      if Parker2008_cuts:
          i_z = data["mag_i"] - data["mag_z"]
  
          flag = (
              (data["aprime"] >= 0.01)
              & (data["aprime"] <= 100)
              & (data["mag_a"] <= 0.4)
              & (data["mag_a"] >= -0.3)
              & (i_z <= 0.6)
              & (i_z >= -0.8)
          )
  
          data = data[flag]
  
      return data
  
imports: import os
  from gzip import GzipFile
  from io import BytesIO
  import numpy
  from .tools import download_with_progress_bar
  from .None import get_data_home
label_desc: Use image node_id 1 for calling a global function with example usage: fetch_moving_objects(data_home, download_if_missing, Parker2008_cuts) and returns: data