ডেল্টা কম্পিউট করতে হলে, আমাদের পাইথনের difflib মডিউল ব্যবহার করতে হবে। এই মডিউলে সিকোয়েন্স তুলনা করার জন্য ভিন্ন ক্লাস এবং ফাংশন রয়েছে। এটি ফাইল, HTML ফাইল ইত্যাদি তুলনা করতে পারে।
এই মডিউল ব্যবহার করতে হলে, আমাদের পাইথন কোডে difflib মডিউল ইম্পোর্ট করতে হবে।
import difflib
difflib মডিউলের কিছু ক্লাস এবং ফাংশন।
Class (difflib.SequenceMatcher) −
এই ক্লাস যেকোনো টাইপের দুটি সিকোয়েন্স তুলনা করতে ব্যবহৃত হয়। এর বিভিন্ন মেথড রয়েছে। 그중 কিছু মেথড এইরকম -
set_seqs(a, b) − তুলনা করা সিকোয়েন্স ফাইল সেট করুন। এটি দ্বিতীয় ফাইল সম্পর্কে বিস্তারিত ইনফরমেশন কম্পিউট এবং ক্যাশ করে। তাই একাধিক ফাইল ম্যাচ করার জন্য, আমাদের প্রথম সিকোয়েন্স বারবার সেট করতে হবে।
set_seq1(a) − তুলনা করা প্রথম সিকোয়েন্স সেট করুন।
set_seq2(2) − তুলনা করা দ্বিতীয় সিকোয়েন্স সেট করুন।
find_longest_match(alo, ahi, blo, bhi) − alo থেকে ahi রেঞ্জে প্রথম সিকোয়েন্স এবং blo থেকে bhi রেঞ্জে দ্বিতীয় সিকোয়েন্সের জন্য কোন ম্যাচিং ব্লক সবচেয়ে লম্বা সেটা খুঁজে বের করুন।
get_matching_blocks() − ডেসেন্ডিং অর্ডারে ম্যাচিং সিকোয়েন্সের লিস্ট খুঁজে বের করুন।
ratio() − সিকোয়েন্স সিমিলারিটির রেশিও ফ্লোট ভ্যালু হিসেবে খুঁজে বের করুন।
উদাহরণ কোড
import difflib
myStr1 = 'Python Programming'
myStr2 = 'Python Standard Library'
seq_match = difflib.SequenceMatcher(lambda x: x==' ', myStr1, myStr2)
print("The ratio of the sequence matching is: " + str(round(seq_match.ratio(), 3)))
for match_block in seq_match.get_matching_blocks():
print(match_block)
আউটপুট
The ratio of the sequence matching is: 0.488 Match(a=0, b=0, size=7) Match(a=8, b=13, size=1) Match(a=11, b=19, size=2) Match(a=18, b=23, size=0)