Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 人类细胞的有丝分裂_Java_Bioinformatics - Fatal编程技术网

Java 人类细胞的有丝分裂

Java 人类细胞的有丝分裂,java,bioinformatics,Java,Bioinformatics,我正在为我的项目用java编程遗传过程,我想模拟人类细胞的有丝分裂。人类细胞包含23对染色体。有丝分裂基本上是一种细胞分裂或繁殖,其中一个细胞产生两个基因相同的子细胞。您可以在此处找到有关它的图片(向下滚动一点): 我认为这种有丝分裂就像类“Cell”中的java方法。所以我用自己的方法制作了一个类染色体来表示一条染色体,并制作了一个包含23对染色体的类“细胞”。我计划将有丝分裂方法放在类单元格中,但问题是这个方法应该返回2个相同的单元格,我认为不可能创建一个在这个类中返回2个单元格的方法。

我正在为我的项目用java编程遗传过程,我想模拟人类细胞的有丝分裂。人类细胞包含23对染色体。有丝分裂基本上是一种细胞分裂或繁殖,其中一个细胞产生两个基因相同的子细胞。您可以在此处找到有关它的图片(向下滚动一点):

我认为这种有丝分裂就像类“Cell”中的java方法。所以我用自己的方法制作了一个类染色体来表示一条染色体,并制作了一个包含23对染色体的类“细胞”。我计划将有丝分裂方法放在类单元格中,但问题是这个方法应该返回2个相同的单元格,我认为不可能创建一个在这个类中返回2个单元格的方法。
我想制作一个方法,返回一个由2个单元格组成的数组,但它不起作用。
有没有关于如何创建此方法的建议?或者可能是我正在使用的方法之外的另一种方法?谢谢。

这是你在实际java程序中必须做的事情。检查接口。< /p> < p>作为代码> >可克隆< /COD>,考虑或A,复制构造函数的静态工厂模拟。

< P>我建议单元实现C克隆No/<代码>,并使用“代码> CalOne())/>代码>方法> >

Cell
中的
doMitosis()
方法上,基本上可以执行以下操作:

public Cell[] doMitosis() {
    Cell[] cells = new Cell[]{this.clone(), this.clone()};
    return cells;
}
代码是一个粗略的草图,而不是实际的实现。此外,此代码还考虑到父单元必须被杀死(并进行垃圾收集),以便两个相同的单元具有优先权


事实上,这就是我用来克隆细胞的东西。但我的问题不是细胞的克隆,而是“有丝分裂”方法应该返回的方向。就有丝分裂(生物学)而言,产生两个相同的细胞

您正在为使Java表现得像真实世界的对象而烦恼

你应该关注的是在有丝分裂后拥有正确数量的正确种类的细胞,而不是让方法特征直接反映真实世界的事件

有丝分裂是一个细胞分裂成两个。在我看来,以下任何一种都是Java中有效的“模型”:

  • 此单元格上返回另一个单元格的方法:

    public Cell mitosis() {
        return this.clone();  // ... or equivalent
    }
    
  • 此单元格上返回两个单元格的方法:

    public Cell[] mitosis() {
        return new Cell[]{this, this.clone()};  // ... note - must return this as one 
                                                // of the objects
    }
    
    public static Cell[] mitosis(Cell one) {
        return new Cell[]{one, one.clone()}; 
    }
    
  • 返回两个单元格的静态方法:

    public Cell[] mitosis() {
        return new Cell[]{this, this.clone()};  // ... note - must return this as one 
                                                // of the objects
    }
    
    public static Cell[] mitosis(Cell one) {
        return new Cell[]{one, one.clone()}; 
    }
    
甚至下面的说法也可能是正确的。。。如果调用方注意删除对原始单元格的所有引用

    public static Cell[] mitosis(Cell original) {
        return new Cell[]{original.clone(), original.clone()}; 
    }

但我的观点是,签名是什么并不重要。重要的是,在方法(和调用者)完成这些工作之后,新模型在正确的关系中具有正确的单元格对象。

“我考虑过创建一个方法,该方法将返回一个包含两个单元格的数组,但它不起作用。”到底什么不起作用?因为它应该。事实上,我甚至用它来克隆我的细胞。但我的问题不是细胞的克隆,而是“有丝分裂”方法应该返回的方向。就有丝分裂(生物学)而言,产生两个相同的细胞。但我的方法是只返回一个单元格,而不是2个。因此,如果我想测试它,我有例如
cellc=newcell();单元d=新单元();单元e=新单元();试一下{d=c.mitosis();e=c.mitosis();}catch(CloneNotSupportedException e){}
我学生物学已经有一段时间了,但你可以肯定地认为有丝分裂涉及“父”和“子”细胞。e、 g.
单元c=新单元;细胞d=c.有丝分裂()
。看:两个细胞!让第一单元创建一个单独的第二单元和第三单元,这不是意味着系统现在有三个单元吗?对于mytosis,您将返回Cell[]cells={this,this.clone()};啊,谢谢,我是从父细胞分裂成两个完全相同的细胞的角度来看的。我的代码假设父单元将被“擦除”并被垃圾收集。+1用于封装。@Martin Milan提出的问题强调了了解模型的必要性。例如,细胞是否积累随机突变?在有丝分裂期间,没有随机突变。它只是将人体内的一个细胞和其中的23对染色体复制到两个完全相同的细胞中。所以假设一个生物体有1个细胞,在经历有丝分裂后,它将有2个细胞而不是3个细胞。@mkab:有丝分裂缺乏完美的保真度;随机突变确实会累积。真核细胞有几种修复(表面上)随机缺陷的机制,例如由背景辐射引起的缺陷。你可能是想把有丝分裂和克隆产生的遗传多样性进行对比。我读了一些,它提供了一些关于差异的信息,但我认为克隆对我来说是可以的。谢谢你的建议,不客气;这只是一个实现细节。正如其他人所建议的,你应该关注你想要模拟的细胞代谢的哪个方面:有丝分裂只是一个阶段。是的,我很想让Java表现得像一个真实世界的对象。因此,我应该使用以下方法创建一个类“Individual”,例如,将单元格的ArrayList作为变量?所以每次一个细胞进行有丝分裂时,我都会把产生的细胞加入这个阵列列表?希望我在现实世界里没想太多?