+
+func printHGVSOneHot(out io.Writer, seqname string, varslice []hgvs.Variant) {
+ vars := map[hgvs.Variant]bool{}
+ for _, v := range varslice {
+ if v.Ref != v.New {
+ vars[v] = true
+ }
+ }
+
+ // sort variants to ensure output is deterministic
+ sorted := make([]hgvs.Variant, 0, len(vars))
+ for v := range vars {
+ sorted = append(sorted, v)
+ }
+ sort.Slice(sorted, func(a, b int) bool { return hgvs.Less(sorted[a], sorted[b]) })
+
+ for _, v := range sorted {
+ fmt.Fprintf(out, "%s.%s", seqname, v.String())
+ for i := 0; i < len(varslice); i += 2 {
+ if varslice[i] == v || varslice[i+1] == v {
+ out.Write([]byte("\t1"))
+ } else {
+ out.Write([]byte("\t0"))
+ }
+ }
+ out.Write([]byte{'\n'})
+ }
+}