trim.seqs - wrong sample assignment

Hello,

I seem to have an issue with trim.seqs. I am using dual-indexed barcodes for sample multiplexing. I appended the same barcode to the forward and reverse primers. Sequences look like this and I have them in both directions:

{barcode1}{PrimerF}{Sequence}{PrimerR}{barcode1}
{barcode1}{PrimerR}{Sequence}{PrimerF}{barcode1}
{barcode2}{PrimerF}{Sequence}{PrimerR}{barcode2}
{barcode3}{PrimerF}{Sequence}{PrimerR}{barcode3}

I am trying to trim forward primers+barcode and reverse primers+barcode and assign each read to its corresponding sample. To do so I first do:
trim.seqs(fasta=Mock_contiged.fasta,oligos=Mock_R.oligos, maxambig=0, maxhomop=8, processors=4, bdiffs=0, pdiffs=0, checkorient=t)

Then I use the fasta output of that command to trim the other primers+barcode using:
trim.seqs(fasta=Mock_contiged.trim.fasta,oligos=Mock_F.oligos,minlength=300, maxlength=320, processors=4, bdiffs=0, pdiffs=0, checkorient=t)

Mock_R.oligos:
forward {primerR}
#reverse {primerF}
barcode {barcode1} Mock_P1
barcode {barcode2} Mock_P2
barcode {barcode3} Mock_P3

Mock_F.oligos:
forward {primerF}
#reverse {primerR}
barcode {barcode1} Mock_P1
barcode {barcode2} Mock_P2
barcode {barcode3} Mock_P3

The problem I have is that when I compare sample assignment in the two group files generated by the trim.seqs commands (above), the same sequence is sometimes assigned to different samples. However, after checking the sequence, it seems like they should have been assigned to same sample because they have the same barcode… Is that a bug? or I am doing something wrong?

Many thanks

Why not try an oligos like this?

Mock.oligos:
primer {primerF} {primerR}
barcode {barcode1} {barcode1} Mock_P1
barcode {barcode2} {barcode2} Mock_P2
barcode {barcode3} {barcode3} Mock_P3

If you need to you can always create another oligos and run any scrapped sequences with that one.

Mock2.oligos:
primer {primerR} {primerF}
barcode {barcode1} {barcode1} Mock_P1
barcode {barcode2} {barcode2} Mock_P2
barcode {barcode3} {barcode3} Mock_P3


mothur > trim.seqs(fasta=Mock_contiged.fasta,oligos=Mock.oligos, maxambig=0, maxhomop=8, processors=4, bdiffs=0, pdiffs=0, checkorient=t) mothur > trim.seqs(fasta=Mock_contiged.scrap.fasta,oligos=Mock2.oligos, maxambig=0, maxhomop=8, processors=4, bdiffs=0, pdiffs=0, checkorient=t)