def connect_structures_find_saddles(sequence, structure_list): pairs = {} #fc = RNA.fold_compound(sequence) fp_pool = Pool(Max_Threads) res_list=[] for i, se_1 in enumerate(structure_list): for j in range(i+1, len(structure_list)): se_2 = structure_list[j] a = fp_pool.apply_async(find_saddle, args=(se_1.Structure, se_2.Structure, i, j)) res_list.append(a) #saddle_energy_dcal = fc.path_findpath_saddle(se_1.Structure, se_2.Structure) #saddle_energy_kcal = saddle_energy_dcal / 100.0 #pairs[(i,j)] = saddle_energy_kcal #pairs[(j,i)] = saddle_energy_kcal fp_pool.close() for a in res_list: i,j, saddle_energy_kcal = a.get() pairs[(i,j)] = saddle_energy_kcal pairs[(j,i)] = saddle_energy_kcal # get lowest saddle for each structure that ends in a structure with lower energy than the first structure. minimal_saddle_list = [] for i in range(0, len(structure_list)): se_1 = structure_list[i] min_saddle_energy = sys.maxsize tree_neighbor = None for j in range(0, len(structure_list)): if i == j: continue se_2 = structure_list[j] saddle_energy = pairs[(i,j)] if saddle_energy <= min_saddle_energy and se_2.Energy < se_1.Energy: min_saddle_energy = saddle_energy tree_neighbor = j if tree_neighbor == None: # it could be the root. tree_neighbor = -1 minimal_saddle_list.append((i, tree_neighbor, min_saddle_energy)) return minimal_saddle_list
print("Creating NEAT object") # neat = NEAT(nrOfOrgamisms, 1054, 4) neat = NEAT(nrOfOrgamisms, 1890, 4) pyplot.show(block=False) stillRunning = True while stillRunning: results = {} # randomPhenotype = random.choice(neat.phenotypes) # randomPhenotype.toDraw = True pool = Pool(nrOfInstances) finishedIndex = multiprocessing.Manager().Value('i', 0) for i, phenotype in enumerate(neat.phenotypes): results[i] = pool.apply_async(testOrganism, (phenotype, instances, finishedIndex, len(neat.phenotypes))) # results[i] = pool.apply_async(LogExceptions(testOrganism), (phenotype, instances, finishedIndex, len(neat.phenotypes))) pool.close() pool.join() distances = [result.get()[0] for func, result in results.items()] fitnessScores = [result.get()[1] for func, result in results.items()] for p, d in zip(neat.phenotypes, distances): p.genome.distance = d print("") print("-----------------------------------------------------") print("Running epoch") neat.phenotypes = neat.epoch(fitnessScores) print(distances)
def create_test_raw_data(self, ticker_list=None, start_date=None, finish_date=None, folder_prefix=None): """Downloads FX tick data from DukasCopy and then dumps each ticker in a separate HDF5 file if a folder is specified. If no folder is specified returns a list of DataFrames (note: can be a very large list in memory) Parameters ---------- ticker_list : str (list) List of FX tickers to download start_date : datetime/str Start date of FX tick data download finish_date : datetime/str Finish date of FX tick data download folder_prefix : str Folder to dump everything Returns ------- DataFrame (list) """ from findatapy.market import MarketDataRequest, MarketDataGenerator, Market if start_date is None and finish_date is None: finish_date = datetime.datetime.utcnow().date() - timedelta( days=30) start_date = finish_date - timedelta(days=30 * 15) start_date = self._compute_random_date(start_date, finish_date) finish_date = start_date + timedelta(days=90) df_list = [] result = [] # From multiprocessing.dummy import Pool # threading from multiprocess.pool import Pool # actuall new processes import time # If we don't specify a folder if folder_prefix is None: mini_ticker_list = self._split_list(ticker_list, 2) # Use multiprocess to speed up the download for mini in mini_ticker_list: pool = Pool(processes=2) for ticker in mini: time.sleep(1) self.logger.info("Loading " + ticker) md_request = MarketDataRequest( start_date=start_date, finish_date=finish_date, category='fx', tickers=ticker, fields=['bid', 'ask', 'bidv', 'askv'], data_source='dukascopy', freq='tick') # self._download(md_request) result.append( pool.apply_async(self._download, args=( md_request, folder_prefix, ))) pool.close() pool.join() else: market = Market(market_data_generator=MarketDataGenerator()) for ticker in ticker_list: md_request = MarketDataRequest( start_date=start_date, finish_date=finish_date, category='fx', tickers=ticker, fields=['bid', 'ask', 'bidv', 'askv'], data_source='dukascopy', freq='tick') df = market.fetch_market(md_request=md_request) df.columns = ['bid', 'ask', 'bidv', 'askv'] df['venue'] = 'dukascopy' df['ticker'] = ticker # print(df) if folder_prefix is not None: self.dump_hdf5_file(df, folder_prefix + "_" + ticker + ".h5") # df.to_csv(folder_prefix + "_" + ticker + ".csv") # CSV files can be very large, so try to avoid else: df_list.append(df) return df_list