private void convertFileDataToArray(int i, String root) {
		// for each time stage file construct array 85 fundamental data
		// points for each symbol
		float[][] data = new float[dbSet.size()][];
		// for each time stage file construct array 7 technical data points
		// for each symbol
		float[][][] pdata = new float[dbSet.size()][][];
		float[] weeksPrices = new float[dbSet.size()];
		TreeMap<String, String> textData = new TreeMap<String, String>();
		Float days = Float.parseFloat(files_q[i].replaceAll("\\.txt", "")
				.split("_")[1]);
		if (!checkForObjectRestore(i, days, root)) {
			DataUtil.loadStringData(root + "q" + File.separator + files_q[i],
					textData);
			DataUtil.loadStringData(root + "y" + File.separator + files_y[i],
					textData);
			int nullcount = 0;
			// ASSUMES A 1 TO 1 EXISTENCE OF NAS AND NY FILES - TRUE SO FAR
			for (int j = 0; j < dbSet.size(); j++) {
				String ticker = dbSet.get(j);
				String textdata = textData.get(ticker);

				if (textdata == null) {
					totalNull++;
					losses.add(ticker);
					nullcount++;
				}

				final int[] sizes = { 2, 36, 44, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
						1, 1, 1 };
				// fundamental data points
				final float[] values = new float[labels.length];
				// technical data points: last ten days (dayNumber open high low
				// close volume adjClose)
				// adding some measure of volatility in price and volume
				//
				final float[][] dailyData = new float[10][TECHNICAL.length];

				if (textdata != null) {

					// still need validation aspect
					float[] rawData = DataUtil.validSmallDataSet(textdata,
							sizes);
					if (rawData.length != 175)
						continue;
					dataRead++;
					// puts fundamental data points from rawData into values
					fillFundamentalData(values, rawData);
					// puts technical data from rawData into dailyData
					// System.out.println(dbSet[j]);
					fillTechnicalData(dailyData, rawData);
					// sets price values directly to float[][] prices
					fillPriceData(j, days, weeksPrices, dailyData);
				} else {
					dataNotRead++;
					Arrays.fill(values, Float.NaN);
					for (int z = 0; z < dailyData.length; z++)
						Arrays.fill(dailyData[z], Float.NaN);
				}
				// assign actual values to database
				data[j] = values;
				pdata[j] = dailyData;
			} // System.out.println(nullcount + " null  ");
			System.out.println(i + " a file pair was loaded, elapsed time: "
					+ (System.currentTimeMillis() - time) / 1000 + " seconds");
			// add data to fundamental series
			DB_ARRAY.put(days, data);
			// add data to technical series
			DB_PRICES.put(days, pdata);
			// add weeks prices to prices - actual prices of stocks for that
			PRICES.put(days, weeksPrices);
			// complete value of market each week
			float marketSum = sum(weeksPrices);
			MARKET.put(days, marketSum);
			// VALID_COUNT.put(days, valid(weeksPrices));

			// float[][] data = new float[dbSet.length][];
			DataUtil.memorizeObject(data, root + File.separator + "OBJECTS"
					+ File.separator + "DATA_" + days);
			// float[][][] pdata = new float[dbSet.length][10][7];
			DataUtil.memorizeObject(pdata, root + File.separator + "OBJECTS"
					+ File.separator + "TECHNICAL_" + days);
			// float[] weeksPrices = new float[dbSet.length];
			DataUtil.memorizeObject(weeksPrices, root + File.separator
					+ "OBJECTS" + File.separator + "PRICES_" + days);
			// float marketSum = sum(weeksPrices);
			DataUtil.memorizeObject(marketSum, root + File.separator
					+ "OBJECTS" + File.separator + "SUM_" + days);

		}
		Thread.yield();
	}