草庐IT

Hap-Eval:Sentieon团队开发的开源结构变异SV准确率评估工具

insvast 2023-03-28 原文

Sentieon开发的Hap-eval准确率评估工具在设计之初就考虑到了复杂以及重复的基因组区域,采用了基于单倍型拼接序列的矩阵比较模式,兼容包括PacBio和ONT在内的主流三代长读长测序数据。另外值得一提的是,Hap-eval基于python所写,运行效率非常高,速度快,非常适用于大规模分析场景。

开源地址:

https://github.com/Sentieon/hap-eval

工具介绍:

Sentieon的研发团队开发了SV评估软件 Hap-eval。Hap-eval基于单倍型 (haplotype) 对两组SV结果进行比较,首先会将比较区块内的SV拼接成单倍型序列,如果SV的结果中有定相信息,在这一步也可以被利用;然后这些单倍型序列被用来建立一个矩阵,进行结果判断。

 

 安装方法:

git clone --recurse-submodules https://github.com/Sentieon/hap-eval.git
pip install ./hap-eval

使用方法:

usage: hap_eval [-h] -r FASTA -b VCF -c VCF [-i BED] [-t INT] [--base_out VCF]
                [--comp_out VCF] [--maxdist INT] [--minsize INT]
                [--maxdiff FLOAT] [--metric STR]

optional arguments:
  -h, --help            show this help message and exit
  -r FASTA, --reference FASTA
                        Reference file
  -b VCF, --base VCF    Baseline vcf file
  -c VCF, --comp VCF    Comparison vcf file
  -i BED, --interval BED
                        Evaluation region file
  -t INT, --thread_count INT
                        Number of threads
  --base_out VCF        Annotated baseline vcf file
  --comp_out VCF        Annotated comparison vcf file
  --maxdist INT         Maximum distance to cluster variants (default: 1000)
  --minsize INT         Minimum size of variants to consider (default: 50)
  --maxdiff FLOAT       Haplotype difference theshold (default: 0.2)
  --metric STR          Distance metric (default: Levenshtein)


Hap-Eval 是一款新发布软件,功能在持续完善开发中。如果 遇到不能Hap-Eval不能适配的 VCF文件,可通过github或sentieon@insvast.com及时反馈。

有关Hap-Eval:Sentieon团队开发的开源结构变异SV准确率评估工具的更多相关文章

  1. ruby - 为什么在类上调用 instance_eval() 时定义类方法? - 2

    Foo=Class.newFoo.instance_evaldodefinstance_bar"instance_bar"endendputsFoo.instance_bar#=>"instance_bar"putsFoo.new.instance_bar#=>undefinedmethod‘instance_bar’我的理解是调用instance_eval在对象上应该允许您为该对象定义实例变量或方法。但是在上面的例子中,当你在类Foo上调用它来定义instance_bar方法时,instance_bar变成了一个可以用“Foo.instance_bar”调用的类方法。很明显这段代码没

  2. 带有 attr_accessor 的类上的 Ruby instance_eval - 2

    我了解instance_eval和class_eval之间的基本区别。我在玩弄时发现的是一些涉及attr_accessor的奇怪东西。这是一个例子:A=Class.newA.class_eval{attr_accessor:x}a=A.newa.x="x"a.x=>"x"#...expectedA.instance_eval{attr_accessor:y}A.y="y"=>NoMethodError:undefinedmethod`y='forA:Classa.y="y"=>"y"#WHATTT?这是怎么回事:instance_eval没有访问我们的A类(对象)然后它实际上将它添加到

  3. ruby - 为什么这个 eval 在 Ruby 中不起作用 - 2

    你能解释一下吗?我想评估来自两个不同来源的值和计算。一个消息来源为我提供了以下信息(以编程方式):'a=2'第二个来源给了我这个表达式来评估:'a+3'这个有效:a=2eval'a+3'这也有效:eval'a=2;a+3'但我真正需要的是这个,但它不起作用:eval'a=2'eval'a+3'我想了解其中的区别,以及如何使最后一个选项起作用。感谢您的帮助。 最佳答案 您可以创建一个Binding,并将相同的绑定(bind)与每个eval相关联调用:1.9.3p194:008>b=binding=>#1.9.3p194:009>eva

  4. ruby - 模块中的 instance_eval 与 class_eval - 2

    classFooincludeModule.new{class_eval"deflab;puts'm'end"}deflabsuperputs'c'endendFoo.new.lab#=>mc======================================================================classFooincludeModule.new{instance_eval"deflab;puts'm'end"}deflabsuperputs'c'endend注意这里我把class_eval改成了instance_evalFoo.new.labresc

  5. ruby - 无需 eval 即时创建 Ruby 类 - 2

    我需要动态创建一个Ruby类,即动态地从ActiveRecord::Base派生。我暂时使用eval:eval%Q{class::#{klass}是否有一种等效的、至少同样简洁的方法可以在不使用eval的情况下执行此操作? 最佳答案 您可以使用Class类,其中的类是实例。困惑了吗?;)cls=Class.new(ActiveRecord::Base)doself.table_name=table_nameendcls.new 关于ruby-无需eval即时创建Ruby类,我们在Stac

  6. ruby - 调用 instance_eval(&lambda) 传递当前上下文时出现错误 'wrong number of arguments' - 2

    要清楚-此代码运行完美-codewithproc但如果我将Proc.new更改为lambda,则会出现错误ArgumentError:wrongnumberofarguments(1for0)这可能是因为instance_eval想要将self作为参数传递,而lambda将其视为一种方法并且不接受未知参数?有两个例子-第一个是工作:classRuledefget_ruleProc.new{putsname}endendclassPersonattr_accessor:namedefinit_rule@name="ruby"instance_eval(&Rule.new.get_rule

  7. ruby - 如何从 eval 内部返回? - 2

    我有一个代码需要在eval中使用。有时我需要退出评估代码,但我的尝试会导致错误。例如:#expectedtosee1,2and5;not3nor4;andnoerrorseval"puts1;puts2;return;puts3;puts4"#=>Error:unexpectedreturnputs5我尝试了return、end、exit、break,但都没有成功。exit不会引发错误,但我没有得到5。(注意:我知道eval是邪恶的,但在这种情况下我需要使用它。) 最佳答案 谢谢大家,但我找到了最适合我的问题的解决方案:lambda

  8. ruby-on-rails - 在 Ruby 中运行 eval 有安全的方法吗? - 2

    我们正在开发一种与Tropo具有类似要求的产品(参见https://github.com/tropo/tropo-samples/tree/master/ruby),允许用户编写一个ruby​​脚本,该脚本可以访问传入的一些函数和变量。但是,我们希望避免用户访问全局调用删除所有用户或终止程序。有没有办法用eval来完成这个? 最佳答案 这在很大程度上取决于您如何实现它,但请研究绑定(bind)与eval的使用。通过创建您自己的绑定(bind)并使用“安全”对象预加载它,您可以限制用户可以使用他的代码执行的操作。http://rdoc

  9. ruby - instance_eval 的 block 参数 - 记录了吗?目的? - 2

    刚刚意识到instance_eval产生self作为关联block的参数(除了1.9.2版本中的错误:http://www.ruby-forum.com/topic/189422)1.9.3p194:003>classC;end1.9.3p194:004>C.new.instance_eval{|*a|a}=>[#]1.9.3p194:005>这是否在某处记录/规范?看着ruby-doc:BasicObject,看不到提到的任何block参数。除了一些纯粹的历史原因之外,是否还有其他原因明确地传递它,而它自己总是被定义?我被这个击中的方式是:l=lambda{}myobj.instan

  10. ruby - 可能对 curry 过程进行 instance_eval 吗? - 2

    假设我有这样一个类:classTestdeftest_func140endend还有一个proc,它引用了Test中的一个成员函数:p=->(x,y){x+y+test_func}#=>#要调用p,我将它绑定(bind)到Test的一个实例:test=Test.new#=>#test.instance_exec(1,2,&p)#=>143现在假设我只想将y传递给p,并且始终传递x=1:curried=p.curry[1]#=>#理想情况下,我应该能够像以前一样instance_exec,但是:test.instance_exec(2,&curried)=>NameError:undef

随机推荐