def testMapPmids2Dois(self): self.sess.add(Identifier(1, 'doi', 'id1')) self.sess.add(Medline(2, 'MEDLINE', 'Journal', 'PubDate', date.today())) self.sess.add(Identifier(2, 'doi', 'id2')) self.sess.commit() self.assertDictEqual({1: 'id1', 2: 'id2'}, Identifier.mapPmids2Dois([1, 2, 3])) self.assertDictEqual({}, Identifier.mapPmids2Dois([3, 4]))
def testMapPmids2Dois(self): self.sess.add(Identifier(1, 'doi', 'id1')) self.sess.add(DefaultCitation(2)) self.sess.add(Identifier(2, 'doi', 'id2')) self.sess.commit() self.assertDictEqual({1: 'id1', 2: 'id2'}, Identifier.mapPmids2Dois([1, 2, 3])) self.assertDictEqual({}, Identifier.mapPmids2Dois([3, 4]))
def testDoi2Pmid(self): self.sess.add(Identifier(1, 'doi', 'id')) self.sess.add(Medline(2, 'MEDLINE', 'Journal', 'PubDate', date.today())) self.sess.commit() self.assertEqual(1, Identifier.doi2pmid('id')) self.assertEqual(None, Identifier.doi2pmid('other'))
def testPmid2Doi(self): self.sess.add(Identifier(1, 'doi', 'id')) self.sess.add(Medline(2, 'MEDLINE', 'Journal', 'PubDate', date.today())) self.sess.commit() self.assertEqual('id', Identifier.pmid2doi(1)) self.assertEqual(None, Identifier.pmid2doi(2))
def testMapDois2Pmids(self): self.sess.add(Identifier(1, 'doi', 'id1')) self.sess.add(DefaultCitation(2)) self.sess.add(Identifier(2, 'doi', 'id2')) self.sess.commit() self.assertDictEqual({'id1': 1, 'id2': 2}, Identifier.mapDois2Pmids(['id1', 'id2', 'id3'])) self.assertDictEqual({}, Identifier.mapDois2Pmids(['id3', 'id4']))
def testMapDois2Pmids(self): self.sess.add(Identifier(1, 'doi', 'id1')) self.sess.add(Medline(2, 'MEDLINE', 'Journal', 'PubDate', date.today())) self.sess.add(Identifier(2, 'doi', 'id2')) self.sess.commit() self.assertDictEqual({'id1': 1, 'id2': 2}, Identifier.mapDois2Pmids(['id1', 'id2', 'id3'])) self.assertDictEqual({}, Identifier.mapDois2Pmids(['id3', 'id4']))
def testMapPmids2Dois(self): self.sess.add(Identifier(1, 'doi', 'id1')) self.sess.add(DefaultCitation(2)) self.sess.add(Identifier(2, 'doi', 'id2')) self.sess.commit() self.assertDictEqual({ 1: 'id1', 2: 'id2' }, Identifier.mapPmids2Dois([1, 2, 3])) self.assertDictEqual({}, Identifier.mapPmids2Dois([3, 4]))
def testMapDois2Pmids(self): self.sess.add(Identifier(1, 'doi', 'id1')) self.sess.add(DefaultCitation(2)) self.sess.add(Identifier(2, 'doi', 'id2')) self.sess.commit() self.assertDictEqual({ 'id1': 1, 'id2': 2 }, Identifier.mapDois2Pmids(['id1', 'id2', 'id3'])) self.assertDictEqual({}, Identifier.mapDois2Pmids(['id3', 'id4']))
def testMapDois2Pmids(self): self.sess.add(Identifier(1, 'doi', 'id1')) self.sess.add(Medline(2, 'MEDLINE', 'Journal', 'PubDate', date.today())) self.sess.add(Identifier(2, 'doi', 'id2')) self.sess.commit() self.assertDictEqual({ 'id1': 1, 'id2': 2 }, Identifier.mapDois2Pmids(['id1', 'id2', 'id3'])) self.assertDictEqual({}, Identifier.mapDois2Pmids(['id3', 'id4']))
def testMapPmids2Dois(self): self.sess.add(Identifier(1, 'doi', 'id1')) self.sess.add(Medline(2, 'MEDLINE', 'Journal', 'PubDate', date.today())) self.sess.add(Identifier(2, 'doi', 'id2')) self.sess.commit() self.assertDictEqual({ 1: 'id1', 2: 'id2' }, Identifier.mapPmids2Dois([1, 2, 3])) self.assertDictEqual({}, Identifier.mapPmids2Dois([3, 4]))
def ArticleId(self, element): instance = None ns = element.get('IdType').strip().lower() text = element.text.strip() if ns in self.namespaces: if re.match('\d[\d\.]+/.+', element.text.strip()) and \ 'doi' not in self.namespaces: self.namespaces.add('doi') instance = Identifier(self.pmid, 'doi', text) else: logger.info('skipping duplicate %s identifier "%s"', ns, text) else: self.namespaces.add(ns) instance = Identifier(self.pmid, ns, text) return instance
def OtherID(self, element): if element.get('Source', None) == 'NLM': text = element.text.strip() if text.startswith('PMC'): if 'pmc' not in self.namespaces: self.namespaces.add('pmc') return Identifier(self.pmid, 'pmc', text.split(' ', 1)[0])
def testPmid2Doi(self): self.sess.add(Identifier(1, 'doi', 'id')) self.sess.add(DefaultCitation(2)) self.sess.commit() self.assertEqual('id', Identifier.pmid2doi(1)) self.assertEqual(None, Identifier.pmid2doi(2))
def ELocationID(self, element): ns = element.get('EIdType').strip().lower() if ns not in self.namespaces: self.namespaces.add(ns) return Identifier(self.pmid, ns, element.text.strip())
def testDoi2Pmid(self): self.sess.add(Identifier(1, 'doi', 'id')) self.sess.add(DefaultCitation(2)) self.sess.commit() self.assertEqual(1, Identifier.doi2pmid('id')) self.assertEqual(None, Identifier.doi2pmid('other'))
from io import StringIO from tempfile import TemporaryFile from medic.orm import Medline, Section, Author, Descriptor, Qualifier, Database, Identifier, \ Chemical, Keyword, PublicationType from medic.crud import _dump DATA = [ Section(1, 1, 'Title', 'The Title'), Section(1, 2, 'Abstract', 'The Abstract'), Descriptor(1, 1, 'd_name', True), Descriptor(1, 2, 'd_name'), Qualifier(1, 1, 1, 'q_name', True), Author(1, 1, 'first'), Author(1, 2, 'last'), Identifier(1, 'ns', 'id'), Database(1, 'name', 'accession'), PublicationType(1, 'some'), PublicationType(1, 'another'), Chemical(1, 1, 'name', 'uid'), Keyword(1, 'NOTNLM', 1, 'name', True), Medline(1, 'MEDLINE', 'journal', 'pub_date', date.today()), ] class ParserMock: def __init__(self, instances): self.instances = instances def parse(self, _): for i in self.instances:
def testToString(self): self.assertEqual('1\tns\tid\n', str(Identifier(1, 'ns', 'id')))
def testToRepr(self): self.assertEqual('Identifier<1:ns>', repr(Identifier(1, 'ns', 'id')))
def testRelations(self): i = Identifier(1, 'ns', 'id') self.sess.add(i) self.sess.commit() self.assertEqual({'ns': i}, self.M.identifiers) self.assertEqual(self.M, i.citation)