/* * TransposeRank2DataSet.java * * Created on December 11, 2007, 10:19 PM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package org.das2.qds.util; import java.util.Arrays; import org.das2.qds.AbstractDataSet; import org.das2.qds.DataSetUtil; import org.das2.qds.QDataSet; /** * wrap a qube dataset to transpose the indeces. This brute force implementation * calculates the index mapping and is implemented without copying. For rank 4 * datasets, order[0] must equal 0. * * @author jbf */ public class TransposeRankNDataSet extends AbstractDataSet { QDataSet source; int[] order; int[] qube; final int shuffleType; private static final int SHUFFLE_123= 0; //brute force, good luck with rank 4. private static final int SHUFFLE_132= 1; private static final int SHUFFLE_213= 2; private static final int SHUFFLE_231= 3; private static final int SHUFFLE_312= 4; private static final int SHUFFLE_321= 5; public TransposeRankNDataSet( QDataSet source, int[] order ) { this.source= source; this.order= new int[order.length]; System.arraycopy( order, 0, this.order, 0, order.length ); this.qube= DataSetUtil.qubeDims(source); for ( int i=0; i