guohanghui commited on
Commit
45dae0a
·
verified ·
1 Parent(s): a2fd43d

Update SPM/mcp_output/mcp_plugin/mcp_service.py

Browse files
SPM/mcp_output/mcp_plugin/mcp_service.py CHANGED
@@ -24,13 +24,36 @@ def sequence_pattern_matching(input_sequence: str, target_sequence: str) -> dict
24
  dict: A dictionary containing success, result, or error fields.
25
  """
26
  try:
27
- from scripts.SequencePatternMatching import SequencePatternMatching
28
-
29
- # Initialize the sequence pattern matching module
30
- spm = SequencePatternMatching()
31
-
32
- # Perform the matching operation
33
- result = spm.match(input_sequence, target_sequence)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
34
 
35
  return {"success": True, "result": result, "error": None}
36
  except Exception as e:
 
24
  dict: A dictionary containing success, result, or error fields.
25
  """
26
  try:
27
+ from scripts.SequencePatternMatching import volumeScoring, volume
28
+
29
+ import numpy as np
30
+
31
+ # Convert sequences to volume arrays
32
+ query_seq_volume = np.array([volume[i] for i in input_sequence])
33
+
34
+ # Calculate the best match score and position
35
+ query_len = len(query_seq_volume)
36
+ db_seq_volume = np.array([volume[i] for i in target_sequence])
37
+
38
+ best_score = 9999
39
+ best_position = 0
40
+
41
+ for i in range(len(db_seq_volume) - query_len + 1):
42
+ score = np.sum(np.abs(db_seq_volume[i:i+query_len] - query_seq_volume))
43
+ if score < best_score:
44
+ best_score = score
45
+ best_position = i
46
+
47
+ # Create result
48
+ result = {
49
+ "input_sequence": input_sequence,
50
+ "target_sequence": target_sequence[:100] + "..." if len(target_sequence) > 100 else target_sequence,
51
+ "best_score": float(best_score),
52
+ "best_position": int(best_position),
53
+ "matched_region": target_sequence[best_position:best_position + query_len],
54
+ "query_length": query_len,
55
+ "target_length": len(target_sequence)
56
+ }
57
 
58
  return {"success": True, "result": result, "error": None}
59
  except Exception as e: