17 using System.Collections;
18 using System.Collections.Generic;
35 private Dictionary<Type, Dictionary<Symbol, List<BaseData>>> _auxiliaryData;
36 private readonly Lazy<PyObject> _dataframe;
37 private readonly
bool _flatten;
39 private Dictionary<Type, Dictionary<Symbol, List<BaseData>>> AuxiliaryData
43 if (_auxiliaryData ==
null)
45 _auxiliaryData =
new Dictionary<Type, Dictionary<Symbol, List<BaseData>>>();
48 return _auxiliaryData;
119 _dataframe =
new Lazy<PyObject>(
122 if (!PythonEngine.IsInitialized)
126 return new PandasConverter().GetDataFrame(
new[] {
this }, symbolOnlyIndex:
true, flatten: _flatten);
128 isThreadSafe:
false);
138 : this(dataType, flatten)
141 Symbol = canonicalOptionSymbol;
155 : this(other.
DataType, other._flatten)
177 Dictionary<Symbol, List<BaseData>> dictionary;
178 if (!AuxiliaryData.TryGetValue(typeof(TAux), out dictionary) || !dictionary.TryGetValue(symbol, out list))
182 return list.OfType<TAux>().LastOrDefault();
192 Dictionary<Symbol, List<BaseData>> d;
193 if (!AuxiliaryData.TryGetValue(typeof(TAux), out d))
198 foreach (var kvp
in d)
200 var item = kvp.Value.OfType<TAux>().LastOrDefault();
203 dictionary.Add(kvp.Key, item);
216 Dictionary<Symbol, List<BaseData>> dictionary;
217 if (!AuxiliaryData.TryGetValue(typeof(TAux), out dictionary))
219 return new Dictionary<Symbol, List<BaseData>>();
233 Dictionary<Symbol, List<BaseData>> dictionary;
234 if (!AuxiliaryData.TryGetValue(typeof(TAux), out dictionary) || !dictionary.TryGetValue(symbol, out list))
236 return new List<TAux>();
238 return list.OfType<TAux>().ToList();
258 IEnumerator IEnumerable.GetEnumerator()
267 internal void AddData(
BaseData data)
272 Ticks.Add(tick.Symbol, tick);
296 private void AddAuxData(
BaseData baseData)
298 var type = baseData.GetType();
299 Dictionary<Symbol, List<BaseData>> dictionary;
300 if (!AuxiliaryData.TryGetValue(type, out dictionary))
302 dictionary =
new Dictionary<Symbol, List<BaseData>>();
303 AuxiliaryData[type] = dictionary;
307 if (!dictionary.TryGetValue(baseData.Symbol, out list))
309 list =
new List<BaseData>();
310 dictionary[baseData.Symbol] = list;