Answered by:
Problem with jagged arrays

Question
-
Dear everyone
I have some troubles with jagged arrays.
I have defined the following Observed jagged array:
//Some used constant
int numRBPs = RBPs; Variable<int> numObservations = Variable.Observed(tmpGene.Length).Named("numObservations"); // some used ranges Range RBP = new Range(numRBPs).Named("RBP");
//Define SI Ranges int[] sizes = new int[numRBPs]; string[] RBPsList = new string[numRBPs]; LoadSizes(out sizes,out RBPsList, numGenes); Range SI = new Range(sizes.Length).Named("SI"); VariableArray<int> sizesVar = Variable.Constant(sizes, RBP).Named("sizes"); Range feature = new Range(sizesVar[RBP]).Named("feature"); var geneSI = Variable.Array(Variable.Array(Variable.Array<double>(feature), gene),RBP).Named("GeneSI"); LoadGeneSI(geneSI, numGenes, numRBPs, sizes, RBPsList, RBPsMap, genesMap); geneSI.IsReadOnly = false;
Then i have defined another jagged array of random variables:
var geneLatentSI = Variable.Array(Variable.Array<double>(feature), RBP);
The problems comes in the inference step. There I have to make the inner product and i would like to use the operator engine.Compiler.GivePriorityTo(typeof(GaussianProductOp_SHG09)) as in the recommender system example.
Making the following operation:
VariableArray<double> SIproducts = Variable.Array<double>(feature); SIproducts[feature] = geneSI[RBPData[observation]][geneData[observation]][feature] * geneLatentSI[RBPData[observation]][feature];
That is i have to make the product between each elements of two specific vectors of the observed jagged array "geneSI" and the jagged array of random variables "geneLatentSI". The elements of these arrays are indexed, as part of a jagged array, with "feature" RangeHowever that is idexed itself by RBP range. Since i want to access to each single elements as in the recommender system example
products[trait] = RBPTraits[RBPData[observation]][trait] * geneTraits[geneData[observation]][trait];
How can I make it works also for jagged arrays??
Thanks a lot
Marco
Sunday, August 18, 2013 1:46 PM
Answers
-
Read the last section of Indexing arrays by observed variables and see if it helps.
- Proposed as answer by John GuiverMicrosoft employee, Owner Wednesday, August 21, 2013 7:39 AM
- Marked as answer by MarcoASDF Wednesday, August 21, 2013 1:45 PM
Monday, August 19, 2013 9:15 AMOwner
All replies
-
Read the last section of Indexing arrays by observed variables and see if it helps.
- Proposed as answer by John GuiverMicrosoft employee, Owner Wednesday, August 21, 2013 7:39 AM
- Marked as answer by MarcoASDF Wednesday, August 21, 2013 1:45 PM
Monday, August 19, 2013 9:15 AMOwner -
Thank you very much for your help. Thanks to your advice I have solved the problem.Wednesday, August 21, 2013 1:45 PM