示例#1
0
def test_lipid_abbreviation():
    l = Lipid(LipidClass('CE'), ResidueList([Residue(16, 2)]))

    assert l.abbreviation() == 'CE(16:2)'

    l = Lipid(LipidClass('CE'), ResidueList([Residue(16, 2), Residue(18, 1)]))

    assert l.abbreviation() == 'CE(16:2/18:1)'
    assert l.abbreviation(summed=True) == 'CE(34:3)'

    l = Lipid(
        LipidClass('CE'),
        ResidueList([
            Residue(16, 2, modification=ResidueModification('O-')),
            Residue(18, 1)
        ]))

    assert l.abbreviation() == 'CE(O-16:2/18:1)'
    assert l.abbreviation(summed=True) == 'CE(O-34:3)'

    # no residues, assure that abbreviation/summed fails with AttributeError
    l = Lipid(LipidClass('CE'))
    assert l.abbreviation() == 'CE'

    assert l.abbreviation(summed=True) == 'CE'
def test_residuelist_sum():
    r1 = Residue(18, 2)
    r2 = Residue(12, 3)

    residuelist = ResidueList([r1, r2])

    assert residuelist.total_double_bonds == 5
    assert residuelist.total_carbon_atoms == 30
示例#3
0
def test_lipid_check_consistency():
    l = Lipid(LipidClass('Cer'), ResidueList([Residue(16, 2), Residue(18, 1)]))

    # check inconsistent state
    assert l.residueslist[0].modification == None

    l.check_consistency()

    # check consistent state
    assert l.residueslist[0].modification == CLASS_DEFAULT_MODIFICATION['Cer']
示例#4
0
def test_residue_parse():
    r = Residue.parse("15:3")
    assert r.carbon_atoms == 15

    r = Residue.parse("d15:3")
    assert r.carbon_atoms == 15
    assert str(r.modification) == 'd'

    r = Residue.parse("15:3(6Z)")
    assert r.carbon_atoms == 15
    assert len(r.zstatelist) == 1
    assert str(r.zstatelist[0]) == '6Z'
示例#5
0
def test_residue_string():
    r = Residue(15, 3)
    assert r.residue_string == "15:3"

    r = Residue(15, 3, 2)
    assert r.residue_string == '15:3;2'

    r = Residue(15, 3, 2, ResidueModification('O-'))
    assert r.residue_string == 'O-15:3;2'

    r = Residue(15, 3, 2, ResidueModification('d'))
    assert r.residue_string == 'd15:3;2'
示例#6
0
    def parse(cls, string: str) -> ResidueList:
        """
        Parse a string and return a list of Residues.

        :param string: Input string.
        :return: ResidueList instance.
        """
        string = string.strip()
        # remove brackets
        log.debug(f'Parse input: {string}')

        # if string.count('(') > 1 or string.count(')') > 1:
        #     raise NotImplementedError('alternative chains not implemented')
        string = remove_outside_brackets(string)

        # check for residue splitter
        splittable = False
        split_char = None

        if '/' in string:
            splittable = True
            split_char = '/'
        elif '_' in string:
            splittable = True
            split_char = '_'

        residues = []
        residue_string_list = string.split(split_char)

        for residue_string in residue_string_list:
            residues.append(Residue.parse(residue_string))

        return cls(residues)
示例#7
0
def some_lipids_plain_list():
    """
    A handful of well formatted lipids, using all annotation elements.

    Return as Python list, not as LipidList Object
    """
    # lists of names to draw from
    lipidclass_names = ['CE', 'Cer', 'TG']
    modifications = ['d', 'O-', None, None]

    lipidlist = []

    for i in range(10):
        lipidclass = LipidClass(random.choice(lipidclass_names))

        num_of_residues = random.choice([1, 2, 3])

        residuelist = ResidueList()

        for i in range(0, num_of_residues):
            residuelist.residues.append(
                Residue(random.randint(6, 50),
                        random.randint(0, 10),
                        modification=ResidueModification(
                            random.choice(modifications))))

        lipidlist.append(Lipid(lipidclass, residuelist))

    return lipidlist
def test_residuelist_string():
    r1 = Residue(18, 2)
    r2 = Residue(12, 3)

    residuelist = ResidueList([r1, r2])
    assert residuelist.residuelist_string == '18:2/12:3'
示例#9
0
 def sum(self):
     """
     Return sum of carbon atoms and double bonds of all Residues in this ResidueList as a Residue.
     """
     return Residue(self.total_carbon_atoms, self.total_double_bonds)