def correlate_redshift_emission_line(quasars, line, subset=False):
    """ Plot correlation between redshift and emission line strength.
        Provide Spearman's rho, pearson's R and linear regression. """

    # Get datapoints for which the redshift and line luminosity is known.
    # The error array of the redshift will be empty.
    REDSHIFT, REDSHIFT_ERR, LINE, LINE_ERR\
        = find_intersection(quasars, 'REDSHIFT', line)

    if subset:
        REDSHIFT_range = []
        LINE_range = []

        for i in xrange(len(REDSHIFT)):
            if REDSHIFT[i] > 1.5 and REDSHIFT[i] < 2.2:
                REDSHIFT_range.append(REDSHIFT[i])
                LINE_range.append(LINE[i])

        REDSHIFT = REDSHIFT_range
        LINE = LINE_range

    # Then look at the correlation coefficients and plot the linear regression
    print
    print "Spearman's Rho\nSelf-written method:\t{0}\nScipy method:\t\t{1}"\
        .format(spearmanr_sarah(REDSHIFT, LINE),
                scipy.stats.spearmanr(REDSHIFT, LINE)[0]),
    print
    print "Spearman's r\nSelf-written method:\t{0}\nScipy method:\t\t{1}"\
        .format(pearsonr_sarah(REDSHIFT, LINE),
                scipy.stats.pearsonr(REDSHIFT, LINE)[0])
    print
    print "Linear regression\nSarah: {0}\nGeert{1}"\
        .format(linear_regression(REDSHIFT, LINE), "Not implemented")
    def test_find_intersection_no_common(self):
        lst1 = LinkedList()
        lst2 = LinkedList()
        lst1.insert(4)
        lst1.insert(3)
        lst1.insert(2)
        lst1.insert(1)

        lst2.insert(4)
        lst2.insert(3)
        lst2.insert(2)

        lst = find_intersection(lst1, lst2)
        self.assertEqual(lst, None)
def main():
    """ Parse and clean dataset, then do statistics """

    quasars = parse_dataset('sdss_dr7_qsos.dat')

    print 'Example usage'
    quasars = parse_dataset('sdss_dr7_qsos.dat')
    for quasar in [quasars[1], quasars[1337], quasars[13370]]:
        si = quasar.to_si_for_Sarah()  # nieuwe quasar
        print quasar.RA, "=>", si.RA
        print quasar.DEC, "=>", si.DEC
        print '\n\n'


    attr1_list, attr1_err_list, attr2_list, attr2_err_list =\
        find_intersection(quasars, 'LOGL1350', 'LOGL5100')

    attr1_list, attr1_err_list, attr2_list, attr2_err_list,\
        attr3_list, attr3_err_list =\
        find_intersection(quasars, 'LOGL3000', 'LOGL5100', 'LOGBH')

    attr1_list, attr1_err_list, attr2_list, attr2_err_list,\
        attr3_list, attr3_err_list, attr4_list, attr4_err_list =\
        find_intersection(quasars, 'LOGL3000', 'LOGL5100', 'LOGBH', 'LOGLBOL')
 def test_find_intersection(self):
     lst = find_intersection(self.lst1, self.lst2)
     self.assertEqual(lst.size(), 4)
     self.assertEqual(lst.head.get_data(), 7)
     self.assertEqual(lst.head.get_next().get_data(), 5)