yangao07 / abPOA

abPOA: an SIMD-based C library for fast partial order alignment using adaptive band
MIT License
111 stars 18 forks source link

Sequence-dependent, reproducible crash in pyabpoa when repeatedly instantiating `pyabpoa.msa_aligner` #60

Closed shenker closed 5 months ago

shenker commented 6 months ago

Using pyabpoa 1.4.3.

Full test script:

```python import pyabpoa good_seqs = [ "CAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATGACCAGCGTATAAACAGTCTACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACGGGTGGTTTAGTGTGTGTTTCTATGATGGAGAGAGGAGGTTCAGTGTGGGATTGATGAGATACAGTGATGTGTGGAAGTTGGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCTGTGGTTTGGAGATGATAGACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTAGGAGACTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACTGGTGGGATGGGTTGTTTAACTAGCAATTACATAACAGATGGGATGTGATTTGTTAGGAACTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACTGGGATAGTATGTGGAAAGTCTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCGAATGTTGGGAGTAGAAGGTCGATGAAGATTGAGGGAAGAACGGAGTAGTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCGATGATGTAGTAGTAAGGGTCGTGAAGTGGAAGGTGAGATTCAGGAGGAGGGTAATGATAGACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGTAAGCGTCAGAGGAGCCAAATTCAAAAAAGCCTGCTTTCTAGCAGGCTTTTTGCTTTCTAATGGAAGCATAAAAAAATGGCGCCGATGGGCGCCATTTTTCACTGCGGCAAGAATTACTTCAGACAGAGTATCAAAAGGCGAAACCTCCGCAATGCGGAGGTTTCTTTTTAAAGACCTTATTAATCGGTCGGCAGATGCTGGGTGATAAAATGACGGGTCAGGCTATTTGCACGGGTTTTATCCAGCGGTTTACCGCTCAGTGCTGCACGCAGCCACAGACCATCGATCAGTGCTGCCAGACCATAACCTGCCTCTTGTGCCTGTTCACGAGGCAGTTCACGACGAAATTCGCTAACCAGATTGCTCAGCAGACGACGACTGCTAACCTGCTGCAGACGATACAGCATCGGCTGATGCATGCTGATTGCCCAAAATGCAGCCATGCTTTCATTGCTGCGCTGCTAACCTGGGTTTCATCAAAATTACCACCAACAATTGCCTGCAGACGCTGTTCTGCGCTACCCTGCGGCAGTGCATGCAGACGATTCAGAACTGCATCACGCAGCTGGCTGGTAATATCACGCATGGTTGCTTCCAGTAGACCGTTTTTATCGCGGAAATAATGGCTAATAATACCGGTGCTAACACCGGCACGACGTGCAATCTGTGCAATGGTTGCATCATGCATACCAACTTCATTAATTGCTTCCAGGGTTGCATCAATCAGCTGACGACGACGAATGCTCTGCATACCCAGTTCGGCATTCGTGAACCCCCTTTCTATGTTATGGTTAAACAAAATTATTTGTCAGAGGCGGTGTTTCGTCCTTTAGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAACCTTAACGATACGGTACGTTTCGTATCATGTCAATTGGTAACGAATCAGATTCCACCGTACGTCGCTCCTATTTAAGCAAAAAAAACCCCGCCCTGTCAGGGGCGGGGTTTTTTTTTTCTTTGGGTATAGCGTCGTGGACAGTCATTCATCTTTCTGCCCCTCCAAAAGCAAAAACCCGCCGAAGCGGGTTTTTACGTAAATCAGGTGAAACTGACCGATAAGCCGGACCTTATTAACACTGTGTACCCGGACAAACACCATTAATCAGCAGGAAGGTAAATTCTTCAATATCCTGTTCAACGGTCAACTGTTCGGTCAGCAGGCGATACCAACAAAAACCAAAAATCATATCCAGCAGCAGTTCACGATTGATATCTTTCGGCAGTTCACCATTGCTAATGGCATCTTCAACCAGTTTTTCGGTATCTCACGACGACGTTCCATAAACTGATCTTTCAGTTGGGTCAGGGTTACAGGGTCCAACTGTGCTTCTGCAATAACACAACGAAATGCTTCACCACAAATGGTTTCACGCCAAACTTTCCACAGATTATGCAGCAGAAAATCCAGATCGGCTTTAAAGCTACCCAAATCCGGAAATTTACGTACCTGTTCGATTTCATTTTCATACACTTCGGCAATCAGTGCTGCTTTGTTGGTCCACCAACGATAAATGGTCGGTTTGCCTGCACCGGCGCGACGTGCCACGCTTTCAATGCTCAGACCGCTATAACCACATTCTTTCAGGATTTCAATGGTGCTGGTCAGAATTGCTTTATGGGTATGCGGACTACGCAGGCTACCAATGCTGCTACGGCTCGGGGTACGTGCATGCGTAAAAATTGCTTCTCTTTGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTCGTCCTTTAGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAAATTGTGAGCGCTCACAATTCCACACATTATACGAGCCGATGATTAATTGGAGCGCTTCCTTCAAAGCGGACCAAAACGAAAAAAGGCCCCCCTTTCGGGAGGCCTCTTTTCTGGAATTTGGTACCGAGTGCAGACGTAAAAAAAGCGGCGTGGTTAGCCGCTTTTTTAATTGCCGGACCTTATTACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCCAACGCGCGGGGAGAGGCGGTTTGCGTATTGGGCGCCAGGGTGGTTTTTCTTTTCACCAGTGAGACTGGCAACAGCTGATTGCCCTTCACCGCCTGGCCCTGAGAGAGTAGCAAGCGGTCCACGCTGGTTTGCCCCAGCAGGCGAAAATCCTGTTTGATGGTGGTTAACGGCGGGATATAACATGAGCTATCTTCGGTATCGTCGTATCCCACTACCGAGATATCCGCACCAACGCGCAGCCCGGACTCGGTAATGGCGCGCATTGCGCCCAGCGCCATCTGATCGTTGGCAACCAGCATCGCAGTGGGAACGATGCCCTCATTCAGCATTTGCATGGTTTGTTGAAAACCGGACATGGCACTCCAGTCGCCTTCCCGTTCCGCTATCGGCTGAATTTGATTGCGAGTGAGATATTTATGCCAGCCAGCCAGACGCAGACGCGCCGAGACAGAACTTAATGGGCCCGCTAACAGCGCGATTTGCTGGTGACCCAATGCGACCAGATGCTCCACGCCCAGTCGCGTACCGTCCTCATGGGAGTAAATAATACTGTTGATGGGTGTCTGGTCAGAGACATCAAGAAATAACGCCGGAAGCATCGTAGGCAGCTTCCACAGCAATGGCATCCTGGTCATCCAGCGGATAGTTAATGATCAGCCCACTGACGCGTTGCGCGAGAAGATTGTGCACCGCCGCTTTACAGGCTTCGACGCCGCTTCGTTCTACCATCGACACCACCACGCTGGCACCCAGTTGATCGGCGCGAGATTTAATCGCCGCGACAATTTGCGACGGCGCGTGCAGGGCCAGACTGGAGGTGGCAACGCCAATCAGCAACGACTGTTTGCCCGCCAGTTGTTGTGCCACGCGGTTGGGAATGTAATTCAGCTCCACCATCGCCGCTTCCACTTTTTCCCGCGTTTTCGCAGAAACGTGGCTGGCCTGGTTCACCACGCGGGAAACGGTGGTCGGACGCCGGCATACTCTGCGACATCGTATAACGTTACTGGTTTCATTCGGGAACCCCCTTTCTTTGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTCGTCCTTTTTAGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAGCTAGCATTATATTGAACGTCCAATCAATTGTCTATTGGTAACGAATCCCTCTCACCCGCGCTCTCCTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGA", "CACGTATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGAAACTTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATGACCAGCGTATAAACAGTCTACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACGGGTGGTTTAGTGTGTGTTTCTATGATGGAGAGAGGAGGTTCAGTGTGGGATTGATGAGATACAGTGATGTGTGGAAGTTGGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCTGTGGTTTGGAGATGATAGACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTACGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACTGGTGGGATGGGTTGTTTAACTAGCAATTACATAACAGATACGGGATGTGATTTGTTAGGAACTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACTGGGATAGTATGTGGAAAGTCTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCGAATGTTGGGAGTAGAAGGTCGATGAAGATTGAGGGAAGAACGGAGTAGTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCGATGATGTAGTAGTAAGGGTCGTGAAGTGGAAGGTGAGATTCAGGAGGAGGGTAATGATAGACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAAGGTATACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGTAAGATAACAGATACTTCGGTATCTGTTAATCCCTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATTATTATTCTGGCTCCTCAGTAAGCGTCAGAGGAGCCAAATTAAAAAAGCCTGCTTTCTAGCAGGCTTTTTGCTTTCTAATGGGAGCATAAAAAAATGGCGCCGATGGGCGCCATTTTTCACTGCGGCAAGAATTACTTCAGACAGAGTATCAAAAGGAAACCTCCGCAATGCGGAGGTTTCTTTTTAAAGACCTTATTAATCGGTCGGCAGATGCTGGGTGATAAAATGACGGGTCAGGCTATTTGCACGGGTTTTATCCAGCGGTTTACCGCTCAGTGCTGCACGCAGCCACAGACCATCAATCAGTGCTGCCAGACCATAACCTGCCTCTTGTGCCTGTTCACGAGGCAGTTCACGACGAAATTCGCTAACCAGATTGCTCAGCAGACGACGACTGCTAACCTGCTGCAGACGATACAGCATCGGCTGATGCATGCTGATTGCCCAAAATGCCAGCCATGCTTTCATTGCTGCGCTGCTAACCTGGGTTTCATCAAAATTACCACCAACAATTGCCTGCAGACGCTGTTCTGCGCTACCCTGCGGCAGTGCATGCAGACGATTCAGAACTGCATCACGCAGCTGGCTGGTAATATCACGCATGGTTGCTTCCAGTAGACCGTTTTTATCGCGGAAATAATGGCTAATAATACCGGTGCTAACACCGGCACGACGTGCAATCTGTGCAATGGTTGCATCATGCATACCAACTTCATTAATTGCTTCCAGGGTTGCATCAATCAGCTGACGACGACGAATGCTCTGCATACCCAGTTTCGGCATTCGTGAACCCCCTTTCTATGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTCGTCCTTTAGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAACCTTAACGATACGGTACGTTTCGTATCATGTCAATTGGTAACGAATCAGATTCCACCGTACGTCGCTCCTATTTAAGCAAAAAAACCCCGCCCTGTCAGGGGCGGGGTTTTTTTTTTCTTTTGGGTATAGCGTCGTGGACAGTCATTCATCTTTCTGCCCCTCCAAAAGCAAAAACCCGCCGAAGCGGGTTTTTACGTAAATCAGGTGAAACTGACCGATAAGCCGGACCTTATTAACACTGTGTACCCGGACAAACACCATTAATCAGCAGGAAGGTAAATTCTTCAATATCCTGTTCAACGGTCAACTGTTCGGTCAGCAGGCGATACCAACAAAAACCAAAAATCATATCCAGCAGCAGTTCACGATTGATATCTTTCGGCAGTTCACCATTGCTAATGGCATCTTCAACCAGTTTTTCGGTATCTCACGACGACGTTCCATAAACTGATCTTTCAGTTGGGTCAGGGTTACAGGGTCCAACTGTGCTTCTGCAATAACACAACGAAATGCTTCACCACAAATGGTTTCACGCCAAACTTTCCACAGATTATGCAGCAGAAAATCCAATATCGGCTTTAAAGCTACCCAAATCCGGAAATTTACGTACCTGTTCGATTTCATTTTCATACACTTCGGCAATCAGTGCTGCTTTGTTGGTCCACCAACGATAAATGGTCGGTTTGCCTGCACCGGCGCGACGTGCCACGCTTTCAATGCTCAGACCGCTATAACCACATTCTTTCAGGATTTCAATGGTGCTGGCGAGAATCGCTTTATGGGTATGCGGACTACGCAGGCTACCAATGCCGCCACACCGGCTCGGGGTACGTGCCATTAGTGGACCCCCTTTCTTTGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTCGTCCTTTAGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAAATTGTGAGCGCTCACAATTCCACACATTATACGAGCCGATGATTAATTGTCAACACTCCTTCAAAGCGGACCAAAACGAAAAAAGGCCCCCCTTTCGGGAGGCCTCTTTTCTGGAGTTTGGGGACCGAGTGCAGACGTAAAAAAAGCGGCGTGGTTAGCCGCTTTTTTAATTGCCGGACCTTATTACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCGACGCGCGGGGAGAGGCGGTTTGCGTATTGGGCGCCAGGGTGGTTTTCTTTCACCAGTGAGACTGGCAACAGCTGATTGCCCTTCACCGCCTGGCCAGAGAGTTGCAGCAAGCGGTCCACGCTGGTTTGCCCCAGCAGGCGAAAATCCTGTTTGATGGTGGTTAACGGCGGGATATAACATGAGCTATCTTCGGTATCGTCGTATCCCACTACCGAGATATCCGCACCAACGCGCAGCCCGGACTCGGTAATGGCGCGCATTGCGCCCAGCGCCATCTGATCGTTGGCAACCAGCATCGCAGTGGGAACGATGCCCTCATTCAGCATTTGCATGGTTTGTTGAAAACCGGACATGGCACTCCAGTCGCCTTCCCGTTCCGCTATCGGCTGGATTGATTTCGAGTGAGATATTTATGCCAGCCAGCCAGACGCAGACGCGCCGAGACAGAACTTAATGGGGCCTGCTAACAGCGCGATTTGCTGGTGACCAATGCGACCAGATGCTCCACGCCCAGTCGCGTACCGTCCTCATGGGAGTAAATAATACTGTTGATGGGTGTCTGGTCAGAGACATCAAGAAATAACGCCGGAACATTAGTGCAGGCAGCTTCCACAGCAATGGCATCCTGGTTATCCAGCGGATAGTTAATGATCAGCCCACTGACGCGTTGCGCGAGAAGATTGTGCACCGCCGCTTTACAGGCTTCGACGCCGCTTCGTTCTACCATCGACACCACCACGCTGGCACCCAGTTGATCGGCGCGAGATTTAATCGCCGCGACAATTTGCGACGGCGCGTGCAGGGCCAGACTGGAGGCGGCAACGCCAATCAGCAACGACTGTTTGCCCGCCAGTTGTTGTGCCACGCGGTTGGGCATGTAATTCAGCTCCACCATCGCCGCTTCCACTTTTTCCCGCGTTTTCGCAGAAACGTGGCTGGCCTGGTTCACCACGCGGGAAACGGTCATATAAGAGACACCGGCATACTCTGCGACATCGTATAACGTTACTGGTTTCATTGGAACCCCCTTTCTTCGTTATGGTTAAACAAAATTATTTGTAGAGGCGGCGTTGTCCTTTAGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAGCTAGCATTATATTGAACGTCCAATCAAATCGCTTGATTGGTAACGAATCCCTCTCACCCGCGCTCTCCTCGTCGACCTTGATGTTTCCAGCGCGATTCGAGGACCTTCAGCG", "TCTGCCCTCTACTGGTTCAGACGTATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATGACCAGCGTATAAACAGTCTACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACGGGTGGTTTAGTGTGTGTTTCTGATGGGAGAGAGGAGGTTAAGATGTCAGATGATGAGATACAGTGATGTGGGAGAAGTGGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCTGTGGTTTGGAGATGATAGACTGTGATGGAAGTTAGAGGGTCGGTTGGGGGTGGGGAGAGTATTCGAGAGTTGTATGTTAGGGTAAGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACTGGTGGGATGGGTTGTTTAGATACATAACAGATACGGGATGTGATTTGTAGGAACTTATTGGTGGTGTAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACTGGGATAGTATGTGGAAAGTCTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCGAATGTTGGGAGTAGAAGGTCGATGAAGATTGAGGGAAGAACGGAGTAGTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCGATGATGTAGTAGTAAGGGTCGTGAAGTGGAAGGTGAGATTCAGGAGGAGGGTAATGATAGACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGTTTTTTGGGAAAGATGACACAATTCTCGGTATCTGTTATCTGTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATATATTTTGGTGGAAGGGCTCGGAGTTGTGGTAAATCTACTGTATCGCTCCTCAGTAAGCATCAAGAGAGCCAAATTCAAAAAAGCCTGCTTTCTAGCAGGCTTTTTGCTTTCTAATGGAAGCATAAAAAAATGGCGCCGATGGGCGCCATATTCACTGCGGCAAGAATTACTTCAGACAGAGTATCAAAAGGCGAAACCTCCGCAATGCGGAGGTTTCTTTTTTAAAGACCTTATTAATCGGTCGGCAGATGCTGGGTGATAAAATGACGGGTCAGGCTATTTGCACGGGTTTTATCCAGCGGTTTACCGCTCAGTGCTGCACGCAGCCACAGACCATCAATCAGTGCTGCCAGACCATAACCTCCTCTTGTGCCTGTTCACGAGGCAGTTCACGACGAAATTCGCTAACCAGATTGCTCAGCAGACGACGACTGCTAACCTGCTGCAGACGATACAGCATCGGCTGATGCATGCTGATTGCCCAAATGCCAGCCATGCTTTCATTGCTGCGCTGCTAACCTGGGTTTCATCAAAATTACCACCAACAATTGCCTGCAGACGCTGTTCTGCGCTACCCTGCGGCAGTGCATGCAGACGACTCAGAACTGCATCACGCAGCTGGCTGGTAATATCACGCATGGTTGCTTCCAGTAGACCGTTTTTATCGCGGAAATAATGGCTAATAATACCGGTGCTAACACCGGCACGACGTGCAATCTGTGCAATGGTCGGTCGTCCATACCAACTTCATTAATTGCTTCCAGGGTTGCATCAATCAGCTGACGACGACGAATGCTCTGCATACCCAGTTCAGGCATTCGTGAACCCCCTTCTATGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTCATCCTTCAGGACTGAGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAACCTTAACGATACGGTACACTTCCGTATCATGTCAATTGGTAACGAATCAGATTCCACCGTACGTCGCTCCTATTTAAGCAAAAAAAACCCCGCCCTGTCAGGGGCGGGGTTTTTTTTTCTTTTGGGTATAGCGTCGTGGACAGTCATTCATCTTTCTGCCCCTCCAAAAGCAAAAACCCGCCGAAGCGGGTTTTTACGTAAATCAGGTGAAACTGACCGATAAGCCGGACCTTATTAACACTGTGTACCGGACAAACGCGGATTAATCAGCAGGAAGGTAAATTCTTCAATATCCTCAACGGTCAACTGTTCGGTCAGCAGGCGATACCAACAAAAACCAAAAATCATATCCAGCAGCAGTTCACGATTGATATCTTTCGGCAGTTCACCATTGCTAATGGCATCTTCAACCAGTTCGGTATCTCACGACGACGTTCCATAAACTGATCTTTCAGTTGGGTCAGGGTTACAGGGTCCAACTGTGCTTCTGCAATAACACAACGAAATGCTTCACCACAAATGGTTTCACGCAGAACTTTCCACAGATTATGCAGCAGAAAATCCAGATCGGCTTTAAAGCTACCCAAATCCGGAAATTTACGTACCTGTTCGATTTCGTTTTTCATACACTTCGGCAATCAGTGCTGCTTTGTTGGTCCACCAACGATCAATGGTCGGTTTGCCTGCACCAGCACGACGTGCCACGCTTTCAATGCTCAGACCGCTATAACCACATTCTTTCAGGATTTCAATGGTGCTGGTCAGAATTGCTTTATGGGTATGCGGACTACGCAGGCTACCAATGCTGCTACGGCTCGGGGTACGTGCGGTTGGTCGGACCCCCTTTCTTTGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTGGTCCTTTTAGGGACTCGTCAGTGTACTGATACAAGTAGACAGCGCTAGTAAATTGTGAGCGCTCACAATTCCACACATTATACGAGCCGATGATTAATTGTCAACACTCCTTCAAAGCGGACCAAAACGAAAAAAGGCCCCCCTTTCGGGAGGCCTCTTTTACTGGAATTTGGTACCGAGTTGCAGCATAAAAAGCGGGGCGTCATCCTTCGCTTTTTTAATTGCCGGACCTTATTACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCCAACGCGCGGGGAGAGGCGGATTTGTATTGGGCGCCAGGGTGGTTTTTCACCAGTGAGACTGGCAACAGCTGATTGCCCTTCACCGCCTGGCCCTGAGAGTTGCAGCAAGCGGTCCACGCCGTTGGTTTTTCCCAGCAGGCGAAAATCCTGTTTGATGGTGGTTAACGGCGGGATATAACATGAGCTATCTTCGGTATCGTCGTATCCACTGCAGGAATCCGCGCAACGCGCAGCCCGGACTCGGTAATGGCGCGCATTGCGCCCAGCGCCATCTGATCGTTGGCAACCAGCATCGCAGTGGGAACGATGCCCTCATTCAGCATTTGCATGGTTTGTTGAAAACCGGACATGGCACCCAGTCGCCTTCCCGTTCCGCTATCGGCTGAATTTGATTGCGAGTGAGATATTTATGCCAGCCAGCCAGACGCCAGACGCGCGAGACAGAACTTAATGGGCCCGCTAACAGCGCGATTTGCTCGAGGTGACCCAATGCGACCAGATGCTCCACGCCCAGTCGCGTACCGTCCTCATGGGAGTAAATAATACTGTTGATGGGTGTCTGGTCAGAGACATCAAGAAATAACGCCGGAACATTAGTGCAGGCAGCTTCCACAGCAATGGCATCCTGGTCATCCAGCGGATAGTTAATGATCAGCCCACTGACGCGTTGCGCAGAGAAGATTGTGCACCGCCGCTTTACAGGCTTCGACGCCGCTTCGTTCTACCATCGACACCACCACGCTGGCACCCAGTTGATAGGCGCCGAGGTTAAATAGCCACAACGATTTCAGCGCGGCACGTCCACCGACTTGGAGGTGGCAACGCCAATCAGCAACGACTGTTTGCCCGCCAGTTGTTGTGCCACGCGGTTGGGAATGTAATTCAGCTCCACCATCGCCGCTTCCACTTTTTCCCGCGTTTTCGCAGAAACGTGGCTGCTCCTGGTTCACCACGCGGGAAACGGTCATATAGACACCGGCATACTCTGCGACATCGTATAACGTTACTGGTTTCATTCGGGAACCCCCTTTCTTTGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTCGTCCTTTAGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAGCTAGCATTATATTGAACGTCCAATCAATCTATCTCTATTGGTAACGAACCCCTCTCACCCGCGCTCTCCTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCATGAGCAATAC", "TATGTATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATGACCAGCGTATAAACAGTCTACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACGGGGTGGTTCAGCGTGTGTTTCTATGATGGAGAGAGGAGGTTCAGTGTGGGATTGATGAGATACAGTGATGTGTGGAAGTTGGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCTGTGGTTTGGAGATGATAGACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTACGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACTGGTGGGATGGGTTGTTTAACTAGCAATTACATAACAGATACGGGATGTGATTTGTTAGGAACTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACTGGGATAGTATGTGGAAAGTCTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCGAATGTTGGGAGTAGAAGGTCGATGAAGATTGAGGGAAGAACGGAGTAGTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCGATGATGTAGTAGTAAGGGTCGTGAAGTGGAAGGTGAGATTCAGGAGGAGGGTAATGATAGACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGGAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTCTTCAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGGTGGTAATCTATGATTCTGGCTCCTCAGTAAGCGTCAGAGGTACGGTAATTTGAAAAAAGCCTGCTTTCTAGCAGGCTTTTTGCTTTCTAATGGAAGCATAAAAAAATGGCGCCGATGGGCGCCATTTTTCACTGCGGCAAGAATTACTTCAGACAGAGTATCAAAAGGCGAAACCTCCGCAATGCGGAGGTTTCTTTTTAAAGACCTTATTAATCGGTCGGCAGATGCTGGGTGATAAAATGACGGGTCAGGCTATTTGCACGGGTTTTATCCAGCGGTTTACCGCTCAGTGCTGCACGCAGCCACAGACCATCAATCAGTGCTGCCAGACCATAACCTGCCTCTTGTGCCTGTTCACGAGGCAGTTCACGACGAAATTCGCTAACCAGATTGCTCAGCAGACGACGACTGCTAACCTGCTGCAGACGATACAGCATCGGCTGATGCATGCTGATTGCCCAAAATGCCAGCCATGCTTTCATTGCTGCGCTGCTAACCTGGGTTTCATCAAAATTACCACCAACAATTGCCTGCAGACGCTGTTCTGCGCTACCCTGCGGCAGTGCATGCAGACGATTCAGAACTGCATCACGCAGCTGGCTGGCATCACGCATGGTTGCTTCCAGTAGACCGTTTTTATCGCGGAAATAATGGCTAATAATACCGGTGCTAACACCGGCACGACGTGCAATCTGTGCAATGGTTGCATCATGCATACCAACTTCATTAATTGCTTCCAGGGTTGCATCAATCAGCTGACGACGACGAATGCTCTGCATACCCAGTTTCGGCATTGGTGCACTCTCTTTCCATGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTCGTCCTTTAGGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAACCTTAACGATACGGTACGTTTCGTATCATGTCAATTGGTAACGAATCAGATTCCACCGTACGTCGCTCCTATTTAAGCAAAAAAAAACCCCGCCCTGTCAGGGGCGGGGTTTTTTTTTCTTTTGGGTATAGCGTCGTGGACAGTCATTCATCTTTCTGCCCCTCCAAAAGCAAAAACCCGCCGAAGCGGGTTTTTACGTAAATCAGGTGAAACTGACCGATAAGCCGGACCTTATTAACACTGTGTACCCGGACAAACACCATTAATCAGCAGGAAGGTAAATTCTTCAATATCCTGTTCAACGGTCAACTGTTCGGTCAGCAGGCGATACCAACAAAAACCAAAAATCATATCCAGCAGCAGTTCACGATTGATATCTTTCGGCAGTTCACCATTGCTAATGGCATCTTCAACCAGTTTTTCGGGTATCTCACGACGACGTTCCATAAACTGATCTTTCAGTTGGGTCAGGGTTACAGGGTCCAACTGTGCTTCTGCAATAACACAACGAAATGCTTCACCACAAATGGTTTCACGCCAAACTTTCCACAGATTATGCAGCAGAAAATCCAGATCGGCTTTAAAGCTACCCAAATCCGGAAATTTACGTACCTGTTCGATTTCATTTTCATACACTTCGGCAATCAGTGCTGCTTTGTTGGTCCACCAACGATAAAATGGTCGGTTTGCCTGCACCGGCGCGACGTGCCACGCTTTCAATGCTCAGACCGCTATAACCACATTCTTTCAGGATTTCAATGGTGCTGGTCAGAATTGCTTTATGGGTATGCGGACTACGCAGGCTACCAATGCTGCTACGGCTCGGGGTACGTGCCATTAGTGGACCCCCTTTCTTTGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTCGTCCTTTAGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAAATTGTGAGCGCTCACAATTCCACACATTATACGAGCCGATGATTAATTGTCAACACTCCTTCAAAGCGGACCAAAACGAAAAAAGGCCCCCCTTTCGGAGGCCTCTTTTCTGGAATTTGGTACCGAGTGCAGACGTAAAAAAAGCGGCGTGGTTAGCCGCTTTTTTAATTGCCGGACCTTATTACTGCCCGCTTTCCAGTCGGGAAACCTGTCGTGCCAGCTGCATTAATGAATCGGCCAACGCGCGGGGAGAGGCGGTTTGCGTATTGGGCGCCAGGGTGGTTTTTCTTTCACCAGTGAGACTGGCAACAGCTGATTGCCCTTCACCGCCTGGCCCTGAGAGAGTTGCAGCAAGCGGTCCACGCTGGTTTGCCCCAGCAGGCGAAAATCCTGTTTGATGGTGGTTAACGGCGGGATATAACATGAGCTATCTTCGGTATCGTCGTATCCCACTACCGAGATATCCGCACCAACGCGCAGCCCGGACTCGGTAATGGCGCGCATTGCGCCCAGCGCCATCTGATCGTTGGCAACCAGCATCGCAGTGGGAACGATGCCCTCATTCAGCATTTGCATGGTTTGTTGAAAACCGGACATGGCACTCCAGTCGCCTTCCCGTTCCGCTATCGGCTGAATTTGATTGCGAGTGAGATATTTATGCCAGCCAGCCAGACGCAGACGCGCCGAGACAGAACTTAATGGGCCCGCTAACAGCGCGATTTGCTGGTGACCCAATGCGACCAGATGCTCCACGCCCAGTCGCGTACCGTCCTCATGGGAGTAAATAATACTGTTGATGGGTGTCTGGTCAGAGACATCAAGAAATAACGCCGGAACATTAGTGCAGGCAGCTTCCACAGCAATGGCATCCTGGTCATCCAGCGGATAGTTAATGATCAGCCCACTGACGCGTTGCGCGAGAGATTGTGCACCGCCGCTTTACAGGCTTCGACGCCGCTTCGTTCTACCATCGACACCACCACGCTGGCACCCAGTTGATCGGCGCGAGATTTAATCGCCGCGACAATTTGCGACGGCGCGTGCAGGGCCAGACTGGAGGTGGCAACGCCAATCAGCAACGACTGTTTGCCCGCCAGTTGTTGTGCCACGCGGTTGGGAATGTAATTCAGCTCCACCATCGCCGCTTCCACTTTTTCCCGCGTTTTCGCAGAAACGTGGCTGGCCTGGTTCACCACGCGGGAAACGGTCATATAAGAGACACCGGCATACTCTGCGACATCGTATAACGTTACTGGTTTCATTCGGGAACCCCCTTCTTTGTTATGGTTAAACAAAATTATTTGTAGAGGCGGTGTTTCGTCCTTTAGGGACTCGTCAGTGTACTGATACAAGTACAGACAGCGCTAGTAGCTAGCATTATATTGAACGTCCAATCAATTGTCTATTGGTAACGAATCCCTCTCACCCGCGCTCTCCTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGC", ] bad_seqs = [ "CAGTGCTCTTGTGGGTCCGATACGCAGTGGTAGGAACTACATAATGAGACTAGCTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGGAGGAGGTTCAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGAGAGTCAGATGAGTTCGAAGGTTGGAGAGAAGATGTAGTAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGAGTGTAGTGAGTGTGGTTCGAGTTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTAGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATGTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCAGTGCGATTGAGGACCTTCAGTGCAGCAATACG", "CAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTGGCTCTAGGGACGAACGTTAGCAGCACTATTATTGGGCCATATTCCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGGAAGGAAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGGTTCAGGAGGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTGAGTTGATGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATATATTAAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACGT", "CAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGGTCGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGGATGGATTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACTGCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATATATTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTAGGCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATA", "CAGTGCTCTTGCATCGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTCAGCACTATTCTTGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATGAGAAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTCAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATATCTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTCATGGGAGAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCAACCTCGATGTTTCCAGTGCGATTGAGGACCTTCAGTGGCAATACGTA", "CAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTAGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATATATTTTTTTTCAACAGTTAGCCGCGTCGCCAGCTATGTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACA", "CAGTGTATTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTTGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATAGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTCAGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGAGAGTCTTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTAAATGGTTTTCAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATAGAGTTGACTTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTCTGTTTTTTTCAACAGTTAGCCGCGTCGCGCGGCTATCTGTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCATCCGATCAAGAAACCTGTCGTGCAGCAATACGTT", "CAGTGCTCTTGTGGGTCCGATCGCCAGATGATAAGGAACTACATAATACAGACTAGCTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGAGAGAAGATAGGTGACAGAGTGGAGTAGTAGTGGAGTCTGGGAGGATTGAGATAGTAGACTAGAAGGTTGGAGAGAGATGTAGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTTCGAGAGTTGTATGTTAGGGTGAGAGATTAGAGATGAGTTGGATGATCTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTGCAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTGAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTCCGACTCTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAGGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTCTGTGTTTTTTGAACAGTTGCACATTGACGCAGCTATATATTTTAATGGAAGGGCTAGGAGTTGTGGTAATCTTGTGTTCCTGGCTCCTCAGCGGTCTTTAGTCAACCTAGATGCTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACG", "TATGTATTGCTGTCCGATTCGCCAGATGATAAGGAACTACATAATATGTATCTACTATAGGGACGAACGTTAGCAGCACTATCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGAAGTAGTGGAGTCTGGGAGGATTGAGATGAGTCCAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATCGAGAGTTGTACGTCAGGGGTGTGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGTACTTATGCTATTGGTGGGTGTAGAGAGCGGATGTTATGCAAGTGTAATTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGGTATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCAAACGGTCTAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAATCCTCCTTTCAGTGC", "CAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTATTGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCAGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATGTG", "CAGTGCTCTTGTGGGTCCGATTCGCCAGATGGTGGGGAATTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGAGAAGTAGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTGCAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATCAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGGTTGGAGTTATGGTCGGATATGCATGGTAGTTGAGTGTGGTTACGAGTTGATAGAGGGAGAACATTGAGGAAGAAGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTGTGTGTGTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATA", "TCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGGAAGAGGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACG", "ATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTCTAGGGGTTTTTTGGGGAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGC", "ATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAAGGATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAATAGGTGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAAATGGGTCTTGAGGGGTTTTTTGGGCAAGATAACAGATAGATTTGCACTGTTATCTGTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGC", "CAGTGTATCTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTTTAGAGTTGATAGAGGGAGAACGTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTTTATCAGAGCAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATGACAGATCTTCGGTATCTGTTATCTGTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACGTGA", "CGTATTGCTCAGTGCTCTTGTGGTCTGATTTGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGGAGCGCAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTCTGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGCAAAGATAAGAGATACTTCGGTATCTGTTATCTGTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGCGCGATTGAGGACCTTCAGTGC", "TTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTGAAACGGGTCTTGAGGGGTTTTTTGGGAAAGAATAACAGATACTTCGGTATCTGTTATCTGTTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGGCTCTGTGTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACG", "CGTATTGCTCAGTGCTCTTGTGGTCTGATTTGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGTGTGTTTGTAAAAGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTACGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATAAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAGATAACAGATACTTCGGGTTCCTGTTATCTGTTTTTTTTCACAGTTAGCCGCGTTCGCGCGGCGATCGCTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGCGCGAAGCATACGTAACTGAACCAAAGACGACACATACA", "ATGTGTAACCTACTCAACCAAGTCTCGTATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTGTAATTAGACTCACTATATAGGGACAACATTTAGGCCCTATCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGTAATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGAAGTGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAGGTTCAAGGTAAGTTGAGTGGAGGATACTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGAGAATGTGGGGTGGACGGATTATGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGGATGGATTTGGTGGGAAGAAGAAGACGCGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTCAACAGTTAGCCGCGTTCGCACAGCTATATATTTTGGTGGAAGGGCTTCGGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACG", "ACATTTTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACCATAATACGAACGTTAGCAGCACTATTCGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAGTGTGACATAAGATGGAGATAGAGGGTGATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGACATGAGTTTGAAGGTTGGAGAGAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAGGGTCTTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTAGGGTCTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGAGGCCGAGTCGGTCGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAGTGATTCAGTTGGTGGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAAAACGGGTCTTGAGGGGTCTTGGGGAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCCATCCCCGTTTTTTTTCTTCTGGTGGAAGGGCTCGGAGTTGTGGAATCTATGTATCCTGGCTCCTCAGCGGCTTTCGTTGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACGCTGAACCAAGCAGACCACAT", "CCACGTATTGCTCAGTGCTCTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAAGAGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGGAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACGGTAACTGAACGAGAT", "TGTATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGGAGGTTCAGGAGAGGGATCATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAGGCTCAGGTGAGAAGGATATGGAATCGCGAAGTGGAAGGTGAGATTGAGTCGGTGGAAGAAGGGAAAATGATTGAAGTTGGTGGTTGTATCATCGCCAGATTTAGTAGAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGTAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTTTTCACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTTGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAACAATACGTAGTTGTCAAGTGCTGACAT", "ATGTACATCTACTCGTTCCGTTGGTCTTTGCTGAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACGTTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAAATAACAGATACTTCGGTATCTGTTCTGTATTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGCATCTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACGTAGT", "TTGTGTTTTGTCCCTCTACTCGTAGGTTGGTCTTGCTCAGTGCTCTTGTGGGTCCAATTAGCCAGATGATAAGGAACTACGTAATTAGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTACTGGTGGGTGTGAGAGCGGATGTTATGATCTAGGTATTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTAGTTGAGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTCTGTGTTCAACAGTTAGCCGCGTTCGCGCGGCTATATATTTTGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCGAGTGCGATTGAGGACCTTCAGTGCAGCAATACGTA", "AACGTATTGCTCAGTGCTCTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGAGATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGCGAGTAGTAGTGAGTCTGGAAGGATGAGACTAGTTTGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAAGAGGGTCAGTTGAGGTGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGCGCGATTTGAGGACCTTCAGTGCAGCAATACGAACGGTCGCTGGCCGCAGGGACG", "CGTATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTGCATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTCGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACGCTGCTAAGGGTTAGACATAAACAT", "ATGTCCCTGTACTTGGTTAGAATTATCGTATTGCTCAGTGCTCTTGTGGGTCCGATTCACAATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGGGAGGAGATTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGATCTGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGGAAGAAGGAGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATATATTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACGT", "ACGTATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACTGAACGTTAGCAGCACTATTCGGGCCTATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGTAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGAAGGTTGGAGAGAAGATGTCGTGAGAGAAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTCTAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATACGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAGGTCAGGCGGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAAAGATAACAGATACTTCGGTATCTGTTATCTGTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGGTAATTTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAATACGTAGTCTAGTCAAGCAGACGACATAAACAT", "TAAATGATATTGCTCAGTGCTCTTGTGGGTCCGATTCGCCAGATGATAAGGAACTACATAATACGACTCACTATAGGGACGAACGTTAGCAGCACTATTCTCGGGCCATCTCAGTGCAACAGTAACGTTAGCTAGCCTCAGAGGAAAGGAGAAAGGTGACATAAGATGGAGATAGAGGGCTATGATGGAGAGAGGAGGTTCAGGAGGAGGAATTATGGTGACAGAGTGAGAAGAGTAGTGGAGTCTGGGAGGATTGAGATGAGTTCGGAGGTTGGAGAGAAAGACGTCGGCGAGAGAGGAGGATGATACTGTGATGGAAGTTAGAGGGTCAGTTGAGGTGGGAGAGTATTCGAGAGTTGTATGTTAGGGTGCGAGATTAGAGATGAGTTGGACGTTGAGGAATGGTGGATTGACAGGATGTGGGATGGGTTTTACAGGGTGTGTTTGTAAAGGGTCTAGCAATTACATAACAGATAGTGTGTTGTGTGTAGGGTTATGCTTATTGGTGGGTGTAGAGAGCGGATGTTATGAGTGTTGGGTCTTGGAGGTGTAGGGAGTAAACGGTTGTGGGTAATGAGTTGACTGAGGTTGTGGTTGGATATGCATGGTAGTTGAGTGTGGTTGCTAGAGTTGATAGAGGGAGAACGTTGAAAGAGGATGAAGAGGCGGAGTAGTTGGTTGTTAGGACAGTTGGGTATGGAGAAAGGTCAGGGTGAGAAGGATATGGATCGTGAAGTGGAAGGTGAGATTCAGTTGGTGGGAAGAAGGAAACGAGATTGAAGTTGGTGGTTGCATCACATTGCCATCAGTAATAACCCCTTGGGGCCTCTAAACGGGTCTTGAGGGGTTTTTTGGGAACATATATATTTTGCATCTGTTATCTGTTTTTTTTCAACAGTTAGCCGCGTTCGCGCGGCTATCTGTTTTTTTTGGTGGAAGGGCTCGGAGTTGTGGTAATCTATGTATCCTGGCTCCTCAGCGGTCTTTCGTCGACCTTGATGTTTCCAGTGCGATTGAGGACCTTCAGTGCAGCAGAACACCAATGGTACCAGTAGGTTAACAGT", ] #aligner = pyabpoa.msa_aligner(aln_mode="l") def poa(seqs, **kwargs): aligner = pyabpoa.msa_aligner(aln_mode="l") res = aligner.msa(seqs, out_cons=True, out_msa=False, max_n_cons=1, min_freq=0.25) return res.cons_seq for i in range(1): res = poa(bad_seqs) for i in range(2): res = poa(good_seqs) for i in range(1): res = poa(bad_seqs) print("RESULT:") print(res) ```

I get a crash:

...
7f795ec6c000-7f795ec6e000 rw-p 0005c000 00:2b 82759669615                /home/jqs1/micromamba/envs/abpoa_test/lib/python3.12/site-packages/pyabpoa.cpython-312-x86_64-linux-gnu.so
7f795ec6e000-7f795edf6000 rw-p 00000000 00:00 0
7f795edff000-7f795ee04000 rw-p 00000000 00:00 0
7f795ee04000-7f795ee0b000 r--s 00000000 fd:00 50346192                   /usr/lib64/gconv/gconv-modules.cache
7f795ee0b000-7f795ee0c000 rw-p 00000000 00:00 0
7f795ee0c000-7f795ee0d000 r--p 00021000 fd:00 50332498                   /usr/lib64/ld-2.17.so
7f795ee0d000-7f795ee0e000 rw-p 00022000 fd:00 50332498                   /usr/lib64/ld-2.17.so
7f795ee0e000-7f795ee0f000 rw-p 00000000 00:00 0
7fff2e964000-7fff2e986000 rw-p 00000000 00:00 0                          [stack]7fff2e999000-7fff2e99b000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
Aborted

Something isn't being cleaned up when the pyabpoa.msa_aligner object is garbage-collected, because if I share the same aligner instance across aligner.msa calls, I get no crash:

aligner = pyabpoa.msa_aligner(aln_mode="l")

def poa(seqs, **kwargs):
    #aligner = pyabpoa.msa_aligner(aln_mode="l")
    res = aligner.msa(seqs, out_cons=True, out_msa=False, max_n_cons=1, min_freq=0.25)
    return res.cons_seq

for i in range(1):
    res = poa(bad_seqs)

for i in range(2):
    res = poa(good_seqs)

for i in range(1):
    res = poa(bad_seqs)

The above test scripts define two lists of sequences bad_seqs and good_seqs. Aligning bad_seqs more than once during the lifetime of the Python process, even if these are interspersed with aligning good_seqs (or any other list of sequences), is sufficient to trigger a crash.

Out of ~100k groups of 10-50 sequences (all ~4kb) I've tried aligning (in the context of the sequencing pipeline I'm working on), I've found ~4 sequence groups that trigger a crash. I've only double-checked that I can get a reproducible crash for one of them (bad_seqs), but I can go try to find other examples if that'd help.

Another clue, in case it's useful: while I was coming up with this minimal reproducible example occasionally I would get the output [abpoa_graph_node_id_to_index] Wrong node id: 19464488 before Python crashed. I can't seem to get it to print that any more, not sure why.

yangao07 commented 6 months ago

I do get error msg on my side using your "bad_seqs". Let me try to figure it out and get back to you.

yangao07 commented 6 months ago

@shenker I was able to see a ENOMEM error with 1.4.2, but not with 1.4.3. With 1.4.3, I tried both ways in your scripts (msa_aligner inside or outside the function), they both work.

How did you install pyabpoa? Via pip or from source? Can you try to remove it and re-install? Also, maybe paste your installation msg here is helpful.

shenker commented 6 months ago

Thanks for looking into this, I really appreciate it!

mamba create env -n abpoa_test2
mamba activate abpoa_test2
mamba install -c conda-forge python=3.11.7
pip install --no-cache-dir pyabpoa

prints

Collecting pyabpoa
  Using cached pyabpoa-1.4.3.tar.gz (689 kB)
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: pyabpoa
  Building wheel for pyabpoa (setup.py) ... done
  Created wheel for pyabpoa: filename=pyabpoa-1.4.3-cp311-cp311-linux_x86_64.whl
 size=187554 sha256=31f8017d08a554261d49a14151cd81ce89fb153076250764668ac78c66ff
8995
  Stored in directory: /home/jqs1/.cache/pip/wheels/08/17/6d/d349b4c15fb131cb555
e4b9bdac82e797d71b52c9bcfa44e2e
Successfully built pyabpoa
Installing collected packages: pyabpoa
Successfully installed pyabpoa-1.4.3

Running the above script outputs:

*** Error in `python': double free or corruption (!prev): 0x0000562e67[819/1878]
======= Backtrace: =========
/lib64/libc.so.6(+0x81329)[0x7fb697987329]
/home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa.cpy$
hon-311-x86_64-linux-gnu.so(simd_abpoa_realloc+0x7b)[0x7fb69865854b]
/home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa.cpy$
hon-311-x86_64-linux-gnu.so(simd_abpoa_align_sequence_to_subgraph+0x25d)[0x7fb69
865bd0d]
/home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa.cpyt
hon-311-x86_64-linux-gnu.so(simd_abpoa_align_sequence_to_graph+0x18)[0x7fb69866f
158]
/home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa.cpyt
hon-311-x86_64-linux-gnu.so(abpoa_align_sequence_to_graph+0x1f)[0x7fb6986419cf]
/home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa.cpyt
hon-311-x86_64-linux-gnu.so(+0x1d68b)[0x7fb69863a68b]
python(PyObject_Vectorcall+0x2c)[0x562e670a65ac]
python(_PyEval_EvalFrameDefault+0x716)[0x562e67099a36]
python(+0x2a48bd)[0x562e671508bd]
python(PyEval_EvalCode+0x9f)[0x562e6714ff4f]
python(+0x2c2eaa)[0x562e6716eeaa]
python(+0x2bea23)[0x562e6716aa23]
python(+0x2d3de0)[0x562e6717fde0]
python(_PyRun_SimpleFileObject+0x1ae)[0x562e6717f77e]
python(_PyRun_AnyFileObject+0x44)[0x562e6717f4a4]
python(Py_RunMain+0x374)[0x562e67179b94]
python(Py_BytesMain+0x37)[0x562e6713ff47]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7fb697928555]
python(+0x293ded)[0x562e6713fded]
======= Memory map: ========
...

It's worth mentioning that I'm running this on my institution's HPC cluster, which is running an ancient CentOS install. Specifically, the installed GCC is very old (9.2.0).

If I install GCC 13.2.0 via conda:

# same as above
mamba install gcc zlib
pip install --force-reinstall --no-cache-dir pyabpoa

outputs

Collecting pyabpoa
  Downloading pyabpoa-1.4.3.tar.gz (689 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 689.1/689.1 kB 25.4 MB/s eta 0:00:00
  Preparing metadata (setup.py) ... done
Building wheels for collected packages: pyabpoa
  Building wheel for pyabpoa (setup.py) ... done
  Created wheel for pyabpoa: filename=pyabpoa-1.4.3-cp311-cp311-linux_x86_64.wh$ size=198827 sha256=3ae1b56742029ebd58cee08c334aaf7adf8a587a8ee553e48c5c8302d59$ca3a
  Stored in directory: /tmp/pip-ephem-wheel-cache-yewfte0r/wheels/08/17/6d/d349$4c15fb131cb555e4b9bdac82e797d71b52c9bcfa44e2e
Successfully built pyabpoa
Installing collected packages: pyabpoa
  Attempting uninstall: pyabpoa
    Found existing installation: pyabpoa 1.4.3
    Uninstalling pyabpoa-1.4.3:
      Successfully uninstalled pyabpoa-1.4.3
Successfully installed pyabpoa-1.4.3

Now when I run python test.py, I randomly get one of three different outputs (seemingly with roughly equal probability):

(abpoa_test2) [jqs1@compute-a-16-160 scratch]$ python test.py
[simd_abpoa_align_sequence_to_subgraph] Error in cg_backtrack.
(abpoa_test2) [jqs1@compute-a-16-160 scratch]$ python test.py
Killed
(abpoa_test2) [jqs1@compute-a-16-160 scratch]$ python test.py
Segmentation fault

Now I try a third time compiling from git (instead of using pip). Still using GCC 13.2.0.

Full build log:

``` python setup.py install /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/setuptools/__init__.py:80: _DeprecatedInstaller: setuptools.installer and fetch_build_eggs are deprecated. !! ******************************************************************************** Requirements should be satisfied by a PEP 517 installer. If you are using pip, you can try `pip install --use-pep517`. ******************************************************************************** !! dist.fetch_build_eggs(dist.setup_requires) running install /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/setuptools/_distutils/cmd.py:66: SetuptoolsDeprecationWarning: setup.py install is deprecated. !! ******************************************************************************** Please avoid running ``setup.py`` directly. Instead, use pypa/build, pypa/installer or other standards-based tools. See https://blog.ganssle.io/articles/2021/10/setup-py-deprecated.html for details. ******************************************************************************** !! self.initialize_options() /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/setuptools/_distutils/cmd.py:66: EasyInstallDeprecationWarning: easy_install command is deprecated. !! ******************************************************************************** Please avoid running ``setup.py`` and ``easy_install``. Instead, use pypa/build, pypa/installer or other standards-based tools. See https://github.com/pypa/setuptools/issues/917 for details. ******************************************************************************** !! self.initialize_options() running bdist_egg running egg_info writing pyabpoa.egg-info/PKG-INFO writing dependency_links to pyabpoa.egg-info/dependency_links.txt writing top-level names to pyabpoa.egg-info/top_level.txt reading manifest file 'pyabpoa.egg-info/SOURCES.txt' reading manifest template 'MANIFEST.in' adding license file 'LICENSE' writing manifest file 'pyabpoa.egg-info/SOURCES.txt' installing library code to build/bdist.linux-x86_64/egg running install_lib running build_ext building 'pyabpoa' extension creating build creating build/temp.linux-x86_64-cpython-311 creating build/temp.linux-x86_64-cpython-311/python creating build/temp.linux-x86_64-cpython-311/src gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c python/pyabpoa.c -o build/temp.linux-x86_64-cpython-311/python/pyabpoa.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/abpoa_align.c -o build/temp.linux-x86_64-cpython-311/src/abpoa_align.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native src/abpoa_align.c: In function 'abpoa_msa': src/abpoa_align.c:435:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 435 | for (i = 0; i < n_seq; ++i) free(weights[i]); free(weights); | ^~~ src/abpoa_align.c:435:51: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 435 | for (i = 0; i < n_seq; ++i) free(weights[i]); free(weights); | ^~~~ gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/abpoa_graph.c -o build/temp.linux-x86_64-cpython-311/src/abpoa_graph.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native src/abpoa_graph.c: In function 'abpoa_free_cons': src/abpoa_graph.c:145:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 145 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_node_ids[i]); free(abc->cons_node_ids); | ^~~ src/abpoa_graph.c:145:76: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 145 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_node_ids[i]); free(abc->cons_node_ids); | ^~~~ src/abpoa_graph.c:148:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 148 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_base[i]); free(abc->cons_base); | ^~~ src/abpoa_graph.c:148:72: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 148 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_base[i]); free(abc->cons_base); | ^~~~ src/abpoa_graph.c:151:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 151 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_cov[i]); free(abc->cons_cov); | ^~~ src/abpoa_graph.c:151:71: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 151 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_cov[i]); free(abc->cons_cov); | ^~~~ src/abpoa_graph.c:154:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 154 | for (i = 0; i < abc->n_cons; ++i) free(abc->clu_read_ids[i]); free(abc->clu_read_ids); | ^~~ src/abpoa_graph.c:154:75: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 154 | for (i = 0; i < abc->n_cons; ++i) free(abc->clu_read_ids[i]); free(abc->clu_read_ids); | ^~~~ src/abpoa_graph.c:157:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 157 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_phred_score[i]); free(abc->cons_phred_score); | ^~~ src/abpoa_graph.c:157:79: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 157 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_phred_score[i]); free(abc->cons_phred_score); | ^~~~ src/abpoa_graph.c: In function 'abpoa_reset': src/abpoa_graph.c:721:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 721 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_node_ids[i]); free(abc->cons_node_ids); | ^~~ src/abpoa_graph.c:721:76: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 721 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_node_ids[i]); free(abc->cons_node_ids); | ^~~~ src/abpoa_graph.c:724:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 724 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_base[i]); free(abc->cons_base); | ^~~ src/abpoa_graph.c:724:72: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 724 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_base[i]); free(abc->cons_base); | ^~~~ src/abpoa_graph.c:727:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 727 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_cov[i]); free(abc->cons_cov); | ^~~ src/abpoa_graph.c:727:71: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 727 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_cov[i]); free(abc->cons_cov); | ^~~~ src/abpoa_graph.c:730:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 730 | for (i = 0; i < abc->n_cons; ++i) free(abc->clu_read_ids[i]); free(abc->clu_read_ids); | ^~~ src/abpoa_graph.c:730:75: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 730 | for (i = 0; i < abc->n_cons; ++i) free(abc->clu_read_ids[i]); free(abc->clu_read_ids); | ^~~~ src/abpoa_graph.c:733:13: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 733 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_phred_score[i]); free(abc->cons_phred_score); | ^~~ src/abpoa_graph.c:733:79: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 733 | for (i = 0; i < abc->n_cons; ++i) free(abc->cons_phred_score[i]); free(abc->cons_phred_score); | ^~~~ gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/abpoa_output.c -o build/temp.linux-x86_64-cpython-311/src/abpoa_output.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native src/abpoa_output.c: In function 'abpoa_multip_heaviest_bundling': src/abpoa_output.c:492:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 492 | for (i = 0; i < n_clu; ++i) free(max_out_id[i]); free(max_out_id); | ^~~ src/abpoa_output.c:492:54: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 492 | for (i = 0; i < n_clu; ++i) free(max_out_id[i]); free(max_out_id); | ^~~~ src/abpoa_output.c: In function 'abpoa_collect_clu_hap_read_ids': src/abpoa_output.c:854:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 854 | for (i = 0; i < m_clu; ++i) free(clu_haps[i]); free(clu_haps); free(clu_size); | ^~~ src/abpoa_output.c:854:52: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 854 | for (i = 0; i < m_clu; ++i) free(clu_haps[i]); free(clu_haps); free(clu_size); | ^~~~ src/abpoa_output.c: In function 'abpoa_generate_consensus': src/abpoa_output.c:916:9: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 916 | for (i = 0; i < m_clu; ++i) free(clu_read_ids[i]); free(clu_read_ids); | ^~~ src/abpoa_output.c:916:60: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 916 | for (i = 0; i < m_clu; ++i) free(clu_read_ids[i]); free(clu_read_ids); | ^~~~ gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/abpoa_plot.c -o build/temp.linux-x86_64-cpython-311/src/abpoa_plot.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native src/abpoa_plot.c: In function 'abpoa_dump_pog': src/abpoa_plot.c:111:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 111 | for (i = 0; i < abg->node_n; ++i) free(node_label[i]); free(node_label); | ^~~ src/abpoa_plot.c:111:60: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 111 | for (i = 0; i < abg->node_n; ++i) free(node_label[i]); free(node_label); | ^~~~ gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/abpoa_seed.c -o build/temp.linux-x86_64-cpython-311/src/abpoa_seed.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/abpoa_seq.c -o build/temp.linux-x86_64-cpython-311/src/abpoa_seq.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/kalloc.c -o build/temp.linux-x86_64-cpython-311/src/kalloc.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/kstring.c -o build/temp.linux-x86_64-cpython-311/src/kstring.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/simd_abpoa_align.c -o build/temp.linux-x86_64-cpython-311/src/simd_abpoa_align.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native src/simd_abpoa_align.c: In function 'abpoa_cg_global_align_sequence_to_graph_core': src/simd_abpoa_align.c:1587:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 1587 | for (i = 1; i < pn; ++i) SUF_MIN[i] = SIMDShiftLeft(SUF_MIN[i-1], SIMDShiftOneNi32); SUF_MIN[pn] = SUF_MIN[pn-1]; | ^~~ src/simd_abpoa_align.c:1587:90: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 1587 | for (i = 1; i < pn; ++i) SUF_MIN[i] = SIMDShiftLeft(SUF_MIN[i-1], SIMDShiftOneNi32); SUF_MIN[pn] = SUF_MIN[pn-1]; | ^~~~~~~ src/simd_abpoa_align.c: In function 'simd_abpoa_align_sequence_to_subgraph': src/simd_abpoa_align.c:460:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 460 | for (i = 1; i < pn; ++i) \ | ^~~ src/simd_abpoa_align.c:539:5: note: in expansion of macro 'simd_abpoa_var' 539 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1073:5: note: in expansion of macro 'simd_abpoa_lg_var' 1073 | simd_abpoa_lg_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:461:66: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 461 | SUF_MIN[i] = SIMDShiftLeft(SUF_MIN[i-1], SIMDShiftOneN); SUF_MIN[pn] = SUF_MIN[pn-1]; \ | ^~~~~~~ src/simd_abpoa_align.c:539:5: note: in expansion of macro 'simd_abpoa_var' 539 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1073:5: note: in expansion of macro 'simd_abpoa_lg_var' 1073 | simd_abpoa_lg_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~ src/simd_abpoa_align.c:1097:5: note: in expansion of macro 'simd_abpoa_free_var' 1097 | simd_abpoa_free_var; SIMDFree(GAP_E1S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:60: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~~ src/simd_abpoa_align.c:1097:5: note: in expansion of macro 'simd_abpoa_free_var' 1097 | simd_abpoa_free_var; SIMDFree(GAP_E1S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:460:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 460 | for (i = 1; i < pn; ++i) \ | ^~~ src/simd_abpoa_align.c:544:5: note: in expansion of macro 'simd_abpoa_var' 544 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1103:5: note: in expansion of macro 'simd_abpoa_ag_var' 1103 | simd_abpoa_ag_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1691:13: note: in expansion of macro 'simd_abpoa_ag_align_sequence_to_graph_core' 1691 | simd_abpoa_ag_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:461:66: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 461 | SUF_MIN[i] = SIMDShiftLeft(SUF_MIN[i-1], SIMDShiftOneN); SUF_MIN[pn] = SUF_MIN[pn-1]; \ | ^~~~~~~ src/simd_abpoa_align.c:544:5: note: in expansion of macro 'simd_abpoa_var' 544 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1103:5: note: in expansion of macro 'simd_abpoa_ag_var' 1103 | simd_abpoa_ag_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1691:13: note: in expansion of macro 'simd_abpoa_ag_align_sequence_to_graph_core' 1691 | simd_abpoa_ag_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~ src/simd_abpoa_align.c:1126:5: note: in expansion of macro 'simd_abpoa_free_var' 1126 | simd_abpoa_free_var; SIMDFree(GAP_E1S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1691:13: note: in expansion of macro 'simd_abpoa_ag_align_sequence_to_graph_core' 1691 | simd_abpoa_ag_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:60: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~~ src/simd_abpoa_align.c:1126:5: note: in expansion of macro 'simd_abpoa_free_var' 1126 | simd_abpoa_free_var; SIMDFree(GAP_E1S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1691:13: note: in expansion of macro 'simd_abpoa_ag_align_sequence_to_graph_core' 1691 | simd_abpoa_ag_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:460:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 460 | for (i = 1; i < pn; ++i) \ | ^~~ src/simd_abpoa_align.c:549:5: note: in expansion of macro 'simd_abpoa_var' 549 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1132:5: note: in expansion of macro 'simd_abpoa_cg_var' 1132 | simd_abpoa_cg_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1694:13: note: in expansion of macro 'simd_abpoa_cg_align_sequence_to_graph_core' 1694 | simd_abpoa_cg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:461:66: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 461 | SUF_MIN[i] = SIMDShiftLeft(SUF_MIN[i-1], SIMDShiftOneN); SUF_MIN[pn] = SUF_MIN[pn-1]; \ | ^~~~~~~ src/simd_abpoa_align.c:549:5: note: in expansion of macro 'simd_abpoa_var' 549 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1132:5: note: in expansion of macro 'simd_abpoa_cg_var' 1132 | simd_abpoa_cg_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1694:13: note: in expansion of macro 'simd_abpoa_cg_align_sequence_to_graph_core' 1694 | simd_abpoa_cg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~ src/simd_abpoa_align.c:1156:5: note: in expansion of macro 'simd_abpoa_free_var' 1156 | simd_abpoa_free_var; SIMDFree(GAP_E1S); SIMDFree(GAP_E2S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1694:13: note: in expansion of macro 'simd_abpoa_cg_align_sequence_to_graph_core' 1694 | simd_abpoa_cg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:60: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~~ src/simd_abpoa_align.c:1156:5: note: in expansion of macro 'simd_abpoa_free_var' 1156 | simd_abpoa_free_var; SIMDFree(GAP_E1S); SIMDFree(GAP_E2S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1694:13: note: in expansion of macro 'simd_abpoa_cg_align_sequence_to_graph_core' 1694 | simd_abpoa_cg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:460:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 460 | for (i = 1; i < pn; ++i) \ | ^~~ src/simd_abpoa_align.c:539:5: note: in expansion of macro 'simd_abpoa_var' 539 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1073:5: note: in expansion of macro 'simd_abpoa_lg_var' 1073 | simd_abpoa_lg_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1699:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1699 | simd_abpoa_lg_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:461:66: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 461 | SUF_MIN[i] = SIMDShiftLeft(SUF_MIN[i-1], SIMDShiftOneN); SUF_MIN[pn] = SUF_MIN[pn-1]; \ | ^~~~~~~ src/simd_abpoa_align.c:539:5: note: in expansion of macro 'simd_abpoa_var' 539 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1073:5: note: in expansion of macro 'simd_abpoa_lg_var' 1073 | simd_abpoa_lg_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1699:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1699 | simd_abpoa_lg_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~ src/simd_abpoa_align.c:1097:5: note: in expansion of macro 'simd_abpoa_free_var' 1097 | simd_abpoa_free_var; SIMDFree(GAP_E1S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1699:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1699 | simd_abpoa_lg_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:60: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~~ src/simd_abpoa_align.c:1097:5: note: in expansion of macro 'simd_abpoa_free_var' 1097 | simd_abpoa_free_var; SIMDFree(GAP_E1S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1699:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1699 | simd_abpoa_lg_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:460:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 460 | for (i = 1; i < pn; ++i) \ | ^~~ src/simd_abpoa_align.c:544:5: note: in expansion of macro 'simd_abpoa_var' 544 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1103:5: note: in expansion of macro 'simd_abpoa_ag_var' 1103 | simd_abpoa_ag_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1702:13: note: in expansion of macro 'simd_abpoa_ag_align_sequence_to_graph_core' 1702 | simd_abpoa_ag_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:461:66: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 461 | SUF_MIN[i] = SIMDShiftLeft(SUF_MIN[i-1], SIMDShiftOneN); SUF_MIN[pn] = SUF_MIN[pn-1]; \ | ^~~~~~~ src/simd_abpoa_align.c:544:5: note: in expansion of macro 'simd_abpoa_var' 544 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1103:5: note: in expansion of macro 'simd_abpoa_ag_var' 1103 | simd_abpoa_ag_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1702:13: note: in expansion of macro 'simd_abpoa_ag_align_sequence_to_graph_core' 1702 | simd_abpoa_ag_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~ src/simd_abpoa_align.c:1126:5: note: in expansion of macro 'simd_abpoa_free_var' 1126 | simd_abpoa_free_var; SIMDFree(GAP_E1S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1702:13: note: in expansion of macro 'simd_abpoa_ag_align_sequence_to_graph_core' 1702 | simd_abpoa_ag_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:60: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~~ src/simd_abpoa_align.c:1126:5: note: in expansion of macro 'simd_abpoa_free_var' 1126 | simd_abpoa_free_var; SIMDFree(GAP_E1S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1702:13: note: in expansion of macro 'simd_abpoa_ag_align_sequence_to_graph_core' 1702 | simd_abpoa_ag_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:460:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 460 | for (i = 1; i < pn; ++i) \ | ^~~ src/simd_abpoa_align.c:549:5: note: in expansion of macro 'simd_abpoa_var' 549 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1132:5: note: in expansion of macro 'simd_abpoa_cg_var' 1132 | simd_abpoa_cg_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1705:13: note: in expansion of macro 'simd_abpoa_cg_align_sequence_to_graph_core' 1705 | simd_abpoa_cg_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:461:66: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 461 | SUF_MIN[i] = SIMDShiftLeft(SUF_MIN[i-1], SIMDShiftOneN); SUF_MIN[pn] = SUF_MIN[pn-1]; \ | ^~~~~~~ src/simd_abpoa_align.c:549:5: note: in expansion of macro 'simd_abpoa_var' 549 | simd_abpoa_var(score_t, sp, SIMDSetOne, SIMDShiftOneN); \ | ^~~~~~~~~~~~~~ src/simd_abpoa_align.c:1132:5: note: in expansion of macro 'simd_abpoa_cg_var' 1132 | simd_abpoa_cg_var(score_t, sp, SIMDSetOne, SIMDShiftOneN, SIMDAdd); \ | ^~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1705:13: note: in expansion of macro 'simd_abpoa_cg_align_sequence_to_graph_core' 1705 | simd_abpoa_cg_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation] 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~ src/simd_abpoa_align.c:1156:5: note: in expansion of macro 'simd_abpoa_free_var' 1156 | simd_abpoa_free_var; SIMDFree(GAP_E1S); SIMDFree(GAP_E2S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1705:13: note: in expansion of macro 'simd_abpoa_cg_align_sequence_to_graph_core' 1705 | simd_abpoa_cg_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:534:60: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for' 534 | for (i = 0; i < matrix_row_n; ++i) free(pre_index[i]); free(pre_index); free(pre_n); \ | ^~~~ src/simd_abpoa_align.c:1156:5: note: in expansion of macro 'simd_abpoa_free_var' 1156 | simd_abpoa_free_var; SIMDFree(GAP_E1S); SIMDFree(GAP_E2S); \ | ^~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1705:13: note: in expansion of macro 'simd_abpoa_cg_align_sequence_to_graph_core' 1705 | simd_abpoa_cg_align_sequence_to_graph_core(int32_t, _simd_p32, SIMDSetOnei32, SIMDMaxi32, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1053:18: warning: 'a' may be used uninitialized [-Wmaybe-uninitialized] 1053 | if (_dp_h[i] > max) { \ | ~~~~~^~~ src/simd_abpoa_align.c:1079:13: note: in expansion of macro 'simd_abpoa_max_in_row' 1079 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1046:11: note: 'a' declared here 1046 | SIMDi a = dp_h[end_sn], b = qi[end_sn]; \ | ^ src/simd_abpoa_align.c:1079:13: note: in expansion of macro 'simd_abpoa_max_in_row' 1079 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1054:40: warning: 'b' may be used uninitialized [-Wmaybe-uninitialized] 1054 | max = _dp_h[i]; max_i = _qi[i]; \ | ~~~^~~ src/simd_abpoa_align.c:1079:13: note: in expansion of macro 'simd_abpoa_max_in_row' 1079 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1046:29: note: 'b' declared here 1046 | SIMDi a = dp_h[end_sn], b = qi[end_sn]; \ | ^ src/simd_abpoa_align.c:1079:13: note: in expansion of macro 'simd_abpoa_max_in_row' 1079 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1053:18: warning: 'a' may be used uninitialized [-Wmaybe-uninitialized] 1053 | if (_dp_h[i] > max) { \ | ~~~~~^~~ src/simd_abpoa_align.c:1083:13: note: in expansion of macro 'simd_abpoa_max_in_row' 1083 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1046:11: note: 'a' declared here 1046 | SIMDi a = dp_h[end_sn], b = qi[end_sn]; \ | ^ src/simd_abpoa_align.c:1083:13: note: in expansion of macro 'simd_abpoa_max_in_row' 1083 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1054:40: warning: 'b' may be used uninitialized [-Wmaybe-uninitialized] 1054 | max = _dp_h[i]; max_i = _qi[i]; \ | ~~~^~~ src/simd_abpoa_align.c:1083:13: note: in expansion of macro 'simd_abpoa_max_in_row' 1083 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1046:29: note: 'b' declared here 1046 | SIMDi a = dp_h[end_sn], b = qi[end_sn]; \ | ^ src/simd_abpoa_align.c:1083:13: note: in expansion of macro 'simd_abpoa_max_in_row' 1083 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1053:18: warning: 'a' may be used uninitialized [-Wmaybe-uninitialized] 1053 | if (_dp_h[i] > max) { \ | ~~~~~^~~ src/simd_abpoa_align.c:1088:17: note: in expansion of macro 'simd_abpoa_max_in_row' 1088 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1046:11: note: 'a' declared here 1046 | SIMDi a = dp_h[end_sn], b = qi[end_sn]; \ | ^ src/simd_abpoa_align.c:1088:17: note: in expansion of macro 'simd_abpoa_max_in_row' 1088 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1054:40: warning: 'b' may be used uninitialized [-Wmaybe-uninitialized] 1054 | max = _dp_h[i]; max_i = _qi[i]; \ | ~~~^~~ src/simd_abpoa_align.c:1088:17: note: in expansion of macro 'simd_abpoa_max_in_row' 1088 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1046:29: note: 'b' declared here 1046 | SIMDi a = dp_h[end_sn], b = qi[end_sn]; \ | ^ src/simd_abpoa_align.c:1088:17: note: in expansion of macro 'simd_abpoa_max_in_row' 1088 | simd_abpoa_max_in_row(score_t, SIMDSetIfGreater, SIMDGetIfGreater); \ | ^~~~~~~~~~~~~~~~~~~~~ src/simd_abpoa_align.c:1688:13: note: in expansion of macro 'simd_abpoa_lg_align_sequence_to_graph_core' 1688 | simd_abpoa_lg_align_sequence_to_graph_core(int16_t, _simd_p16, SIMDSetOnei16, SIMDMaxi16, \ | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/simd_check.c -o build/temp.linux-x86_64-cpython-311/src/simd_check.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -DNDEBUG -fwrapv -O2 -Wall -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -O2 -isystem /home/jqs1/micromamba/envs/abpoa_test2/include -fPIC -Iinclude/ -I/home/jqs1/micromamba/envs/abpoa_test2/include/python3.11 -c src/utils.c -o build/temp.linux-x86_64-cpython-311/src/utils.o -O3 -Wno-error=declaration-after-statement -DUSE_SIMDE -DSIMDE_ENABLE_NATIVE_ALIASES -march=native creating build/lib.linux-x86_64-cpython-311 gcc -pthread -B /home/jqs1/micromamba/envs/abpoa_test2/compiler_compat -shared -Wl,--allow-shlib-undefined -Wl,-rpath,/home/jqs1/micromamba/envs/abpoa_test2/lib -Wl,-rpath-link,/home/jqs1/micromamba/envs/abpoa_test2/lib -L/home/jqs1/micromamba/envs/abpoa_test2/lib -Wl,--allow-shlib-undefined -Wl,-rpath,/home/jqs1/micromamba/envs/abpoa_test2/lib -Wl,-rpath-link,/home/jqs1/micromamba/envs/abpoa_test2/lib -L/home/jqs1/micromamba/envs/abpoa_test2/lib build/temp.linux-x86_64-cpython-311/python/pyabpoa.o build/temp.linux-x86_64-cpython-311/src/abpoa_align.o build/temp.linux-x86_64-cpython-311/src/abpoa_graph.o build/temp.linux-x86_64-cpython-311/src/abpoa_output.o build/temp.linux-x86_64-cpython-311/src/abpoa_plot.o build/temp.linux-x86_64-cpython-311/src/abpoa_seed.o build/temp.linux-x86_64-cpython-311/src/abpoa_seq.o build/temp.linux-x86_64-cpython-311/src/kalloc.o build/temp.linux-x86_64-cpython-311/src/kstring.o build/temp.linux-x86_64-cpython-311/src/simd_abpoa_align.o build/temp.linux-x86_64-cpython-311/src/simd_check.o build/temp.linux-x86_64-cpython-311/src/utils.o -lz -lm -lpthread -o build/lib.linux-x86_64-cpython-311/pyabpoa.cpython-311-x86_64-linux-gnu.so creating build/bdist.linux-x86_64 creating build/bdist.linux-x86_64/egg copying build/lib.linux-x86_64-cpython-311/pyabpoa.cpython-311-x86_64-linux-gnu.so -> build/bdist.linux-x86_64/egg creating stub loader for pyabpoa.cpython-311-x86_64-linux-gnu.so byte-compiling build/bdist.linux-x86_64/egg/pyabpoa.py to pyabpoa.cpython-311.pyc creating build/bdist.linux-x86_64/egg/EGG-INFO copying pyabpoa.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO copying pyabpoa.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying pyabpoa.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO copying pyabpoa.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO writing build/bdist.linux-x86_64/egg/EGG-INFO/native_libs.txt zip_safe flag not set; analyzing archive contents... __pycache__.pyabpoa.cpython-311: module references __file__ creating dist creating 'dist/pyabpoa-1.4.3-py3.11-linux-x86_64.egg' and adding 'build/bdist.linux-x86_64/egg' to it removing 'build/bdist.linux-x86_64/egg' (and everything under it) Processing pyabpoa-1.4.3-py3.11-linux-x86_64.egg removing '/home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg' (and everything under it) creating /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg Extracting pyabpoa-1.4.3-py3.11-linux-x86_64.egg to /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages Adding pyabpoa 1.4.3 to easy-install.pth file Installed /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg Processing dependencies for pyabpoa==1.4.3 Finished processing dependencies for pyabpoa==1.4.3 ```

Test script crashes in the same three ways as the previous attempt.

Let me know if there's any additional information/debugging I can do on my end that would help.

yangao07 commented 6 months ago

I see. Can you show me the output of cat /proc/cpuinfo | grep -E "sse|avx" | tail -n1?

shenker commented 6 months ago
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc aperfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid dca sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm 3dnowprefetch epb cat_l3 cdp_l3 invpcid_single ssbd rsb_ctxsw ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm cqm rdt_a rdseed adx smap intel_pt xsaveopt cqm_llc cqm_occup_llc cqm_mbm_total cqm_mbm_local dtherm ida arat pln pts md_clear spec_ctrl intel_stibp flush_l1d
yangao07 commented 6 months ago

Thanks! Looks like this is an old cpu model. Can you try re-install it with SSE4=1 python setup.py install?

shenker commented 6 months ago

Same result. Some more clues: running the test script above results in widely varying runtimes (before it crashes):

(abpoa_test2) [jqs1@compute-e-16-230 scratch]$ time python test.py
Segmentation fault

real    0m0.725s
user    0m0.291s
sys     0m0.402s
(abpoa_test2) [jqs1@compute-e-16-230 scratch]$ time python test.py
Killed

real    0m9.223s
user    0m4.650s
sys     0m4.564s
(abpoa_test2) [jqs1@compute-e-16-230 scratch]$ time python test.py
Killed

real    0m10.231s
user    0m5.201s
sys     0m5.004s
(abpoa_test2) [jqs1@compute-e-16-230 scratch]$ time python test.py
Segmentation fault

real    0m0.741s
user    0m0.312s
sys     0m0.404s

When it says “Killed,” I realized that it was being killed by our SLURM cluster's memory-usage-quota-killer. There's something nondeterministic happening. 50% of the time it starts leaking memory (I've tested that memory usage grows steadily until 64GB, I assume it'll keep going indefinitely if I let it), and the other 50% of the time it segfaults within 1s.

Here's a stacktrace:

``` (abpoa_test2) [jqs1@compute-a-16-38 scratch]$ catchsegv python test.py *** Segmentation fault Register dump: RAX: 00000000729cd390 RBX: 00007f9c1ec42fc0 RCX: 00007f9c1ec47f70 RDX: 00000000729cd390 RSI: 0000000000000000 RDI: 0000000000003fc0 RBP: 000055da72a3d4a0 R8 : 00000000729cd390 R9 : 00007f9c47b6b410 R10: 00000000729cd390 R11: 00000000000000ff R12: 000000000000001f R13: 0000000000000000 R14: 0000000000000000 R15: 00007f9c681cc128 RSP: 00007ffc2a9f74c0 RIP: 00007f9c6803cf00 EFLAGS: 00010246 CS: 0033 FS: 0000 GS: 0000 Trap: 0000000e Error: 00000004 OldMask: 00000000 CR2: e937cdb0 FPUCW: 0000037f FPUSW: 00000000 TAG: 00000000 RIP: 00000000 RDP: 00000000 ST(0) 0000 0000000000000000 ST(1) 0000 0000000000000000 ST(2) 0000 0000000000000000 ST(3) 0000 0000000000000000 ST(4) 0000 0000000000000000 ST(5) 0000 0000000000000000 ST(6) 0000 0000000000000000 ST(7) 0000 0000000000000000 mxcsr: 1fa0 XMM0: 00000000000000000000000000000002 XMM1: 00000000000000000000000000000002 XMM2: 00000000000000000000000000000002 XMM3: 00000000000000000000000000000002 XMM4: 00000000000000000000000000000002 XMM5: 00000000000000000000000000000002 XMM6: 00000000000000000000000000000002 XMM7: 00000000000000000000000000000002 XMM8: 00000000000000000000000000000002 XMM9: 00000000000000000000000000000002 XMM10: 00000000000000000000000000000002 XMM11: 00000000000000000000000000000002 XMM12: 00000000000000000000000000000002 XMM13: 00000000000000000000000000000002 XMM14: 00000000000000000000000000000002 XMM15: 00000000000000000000000000000002 Backtrace: /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg/pyabpoa.cpython-311-x86_64-linux-gnu.so(simd_abpoa_align_sequence_to_subgraph+0xbd60)[0x7f9c6803cf00] /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg/pyabpoa.cpython-311-x86_64-linux-gnu.so(simd_abpoa_align_sequence_to_graph+0x18)[0x7f9c68045c38] /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg/pyabpoa.cpython-311-x86_64-linux-gnu.so(abpoa_align_sequence_to_graph+0x1f)[0x7f9c6801743f] /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg/pyabpoa.cpython-311-x86_64-linux-gnu.so(+0x194e0)[0x7f9c6800d4e0] python(PyObject_Vectorcall+0x2c)[0x55da704c35ac] python(_PyEval_EvalFrameDefault+0x716)[0x55da704b6a36] python(+0x2a48bd)[0x55da7056d8bd] python(PyEval_EvalCode+0x9f)[0x55da7056cf4f] python(+0x2c2eaa)[0x55da7058beaa] python(+0x2bea23)[0x55da70587a23] python(+0x2d3de0)[0x55da7059cde0] python(_PyRun_SimpleFileObject+0x1ae)[0x55da7059c77e] python(_PyRun_AnyFileObject+0x44)[0x55da7059c4a4] python(Py_RunMain+0x374)[0x55da70596b94] python(Py_BytesMain+0x37)[0x55da7055cf47] /lib64/libc.so.6(__libc_start_main+0xf5)[0x7f9c670fc555] python(+0x293ded)[0x55da7055cded] Memory map: 55da702c9000-55da703b9000 r--p 00000000 00:28 82798636984 /home/jqs1/micromamba/envs/abpoa_test2/bin/python3.11 55da703b9000-55da705f9000 r-xp 000f0000 00:28 82798636984 /home/jqs1/micromamba/envs/abpoa_test2/bin/python3.11 55da705f9000-55da706e6000 r--p 00330000 00:28 82798636984 /home/jqs1/micromamba/envs/abpoa_test2/bin/python3.11 55da706e6000-55da70715000 r--p 0041c000 00:28 82798636984 /home/jqs1/micromamba/envs/abpoa_test2/bin/python3.11 55da70715000-55da70846000 rw-p 0044b000 00:28 82798636984 /home/jqs1/micromamba/envs/abpoa_test2/bin/python3.11 55da70846000-55da70888000 rw-p 00000000 00:00 0 55da72815000-55da73009000 rw-p 00000000 00:00 0 [heap] 7f9c1ec3e000-7f9c5ec3f000 rw-p 00000000 00:00 0 7f9c5ec3f000-7f9c5f2c0000 rw-p 00000000 00:00 0 7f9c60859000-7f9c6085d000 r--p 00000000 00:28 82516778280 /home/jqs1/micromamba/envs/abpoa_test2/lib/libgcc_s.so.1 7f9c6085d000-7f9c6086f000 r-xp 00004000 00:28 82516778280 /home/jqs1/micromamba/envs/abpoa_test2/lib/libgcc_s.so.1 7f9c6086f000-7f9c60872000 r--p 00016000 00:28 82516778280 /home/jqs1/micromamba/envs/abpoa_test2/lib/libgcc_s.so.1 7f9c60872000-7f9c60873000 r--p 00019000 00:28 82516778280 /home/jqs1/micromamba/envs/abpoa_test2/lib/libgcc_s.so.1 7f9c60873000-7f9c60874000 rw-p 0001a000 00:28 82516778280 /home/jqs1/micromamba/envs/abpoa_test2/lib/libgcc_s.so.1 7f9c60874000-7f9c60877000 r--p 00000000 00:28 80196924890 /home/jqs1/micromamba/envs/abpoa_test2/lib/libz.so.1.2.13 7f9c60877000-7f9c60886000 r-xp 00003000 00:28 80196924890 /home/jqs1/micromamba/envs/abpoa_test2/lib/libz.so.1.2.13 7f9c60886000-7f9c6088d000 r--p 00012000 00:28 80196924890 /home/jqs1/micromamba/envs/abpoa_test2/lib/libz.so.1.2.13 7f9c6088d000-7f9c6088e000 r--p 00018000 00:28 80196924890 /home/jqs1/micromamba/envs/abpoa_test2/lib/libz.so.1.2.13 7f9c6088e000-7f9c6088f000 rw-p 00019000 00:28 80196924890 /home/jqs1/micromamba/envs/abpoa_test2/lib/libz.so.1.2.13 7f9c6088f000-7f9c6098f000 rw-p 00000000 00:00 0 7f9c6098f000-7f9c66ed2000 r--p 00000000 fd:00 16778340 /usr/lib/locale/locale-archive 7f9c66ed2000-7f9c66ed9000 r-xp 00000000 fd:00 50345904 /usr/lib64/librt-2.17.so 7f9c66ed9000-7f9c670d8000 ---p 00007000 fd:00 50345904 /usr/lib64/librt-2.17.so 7f9c670d8000-7f9c670d9000 r--p 00006000 fd:00 50345904 /usr/lib64/librt-2.17.so 7f9c670d9000-7f9c670da000 rw-p 00007000 fd:00 50345904 /usr/lib64/librt-2.17.so 7f9c670da000-7f9c6729e000 r-xp 00000000 fd:00 50336026 /usr/lib64/libc-2.17.so 7f9c6729e000-7f9c6749d000 ---p 001c4000 fd:00 50336026 /usr/lib64/libc-2.17.so 7f9c6749d000-7f9c674a1000 r--p 001c3000 fd:00 50336026 /usr/lib64/libc-2.17.so 7f9c674a1000-7f9c674a3000 rw-p 001c7000 fd:00 50336026 /usr/lib64/libc-2.17.so 7f9c674a3000-7f9c674a8000 rw-p 00000000 00:00 0 7f9c674a8000-7f9c675a9000 r-xp 00000000 fd:00 50336066 /usr/lib64/libm-2.17.so 7f9c675a9000-7f9c677a8000 ---p 00101000 fd:00 50336066 /usr/lib64/libm-2.17.so 7f9c677a8000-7f9c677a9000 r--p 00100000 fd:00 50336066 /usr/lib64/libm-2.17.so 7f9c677a9000-7f9c677aa000 rw-p 00101000 fd:00 50336066 /usr/lib64/libm-2.17.so 7f9c677aa000-7f9c677ac000 r-xp 00000000 fd:00 50345912 /usr/lib64/libutil-2.17.so 7f9c677ac000-7f9c679ab000 ---p 00002000 fd:00 50345912 /usr/lib64/libutil-2.17.so 7f9c679ab000-7f9c679ac000 r--p 00001000 fd:00 50345912 /usr/lib64/libutil-2.17.so 7f9c679ac000-7f9c679ad000 rw-p 00002000 fd:00 50345912 /usr/lib64/libutil-2.17.so 7f9c679ad000-7f9c679af000 r-xp 00000000 fd:00 50336064 /usr/lib64/libdl-2.17.so 7f9c679af000-7f9c67baf000 ---p 00002000 fd:00 50336064 /usr/lib64/libdl-2.17.so 7f9c67baf000-7f9c67bb0000 r--p 00002000 fd:00 50336064 /usr/lib64/libdl-2.17.so 7f9c67bb0000-7f9c67bb1000 rw-p 00003000 fd:00 50336064 /usr/lib64/libdl-2.17.so 7f9c67bb1000-7f9c67bc8000 r-xp 00000000 fd:00 50345897 /usr/lib64/libpthread-2.17.so 7f9c67bc8000-7f9c67dc7000 ---p 00017000 fd:00 50345897 /usr/lib64/libpthread-2.17.so 7f9c67dc7000-7f9c67dc8000 r--p 00016000 fd:00 50345897 /usr/lib64/libpthread-2.17.so 7f9c67dc8000-7f9c67dc9000 rw-p 00017000 fd:00 50345897 /usr/lib64/libpthread-2.17.so 7f9c67dc9000-7f9c67dcd000 rw-p 00000000 00:00 0 7f9c67dcd000-7f9c67dd1000 r-xp 00000000 fd:00 50336023 /usr/lib64/libSegFault.so 7f9c67dd1000-7f9c67fd0000 ---p 00004000 fd:00 50336023 /usr/lib64/libSegFault.so 7f9c67fd0000-7f9c67fd1000 r--p 00003000 fd:00 50336023 /usr/lib64/libSegFault.so 7f9c67fd1000-7f9c67fd2000 rw-p 00004000 fd:00 50336023 /usr/lib64/libSegFault.so 7f9c67fd2000-7f9c67ff4000 r-xp 00000000 fd:00 50336019 /usr/lib64/ld-2.17.so 7f9c67ff4000-7f9c67ffd000 r--p 00000000 00:28 82793147190 /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg/pyabpoa.cpython-311-x86_64-linux-gnu.so 7f9c67ffd000-7f9c68048000 r-xp 00009000 00:28 82793147190 /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg/pyabpoa.cpython-311-x86_64-linux-gnu.so 7f9c68048000-7f9c68050000 r--p 00054000 00:28 82793147190 /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg/pyabpoa.cpython-311-x86_64-linux-gnu.so 7f9c68050000-7f9c68051000 r--p 0005c000 00:28 82793147190 /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg/pyabpoa.cpython-311-x86_64-linux-gnu.so 7f9c68051000-7f9c68053000 rw-p 0005d000 00:28 82793147190 /home/jqs1/micromamba/envs/abpoa_test2/lib/python3.11/site-packages/pyabpoa-1.4.3-py3.11-linux-x86_64.egg/pyabpoa.cpython-311-x86_64-linux-gnu.so 7f9c68053000-7f9c681db000 rw-p 00000000 00:00 0 7f9c681e5000-7f9c681e9000 rw-p 00000000 00:00 0 7f9c681e9000-7f9c681f0000 r--s 00000000 fd:00 50346255 /usr/lib64/gconv/gconv-modules.cache 7f9c681f0000-7f9c681f1000 rw-p 00000000 00:00 0 7f9c681f1000-7f9c681f3000 r-xp 00000000 00:00 0 [vdso] 7f9c681f3000-7f9c681f4000 r--p 00021000 fd:00 50336019 /usr/lib64/ld-2.17.so 7f9c681f4000-7f9c681f5000 rw-p 00022000 fd:00 50336019 /usr/lib64/ld-2.17.so 7f9c681f5000-7f9c681f6000 rw-p 00000000 00:00 0 7ffc2a9d9000-7ffc2a9fb000 rw-p 00000000 00:00 0 [stack] ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] ```

When I compile with SSE4=1, it either has an infinite memory leak or segfaults immediately; when I compile with AVX2=1, it does either of those two or prints [simd_abpoa_align_sequence_to_subgraph] Error in cg_backtrack. and exits.

yangao07 commented 5 months ago

Hi @shenker , I did find a critical memory allocation bug related to the local mode, it should be fixed in the latest commit 04a7f7e . Let me know if this version works on your side. Also, maybe just install it in the normal way (without SSE4/AVX2=1).

shenker commented 5 months ago

It works! I know maintaining a software package like this is a lot of work (especially tracking down tricky bugs like this), so I really appreciate your work on this!