コード例 #1
0
 def specifier_before_cem_and_value_phrase(self):
     return (
             self.specifier_phrase
             + OneOrMore(Not(self.cem_phrase | self.specifier_phrase | self.value_phrase) + Any().hide())
             + self.cem_phrase
             + OneOrMore(Not(self.cem_phrase | self.specifier_phrase | self.value_phrase) + Any().hide())
             + Optional(self.prefix)
             + self.value_phrase)('root_phrase')
コード例 #2
0
 def specifier_before_cem_and_value_phrase(self):
     return (self.specifier_phrase + OneOrMore(
         Not(self.cem_phrase | self.specifier_phrase | self.value_phrase) +
         Any().hide())  #+ self.connection + Optional(self.article))
             + self.cem_phrase + OneOrMore(
                 Not(self.cem_phrase | self.specifier_phrase
                     | I('dielectric') + I('constant') | self.value_phrase
                     | I('not')) + Any().hide()) + Optional(self.prefix) +
             self.value_phrase)('root_phrase')
コード例 #3
0
 def multi_entity_phrase_2(self):
     """single compound, single specifier, multiple transitions
     e.g. BiFeO3 shows magnetic transitions at 1093 and 640 K
     """
     return Group(self.single_cem
                  + OneOrMore(Not(self.single_cem | self.specifier_phrase | self.value_phrase) + Any().hide())
                  + self.specifier_phrase
                  + OneOrMore(Not(self.single_cem | self.specifier_phrase | self.value_phrase) + Any().hide())
                  + self.list_of_values
                  + Optional(delim).hide()
                  + Optional(I('respectively')))('multi_entity_phrase_2')
コード例 #4
0
 def value_specifier_cem_phrase(self):
     return (
         self.value_phrase + Optional(delim | lbrct | rbrct) +
         Optional(I('which') | I('there')).hide() +
         Optional(I('likely') | I('close') | (I('can') + I('be'))).hide() +
         Optional(I('corresponds') | I('associated')
                  | I('corresponding')).hide() +
         Optional(I('to') | I('with') | I('is')).hide() +
         Optional(I('the') | I('a')).hide() +
         Optional(I('transition')).hide() + Optional(I('to').hide()) +
         Optional(I('a')).hide() + self.specifier_phrase + Not(I('=')) +
         Not(self.value_phrase) + Optional(I('of') | I('in')).hide() +
         self.cem_phrase)('root_phrase')
コード例 #5
0
 def multi_entity_phrase_4a(self):
     """multiple compounds, single specifier, single transition
     e.g. TC of 640 K in BifEO3, LaFeO3 and MnO
     """
     return Group(self.single_specifier_and_value
                  + OneOrMore(Not(self.single_cem | self.specifier_phrase | self.value_phrase) + Any().hide())
                  + self.list_of_cems)('multi_entity_phrase_4')
コード例 #6
0
 def multi_entity_phrase_1(self):
     """Single compound, multiple specifiers, values
      e.g. BiFeO3 has TC1 = 1093 K and Tc2 = 640 K
     """
     return Group(self.single_cem
                  + OneOrMore(Not(self.single_cem | self.specifier_phrase | self.value_phrase) + Any().hide())
                  + self.list_of_properties)('multi_entity_phrase_1')
コード例 #7
0
 def cem_before_specifier_and_value_phrase(self):
     return (self.cem_phrase + OneOrMore(
         Not(self.cem_phrase | self.specifier_phrase
             | self.specifier_and_value) +
         Any().hide())  #+ self.between_cem_specifier)
             + self.specifier_phrase +
             self.specifier_and_value)('root_phrase')
コード例 #8
0
 def multi_entity_phrase_3a(self):
     """multiple compounds, single specifier, multiple transitions cems first
     e.g. TC in BiFeO3 and LaFeO3 of 640 and 750 K
     """
     return Group(Optional(self.specifier_phrase)
                  + Optional(I('in') | I('for')).hide()
                  + self.list_of_cems
                  + OneOrMore(Not(self.single_cem | self.specifier_phrase | self.value_phrase) + Any().hide())
                  + self.prefix
                  + self.list_of_values
                  + Optional(delim.hide() + I('respectively').hide()))('multi_entity_phrase_3')
コード例 #9
0
 def value_phrase(self):
     number = R('^[\+\-–−]?\d+(\.\d+)?$')
     joined_range = R('^[\+\-–−]?\d+(\.\d+)?[\-–−~∼˜]\d+(\.\d+)?$')(
         'raw_value').add_action(merge)
     spaced_range = (number + (R('^[\-–−~∼˜]$') + number
                               | number))('raw_value').add_action(merge)
     to_range = (number + I('to') + number)('raw_value').add_action(join)
     plusminus_range = (number + R('±') + number)('value').add_action(join)
     value_range = (Optional(R('^[\-–−]$')) +
                    (plusminus_range | joined_range | spaced_range
                     | to_range))('raw_value').add_action(merge)
     value_single = (Optional(R('^[~∼˜\<\>]$')) + Optional(R('^[\-–−]$')) +
                     number)('raw_value').add_action(merge)
     inumber = (R('\d*\.?\d*[i]$')).add_action(join)
     # inumber = R('^([-+]?(\d+\.?\d*|\d*\.?\d+)([Ee][-+]?[0-2]?\d{1,2})?[r]?|[-+]?((\d+\.?\d*|\d*\.?\d+)([Ee][-+]?[0-2]?\d{1,2})?)?[i]|[-+]?(\d+\.?\d*|\d*\.?\d+)([Ee][-+]?[0-2]?\d{1,2})?[r]?[-+]((\d+\.?\d*|\d*\.?\d+)([Ee][-+]?[0-2]?\d{1,2})?)?[i])$')
     ivalue = (R('\d*\.?\d*$') + R('^[\+\-–−]?') + inumber).add_action(join)
     value = Optional(lbrct).hide() + (
         ivalue | value_range | value_single)('raw_value') + Not(
             I('wt%') | I('vol%') | I('K') | I('times') | I('GPa') | I('wt')
             | I('vol') | I('%') | I('nm') | I('zF') | W('°') | W('KV')
             | W('kV') | W('MV') | I('kHz') | I('Hz') | I('GHz') | W('V')
             | W('J') | W('eV') | I('MHz')) + Optional(rbrct).hide()
     return value
コード例 #10
0
 def multi_entity_phrase_4b(self):
     """Cems first"""
     return Group(self.list_of_cems
                  + OneOrMore(Not(self.single_cem | self.specifier_phrase | self.value_phrase) + Any().hide())
                  + self.single_specifier_and_value)('multi_entity_phrase_4')
コード例 #11
0
 def cem_after_specifier_and_value_phrase(self):
     return (
             self.specifier_and_value
             + OneOrMore(Not(self.cem_phrase | self.specifier_phrase | self.value_phrase) + Any().hide())
             + self.cem_phrase)('root_phrase')