我有以下FASTA文件:
>header1
CGCTCTCTCCATCTCTCTACCCTCTCCCTCTCTCTCGGATAGCTAGCTCTTCTTCCTCCT
TCCTCCGTTTGGATCAGACGAGAGGGTATGTAGTGGTGCACCACGAGTTGGTGAAGC
>header2
GGT
>header3
TTATGAT
Run Code Online (Sandbox Code Playgroud)
我想要的输出:
>header1
117
>header2
3
>header3
7
# 3 sequences, total length 127.
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
awk '/^>/ {print; next; } { seqlen = length($0); print seqlen}' file.fa
Run Code Online (Sandbox Code Playgroud)
我用这段代码得到的输出是:
>header1
60
57
>header2
3
>header3
7
Run Code Online (Sandbox Code Playgroud)
我需要一个小修改来处理多个序列行.
我还需要一种方法来获得总序列和总长度.欢迎任何建议......请在bash或awk中.我知道在Perl/BioPerl中很容易做到这一点,实际上,我有一个脚本可以用这些方式来做.
我已经对我的单元测试进行了分析,并且应用程序运行的大部分时间都花费在这部分代码上.它是一个将float转换为字符串的函数.如何重写下面的代码以获得更好的速度性能?
我误读了报告,瓶颈在其他地方吗?
该档案报告指出:
总CPU%= 13.02%,自CPU%.07,总CPU(ms)769,自CPU超出100%769 ms.
5907个样本中有769个.
std::string FloatToScientificString(float val, int width, int precision)
{
std::stringstream buffer;
buffer << std::scientific << std::setw(width) << std::setprecision(precision) << std::setfill(' ') << val;
return buffer.str();
}
Run Code Online (Sandbox Code Playgroud) 我试图在Linux机器上安装gdb,但我不知道要安装什么文件?
你有没有人能帮到这个?
GitHub如何猜测文本文件的编码?
我的存储库中有两个文本文件:README.ru.koi8-r和mpman-ru.tex,两者都使用编码koi8-r.GitHub对第一个使用正确的编码,对第二个使用错误.
也许有一个强制正确猜测的伎俩?
从HDFS到本地获取数据时遇到问题。我有例如:
/path/to/folder/report1/report1_2019_03_24-03_10*.csv
/path/to/folder/report1/report1_2019_03_24-04_12*.csv
...
/path/to/folder/report1/report1_2019_03_25-05_12*.csv
/path/to/folder/report1/report1_2019_03_25-06_12*.csv
/path/to/folder/report1/report1_2019_03_25-07_11*.csv
/path/to/folder/report1/report1_2019_03_25-08_13*.csv
/path/to/folder/report2/report2_out_2019_03_25-05_12*.csv
/path/to/folder/report2/report2_out_2019_03_25-06_11*.csv
/path/to/folder/report3/report3_TH_2019_03_25-05_12*.csv
Run Code Online (Sandbox Code Playgroud)
因此,我需要输入每个文件夹(report1,report2,report3 ...,但并非所有文件夹都以“ report”开头),然后输入从先前24小时复制到本地的CSV文件,并且应该每天早晨4点完成是(我可以使用crontab安排它)。问题是我不知道如何遍历文件并将时间戳记作为参数传递。
我已经尝试过类似的东西(在Stack Overflow上找到)
/datalake/hadoop/bin/hadoop fs -ls /path/to/folder/report1/report1/* | tr -s " " | cut -d' ' -f6-8 | grep "^[0-9]" | awk 'BEGIN{ MIN=1440; LAST=60*MIN; "date +%s" | getline NOW } { cmd="date -d'\''"$1" "$2"'\'' +%s"; cmd | getline WHEN; DIFF=NOW-WHEN; if(NOW > DIFF){ print "Migrating: "$3; system("datalake/hadoop/bin/hadoop fs -copyToLocal /path/to/local_dir/"$3) }}'
Run Code Online (Sandbox Code Playgroud)
但这是复制比我早几天的文件,并且仅从一个目录(在本例中为report1)复制文件。
有什么方法可以使此操作更加灵活和正确。如果可以使用bash而不是Python来解决问题,那就太好了。任何建议都欢迎或链接到具有类似问题的良好答案。
另外,也不必处于某个循环中。我可以为每个报告使用分隔的代码行。
当您尝试通过通用接口或组合模块或通过类型绑定过程重载子例程时,必须考虑具有相同通用名称的任何过程必须具有可区分或不兼容的参数.
当使用无限多态实体时,您可以快速运行这个令人难以置信的教育示例中演示的问题:
INTERFACE foobar
SUBROUTINE foo(x)
INTEGER :: x
END SUBROUTINE foo
SUBROUTINE bar(x)
CLASS(*) :: x
END SUBROUTINE bar
END INTERFACE foobar
Run Code Online (Sandbox Code Playgroud)
在这里,foo(x)与bar(x)作为参数的冲突bar也可以是一个INTEGER.
可以使用SELECT TYPE新子例程中的构造来解决此特定问题,该子例程替换了通用接口:
SUBROUTINE foobar(x)
CLASS(*) :: x
SELECT TYPE (x)
TYPE IS INTEGER
CALL foo(x)
CLASS default
CALL bar(x)
END SELECT
END SUBROUTINE foobar
Run Code Online (Sandbox Code Playgroud)
然而,有时这样的结构会变得乏味且不必要.
是否有其他方法可以在不使用构造的情况下实现此类专业化SELECT TYPE?
在我的项目中,MyClass.h文件中有几行
class MyClass{
public:
....
#ifndef __MAKECINT__
std::vector<Status_e(MyClass::*)(TupleInfo & info)> m_processObjects; //!
#endif
....
}
//The Status_e is an enum type
//The TupleInfo is a struct
Run Code Online (Sandbox Code Playgroud)
我*在上面的代码片段中无法理解这个用法.在MyClass.cxx文件中,m_processObjects用作:
for (unsigned int f = 0; f < m_processObjects.size(); ++f) {
status = (this->*m_processObjects[f])( m_tuples[i] );
if ( status == FAILURE ) {
return EL::StatusCode::FAILURE;
}
....
}
....
Run Code Online (Sandbox Code Playgroud)
我从来没有听说过这样的用法this->*blabla,但这段代码片段有效.那意味着什么?
我有 N 个制表符分隔的文件。每个文件都有一个标题行,说明列的名称。某些列对于所有文件是通用的,但有些列是唯一的。
我想将所有文件合并成一个包含所有相关标题的大文件。
例子:
> cat file1.dat
a b c
5 7 2
3 9 1
> cat file2.dat
a b e f
2 9 8 3
2 8 3 3
1 0 3 2
> cat file3.dat
a c d g
1 1 5 2
> merge file*.dat
a b c d e f g
5 7 2 - - - -
3 9 1 - - - -
2 9 - - 8 3 -
2 8 …Run Code Online (Sandbox Code Playgroud) 大多数语言(例如 Fortran、Python、Ruby、Perl、Awk 等)定义的幂运算符的优先级高于一元加号和减号的优先级。这会产生以下结果:
In [1]: -2**1
Out[1]: -2
In [2]: -2**2
Out[1]: -4
Run Code Online (Sandbox Code Playgroud)
诸如 Ksh、bash、zsh 之类的 Shell 将这两个运算符的优先级颠倒了。这导致了令人惊讶的结果:
$ echo $((-2**1))
-2
$ echo $((-2**2))
4
Run Code Online (Sandbox Code Playgroud)
问题:为什么 shell 有这种特殊的优先顺序?我认为这是基于系谱的
ksh > bash > zsh。但是还是..
注意:求幂不是 POSIX 的一部分
注意:其他语言/解释器存在类似的优先顺序,例如bc,tcl
相关问题: