com.hosniah.grid.ArtMiner_bgrt.java Source code

Java tutorial

Introduction

Here is the source code for com.hosniah.grid.ArtMiner_bgrt.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package com.hosniah.grid;

import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import de.unikassel.cs.kde.trias.TriasRunner;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author hosniah
 * @param 
 */
public class ArtMiner_bgrt {

    private final String premise;
    private final String conclusion;
    public final String frequentTriconcept;
    public double conditionalTriadicSupport;
    public double conditionalTriadicConfidence;
    public boolean belongsToBGRT;
    public int cardinalOfSimilarTC;
    private final ArrayList<String> tasks;
    private final Multimap<Integer, String> extractionContext;
    private final String[] sites;
    private final String[] filesOFRA;

    public ArtMiner_bgrt(String premise, String conclusion, String[] FilesOfRA, String[] tasks, String[] sites) {
        super();
        this.premise = premise;
        this.conclusion = conclusion;
        this.tasks = new ArrayList<String>(Arrays.asList(tasks));
        this.frequentTriconcept = "Tasks = " + Arrays.toString(tasks) + ", Files = " + Arrays.toString(FilesOfRA)
                + ", Sites =" + Arrays.toString(sites);
        this.conditionalTriadicSupport = 0;
        this.conditionalTriadicConfidence = 0;
        this.belongsToBGRT = false;
        this.extractionContext = formatAndReduceExtractionContext();
        this.sites = sites;
        this.filesOFRA = FilesOfRA;
    }

    private Multimap<Integer, String> formatAndReduceExtractionContext() {
        // Table<String, String, Integer> table = HashBasedTable.create();
        //Table<String, String, String> table = HashBasedTable.create();
        Multimap<Integer, String> multimap = ArrayListMultimap.create();

        try {

            FileInputStream fstream = new FileInputStream("fixture.input");
            BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
            String strLine;
            while ((strLine = br.readLine()) != null) {
                String[] splitStr = strLine.split("\\s+");
                //Reduce extraction context to domain support, only tasks of RA are considered
                if (this.tasks.contains(splitStr[0])) {
                    multimap.put(Integer.parseInt(splitStr[0]), splitStr[1] + "-" + splitStr[2]);
                }
            }

            //@Debug
            //   System.out.println("Tasks Of RA: "+this.tasks.toString());
            //   System.out.println("multimap : "+ multimap.toString());

        } catch (IOException ex) {
            Logger.getLogger(TriasRunner.class.getName()).log(Level.SEVERE, null, ex);
        }

        //   System.out.println(mapcolumn);

        return multimap;
    }

    public double computeConditionalTriadicSupport(int cardinalOfSimilarTC) {
        int incidence = 0;
        // double support     = 0;
        int tasksGroupSize = this.tasks.size();
        // this.extractionContext.columnKeySet();
        // Map<String, Map<String, String>> mapcolumn = this.extractionContext.rowMap();
        //Map<String, Map<String, String>> mapcolumn = this.extractionContext.columnMap();

        Set keySet = this.extractionContext.keySet();
        Iterator keyIterator = keySet.iterator();
        while (keyIterator.hasNext()) {
            Integer key = (Integer) keyIterator.next();
            Collection<String> values = this.extractionContext.get(key);
            Multimap<Integer, String> occurence_map = ArrayListMultimap.create();
            for (String occurence : values) {
                String[] file2site = occurence.split("-");
                //use sites as keys and files as values
                occurence_map.put(Integer.parseInt(file2site[1]), file2site[0]);
            }

            /* Context is now formatted as
               {S1=[F2, F3, F4], S2=[F2, F4], S3=[F3, F4], S4=[F1, F3, F5]}
             */
            for (Collection<String> col : occurence_map.asMap().values()) {
                //   System.out.println(col);
                Object[] arr1 = col.toArray();

                Set<Object> set1 = new TreeSet<Object>();
                Set<String> set2 = new TreeSet<String>(String.CASE_INSENSITIVE_ORDER);

                set1.addAll(Arrays.asList(arr1));
                set2.addAll(Arrays.asList(this.filesOFRA));

                if (set1.containsAll(set2)) {
                    incidence++;
                    //System.out.println("Increment Support right here"); 
                }
            }

            //iterate on Gridsites ,then on collection, if a
            //System.out.println(values.toString());
        }

        //    System.out.println("+++++++++ "+occurence_map.toString());

        // support = (incidence/tasksGroupSize)/cardinalOfSimilarTC;
        double support = incidence / tasksGroupSize;
        double supp_c = support / cardinalOfSimilarTC;

        System.out.println("support count..." + incidence);
        System.out.println("task count..." + tasksGroupSize);
        System.out.println("Similar TC count..." + cardinalOfSimilarTC);
        System.out.println(" ----- Support_c = " + supp_c);

        this.conditionalTriadicSupport = supp_c;

        return this.conditionalTriadicSupport;
    }

    public double computeConditionalTriadicConfidence() {
        this.conditionalTriadicConfidence = 1; // this.conditionalTriadicSupport /suppc(this.premise)
        return this.conditionalTriadicConfidence;
    }

    public void addToBGRT() {
        this.belongsToBGRT = true;
    }

}