def period_disk_class_histograms():
    """ 
    What do the period distributions of disked vs nondisked stars look like?

    """

    # UKvar sTrict Periodics
    uk_tp = ukvar_spread.where((ukvar_spread.strict == 1) & 
                               (ukvar_spread.periodic == 1))

    # Disk criterion
    excess = 1.714*uk_tp.hmk_median - uk_tp.jmh_median 

    p_sample = uk_tp.where(excess <= 0)
    d_sample = uk_tp.where((excess > 0) & (excess <= 0.614))
    e_sample = uk_tp.where(excess > 0.614)

    print len(p_sample), len(d_sample), len(e_sample)

    fig = plt.figure()
    s1 = fig.add_subplot(3,1,1)
    s2 = fig.add_subplot(3,1,2)
    s3 = fig.add_subplot(3,1,3)

    s1.hist(p_sample.Period, bins=50, range=(0,20))
    s1.text(12,10, "Photosphere sample, n=%d" % len(p_sample))
    s1.set_title("Histograms of periods for photosphere, disk, extreme samples")
    s2.hist(d_sample.Period, bins=50, range=(0,20),color='r')
    s2.text(12,10, "Disk sample, n=%d" % len(d_sample))
    s3.hist(e_sample.Period, bins=50, range=(0,20),color='k')
    s3.text(12,0.8, "Extreme sample, n=%d" % len(e_sample))
    s3.set_xlabel("Period (days)")

    plt.show()

    fig2 = plt.figure()

    plot_trajectory_vanilla(plt.gca())
    
    plt.plot(p_sample.hmk_median, p_sample.jmh_median, 'bo')
    plt.plot(d_sample.hmk_median, d_sample.jmh_median, 'ro')
    plt.plot(e_sample.hmk_median, e_sample.jmh_median, 'ko')

    plt.xlabel(r"median $H-K$")
    plt.ylabel(r"median $J-H$")
    plt.title("Color-color diagram of periodic stars")

    plt.xlim(-0.1,2.5)
    plt.ylim(-0.2, 2.8)

    plt.show()

    return
def f_cc_generic(spread, title="", cmap='cubehelix_r'):
    """
    Given an input dataset, makes a color-color plot with cool 
    colors and stuff.

    Parameters
    ----------
    spread : atpy.Table
        A spreadsheet with information on stars whose median 
        J-H and H-K colors want to be plotted.
    title : str
        Desired title for the plot, if any.

    Returns
    -------
    fig : Figure object
        Figure that we plotted onto.
    
    """
    fig = plt.figure()
    ax = plt.gca()

    plot_trajectory_vanilla(ax)

    # First group: only group! Because of how the data quality works.
    plt.scatter(spread.hmk_median, spread.jmh_median, c=spread.k_median,
                vmin=11, vmax=15, cmap=cmap)

    plt.xlabel(r"median $H-K$")
    plt.ylabel(r"median $J-H$")

    plt.xlim(-0.1,2.5)
    plt.ylim(-0.2, 2.8)
    
    cbar = plt.colorbar()
    cbar.ax.invert_yaxis()
    cbar.set_label(r"Median $K$ magnitude")
    
    if title:
        plt.title(title)

    plt.show()

    return fig
def f_cc_cmd_and_map_by_megeath_class(sample='all', title=True):
    """
    A color-color diagram where stars are colored by Megeath class.

    Also a CMD and a map.
    
    """

    megeath_class_column = make_megeath_class_column()

    # Nonperiodic stars only
    if 'non' in sample.lower():
        sample_boolean_criterion = np.isnan(ukvar_periods)
        sample_name = "Non-periodic"
    elif 'per' in sample.lower():
        sample_boolean_criterion = ~np.isnan(ukvar_periods)
        sample_name = "Periodic"
    elif 'strict' in sample.lower():
        sample_boolean_criterion = (ukvar_spread.strict == 1)
        sample_name = "Q=2"
    else:
        sample_boolean_criterion = (np.zeros_like(ukvar_periods) == 0) #all true
        sample_name = "All"

    # Now we want the rows in ukvar_spread that correspond to certain
    # Megeath subsamples.

    disk_indices = (
        # its Class is 'D'
        (megeath_class_column == 'D') &
        # and it matches our 'periodic/nonperiodic/all' cut.
         sample_boolean_criterion)

    protostar_indices = (
        (megeath_class_column == 'P') & sample_boolean_criterion)

    nondisk_indices = (
        (megeath_class_column == 'ND') & sample_boolean_criterion)

    unknown_indices = (
        (megeath_class_column == 'na') & sample_boolean_criterion)
    
        
    fig = plt.figure()
    ax = plt.gca()

    plot_trajectory_vanilla(ax, a_k=3)

    plt.plot(ukvar_spread.hmk_median[nondisk_indices],
             ukvar_spread.jmh_median[nondisk_indices],
             'o', color=color_dict['nondisk'], ms=4, label="Non-disks")
    plt.plot(ukvar_spread.hmk_median[disk_indices],
             ukvar_spread.jmh_median[disk_indices],
             'o', color=color_dict['disk'], ms=4, label="Disks")
    plt.plot(ukvar_spread.hmk_median[protostar_indices],
             ukvar_spread.jmh_median[protostar_indices],
             '*', color=color_dict['protostar'], ms=10, label="Protostars")

    plt.xlabel(r"median $H-K$")
    plt.ylabel(r"median $J-H$")

    plt.xlim(-0.1,3.1)
    plt.ylim(-0.2, 4.4)

    if title:
        plt.title(sample_name + " variables, colored by Megeath+2012 class")

    plt.legend(loc='lower right')


    fig3 = plt.figure()
    ax3 = plt.gca()

    plot_trajectory_vanilla(ax, a_k=3)

    plt.plot(ukvar_spread.hmk_median[nondisk_indices],
             ukvar_spread.k_median[nondisk_indices],
             'o', color=color_dict['nondisk'], ms=4, label="Non-disks")
    plt.plot(ukvar_spread.hmk_median[disk_indices],
             ukvar_spread.k_median[disk_indices],
             'o', color=color_dict['disk'], ms=4, label="Disks")
    plt.plot(ukvar_spread.hmk_median[protostar_indices],
             ukvar_spread.k_median[protostar_indices],
             '*', color=color_dict['protostar'], ms=10, label="Protostars")

    plt.xlabel(r"median $H-K$")
    plt.ylabel(r"median $K$ mag")

    plt.xlim(-0.1,3.1)
    plt.ylim(17, 8)
    
    plt.title(sample_name + " variables, colored by Megeath 2012 class")

    plt.legend(loc='upper right')


    fig2 = plt.figure()

    plt.plot(np.degrees(ukvar_spread.RA)[nondisk_indices], 
             np.degrees(ukvar_spread.DEC)[nondisk_indices], 
             'o', color=color_dict['nondisk'], ms=4, label="Non-disks")
    plt.plot(np.degrees(ukvar_spread.RA)[disk_indices], 
             np.degrees(ukvar_spread.DEC)[disk_indices], 
             'o', color=color_dict['disk'], ms=4, label="Disks")
    plt.plot(np.degrees(ukvar_spread.RA)[protostar_indices], 
             np.degrees(ukvar_spread.DEC)[protostar_indices], 
             '*', color=color_dict['protostar'], ms=10, label="Protostars")

    plt.legend()
    plt.gca().invert_xaxis()

    plt.show()

    return (fig, fig2, fig3)