import java.util.Iterator;
import java.util.List;
-import me.prettyprint.cassandra.serializers.LongSerializer;
-import me.prettyprint.cassandra.serializers.StringSerializer;
-import me.prettyprint.hector.api.beans.ColumnSlice;
-import me.prettyprint.hector.api.beans.HColumn;
-import me.prettyprint.hector.api.beans.OrderedRows;
-import me.prettyprint.hector.api.beans.Row;
-import me.prettyprint.hector.api.factory.HFactory;
-import me.prettyprint.hector.api.query.QueryResult;
-import me.prettyprint.hector.api.query.RangeSlicesQuery;
-import me.prettyprint.hector.api.query.SliceQuery;
-import compbio.cassandra.CassandraCreate;
+import compbio.cassandra.CassandraNativeConnector;
import compbio.cassandra.DataBase;
public class StatisticsProt {
-// private final static long MILLISECONDS_PER_DAY = 1000L * 60 * 60 * 24;
- private CassandraCreate cc = new CassandraCreate();
+ private CassandraNativeConnector cc = new CassandraNativeConnector();
private ArrayList<DataBase> query;
private static long currentDate = 0;
private static long earlestDate = 0;
- /* query: the period from date1 till date2 */
+ /*
+ * query: the period from date1 till date2
+ * */
public List<DataBase> readDetails(String date1, String date2) {
-
+
if (!isThisDateValid(date1) || !isThisDateValid(date2)) {
System.out.println("Wrong date: point 1");
return null;
SetDateRange();
long dateStart = DateParsing(date1);
long dateEnd = DateParsing(date2);
- if ((dateStart < earlestDate && dateEnd < earlestDate) || (dateStart > currentDate && dateEnd > currentDate)
- || dateStart > dateEnd)
+ if ((dateStart < earlestDate && dateEnd < earlestDate) || (dateStart > currentDate && dateEnd > currentDate) || dateStart > dateEnd)
return null;
if (dateStart < earlestDate)
dateStart = earlestDate;
end.setTime(new Date(dateEnd));
query = new ArrayList<DataBase>();
int day = 0;
+ /*
for (Date date = start.getTime(); !start.after(end); start.add(Calendar.DATE, 1), date = start.getTime()) {
SliceQuery<Long, String, String> result = HFactory.createSliceQuery(cc.GetKeyspace(), LongSerializer.get(),
StringSerializer.get(), StringSerializer.get());
} else {
System.out.println("no data");
}
- // dateStart += MILLISECONDS_PER_DAY;
}
+ */
System.out.println("StatisticsProt.readLength: total number of dates = " + query.size());
return query;
}
/*
* query: execution time for the period from date1 till date2
- */
+ * */
public List<DataBase> readLength(String date1, String date2) {
if (!isThisDateValid(date1) || !isThisDateValid(date2)) {
System.out.println("Wrong date: point 3");
return null;
}
SetDateRange();
+ int nbins = 5;
long dateStart = DateParsing(date1);
long dateEnd = DateParsing(date2);
- if ((dateStart < earlestDate && dateEnd < earlestDate) || (dateStart > currentDate && dateEnd > currentDate)
- || dateStart > dateEnd)
+ if ((dateStart < earlestDate && dateEnd < earlestDate) || (dateStart > currentDate && dateEnd > currentDate) || dateStart > dateEnd)
return null;
if (dateStart < earlestDate)
dateStart = earlestDate;
end.setTime(new Date(dateEnd));
query = new ArrayList<DataBase>();
List<Integer> totalTime = new ArrayList<Integer>();
- for (int i = 0; i < 4; i++)
+ for (int i = 0; i < nbins; i++)
totalTime.add(i, 0);
+ /*
for (Date date = start.getTime(); !start.after(end); start.add(Calendar.DATE, 1), date = start.getTime()) {
List<Integer> timeResult = new ArrayList<Integer>();
SliceQuery<Long, String, String> result = HFactory.createSliceQuery(cc.GetKeyspace(), LongSerializer.get(),
List<HColumn<String, String>> col = columnSlice.get().getColumns();
if (!col.isEmpty()) {
Iterator<HColumn<String, String>> itCol = col.iterator();
- for (int i = 0; i < 4; i++)
+ for (int i = 0; i < nbins; i++)
timeResult.add(i, 0);
+ // split all jobs into nbins bins
while (itCol.hasNext()) {
String id = itCol.next().getName();
long lenResult = CountID(id);
- if (lenResult <= 30)
+ if (lenResult <= 30)
timeResult.set(0, timeResult.get(0) + 1);
else if (lenResult > 30 && lenResult <= 60)
timeResult.set(1, timeResult.get(1) + 1);
else if (lenResult > 60 && lenResult <= 120)
timeResult.set(2, timeResult.get(2) + 1);
- else {
+ else if (lenResult > 120 && lenResult <= 600)
timeResult.set(3, timeResult.get(3) + 1);
+ else {
+ timeResult.set(4, timeResult.get(4) + 1);
}
}
- for (int i = 0; i < 4; i++)
+ for (int i = 0; i < nbins; i++)
totalTime.set(i, totalTime.get(i) + timeResult.get(i));
DataBase db = new DataBase();
db.setTimeRez(timeResult);
db.setDate(DateFormat(date.getTime()));
query.add(db);
}
- // dateStart += MILLISECONDS_PER_DAY;
}
+ */
DataBase db = new DataBase();
db.setTimeTotalExec(totalTime);
query.add(db);
return query;
}
- /* query: protein sequence */
+ /*
+ * query: protein sequence
+ * */
public List<DataBase> readProteins(String protIn) {
query = new ArrayList<DataBase>();
+ /*
SliceQuery<String, String, String> result = HFactory.createSliceQuery(cc.GetKeyspace(), StringSerializer.get(),
StringSerializer.get(), StringSerializer.get());
result.setColumnFamily("ProteinRow");
query.add(db);
}
}
+ */
return query;
}
- // query by a protein sequence
+ /*
+ * query by a protein sequence
+ * */
public List<DataBase> readProtID(int counter) {
query = new ArrayList<DataBase>();
- int row_count = 100000000;
+ int row_count = 100;
+ /*
RangeSlicesQuery<String, String, String> result = HFactory.createRangeSlicesQuery(cc.GetKeyspace(), StringSerializer.get(),
StringSerializer.get(), StringSerializer.get());
result.setColumnFamily("ProteinRow");
- result.setRange(null, null, false, Integer.MAX_VALUE);
+ result.setRange(null, null, false, 100);
result.setRowCount(row_count);
String last_key = null;
while (true) {
Row<String, String, String> row = rowsIterator.next();
last_key = row.getKey();
List<HColumn<String, String>> clms = row.getColumnSlice().getColumns();
- int npred = 0;
- for (HColumn<String, String> cln : clms) {
- String name = cln.getName();
- if (name.matches("(.*)jnetpred")) {
- ++npred;
- }
- }
+ //int npred = 0;
+ //for (HColumn<String, String> cln : clms) {
+ // String name = cln.getName();
+ // if (name.matches("(.*)jnetpred")) {
+ // ++npred;
+ // }
+ //}
+ int npred = clms.size();
if (npred > counter) {
DataBase db = new DataBase();
db.setProt(last_key);
}
if (rows.getCount() < row_count)
break;
- }
+ }*/
return query;
}
- // query by a part of sequence
+ /*
+ * query by a part of sequence
+ * */
public List<DataBase> readPart(String protIn) {
int row_count = 10000;
query = new ArrayList<DataBase>();
+ /*
RangeSlicesQuery<String, String, String> result = HFactory.createRangeSlicesQuery(cc.GetKeyspace(), StringSerializer.get(),
StringSerializer.get(), StringSerializer.get());
result.setColumnFamily("ProteinRow");
if (rows.getCount() < row_count)
break;
}
+ */
return query;
}
- // convert String to Date
+ /*
+ * convert String date into long date (miliseconds since the epoch start)
+ */
private static long DateParsing(String datInput) {
if (datInput == null) {
return 0;
return dateWorkSt;
}
- // convert String to Date
+ /*
+ * convert String date:time into long date:time (miliseconds since the epoch start)
+ */
private static long TimeConvert(String datInput) {
long dateWorkSt = 0;
if (datInput == null) {
}
/*
- * private static String DateFormat1(long inDate) { SimpleDateFormat
- * datformat = new SimpleDateFormat("yyyy/MM/dd:hh:mm:ss"); String
- * dateString = datformat.format(new Date(inDate)); return dateString; }
+ * convert ???
*/
public static String DateFormatYYMMDD(long indate) {
SimpleDateFormat datformat = new SimpleDateFormat("yyyy/MM/dd");
return dateString;
}
+ /*
+ * ???
+ */
public long CountID(String id) {
+ /*
SliceQuery<String, String, String> sliceQuery = HFactory.createSliceQuery(cc.GetKeyspace(), StringSerializer.get(),
StringSerializer.get(), StringSerializer.get());
sliceQuery.setColumnFamily("ProteinLog").setKey(id).setRange("", "", false, 100);
long datBeginLong = TimeConvert(datBegin);
long datEndLong = TimeConvert(datEnd);
return (datEndLong - datBeginLong) / 1000;
+ */
+ return 0;
}
+ /*
+ * set earlest date and current dates.
+ * earlestDate is static and should be set at the 1st call
+ * currentDate should be re-calculated every time
+ */
private static void SetDateRange() {
if (0 == earlestDate) {
StatisticsProt sp = new StatisticsProt();
return true;
}
- // find the earliest date
+ /*
+ * find the earliest date in the database
+ */
public long earliestDate() {
ArrayList<Long> dateSort = new ArrayList<Long>();
int row_count = 10000;
+ /*
RangeSlicesQuery<Long, String, String> result = HFactory.createRangeSlicesQuery(cc.GetKeyspace(), LongSerializer.get(),
StringSerializer.get(), StringSerializer.get());
result.setColumnFamily("ProteinData");
}
if (rows.getCount() < row_count)
break;
- }
+ }*/
Collections.sort(dateSort);
return dateSort.get(0);
}