public void OtherObject(objectparamObj)
{//paramObj在子线程中只能以object对象来传参,对象中可包含多个参数
List parm = (List)paramObj;var inputSeq = parm[0].InputSeq;var listSeqPath = parm[0].ListSeqPath;try{//耗时接口这里交给子线程
var list = _IExonsLibService.RNACompare_E(inputSeq, 0.98f).ToList();
List rfs = new List();if (list.Count==0) {
ResultFilters resultFilters= newResultFilters();
resultFilters.FullNameParmPath=listSeqPath;
resultFilters.ResultInfo= "未找到匹配序列";
rfs.Add(resultFilters);
CallBackExonanalysis(rfs);//通过委托, 将数据回传给回调函数
}
List result = new List();foreach (var item inlist)
{
ExonViewModel info= newExonViewModel();
info.ResultSeq= item.GetElement(1).ToString().Substring(6);
info._id= ObjectId.Parse(item.GetElement(0).ToString().Substring(4));var findseq =_IExonsLibService.FindSeq(info._id);var findinfo =_IExonsLibService.FindExonInfo(findseq.InfoId);
info.FindSeq=findseq.Seq;
info.Info_id=findinfo._id;
info.StartExonPos= int.Parse(findinfo.StartCoordinate);
info.EndExonPos= int.Parse(findinfo.EndCoordinate);
info.GeneId=findinfo.GeneID;
info.ExonId=findinfo.ExonID;
info.InputSeq=inputSeq;int startComPos = info.ResultSeq.IndexOf("=");
info.StartComPos=startComPos;int endComPos = info.ResultSeq.LastIndexOf("=");
info.EndComPos=endComPos;//char[] usefulSeq = info.ResultSeq.Substring(startComPos, endComPos - startComPos + 1).ToCharArray();
info.EqualsCount = info.EndComPos - info.StartComPos + 1;
result.Add(info);
}var AN = result.OrderBy(p =>p.StartComPos).ToList();
List> unios = new List>();for (int i = 0; i
{
List couple = new List();
FilterViewModel filter= newFilterViewModel();
filter.Seq=AN[i].FindSeq;
filter.StartExonPos=AN[i].StartExonPos;
filter.EndExonPos=AN[i].EndExonPos;
filter.GeneId=AN[i].GeneId;
filter.ExonId=AN[i].ExonId;
filter.EqualsCount=AN[i].EqualsCount;
couple.Add(filter);int k =i;for (int j = i + 1; j < AN.Count; j++)
{if (AN[k].EndComPos
{
FilterViewModel filter2= newFilterViewModel();
filter2.Seq=AN[j].FindSeq;
filter2.StartExonPos=AN[j].StartExonPos;
filter2.EndExonPos=AN[j].EndExonPos;
filter2.GeneId=AN[j].GeneId;
filter2.ExonId=AN[j].ExonId;
filter2.EqualsCount=AN[j].EqualsCount;
couple.Add(filter2);
k= k + 1;
}
}
unios.Add(couple);
i= i + 1;
}
List Ac = new List();foreach (var items inunios)
{
CountWork n= newCountWork();foreach (var m initems)
{
n.Allcount+=m.EqualsCount;
}
Ac.Add(n);
}//List rfs = new List();
if (Ac.Count != 0)
{var max = Ac.Select(p =>p.Allcount).Max();var order = Ac.FindIndex(x => x.Allcount ==max);var resultFilter = unios[order].OrderBy(p =>p.StartExonPos).ToList();var q = resultFilter.GroupBy(x =>x.GeneId).ToList();foreach (var n inq)
{
ResultFilters resultFilters= newResultFilters();
resultFilters.GeneId=n.Key;var maxm = n.Select(p =>p.EndExonPos).Max();var minm = n.Select(x =>x.StartExonPos).Min();
resultFilters.SeqLength= maxm - minm + 1;
resultFilters.filterInfo=n.ToList();
resultFilters.FullNameParmPath=listSeqPath;
rfs.Add(resultFilters);
CallBackExonanalysis(rfs);//通过委托, 将数据回传给回调函数
}
}else{
rfs.Add(null);
CallBackExonanalysis(rfs);//通过委托, 将数据回传给回调函数
}
}catch{//List rfs = new List();//CallBackExonanalysis(rfs);//通过委托, 将数据回传给回调函数
}
}