cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Check out the JMP® Marketplace featured Capability Explorer add-in
Choose Language Hide Translation Bar
Caspernam
Level I

Limit the number of factors per run in a DOE design

Hi, 

 

I'm screening 16 categorical factors (16 different genes that I'm activating), but the total amount of DNA I can deliver is limited, so the more genes I try to activate the weaker the activation is. Anything over 8 genes per run will be hard to interpret because of this dilutive effect. Is there a way to limit the number of factors in any one run to 8 targets, but still get info main effects and some 2FI of all 16? 

 

Thanks!

Casp

5 REPLIES 5

Re: Limit the number of factors per run in a DOE design

You must use Custom Design for this experiment. In particular, you need to specify a factor constraint. I used generic factor names X1 through X16 and generic factor levels L! and L2. I assume L1 is an inactive gene and L2 is an activated gene.

JMP represents false as 0 and true as 1. I test to see if factors are set to L2 (activated). If so, the comparison returns 1. I sum the comparisons' results and disallow any run greater than 8.

Here are the comparisons used in the script for the disallowed constraints.

Sum(
	X1 == 2,
	X2 == 2,
	X3 == 2,
	X4 == 2,
	X5 == 2,
	X7 == 2,
	X8 == 2,
	X9 == 2,
	X10 == 2,
	X11 == 2,
	X12 == 2,
	X13 == 2,
	X14 == 2,
	X15 == 2,
	X16 == 2
) > 8

Here is the script to launch the Custom Design platform and make your design:


DOE(
	Custom Design,
	{Add Response( Maximize, "Y", ., ., . ),
	Add Factor( Categorical, {"L1", "L2"}, "X1", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X2", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X3", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X4", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X5", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X6", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X7", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X8", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X9", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X10", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X11", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X12", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X13", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X14", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X15", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X16", 0 ), Set Random Seed( 5869303 ),
	Number of Starts( 1637 ), Add Term( {1, 0} ), Add Term( {1, 1} ),
	Add Term( {2, 1} ), Add Term( {3, 1} ), Add Term( {4, 1} ), Add Term( {5, 1} ),
	Add Term( {6, 1} ), Add Term( {7, 1} ), Add Term( {8, 1} ), Add Term( {9, 1} ),
	Add Term( {10, 1} ), Add Term( {11, 1} ), Add Term( {12, 1} ),
	Add Term( {13, 1} ), Add Term( {14, 1} ), Add Term( {15, 1} ),
	Add Term( {16, 1} ), Add Alias Term( {1, 1}, {2, 1} ),
	Add Alias Term( {1, 1}, {3, 1} ), Add Alias Term( {1, 1}, {4, 1} ),
	Add Alias Term( {1, 1}, {5, 1} ), Add Alias Term( {1, 1}, {6, 1} ),
	Add Alias Term( {1, 1}, {7, 1} ), Add Alias Term( {1, 1}, {8, 1} ),
	Add Alias Term( {1, 1}, {9, 1} ), Add Alias Term( {1, 1}, {10, 1} ),
	Add Alias Term( {1, 1}, {11, 1} ), Add Alias Term( {1, 1}, {12, 1} ),
	Add Alias Term( {1, 1}, {13, 1} ), Add Alias Term( {1, 1}, {14, 1} ),
	Add Alias Term( {1, 1}, {15, 1} ), Add Alias Term( {1, 1}, {16, 1} ),
	Add Alias Term( {2, 1}, {3, 1} ), Add Alias Term( {2, 1}, {4, 1} ),
	Add Alias Term( {2, 1}, {5, 1} ), Add Alias Term( {2, 1}, {6, 1} ),
	Add Alias Term( {2, 1}, {7, 1} ), Add Alias Term( {2, 1}, {8, 1} ),
	Add Alias Term( {2, 1}, {9, 1} ), Add Alias Term( {2, 1}, {10, 1} ),
	Add Alias Term( {2, 1}, {11, 1} ), Add Alias Term( {2, 1}, {12, 1} ),
	Add Alias Term( {2, 1}, {13, 1} ), Add Alias Term( {2, 1}, {14, 1} ),
	Add Alias Term( {2, 1}, {15, 1} ), Add Alias Term( {2, 1}, {16, 1} ),
	Add Alias Term( {3, 1}, {4, 1} ), Add Alias Term( {3, 1}, {5, 1} ),
	Add Alias Term( {3, 1}, {6, 1} ), Add Alias Term( {3, 1}, {7, 1} ),
	Add Alias Term( {3, 1}, {8, 1} ), Add Alias Term( {3, 1}, {9, 1} ),
	Add Alias Term( {3, 1}, {10, 1} ), Add Alias Term( {3, 1}, {11, 1} ),
	Add Alias Term( {3, 1}, {12, 1} ), Add Alias Term( {3, 1}, {13, 1} ),
	Add Alias Term( {3, 1}, {14, 1} ), Add Alias Term( {3, 1}, {15, 1} ),
	Add Alias Term( {3, 1}, {16, 1} ), Add Alias Term( {4, 1}, {5, 1} ),
	Add Alias Term( {4, 1}, {6, 1} ), Add Alias Term( {4, 1}, {7, 1} ),
	Add Alias Term( {4, 1}, {8, 1} ), Add Alias Term( {4, 1}, {9, 1} ),
	Add Alias Term( {4, 1}, {10, 1} ), Add Alias Term( {4, 1}, {11, 1} ),
	Add Alias Term( {4, 1}, {12, 1} ), Add Alias Term( {4, 1}, {13, 1} ),
	Add Alias Term( {4, 1}, {14, 1} ), Add Alias Term( {4, 1}, {15, 1} ),
	Add Alias Term( {4, 1}, {16, 1} ), Add Alias Term( {5, 1}, {6, 1} ),
	Add Alias Term( {5, 1}, {7, 1} ), Add Alias Term( {5, 1}, {8, 1} ),
	Add Alias Term( {5, 1}, {9, 1} ), Add Alias Term( {5, 1}, {10, 1} ),
	Add Alias Term( {5, 1}, {11, 1} ), Add Alias Term( {5, 1}, {12, 1} ),
	Add Alias Term( {5, 1}, {13, 1} ), Add Alias Term( {5, 1}, {14, 1} ),
	Add Alias Term( {5, 1}, {15, 1} ), Add Alias Term( {5, 1}, {16, 1} ),
	Add Alias Term( {6, 1}, {7, 1} ), Add Alias Term( {6, 1}, {8, 1} ),
	Add Alias Term( {6, 1}, {9, 1} ), Add Alias Term( {6, 1}, {10, 1} ),
	Add Alias Term( {6, 1}, {11, 1} ), Add Alias Term( {6, 1}, {12, 1} ),
	Add Alias Term( {6, 1}, {13, 1} ), Add Alias Term( {6, 1}, {14, 1} ),
	Add Alias Term( {6, 1}, {15, 1} ), Add Alias Term( {6, 1}, {16, 1} ),
	Add Alias Term( {7, 1}, {8, 1} ), Add Alias Term( {7, 1}, {9, 1} ),
	Add Alias Term( {7, 1}, {10, 1} ), Add Alias Term( {7, 1}, {11, 1} ),
	Add Alias Term( {7, 1}, {12, 1} ), Add Alias Term( {7, 1}, {13, 1} ),
	Add Alias Term( {7, 1}, {14, 1} ), Add Alias Term( {7, 1}, {15, 1} ),
	Add Alias Term( {7, 1}, {16, 1} ), Add Alias Term( {8, 1}, {9, 1} ),
	Add Alias Term( {8, 1}, {10, 1} ), Add Alias Term( {8, 1}, {11, 1} ),
	Add Alias Term( {8, 1}, {12, 1} ), Add Alias Term( {8, 1}, {13, 1} ),
	Add Alias Term( {8, 1}, {14, 1} ), Add Alias Term( {8, 1}, {15, 1} ),
	Add Alias Term( {8, 1}, {16, 1} ), Add Alias Term( {9, 1}, {10, 1} ),
	Add Alias Term( {9, 1}, {11, 1} ), Add Alias Term( {9, 1}, {12, 1} ),
	Add Alias Term( {9, 1}, {13, 1} ), Add Alias Term( {9, 1}, {14, 1} ),
	Add Alias Term( {9, 1}, {15, 1} ), Add Alias Term( {9, 1}, {16, 1} ),
	Add Alias Term( {10, 1}, {11, 1} ), Add Alias Term( {10, 1}, {12, 1} ),
	Add Alias Term( {10, 1}, {13, 1} ), Add Alias Term( {10, 1}, {14, 1} ),
	Add Alias Term( {10, 1}, {15, 1} ), Add Alias Term( {10, 1}, {16, 1} ),
	Add Alias Term( {11, 1}, {12, 1} ), Add Alias Term( {11, 1}, {13, 1} ),
	Add Alias Term( {11, 1}, {14, 1} ), Add Alias Term( {11, 1}, {15, 1} ),
	Add Alias Term( {11, 1}, {16, 1} ), Add Alias Term( {12, 1}, {13, 1} ),
	Add Alias Term( {12, 1}, {14, 1} ), Add Alias Term( {12, 1}, {15, 1} ),
	Add Alias Term( {12, 1}, {16, 1} ), Add Alias Term( {13, 1}, {14, 1} ),
	Add Alias Term( {13, 1}, {15, 1} ), Add Alias Term( {13, 1}, {16, 1} ),
	Add Alias Term( {14, 1}, {15, 1} ), Add Alias Term( {14, 1}, {16, 1} ),
	Add Alias Term( {15, 1}, {16, 1} ), Set Sample Size( 24 ),
	Disallowed Combinations(
		Sum(
			X1 == 2,
			X2 == 2,
			X3 == 2,
			X4 == 2,
			X5 == 2,
			X7 == 2,
			X8 == 2,
			X9 == 2,
			X10 == 2,
			X11 == 2,
			X12 == 2,
			X13 == 2,
			X14 == 2,
			X15 == 2,
			X16 == 2
		) > 8
	), Simulate Responses( 0 ), Save X Matrix( 0 ), Make Design}
);

I designed the experiment to estimate and test only the main effects for proof of principle. If this approach is satisfactory, you can change the model terms to suit your purpose.

 

 

Caspernam
Level I

Re: Limit the number of factors per run in a DOE design

Thank you for the reply, the above is super helpful. When I generate a design from the above I get runs of 7, 8, and 9 factors per run which I'm a little confused by.Any insight into why that's happening or how I can remedy it would be greatly appreciated.

Also, is there a way to lock it at 8 factors instead of <8? I tried changing the < to an = in the script for disallowed constraints but that invalidated the script... 

 

Thanks!

Re: Limit the number of factors per run in a DOE design

I tried to add another clause (the sum of active genes also had to be less than 8), but the result was worse! Here is the updated script:

DOE(
	Custom Design,
	{Add Response( Maximize, "Y", ., ., . ),
	Add Factor( Categorical, {"L1", "L2"}, "X1", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X2", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X3", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X4", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X5", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X6", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X7", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X8", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X9", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X10", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X11", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X12", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X13", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X14", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X15", 0 ),
	Add Factor( Categorical, {"L1", "L2"}, "X16", 0 ), Set Random Seed( 5869303 ),
	Number of Starts( 1637 ), Add Term( {1, 0} ), Add Term( {1, 1} ),
	Add Term( {2, 1} ), Add Term( {3, 1} ), Add Term( {4, 1} ), Add Term( {5, 1} ),
	Add Term( {6, 1} ), Add Term( {7, 1} ), Add Term( {8, 1} ), Add Term( {9, 1} ),
	Add Term( {10, 1} ), Add Term( {11, 1} ), Add Term( {12, 1} ),
	Add Term( {13, 1} ), Add Term( {14, 1} ), Add Term( {15, 1} ),
	Add Term( {16, 1} ), Add Alias Term( {1, 1}, {2, 1} ),
	Add Alias Term( {1, 1}, {3, 1} ), Add Alias Term( {1, 1}, {4, 1} ),
	Add Alias Term( {1, 1}, {5, 1} ), Add Alias Term( {1, 1}, {6, 1} ),
	Add Alias Term( {1, 1}, {7, 1} ), Add Alias Term( {1, 1}, {8, 1} ),
	Add Alias Term( {1, 1}, {9, 1} ), Add Alias Term( {1, 1}, {10, 1} ),
	Add Alias Term( {1, 1}, {11, 1} ), Add Alias Term( {1, 1}, {12, 1} ),
	Add Alias Term( {1, 1}, {13, 1} ), Add Alias Term( {1, 1}, {14, 1} ),
	Add Alias Term( {1, 1}, {15, 1} ), Add Alias Term( {1, 1}, {16, 1} ),
	Add Alias Term( {2, 1}, {3, 1} ), Add Alias Term( {2, 1}, {4, 1} ),
	Add Alias Term( {2, 1}, {5, 1} ), Add Alias Term( {2, 1}, {6, 1} ),
	Add Alias Term( {2, 1}, {7, 1} ), Add Alias Term( {2, 1}, {8, 1} ),
	Add Alias Term( {2, 1}, {9, 1} ), Add Alias Term( {2, 1}, {10, 1} ),
	Add Alias Term( {2, 1}, {11, 1} ), Add Alias Term( {2, 1}, {12, 1} ),
	Add Alias Term( {2, 1}, {13, 1} ), Add Alias Term( {2, 1}, {14, 1} ),
	Add Alias Term( {2, 1}, {15, 1} ), Add Alias Term( {2, 1}, {16, 1} ),
	Add Alias Term( {3, 1}, {4, 1} ), Add Alias Term( {3, 1}, {5, 1} ),
	Add Alias Term( {3, 1}, {6, 1} ), Add Alias Term( {3, 1}, {7, 1} ),
	Add Alias Term( {3, 1}, {8, 1} ), Add Alias Term( {3, 1}, {9, 1} ),
	Add Alias Term( {3, 1}, {10, 1} ), Add Alias Term( {3, 1}, {11, 1} ),
	Add Alias Term( {3, 1}, {12, 1} ), Add Alias Term( {3, 1}, {13, 1} ),
	Add Alias Term( {3, 1}, {14, 1} ), Add Alias Term( {3, 1}, {15, 1} ),
	Add Alias Term( {3, 1}, {16, 1} ), Add Alias Term( {4, 1}, {5, 1} ),
	Add Alias Term( {4, 1}, {6, 1} ), Add Alias Term( {4, 1}, {7, 1} ),
	Add Alias Term( {4, 1}, {8, 1} ), Add Alias Term( {4, 1}, {9, 1} ),
	Add Alias Term( {4, 1}, {10, 1} ), Add Alias Term( {4, 1}, {11, 1} ),
	Add Alias Term( {4, 1}, {12, 1} ), Add Alias Term( {4, 1}, {13, 1} ),
	Add Alias Term( {4, 1}, {14, 1} ), Add Alias Term( {4, 1}, {15, 1} ),
	Add Alias Term( {4, 1}, {16, 1} ), Add Alias Term( {5, 1}, {6, 1} ),
	Add Alias Term( {5, 1}, {7, 1} ), Add Alias Term( {5, 1}, {8, 1} ),
	Add Alias Term( {5, 1}, {9, 1} ), Add Alias Term( {5, 1}, {10, 1} ),
	Add Alias Term( {5, 1}, {11, 1} ), Add Alias Term( {5, 1}, {12, 1} ),
	Add Alias Term( {5, 1}, {13, 1} ), Add Alias Term( {5, 1}, {14, 1} ),
	Add Alias Term( {5, 1}, {15, 1} ), Add Alias Term( {5, 1}, {16, 1} ),
	Add Alias Term( {6, 1}, {7, 1} ), Add Alias Term( {6, 1}, {8, 1} ),
	Add Alias Term( {6, 1}, {9, 1} ), Add Alias Term( {6, 1}, {10, 1} ),
	Add Alias Term( {6, 1}, {11, 1} ), Add Alias Term( {6, 1}, {12, 1} ),
	Add Alias Term( {6, 1}, {13, 1} ), Add Alias Term( {6, 1}, {14, 1} ),
	Add Alias Term( {6, 1}, {15, 1} ), Add Alias Term( {6, 1}, {16, 1} ),
	Add Alias Term( {7, 1}, {8, 1} ), Add Alias Term( {7, 1}, {9, 1} ),
	Add Alias Term( {7, 1}, {10, 1} ), Add Alias Term( {7, 1}, {11, 1} ),
	Add Alias Term( {7, 1}, {12, 1} ), Add Alias Term( {7, 1}, {13, 1} ),
	Add Alias Term( {7, 1}, {14, 1} ), Add Alias Term( {7, 1}, {15, 1} ),
	Add Alias Term( {7, 1}, {16, 1} ), Add Alias Term( {8, 1}, {9, 1} ),
	Add Alias Term( {8, 1}, {10, 1} ), Add Alias Term( {8, 1}, {11, 1} ),
	Add Alias Term( {8, 1}, {12, 1} ), Add Alias Term( {8, 1}, {13, 1} ),
	Add Alias Term( {8, 1}, {14, 1} ), Add Alias Term( {8, 1}, {15, 1} ),
	Add Alias Term( {8, 1}, {16, 1} ), Add Alias Term( {9, 1}, {10, 1} ),
	Add Alias Term( {9, 1}, {11, 1} ), Add Alias Term( {9, 1}, {12, 1} ),
	Add Alias Term( {9, 1}, {13, 1} ), Add Alias Term( {9, 1}, {14, 1} ),
	Add Alias Term( {9, 1}, {15, 1} ), Add Alias Term( {9, 1}, {16, 1} ),
	Add Alias Term( {10, 1}, {11, 1} ), Add Alias Term( {10, 1}, {12, 1} ),
	Add Alias Term( {10, 1}, {13, 1} ), Add Alias Term( {10, 1}, {14, 1} ),
	Add Alias Term( {10, 1}, {15, 1} ), Add Alias Term( {10, 1}, {16, 1} ),
	Add Alias Term( {11, 1}, {12, 1} ), Add Alias Term( {11, 1}, {13, 1} ),
	Add Alias Term( {11, 1}, {14, 1} ), Add Alias Term( {11, 1}, {15, 1} ),
	Add Alias Term( {11, 1}, {16, 1} ), Add Alias Term( {12, 1}, {13, 1} ),
	Add Alias Term( {12, 1}, {14, 1} ), Add Alias Term( {12, 1}, {15, 1} ),
	Add Alias Term( {12, 1}, {16, 1} ), Add Alias Term( {13, 1}, {14, 1} ),
	Add Alias Term( {13, 1}, {15, 1} ), Add Alias Term( {13, 1}, {16, 1} ),
	Add Alias Term( {14, 1}, {15, 1} ), Add Alias Term( {14, 1}, {16, 1} ),
	Add Alias Term( {15, 1}, {16, 1} ), Set Sample Size( 24 ),
	Disallowed Combinations(
		Sum(
			X1 == 2,
			X2 == 2,
			X3 == 2,
			X4 == 2,
			X5 == 2,
			X7 == 2,
			X8 == 2,
			X9 == 2,
			X10 == 2,
			X11 == 2,
			X12 == 2,
			X13 == 2,
			X14 == 2,
			X15 == 2,
			X16 == 2
		) > 8 &
		Sum(
			X1 == 2,
			X2 == 2,
			X3 == 2,
			X4 == 2,
			X5 == 2,
			X7 == 2,
			X8 == 2,
			X9 == 2,
			X10 == 2,
			X11 == 2,
			X12 == 2,
			X13 == 2,
			X14 == 2,
			X15 == 2,
			X16 == 2
		) < 8
	), Simulate Responses( 0 ), Save X Matrix( 0 ), Make Design}
);

I attached the data table with the new experiment. I added a column to count each run's activated genes.

I think you should contact JMP support (support@jmp.com) to determine the problem and whether there is a workaround.

 

 

Re: Limit the number of factors per run in a DOE design

I think the first script delivered a better design. There are no more than 8 activated genes in any run. Why do you want it to be exactly 8?

The custom design is optimal for estimating the specified model. It is not a combinatorial result like all possible combinations of 8 active genes. You do not necessarily need such combinations to estimate and test the terms in the model.

Re: Limit the number of factors per run in a DOE design

How about using covariates to define the allowed combinations and then create a design with main effects, and adding all 2FI as if possible. You just need to remove X16 because of linear dependencies.  The covariates table could be created by using a full factorial design with 16 categorical factors with two levels 0 and 1. In the created table there are of course all combinations so we need to remove the ones with less or more than 8  actives. This can be done by changing the type of the categorical columns to numeric continuous. Then select all 16 columns right click -> new formula column -> combine -> sum.

Then select a row with value 8, right click, select matching cells. Go to menu tables-> subset, ok. This is the table with all rows where exactly 8 activations are there. This table is your covariate table. 

Menu-> DOE -> custom design. 

select covariates button, select X1-X16. Check if the initial X1 is removed and rename X1 2. unselect X1. In the model add 2FI, select all 2FI and click on necessary, change to if possible. delete X16 effect. Change number of runs to a feasible number (keeping in mind the minimum number of runs does not allow for any additional 2FI. Create the design.

 

Attached the full factorial design table, the subset table, the script to replicate the design with covariates. 

 

May DOE gurus can add if that is a feasible approach for such a situation. Or if there would be any argument not to follow that approach. 

 

/****NeverStopLearning****/