我有一个科学的数据管理问题似乎很普遍,但我找不到现有的解决方案甚至是它的描述,我一直很困惑.我即将开始重大改写(python),但我认为我最后一次为现有的解决方案投了一个,所以我可以废弃自己的并回到生物学,或者至少学习一些适当的语言以获得更好的谷歌搜索.
问题:我有贵(数小时至数天来计算)和大(GB的)数据属性,它们通常构建为一个或多个其他数据属性转换.我需要保持的这个数据是如何建成的轨道,所以如果它符合这个问题(右规范值,内置),我可以重复使用它作为输入又一次转型,或根据需要构建新的数据.虽然它不应该的问题,我通常我先"增值"有点异类分子生物学信息,例如,与其他研究人员通过其他方法注释的基因和蛋白质的基因组.我需要结合并比较这些数据来做出我自己的推论.通常需要许多中间步骤,并且这些步骤可能很昂贵.此外,最终结果可以成为其他转换的输入.所有这些转换都可以通过多种方式完成:使用不同的初始数据进行限制(例如使用不同的生物),在相同的推论中使用不同的参数值,或者使用不同的推理模型等.分析经常变化并建立在其他人身上以无计划的方式.我需要知道我有什么数据(什么参数或规格完全定义它),所以我可以在适当的时候重复使用它,以及一般的科学完整性.
我的努力一般:我设计我的python类时考虑到描述问题.由类对象构建的所有数据属性由一组参数值描述.我称这些定义参数或规格"def_specs",并且这些def_specs与它们的值的数据的ATT的"形状".进程的整个全局参数状态可能非常大(例如,一百个参数),但是任何一个类提供的数据att仅需要少量这些,至少是直接的.目标是通过测试其形状是否为全局参数状态的子集来检查先前构建的数据是否合适.
在一个类中,通过检查代码很容易找到定义形状所需的def_spec.当模块需要来自另一个模块的数据时,就会产生摩擦.这些数据将具有自己的形状,可能由调用对象作为args传递,但更经常从全局参数状态过滤.应该使用其依赖项的形状来扩充调用类,以便维护其数据的完整描述.从理论上讲,这可以通过检查依赖图来手动完成,但是这个图可以深入,并且有许多模块,我不断改变和添加,并且......我太懒了,不小心手工完成.
因此,程序通过跟踪对其他类属性的调用并通过托管堆栈__get__调用将其形状反馈给调用者来动态地发现数据atts的完整形状.当我重写时,我发现我需要严格控制对构建器类的属性访问,以防止任意信息影响数据.幸运的是,python使用描述符使这很容易.
余数据的ATT的形状存储在数据库,这样我可以查询适当的数据是否(即,其形状是当前参数状态的子集)已经存在.在我的重写中,我正在从mysql通过伟大的SQLAlchemy转移到对象db(ZODB或couchdb?),因为当发现额外的def_spec时,每个类的表都必须被更改,这是一个痛苦,并且因为一些def_spec是python列表或dicts,这是一个很难转换为SQL.
我不认为这个数据管理可以与我的数据转换代码分开,因为需要严格的属性控制,尽管我尽可能地尝试这样做.我可以使用现有的类,通过使用提供def_specs作为类属性的类包装它们,以及通过描述符提供db管理,但这些类是终端的,因为不能进一步发现额外的依赖形状.
如果数据管理不能轻易地与数据结构分开,我想不太可能有一个开箱即用的解决方案,而是一千个特定的解决方案.也许有适用的模式?我很欣赏任何有关如何寻找或更好地描述问题的提示.对我而言,这似乎是一个普遍的问题,尽管管理深层次的数据可能与网络的盛行风不一致.
如果我有需要在我的 webapp 和 Tomcat 之间共享的类(例如自定义领域和主体),那么包含这些类的 .jar 文件应该放在哪里?
目前我将 .jar 放在 ${CATALINA_HOME}/lib 中。当从相同类型的类分配引用时,此结果是 ClassCastException。下面是一个例子:
MyCustomPrincipal principal = (MyCustomPrincipal)FacesContext.getCurrentInstance().getExternalContext().getUserPrincipal();
Run Code Online (Sandbox Code Playgroud)
上面的方法抛出一个 ClassCastException。该方法返回一个实际的 MyCustomPrincipal 类型(因为这是我的自定义领域在执行身份验证时给 Tomcat 的),显然,它是由不同的类加载器创建的。我该如何解决这个问题,以便 Tomcat 和我的 web 应用程序都可以使用 MyCustomPrincipal?
http://tomcat.apache.org/tomcat-6.0-doc/class-loader-howto.html
任何帮助表示赞赏。安德鲁
我是Python的新手,我想确保我覆盖__eq__并且__hash__正确,以免以后引起痛苦的错误:
(我正在使用Google App Engine.)
class Course(db.Model):
dept_code = db.StringProperty()
number = db.IntegerProperty()
title = db.StringProperty()
raw_pre_reqs = db.StringProperty(multiline=True)
original_description = db.StringProperty()
def getPreReqs(self):
return pickle.loads(str(self.raw_pre_reqs))
def __repr__(self):
title_msg = self.title if self.title else "Untitled"
return "%s %s: %s" % (self.dept_code, self.number, title_msg)
def __attrs(self):
return (self.dept_code, self.number, self.title, self.raw_pre_reqs, self.original_description)
def __eq__(self, other):
return isinstance(other, Course) and self.__attrs() == other.__attrs()
def __hash__(self):
return hash(self.__attrs())
Run Code Online (Sandbox Code Playgroud)
一个稍微复杂的类型:
class DependencyArcTail(db.Model):
''' A list of courses that is a pre-req …Run Code Online (Sandbox Code Playgroud) 在仔细阅读网页并弄乱自己之后,我似乎无法将void*的目标(这是一个字符串)转换为std :: string.我尝试使用此页面的sprintf(buffer, "%p", *((int *)point));建议来获取C字符串,但无济于事.遗憾的是,是的,我必须使用void*,因为这是SDL在其USEREVENT结构中使用的.
对于那些感兴趣的人,我用来填充Userevent的代码是:
std::string filename = "ResumeButton.png";
SDL_Event button_press;
button_press.type = BUTTON_PRESS;
button_press.user.data1 = &filename;
SDL_PushEvent(&button_press);
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
编辑:感谢所有的回复,我只需要将void*转换为std :: string*.傻我.非常感谢你们!
我试图在Python中编写一个长字符串,显示为OptParser选项的帮助项.在我的源代码.py文件中,我想放置换行符,以便我的代码不会花费新行.但是,我不希望这些换行符影响代码运行时该字符串的显示方式.例如,我想写:
parser.add_option("--my-option", dest="my_option", nargs=2, default=None,
help='''Here is a long description of my option. It does many things
but I want the shell to decide how to display this explanation. However,
I want newlines in this string.''')
Run Code Online (Sandbox Code Playgroud)
上面的做事方式会让我这样做 - 当我用--help调用我的程序时,my-option的解释会有很多空白.
我怎样才能解决这个问题?
谢谢.
我在XCode 3.2中为iPhone制作了一个基本的基于视图的应用程序,但是当我将模拟器切换到iPad时,应用程序被"框架化"(不确定正确的术语是什么):
iPhone App,Framed http://dl.dropbox.com/u/2652228/iphone-app-framed.png
如果我调整视图的宽度,它没有任何效果.我无法在Interface Builder中调整"Window"的宽度(它是灰色的,添加另一个Window来替换它给了我另一个Window实例,其中大小仍然是灰色的).我该怎么办?
我有许多EventArgs类,只有一个字段和一个适当的属性来读取它:
public class SomeEventArgs : EventArgs
{
private readonly Foo f;
public SomeEventArgs(Foo f)
{
this.f = f;
}
public Foo Foo
{
get { return this.f; }
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何内置的泛型类来实现这样的行为,或者我必须自己滚动?
public class GenericEventArgs<T> : EventArgs
{
private readonly T value;
public GenericEventArgs(T v)
{
this.value = v;
}
public T Value
{
get { return this.value; }
}
}
Run Code Online (Sandbox Code Playgroud)
PS我在Microsoft Connect上写了一个建议
我正在尝试编写一个拥有用户帐户的网站.除了密码和电子邮件地址之外,没有太多敏感信息.但我真的不明白我在做什么; 在我走的时候,我有点乱砍它.在安全性或任何其他重要细节方面,我应该记住什么吗?
正如问题所说,有什么区别:
x.getiterator()并且x.iter(),xElementTree或Element在哪里?因为它似乎适用于两者,我已经尝试过了.
如果我在某处错了,请纠正我.
游戏将用C++编写
编程:
enemies.puch_back(new DefaultEnemy(200, 300, 3, 5));
enemies.puch_back(new DefaultEnemy(500, 400, 4, 5));
enemies.puch_back(new DefaultEnemy(300, 420, 3, 15));
enemies.at(2).createAward(new Key(4), "pling.wav");
Run Code Online (Sandbox Code Playgroud)
或者从这样的文件中解释它们:
DefaultEnemy 200 300 3 5
DefaultEnemy 500 400 4 5
DefaultEnemy 300 420 3 15
CreateAward 2 "pling.wav" Key 4
Run Code Online (Sandbox Code Playgroud)
程序会更容易,人们不能(不说黑客)编辑你的关卡.但是编制这一切可能有点垃圾吗?还有其他理由选择编程或口译吗?
如何在级别卸载时删除(游戏)对象?