fidelity / seq2pat

[AAAI 2022] Seq2Pat: Sequence-to-Pattern Generation Library
https://fidelity.github.io/seq2pat/
GNU General Public License v2.0
120 stars 14 forks source link

A strange question, too many mining results cause jupyter to crash. #14

Closed qxzhou1010 closed 2 years ago

qxzhou1010 commented 2 years ago

I encountered a strange problem while using it. I have a total of 1541 sequences, and the items in each sequence have time attributes (in milliseconds). When mining, I added span and gap constraints. When I reduce the constraint, the mining result is 0. When I increase the constraint a little bit, my jupyter will directly hang.This makes me feel puzzling. I guess the reason why Jupyter crashed was because there were too many results, which caused memory overflow, but I only increased the constraint a little bit, and logically, it won’t increase the result too much.

Please tell me how to solve this problem, thank you very much!

skadio commented 2 years ago

Hi @qxzhou1010 --thank you for your interest in our library!

In terms of rows, having 1541 sequences is not that large. That should be fine. How about the number of columns? For instance, what is the length of the largest sequence? the max(|sequence|) dictates the memory allocation of the decision diagram, and most likely, that's what you are facing.

Here is what I would suggest:

qxzhou1010 commented 2 years ago

Thank for your reply. Based on your suggestion, I checked my sequence data and code.

  1. The maximum length of my sequence data is 75, and it does not exceed 100.
  2. Without any constraints, even attributes are not added. Under the same min_frequency, the same situation occurs, and my jupyter crashs.
  3. I checked my attribute values, there are no negative numbers, they are all time data, I converted them to milliseconds, and there are no negative numbers.

In addition, for the same data, I tried another prefixspan algorithm with time interval and it worked normally.

I read the seq2pat related papers in detail, and using the seq2pat algorithm is what I currently need, but I don’t know why it can’t work properly now. Please help me to solve this problem, thank you very much.

takojunior commented 2 years ago

Hi @qxzhou1010, thanks for your interest!

Agree with @skadio that 1541 sequences should be fine.

You might be able to sub-sample your data, and the goal is to find if a subset of this data could make it work in your environment, without adding any constraints to make it simpler. Given the number of sequences is not large, a suggestion would be to sub-sample items along with the sequence. The sub-sample can be done with small increments.

qxzhou1010 commented 2 years ago

Thank you for your enthusiastic answers. After a period of use, I found some things that made me more confused. When my sequence data is very small, for example, there is only one or two sequences. Run seq2pat on such data, a segment error will occur. Below is the sample code, you can try it.

seqs_u = [['30', '78']]
times_l = [[1,2]   ]
from sequential.seq2pat import Seq2Pat, Attribute
MIN_SUP = 0.9
time_gap = 500
time_span = 3000
seq2pat = Seq2Pat(sequences=seqs_u)
timestamp = Attribute(values=times_l)
gap_constraint = seq2pat.add_constraint(0 <= timestamp.gap() <= time_gap)
span_constraint = seq2pat.add_constraint(0 <= timestamp.span() <= time_span)
results_org = seq2pat.get_patterns(min_frequency=MIN_SUP)
print(results_org)

Can you fix such these bugs?

takojunior commented 2 years ago

Hi @qxzhou1010, thanks for the feedback! We do have a lot of error catching and validations on the input or extreme cases. The mentioned situation seems not have been caught. We shall have a fix on it.

qxzhou1010 commented 2 years ago

Thank you for your rigorous treatment. With Python-3.7, using PyCharm to run above case on my MacbookPro, my results are shown in the below. Process finished with exit code 139 (interrupted by signal 11: SIGSEGV) Therefore, can this error be reproduced on your machine? Or, you have reproduced this error, but you haven't found the cause of this error? In addition, there are some cases that can cause the same error, such as when the number of sequences is equal to 2.

skadio commented 2 years ago

Yes, we can reproduce it --which is essentially an edge case when there are only 1 or 2 sequences, as in the example above.

The library should return a more meaningful message to the user. Thank you for bringing this to our attention

qxzhou1010 commented 2 years ago

Thank you for your hard work, seq2pat is a very execellent library, which brings great convenience to my work, and I look forward to seeing this bug fixed in a new version.

takojunior commented 2 years ago

We have had a fix on this issue by capturing the mentioned edge case, where the input has 1 or 2 rows, and min_frequency is small, less than 1/(number of rows), which makes the input minimum frequency for the patterns invalid.
This fix captures the ValueError and returns the meaningful message.

Please install the latest version seq2pat 1.2.1 to try out. Thanks. @qxzhou1010

GF-Huang commented 2 years ago

I had a similar issue.

I had try to convert True and False to 1 and 0, but got same issue.

Data:

[False, False, True, True, False, False, False, True, False, False, True, True, False]
[True, True, True, False, True, True, False, True, False, False, True, True, False]
[True, True, False, False, False, True, False, False, True, True, True, False, True]
[True, True, True, True, True, True, True, True, True, False, True, False, True]
[True, False, True, True, True, False, True, False, True, True, False, False, False]
[True, True, False, False, True, False, True, False, True, True, False, False, True]
[True, False, True, True, True, False, False, True, True, True, False, False, True]
[True, False, False, True, True, False, True, True, True, False, False, True, True]
[False, True, False, True, False, True, True, False, False, True, False, True, True]
[True, False, False, False, False, True, False, True, True, True, True, True, False]
[False, False, False, False, True, False, True, False, False, True, False, True, False]
[True, True, False, False, False, True, True, False, True, True, False, False, True]
[False, True, True, False, True, True, False, False, False, True, True, False, True]
[True, False, False, False, False, False, False, True, True, True, False, False, True]
[True, False, False, False, True, True, False, False, True, False, False, True, True]
[True, True, False, True, True, False, False, True, True, True, False, True, True]
[False, True, True, False, True, True, True, False, False, True, False, False, True]
[True, True, True, True, True, False, True, False, True, False, True, True, False]
[False, True, True, True, False, False, True, False, True, True, True, False, True]
[False, True, False, True, True, True, False, False, False, True, False, True, False]
[True, False, False, False, False, True, True, True, False, True, True, False, False]
[False, False, False, False, False, False, True, True, True, True, True, False, True]
[True, True, False, False, True, False, False, True, False, True, False, True, False]
[False, True, False, False, True, False, False, False, True, True, True, False, False]
[False, True, False, False, False, True, False, True, False, True, True, False, True]
[False, False, True, False, True, False, False, True, False, False, False, False, True]
[False, False, True, True, True, True, False, False, False, False, True, True, True]
[True, True, False, True, False, False, False, False, False, True, True, True, False]
[False, False, False, True, True, True, False, False, False, False, False, True, False]
[True, False, True, True, False, False, False, True, False, True, False, True, False]
[True, False, False, True, False, True, True, False, False, True, True, False, False]
[True, True, True, False, False, True, False, False, False, True, True, True, False]
[True, True, True, True, False, True, True, True, True, True, True, False, False]
[False, False, True, False, False, True, False, False, False, True, True, False, True]
[False, True, True, False, False, True, False, True, False, False, False, True, False]
[True, True, True, True, True, True, False, True, False, True, False, True, True]
[True, True, True, True, True, False, True, True, False, True, True, True, False]
[False, False, False, False, False, True, False, True, True, False, True, True, False]
[True, True, True, True, True, False, False, True, True, True, True, False, False]
[False, True, True, False, True, False, False, True, False, False, True, True, True]
[False, True, True, False, True, True, False, False, False, True, False, False, False]
[False, True, False, True, True, False, False, False, False, False, False, False, False]
[True, False, True, True, True, True, True, False, False, True, True, False, False]
[False, False, False, True, True, True, True, False, True, True, True, False, False]
[True, True, False, True, False, False, True, False, False, True, True, True, True]
[False, True, True, False, False, True, True, True, False, False, False, True, False]
[True, True, True, True, False, True, True, False, True, True, False, False, True]
[True, False, True, False, True, True, True, False, False, True, True, True, True]
[False, False, False, False, True, True, True, False, True, True, True, False, False]
[True, False, False, True, False, True, True, False, False, True, False, False, False]
[True, False, False, True, True, False, True, False, True, False, True, False, True]
[True, True, False, True, False, False, True, False, True, True, False, False, True]
[True, False, True, True, True, True, False, True, True, False, True, True, True]
[True, True, False, False, False, False, True, False, False, False, False, True, False]
[True, True, True, True, False, False, True, True, True, True, False, True, False]
[True, True, False, False, True, True, False, False, True, True, False, True, False]
[True, False, True, True, True, False, False, True, True, True, False, False, True]
[True, True, True, True, False, True, False, False, True, False, True, True, False]
[True, False, False, False, True, False, False, True, False, False, True, True, False]
[True, True, False, True, False, True, False, False, False, True, False, False, True]
[True, True, False, True, False, True, False, False, True, True, True, True, True]
[True, False, True, True, True, True, True, False, True, False, False, True, True]
[True, False, True, False, True, False, False, True, True, True, True, False, True]
[True, False, False, True, True, True, True, False, True, True, False, True, True]
[True, True, False, True, False, False, True, True, True, True, False, True, True]
[False, False, False, False, True, False, True, False, True, True, True, False, True]
[True, True, False, True, True, True, True, True, False, False, True, False, True]
[True, True, True, True, False, True, True, False, True, False, True, False, False]
[True, True, False, True, False, False, True, False, False, True, False, False, False]
[False, True, True, False, False, True, True, False, True, True, False, False, False]
[False, False, False, True, False, True, True, False, False, True, True, False, True]
[False, False, True, False, True, True, False, True, False, False, False, False, False]
[False, True, True, True, True, False, False, False, True, True, False, False, True]
[False, True, True, True, True, True, True, False, True, True, False, True, False]
[True, False, True, True, True, False, False, True, True, False, True, True, True]
[True, True, True, False, True, False, True, True, True, True, True, True, True]
[False, True, True, True, True, False, True, True, False, True, False, False, True]
[True, False, False, True, True, False, False, True, False, False, True, True, False]
[False, False, False, False, False, False, False, False, True, True, True, False, True]
[False, True, False, False, False, True, False, False, True, True, True, True, False]
[True, True, True, False, False, True, False, True, True, False, False, False, True]
[True, False, False, True, False, True, True, False, True, False, True, False, True]
[False, True, False, False, True, False, True, False, True, True, False, True, True]
[True, False, True, False, True, True, True, True, False, True, False, False, False]
[True, False, True, True, False, True, False, True, True, False, False, False, True]
[True, True, False, True, True, False, True, False, True, False, False, True, True]
[False, True, False, True, True, False, True, False, True, True, False, False, False]
[True, False, False, False, True, True, False, False, True, False, True, False, False]
[False, False, False, False, False, True, True, True, False, True, True, True, True]
[True, True, False, False, False, True, True, False, True, False, False, True, True]
[False, False, False, True, True, True, True, True, True, True, True, True, True]
[False, True, True, False, False, True, False, True, False, True, True, False, True]
[True, False, False, False, False, False, True, False, True, True, False, False, False]
[True, True, True, True, True, False, True, False, False, False, True, True, False]
[True, True, False, False, False, True, True, False, False, True, True, True, True]
[True, True, True, True, True, True, True, False, True, True, True, False, False]
[False, True, False, False, True, False, True, True, True, True, True, True, False]
[True, False, False, True, False, True, True, False, True, True, True, True, False]
[True, False, False, True, True, True, False, False, True, False, False, False, False]
[True, True, True, False, True, False, True, True, True, False, True, True, False]
[True, True, True, False, True, False, True, True, True, False, True, False, False]
[False, True, True, True, True, True, True, False, True, True, True, False, True]
[True, True, True, False, False, True, False, True, False, False, False, False, False]
[False, False, True, True, False, False, True, False, False, False, True, False, True]
[True, False, True, True, False, True, False, True, True, False, True, True, False]
[False, False, True, False, True, True, False, True, True, False, True, False, False]
[False, False, False, True, False, True, False, True, False, True, False, False, True]
[True, False, False, False, True, False, False, False, False, True, True, False, False]
[True, False, False, False, True, True, True, False, False, False, False, False, False]
[False, False, True, False, False, True, True, False, False, False, True, True, True]
[False, True, False, True, True, False, False, False, True, False, True, False, True]
[False, False, True, False, True, True, True, True, True, True, True, True, False]
[False, False, False, False, True, True, True, True, True, True, True, True, True]
[False, False, False, False, False, True, True, False, False, False, True, False, True]
[True, False, False, True, False, False, False, True, False, False, False, True, True]
[False, False, False, True, True, False, False, False, True, False, True, True, False]
[True, True, True, True, True, False, False, False, False, True, False, True, False]
[True, True, True, False, True, False, True, True, True, False, True, False, False]
[True, False, False, False, True, True, True, True, False, True, True, True, True]
[False, True, False, False, False, True, False, True, True, True, False, True, False]
[False, False, False, False, True, True, False, True, False, True, True, False, False]
[True, False, True, False, False, False, True, False, True, True, True, False, False]
[True, False, False, True, False, False, True, True, True, True, False, False, False]
[False, False, True, True, True, False, False, True, True, True, True, False, False]
[False, False, False, True, False, False, False, True, True, True, True, False, True]
[True, True, True, True, True, True, True, False, True, False, False, False, False]
[True, True, True, False, True, False, True, True, True, True, False, True, True]
[True, True, False, False, True, False, True, False, False, False, False, True, False]
[False, True, False, False, False, False, True, False, True, True, False, False, False]
[True, True, False, False, True, False, False, False, True, True, True, False, False]
[False, True, False, True, True, False, False, False, True, True, False, False, False]
[False, False, True, True, True, True, False, True, True, False, True, False, True]
[True, True, True, True, True, True, True, False, True, True, False, False, True]
[False, False, True, False, False, True, True, False, True, True, True, True, True]
[True, True, True, True, True, True, True, True, True, True, True, True, True]
[False, True, True, False, True, False, True, False, True, False, False, True, True]
[False, True, False, False, True, False, True, False, True, True, True, False, True]
[True, True, False, False, True, True, True, False, False, True, True, True, True]
[True, True, False, False, False, True, True, True, False, True, False, False, True]
[False, True, False, True, True, True, True, True, False, True, False, False, False]
[True, True, False, False, False, False, False, True, True, True, True, False, False]
[True, False, True, True, True, True, True, True, True, False, False, False, False]
[False, True, True, True, False, True, False, True, True, True, False, False, True]
[True, False, True, True, True, True, False, True, False, False, True, False, True]
[False, True, False, True, True, False, True, False, False, False, True, True, True]
[True, False, True, True, False, True, True, False, True, False, True, True, True]
[False, False, True, True, True, False, False, True, False, True, True, True, True]
[True, True, True, False, True, True, True, True, True, True, False, True, True]
[True, True, True, False, True, False, False, False, True, True, True, False, True]
[False, True, False, True, False, False, True, True, False, False, True, False, False]
[False, True, True, False, True, False, False, False, False, True, True, False, True]
[True, True, False, False, True, False, True, False, False, False, False, True, False]
[False, False, True, False, True, False, True, False, True, True, False, False, False]
[False, True, True, True, True, False, False, True, True, False, True, True, False]
[False, False, True, False, False, False, True, True, False, True, True, True, False]
[True, False, True, True, False, True, True, False, True, False, False, False, True]
[False, True, True, True, True, False, False, True, True, False, True, False, False]
[True, False, True, True, True, True, False, True, False, False, True, True, True]
[True, False, True, True, False, True, False, False, True, False, True, False, False]
[True, True, False, False, False, True, True, True, False, True, True, False, False]
[True, False, False, True, False, True, False, False, True, False, True, False, True]
[False, True, False, True, False, False, True, True, False, False, True, True, True]
[True, False, True, True, True, True, True, True, True, False, True, True, False]
[True, True, False, True, False, True, False, True, True, False, False, False, True]
[False, False, True, True, False, False, False, True, False, False, False, False, False]
[True, False, False, True, False, True, False, False, True, True, False, False, True]
[False, False, False, True, False, True, False, True, False, True, False, True, True]
[False, True, False, False, True, True, True, True, True, True, False, True, False]
[True, True, True, True, True, True, True, False, True, False, False, False, True]
[False, False, False, True, True, False, True, True, True, False, True, False, True]
[True, False, True, True, False, False, True, False, False, False, False, False, False]
[False, True, False, True, True, False, True, True, False, False, False, True, True]
[False, False, False, False, False, True, False, False, True, True, True, False, False]
[True, False, False, True, False, False, False, True, False, True, True, True, False]
[False, True, False, False, False, True, True, True, True, True, True, True, True]
[False, True, False, False, False, False, False, True, False, False, False, True, False]
[True, False, True, True, False, False, True, True, True, False, True, False, False]
[True, False, False, False, True, False, False, True, True, True, True, True, True]
[False, False, True, True, True, True, True, True, True, True, True, False, True]
[True, False, True, True, True, False, True, False, False, False, True, True, True]
[True, True, True, True, True, False, True, True, False, False, True, False, False]
[True, True, True, False, False, True, True, True, True, True, False, False, True]
[False, False, False, False, True, False, False, False, False, False, True, True, False]
[True, False, True, False, False, False, True, True, True, True, True, False, False]
[True, True, False, True, False, False, True, False, False, False, False, False, False]
[False, True, False, True, False, False, True, False, False, False, True, True, False]
[False, True, True, False, False, True, True, True, True, True, True, True, True]
[False, False, False, False, True, True, False, True, False, True, True, True, False]
[True, False, False, False, False, False, False, True, False, False, False, False, False]
[True, True, True, False, True, False, False, False, True, False, True, False, False]
[True, False, False, True, True, False, True, False, False, False, True, False, False]
[False, False, False, True, False, False, True, True, True, True, False, True, True]
[False, True, False, True, True, False, True, True, True, False, True, True, True]
[True, True, False, True, True, True, True, False, False, True, False, False, True]
[False, False, False, True, False, False, True, True, True, False, False, False, False]
[True, False, False, False, True, False, False, False, True, False, True, True, True]
[False, True, False, False, True, False, False, False, True, False, True, False, False]
[True, False, False, False, True, True, True, False, False, False, True, False, False]
[True, False, True, False, False, True, False, False, False, False, False, False, False]
[False, False, True, True, False, False, False, False, True, False, False, False, False]
[False, False, True, False, False, False, True, True, True, False, True, True, True]
[False, True, False, True, False, True, False, True, True, True, True, False, False]
[False, False, True, True, True, True, True, False, False, True, False, False, False]
[True, False, True, False, True, False, False, False, True, False, False, False, False]
[False, True, True, True, True, False, False, True, True, False, True, True, True]
[True, True, True, False, True, False, True, False, True, True, False, False, True]
[False, False, True, True, True, False, True, False, False, False, True, True, True]
[False, False, False, False, True, True, True, False, True, False, True, True, True]
[True, True, False, False, False, True, False, True, False, False, False, True, False]
[True, False, False, True, True, True, True, True, True, False, True, True, False]
[True, False, False, False, False, False, True, True, True, True, False, False, False]
[True, False, True, True, True, True, True, False, True, False, True, True, True]
[False, True, True, False, False, True, True, False, True, True, False, True, True]
[True, True, False, False, True, True, False, False, True, False, False, False, False]
[False, True, False, False, False, True, False, False, False, False, False, False, False]
[True, False, False, True, False, True, False, False, False, True, True, True, True]
[True, False, True, False, True, False, False, True, True, False, True, True, True]
[False, True, True, True, True, False, False, True, False, True, True, True, False]
[False, False, True, True, False, False, True, False, False, False, False, False, False]
[False, False, False, False, False, True, False, False, True, True, True, False, False]
[True, True, False, False, False, False, False, False, False, True, True, True, False]
[False, False, False, False, True, True, False, False, True, False, False, False, False]
[True, True, True, True, True, False, True, True, True, True, True, True, True]
[False, True, True, True, True, False, False, True, True, True, False, True, True]
[True, False, True, True, False, False, False, True, True, False, True, True, True]
[True, True, False, False, False, True, True, False, True, True, False, False, True]
[True, True, False, True, False, True, True, True, False, True, True, True, False]
[False, False, False, True, True, False, True, True, False, True, False, False, False]
[False, False, False, False, True, True, False, False, False, True, False, True, True]
[False, False, False, True, False, False, False, False, False, True, False, False, False]
[False, False, True, False, True, True, True, False, False, True, True, False, False]
[False, True, True, False, True, True, True, True, False, True, True, True, False]
[True, False, False, False, True, True, False, True, True, True, True, False, True]
[False, False, True, False, False, False, True, True, False, True, False, False, False]
[True, True, True, False, False, False, False, False, True, False, True, False, False]
[True, True, True, True, False, True, False, False, True, False, True, True, True]
[True, True, True, False, False, False, False, False, True, False, True, True, True]
[True, False, False, True, True, True, True, True, True, False, True, False, True]
[True, True, False, True, True, True, True, True, False, True, True, True, True]
[False, False, True, True, True, False, False, False, True, True, False, True, True]
[True, True, True, True, False, False, True, False, True, False, True, False, True]
[False, True, True, True, True, False, False, False, True, False, False, False, False]
[False, False, True, True, True, False, True, True, True, True, True, True, True]
[False, True, True, False, True, True, False, True, True, True, True, False, True]
[True, False, True, False, False, False, True, True, True, True, True, True, True]
[True, False, True, True, True, False, True, False, True, False, True, True, False]
[True, True, False, False, True, True, True, False, False, False, False, False, True]
[False, False, True, False, True, False, False, True, False, False, True, False, False]
[False, True, True, False, False, True, False, False, True, True, False, False, True]
[True, False, True, True, True, True, False, True, True, False, True, True, True]
[False, False, True, False, False, False, True, True, False, True, False, False, True]
[False, False, True, True, True, False, True, True, True, False, True, False, True]
[True, False, False, False, False, True, False, True, True, False, True, True, False]
[False, True, True, False, True, True, False, False, False, False, True, True, False]
[False, False, False, True, True, False, True, True, False, False, True, False, False]
[True, False, False, True, False, False, True, False, False, False, True, False, True]
[True, True, False, True, False, True, True, False, False, True, True, True, False]
[False, False, False, True, False, False, False, False, True, False, False, False, False]
[True, True, False, False, False, False, True, True, True, True, False, False, True]
[True, True, True, True, True, False, True, False, True, False, True, True, False]
[False, True, True, False, True, False, True, True, True, False, False, True, False]
[True, False, False, False, False, False, False, True, False, False, False, True, False]
[False, False, True, True, False, True, False, False, False, True, False, True, False]
[False, True, False, False, False, True, True, True, False, True, False, True, True]
[False, False, False, False, False, True, True, False, True, True, True, False, False]
[True, False, True, True, False, True, False, False, True, False, False, False, False]
[False, False, True, True, False, True, True, True, True, True, True, True, False]
[True, False, False, False, False, False, False, True, False, False, False, False, False]
[True, True, False, False, True, True, False, False, False, False, True, True, True]
[True, False, False, True, False, False, True, True, True, False, True, False, True]
[False, False, False, False, True, True, True, False, True, False, True, True, True]
[True, True, True, False, False, True, True, False, False, True, False, True, True]
[False, True, False, True, True, False, False, True, True, True, False, False, False]
[False, False, False, True, True, True, False, True, False, False, True, True, True]
[False, False, True, False, False, False, True, False, False, True, False, False, True]
[True, True, True, False, True, False, False, False, True, False, True, False, False]
[False, False, False, False, False, False, False, False, True, False, True, True, True]
[False, False, False, True, True, True, False, False, True, False, False, True, True]
[True, True, True, True, True, True, True, False, True, False, False, False, True]
[True, True, False, True, True, False, True, True, False, True, True, True, True]
[True, False, True, False, False, False, True, True, True, True, False, True, False]
[True, False, True, True, True, True, True, True, True, True, False, True, True]
[True, False, False, False, True, True, True, False, False, True, False, False, True]
[True, True, False, False, True, False, True, False, True, False, False, False, True]
[True, True, True, False, True, False, True, True, False, True, False, True, True]
[True, False, False, True, False, False, False, False, True, False, True, True, False]
[True, True, False, False, True, False, True, False, False, False, False, False, False]
[False, False, False, False, True, False, True, True, True, False, True, True, False]
[True, False, False, True, True, True, False, False, True, False, False, False, False]
[False, False, True, False, True, False, True, True, False, True, False, True, True]
[True, True, False, True, True, True, False, True, True, False, True, True, False]
[False, False, False, True, False, True, True, True, False, False, True, True, True]
[True, True, True, False, False, False, True, False, False, False, True, False, False]

Code:

image

Crash:

image

JupyterLab Log:

image

takojunior commented 2 years ago

Thanks @GF-Huang for your interests to Seq2Pat! We noticed that users might have similar issues when initially apply seq2pat on long sequences but without using constraints. We add a built-in span constraint to the latest release 1.3.3, which can simplify and speed up the usages for regular users. Hope it can solve the issue you met.