Exemplo n.º 1
0
def test_relatedness_coefficient_missing_parent():

    gma = Sample('X28935', 'gma', '-9', '-9', '2', '1')
    mom = Sample('X28935', 'mom', '-9', 'gma', '2', '1')
    dad = Sample('X28935', 'dad', '-9', '-9', '1', '1')

    kid1 = Sample('X28935', 'kid1', '-9', 'mom', '1', '1')
    kid2 = Sample('X28935', 'kid2', '-9', 'mom', '2', '1')

    kid1 = Sample('X28935', 'kid1', 'dad', 'mom', '1', '1')
    kid2 = Sample('X28935', 'kid2', 'dad', 'mom', '2', '1')

    kid1.mom = mom
    kid2.mom = mom
    mom.mom = gma
    kid1.dad = dad
    kid2.dad = dad

    from io import StringIO
    p = Ped(StringIO())
    p.families['X28935'] = Family([kid1, kid2, mom, gma])#, dad])

    assert "siblings" in p.relation('kid1', 'kid2'), p.relation('kid1', 'kid2')

    v = p.relatedness_coefficient('kid1', 'kid2')
    assert v == 0.5, v

    v = p.relatedness_coefficient('gma', 'kid2')
    assert v == 0.25, v

    v = p.relatedness_coefficient('gma', 'kid1')
    assert v == 0.25, v

    v = p.relatedness_coefficient('gma', 'mom')
    assert v == 0.5, v
Exemplo n.º 2
0
def test_sample_str_and_from_row():
    s = Sample('fam1', 'sample1', '-9', '-9', '2', '2')
    assert str(s) == "fam1 sample1 -9 -9 2 2", str(s)

    s2 = Sample.from_row(str(s))
    assert s2.sample_id == s.sample_id
    assert s2.sex == s.sex
    assert s2.family_id == s.family_id
Exemplo n.º 3
0
def test_dict():
    s = Sample('fam1', 'sample1', '-9', '-9', '2', '2')
    d = s.dict()
    assert d == {
        'maternal_id': '-9',
        'paternal_id': '-9',
        'sex': 'female',
        'family_id': 'fam1',
        'phenotype': 'affected',
        'sample_id': 'sample1'
    }, d

    s = Sample('fam1', 'sample1', 'dad', 'mom', '1', '1')
    d = s.dict()
    assert d == {
        'maternal_id': 'mom',
        'paternal_id': 'dad',
        'sex': 'male',
        'family_id': 'fam1',
        'phenotype': 'unaffected',
        'sample_id': 'sample1'
    }

    s = Sample('fam1', 'sample1', 'dad', 'mom', '-1', '-1')
    d = s.dict()
    assert d == {
        'maternal_id': 'mom',
        'paternal_id': 'dad',
        'sex': '-9',
        'family_id': 'fam1',
        'phenotype': 'affected',
        'sample_id': 'sample1'
    }, d
Exemplo n.º 4
0
def test_warnings():

    with redirect_err() as out:
        kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
        mom = Sample('fam1', 'mom', '-9', '-9', '1', '2')
        dad = Sample('fam1', 'dad', '-9', '-9', '2', '2')
        kid.mom = mom
        kid.dad = dad

        v = out.getvalue()
        assert "'dad' is dad but has female sex" in v, v
        assert "'mom' is mom but has male sex" in v, v

    with redirect_err() as out:
        kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
        mom = Sample('fam1', 'mom', '-9', '-9', '-9', '2')
        kid.mom = mom
        v = out.getvalue()
        assert "'mom' is mom but has unknown sex. Setting to female" in v

    with redirect_err() as out:
        kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
        dad = Sample('fam1', 'dad', '-9', '-9', '-9', '2')
        kid.dad = dad
        v = out.getvalue()
        assert "'dad' is dad but has unknown sex. Setting to male" in v

    with redirect_err() as out:
        kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
        kid.dad = kid
        v = out.getvalue()
        assert "'kid' is dad of self" in v, v
Exemplo n.º 5
0
def test_relation():
    kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
    dad = Sample('fam1', 'dad', '-9', '-9', '1', '2')
    mom = Sample('fam1', 'mom', '-9', '-9', '2', '2')
    kid.mom = mom
    kid.dad = dad

    from io import StringIO
    p = Ped(StringIO())
    p.families['fam1'] = Family([kid, mom, dad])
    assert p.relation("mom", "dad") == "mom-dad"
Exemplo n.º 6
0
def test_attrs():
    kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2', ['asdf', 'hello'])
    assert str(kid) == "fam1 kid dad mom 2 2 asdf hello", str(kid)
    assert repr(
        kid
    ) == "Sample('fam1', 'kid', 'dad', 'mom', 'female', 'affected', ['asdf', 'hello'])", repr(
        kid)
Exemplo n.º 7
0
def test_family():
    kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
    mom = Sample('fam1', 'mom', '-9', '-9', '2', '2')
    dad = Sample('fam1', 'dad', '-9', '-9', '1', '2')

    f = Family([kid, mom, dad])

    assert mom.kids == [kid]
    assert dad.kids == [kid]

    assert kid.dad == dad
    assert kid.mom == mom

    assert list(f.affecteds) == [kid, mom, dad], list(f.affecteds)
    assert list(f.unaffecteds) == []

    assert list(f) == [kid, mom, dad]
Exemplo n.º 8
0
def test_sample_str_and_from_row():
    s = Sample('fam1', 'sample1', '-9', '-9', '2', '2')
    assert str(s) == "fam1 sample1 -9 -9 2 2", str(s)

    s2 = Sample.from_row(str(s))
    assert s2.sample_id == s.sample_id
    assert s2.sex == s.sex
    assert s2.family_id == s.family_id
Exemplo n.º 9
0
def test_relatedness_coefficient():
    kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
    dad = Sample('fam1', 'dad', '-9', '-9', '1', '2')
    mom = Sample('fam1', 'mom', '-9', '-9', '2', '2')
    gma = Sample('fam1', 'gma', '-9', '-9', '2', '2')
    ggma = Sample('fam1', 'ggma', '-9', '-9', '2', '2')
    kid.mom = mom
    kid.dad = dad
    mom.mom = gma
    gma.mom = ggma

    unrelated = Sample('fam1', 'un', '-9', '-9', '2', '2')

    from io import StringIO
    p = Ped(StringIO())
    p.families['fam1'] = Family([kid, mom, dad, gma, ggma, unrelated])
    rel = p.relatedness_coefficient("mom", "dad")
    assert rel == 0.0, rel
    d = p.relatedness_coefficient("mom", "kid")
    assert d == 0.5, d
    d = p.relatedness_coefficient("dad", "gma")
    assert d == 0.0, d

    d = p.relatedness_coefficient("mom", "gma")
    assert d == 0.5, d

    d = p.relatedness_coefficient("kid", "gma")
    assert d == 0.25, d

    d = p.relatedness_coefficient("kid", "ggma")
    assert d == 0.125, d

    assert p.relatedness_coefficient("mom", "mom") == 1.0
Exemplo n.º 10
0
def test_relation():
    kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
    dad = Sample('fam1', 'dad', '-9', '-9', '1', '2')
    mom = Sample('fam1', 'mom', '-9', '-9', '2', '2')
    kid.mom = mom
    kid.dad = dad

    from io import StringIO
    p = Ped(StringIO())
    p.families['fam1'] = Family([kid, mom, dad])
    assert p.relation("mom", "dad") == "mom-dad"
Exemplo n.º 11
0
def test_dict():
    s = Sample('fam1', 'sample1', '-9', '-9', '2', '2')
    d = s.dict()
    assert d == {'maternal_id': '-9', 'paternal_id': '-9', 'sex': 'female',
            'family_id': 'fam1', 'phenotype': 'affected', 'sample_id': 'sample1'}, d

    s = Sample('fam1', 'sample1', 'dad', 'mom', '1', '1')
    d = s.dict()
    assert d == {'maternal_id': 'mom', 'paternal_id': 'dad', 'sex': 'male', 'family_id':
            'fam1', 'phenotype': 'unaffected', 'sample_id': 'sample1'}

    s = Sample('fam1', 'sample1', 'dad', 'mom', '-1', '-1')
    d = s.dict()
    assert d == {'maternal_id': 'mom', 'paternal_id': 'dad', 'sex': '-9',
            'family_id': 'fam1', 'phenotype': 'affected', 'sample_id':
            'sample1'}, d
Exemplo n.º 12
0
def test_sample():
    s = Sample('fam1', 'sample1', '-9', '-9', '2', '2')

    assert s.sex == SEX.FEMALE, (s.sex)
    assert s.affected == PHENOTYPE.AFFECTED
    assert s.kids == []
Exemplo n.º 13
0
def test_warnings():

    with redirect_err() as out:
        kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
        mom = Sample('fam1', 'mom', '-9', '-9', '1', '2')
        dad = Sample('fam1', 'dad', '-9', '-9', '2', '2')
        kid.mom = mom
        kid.dad = dad

        v = out.getvalue()
        assert "'dad' is dad but has female sex" in v, v
        assert "'mom' is mom but has male sex" in v, v

    with redirect_err() as out:
        kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
        mom = Sample('fam1', 'mom', '-9', '-9', '-9', '2')
        kid.mom = mom
        v = out.getvalue()
        assert "'mom' is mom but has unknown sex. Setting to female" in v

    with redirect_err() as out:
        kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
        dad = Sample('fam1', 'dad', '-9', '-9', '-9', '2')
        kid.dad = dad
        v = out.getvalue()
        assert "'dad' is dad but has unknown sex. Setting to male" in v

    with redirect_err() as out:
        kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
        kid.dad = kid
        v = out.getvalue()
        assert "'kid' is dad of self" in v, v
Exemplo n.º 14
0
def test_relatedness_coefficient():
    kid = Sample('fam1', 'kid', 'dad', 'mom', '2', '2')
    dad = Sample('fam1', 'dad', '-9', '-9', '1', '2')
    mom = Sample('fam1', 'mom', '-9', '-9', '2', '2')
    gma = Sample('fam1', 'gma', '-9', '-9', '2', '2')
    ggma = Sample('fam1', 'ggma', '-9', '-9', '2', '2')
    kid.mom = mom
    kid.dad = dad
    mom.mom = gma
    gma.mom = ggma

    unrelated = Sample('fam1', 'un', '-9', '-9', '2', '2')

    from io import StringIO
    p = Ped(StringIO())
    p.families['fam1'] = Family([kid, mom, dad, gma, ggma, unrelated])
    rel = p.relatedness_coefficient("mom", "dad")
    assert rel == 0.0, rel
    d = p.relatedness_coefficient("mom", "kid")
    assert d == 0.5, d
    d = p.relatedness_coefficient("dad", "gma")
    assert d == 0.0, d

    d = p.relatedness_coefficient("mom", "gma")
    assert d == 0.5, d

    d = p.relatedness_coefficient("kid", "gma")
    assert d == 0.25, d

    d = p.relatedness_coefficient("kid", "ggma")
    assert d == 0.125, d

    assert p.relatedness_coefficient("mom", "mom") == 1.0
Exemplo n.º 15
0
def test_relatedness_coefficient_missing_parent():

    gma = Sample('X28935', 'gma', '-9', '-9', '2', '1')
    mom = Sample('X28935', 'mom', '-9', 'gma', '2', '1')
    dad = Sample('X28935', 'dad', '-9', '-9', '1', '1')

    kid1 = Sample('X28935', 'kid1', '-9', 'mom', '1', '1')
    kid2 = Sample('X28935', 'kid2', '-9', 'mom', '2', '1')

    kid1 = Sample('X28935', 'kid1', 'dad', 'mom', '1', '1')
    kid2 = Sample('X28935', 'kid2', 'dad', 'mom', '2', '1')

    kid1.mom = mom
    kid2.mom = mom
    mom.mom = gma
    kid1.dad = dad
    kid2.dad = dad

    from io import StringIO
    p = Ped(StringIO())
    p.families['X28935'] = Family([kid1, kid2, mom, gma])  #, dad])

    assert "siblings" in p.relation('kid1', 'kid2'), p.relation('kid1', 'kid2')

    v = p.relatedness_coefficient('kid1', 'kid2')
    assert v == 0.5, v

    v = p.relatedness_coefficient('gma', 'kid2')
    assert v == 0.25, v

    v = p.relatedness_coefficient('gma', 'kid1')
    assert v == 0.25, v

    v = p.relatedness_coefficient('gma', 'mom')
    assert v == 0.5, v