コード例 #1
0
ファイル: views.py プロジェクト: amychan331/astrokit
def download(request, lightcurve_id):
    file_type = request.GET.get('file_type')
    response = HttpResponse(content_type='text/csv')
    response[
        'Content-Disposition'] = 'attachment; filename="LightCurve%s.%s"' % (
            lightcurve_id, file_type)

    lc = LightCurve.objects.get(id=lightcurve_id)
    analyses = ImageAnalysis.objects.filter(useruploadedimage__lightcurve=lc) \
                                    .exclude(status=ImageAnalysis.ASTROMETRY_PENDING)

    if file_type == 'csv':
        writer = csv.writer(response)
        writer.writerow(
            ['Datetime', 'JD', 'Mag instrumental', 'Mag standard', 'Mag std'])
        for analysis in analyses:
            if analysis.annotated_point_sources != []:
                result = find_point_by_id(analysis.annotated_point_sources,
                                          analysis.target_id)
                if not result:
                    continue
                writer.writerow([
                    analysis.image_datetime,
                    get_jd_for_analysis(analysis),
                    result.get('mag_instrumental', None),
                    result.get('mag_standard', None),
                    result.get('mag_std', None)
                ])

    return response
コード例 #2
0
ファイル: views.py プロジェクト: amychan331/astrokit
def plot_lightcurve_json(request, lightcurve_id):
    lc = LightCurve.objects.get(id=lightcurve_id)
    ret = []
    if request.GET.get('type') == 'instrumental':
        analyses = ImageAnalysis.objects.filter(useruploadedimage__lightcurve=lc) \
                                        .exclude(status=ImageAnalysis.ASTROMETRY_PENDING)
        for analysis in analyses:
            result = find_point_by_id(analysis.annotated_point_sources,
                                      analysis.target_id)
            if not result:
                continue
            ret.append({
                'analysisId': analysis.id,
                'timestamp': analysis.image_datetime,
                'timestampJd': get_jd_for_analysis(analysis),
                'result': result,
            })
    else:
        # type == 'standard'
        reductions = Reduction.objects.filter(
            analysis__useruploadedimage__lightcurve=lc,
            analysis__status=ImageAnalysis.ADDED_TO_LIGHT_CURVE,
            status=Reduction.COMPLETE)

        for reduction in reductions:
            result = find_point_by_id(reduction.reduced_stars,
                                      reduction.analysis.target_id)
            if not result:
                # Reduction not complete.
                continue
            ret.append({
                'analysisId': reduction.analysis.id,
                'reductionId': reduction.id,
                'timestamp': reduction.analysis.image_datetime,
                'timestampJd': get_jd_for_analysis(reduction.analysis),
                # TODO(ian): Maybe one day we can bake the target id into the URL.
                # That way you can compare your target light curve to any light
                # curve from a known object!
                'result': result,
            })

    return JsonResponse({
        'success': True,
        'results': ret,
    })
コード例 #3
0
ファイル: hidden_transform.py プロジェクト: tranv94/astrokit
def calculate_color_index(lightcurve, reduction, image_pairs):
    if reduction.color_index_manual is not None:
        # User has chosen color index.
        reduction.color_index = reduction.color_index_manual
        reduction.save()
        return

    ci1 = lightcurve.get_ci_band1()
    ci2 = lightcurve.get_ci_band2()

    ci1_key = ci1.urat1_key
    ci2_key = ci2.urat1_key

    #cis = defaultdict(list)
    target_cis = []
    for image_pair in image_pairs:
        analysis1 = image_pair.analysis1
        analysis2 = image_pair.analysis2
        '''
        for comp_desig in lightcurve.comparison_star_designations:
            star1 = find_star_by_designation(analysis1.annotated_point_sources)
            star2 = find_star_by_designation(analysis2.annotated_point_sources)

            ci = star1['mag_instrumental'] - star2['mag_instrumental']
            ci_transformed = reduction.hidden_transform * ci + reduction.hidden_transform_intercept
            cis[comp_desig].append(ci_transformed)
        '''

        target1 = find_point_by_id(analysis1.annotated_point_sources,
                                   analysis1.target_id)
        target2 = find_point_by_id(analysis2.annotated_point_sources,
                                   analysis2.target_id)
        ci = target1['mag_instrumental'] - target2['mag_instrumental']
        ci_transformed = reduction.hidden_transform * ci + reduction.hidden_transform_intercept
        target_cis.append(ci_transformed)

    #color_index_by_desig = {}
    # TODO(ian): Show comparison standard color index vs computed color index
    # TODO(ian): Produce graph... (see pg 122)

    reduction.color_index = np.mean(target_cis)
    reduction.save()
コード例 #4
0
def download(request, lightcurve_id):
    file_type = request.GET.get('file_type')
    lc = LightCurve.objects.get(id=lightcurve_id)
    analyses = ImageAnalysis.objects.filter(useruploadedimage__lightcurve=lc) \
                                    .exclude(status=ImageAnalysis.ASTROMETRY_PENDING)

    if file_type == 'csv':
        response = HttpResponse(content_type='text/csv')
        response[
            'Content-Disposition'] = 'attachment; filename="LightCurve%s.csv"' % (
                lightcurve_id)

        writer = csv.writer(response)
        writer.writerow(
            ['Datetime', 'JD', 'Mag instrumental', 'Mag standard', 'Mag std'])
        for analysis in analyses:
            if analysis.annotated_point_sources != []:
                result = find_point_by_id(analysis.annotated_point_sources,
                                          analysis.target_id)
                if not result:
                    continue
                writer.writerow([
                    analysis.image_datetime,
                    get_jd_for_analysis(analysis),
                    result.get('mag_instrumental', None),
                    result.get('mag_standard', None),
                    result.get('mag_std', None)
                ])

    elif file_type == 'alcdef':
        myalcdef = AlcdefWriter()

        myalcdef.set('CIBAND', lc.ciband)
        myalcdef.set('CONTACTNAME', lc.user)
        myalcdef.set('CONTACTINFO', lc.user.email)
        myalcdef.set('DELIMITER', 'PIPE')
        myalcdef.set('FILTER', 'C')
        myalcdef.set('OBSERVERS', lc.user)
        myalcdef.set('OBJECTNAME', lc.target_name)
        myalcdef.set('OBJECTNUMBER', lc.target_name)

        myalcdef.add_comment(lc.notes)

        total_time = 0
        for analysis in analyses:
            total_time += time.mktime(analysis.image_datetime.timetuple())
            if analysis.annotated_point_sources != []:
                result = find_point_by_id(analysis.annotated_point_sources,
                                          analysis.target_id)
                if not result:
                    continue
                myalcdef.add_data(get_jd_for_analysis(analysis),
                                  result.get('mag_instrumental', None),
                                  result.get('mag_instrumental_unc', None),
                                  result.get('airmass', None))

        mid_time = datetime.utcfromtimestamp(total_time / len(analyses))
        myalcdef.set('SESSIONDATE', mid_time.strftime("%Y-%m-%d"))
        myalcdef.set('SESSIONTIME', mid_time.strftime("%H:%M:%S"))

        content = myalcdef.tostring()

        if isinstance(content, set):
            messages.error(request, ', '.join(content))
            return HttpResponseRedirect(
                reverse('edit_lightcurve', args=lightcurve_id))

        response = HttpResponse(content,
                                content_type='text/plain; charset=us-ascii')
        response[
            'Content-Disposition'] = 'attachment; filename="LightCurve%s.alcdef"' % (
                lightcurve_id)

    return response
コード例 #5
0
ファイル: models.py プロジェクト: tranv94/astrokit
 def get_target(self):
     return find_point_by_id(self.reduced_stars, self.analysis.target_id)
コード例 #6
0
ファイル: models.py プロジェクト: tranv94/astrokit
 def get_target(self):
     return find_point_by_id(self.annotated_point_sources, self.target_id)