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'