// Path: bionetdb-core/src/main/java/org/opencb/bionetdb/core/models/Expression.java
// public class Expression {
// 
//     // TODO: upregulated can be 0 (not upregulated) or 1 (upregulated). Include downregulated?
// 
//     private String id;
//     private double expression;
//     private double pvalue;
//     private double odds;
//     private int upregulated;
// 
//     public Expression() {
//         this("");
//     }
// 
//     public Expression(String id) {
//         this.id = id;
//         this.expression = -1;
//         this.pvalue = -1;
//         this.odds = -1;
//         this.upregulated = -1;
//     }
// 
//     @Override
//     public String toString() {
//         final StringBuilder sb = new StringBuilder("Expression{");
//         sb.append("id='").append(id).append('\'');
//         sb.append(", expression=").append(expression);
//         sb.append(", pvalue=").append(pvalue);
//         sb.append(", odds=").append(odds);
//         sb.append(", upregulated=").append(upregulated);
//         sb.append('}');
//         return sb.toString();
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public double getExpression() {
//         return expression;
//     }
// 
//     public void setExpression(double expression) {
//         this.expression = expression;
//     }
// 
//     public double getPvalue() {
//         return pvalue;
//     }
// 
//     public void setPvalue(double pvalue) {
//         this.pvalue = pvalue;
//     }
// 
//     public double getOdds() {
//         return odds;
//     }
// 
//     public void setOdds(double odds) {
//         this.odds = odds;
//     }
// 
//     public int getUpregulated() {
//         return upregulated;
//     }
// 
//     public void setUpregulated(int upregulated) {
//         this.upregulated = upregulated;
//     }
// 
// }


import org.opencb.bionetdb.core.models.Expression;
import org.opencb.commons.utils.FileUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
package org.opencb.bionetdb.core.io;



/**
 * Created by pfurio on 8/9/15.
 */
public class ExpressionParser {

    private Map<String, Map<String, String>> myFiles;

    public ExpressionParser(Path metadata) throws IOException {
        FileUtils.checkFile(metadata);

        myFiles = new HashMap<>();
        List<String> allLines = Files.readAllLines(metadata);
        for (String line : allLines) {
            String[] fields = line.split("\t");
            Map<String, String> timeSeries;
            if (myFiles.containsKey(fields[0])) {
                timeSeries = myFiles.get(fields[0]);
            } else {
                timeSeries = new HashMap<>();
            }
            timeSeries.put(fields[1], metadata.getParent().toString() + "/" + fields[2]);
            if (!myFiles.containsKey(fields[0])) {
                myFiles.put(fields[0], timeSeries);
            }
        }
    }

// Path: bionetdb-core/src/main/java/org/opencb/bionetdb/core/models/Expression.java
// public class Expression {
// 
//     // TODO: upregulated can be 0 (not upregulated) or 1 (upregulated). Include downregulated?
// 
//     private String id;
//     private double expression;
//     private double pvalue;
//     private double odds;
//     private int upregulated;
// 
//     public Expression() {
//         this("");
//     }
// 
//     public Expression(String id) {
//         this.id = id;
//         this.expression = -1;
//         this.pvalue = -1;
//         this.odds = -1;
//         this.upregulated = -1;
//     }
// 
//     @Override
//     public String toString() {
//         final StringBuilder sb = new StringBuilder("Expression{");
//         sb.append("id='").append(id).append('\'');
//         sb.append(", expression=").append(expression);
//         sb.append(", pvalue=").append(pvalue);
//         sb.append(", odds=").append(odds);
//         sb.append(", upregulated=").append(upregulated);
//         sb.append('}');
//         return sb.toString();
//     }
// 
//     public String getId() {
//         return id;
//     }
// 
//     public void setId(String id) {
//         this.id = id;
//     }
// 
//     public double getExpression() {
//         return expression;
//     }
// 
//     public void setExpression(double expression) {
//         this.expression = expression;
//     }
// 
//     public double getPvalue() {
//         return pvalue;
//     }
// 
//     public void setPvalue(double pvalue) {
//         this.pvalue = pvalue;
//     }
// 
//     public double getOdds() {
//         return odds;
//     }
// 
//     public void setOdds(double odds) {
//         this.odds = odds;
//     }
// 
//     public int getUpregulated() {
//         return upregulated;
//     }
// 
//     public void setUpregulated(int upregulated) {
//         this.upregulated = upregulated;
//     }
// 
// }


// Path: bionetdb-core/src/main/java/org/opencb/bionetdb/core/io/ExpressionParser.java
import org.opencb.bionetdb.core.models.Expression;
import org.opencb.commons.utils.FileUtils;
import java.io.BufferedReader;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

package org.opencb.bionetdb.core.io;



/**
 * Created by pfurio on 8/9/15.
 */
public class ExpressionParser {

    private Map<String, Map<String, String>> myFiles;

    public ExpressionParser(Path metadata) throws IOException {
        FileUtils.checkFile(metadata);

        myFiles = new HashMap<>();
        List<String> allLines = Files.readAllLines(metadata);
        for (String line : allLines) {
            String[] fields = line.split("\t");
            Map<String, String> timeSeries;
            if (myFiles.containsKey(fields[0])) {
                timeSeries = myFiles.get(fields[0]);
            } else {
                timeSeries = new HashMap<>();
            }
            timeSeries.put(fields[1], metadata.getParent().toString() + "/" + fields[2]);
            if (!myFiles.containsKey(fields[0])) {
                myFiles.put(fields[0], timeSeries);
            }
        }
    }

    public List<Expression> parse(String tissue, String time) throws IOException {