예제 #1
0
파일: app.py 프로젝트: xinxin2man/asterank
def skymorph_search_target():
  return jsonify({'results': skymorph.search_target(request.args.get('target'))})
예제 #2
0
파일: crawl.py 프로젝트: xkxx/last-voyage
  def process(asteroid):
    target = asteroid['prov_des']
    if target.strip() == '':
      target = asteroid['name']
      if target.strip() == '':
        target = asteroid['full_name']
        if target.strip() == '':
          return
    print 'crawl', target

    #skymorph.images_for(prov_des)

    results = skymorph.search_target(target)
    groups = []
    last_group = []
    last_time = None
    for result in results:
      time = datetime.strptime(result['time'], '%Y-%m-%d %H:%M:%S')
      if last_time:
        tdelta = time - last_time if time > last_time else last_time - time
        if tdelta.total_seconds() / 60 > 45:
          # not within 45 minutes of each other
          groups.append(last_group)
          last_group = []
        else:
          last_group.append(result)
      last_time = time

    groups_final_datastructure = []
    gcount = 1
    for group in groups:
      threads = []
      group_results = []
      rcount = 1
      if len(group) < 2:
        continue
      for result in group:
        center_ra = skymorph.hms_str_to_float(result['center_ra'])
        center_dec = skymorph.dms_str_to_float(result['center_dec'])
        new_group_result = {
          'key': result['key'],
          'time': result['time'],
          'pos_x': 0,
          'pos_y': 0,
          # this will bite me in the ass because these are floats now,
          # but there are some cached responses in which these fields are strs
          'center_ra': center_ra,
          'center_dec': center_dec,
          }
        print 'Fetching img %d of %d (group %d/%d)' % (rcount, len(group), gcount, len(groups))
        png_data = skymorph.get_fast_image(result['key'])
        if not png_data or type(png_data) == dict or \
            not astrometry.process(png_data, center_ra, center_dec, \
              result['key'], key_prefix='fast_image_'):
          # couldn't solve this star field
          continue
        group_results.append(new_group_result)
        rcount += 1
      gcount +=1
      if len(group_results) > 1:
        # extract from wcs instead of using center ra and dec from skymorph because it
        # is more accurate, necessary for lining up.
        ref_ra, ref_dec = astrometry.get_center_ra_dec(group_results[0]['key'])
        #ref_ra = group_results[0]['center_ra']
        #ref_dec  = group_results[0]['center_dec']
        for result in group_results:
          offset = astrometry.get_pixel_offset(result['key'], group_results[0]['key'], \
              ref_ra, ref_dec)
          if not offset:
            print '\033[91m!! ERROR: skipping image for', target, \
                'because it has not had its astrometry processed.\033[0m', result['key']
            continue
          result['offset_x'] = offset[0]
          result['offset_y'] = offset[1]
          print 'Offsets:', offset
        groups_final_datastructure.append({
          'score': 0,
          'interesting': 0,
          'not_interesting': 0,
          'images': group_results,
          'reviews': [],
          'target': target,
          'known_target': True,
          })
        #for thread in threads:
        #  thread.join()

    return groups_final_datastructure   # a list of groups