func (d *DiversityFilter) Diff(r *sam.Record, genome []byte) (diff, length int) { start := r.Start() end := r.End() if start < 0 || end > len(genome) { if *debug { text, err := r.MarshalSAM(sam.FlagDecimal) raiseError(err) log.Printf("acc: %s, genome length %d, read starts at %d and ends at %d: %s\n", r.Ref.Name(), len(genome), start, end, text) } length = 0 return } refSeq := genome[start:end] diff = 0 read := map2Ref(r) length = len(read) for i := 0; i < length; i++ { if read[i] != refSeq[i] { diff++ } } return }