X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=forester%2Fjava%2Fsrc%2Forg%2Fforester%2Fapplication%2Fcheck_fasta.java;h=cba390ecf5561e7c7d083b94742b363ee244d96a;hb=63685dd0262a506f0bf17cba6be1aa1ada5330f3;hp=2bac934259c626d369b0ac339d9593fc0180a10d;hpb=e8890012b315b30af8bf6c90db6e800b7d046147;p=jalview.git diff --git a/forester/java/src/org/forester/application/check_fasta.java b/forester/java/src/org/forester/application/check_fasta.java index 2bac934..cba390e 100644 --- a/forester/java/src/org/forester/application/check_fasta.java +++ b/forester/java/src/org/forester/application/check_fasta.java @@ -38,7 +38,7 @@ import org.forester.io.parsers.FastaParser; import org.forester.io.writers.SequenceWriter; import org.forester.io.writers.SequenceWriter.SEQ_FORMAT; import org.forester.sequence.BasicSequence; -import org.forester.sequence.Sequence; +import org.forester.sequence.MolecularSequence; import org.forester.util.CommandLineArguments; import org.forester.util.ForesterUtil; @@ -94,12 +94,17 @@ public final class check_fasta { } else { try { - final List seqs = FastaParser.parse( new FileInputStream( infile ) ); + final List seqs = FastaParser.parse( new FileInputStream( infile ) ); final Map names = new HashMap(); - for( final Sequence seq : seqs ) { - procSeq( infile.toString(), names, seq ); + int duplicates = 0; + for( final MolecularSequence seq : seqs ) { + if ( procSeq( infile.toString(), names, seq ) ) { + ++duplicates; + } + } + if ( duplicates > 0 ) { + SequenceWriter.writeSeqs( seqs, outfile, SEQ_FORMAT.FASTA, 60 ); } - SequenceWriter.writeSeqs( seqs, outfile, SEQ_FORMAT.FASTA, 60 ); } catch ( final IOException e ) { ForesterUtil.fatalError( PRG_NAME, e.getMessage() ); @@ -107,17 +112,20 @@ public final class check_fasta { } } - private static void procSeq( final String infile, final Map names, final Sequence seq ) { + private static boolean procSeq( final String infile, final Map names, final MolecularSequence seq ) { + boolean duplicate = false; final String name = seq.getIdentifier(); if ( !names.containsKey( name ) ) { names.put( name, ( short ) 1 ); } else { + duplicate = true; final short i = names.get( name ); ( ( BasicSequence ) seq ).setIdentifier( name + "_" + i ); names.put( name, ( short ) ( i + 1 ) ); - System.out.println( " " + infile + i + ": " + seq.getIdentifier() ); + System.out.println( " " + infile + " " + i + ": " + seq.getIdentifier() ); } + return duplicate; } private static void argumentsError() {