def binpid2zip(pid, outfile, log_callback=None): def log(msg): if log_callback is not None: log_callback(msg) """Generate a zip file given a canonical pid""" parsed = parse_pid(pid) bin_pid = ''.join([parsed[NAMESPACE], parsed[BIN_LID]]) timestamp = iso8601(strptime(parsed[TIMESTAMP], parsed[TIMESTAMP_FORMAT])) log('copying raw data for %s to temp files ...' % bin_pid) with tempfile.NamedTemporaryFile() as hdr_tmp: hdr_path = hdr_tmp.name drain(UrlSource(bin_pid+'.hdr'), LocalFileSink(hdr_path)) hdr = parse_hdr_file(hdr_path) with tempfile.NamedTemporaryFile() as adc_tmp: adc_path = adc_tmp.name drain(UrlSource(bin_pid+'.adc'), LocalFileSink(adc_path)) adc = Adc(adc_path, parsed[SCHEMA_VERSION]) unstitched_targets = add_pids(adc.get_targets(), bin_pid) stitched_targets = list_stitched_targets(unstitched_targets) with tempfile.NamedTemporaryFile() as roi_tmp: roi_path = roi_tmp.name drain(UrlSource(bin_pid+'.roi'), LocalFileSink(roi_path)) canonical_pid = bin_pid log('copied raw data for %s' % canonical_pid) """*parsed_pid - result of parsing pid *canonical_pid - canonicalized with URL prefix *targets - list of (stitched) targets *hdr - result of parsing header file *timestamp - timestamp (FIXME in what format?) *roi_path - path to ROI file outfile - where to write resulting zip file""" log('creating zip file for %s' % bin_pid) with open(outfile,'wb') as fout: return bin2zip(parsed,bin_pid,stitched_targets,hdr,timestamp,roi_path,fout)
def get_unstitched_targets(adc, bin_pid): us_targets = add_pids(adc.get_targets(),bin_pid) for us_target in us_targets: # claim all are unstitched us_target[STITCHED] = False yield us_target