public static void main(String[] args) throws IOException {

        Settings settings = new Settings();

        try {

            JCommander JC = new JCommander(settings, args);


        } catch (Exception E) {

            System.err.println("\n" + E.getMessage());
            Usage.printUsage();
            System.exit(-1);
        }

        SimpleDateFormat ft = new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");
        System.out.println( "\n" + ft.format(new Date()) );

        /***
         * Load all the recombination rate file into map
         */
        Map<String, List<GeneticMarker>> geneticMarkerMap = new HashMap<String, List<GeneticMarker>>();

        geneticMarkerMap = Data.LoadLoadGeneticMap(settings.hapMapFolder);

        /***
         * Read query file
         */
        BufferedReader br = new BufferedReader( new FileReader(settings.queryRegionFile));
        String sLine;

        BufferedWriter bw = new BufferedWriter( new FileWriter(settings.outPutFile));

        /***
         * Process each line
         */
        while( ( sLine = br.readLine())!= null ) {

            String[] chunks = sLine.split("\t");

            if( chunks.length < 3 || ! geneticMarkerMap.containsKey(chunks[0])) {

                bw.write( sLine + "\t" + "\n");
                continue;
            }

            String chr = chunks[0];
            int start  = Integer.parseInt(chunks[1]);
            int end    = Integer.parseInt(chunks[2]);

            //List<GeneticMarker> geneticMarkerList = geneticMarkerMap.get( chr );

            //System.out.println(sLine + "\t" + geneticMarkerList.size());

            GeneticMarker queryMarker = new GeneticMarker(chr, start,end,0,0);

            float rvalue = MyUtils.QueryRecombinationRate(queryMarker, geneticMarkerMap.get(chr));

            bw.write( sLine + "\t" + rvalue + "\n");
        }

        br.close();
        bw.close();
    }