Распознавание последовательностей с помощью python

#python #pandas #sequence

Вопрос:

в швейной компании существуют сотни швейных машин, которые нам нужны для контроля их производительности(например,сколько изготовлено деталей, среднее время на единицу и т. Д.). Для конкретного дня и для конкретной машины существует последовательность рисунка строчки. Таким образом, используя этот шаблон сшивания, вы сможете рассчитать количество деталей.

образец заданной последовательности рисунка строчки для конкретного дня и для конкретной машины:

222243243

здесь 2=выполнить, 4=исправить, 3=вырезать. несмотря на то, что это заданная последовательность, фактический сценарий может немного отличаться. это может быть 22222 4343 2 4343 (больше сигналов запуска с изменением порядка исправлений и сокращений) или 22222 4343 2 4343 2 4343 (с дополнительным сигналом запуска, исправлениями и сокращениями в конце)

при просмотре данных можно определить это невооруженным глазом.

введите описание изображения здесь

Как я уже упоминал, просмотр данных позволяет идентифицировать эти фрагменты по отдельности. необходимо идентифицировать эти фрагменты с помощью кода python, используя заданный шаблон последовательности.

Наконец, необходимо определить количество деталей для любой данной машины, используя заданный шаблон строчки последовательности.

sample of another few given sequences(there a lot of sequence patterns):

243243,

222432224322243

So, To do that need to build a common python code that can be able to change when the given sequence change.SO using that can be able to identify the number of pieces.

I built a code to count the pieces for a particularly given sequence, but I have no idea to generalize this to identify any given sequence. Any suggestions and recommendations are highly appreciated!!!!

My working:

just to count a specifically given sequence.(need to generalize this for any given sequence)

 # Accumulate sequences of interest
seqs = []
seq_start = None

for index,row in df.iterrows():
    # Is the current row of interest? 
    of_interest = row.Signal == 2
    if of_interest :
        if seq_start is None :
            # First interesting row in a potential sequence
            seq_start = index
    else:
        # This row is no longer of interest, so see if a sequence has occurred...
        if seq_start is not None :
            # This row is not of interest. The sequence ended with the previous row.
            seq_end = index - 1
            # Enough rows to be a sequence?
            if seq_end - seq_start >= 3 :
                seqs.append([seq_start, seq_end])
        seq_start = None
 

In the above code, I identified as a piece if there are 3 or more run signals continoesly. seqs returns the number of pieces.