code: def concat_align(fastas):
      
      # read in sequences
      fa2len = {}
      seqs = {}
      IDs = []
      for fasta in fastas:
          seqs[fasta] = {}
          for seq in parse_fasta(fasta):
              ID = seq[0].split('>')[1].split()[0]
              IDs.append(ID)
              seqs[fasta][ID] = seq[1]
          fa2len[fasta] = len(seq[1])
      # concat sequences
      IDs = set(IDs)
      concat = {}
      for fasta in fastas:
          for ID in IDs:
              if ID not in concat:
                  concat[ID] = []
              if ID not in seqs[fasta]:
                  concat[ID].append('-'*fa2len[fasta])
              else:
                  concat[ID].append(seqs[fasta][ID])
      return concat
docs: concatenate alignments