【问题标题】:row reading and editing in Fortran 90Fortran 90 中的行读取和编辑
【发布时间】:2012-09-18 05:25:42
【问题描述】:

我是 Fortran 新手,我正在尝试编写一个程序来读取一个 .txt 文件,其中我有 24480 行和 ~ 6000 列。 在每一行(作为个体)中,我的基因型表示为 1 和 2,例如,如果在第一行中,我有 204 个基因型,则该基因型的前半部分(=102)属于个体的父亲,后半部分属于基因型属于个人的大坝。此外,每一行都有不相等的值。那么,我如何为 Fortran 定义逐行读取此文件并将每行分为两行并将每个元素 (i) 旁边的平均值 + i。

例如,我将文件的两行显示为简要: 第1行:112122121112122111112121111211122121111121 第2行:21112111112112222121112121211121221212121111121112 1212

等等。 如有任何帮助,我们将不胜感激。

【问题讨论】:

  • 尝试使用正确的标签。您将有更大的机会得到答复。
  • 抱歉,您能否清楚地说明您想要的结果是什么。最好显示一个示例结果。
  • 首先我想从文本文件中读取我的数据并将其输入到 fortran 中并选择感兴趣的基因型,其次选择感兴趣的个体,最后为选定的基因型和个体生成一个基因型文件,例如作为 2维矩阵。
  • 请给我们一个期望输出的例子。我碰巧知道基因型或 ATCG 碱基是什么,但它根本无法帮助我理解你想要从你对数据的描述中得到什么。
  • 好的,是的,你是对的。我必须描述更多。所以,我有一个非常大的标记(基因或基因型)数据集,其特征为 1 和 2。在数据集中我只有 1 和 2(不是 ATCG)。好的,在这个数据集中,我有 m 行,包括 m 个个体和 n 列代表标记。此外,每一行都有不同数量的标记(如 1,2)。好的,我需要通过 fortran 读取每一行并定义每一行是每个人的染色体,由妈妈(dam)和爸爸(sire)继承。然后将每一行一分为二,说前半行是爸爸,另一半是妈妈

标签: fortran fortran90


【解决方案1】:

你需要将每一行读取为一个字符串,用 len_trim() 获取它的长度,然后将每一半读入整数数组:

     character*10000 line

     read(unit,'(a)')line
     len=len_trim(line)
     read(line,'(10000i1)')a(:len/2),b(:len/2)

【讨论】:

    猜你喜欢
    • 2012-09-03
    • 1970-01-01
    • 1970-01-01
    • 2013-08-02
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 2020-01-14
    相关资源
    最近更新 更多