- defer f.Close()
- bufw := bufio.NewWriterSize(f, 1<<20)
- _, err = fmt.Fprintf(bufw, `##fileformat=VCFv4.0
+ thr = throttle{Max: len(allcalls)}
+ for seq, seqcalls := range allcalls {
+ seq, seqcalls := seq, seqcalls
+ thr.Go(func() error {
+ log.Printf("%s: sorting", seq)
+ sort.Slice(seqcalls, func(i, j int) bool {
+ ii, jj := seqcalls[i], seqcalls[j]
+ if cmp := ii.position - jj.position; cmp != 0 {
+ return cmp < 0
+ }
+ if cmp := len(ii.deletion) - len(jj.deletion); cmp != 0 {
+ return cmp < 0
+ }
+ if cmp := bytes.Compare(ii.insertion, jj.insertion); cmp != 0 {
+ return cmp < 0
+ }
+ if cmp := ii.tile - jj.tile; cmp != 0 {
+ return cmp < 0
+ }
+ return ii.variant < jj.variant
+ })
+
+ vcfFilename := fmt.Sprintf("%s/annotations.%s.vcf", *outputDir, seq)
+ log.Printf("%s: writing %s", seq, vcfFilename)
+
+ f, err := os.Create(vcfFilename)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+ bufw := bufio.NewWriterSize(f, 1<<20)
+ _, err = fmt.Fprintf(bufw, `##fileformat=VCFv4.0