/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.autoplot.jythonsupport; import java.lang.reflect.Array; import org.das2.datum.Units; import org.python.core.PyArray; import org.python.core.PyList; import org.python.core.PyObject; import org.python.core.adapter.PyObjectAdapter; import org.das2.qds.ArrayDataSet; import org.das2.qds.DDataSet; import org.das2.qds.JoinDataSet; import org.das2.qds.QDataSet; import org.das2.qds.SemanticOps; import org.das2.qds.SparseDataSet; import org.das2.qds.ops.Ops; /** * Adapt QDataSet results to PyQDataSet, which provides __getitem__ * and __setitem__. (ds[0,0]=ds[0,0]+1) * @author jbf */ public class PyQDataSetAdapter implements PyObjectAdapter { @Override public boolean canAdapt(Object arg0) { if ( arg0 instanceof QDataSet ) { return true; } else { return false; } } @Override public PyObject adapt(Object arg0) { return new PyQDataSet((QDataSet) arg0); } // see usages elsewhere, this is sloppy. // TODO: consider if [ DSA, DSB ] should append( DSA, DSB ) where DSA DSB are datasets. /** * adapts list to QDataSet. * If this contains datums or rank 0 datasets with different units, then a bundle is returned. * TODO: Consider: if element is a string, then enumeration units are used. * @param p * @return */ public static QDataSet adaptList( PyList p ) { double[] j= new double[ p.size() ]; QDataSet d1; JoinDataSet jds= null; // support list of lists. Units u= null; Units[] us= new Units[p.size()]; // in case it's a bundle boolean isBundle= false; for ( int i=0; i