文章来源:互联网 发布时间:2023-03-26 17:20:00
很多朋友在找tp钱包时都会咨询pdx模型和PDX模型,这说明有一部分人对这个问题不太了解,您了解吗?那么什么是PDX模型?下面就由小编带大家详细了解一下吧!
人源性组织异种移植(patient-derivedxenografts , PDX) 模型是一种将肿瘤患者的肿瘤组织移植至重症免疫缺陷型小鼠( NSG )体内,并使肿瘤组织在小鼠体内生长形成第一代移植瘤(图 1 )。
待其生长到一定大小时,取出该移植瘤组织并在无菌操作条件下移植到新一批小鼠体内,形成第二代移植瘤。如此重复操作形成移植瘤第三代、第四代等。
此种模型尽可能保留了亲代肿瘤的生长微环境,利于更好的表现亲代肿瘤性状,并且维持了肿瘤的异质性。
但同时也存在两个主要的问题,一是,从该模型中提取出的 DNA 片段不仅包含人类的基因,也存在一定比例的小鼠片段。另外一个问题就是该模型缺少配对的正常样本。
今天主要是想解决第一个问题:如何从 PDX 模型中去除小鼠的 reads 。
目前,已有很多文章利用各种不同的工具来去除 PDX 模型中的小鼠 reads 。其中,用的比较多的工具有(表 1 ):
2020 年 Yvonne A Evrard 等人通过模拟 WES 和 RNA-Seq 数据集来比较其中五个工具消除小鼠 reads 的功效。
其模拟方式为,在人类样本的测序 reads 数据中,掺入不同比例的小鼠基因组 reads 。
结果显示,所有工具在 WES 和 RNA-Seq 测试数据中准确率均高达 99% (图 2 )。
其中 XenofilterR 的召回率最低(在 WES 和 RNA-seq 中,召回率分别为 96.60% 和 89.63% )
BBSplit 的整体性能最好,即在没有任何召回损失的情况下具有最高的精度(在 WES 和 RNA-seq 数据中的准确率分别为为 99.87% 和 99.64% )。
另外我们利用作者提供的数据展示了在不同 SE(单端) 阈值下各个工具的真阳率和假阳率(图 3 )。
从左图中我们可以看出 Bamcmp 和 Xenome 两个工具在不同的 SE 和 PE(双端) 阈值下的真阳性率都达到 99% 以上。
但是,从右图中可以看出 Bamcmp 在不同的 SE/PE 阈值下的假阳性不稳定,有时候甚至高达 0.2% ,而 Xenome 相对来说比较稳定,在不同情况下均低于 0.05% 。
综合以上结果,我们认为 Xenome 是相对比较好的一个用来去除小鼠 reads 的工具。
Xenome 是 Thomas Conway1 等人在 2012 年提出来的,该工具从开发到现在每年都有被引用(图 4 ),其中包含很多高分的文章(表 2 )。
Xenome 使用宿主参考序列和移植物种参考序列,在比对时的所有可能的 k-mers 是否具有以下特征来表征它们所属的类别:
给定一条 read 或 配对 reads , xenome 将计算其 k-mers 属于上述类别中的哪一个,并将其分类为: graft , host , both , neither 或 ambiguous 其中之一(图5)。
Xenome 有两个不同的功能块,使用两个单独的命令来调用: index 和 classify 。
参数列表
在对 reads 进行分类之前,必须根据移植物和宿主参考序列构建索引。参考基因组序列必须为 FASTA 格式及其压缩格式( gzip )。
我们构建的索引文件为
可以看到,索引都是以我们指定的 idx 作为前缀
有了索引之后,我们就可以来对 reads 进行分类了。
参数列表
我们可以输入一个待分类的样本,可以是 FASTA 、 FASTQ 格式或对应的压缩格式( gzip ),还支持每行代表一个序列的文本文件
运行完此步骤之后,会为每种 reads 生成一个单独的文件,输出文件可能会有这些:
输出的 reads 文件的格式是与输入文件的格式一致的。
也可以同时指定多个输入文件,但是所有相同格式的输入都将被写入同一个输出文件。例如
将会产生以下文件:
每个 FASTQ 文件都包含来自 inA.fastq 和 inB.fastq 两个的 reads 的混合结果。 FASTA 文件包含来自 inC.fasta 的读取。
如果不想混合来自不同文件的输入 reads 的结果,只能分开运行了。可以通过设置不同的输出文件前缀来区分来自不同的样本的 reads 。例如
运行上面的命令将产生如下结果:
Xenome 还可以处理双端测序的输入文件,例如
这将会为每个种类的 reads 输出结果文件名添加配对的 _1 和 _2 后缀来区分
如果需要,可以指定其他名称来替换 host 和 graft 。例如
将会产生下面的结果
classify 命令在分类完 reads 之后,还会将每种类型的 reads 的统计信息打印到屏幕上。
在 Statistics 部分的信息中, B(both) 、 G(graft) 、 H(host) 、 M(marginal) 下面的 16 行表示这些分类的组合( 4×4 ), 1 表示属于该类, 0 表示不属于。
count 表示每种子分类的 reads 数目,以及后面的 percent 表示 reads 数目占比。最后的 class 表示这一子类所属的最后的分类。
而在 Summary 部分的信息中,将上面的数据进行了汇总。最后被输出的分类中,各分类的 reads 数目及其占比
问题补充:钢带编辑完了没有变化,工件只显示三道线,悲剧 首先你要展开,展平以后才加入排位,最后才根据你定义的工站数出三维排料图 1.先排除
一、编程语言的选择
能完成数字矿床模型专家系统的软件实现的编程语言必须满足计算能力强、描述能力强、可视化能力强、兼容性和移植性强的特点。
Visual C++是Microsoft公司杰出的开发工具,满足上述特点,同时Microsoft公司的Office系列产品同时作为COM组件,与Visual C++提供了无缝连接。
Dephi是Borland公司杰出的开发工具,满足上述特点,丰富的控件操作简单,有很大的优势。
综合考虑,决定利用Visual C++作为数字矿床模型专家系统开发工具。
二、知识库数据结构
(一)地质事实数据结构
每一个地质事实是推理树上的一个结点,每个结点是类CNode的一个实例。
CNode
{
数据对象:
strNote含义:结点的中文解释。
sName含义:结点的名称;
nType含义:结点的类型。取值-1表示该结点为顶极结点或根,取值0表示该结点为分支结点或分叉,取值>1表示该结点为终端结点或叶子。
fUnderPro含义:结点的后验概率值,也就是推理过程中的修正概率值,随着推理过程在时间上的延续而不断修正直至不再变化为止。顶极结点的后验概率值是推理结果的体现。
fPrePro含义:顶极结点、分支结点的先验概率值。这是一个由领域专家给出的经验值。
fReliability含义:终端结点的可信度值,取值范围是-5至5的11个整数。这是一个用户在一定的观察下提供给系统的主观值。
IsSelected含义:结点是否被激活的标志信息。顶极结点或分支结点的先验概率值一旦发生变化,则该结点激活标志是TRUE,终端结点一旦被选中,则该结点激活标志是TRUE;否则该结点激活标志是FALSE。
基本操作:
CNode(name,type,prepro,reliability)
操作结果:构造一个名称为name,类型为type,先验概率值为prepro,可信度值为reliability的结点。
~CNode( )
初始条件:相应结点已经存在。
操作结果:销毁相应结点。
setName(name)
初始条件:相应结点已经存在。
操作结果:设置结点的名称为name。
setNote(note)
初始条件:相应结点已经存在。
操作结果:设置结点的中文解释为note。
setType(type)
初始条件:相应结点已经存在。
操作结果:设置结点的类型为type。
setPrePro(prepro)
初始条件:相应结点已经存在。
操作结果:设置结点的先验概率值为prepro。
setReliability(re)
初始条件:相应结点已经存在。
操作结果:设置结点的可信度值为re。
setUnderPro(underpro)
初始条件:相应结点已经存在。
操作结果:设置结点的后验概率值为underpro。
setStatus(selected)
初始条件:相应结点已经存在。
操作结果:设置结点的激活标志为selected。
getName( )
初始条件:相应结点已经存在。
操作结果:返回结点的名称。
getNote( )
初始条件:相应结点已经存在。
操作结果:返回结点的中文解释。
getType( )
初始条件:相应结点已经存在。
操作结果:返回结点的类型。
getPrePro( )
初始条件:相应结点已经存在。
操作结果:返回结点的先验概率值。
getReliability( )
初始条件:相应结点已经存在。
操作结果:返回结点的可信度值。
getUnderPro( )
初始条件:相应结点已经存在。
操作结果:返回结点的后验概率值。
getStatus( )
初始条件:相应结点已经存在。
操作结果:返回结点的激活状态。
}
(二)推理规则数据结构
每一条推理规则就是关联结点之间的一个二元关系。每一个二元关系是类CRule的一个实例。
CRule
{
数据对象:
ruleName含义:规则的名称。
premiseNode含义:规则的前件。
actionNode含义:规则的结论。
LS含义:规则的充分性度量值。这是一个由领域专家给出的经验值。这个值反映的是前件的出现对结论为真的影响程度,取值范围[1,+∞),这个值离1越远表示越充分。
LN含义:规则的必要性度量。这是一个由领域专家给出的经验值。这个值反映的是前件不存在时对结论为真的影响程度,取值范围(0,1],这个值离1越远表示越必要。
IsActive含义:规则的激活标志。一旦规则被使用,激活标志是 TRUE,否则是FALSE。
基本操作:
CRule( )
操作结果:构造一个规则。
~CRule( )
初始条件:相应的规则已经存在。
操作结果:销毁相应规则。
setMember(name,premise,action,Ls,Ln)
初始条件:相应的规则已经存在。
操作结果:设置相应规则的名称为name,前件为premise,结论为action,充分性度量值为Ls,必要性度量值为Ln。
setName(name)
初始条件:相应的规则已经存在。
操作结果:设置相应规则的名称为name。
setPremise(premise)
初始条件:相应的规则已经存在。
操作结果:设置相应规则的前件为premise。
setAction(action)
初始条件:相应的规则已经存在。
操作结果:设置相应规则的结论为action。
setLs(ls)
初始条件:相应的规则已经存在。
操作结果:设置相应规则的充分性度量值为ls。
setLn(ln)
初始条件:相应的规则已经存在。
操作结果:设置相应规则的必要性度量值为ln。
SetStatus(status)
初始条件:相应的规则已经存在。
操作结果:设置相应规则的激活标志为status。
getRuleName( )
初始条件:相应结点已经存在。
操作结果:返回相应规则的名称。
getPremise( )
初始条件:相应结点已经存在。
操作结果:返回相应规则的前件。
getAction( )
初始条件:相应结点已经存在。
操作结果:返回相应规则的结论。
getLS( )
初始条件:相应结点已经存在。
操作结果:返回相应规则的充分性度量值。
getLN( )
初始条件:相应结点已经存在。
操作结果:返回相应规则的必要性度量值。
getStatus( )
初始条件:相应结点已经存在。
操作结果:返回相应规则的激活标志。
};
(三)主要变量
矿床模型数 int m_Mode 1 Num;
地质事实结点数 int g_iNodeNum;
地质事实结点指针 CNode*g_pNode;
每一种矿床模型推理规则数 int*m_pRule-Num;
推理规则二重指针 CRule**m_ppRule。
三、推理模型的软件实现
数字矿床模型专家系统推理流程如图6-14。
图6-14 数字矿床模型专家系统推理流程图
(一)正向推理流程
图6-15是数字矿床模型专家系统正向推理流程图。正向推理部分代码释义如下:
1.解析析取式
strPremise=m_ppRule[k][i].getPremise( );
ipor=strPremise.Find(".OR.");
if(ipor>-1){
qq=0;
for(p=0;p<strPremise.GetLength( );p++)
if(strPremise.GetAt(p)==ˊ.ˊ)
qq++;
qq/=2;
num=qq;
CString*pstr=new CString[num+1];
qq=0;
p=0;
r=0;
strPremise+=ˊ.ˊ;
while(p<strPremise.GetLength( )){
if(strPremise.GetAt(p)==ˊ.ˊ){
pstr[qq]=strPremise.Mid(r,p-r);
qq++;
图6-15 数字矿床模型专家系统正向推理流程图
p+=4;
r=p;
}
else
p++;
}
imax=-6.0 f;
flg=TRUE;
for(mm=0;mm<=num;mm++){
nn=0;
while(flg&&nn<m iNodeNum){
if(g_pNode[nn].getStatus( )
g_pNode[nn].getName( )==pstr[mm]){
if(g_pNode[nn].getReliability( )>imax){
imax=g_pNode[nn].getReliability( );
strPremise=g_pNode[nn].getName( );
}
flg=FALSE;
}
nn++;
}
}
delete[]pstr;
}
2.前件为叶子结点的推理
if(g_pNode[j].getType( )>=1){
ph=g_pNode[l].getPrePro( );
oh=computeP2O(ph);
ces=g_pNode[j].getReliability( );
phs=0.0 f;
if(ces>0.0){
phe=float(ls*oh/(1.0+ls*oh));
phs=float(ph+(phe-ph)*ces*0.2);
}
else{
ph_e=float(ln*oh/(1.0+ln*oh));
phs=float(ph_e+(ph-ph_e)*(ces*0.2+1.0));
}
ohs=computeP2O(phs);
if(g_pNode[l].getUnderPro( )==0.0)
g_pNode[l].setUnderPro(phs);
else
g_pNode[l].setUnderPro(
computeO2P(
computeP2O(
g_pNode[l].getUnderPro( )
)
*ohs/oh
)
);
}
3.前件为非叶子结点的推理
if(g_pNode[j].getType( )==0){
pe=g_pNode[j].getPrePro( );
pes=g_pNode[j].getUnderPro( );
ph=g_pNode[l].getPrePro( );
oh=computeP2O(ph);
phs=0.0 f;
if(pes>=pe){
phe=float(ls*oh/(1.0+ls*oh));
phs=float(ph+(phe-ph)*(pes-pe)/(1.0-pe));
}
else{
ph_e=float(ln*oh/(1.0+ln*oh));
phs=float(ph_e+(ph-ph_e)*pes/pe);
}
if(g_pNode[l].getUnderPro( )==0.0)
g_pNode[l].setUnderPro(phs);
else{
float ohs=computeP2O(phs);
g_pNode[l].setUnderPro(
computeO2P(
computeP2O(
g_pNode[l].getUnderPro( )
)
*ohs/oh
)
);
}
}
4.BP模型或典型铜矿匹配出发的推理
if(g_pNode[i].getName( )=="bp"∣∣g_pNode[i].getName( )=="typical"){
if(g_pNode[i].getNote( )==g_pNode[remember].getName( )){
float PH=g_pNode[remember].getPrePro( );
float OH=computeP2O(PH);
float CES=5.Of;
BOOL flags=TRUE;
int ffff=0;
float LS,LN;
while(flags&&ffff<m pRuleNum[k]){
if(m_ppRule[k][ffff].getPremise( )==g_pNode[i].getName( )
&&m_ppRule[k][ffff].getAction( )==g_pNode[remember].getName( )){
m_ppRule[k][ffff].setStatus(TRUE);
LS=m_ppRule[k][ffff].getLS( );
LN=m_ppRule[k][ffff].getLN( );
flags=FALSE;
}
ffff++;
}
float PHE=float(LS*OH/(1.0+LS*OH));
float PHS=float(PH+(PHE-PH)*CES*0.2);
float OHS=computeP2O(PHS);
if(g_pNode[remember].getUnderPro( )==0.0){
g_pNode[remember].setUnderPro(PHS);
}
else{
g_pNode[remember].setUnderPro(
computeO2P(
computeP2O(
g_pNode[remember].getUnderPro( )
)
*ohs/oh
)
);
}
}
}
(二)反向推理流程
图6-16是数字矿床模型专家系统反向推理流程图。反向推理部分代码释义如下:
1.抽取未激活的相关地质事实(含析取式)
if(l=strPremise.Find(".OR.")>-1){
qq=0;
for(p=0;p<strPremise.GetLength( );p++)
if(strPremise.GetAt(p)==ˊ.ˊ)
图6-16 数字矿床模型专家系统反向推理流程图
qq++;
qq/=2;
num=qq;
CString*pstr=new CString[num+1];
qq=0;
p=0;
r=0;
strPremise+=ˊ.ˊ;
while(p<strPremise.GetLength( )){
if(strPremise.GetAt(p)==ˊ.ˊ){
pstr[qq]=strPremise.Mid(r,p-r);
qq++;
p+=4;
r=p;
}
else
p++;
}
for(mm=0;mm<=num;mm++){
for(k=0;k<g iNodeNum;k++){
if(g_pNode[k].getName( )==pstr[mm]
&&!g_pNode[k].getStatus( )){
g_pNode[k].setUnderPro(-100);
break;
}
}
}
delete[]pstr;}
2.抽取未激活的相关地质事实(含合取式)
if(l=strPremise.Find(".AND.")>-1){
qq=0;
for(p=0;p<strPremise.GetLength( );p++)
if(strPremise.GetAt(p)==ˊ.ˊ)
qq++;
qq/=2;
num=qq;
CString*pstr1=new CString[num+1];
qq=0;
p=0;
r=0;
strPremise+=ˊ.ˊ;
while(p<strPremise.GetLength( )){
if(strPremise.GetAt(p)==ˊ.ˊ){
pstr1[qq]=strPremise.Mid(r,p-r);
qq++;
p+=5;
r=p;
}
else
p++;
}
for(mm=0;mm<=num;mm++){
for(k=0;k<g iNodeNum;k++){
if(g_pNode[k].getName( )==pstr1[mm]
&&!g_pNode[k].getStatus( )){
g_pNode[k].setUnderPro(-100);
break;
}
}
}
delete[]pstr1;
}
四、解释系统的软件实现
(一)推理报告的结构
系统为每一次推理生成一份推理报告,为MS WORD文档。报告分为两个部分:正向推理报告和反向推理报告,每一部分又由用户提供证据清单和推理过程描述组成,推理过程描述采用三段论格式,并附有相关概率值、规则的充分性度量及必要性度量值。
(二)推理报告实现原理
推理报告的实现采用了基于COM的OLE自动化技术(图6-17)。
图6-17 COM组件、COM对象和COM接口之间的关系图
Windows系统平台上,一个COM组件可以是一个DLL文件,也可以是一个EXE 文件。一个组件程序可以包含多个COM对象,并且每个COM对象可以实现多个接口。
MS OFFICE的类型库文件提供了COM功能的子集,更重要的是,类型库文件提供了类,一个类描述一个COM对象。类型库标识了自动化客户区需要调用的COM对象属性和方法的全部信息,类型库描述了属性接受或返回的值,也提供了方法能够接收参数的类型和是否必需的。类型库可以是DLL文件、EXE文件或TLB文件。每一个MS OFFICE应用程序在DLL文件中都提供多个类型库资源,带有类型库资源的DLL通常叫做对象库(.OLB文件)。其中MS WORD 97的对象库文件是Msword8.olb,MS WORD 2000的对象库文件是 Msword9.olb。
(三)生成推理报告部分代码释义
1.COM初始化
if(!AfxOleInit( ))
{
AfxMessageBox("Could not initialize COM dll");
return FALSE;
}
2.创建WORD实例初始化文档
_Application oWord;
if(!oWord.CreateDispatch("Word.Application")){
AfxMessageBox("Word failed to start!");
}
else{
oWord.SetVisible(TRUE);
Documents oDocs;
_Document oDoc;
oDocs=oWord.GetDocuments( );
oDoc=oDocs.Add(vtOptional,vtOptional,vtOptional,vtOptional);
}
3.设置文档格式、字体并输出
Selection oSelection;
Paragraphs oParagraphs;
oSelection=oWord.GetSelection( );
oParagraphs=oSelection.GetParagraphs( );
oParagraphs.SetAlignment(1);
_Font oFont;
oFont=oSelection.GetFont( );
oFont.SetSize(18);
oSelection.TypeText(StrToAdd);
InsertLines(&oSelection,1);
oParagraphs.SetAlignment(0);
oParagraphs=oSelection.GetParagraphs( );
oParagraphs.SetAlignment(3);
4.超级链接和日期
Hyperlinks oHyperlinks;
oHyperlinks=oSelection.GetHyperlinks( );
oHyperlinks.Add(oSelection.GetRange( ),
COleVariant("http://"),vtOptional,vtOptional,vtOptional,vtOptional);
InsertLines(&oSelection,1);
oSelection.InsertDateTime(COleVariant("dddd,mmmmdd,yyyy"),
vtFalse,vtOptional,vtOptional,vtOptional);
五、知识获取机制的软件实现
数字矿床模型专家系统知识获取机制界面如图6-18所示。相关类说明代码如下:
#include "GridCtrl.h"
classcmodifyRule:public CDialog
{
public:
int GetTypeNo(int row);
—CModifyRule( );
CString**m_ppstrCell;
CString*m_pstrColName;
图6-18 数字矿床模型专家系统知识获取机制界面图
int m_iColNum;
int*m_piTypeNum;
int m_iTypeNum;
bool ReadRule( );
void OnTitletips( );
void OnItalics( );
void OnListmode( );
CModifyRule(CWnd*pParent=NULL);
//{{AFX DATA(CModifyRule)
enum{ IDD=IDD_MODIFY_RULE};
int m_nFixCols;
int m_nFixRows;
int m_nCols;
int m_nRows;
BOOL m_bEditable;
BOOL m_bHorzLines;
BOOL m_bListMode;
BOOL m_bVertLines;
BOOL m_bSelectable;
BOOL m_bAllowColumnResize;
BOOL m_bAllowRowResize;
BOOL m_bHeaderSort;
BOOL m_bReadOnly;
BOOL m_bItalics;
BOOL m_btitleTips;
//}}AFX DATA
CGridCtrl m Grid;
CSize m OldSize;
//ClassWizard generated virtual function overrides
//{{AFX VIRTUAL(CModifyRule)
protected:
virtual void DoDataExchange(CDataExchange*pDX);
//}}AFX VIRTUAL
protected:
//{{AFX MSG(CModifyRule)
afx_msg void OnInsertRow( );
afx_msg void OnDeleteRow( );
virtual BOOL OnInitDialog( );
afx_msg void OnSize(UINT nType,int cx,int cy);
afx_msg void OnClose( );
afx_msg BOOL OnHelpInfo(HELPINFO*pHelpInfo);
//}}AFX MSG
DECLARE MESSAGE MAP( )
};
六、知识数据的组织
(一)知识库文件格式
1.结点数据文件格式
结点总数n;
结点属性数m;
结点属性1名称…结点属性m名称;
结点1属性1值…结点1属性m值;
…
结点n属性1值…结点n属性m值。
2.规则数据文件格式;
矿床类型种数n;
矿床1推理规则数m1;
…
矿床n推理规则数mn;
属性数c;
属性1名称…属性c名称;
矿床1规则1属性1值…矿床1规则1属性c值;
…
矿床1规则m1属性1值…矿床1规则m1属性c值;
…
矿床n规则1属性1值…矿床n规则1属性c值;
…
矿床n规则mn属性1值…矿床n规则mn属性c值。
七、知识库文件的安全
知识库文件加密保存,加密方式是对字符与密钥进行按位异或运算。
static void ApplyKeyToFile(FILE*in,FILE*out,unsigned char key)
{
int ch;
while((ch=getc(in))!=EOF)
putc(ch ^ key,out);
}
合肥中科金臻生物医学有限公司是2016-01-22在安徽省合肥市注册成立的有限责任公司(自然人投资或控股),注册地址位于合肥市高新区创新大道425号安徽省科技成果转化示范基地A座4楼。
合肥中科金臻生物医学有限公司的统一社会信用代码/注册号是91340100MA2MT63120,企业法人金家刘,目前企业处于开业状态。
合肥中科金臻生物医学有限公司的经营范围是:临床肿瘤分子诊断技术与肿瘤精准治疗技术产品的研发、技术推广、技术服务;高通量测序技术的肿瘤分子诊断产品的研发与技术服务;医学检验科;临床血液与体液检验专业;临床化学检验专业;临床免疫、血清学专业;临床微生物检验专业;临床细胞分子遗传学专业;临床病理专业。(依法须经批准的项目,经相关部门批准后方可开展经营活动)。本省范围内,当前企业的注册资本属于一般。
通过百度企业信用查看合肥中科金臻生物医学有限公司更多信息和资讯。
感谢您阅读本篇对pdx模型的详细介绍,如果你对PDX模型还不够了解,想进一步学习关于pdx模型的知识,可以在本站首页搜索你想知道的!