in progress...
[jalview.git] / forester / java / src / org / forester / application / check_fasta.java
index 2bac934..cba390e 100644 (file)
@@ -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<Sequence> seqs = FastaParser.parse( new FileInputStream( infile ) );
+                final List<MolecularSequence> seqs = FastaParser.parse( new FileInputStream( infile ) );
                 final Map<String, Short> names = new HashMap<String, Short>();
-                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<String, Short> names, final Sequence seq ) {
+    private static boolean procSeq( final String infile, final Map<String, Short> 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() {