Example #1
0
    def test_findConflicts(self):

        s = self.proposal.session_set.all()[0]
        src0 = self.proposal.source_set.all()[0]
        tpcode = self.proposal.pcode

        # create a new proposal w/ sessions and sources
        newP = createProposal() 
        newS = self.createSession(newP)
        newS.grade = SessionGrade.objects.get(grade = 'A')
        newS.receivers.add(Receiver.objects.get(abbreviation = 'Q'))
        newS.receivers.add(Receiver.objects.get(abbreviation = '800'))
        newS.save()
        # make conflict
        src1 = self.createSrc(newP) 
        src1.target_name = src0.target_name
        src1.ra = src0.ra 
        src1.dec = src0.dec 
        src1.save()
        # make another conflict
        src2 = self.createSrc(newP) 
        src2.target_name = src0.target_name + "!"
        src2.ra = src0.ra + (src0.ra*0.0002)
        src2.dec = src0.dec - (src0.dec*0.0002)
        src2.save()

        # turn the crank
        sc = SourceConflicts()
        sc.findConflicts()
        cf = sc.conflicts

        # check the results
        self.assertEqual(2, len(cf))
        self.assertEqual(['GBT10A-009','GBT12A-002'], sorted(cf.keys()))
        # we've already tested these results below in the other test
        scf1 = cf['GBT12A-002']['conflicts']
        self.assertEqual(2, len(scf1))
        # but not for conflicts for this newly created proposal
        c = cf['GBT10A-009']
        self.assertEqual('GBT10A-009', c['proposal'].pcode)
        self.assertEqual('800', c['lowestRx'].abbreviation)
        self.assertAlmostEqual(0.0090175344, c['searchRadius'], 5)
        # the conflicts are the mirror of eachother
        scf2 = c['conflicts']
        self.assertAlmostEqual(2, len(scf2))
        for i in range(2):    
            self.assertEqual(scf1[i]['targetSrc']
                           , scf2[i]['searchedSrc'])
            self.assertEqual(scf2[i]['targetSrc']
                           , scf1[i]['searchedSrc'])
            self.assertAlmostEqual(scf1[i]['distance']
                                 , scf2[i]['distance'], 5)
Example #2
0
    def test_findConflicts(self):

        s = self.proposal.session_set.all()[0]
        src0 = self.proposal.source_set.all()[0]
        tpcode = self.proposal.pcode
         
        # create a new proposal w/ sessions and sources
        newP = createProposal() 
        newP.pi = Author.objects.all()[0]
        newP.save()
        newS = self.createSession(newP)
        newS.grade = SessionGrade.objects.get(grade = 'A')
        newS.receivers.add(Receiver.objects.get(abbreviation = 'Q'))
        newS.receivers.add(Receiver.objects.get(abbreviation = '800'))
        newS.save()
        # second session isn't graded 
        newS2 = self.createSession(newP)
        newS2.grade = None 
        newS2.receivers.add(Receiver.objects.get(abbreviation = 'Q'))
        newS2.receivers.add(Receiver.objects.get(abbreviation = '800'))
        newS2.save()
        # make conflict
        src1 = self.createSrc(newP) 
        src1.target_name = src0.target_name
        src1.ra = src0.ra 
        src1.dec = src0.dec 
        src1.save()
        # make another conflict
        src2 = self.createSrc(newP) 
        src2.target_name = src0.target_name + "!"
        src2.ra = src0.ra + (src0.ra*0.0002)
        src2.dec = src0.dec - (src0.dec*0.0002)
        src2.save()

        # turn the crank
        sc = SourceConflicts()
        sc.findConflicts()
        cf = sc.conflicts

        # now create the report
        ps = Proposal.objects.all()
        filename = '12A'
        scr = SourceConflictsReport('sourceConflictsReport-%s-all.pdf' % filename)
        sc.filterConflicts(0)
        scr.report(sc.filteredConflicts, semester = '12A', level = 0)
Example #3
0
        dt = datetime.now()
        days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
        return '%s, %s' % (days[dt.weekday()],  dt.strftime('%B %d, %Y'))

if __name__ == '__main__':
    import argparse
    parser = argparse.ArgumentParser(description='Command line tool for running GB PHT Source Conflict Reports.  Specify at least a semester or pcode.')
    parser.add_argument('-s','--semester', dest="semester", help='Semester of the proposals you wish to check for source conflicts.')
    parser.add_argument('-p','--pcode', dest="pcode", help='Run source conflicts for a given pcode (Ex. GBT12B-100)')
    parser.add_argument('-l','--level', dest="level", type = int, default = -1, help='Level of conflicts to check.  Options are "0", "1", "2" (defaults to all).')

    args = parser.parse_args()

    sc = SourceConflicts(semester = args.semester)
    if args.pcode is not None:
        sc.findConflicts(proposals = Proposal.objects.filter(pcode = args.pcode))
        filename = args.pcode
    else:
        sc.findConflicts(
            #  Uncomment for testing.
            #proposals = Proposal.objects.filter(semester__semester = args.semester)[:5]
            )
        filename = args.semester

    levelMap = ['all', 'sameReceiver', 'sameReceiver-proprietaryPeriod']
    if args.level == -1:
        sc.filterConflicts(0)
        scr = SourceConflictsReport('sourceConflictsReport-%s-all.pdf' % filename)
        scr.report(sc.filteredConflicts, semester = args.semester, pcode = args.pcode, level = 0)
        sc.filterConflicts(1)
        scr = SourceConflictsReport('sourceConflictsReport-%s-sameReceiver.pdf' % filename)