def run_one_query(query, num, models, ai=True, noise=False, rank=RankingAI.rank): papers = get_papers_from_pubmed(query, num) # papers = list(PubMedFetcher(query, num_of_documents=10).papers.values()) PaperProcessor.add_journal_if(papers) if ai: rank(papers, query) else: RankingAI.passthrough(papers) # CSVHandler.write_list_to_csv("test.csv", papers, additional_fields=["ReferenceRank"]) if noise: scaling_factors = [1, 0.1, 0.01, 0.001] else: scaling_factors = [1] results = [[] for _ in range(len(models))] times = [0 for _ in range(len(models))] for idx, model in enumerate(models): t = time.time() eva = NewEvaluation(papers, query, model=model, scaling_factors=scaling_factors, noise=noise) time_passed = time.time() - t times[idx] = time_passed results[idx].extend(eva.result) with open('tmp/{}{}.csv'.format(query, len(papers)), 'w', newline='') as csvfile: fieldnames = ['Model No.', 'Description', 'Result'] writer = csv.writer(csvfile) writer.writerow(fieldnames) for idx, result in enumerate(results): row = [re.search(r'(\d+)$', models[idx].__name__).group(0), models[idx].__doc__] + result writer.writerow(row)
import os, sys sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) import pubmed from papers_csv_handler import CSVHandler from paper_processor import PaperProcessor import logging from IPython import embed logging.getLogger().setLevel(logging.DEBUG) papers = list(pubmed.PubMedFetcher("h**o sapiens", num_of_documents=2116).papers.values()) PaperProcessor.add_journal_if(papers) CSVHandler.write_list_to_csv("test.csv", papers)