|
|
|
|
|
import torch |
|
|
from transformers import AutoTokenizer, AutoModel |
|
|
from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer |
|
|
import numpy as np |
|
|
import sympy as sp |
|
|
|
|
|
|
|
|
tokenizer = AutoTokenizer.from_pretrained("Rostlab/prot_bert", do_lower_case=False) |
|
|
model = AutoModel.from_pretrained("Rostlab/prot_bert") |
|
|
|
|
|
analyzer = SentimentIntensityAnalyzer() |
|
|
|
|
|
def fuse_perspectives(target_signature, models=['newton', 'davinci', 'quantum', 'ethics']): |
|
|
sequence = target_signature['cleaned_sequence'] |
|
|
encoded_input = tokenizer(sequence, return_tensors="pt") |
|
|
with torch.no_grad(): |
|
|
embedding = model(**encoded_input).last_hidden_state.mean(dim=1).squeeze().numpy() |
|
|
|
|
|
|
|
|
norm_embedding = embedding / np.linalg.norm(embedding) |
|
|
|
|
|
|
|
|
sentiment = analyzer.polarity_scores(sequence) |
|
|
symbolic_logic = sp.sympify(target_signature['isoelectric_point']) + sp.Rational(1, 3) |
|
|
|
|
|
fused_output = { |
|
|
"embedding_vector": norm_embedding.tolist(), |
|
|
"sentiment_trace": sentiment, |
|
|
"symbolic_logic_score": float(symbolic_logic), |
|
|
"perspective_tags": models, |
|
|
"reasoning_fusion": "Completed" |
|
|
} |
|
|
|
|
|
return fused_output |
|
|
|