import java.lang.*;
import java.io.*;
import java.util.*;

import org.openscience.cdk.*;
import org.openscience.cdk.interfaces.*;
import org.openscience.cdk.smiles.*;
import org.openscience.cdk.DefaultChemObjectBuilder;
import org.openscience.cdk.exception.*;
import org.openscience.cdk.io.*;
import org.openscience.cdk.tools.MFAnalyser;

public class Mol2Smiles
{
    public static void main(String[] args) throws Exception {
        SmilesGenerator sg = new SmilesGenerator();
        int fileslength = args.length;
        if (fileslength < 1) {
            System.err.println("Usage: Mol2Smiles <filename>");
            System.exit(1);
        }
        for (int i = 0; i < fileslength; i++) {
            System.out.println(args[i]);
            String fileName = args[i];
            int lastPeriod = fileName.lastIndexOf(".");
            String name = fileName.substring(0, lastPeriod);
            FileInputStream fis = new FileInputStream(new File(args[i]));
            MDLReader reader = new MDLReader(fis);
            Molecule mol = new Molecule();
            IChemObject molecule = reader.read(mol);

            Molecule mol2 = (Molecule)molecule;
            String smiles = sg.createSMILES(new Molecule(mol2));
            System.out.println("smiles before MFA: " + smiles);
            MFAnalyser mfa = new MFAnalyser(mol2);
            IAtomContainer mol3 = mfa.removeHydrogensPreserveMultiplyBonded();
            String smiles2 = sg.createSMILES(new Molecule(mol3));
            System.out.println("smiles after MFA: " + smiles2);
            PrintStream fos = new PrintStream(name + ".smi");
            fos.println(smiles2);
            fos.close();
        }
    }
}
