public static void evaluateStdin(
            HashMap < String , HashMap < Integer , Double > > relevance_judgments, HashMap < String ,
            HashMap < Integer , Double > > relevance_judgments_2, InputStream path){
        // only consider one query per call
        StringBuffer input = new StringBuffer();
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(path));

            String line = null;
            double RR = 0.0;
            double N = 0.0;
            String query="";
            StringBuffer output = new StringBuffer();
            while ((line = reader.readLine()) != null && !line.equalsIgnoreCase("sanghavistop")){
                input.append(line);
                input.append("\n");
                Scanner s = new Scanner(line).useDelimiter("\t");
                query = s.next();
                int did = Integer.parseInt(s.next());

                if (!relevance_judgments.containsKey(query)){
                    throw new IOException("query not found");
                }
                HashMap < Integer , Double > qr = relevance_judgments.get(query);
                if (qr.containsKey(did)){
                    RR += qr.get(did);
                }
                ++N;
            }

            File file = new File ("../results/input-to-evaluator.tsv");
            if (file.exists()) {
                file.delete();
            }
            FileUtil.write("input-to-evaluator.tsv", input.toString());
            // CALL THE EVALUATORS

            double v1 = evaluatePrecision(1, relevance_judgments, "./results/input-to-evaluator.tsv");
            double v2 = evaluatePrecision(5, relevance_judgments, "./results/input-to-evaluator.tsv");
            double v3 = evaluatePrecision(10, relevance_judgments, "./results/input-to-evaluator.tsv");
            double v4 = evaluateRecall(1, relevance_judgments, "./results/input-to-evaluator.tsv");
            double v5 = evaluateRecall(5, relevance_judgments, "./results/input-to-evaluator.tsv");
            double v6 = evaluateRecall(10, relevance_judgments, "./results/input-to-evaluator.tsv");
            double v7 = evaluateFMeasure(1, relevance_judgments, 0.5, "./results/input-to-evaluator.tsv");
            double v8 = evaluateFMeasure(5, relevance_judgments, 0.5, "./results/input-to-evaluator.tsv");
            double v9 = evaluateFMeasure(10, relevance_judgments, 0.5, "./results/input-to-evaluator.tsv");
            HashMap<Double,Double> prg = evaluatePrecisionRecallGraph(relevance_judgments, "./results/input-to-evaluator.tsv");
            double v10 = evaluateAveragePrecision(relevance_judgments, "./results/input-to-evaluator.tsv");
            double v11 = evaluateNDCG(1, relevance_judgments_2, "./results/input-to-evaluator.tsv");
            double v12 = evaluateNDCG(5, relevance_judgments_2, "./results/input-to-evaluator.tsv");
            double v13 = evaluateNDCG(10, relevance_judgments_2, "./results/input-to-evaluator.tsv");
            double v14 = evaluateReciprocalRank(relevance_judgments, "./results/input-to-evaluator.tsv");

            System.out.println(v1 +"\t" +  v2 +"\t" + v3+"\t" +v4+"\t" +v5+"\t" +v6+"\t" +v7+"\t" +v8+"\t" +v9+"\t"
                    +v10+"\t" +v11+"\t" +v12+"\t" +v13+"\t" +v14);

            output.append(query+"\t");
            output.append(v1 +"\t" +  v2 +"\t" + v3+"\t" +v4+"\t" +v5+"\t" +v6+"\t" +v7+"\t" +v8+"\t" +v9+"\t");
            for(double i = 0.0; i <= 1.0; i = i + 0.1){
                double t = prg.get(i);
                output.append(t +"\t");
            }
            output.append(+v10+"\t" +v11+"\t" +v12+"\t" +v13+"\t" +v14);

            FileUtil.write("output-file-please-rename.tsv", output.toString());

        } catch (Exception e){
            e.printStackTrace();
        }
    }