コード例 #1
0
 def test_match_ads_author01(self):
     for f1,f2 in ( \
         ([self.A1,self.C1,self.M1], [self.C2,self.M2,self.A2]),
         ([self.A1,self.C1,self.M1], [self.A2,self.C2,self.M2]),
         ([self.A1,self.C1,self.M1], [self.C2,self.A2,self.M2]),
         ([self.A1,self.C1,self.M1], [self.M2,self.A2,self.C2]),
         ([self.A1,self.C1,self.M1], [self.M2,self.C2,self.A2])):
         matches = author_match.match_ads_author_fields(f1, f2)
         self.assertEqual(matches, [(self.A1, self.A2), (self.C1, self.C2),
                                    (self.M1, self.M2)])
         matches = author_match.match_ads_author_fields(f1, f2, impl='np')
         self.assertEqual(matches, [(self.A1, self.A2), (self.C1, self.C2),
                                    (self.M1, self.M2)])
コード例 #2
0
 def test_match_ads_author05(self):
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1, self.M1], [])
     self.assertEqual(matches, [(self.A1, None), (self.C1, None),
                                (self.M1, None)])
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1, self.M1], [], impl='np')
     self.assertEqual(matches, [(self.A1, None), (self.C1, None),
                                (self.M1, None)])
     matches = author_match.match_ads_author_fields(
         [], [self.A1, self.C1, self.M1])
     self.assertEqual(matches, [])
     matches = author_match.match_ads_author_fields(
         [], [self.A1, self.C1, self.M1], impl='np')
     self.assertEqual(matches, [])
コード例 #3
0
 def test_match_ads_author06(self):
     # case where 1987Ap&SS.138...61H was incorrectly matched to 1986tnra.book.....D
     # (no match should be take place here)
     a1 = {
         "name": {
             "western": "Hadrava, P."
         },
         "affiliations":
         ["Astronomical Institute of the Czechoslovak Academy of Sciences"]
     }
     a2 = {"name": {'western': 'de Waard, Gerrit Jan'}, "affiliations": []}
     matches = author_match.match_ads_author_fields([a1], [a2])
     self.assertEqual(matches, [(a1, None)])
     self.assertFalse(author_match.is_suitable_match(a1, a2))
コード例 #4
0
  def authorMerger(self,field='authors'):
    data = [ [i[field],i['tempdata']] for i in self.blocks if field in i]
    result = None
    while len(data) > 0:
      f1 = data.pop()
      f2 = result if result else data.pop()
      result = self._getBestOrigin(f1,f2,'authors')
      other = f2 if result == f1 else f1

      #Only do the matching if at least one of the the bestOrigin authors lacks an affiliation
      #AND the other author field has at least one
      if not all( [i['affiliations'] for i in result[0]] ) and\
            any( [i['affiliations'] for i in other[0]] ):
        best_matches = author_match.match_ads_author_fields(result[0],other[0])
        for match in best_matches:
          if not author_match.is_suitable_match(*match):
            continue
          if not match[0]['affiliations'] and match[1]['affiliations']:
            match[0]['affiliations'] = match[1]['affiliations']
        result = [[i[0] for i in best_matches],result[1]]
    return result[0]
コード例 #5
0
 def test_match_ads_author03(self):
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1], [self.M2, self.C2, self.A2])
     self.assertEqual(matches, [(self.A1, self.A2), (self.C1, self.C2)])
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1], [self.M2, self.C2, self.A2], impl='np')
     self.assertEqual(matches, [(self.A1, self.A2), (self.C1, self.C2)])
     matches = author_match.match_ads_author_fields(
         [self.M1, self.C1], [self.M2, self.C2, self.A2])
     self.assertEqual(matches, [(self.M1, self.M2), (self.C1, self.C2)])
     matches = author_match.match_ads_author_fields(
         [self.M1, self.C1], [self.M2, self.C2, self.A2], impl='np')
     self.assertEqual(matches, [(self.M1, self.M2), (self.C1, self.C2)])
     matches = author_match.match_ads_author_fields(
         [self.M1, self.A1], [self.M2, self.C2, self.A2])
     self.assertEqual(matches, [(self.M1, self.M2), (self.A1, self.A2)])
     matches = author_match.match_ads_author_fields(
         [self.M1, self.A1], [self.M2, self.C2, self.A2], impl='np')
     self.assertEqual(matches, [(self.M1, self.M2), (self.A1, self.A2)])
     matches = author_match.match_ads_author_fields(
         [self.A1], [self.M2, self.C2, self.A2])
     self.assertEqual(matches, [(self.A1, self.A2)])
     matches = author_match.match_ads_author_fields(
         [self.A1], [self.M2, self.C2, self.A2], impl='np')
     self.assertEqual(matches, [(self.A1, self.A2)])
     matches = author_match.match_ads_author_fields(
         [self.C1], [self.M2, self.C2, self.A2])
     self.assertEqual(matches, [(self.C1, self.C2)])
     matches = author_match.match_ads_author_fields(
         [self.C1], [self.M2, self.C2, self.A2], impl='np')
     self.assertEqual(matches, [(self.C1, self.C2)])
     matches = author_match.match_ads_author_fields(
         [self.M1], [self.M2, self.C2, self.A2])
     self.assertEqual(matches, [(self.M1, self.M2)])
     matches = author_match.match_ads_author_fields(
         [self.M1], [self.M2, self.C2, self.A2], impl='np')
     self.assertEqual(matches, [(self.M1, self.M2)])
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1, self.M1], [self.A2])
     self.assertEqual(matches, [(self.A1, self.A2), (self.C1, None),
                                (self.M1, None)])
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1, self.M1], [self.A2], impl='np')
     self.assertEqual(matches, [(self.A1, self.A2), (self.C1, None),
                                (self.M1, None)])
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1, self.M1], [self.C2])
     self.assertEqual(matches, [(self.A1, None), (self.C1, self.C2),
                                (self.M1, None)])
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1, self.M1], [self.C2], impl='np')
     self.assertEqual(matches, [(self.A1, None), (self.C1, self.C2),
                                (self.M1, None)])
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1, self.M1], [self.M2])
     self.assertEqual(matches, [(self.A1, None), (self.C1, None),
                                (self.M1, self.M2)])
     matches = author_match.match_ads_author_fields(
         [self.A1, self.C1, self.M1], [self.M2], impl='np')
     self.assertEqual(matches, [(self.A1, None), (self.C1, None),
                                (self.M1, self.M2)])
コード例 #6
0
 def test_match_ads_author04(self):
     # 1993AIAAJ..31..447M (crossref vs. sti)
     [c1, c2, c3, c4, c5] = [{
         'affiliations': [],
         'name': {
             'western': 'Miles, Richard B.'
         }
     }, {
         'affiliations': [],
         'name': {
             'western': 'Lempert, Walter R.'
         }
     }, {
         'affiliations': [],
         'name': {
             'western': 'She, Zhen-Su'
         }
     }, {
         'affiliations': [],
         'name': {
             'western': 'Zhang, Boying'
         }
     }, {
         'affiliations': [],
         'name': {
             'western': 'Zhou, Deyu'
         }
     }]
     [s1, s2, s3, s4, s5] = [{
         'affiliations': ['Princeton Univ., NJ'],
         'name': {
             'western': 'Miles, Richard B.'
         }
     }, {
         'affiliations': ['Princeton Univ., NJ'],
         'name': {
             'western': 'Zhou, Deyu'
         }
     }, {
         'affiliations': ['Princeton Univ., NJ'],
         'name': {
             'western': 'Zhang, Boying'
         }
     }, {
         'affiliations': ['Princeton Univ., NJ'],
         'name': {
             'western': 'Lempert, Walter R.'
         }
     }, {
         'affiliations': ['Arizona Univ., Tucson, AZ'],
         'name': {
             'western': 'She, Zhen-Su'
         }
     }]
     crossref = [c1, c2, c3, c4, c5]
     sti = [s1, s2, s3, s4, s5]
     res = [(c1, s1), (c2, s4), (c3, s5), (c4, s3), (c5, s2)]
     matches = author_match.match_ads_author_fields(crossref, sti)
     self.assertEqual(matches, res)
     matches = author_match.match_ads_author_fields(crossref,
                                                    sti,
                                                    impl='np')
     self.assertEqual(matches, res)