1+ <!DOCTYPE html>
2+
3+ < html lang ="en " data-content_root ="../../../../ ">
4+ < head >
5+ < meta charset ="utf-8 " />
6+ < meta name ="viewport " content ="width=device-width, initial-scale=1.0 " />
7+ < title > TACTICS.thompson_sampling.strategies.base_strategy — TACTICS documentation</ title >
8+ < link rel ="stylesheet " type ="text/css " href ="../../../../_static/pygments.css?v=5ecbeea2 " />
9+ < link rel ="stylesheet " type ="text/css " href ="../../../../_static/basic.css?v=b08954a9 " />
10+ < link rel ="stylesheet " type ="text/css " href ="../../../../_static/alabaster.css?v=27fed22d " />
11+ < script src ="../../../../_static/documentation_options.js?v=5929fcd5 "> </ script >
12+ < script src ="../../../../_static/doctools.js?v=fd6eb6e6 "> </ script >
13+ < script src ="../../../../_static/sphinx_highlight.js?v=6ffebe34 "> </ script >
14+ < link rel ="index " title ="Index " href ="../../../../genindex.html " />
15+ < link rel ="search " title ="Search " href ="../../../../search.html " />
16+
17+ < link rel ="stylesheet " href ="../../../../_static/custom.css " type ="text/css " />
18+
19+
20+
21+
22+
23+ </ head > < body >
24+
25+
26+ < div class ="document ">
27+ < div class ="documentwrapper ">
28+ < div class ="bodywrapper ">
29+
30+
31+ < div class ="body " role ="main ">
32+
33+ < h1 > Source code for TACTICS.thompson_sampling.strategies.base_strategy</ h1 > < div class ="highlight "> < pre >
34+ < span > </ span > < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> abc</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> ABC</ span > < span class ="p "> ,</ span > < span class ="n "> abstractmethod</ span >
35+ < span class ="kn "> from</ span > < span class ="w "> </ span > < span class ="nn "> typing</ span > < span class ="w "> </ span > < span class ="kn "> import</ span > < span class ="n "> List</ span > < span class ="p "> ,</ span > < span class ="n "> Tuple</ span > < span class ="p "> ,</ span > < span class ="n "> Optional</ span >
36+ < span class ="kn "> import</ span > < span class ="w "> </ span > < span class ="nn "> numpy</ span > < span class ="w "> </ span > < span class ="k "> as</ span > < span class ="w "> </ span > < span class ="nn "> np</ span >
37+
38+ < div class ="viewcode-block " id ="SelectionStrategy ">
39+ < a class ="viewcode-back " href ="../../../../thompson_sampling.html#TACTICS.thompson_sampling.strategies.base_strategy.SelectionStrategy "> [docs]</ a >
40+ < span class ="k "> class</ span > < span class ="w "> </ span > < span class ="nc "> SelectionStrategy</ span > < span class ="p "> (</ span > < span class ="n "> ABC</ span > < span class ="p "> ):</ span >
41+ < span class ="w "> </ span > < span class ="sd "> """Abstract base class for reagent selection strategies"""</ span >
42+
43+ < div class ="viewcode-block " id ="SelectionStrategy.__init__ ">
44+ < a class ="viewcode-back " href ="../../../../thompson_sampling.html#TACTICS.thompson_sampling.strategies.base_strategy.SelectionStrategy.__init__ "> [docs]</ a >
45+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="fm "> __init__</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> mode</ span > < span class ="p "> :</ span > < span class ="nb "> str</ span > < span class ="o "> =</ span > < span class ="s2 "> "maximize"</ span > < span class ="p "> ):</ span >
46+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> mode</ span > < span class ="o "> =</ span > < span class ="n "> mode</ span > </ div >
47+
48+
49+ < div class ="viewcode-block " id ="SelectionStrategy.select_reagent ">
50+ < a class ="viewcode-back " href ="../../../../thompson_sampling.html#TACTICS.thompson_sampling.strategies.base_strategy.SelectionStrategy.select_reagent "> [docs]</ a >
51+ < span class ="nd "> @abstractmethod</ span >
52+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> select_reagent</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span >
53+ < span class ="n "> reagent_list</ span > < span class ="p "> :</ span > < span class ="n "> List</ span > < span class ="p "> ,</ span >
54+ < span class ="n "> disallow_mask</ span > < span class ="p "> :</ span > < span class ="nb "> set</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span > < span class ="p "> ,</ span >
55+ < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="nb "> int</ span > < span class ="p "> :</ span >
56+ < span class ="w "> </ span > < span class ="sd "> """</ span >
57+ < span class ="sd "> Select a reagent index from the list</ span >
58+
59+ < span class ="sd "> Parameters:</ span >
60+ < span class ="sd "> -----------</ span >
61+ < span class ="sd "> reagent_list : List</ span >
62+ < span class ="sd "> List of reagent objects with posterior distributions</ span >
63+ < span class ="sd "> disallow_mask : set</ span >
64+ < span class ="sd "> Indices to exclude from selection</ span >
65+ < span class ="sd "> **kwargs : dict</ span >
66+ < span class ="sd "> Strategy-specific parameters</ span >
67+
68+ < span class ="sd "> Returns:</ span >
69+ < span class ="sd "> --------</ span >
70+ < span class ="sd "> int : Selected reagent index</ span >
71+ < span class ="sd "> """</ span >
72+ < span class ="k "> pass</ span > </ div >
73+
74+
75+ < div class ="viewcode-block " id ="SelectionStrategy.select_batch ">
76+ < a class ="viewcode-back " href ="../../../../thompson_sampling.html#TACTICS.thompson_sampling.strategies.base_strategy.SelectionStrategy.select_batch "> [docs]</ a >
77+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> select_batch</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span >
78+ < span class ="n "> reagent_list</ span > < span class ="p "> :</ span > < span class ="n "> List</ span > < span class ="p "> ,</ span >
79+ < span class ="n "> batch_size</ span > < span class ="p "> :</ span > < span class ="nb "> int</ span > < span class ="p "> ,</ span >
80+ < span class ="n "> disallow_mask</ span > < span class ="p "> :</ span > < span class ="nb "> set</ span > < span class ="o "> =</ span > < span class ="kc "> None</ span > < span class ="p "> ,</ span >
81+ < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> ndarray</ span > < span class ="p "> :</ span >
82+ < span class ="w "> </ span > < span class ="sd "> """</ span >
83+ < span class ="sd "> Select multiple reagent indices from the list (batch selection)</ span >
84+
85+ < span class ="sd "> Default implementation: call select_reagent multiple times.</ span >
86+ < span class ="sd "> Strategies can override this for more efficient batch selection.</ span >
87+
88+ < span class ="sd "> Parameters:</ span >
89+ < span class ="sd "> -----------</ span >
90+ < span class ="sd "> reagent_list : List</ span >
91+ < span class ="sd "> List of reagent objects with posterior distributions</ span >
92+ < span class ="sd "> batch_size : int</ span >
93+ < span class ="sd "> Number of reagents to select</ span >
94+ < span class ="sd "> disallow_mask : set</ span >
95+ < span class ="sd "> Indices to exclude from selection</ span >
96+ < span class ="sd "> **kwargs : dict</ span >
97+ < span class ="sd "> Strategy-specific parameters</ span >
98+
99+ < span class ="sd "> Returns:</ span >
100+ < span class ="sd "> --------</ span >
101+ < span class ="sd "> np.ndarray : Array of selected reagent indices</ span >
102+ < span class ="sd "> """</ span >
103+ < span class ="k "> return</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> array</ span > < span class ="p "> ([</ span >
104+ < span class ="bp "> self</ span > < span class ="o "> .</ span > < span class ="n "> select_reagent</ span > < span class ="p "> (</ span > < span class ="n "> reagent_list</ span > < span class ="p "> ,</ span > < span class ="n "> disallow_mask</ span > < span class ="p "> ,</ span > < span class ="o "> **</ span > < span class ="n "> kwargs</ span > < span class ="p "> )</ span >
105+ < span class ="k "> for</ span > < span class ="n "> _</ span > < span class ="ow "> in</ span > < span class ="nb "> range</ span > < span class ="p "> (</ span > < span class ="n "> batch_size</ span > < span class ="p "> )</ span >
106+ < span class ="p "> ])</ span > </ div >
107+
108+
109+ < div class ="viewcode-block " id ="SelectionStrategy.prepare_scores ">
110+ < a class ="viewcode-back " href ="../../../../thompson_sampling.html#TACTICS.thompson_sampling.strategies.base_strategy.SelectionStrategy.prepare_scores "> [docs]</ a >
111+ < span class ="k "> def</ span > < span class ="w "> </ span > < span class ="nf "> prepare_scores</ span > < span class ="p "> (</ span > < span class ="bp "> self</ span > < span class ="p "> ,</ span > < span class ="n "> reagent_list</ span > < span class ="p "> :</ span > < span class ="n "> List</ span > < span class ="p "> ,</ span > < span class ="n "> rng</ span > < span class ="p "> :</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> random</ span > < span class ="o "> .</ span > < span class ="n "> Generator</ span > < span class ="p "> )</ span > < span class ="o "> -></ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> ndarray</ span > < span class ="p "> :</ span >
112+ < span class ="w "> </ span > < span class ="sd "> """Sample scores from posterior distributions"""</ span >
113+ < span class ="n "> stds</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> array</ span > < span class ="p "> ([</ span > < span class ="n "> r</ span > < span class ="o "> .</ span > < span class ="n "> std</ span > < span class ="k "> for</ span > < span class ="n "> r</ span > < span class ="ow "> in</ span > < span class ="n "> reagent_list</ span > < span class ="p "> ])</ span >
114+ < span class ="n "> mu</ span > < span class ="o "> =</ span > < span class ="n "> np</ span > < span class ="o "> .</ span > < span class ="n "> array</ span > < span class ="p "> ([</ span > < span class ="n "> r</ span > < span class ="o "> .</ span > < span class ="n "> mean</ span > < span class ="k "> for</ span > < span class ="n "> r</ span > < span class ="ow "> in</ span > < span class ="n "> reagent_list</ span > < span class ="p "> ])</ span >
115+ < span class ="k "> return</ span > < span class ="n "> rng</ span > < span class ="o "> .</ span > < span class ="n "> normal</ span > < span class ="p "> (</ span > < span class ="n "> size</ span > < span class ="o "> =</ span > < span class ="nb "> len</ span > < span class ="p "> (</ span > < span class ="n "> reagent_list</ span > < span class ="p "> ))</ span > < span class ="o "> *</ span > < span class ="n "> stds</ span > < span class ="o "> +</ span > < span class ="n "> mu</ span > </ div >
116+ </ div >
117+
118+ </ pre > </ div >
119+
120+ </ div >
121+
122+ </ div >
123+ </ div >
124+ < div class ="sphinxsidebar " role ="navigation " aria-label ="Main ">
125+ < div class ="sphinxsidebarwrapper ">
126+ < h1 class ="logo "> < a href ="../../../../index.html "> TACTICS</ a > </ h1 >
127+
128+
129+
130+
131+
132+
133+
134+
135+
136+ < search id ="searchbox " style ="display: none " role ="search ">
137+ < div class ="searchformwrapper ">
138+ < form class ="search " action ="../../../../search.html " method ="get ">
139+ < input type ="text " name ="q " aria-labelledby ="searchlabel " autocomplete ="off " autocorrect ="off " autocapitalize ="off " spellcheck ="false " placeholder ="Search "/>
140+ < input type ="submit " value ="Go " />
141+ </ form >
142+ </ div >
143+ </ search >
144+ < script > document . getElementById ( 'searchbox' ) . style . display = "block" </ script > < h3 > Navigation</ h3 >
145+ < p class ="caption " role ="heading "> < span class ="caption-text "> Contents:</ span > </ p >
146+ < ul >
147+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../thompson_sampling.html "> Thompson Sampling Module</ a > </ li >
148+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../api_reference.html "> API Reference</ a > </ li >
149+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../configuration.html "> Configuration System</ a > </ li >
150+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../library_enumeration.html "> Library Enumeration Module</ a > </ li >
151+ < li class ="toctree-l1 "> < a class ="reference internal " href ="../../../../library_analysis.html "> Library Analysis Module</ a > </ li >
152+ </ ul >
153+
154+ < div class ="relations ">
155+ < h3 > Related Topics</ h3 >
156+ < ul >
157+ < li > < a href ="../../../../index.html "> Documentation overview</ a > < ul >
158+ < li > < a href ="../../../index.html "> Module code</ a > < ul >
159+ </ ul > </ li >
160+ </ ul > </ li >
161+ </ ul >
162+ </ div >
163+
164+
165+
166+
167+
168+
169+
170+
171+ </ div >
172+ </ div >
173+ < div class ="clearer "> </ div >
174+ </ div >
175+ < div class ="footer ">
176+ ©2024, Aakankschit Nandkeolyar.
177+
178+ |
179+ Powered by < a href ="https://www.sphinx-doc.org/ "> Sphinx 9.0.4</ a >
180+ & < a href ="https://alabaster.readthedocs.io "> Alabaster 1.0.0</ a >
181+
182+ </ div >
183+
184+
185+
186+
187+ </ body >
188+ </ html >
0 commit comments