Example #1
0
def _seq_from_string(string, serializer):
    'Given a json string it returns a SeqRecord'
    if serializer == 'json':
        struct = json.loads(string)
        struct = fix_seq_struct_for_json(struct, alleles_to_string=False)
        return create_seq_from_struct(struct)
    else:
        return pickle.loads(string)
    def test_seq_from_stuct():
        'It tests that we can get create a SeqWithQuality'
        struct = {'seq': {'seq': 'ACTG'},
                  'name': 'hola',
                  'features': [{'start':1, 'end':2, 'type':'orf',
                                'qualifiers':{'dna':{'seq': 'ACT'},
                                              'pep':{'seq': 'M'}}}],
                  'letter_annotations':{'phred_quality': [1, 2, 3, 4]}
                  }
        seq = create_seq_from_struct(struct)

        assert seq.seq == 'ACTG'
        assert seq.name == 'hola'
        feat = seq.features[0]
        assert int(str(feat.location.start)) == 1
        assert int(str(feat.location.end)) == 2
        assert feat.type == 'orf'
        dna = feat.qualifiers['dna']
        assert str(dna) == 'ACT'
        assert str(dna.alphabet) == str(Alphabet())

        #now let's get the struct back
        struct2 = seq.struct
        assert struct2['features'] == struct['features']
        assert struct2['letter_annotations'] == struct['letter_annotations']
        assert struct2['seq'] == struct['seq']
        assert struct2['name'] == struct['name']
        assert struct2 == struct

        #with a non-default alphabet
        struct = {'seq': {'seq': 'ACTG', 'alphabet': 'dnaalphabet'}}
        seq = create_seq_from_struct(struct)
        struct2 = seq.struct
        assert str(seq.seq.alphabet) == str(DNAAlphabet())

        seq = SeqWithQuality(Seq('ACTG', DNAAlphabet()))
        assert seq.struct['seq']['alphabet'] == 'dnaalphabet'