use of org.renjin.sexp.StringVector in project polyGembler by c-zhou.
the class RenjinLOD method run.
@Override
public void run() {
// TODO Auto-generated method stub
final BidiMap<Integer, String> scaffs = new TreeBidiMap<Integer, String>();
final List<Double> boundary_lg = new ArrayList<Double>();
try {
BufferedReader br = Utils.getBufferedReader(txt_in);
String line = br.readLine();
String[] s;
while (line != null) {
if (line.startsWith("$order")) {
int i = 0;
while ((line = br.readLine()) != null && line.length() > 0) {
s = line.split("\\s+")[1].split("-");
for (String scf : s) scaffs.put(i++, scf.replaceAll("^scaffold", ""));
boundary_lg.add((double) i);
}
break;
}
line = br.readLine();
}
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int n = scaffs.size();
double[][] recomfJ = new double[n][n];
double[][] lodscrJ = new double[n][n];
final double constr = Math.log10(.5);
try {
String line;
String[] s;
Integer scf_i1, scf_i2;
double f, l, NR, R;
for (String in : ds_in) {
BufferedReader br = Utils.getBufferedReader(in);
while ((line = br.readLine()) != null) {
s = line.split("\\s+");
scf_i1 = scaffs.getKey(s[6]);
scf_i2 = scaffs.getKey(s[7]);
if (scf_i1 == null || scf_i2 == null)
continue;
f = Double.parseDouble(s[1]);
recomfJ[scf_i1][scf_i2] = f;
recomfJ[scf_i2][scf_i1] = f;
if (f == 0) {
l = 100.0;
} else {
NR = (1 - f);
R = f;
l = Math.min(100.0, n_hap * (Math.log10(NR) * NR + Math.log10(R) * R - constr));
}
lodscrJ[scf_i1][scf_i2] = l;
lodscrJ[scf_i2][scf_i1] = l;
}
br.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
DoubleMatrixBuilder reccoo = new DoubleMatrixBuilder(n * (n - 1), 5);
int w = 0;
for (int i = 1; i < n; i++) {
for (int j = 0; j < i; j++) {
reccoo.set(w, 0, j);
reccoo.set(w, 1, i);
reccoo.set(w, 2, j + 1);
reccoo.set(w, 3, i + 1);
reccoo.set(w, 4, lodscrJ[i][j]);
w++;
reccoo.set(w, 0, i);
reccoo.set(w, 1, j);
reccoo.set(w, 2, i + 1);
reccoo.set(w, 3, j + 1);
reccoo.set(w, 4, recomfJ[i][j]);
w++;
}
}
DoubleMatrixBuilder recomf = new DoubleMatrixBuilder(n, n);
DoubleMatrixBuilder lodscr = new DoubleMatrixBuilder(n, n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
recomf.set(i, j, recomfJ[i][j]);
lodscr.set(i, j, lodscrJ[i][j]);
}
}
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("Renjin");
if (engine == null) {
throw new RuntimeException("Renjin not found!!!");
}
StringVector scf = new StringArrayVector(scaffs.values());
recomf.setRowNames(scf);
recomf.setColNames(scf);
lodscr.setRowNames(scf);
lodscr.setColNames(scf);
try {
Context context = Context.newTopLevelContext();
FileOutputStream fos = new FileOutputStream(r_out);
GZIPOutputStream zos = new GZIPOutputStream(fos);
RDataWriter writer = new RDataWriter(context, zos);
ListVector.NamedBuilder dat = new ListVector.NamedBuilder();
dat.add("scaffs", scf);
dat.add("boundary_lg", new DoubleArrayVector(boundary_lg));
dat.add("recomf", recomf.build());
dat.add("lodscr", lodscr.build());
dat.add("reccoo", reccoo.build());
writer.save(dat.build());
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
use of org.renjin.sexp.StringVector in project polyGembler by c-zhou.
the class RenjinLOD method run2.
public void run2() {
// TODO Auto-generated method stub
final BidiMap<Integer, String> scaffs = new TreeBidiMap<Integer, String>();
final List<Double> boundary_lg = new ArrayList<Double>();
try {
BufferedReader br = Utils.getBufferedReader(txt_in);
String line = br.readLine();
String[] s;
while (line != null) {
if (line.startsWith("$order")) {
int i = 0;
while ((line = br.readLine()) != null && line.length() > 0) {
s = line.split("\\s+")[1].split("-");
for (String scf : s) scaffs.put(i++, scf.replaceAll("^scaffold", ""));
boundary_lg.add((double) i);
}
break;
}
line = br.readLine();
}
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
double[][] recomf = new double[scaffs.size()][scaffs.size()];
double[][] lodscr = new double[scaffs.size()][scaffs.size()];
final double constr = Math.log10(.5);
try {
String line;
String[] s;
Integer scf_i1, scf_i2;
double f, l, NR, R;
for (String in : ds_in) {
BufferedReader br = Utils.getBufferedReader(in);
while ((line = br.readLine()) != null) {
s = line.split("\\s+");
scf_i1 = scaffs.getKey(s[6]);
scf_i2 = scaffs.getKey(s[7]);
if (scf_i1 == null || scf_i2 == null)
continue;
f = Double.parseDouble(s[1]);
recomf[scf_i1][scf_i2] = f;
recomf[scf_i2][scf_i1] = f;
if (f == 0) {
l = 100.0;
} else {
NR = (1 - f);
R = f;
l = Math.min(100.0, n_hap * (Math.log10(NR) * NR + Math.log10(R) * R - constr));
}
lodscr[scf_i1][scf_i2] = l;
lodscr[scf_i2][scf_i1] = l;
}
br.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
StringVector scf = new StringArrayVector(scaffs.values());
}
use of org.renjin.sexp.StringVector in project polyGembler by c-zhou.
the class RFUtils method makeRMatrix.
/**
* make RData object from Renjin
* renjin-script-engine-*-with dependencies.jar required
* https://nexus.bedatadriven.com/content/groups/public/org/renjin/renjin-script-engine/
*/
protected static void makeRMatrix(String in_rf, String out_Rmat) {
// TODO Auto-generated method stub
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("Renjin");
if (engine == null) {
throw new RuntimeException("Renjin not found!!!");
}
try {
BufferedReader br = Utils.getBufferedReader(in_rf);
final BidiMap<Integer, String> scaffs = new TreeBidiMap<Integer, String>();
String line;
String[] s;
int w = 0;
while ((line = br.readLine()) != null && line.startsWith("##")) {
scaffs.put(w++, line.replaceAll("^##", ""));
}
int n = scaffs.size();
int A = w * (w - 1) / 2;
DoubleMatrixBuilder dMat = new DoubleMatrixBuilder(n, n);
DoubleMatrixBuilder iMat = new DoubleMatrixBuilder(n, n);
DoubleMatrixBuilder dAllMat = new DoubleMatrixBuilder(A * 2, 4);
w = 0;
while (line != null) {
s = line.split("\\s+");
int i = scaffs.getKey(s[5]), j = scaffs.getKey(s[6]);
double d = Double.parseDouble(s[0]);
dMat.set(i, j, d);
dMat.set(j, i, d);
iMat.set(i, j, w + 1);
iMat.set(j, i, w + 1 + A);
for (int k = 0; k < 4; k++) {
d = Double.parseDouble(s[k + 1]);
dAllMat.set(w, k, d);
dAllMat.set(w + A, (k == 0 || k == 3) ? k : (3 - k), d);
}
w++;
line = br.readLine();
}
br.close();
StringVector scf = new StringArrayVector(scaffs.values());
dMat.setRowNames(scf);
dMat.setColNames(scf);
iMat.setRowNames(scf);
iMat.setColNames(scf);
Context context = Context.newTopLevelContext();
FileOutputStream fos = new FileOutputStream(out_Rmat);
GZIPOutputStream zos = new GZIPOutputStream(fos);
RDataWriter writer = new RDataWriter(context, zos);
ListVector.NamedBuilder Rdat = new ListVector.NamedBuilder();
Rdat.add("scaffs", scf);
Rdat.add("n", n);
Rdat.add("A", A);
Rdat.add("distanceAll", dAllMat.build());
Rdat.add("indexMat", iMat.build());
Rdat.add("distanceMat", dMat.build());
writer.save(Rdat.build());
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Aggregations