def set_precision(self):
     q = u"""select count(input_id) from accuracy_from_mturk as accuracy, pub where accuracy.input_id=pub.id and response_is_oa and answer_error='{}' and answer_green_box_url != '{}'"""
     if self.no_rg_or_academia:
         q += " and not (answer_green_box_url ilike '%researchgate%' or answer_green_box_url ilike '%academia.edu%')"
     q += self.q_suffix_relevant_set()
     precision_numerator = get_sql_answer(db, q)
     q = u"""select count(input_id) from accuracy_from_mturk as accuracy, pub where accuracy.input_id=pub.id and response_is_oa and answer_error='{}'"""
     q += self.q_suffix_relevant_set()
     precision_denominator = get_sql_answer(db, q)
     try:
         self.precision = float(precision_numerator)/precision_denominator
     except ZeroDivisionError:
         return float('inf')
Example #2
0
def package_create(jusp_id, institution_id, package_type):

    jisc_package_id = u"package-jiscels{}".format(jusp_id)
    package_id = u"package-n8els_{}_{}".format(jusp_id,
                                               package_type.replace(" ", ""))
    package_name = u"Elsevier n8 ({})".format(package_type)
    scenario_id = u"scenario-n8els_{}_{}".format(jusp_id,
                                                 package_type.replace(" ", ""))
    scenario_name = u"n8 ({})".format(package_type)

    my_package = Package.query.get(package_id)
    if not my_package:
        print u"package {} doesn't exist, making".format(package_id)
        my_package = Package(package_id=package_id,
                             publisher="Elsevier",
                             package_name=package_name,
                             created=datetime.datetime.utcnow().isoformat(),
                             institution_id=institution_id,
                             is_demo=False,
                             currency="GBP")
        db.session.add(my_package)
        print my_package
        safe_commit(db)

        if package_type == "own pta":
            copy_into_n8_package(old_package_id=jisc_package_id,
                                 new_package_id=package_id,
                                 copy_perpetual_access=True)
        elif package_type == "group pta":
            copy_into_n8_package(old_package_id=jisc_package_id,
                                 new_package_id=package_id,
                                 copy_perpetual_access=False)
        elif package_type == "uk pta":
            copy_into_n8_package(old_package_id=jisc_package_id,
                                 new_package_id=package_id,
                                 copy_perpetual_access=False)

    my_scenario = SavedScenario.query.get(scenario_id)
    if not my_scenario:
        print u"scenario {} doesn't exist, making".format(scenario_id)
        my_scenario = SavedScenario(False, scenario_id, None)
        my_scenario.package_id = package_id
        my_scenario.created = datetime.datetime.utcnow().isoformat()
        db.session.add(my_scenario)
        safe_commit(db)

    print "updating settings, including big deal cost from jisc package"
    big_deal_price = get_sql_answer(
        db,
        "select big_deal_cost from jump_account_package where package_id = '{}';"
        .format(jisc_package_id))

    dict_to_save = my_scenario.to_dict_saved_from_db()
    dict_to_save["name"] = scenario_name
    dict_to_save["configs"]["cost_bigdeal"] = big_deal_price
    dict_to_save["configs"]["cost_bigdeal_increase"] = 2
    dict_to_save["configs"]["include_social_networks"] = True  # set to true
    dict_to_save["configs"]["weight_authorship"] = 0  # 100
    dict_to_save["configs"]["weight_citation"] = 0  # 10
    save_raw_scenario_to_db(scenario_id, dict_to_save, None)
Example #3
0
 def display_doi(self):
     if hasattr(self, "doi"):
         return self.doi
     for other_id in self.pub_other_ids:
         if other_id.source == "doi":
             return other_id.other_id
     q = "select doi from dois_pmid_lookup where pmid = {}::text".format(
         self.pmid)
     doi = get_sql_answer(db, q)
     return doi
Example #4
0
 def number_unfinished(self, job_type):
     num = get_sql_answer(
         db, "select count(*) from {} where finished is null".format(
             self.table_name(job_type)))
     return num
Example #5
0
 def number_waiting_on_queue(self, job_type):
     num = get_sql_answer(
         db, "select count(*) from {} where started is null".format(
             self.table_name(job_type)))
     return num
Example #6
0
 def number_total_on_queue(self, job_type):
     num = get_sql_answer(
         db, "select count(*) from {}".format(self.table_name(job_type)))
     return num
Example #7
0
def get_parent_consortium_package_id(package_id):
    q = """select consortium_package_id from jump_account_package where package_id = '{}'""".format(
        package_id)
    return get_sql_answer(db, q)
 def set_n(self):
     q = u"""select count(id) from accuracy_from_mturk as accuracy, pub where accuracy.input_id=pub.id and answer_error='{}'"""
     q += self.q_suffix_relevant_set()
     self.n = get_sql_answer(db, q)
def number_unfinished(job_type):
    num = get_sql_answer(db, "select count(*) from {} where finished is null".format(table_name(job_type)))
    return num
def number_waiting_on_queue(job_type):
    num = get_sql_answer(db, "select count(*) from {} where started is null".format(table_name(job_type)))
    return num
def number_total_on_queue(job_type):
    num = get_sql_answer(db, "select count(*) from {}".format(table_name(job_type)))
    return num
Example #12
0
def add_ror(ror_id, institution_id):
    logger.info(u"adding ROR IDs, if needed")

    if not db.session.query(RorId).filter(
            RorId.institution_id == institution_id, RorId.ror_id
            == ror_id).all():
        db.session.add(RorId(institution_id=institution_id, ror_id=ror_id))
        logger.info(u"  adding ROR ID {} for {}".format(
            ror_id, institution_id))
    else:
        logger.info(u"  ROR ID already there")

    db.session.commit()

    # add grid ids
    logger.info(u"adding GRID IDs, if needed")
    logger.info(u"  looking up GRID IDs")
    grid_ids = [
        x.grid_id for x in RorGridCrosswalk.query.filter(
            RorGridCrosswalk.ror_id == ror_id).all()
    ]

    if not grid_ids:
        raise ValueError(
            u"at least one ror id corresponding to a grid id is required)")

    for g_id in grid_ids:
        if not db.session.query(GridId).filter(
                GridId.institution_id == institution_id, GridId.grid_id
                == g_id).all():
            db.session.add(GridId(institution_id=institution_id, grid_id=g_id))
            logger.info(u"  adding GRID ID {} for {}".format(
                g_id, institution_id))
        else:
            logger.info(u"  GRID ID already there")

        db.session.commit()

        # jump_citing
        logger.info(u"  populating jump_citing for GRID ID {}".format(g_id))

        num_citing_rows = get_sql_answer(
            db, "select count(*) from jump_citing where grid_id = '{}'".format(
                g_id))
        num_citing_rows_view = get_sql_answer(
            db, "select count(*) from jump_citing_view where grid_id = '{}'".
            format(g_id))

        logger.info("num_citing_rows: {}, num_citing_rows_view {}".format(
            num_citing_rows, num_citing_rows_view))

        if num_citing_rows:
            logger.info(
                u"    {} jump_citing rows already exist for grid id '{}'".
                format(num_citing_rows, g_id))
        else:
            with get_db_cursor() as cursor:
                cursor.execute(
                    "delete from jump_citing where grid_id = '{}'".format(
                        g_id))
                cursor.execute(
                    "insert into jump_citing (select * from jump_citing_view where grid_id = '{}')"
                    .format(g_id))
            logger.info(
                u"    created jump_citing rows for grid id {}".format(g_id))

        # jump_authorship

        logger.info(
            u"  populating jump_authorship for GRID ID  {}".format(g_id))

        num_authorship_rows = get_sql_answer(
            db,
            "select count(*) from jump_authorship where grid_id = '{}'".format(
                g_id))
        num_authorship_rows_view = get_sql_answer(
            db,
            "select count(*) from jump_authorship_view where grid_id = '{}'".
            format(g_id))

        logger.info(
            "num_authorship_rows: {}, num_authorship_rows_view {}".format(
                num_authorship_rows, num_authorship_rows_view))

        if num_authorship_rows:
            logger.info(
                u"    {} jump_authorship rows already exist for grid id {}".
                format(num_authorship_rows, g_id))
        else:
            with get_db_cursor() as cursor:
                cursor.execute(
                    "delete from jump_authorship where grid_id = '{}'".format(
                        g_id))
                cursor.execute(
                    "insert into jump_authorship (select * from jump_authorship_view where grid_id = '{}')"
                    .format(g_id))
            logger.info(
                u"    created jump_authorship rows for grid id {}".format(
                    g_id))

        my_packages = Package.query.filter(
            Package.institution_id == institution_id)
        for my_package in my_packages:
            rows_inserted = my_package.update_apc_authorships()
            logger.info(
                u"    inserted apc rows for package {}".format(my_package))