как сопоставить snps с файлом ref гена

Это расширенный комментарий, а не ответ.

В моей системе, в которой Ctrl + Alt + F1 работает правильно, я получаю событие KeyPress для элемента управления и alt , но не для F1 . Хотя я знаю, что это работает, так как меня перевели на tty1.

Это полный вывод xev в моем случае (для сравнения):

root@debi64:/home/gv/Desktop/PythonTests# xev -event keyboard
Outer window is 0x4400001, inner window is 0x4400002

KeymapNotify event, serial 18, synthetic NO, window 0x0,
    keys:  4294967192 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

KeyPress event, serial 25, synthetic NO, window 0x4400001,
    root 0x281, subw 0x0, time 11550957, (157,186), root:(748,462),
    state 0x0, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyPress event, serial 28, synthetic NO, window 0x4400001,
    root 0x281, subw 0x0, time 11550960, (157,186), root:(748,462),
    state 0x8, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x4400001,
    root 0x281, subw 0x0, time 11553775, (157,186), root:(748,462),
    state 0xc, keycode 67 (keysym 0x1008fe01, XF86Switch_VT_1), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x4400001,
    root 0x281, subw 0x0, time 11553902, (157,186), root:(748,462),
    state 0xc, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 28, synthetic NO, window 0x4400001,
    root 0x281, subw 0x0, time 11553902, (157,186), root:(748,462),
    state 0x8, keycode 64 (keysym 0xffe9, Alt_L), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeymapNotify event, serial 28, synthetic NO, window 0x0,
    keys:  4294967169 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   
           0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   

ClientMessage event, serial 28, synthetic YES, window 0x4400001,
    message_type 0x11b (WM_PROTOCOLS), format 32, message 0x119 (WM_DELETE_WINDOW)

Я также создал небольшой скрипт на Python, который имитирует Ctrl + alt + F1 нажатие клавиши. Когда я запускаю скрипт, меня тоже без проблем переводят в tty1.

Вы даже можете попробовать запустить этот скрипт на своем компьютере, чтобы проверить, заходите вы на tty1 или нет, в качестве двойной проверки / подтверждения того, что ваша клавиатура работает нормально:

https://github.com/gevasiliou/PythonTests /blob/master/pykey-test.py

PS: Вместо скрипта вы также можете попробовать запустить #chvt 1 , который также должен перевести вас на tty1.

После некоторых исследований другие пользователи сообщили, что клавиши Ctrl + alt + fn перестали работать из-за обновлений xserver (очевидно), которые изменил некоторые настройки разрешения, которые применяются в tty.

Например, в этом посте проблема была решена путем применения определенного разрешения vga во время загрузки в качестве параметра ядра (vga = mode), например vga = 0x0362. Очевидно, одно из этих обновлений системы испортило разрешение у этих ребят, так что, возможно, это также ваш случай (и только бог знает почему).

PS: Чтобы увидеть доступные для вашей системы режимы, вам необходимо запустить hwinfo --framebuffer | grep 'Mode' и выбрать режим из перечисленных.

Кстати, вы включили некоторую часть xev с F3 в свой вопрос, но каков результат с F1 ?

ОБНОВЛЕНИЕ:
Как для дальнейшего устранения неполадок можно попробовать следующее:

  1. Глядя на исходный код xrandr , кажется, что опция --off выполняет следующие команды:

     set_name_xid (& config_output-> mode, None ); 
    set_name_xid (& config_output-> crtc, None); 
    config_output-> changes | = changes_mode | changes_crtc; 
     

Вы можете попробовать повторно включить --output, указав --mode и --crtc xrandr параметры вместо --auto (на всякий случай, если xrandr "автоматизация" работает некорректно).

  1. В этом документе ядра о консоли вы можете увидеть, какие драйверы / поддерживаемые модули для работы виртуальных консолей в каталоге / sys / class / vtconsole .
    Вы можете сравнить значения всех файлов / модулей во время включения и после выключения, что у вас другое поведение. Возможно, что-то изменяет эти значения во время выключения.

Это распечатка моей системы, в которой переключение на tty1-2-3-4-5-6 работает нормально:

root@debi64:/home/gv/Desktop/PythonTests# for f in $(find /sys/class/vtconsole/vtcon0/ -type f);do echo -e "File : $f \c\c\c";echo -e "-VALUE : \c";cat $f;done
File : /sys/class/vtconsole/vtcon0/bind -VALUE : 0
File : /sys/class/vtconsole/vtcon0/power/runtime_active_kids -VALUE : 0
File : /sys/class/vtconsole/vtcon0/power/runtime_suspended_time -VALUE : 0
File : /sys/class/vtconsole/vtcon0/power/autosuspend_delay_ms -VALUE : cat: /sys/class/vtconsole/vtcon0/power/autosuspend_delay_ms: Input/output error
File : /sys/class/vtconsole/vtcon0/power/runtime_enabled -VALUE : disabled
File : /sys/class/vtconsole/vtcon0/power/runtime_active_time -VALUE : 0
File : /sys/class/vtconsole/vtcon0/power/control -VALUE : auto
File : /sys/class/vtconsole/vtcon0/power/async -VALUE : disabled
File : /sys/class/vtconsole/vtcon0/power/runtime_usage -VALUE : 0
File : /sys/class/vtconsole/vtcon0/power/runtime_status -VALUE : unsupported
File : /sys/class/vtconsole/vtcon0/uevent -VALUE : 
File : /sys/class/vtconsole/vtcon0/name -VALUE : (S) VGA+
root@debi64:/home/gv/Desktop/PythonTests# for f in $(find /sys/class/vtconsole/vtcon1/ -type f);do echo -e "File : $f \c\c\c";echo -e "-VALUE : \c";cat $f;done
File : /sys/class/vtconsole/vtcon1/bind -VALUE : 1
File : /sys/class/vtconsole/vtcon1/power/runtime_active_kids -VALUE : 0
File : /sys/class/vtconsole/vtcon1/power/runtime_suspended_time -VALUE : 0
File : /sys/class/vtconsole/vtcon1/power/autosuspend_delay_ms -VALUE : cat: /sys/class/vtconsole/vtcon1/power/autosuspend_delay_ms: Input/output error
File : /sys/class/vtconsole/vtcon1/power/runtime_enabled -VALUE : disabled
File : /sys/class/vtconsole/vtcon1/power/runtime_active_time -VALUE : 0
File : /sys/class/vtconsole/vtcon1/power/control -VALUE : auto
File : /sys/class/vtconsole/vtcon1/power/async -VALUE : disabled
File : /sys/class/vtconsole/vtcon1/power/runtime_usage -VALUE : 0
File : /sys/class/vtconsole/vtcon1/power/runtime_status -VALUE : unsupported
File : /sys/class/vtconsole/vtcon1/uevent -VALUE : 
File : /sys/class/vtconsole/vtcon1/name -VALUE : (M) frame buffer device
  1. Наконец, может быть полезно изучить возможные функции автоматического энергосбережения, такие как Xserver DPMS , которые могут автоматически активироваться при длительном бездействии.

Второе обновление:

Осмотревшись, я обнаружил, что DPMS и другие полезные настройки, связанные с энергосбережением на виртуальных терминалах, можно контролировать с помощью команды setterm . В случае, если ваши виртуальные терминалы кажется, что они спят, вы можете попытаться разбудить их (если это так), отправив им команду setterm --reset . Чтобы отправить команду со своего обычного tty7 на другой tty, вам необходимо использовать: setsid bash -c 'exec setterm --reset / dev / tty1> & 0 2> & 1 '
Единственная проблема в том, что вы должны войти в систему на tty1.

Для тестирования вы можете использовать setsid bash -c 'exec setterm --reverse on / dev / tty1> & 0 2> & 1' и пока ваш tty1 работает, если вы переключитесь на него с помощью chvt 1 , вы можете наблюдать результаты (обратное переключение цветов в терминале - проверено и работает в Debian).

Кроме того, setterm дает вам возможность включить / отключить энергосбережение с помощью setterm --powersave off и многих других (см. man setterm )

2
06.10.2017, 19:27
2 ответа

Насколько я понимаю, ваши файлы примеров не содержат совпадений того типа, который вы описываете.

Если мы изменим первый файл на

CHROM  POS ID   
chr7    78599583    rs987435
chr15   33395779    rs345783
chr1    189807684   rs955894
chr20   33907909    rs6088791
chrx    1234567     rsMadeUp
chr12   75664046    rs11180435
chr1    218890658   rs17571465
chr4    127630276   rs17011450
chr6    90919465    rs6919430

так, чтобы выдуманная запись попала в диапазон

genename    name    chrom   strand  txstart txend
CDK1    NM_001786   chr10   +   62208217    62224616
CALB2   NM_001740   chr16   +   69950116    69981843
STK38   NM_007271   chr6    -   36569637    36623271
YWHAE   NM_006761   chr17   -   1194583 1250306
SYT1    NM_005639   chr12   +   77782579    78369919
ARHGAP22    NM_001347736    chr10   -   49452323    49534316
PRMT2   NM_001535   chr21   +   46879934    46909464
CELSR3  NM_001407   chr3    -   48648899    48675352

, то

awk '
    NR == FNR && FNR > 1 {snp[$2]=$3; next} 
    FNR > 1 {
      for (p in snp) {if (p>=$5 && p<=$6) print $1, snp[p], $3, p, $5, $6}
    }
  ' snpsid generef 
YWHAE rsMadeUp chr17 1234567 1194583 1250306
2
27.01.2020, 22:10

Для этого можно использовать awk:

awk 'FNR==1 {next} FILENAME=="snipsid" {k++; POS[k]=$2; ID[k]=$2;} \
        FILENAME=="gene" {i++; if(POS[i]>=$5 && POS[i]<=$6) \
        print $1, ID[i], $3, POS[i], $5, $6} \
    ' snipsid gene >out_file
0
27.01.2020, 22:10

Теги

Похожие вопросы