рд╣рд╛ рд▓реЗрдЦ рдХрд╕рд╛ рд╡рд╛рдЪрд╛рдпрдЪрд╛: рдордЬрдХреВрд░ рдЗрддрдХрд╛ рд▓рд╛рдВрдм рдЖрдгрд┐ рдЧреЛрдВрдзрд│рд▓реЗрд▓рд╛ рдЕрд╕рд▓реНрдпрд╛рдмрджреНрджрд▓ рдореА рджрд┐рд▓рдЧреАрд░ рдЖрд╣реЛрдд. рддреБрдордЪрд╛ рд╡реЗрд│ рд╡рд╛рдЪрд╡рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рдкреНрд░рддреНрдпреЗрдХ рдЕрдзреНрдпрд╛рдпрд╛рдЪреА рд╕реБрд░реБрд╡рд╛рдд тАЬрдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛтАЭ рдкреНрд░рд╕реНрддрд╛рд╡рдиреЗрдиреЗ рдХрд░рддреЛ, рдЬреЗ рдПрдХ рдХрд┐рдВрд╡рд╛ рджреЛрди рд╡рд╛рдХреНрдпрд╛рдВрдордзреНрдпреЗ рдЕрдзреНрдпрд╛рдпрд╛рдЪреЗ рд╕рд╛рд░ рд╕рд╛рд░рд╛рдВрд╢рд┐рдд рдХрд░рддреЗ.
"рдлрдХреНрдд рдорд▓рд╛ рдЙрдкрд╛рдп рджрд╛рдЦрд╡рд╛!" рдореА рдХреЛрдареВрди рдЖрд▓реЛ рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдлрдХреНрдд рдкрд╣рд╛рдпрдЪреЗ рдЕрд╕реЗрд▓, рддрд░ тАЬрдЕрдзрд┐рдХ рдХрд▓реНрдкрдХ рдмрдирдгреЗтАЭ рдпрд╛ рдзрдбреНрдпрд╛рдХрдбреЗ рдЬрд╛, рдкрд░рдВрддреБ рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдЕрдкрдпрд╢рд╛рдмрджреНрджрд▓ рд╡рд╛рдЪрдгреЗ рдЕрдзрд┐рдХ рдордиреЛрд░рдВрдЬрдХ рдЖрдгрд┐ рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ.
рдорд▓рд╛ рдЕрд▓реАрдХрдбреЗрдЪ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдХрдЪреНрдЪреНрдпрд╛ DNA рдЕрдиреБрдХреНрд░рдорд╛рдВрд╡рд░ (рддрд╛рдВрддреНрд░рд┐рдХрджреГрд╖реНрдЯреНрдпрд╛ рдПрдХ SNP рдЪрд┐рдк) рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреЗ рдХрд╛рдо рджреЗрдгреНрдпрд╛рдд рдЖрд▓реЗ рд╣реЛрддреЗ. рддреНрдпрд╛рдирдВрддрд░рдЪреНрдпрд╛ рдореЙрдбреЗрд▓рд┐рдВрдЧ рдЖрдгрд┐ рдЗрддрд░ рдХрд╛рдорд╛рдВрд╕рд╛рдареА рджрд┐рд▓реЗрд▓реНрдпрд╛ рдЕрдиреБрд╡рд╛рдВрд╢рд┐рдХ рд╕реНрдерд╛рдирд╛рдмрджреНрджрд▓ (рдЬреНрдпрд╛рд▓рд╛ SNP рдореНрд╣рдгрддрд╛рдд) рддреНрд╡рд░реАрдд рдбреЗрдЯрд╛ рдорд┐рд│рд╡рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рд╣реЛрддреА. R рдЖрдгрд┐ AWK рд╡рд╛рдкрд░реВрди, рдореА рдХреНрд╡реЗрд░реА рдкреНрд░рдХреНрд░рд┐рдпреЗрд▓рд╛ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдЧрддреА рджреЗрдКрди, рдиреИрд╕рд░реНрдЧрд┐рдХ рдкрджреНрдзрддреАрдиреЗ рдбреЗрдЯрд╛ рд╕рд╛рдл рдЖрдгрд┐ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдгреНрдпрд╛рдд рд╕рдХреНрд╖рдо рд╣реЛрддреЛ. рд╣реЗ рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА рд╕реЛрдкреЗ рдирд╡реНрд╣рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддреА рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреНрдпрд╛. рд╣рд╛ рд▓реЗрдЦ рддреБрдореНрд╣рд╛рд▓рд╛ рдорд╛рдЭреНрдпрд╛ рдХрд╛рд╣реА рдЪреБрдХрд╛ рдЯрд╛рд│рдгреНрдпрд╛рдд рдорджрдд рдХрд░реЗрд▓ рдЖрдгрд┐ рдореА рдХрд╛рдп рдХреЗрд▓реЗ рддреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рджрд╛рдЦрд╡реЗрд▓.
рдкреНрд░рдердо, рдХрд╛рд╣реА рдкреНрд░рд╛рд╕реНрддрд╛рд╡рд┐рдХ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг.
рдбреЗрдЯрд╛
рдЖрдордЪреНрдпрд╛ рд╡рд┐рджреНрдпрд╛рдкреАрдард╛рдЪреНрдпрд╛ рдЕрдиреБрд╡рд╛рдВрд╢рд┐рдХ рдорд╛рд╣рд┐рддреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗрдВрджреНрд░рд╛рдиреЗ рдЖрдореНрд╣рд╛рд▓рд╛ 25 TB TSV рд╕реНрд╡рд░реВрдкрд╛рдд рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдорд▓рд╛ рддреЗ 5 Gzip-рд╕рдВрдХреБрдЪрд┐рдд рдкреЕрдХреЗрдЬреЗрд╕рдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рдЧреЗрд▓реЗ рдЖрд╣реЗрдд, рдкреНрд░рддреНрдпреЗрдХрд╛рдордзреНрдпреЗ рд╕реБрдорд╛рд░реЗ 240 рдЪрд╛рд░-рдЧреАрдЧрд╛рдмрд╛рдЗрдЯ рдлрд╛рдпрд▓реА рдЖрд╣реЗрдд. рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддреАрдордзреНрдпреЗ рдПрдХрд╛ рд╡реНрдпрдХреНрддреАрдХрдбреВрди рдПрдХрд╛ SNP рд╕рд╛рдареА рдбреЗрдЯрд╛ рдЕрд╕рддреЛ. рдПрдХреВрдг, ~ 2,5 рджрд╢рд▓рдХреНрд╖ SNP рдЖрдгрд┐ ~ 60 рд╣рдЬрд╛рд░ рд▓реЛрдХрд╛рдВрд╡рд░реАрд▓ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓рд╛ рдЧреЗрд▓рд╛. SNP рдорд╛рд╣рд┐рддреА рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдлрд╛рдпрд▓реАрдВрдордзреНрдпреЗ рдЕрд╕рдВрдЦреНрдп рд╕реНрддрдВрдн рдЖрд╣реЗрдд рдЬреНрдпрд╛рдордзреНрдпреЗ рд╡рд┐рд╡рд┐рдз рд╡реИрд╢рд┐рд╖реНрдЯреНрдпреЗ рдкреНрд░рддрд┐рдмрд┐рдВрдмрд┐рдд рд╣реЛрддрд╛рдд, рдЬрд╕реЗ рдХреА рд╡рд╛рдЪрдгреНрдпрд╛рдЪреА рддреАрд╡реНрд░рддрд╛, рднрд┐рдиреНрди рдПрд▓реАрд▓рдЪреА рд╡рд╛рд░рдВрд╡рд╛рд░рддрд╛ рдЗ. рдПрдХреВрдг, рдЕрджреНрд╡рд┐рддреАрдп рдореВрд▓реНрдпрд╛рдВрд╕рд╣ рд╕реБрдорд╛рд░реЗ 30 рд╕реНрддрдВрдн рд╣реЛрддреЗ.
рдЧреЛрд▓
рдХреЛрдгрддреНрдпрд╛рд╣реА рдбреЗрдЯрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рдкреНрд░рдХрд▓реНрдкрд╛рдкреНрд░рдорд╛рдгреЗ, рдбреЗрдЯрд╛ рдХрд╕рд╛ рд╡рд╛рдкрд░рд▓рд╛ рдЬрд╛рдИрд▓ рд╣реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдгреЗ рд╣реА рд╕рд░реНрд╡рд╛рдд рдорд╣рддреНрддреНрд╡рд╛рдЪреА рдЧреЛрд╖реНрдЯ рд╣реЛрддреА. рдпрд╛ рдкреНрд░рдХрд░рдгрд╛рдд рдЖрдореНрд╣реА SNP рд╡рд░ рдЖрдзрд╛рд░рд┐рдд SNP рд╕рд╛рдареА рдореЙрдбреЗрд▓реНрд╕ рдЖрдгрд┐ рд╡рд░реНрдХрдлреНрд▓реЛ рдореБрдЦреНрдпрддрдГ рдирд┐рд╡рдбреВ. рдореНрд╣рдгрдЬреЗрдЪ, рдЖрдореНрд╣рд╛рд▓рд╛ рдПрдХрд╛ рд╡реЗрд│реА рдлрдХреНрдд рдПрдХрд╛ SNP рд╡рд░ рдбреЗрдЯрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реЗрд▓. рдорд▓рд╛ 2,5 рджрд╢рд▓рдХреНрд╖ SNP рдкреИрдХреА рдПрдХрд╛рд╢реА рд╕рдВрдмрдВрдзрд┐рдд рд╕рд░реНрд╡ рд░реЗрдХреЙрд░реНрдб рд╢рдХреНрдп рддрд┐рддрдХреНрдпрд╛ рд╕рд╣рдЬ, рдЬрд▓рдж рдЖрдгрд┐ рд╕реНрд╡рд╕реНрддрд╛рдд рдХрд╕реЗ рдорд┐рд│рд╡рд╛рдпрдЪреЗ рд╣реЗ рд╢рд┐рдХрд╛рдпрдЪреЗ рд╣реЛрддреЗ.
рд╣реЗ рдХрд╕реЗ рдХрд░реВ рдирдпреЗ
рдПрдХ рдпреЛрдЧреНрдп рдХреНрд▓рд┐рдЪ рдЙрджреНрдзреГрдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА:
рдореА рд╣рдЬрд╛рд░ рд╡реЗрд│рд╛ рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реЛ рдирд╛рд╣реА, рдХреНрд╡реЗрд░реА-рдлреНрд░реЗрдВрдбрд▓реА рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рдбреЗрдЯрд╛рдЪрд╛ рд╕рдореВрд╣ рдкрд╛рд░реНрд╕ рдХрд░рдгреЗ рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА рдореА рдлрдХреНрдд рд╣рдЬрд╛рд░ рдорд╛рд░реНрдЧ рд╢реЛрдзрд▓реЗ рдЖрд╣реЗрдд.
рдкреНрд░рдердо рдкреНрд░рдпрддреНрди
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рдПрдХрд╛ рд╡реЗрд│реА 25 TB рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рд╕реНрд╡рд╕реНрдд рдорд╛рд░реНрдЧ рдирд╛рд╣реА.
рд╡реНрд╣рдБрдбрд░рдмрд┐рд▓реНрдЯ рд╡рд┐рджреНрдпрд╛рдкреАрдард╛рдд тАЬрдЕтАНреЕрдбрд╡реНрд╣рд╛рдиреНрд╕реНрдб рдореЗрдердбреНрд╕ рдлреЙрд░ рдмрд┐рдЧ рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧтАЭ рд╣рд╛ рдХреЛрд░реНрд╕ рдШреЗрддрд▓реНрдпрд╛рд╡рд░, рдорд▓рд╛ рдЦрд╛рддреНрд░реА рд╣реЛрддреА рдХреА рдпреБрдХреНрддреА рдмреЕрдЧрдордзреНрдпреЗ рд╣реЛрддреА. рд╕рд░реНрд╡ рдбреЗрдЯрд╛рд╡рд░ рдЪрд╛рд▓рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рдирд┐рдХрд╛рд▓рд╛рдЪрд╛ рдЕрд╣рд╡рд╛рд▓ рджреЗрдгреНрдпрд╛рд╕рд╛рдареА Hive рд╕рд░реНрд╡реНрд╣рд░ рд╕реЗрдЯ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдХрджрд╛рдЪрд┐рдд рдПрдХ рдХрд┐рдВрд╡рд╛ рджреЛрди рддрд╛рд╕ рд▓рд╛рдЧрддреАрд▓. рдЖрдордЪрд╛ рдбреЗрдЯрд╛ AWS S3 рдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдореА рд╕реЗрд╡рд╛ рд╡рд╛рдкрд░рд▓реА
рдореА рдЕрдереЗрдирд╛рд▓рд╛ рдорд╛рдЭрд╛ рдбреЗрдЯрд╛ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ рд╕реНрд╡рд░реВрдк рджрд░реНрд╢рд╡рд┐рд▓реНрдпрд╛рдирдВрддрд░, рдореА рдпрд╛рд╕рд╛рд░рдЦреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрд╕рд╣ рдХрд╛рд╣реА рдЪрд╛рдЪрдгреНрдпрд╛ рдХреЗрд▓реНрдпрд╛:
select * from intensityData limit 10;
рдЖрдгрд┐ рддреНрд╡рд░реАрдд рд╕реБ-рд╕рдВрд░рдЪрд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдЭрд╛рд▓реЗ. рддрдпрд╛рд░.
рдЖрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рдХрд╛рдорд╛рдд рдбреЗрдЯрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реЗрдкрд░реНрдпрдВрдд...
рдореЙрдбреЗрд▓рдЪреА рдЪрд╛рдЪрдгреА рдШреЗрдгреНрдпрд╛рд╕рд╛рдареА рдорд▓рд╛ рд╕рд░реНрд╡ SNP рдорд╛рд╣рд┐рддреА рдХрд╛рдврдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ рд╣реЛрддреЗ. рдореА рдХреНрд╡реЗрд░реА рдЪрд╛рд▓рд╡рд▓реА:
select * from intensityData
where snp = 'rs123456';
...рдЖрдгрд┐ рд╡рд╛рдЯ рдкрд╛рд╣реВ рд▓рд╛рдЧрд▓реА. рдЖрда рдорд┐рдирд┐рдЯрд╛рдВрдирдВрддрд░ рдЖрдгрд┐ 4 TB рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╡рд┐рдирдВрддреА рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдирдВрддрд░, рдорд▓рд╛ рдирд┐рдХрд╛рд▓ рдорд┐рд│рд╛рд▓рд╛. рд╕рд╛рдкрдбрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪреНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдиреБрд╕рд╛рд░ рдЕрдереЗрдирд╛ рд╢реБрд▓реНрдХ рдЖрдХрд╛рд░рддреЗ, рдкреНрд░рддрд┐ рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ $5. рддреНрдпрд╛рдореБрд│реЗ рдпрд╛ рдПрдХрд╛рдЪ рд╡рд┐рдирдВрддреАрд╕рд╛рдареА $20 рдЖрдгрд┐ рдЖрда рдорд┐рдирд┐рдЯреЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧреЗрд▓. рд╕рд░реНрд╡ рдбреЗрдЯрд╛рд╡рд░ рдореЙрдбреЗрд▓ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрдореНрд╣рд╛рд▓рд╛ 38 рд╡рд░реНрд╖реЗ рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░рд╛рд╡реА рд▓рд╛рдЧрд▓реА рдЖрдгрд┐ $50 рджрд╢рд▓рдХреНрд╖ рднрд░рд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рдЕрд░реНрдерд╛рдд, рд╣реЗ рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдпреЛрдЧреНрдп рдирд╡реНрд╣рддреЗ.
рдкрд░реНрдХреЗрдЯ рд╡рд╛рдкрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ...
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рддреБрдордЪреНрдпрд╛ Parquet рдлрд╛рдЗрд▓реНрд╕рдЪрд╛ рдЖрдХрд╛рд░ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрд╕реНрдереЗрдЪреА рдХрд╛рд│рдЬреА рдШреНрдпрд╛.
рдореА рдкреНрд░рдердо рд╕рд░реНрд╡ TSV рдЪреЗ рд░реБрдкрд╛рдВрддрд░ рдХрд░реВрди рдкрд░рд┐рд╕реНрдерд┐рддреА рдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛
рдореА рдПрдХ рд╕рд╛рдзреЗ рдХрд╛рд░реНрдп рдХреЗрд▓реЗ
рд╡рд┐рд╢реЗрд╖ рдореНрд╣рдгрдЬреЗ, Parquet рдЪреЗ рдбреАрдлреЙрд▓реНрдЯ (рдЖрдгрд┐ рд╢рд┐рдлрд╛рд░рд╕ рдХреЗрд▓реЗрд▓реЗ) рдХреЙрдореНрдкреНрд░реЗрд╢рди рдкреНрд░рдХрд╛рд░, рд╕реНрдиреЕрдкреА, рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдгреНрдпрд╛рдпреЛрдЧреНрдп рдирд╛рд╣реА. рддреНрдпрд╛рдореБрд│реЗ, рдкреНрд░рддреНрдпреЗрдХ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯрд░ рдкреВрд░реНрдг 3,5 GB рдбреЗрдЯрд╛рд╕реЗрдЯ рдЕрдирдкреЕрдХрд┐рдВрдЧ рдЖрдгрд┐ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рдорд╛рд╡рд░ рдЕрдбрдХрд▓рд╛ рд╣реЛрддрд╛.
рдЪрд▓рд╛ рд╕рдорд╕реНрдпрд╛ рд╕рдордЬреВрди рдШреЗрдКрдпрд╛
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреЗ рдХрдареАрдг рдЖрд╣реЗ, рд╡рд┐рд╢реЗрд╖рддрдГ рдЬрд░ рдбреЗрдЯрд╛ рд╡рд┐рддрд░рд┐рдд рдХреЗрд▓рд╛ рдЕрд╕реЗрд▓.
рдорд▓рд╛ рдЕрд╕реЗ рд╡рд╛рдЯрд▓реЗ рдХреА рдЖрддрд╛ рдорд▓рд╛ рд╕рдорд╕реНрдпреЗрдЪреЗ рд╕рд╛рд░ рд╕рдордЬрд▓реЗ рдЖрд╣реЗ. рдорд▓рд╛ рдлрдХреНрдд SNP рд╕реНрддрдВрднрд╛рдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд╛рдпрдЪрд╛ рд╣реЛрддрд╛, рд▓реЛрдХрд╛рдВрдиреБрд╕рд╛рд░ рдирд╛рд╣реА. рдирдВрддрд░ рдЕрдиреЗрдХ SNPs рд╡реЗрдЧрд│реНрдпрд╛ рдбреЗрдЯрд╛ рдЪрдВрдХрдордзреНрдпреЗ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХреЗрд▓реЗ рдЬрд╛рддреАрд▓ рдЖрдгрд┐ рдирдВрддрд░ Parquet рдЪреЗ тАЬрд╕реНрдорд╛рд░реНрдЯтАЭ рдлрдВрдХреНрд╢рди тАЬрдореВрд▓реНрдп рд╢реНрд░реЗрдгреАрдд рдЕрд╕реЗрд▓ рддрд░рдЪ рдЙрдШрдбреЗрд▓тАЭ рд╕рд░реНрд╡ рд╡реИрднрд╡рд╛рдд рд╕реНрд╡рддрдГрд▓рд╛ рджрд░реНрд╢рд╡реЗрд▓. рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рдХреНрд▓рд╕реНрдЯрд░рдордзреНрдпреЗ рд╡рд┐рдЦреБрд░рд▓реЗрд▓реНрдпрд╛ рдЕрдмреНрдЬрд╛рд╡рдзреА рдкрдВрдХреНрддреАрдВрдордзреНрдпреЗ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреЗ рд╣реЗ рдПрдХ рдХрдареАрдг рдХрд╛рдо рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рд╕рд┐рджреНрдз рдЭрд╛рд▓реЗ.
рдореА рдХреЙрд▓реЗрдЬрдордзреНрдпреЗ рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреЗ рд╡рд░реНрдЧ рдШреЗрдд рдЖрд╣реЗ: тАЬрдЕрд░реЗ, рдпрд╛ рд╕рд░реНрд╡ рд╡рд░реНрдЧреАрдХрд░рдг рдЕрд▓реНрдЧреЛрд░рд┐рджрдордЪреНрдпрд╛ рд╕рдВрдЧрдгрдХреАрдп рдЬрдЯрд┐рд▓рддреЗрдЪреА рдХреЛрдгреАрд╣реА рдХрд╛рд│рдЬреА рдШреЗрдд рдирд╛рд╣реАтАЭ
рдореА 20TB рдордзреНрдпреЗ рд╕реНрддрдВрднрд╛рд╡рд░ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдд рдЖрд╣реЗ
#рд╕реНрдкрд╛рд░реНрдХ рдЯреЗрдмрд▓: "рдпрд╛рд▓рд╛ рдЗрддрдХрд╛ рд╡реЗрд│ рдХрд╛ рд▓рд╛рдЧрддреЛрдп?"# рдбреЗрдЯрд╛рд╕рд╛рдпрдиреНрд╕ рд╕рдВрдШрд░реНрд╖.тАФ рдирд┐рдХ рд╕реНрдЯреНрд░рд╛рдпрд░ (@ рдирд┐рдХреЛрд▓рд╕ рд╕реНрдЯреНрд░реЗрдпрд░)
рдорд╛рд░реНрдЪ 11, 2019
"рдореА рдПрдХ рд╡рд┐рдЪрд▓рд┐рдд рд╡рд┐рджреНрдпрд╛рд░реНрдереА рдЖрд╣реЗ" рдпрд╛ рдХрд╛рд░рдгрд╛рдореБрд│реЗ AWS рдирд┐рд╢реНрдЪрд┐рддрдкрдгреЗ рдкрд░рддрд╛рд╡рд╛ рдЬрд╛рд░реА рдХрд░реВ рдЗрдЪреНрдЫрд┐рдд рдирд╛рд╣реА. рдореА Amazon Glue рд╡рд░ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд▓реНрдпрд╛рдирдВрддрд░, рддреЗ 2 рджрд┐рд╡рд╕ рдЪрд╛рд▓рд▓реЗ рдЖрдгрд┐ рдХреНрд░реЕрд╢ рдЭрд╛рд▓реЗ.
рд╡рд┐рднрд╛рдЬрдирд╛рдЪреЗ рдХрд╛рдп?
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рд╕реНрдкрд╛рд░реНрдХрдордзреАрд▓ рд╡рд┐рднрд╛рдЬрдиреЗ рд╕рдВрддреБрд▓рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.
рдордЧ рдорд▓рд╛ рдЧреБрдгрд╕реВрддреНрд░рд╛рдВрдордзреНрдпреЗ рдбреЗрдЯрд╛рдЪреЗ рд╡рд┐рднрд╛рдЬрди рдХрд░рдгреНрдпрд╛рдЪреА рдХрд▓реНрдкрдирд╛ рд╕реБрдЪрд▓реА. рддреНрдпрд╛рдкреИрдХреА 23 рдЖрд╣реЗрдд (рдЖрдгрд┐ рдЬрд░ рддреБрдореНрд╣реА рдорд╛рдпрдЯреЛрдХреЙрдиреНрдбреНрд░рд┐рдпрд▓ рдбреАрдПрдирдП рдЖрдгрд┐ рдореЕрдк рди рдХреЗрд▓реЗрд▓реЗ рдХреНрд╖реЗрддреНрд░ рд╡рд┐рдЪрд╛рд░рд╛рдд рдШреЗрддрд▓реЗ рддрд░ рдмрд░реЗрдЪ рдХрд╛рд╣реА).
рд╣реЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдбреЗрдЯрд╛ рд▓рд╣рд╛рди рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрдИрд▓. рддреБрдореНрд╣реА рдЧреНрд▓реВ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреАрд▓ рд╕реНрдкрд╛рд░реНрдХ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рдлрдВрдХреНрд╢рдирдордзреНрдпреЗ рдлрдХреНрдд рдПрдХ рдУрд│ рдЬреЛрдбрд▓реНрдпрд╛рд╕ partition_by = "chr"
, рдирдВрддрд░ рдбреЗрдЯрд╛ рдмрд╛рджрд▓реНрдпрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓рд╛ рдЧреЗрд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ.
рдЬреАрдиреЛрдордордзреНрдпреЗ рдХреНрд░реЛрдореЛрд╕реЛрдо рдирд╛рд╡рд╛рдЪреНрдпрд╛ рдЕрд╕рдВрдЦреНрдп рддреБрдХрдбреНрдпрд╛рдВрдЪрд╛ рд╕рдорд╛рд╡реЗрд╢ рдЕрд╕рддреЛ.
рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рддреЗ рдХрд╛рд░реНрдп рдХреЗрд▓реЗ рдирд╛рд╣реА. рдХреНрд░реЛрдореЛрд╕реЛрдордЪреЗ рдЖрдХрд╛рд░ рд╡реЗрдЧрд╡реЗрдЧрд│реЗ рдЕрд╕рддрд╛рдд, рдпрд╛рдЪрд╛ рдЕрд░реНрде рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдорд╛рд╣рд┐рддреА рдЕрд╕рддреЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдЕрд╕рд╛ рдХреА рд╕реНрдкрд╛рд░реНрдХрдиреЗ рдХрд╛рдордЧрд╛рд░рд╛рдВрдирд╛ рдкрд╛рдард╡рд▓реЗрд▓реЗ рдХрд╛рд░реНрдп рд╕рдВрддреБрд▓рд┐рдд рдирд╡реНрд╣рддреЗ рдЖрдгрд┐ рд╣рд│реВрд╣рд│реВ рдкреВрд░реНрдг рдЭрд╛рд▓реЗ рдХрд╛рд░рдг рдХрд╛рд╣реА рдиреЛрдбреНрд╕ рд▓рд╡рдХрд░ рдкреВрд░реНрдг рдЭрд╛рд▓реЗ рдЖрдгрд┐ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реЛрддреЗ. рдорд╛рддреНрд░, рдХрд╛рдореЗ рдкреВрд░реНрдг рдЭрд╛рд▓реА. рдкрд░рдВрддреБ рдПрдХ рдПрд╕рдПрдирдкреА рд╡рд┐рдЪрд╛рд░рддрд╛рдирд╛, рдЕрд╕рдВрддреБрд▓рдирд╛рдореБрд│реЗ рдкреБрдиреНрд╣рд╛ рд╕рдорд╕реНрдпрд╛ рдирд┐рд░реНрдорд╛рдг рдЭрд╛рд▓реА. рдореЛрдареНрдпрд╛ рдЧреБрдгрд╕реВрддреНрд░рд╛рдВрд╡рд░ (рдореНрд╣рдгрдЬреЗ рдЬрд┐рдереЗ рдЖрдореНрд╣рд╛рд▓рд╛ рдбреЗрдЯрд╛ рдорд┐рд│рд╡рд╛рдпрдЪрд╛ рдЖрд╣реЗ) SNPs рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рдЪреА рдХрд┐рдВрдордд рдлрдХреНрдд 10 рдЪреНрдпрд╛ рдШрдЯрдХрд╛рдВрдиреА рдХрдореА рдЭрд╛рд▓реА рдЖрд╣реЗ. рднрд░рдкреВрд░, рдкрдг рдкреБрд░реЗрд╕реЗ рдирд╛рд╣реА.
рдЬрд░ рдЖрдкрдг рддреЗ рдЖрдгрдЦреА рд▓рд╣рд╛рди рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рддрд░?
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рдХрдзреАрд╣реА 2,5 рджрд╢рд▓рдХреНрд╖ рд╡рд┐рднрд╛рдЬрдиреЗ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ рдирдХрд╛.
рдореА рд╕рд░реНрд╡ рдмрд╛рд╣реЗрд░ рдЬрд╛рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдПрд╕рдПрдирдкреАрдЪреЗ рд╡рд┐рднрд╛рдЬрди рдХреЗрд▓реЗ. рдпрд╛рдореБрд│реЗ рд╡рд┐рднрд╛рдЬрдиреЗ рд╕рдорд╛рди рдЖрдХрд╛рд░рд╛рдЪреА рдЕрд╕рд▓реНрдпрд╛рдЪреА рдЦрд╛рддреНрд░реА рдЭрд╛рд▓реА. рд╣реА рдПрдХ рд╡рд╛рдИрдЯ рдХрд▓реНрдкрдирд╛ рд╣реЛрддреА. рдореА рдЧреЛрдВрдж рд╡рд╛рдкрд░рд▓рд╛ рдЖрдгрд┐ рдПрдХ рдирд┐рд░реНрджреЛрд╖ рдУрд│ рдЬреЛрдбрд▓реА partition_by = 'snp'
. рдХрд╛рд░реНрдп рд╕реБрд░реВ рдХреЗрд▓реЗ рдЖрдгрд┐ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рд╣реЛрдК рд▓рд╛рдЧрд▓реЗ. рдПрдХрд╛ рджрд┐рд╡рд╕рд╛рдирдВрддрд░ рдореА рддрдкрд╛рд╕рд▓реЗ рдЖрдгрд┐ рдкрд╛рд╣рд┐рд▓реЗ рдХреА S3 рд╡рд░ рдЕрджреНрдпрд╛рдк рдХрд╛рд╣реАрд╣реА рд▓рд┐рд╣рд┐рд▓реЗрд▓реЗ рдирд╛рд╣реА, рдореНрд╣рдгреВрди рдореА рдЯрд╛рд╕реНрдХ рдорд╛рд░рд▓рд╛. рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА Glue S3 рдордзреАрд▓ рд▓рдкрд▓реЗрд▓реНрдпрд╛ рдард┐рдХрд╛рдгреА рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдлрд╛рдЗрд▓реНрд╕ рд▓рд┐рд╣рд┐рдд рд╣реЛрддрд╛, рдЕрдиреЗрдХ рдлрд╛рдЗрд▓реНрд╕, рдХрджрд╛рдЪрд┐рдд рдХрд╛рд╣реА рджрд╢рд▓рдХреНрд╖. рдкрд░рд┐рдгрд╛рдореА, рдорд╛рдЭреНрдпрд╛ рдЪреБрдХреАрдЪреА рдХрд┐рдВрдордд рдПрдХ рд╣рдЬрд╛рд░ рдбреЙрд▓рд░реНрд╕рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЖрд╣реЗ рдЖрдгрд┐ рдорд╛рдЭреНрдпрд╛ рдЧреБрд░реВрд▓рд╛ рд╕рдВрддреБрд╖реНрдЯ рдХреЗрд▓реЗ рдирд╛рд╣реА.
рд╡рд┐рднрд╛рдЬрди + рд╡рд░реНрдЧреАрдХрд░рдг
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рдЯреНрдпреВрдирд┐рдВрдЧ рд╕реНрдкрд╛рд░реНрдХрдкреНрд░рдорд╛рдгреЗ рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреЗ рдЕрдЬреВрдирд╣реА рдЕрд╡рдШрдб рдЖрд╣реЗ.
рд╡рд┐рднрд╛рдЬрди рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдорд╛рдЭреНрдпрд╛ рд╢реЗрд╡рдЯрдЪреНрдпрд╛ рдкреНрд░рдпрддреНрдирд╛рдд рдореА рдЧреБрдгрд╕реВрддреНрд░рд╛рдВрдЪреЗ рд╡рд┐рднрд╛рдЬрди рдХреЗрд▓реЗ рдЖрдгрд┐ рдирдВрддрд░ рдкреНрд░рддреНрдпреЗрдХ рд╡рд┐рднрд╛рдЬрдирд╛рдЪреА рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд▓реА. рд╕рд┐рджреНрдзрд╛рдВрддрд╛рдиреБрд╕рд╛рд░, рд╣реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реАрд▓рд╛ рдЧрддреА рджреЗрдИрд▓ рдХрд╛рд░рдг рдЗрдЪреНрдЫрд┐рдд SNP рдбреЗрдЯрд╛ рджрд┐рд▓реЗрд▓реНрдпрд╛ рд╢реНрд░реЗрдгреАрдордзреНрдпреЗ рдХрд╛рд╣реА Parquet рднрд╛рдЧрд╛рдВрдордзреНрдпреЗ рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рджреБрд░реНрджреИрд╡рд╛рдиреЗ, рдЕрдЧрджреА рд╡рд┐рднрд╛рдЬрди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рдЪреА рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рдгреЗ рд╣реЗ рдПрдХ рдХрдареАрдг рдХрд╛рдо рдард░рд▓реЗ. рдкрд░рд┐рдгрд╛рдореА, рдореА рдХрд╕реНрдЯрдо рдХреНрд▓рд╕реНрдЯрд░рд╕рд╛рдареА EMR рд╡рд░ рд╕реНрд╡рд┐рдЪ рдХреЗрд▓реЗ рдЖрдгрд┐ рдЕрдзрд┐рдХ рд▓рд╡рдЪрд┐рдХ рд╡рд░реНрдХрдлреНрд▓реЛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрда рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЙрджрд╛рд╣рд░рдгреЗ (C5.4xl) рдЖрдгрд┐ Sparklyr рд╡рд╛рдкрд░рд▓реЗ...
# Sparklyr snippet to partition by chr and sort w/in partition
# Join the raw data with the snp bins
raw_data
group_by(chr) %>%
arrange(Position) %>%
Spark_write_Parquet(
path = DUMP_LOC,
mode = 'overwrite',
partition_by = c('chr')
)
рддрдерд╛рдкрд┐, рдЕрджреНрдпрд╛рдк рдХрд╛рд░реНрдп рдкреВрд░реНрдг рдЭрд╛рд▓реЗ рдирд╛рд╣реА. рдореА рддреЗ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░рдХрд╛рд░реЗ рдХреЙрдиреНрдлрд┐рдЧрд░ рдХреЗрд▓реЗ: рдкреНрд░рддреНрдпреЗрдХ рдХреНрд╡реЗрд░реА рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯрд░рд╕рд╛рдареА рдореЗрдорд░реА рд╡рд╛рдЯрдк рд╡рд╛рдврд╡рд▓реЗ, рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдореЗрдорд░реА рдЕрд╕рд▓реЗрд▓реЗ рдиреЛрдбреНрд╕ рд╡рд╛рдкрд░рд▓реЗ, рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕ (рдмреНрд░реЙрдбрдХрд╛рд╕реНрдЯрд┐рдВрдЧ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓реНрд╕) рд╡рд╛рдкрд░рд▓реЗ, рдкрд░рдВрддреБ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рд╣реЗ рдЕрд░реНрдз-рдЙрдкрд╛рдп рдЭрд╛рд▓реЗ рдЖрдгрд┐ рд╣рд│реВрд╣рд│реВ рдПрдХреНрдЭрд┐рдХреНрдпреБрдЯрд░ рд╕реБрд░реВ рдЭрд╛рд▓реЗ. рд╕рд░реНрд╡рдХрд╛рд╣реА рдерд╛рдВрдмреЗрдкрд░реНрдпрдВрдд рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрдгреЗ.
рдЕрджреНрдпрддрди: рдореНрд╣рдгреВрди рддреЗ рд╕реБрд░реВ рд╣реЛрддреЗ.
pic.twitter.com/agY4GU2ru5 тАФ рдирд┐рдХ рд╕реНрдЯреНрд░рд╛рдпрд░ (@ рдирд┐рдХреЛрд▓рд╕ рд╕реНрдЯреНрд░реЗрдпрд░)
15 рд╢рдХрддреЗ, 2019
рдореА рдЕрдзрд┐рдХ рд╕рд░реНрдЬрдирд╢реАрд▓ рд╣реЛрдд рдЖрд╣реЗ
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рдХрд╛рд╣реАрд╡реЗрд│рд╛ рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛рд╕рд╛рдареА рд╡рд┐рд╢реЗрд╖ рдЙрдкрд╛рдпрд╛рдВрдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ.
рдкреНрд░рддреНрдпреЗрдХ SNP рдЪреЗ рд╕реНрдерд╛рди рдореВрд▓реНрдп рдЕрд╕рддреЗ. рд╣реА рд╕рдВрдЦреНрдпрд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдЧреБрдгрд╕реВрддреНрд░рд╛рдЪреНрдпрд╛ рдмрд╛рдЬреВрдиреЗ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкрд╛рдпрд╛рдЪреНрдпрд╛ рд╕рдВрдЦреНрдпреЗрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдЖрд╣реЗ. рдЖрдордЪрд╛ рдбреЗрдЯрд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рд╣рд╛ рдПрдХ рдЫрд╛рди рдЖрдгрд┐ рдиреИрд╕рд░реНрдЧрд┐рдХ рдорд╛рд░реНрдЧ рдЖрд╣реЗ. рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдорд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдЧреБрдгрд╕реВрддреНрд░рд╛рдЪреНрдпрд╛ рдкреНрд░рджреЗрд╢рд╛рдиреБрд╕рд╛рд░ рд╡рд┐рднрд╛рдЬрди рдХрд░рд╛рдпрдЪреЗ рд╣реЛрддреЗ. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдкреЛрдЭрд┐рд╢рдиреНрд╕ 1 - 2000, 2001 - 4000, рдЗ. рдкрд░рдВрддреБ рд╕рдорд╕реНрдпрд╛ рдЕрд╢реА рдЖрд╣реЗ рдХреА SNPs рд╕рд░реНрд╡ рдЧреБрдгрд╕реВрддреНрд░рд╛рдВрдордзреНрдпреЗ рд╕рдорд╛рди рд░реАрддреАрдиреЗ рд╡рд┐рддрд░реАрдд рдХреЗрд▓реЗ рдЬрд╛рдд рдирд╛рд╣реАрдд, рдореНрд╣рдгреВрди рдЧрдЯрд╛рдЪреЗ рдЖрдХрд╛рд░ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рдмрджрд▓рддреАрд▓.
рдкрд░рд┐рдгрд╛рдореА, рдореА рд╢реНрд░реЗрдгреАрдВрдордзреНрдпреЗ (рд░рдБрдХ) рдкрджрд╛рдВрдЪреЗ рд╡рд┐рднрд╛рдЬрди рдХреЗрд▓реЗ. рдЖрдзреАрдЪ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рд╡рд╛рдкрд░реВрди, рдореА рдЕрджреНрд╡рд┐рддреАрдп SNPs, рддреНрдпрд╛рдВрдЪреА рд╕реНрдерд┐рддреА рдЖрдгрд┐ рдЧреБрдгрд╕реВрддреНрд░рд╛рдВрдЪреА рдпрд╛рджреА рдорд┐рд│рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╡рд┐рдирдВрддреА рдХреЗрд▓реА. рдордЧ рдореА рдкреНрд░рддреНрдпреЗрдХ рдЧреБрдгрд╕реВрддреНрд░рд╛рддреАрд▓ рдбреЗрдЯрд╛рдЪреА рдХреНрд░рдорд╡рд╛рд░реА рд▓рд╛рд╡рд▓реА рдЖрдгрд┐ рджрд┐рд▓реЗрд▓реНрдпрд╛ рдЖрдХрд╛рд░рд╛рдЪреНрдпрд╛ рдЧрдЯрд╛рдВрдордзреНрдпреЗ (рдмрд┐рди) SNP рдЧреЛрд│рд╛ рдХреЗрд▓реЗ. рдкреНрд░рддреНрдпреЗрдХреА 1000 SNP рдореНрд╣рдгреВ. рдпрд╛рдореБрд│реЗ рдорд▓рд╛ SNP-рддреЗ-рдЧрдЯ-рдкреНрд░рддрд┐-рдЧреБрдгрд╕реВрддреНрд░ рд╕рдВрдмрдВрдз рдорд┐рд│рд╛рд▓реЗ.
рд╕рд░рддреЗрд╢реЗрд╡рдЯреА, рдореА 75 SNP рдЪреЗ рдЧрдЯ (рдмрд┐рди) рдмрдирд╡рд▓реЗ, рдХрд╛рд░рдг рдЦрд╛рд▓реА рд╕реНрдкрд╖реНрдЯ рдХреЗрд▓реЗ рдЬрд╛рдИрд▓.
snp_to_bin <- unique_snps %>%
group_by(chr) %>%
arrange(position) %>%
mutate(
rank = 1:n()
bin = floor(rank/snps_per_bin)
) %>%
ungroup()
рдкреНрд░рдердо рд╕реНрдкрд╛рд░реНрдХ рд╡рд╛рдкрд░реВрди рдкрд╣рд╛
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рд╕реНрдкрд╛рд░реНрдХ рдПрдХрддреНрд░реАрдХрд░рдг рдЬрд▓рдж рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╡рд┐рднрд╛рдЬрди рдХрд░рдгреЗ рдЕрджреНрдпрд╛рдк рдорд╣рд╛рдЧ рдЖрд╣реЗ.
рдорд▓рд╛ рд╣реА рдЫреЛрдЯреА (реи.рел рджрд╢рд▓рдХреНрд╖ рдкрдВрдХреНрддреА) рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рд╕реНрдкрд╛рд░реНрдХрдордзреНрдпреЗ рд╡рд╛рдЪрд╛рдпрдЪреА рд╣реЛрддреА, рддреА рдХрдЪреНрдЪреНрдпрд╛ рдбреЗрдЯрд╛рд╕рд╣ рдПрдХрддреНрд░ рдХрд░рд╛рдпрдЪреА рд╣реЛрддреА рдЖрдгрд┐ рдирдВрддрд░ рдирд╡реНрдпрд╛рдиреЗ рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ рд╕реНрддрдВрднрд╛рджреНрд╡рд╛рд░реЗ рддреНрдпрд╛рдЪреЗ рд╡рд┐рднрд╛рдЬрди рдХрд░рд╛рдпрдЪреЗ рд╣реЛрддреЗ. bin
.
# Join the raw data with the snp bins
data_w_bin <- raw_data %>%
left_join(sdf_broadcast(snp_to_bin), by ='snp_name') %>%
group_by(chr_bin) %>%
arrange(Position) %>%
Spark_write_Parquet(
path = DUMP_LOC,
mode = 'overwrite',
partition_by = c('chr_bin')
)
рдореА рд╡рд╛рдкрд░рд▓реЗ sdf_broadcast()
, рдореНрд╣рдгреВрди рд╕реНрдкрд╛рд░реНрдХрд▓рд╛ рдорд╛рд╣рд┐рдд рдЖрд╣реЗ рдХреА рддреНрдпрд╛рдиреЗ рд╕рд░реНрд╡ рдиреЛрдбреНрд╕рд╡рд░ рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рдкрд╛рдард╡рд▓рд╛ рдкрд╛рд╣рд┐рдЬреЗ. рдЬрд░ рдбреЗрдЯрд╛ рдЖрдХрд╛рд░рд╛рдиреЗ рд▓рд╣рд╛рди рдЕрд╕реЗрд▓ рдЖрдгрд┐ рд╕рд░реНрд╡ рдХрд╛рд░реНрдпрд╛рдВрд╕рд╛рдареА рдЖрд╡рд╢реНрдпрдХ рдЕрд╕реЗрд▓ рддрд░ рд╣реЗ рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. рдЕрдиреНрдпрдерд╛, рд╕реНрдкрд╛рд░реНрдХ рд╕реНрдорд╛рд░реНрдЯ рд╣реЛрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рддреЗ рдЖрдгрд┐ рдЖрд╡рд╢реНрдпрдХрддреЗрдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛ рд╡рд┐рддрд░рд┐рдд рдХрд░рддреЗ, рдЬреНрдпрд╛рдореБрд│реЗ рдордВрджреА рдпреЗрдК рд╢рдХрддреЗ.
рдЖрдгрд┐ рдкреБрдиреНрд╣рд╛, рдорд╛рдЭреА рдХрд▓реНрдкрдирд╛ рдХрд╛рд░реНрдп рдХрд░рдд рдирд╛рд╣реА: рдХрд╛рд░реНрдпрд╛рдВрдиреА рдХрд╛рд╣реА рдХрд╛рд│ рдХрд╛рдо рдХреЗрд▓реЗ, рдпреБрдирд┐рдпрди рдкреВрд░реНрдг рдХреЗрд▓реА рдЖрдгрд┐ рдирдВрддрд░, рд╡рд┐рднрд╛рдЬрдирд╛рджреНрд╡рд╛рд░реЗ рд▓реЙрдиреНрдЪ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдПрдХреНрдЭрд┐рдХреНрдпреВрдЯрд░рдкреНрд░рдорд╛рдгреЗ, рддреЗ рдЕрдпрд╢рд╕реНрд╡реА рд╣реЛрдК рд▓рд╛рдЧрд▓реЗ.
AWK рдЬреЛрдбрдд рдЖрд╣реЗ
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рддреБрдореНрд╣рд╛рд▓рд╛ рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА рд╢рд┐рдХрд╡рд▓реНрдпрд╛ рдЬрд╛рдд рдЕрд╕рддрд╛рдирд╛ рдЭреЛрдкреВ рдирдХрд╛. 1980 рдЪреНрдпрд╛ рджрд╢рдХрд╛рдд рдирдХреНрдХреАрдЪ рдХреЛрдгреАрддрд░реА рддреБрдордЪреА рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рд▓реА рдЖрд╣реЗ.
рдпрд╛ рдХреНрд╖рдгрд╛рдкрд░реНрдпрдВрдд, рд╕реНрдкрд╛рд░реНрдХрд╕рд╣ рдорд╛рдЭреНрдпрд╛ рд╕рд░реНрд╡ рдЕрдкрдпрд╢рд╛рдВрдЪреЗ рдХрд╛рд░рдг рдХреНрд▓рд╕реНрдЯрд░рдордзреАрд▓ рдбреЗрдЯрд╛рдЪреА рдЧреЛрдВрдзрд│ рд╣реЛрддреА. рдХрджрд╛рдЪрд┐рдд рдкреВрд░реНрд╡-рдЙрдкрдЪрд╛рд░рд╛рдиреЗ рдкрд░рд┐рд╕реНрдерд┐рддреА рд╕реБрдзрд╛рд░рд▓реА рдЬрд╛рдК рд╢рдХрддреЗ. рд╕реНрдкрд╛рд░реНрдХрд▓рд╛ тАЬрдкреВрд░реНрд╡-рд╡рд┐рднрд╛рдЬрд┐рддтАЭ рдбреЗрдЯрд╛ рдкреНрд░рджрд╛рди рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рдЖрд╢реЗрдиреЗ рдореА рдХрдЪреНрдЪрд╛ рдордЬрдХреВрд░ рдбреЗрдЯрд╛ рдЧреБрдгрд╕реВрддреНрд░рд╛рдВрдЪреНрдпрд╛ рд╕реНрддрдВрднрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛.
рд╕реНрддрдВрдн рдореВрд▓реНрдпрд╛рдВрдиреБрд╕рд╛рд░ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рдпрд╛рд╕рд╛рдареА рдореА StackOverflow рд╡рд░ рд╢реЛрдзрд▓реЗ рдЖрдгрд┐ рд╕рд╛рдкрдбрд▓реЗ stdout
.
рддреЗ рд╡рд╛рдкрд░реВрди рдкрд╛рд╣рдгреНрдпрд╛рд╕рд╛рдареА рдореА рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рд▓реА. рдкреЕрдХреЗрдЬ рдХреЗрд▓реЗрд▓реНрдпрд╛ TSV рдкреИрдХреА рдПрдХ рдбрд╛рдЙрдирд▓реЛрдб рдХреЗрд▓реЗ, рдирдВрддрд░ рддреЗ рд╡рд╛рдкрд░реВрди рдЕрдирдкреЕрдХ рдХрд░рд╛ gzip
рдЖрдгрд┐ рдХрдбреЗ рдкрд╛рдард╡рд▓реЗ awk
.
gzip -dc path/to/chunk/file.gz |
awk -F 't'
'{print $1",..."$30">"chunked/"$chr"_chr"$15".csv"}'
рд╣реЗ рдХрд╛рдо рдХреЗрд▓реЗ!
рдХреЛрд░ рднрд░рдгреЗ
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: gnu parallel
- рд╣реА рдПрдХ рдЬрд╛рджреВрдЪреА рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ, рдкреНрд░рддреНрдпреЗрдХрд╛рдиреЗ рддреА рд╡рд╛рдкрд░рд▓реА рдкрд╛рд╣рд┐рдЬреЗ.
рд╡реЗрдЧрд│реЗ рд╣реЛрдгреЗ рдЦреВрдк рд╣рд│реВ рд╣реЛрддреЗ рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рдореА рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА htop
рд╢рдХреНрддрд┐рд╢рд╛рд▓реА (рдЖрдгрд┐ рдорд╣рд╛рдЧ) EC2 рдЙрджрд╛рд╣рд░рдгрд╛рдЪрд╛ рд╡рд╛рдкрд░ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рдлрдХреНрдд рдПрдХ рдХреЛрд░ рдЖрдгрд┐ рд╕реБрдорд╛рд░реЗ 200 MB рдореЗрдорд░реА рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рдирд┐рд╖реНрдкрдиреНрди рдЭрд╛рд▓реЗ. рд╕рдорд╕реНрдпреЗрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЖрдгрд┐ рднрд░рдкреВрд░ рдкреИрд╕реЗ рдЧрдорд╛рд╡реВ рдирдпреЗрдд, рдЖрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдорд╛рдЪреЗ рд╕рдорд╛рдВрддрд░ рдХрд╕реЗ рдХрд░рд╛рд╡реЗ рд╣реЗ рд╢реЛрдзреВрди рдХрд╛рдврд╛рд╡реЗ рд▓рд╛рдЧрд▓реЗ. рд╕реБрджреИрд╡рд╛рдиреЗ, рдкреВрд░реНрдгрдкрдгреЗ рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХ рдкреБрд╕реНрддрдХрд╛рдд gnu parallel
, рдпреБрдирд┐рдХреНрд╕рдордзреНрдпреЗ рдорд▓реНрдЯреАрдереНрд░реЗрдбрд┐рдВрдЧ рд▓рд╛рдЧреВ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рдЕрддрд┐рд╢рдп рд▓рд╡рдЪрд┐рдХ рдкрджреНрдзрдд.
рдЬреЗрд╡реНрд╣рд╛ рдореА рдирд╡реАрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд╛рдкрд░реВрди рд╡рд┐рднрд╛рдЬрди рд╕реБрд░реВ рдХреЗрд▓реЗ, рддреЗрд╡реНрд╣рд╛ рд╕рд░реНрд╡рдХрд╛рд╣реА рдареАрдХ рд╣реЛрддреЗ, рдкрд░рдВрддреБ рддрд░реАрд╣реА рдПрдХ рдЕрдбрдЪрдг рд╣реЛрддреА - рдбрд┐рд╕реНрдХрд╡рд░ S3 рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдгреЗ рдлрд╛рд░ рдЬрд▓рдж рдирд╡реНрд╣рддреЗ рдЖрдгрд┐ рдкреВрд░реНрдгрдкрдгреЗ рд╕рдорд╛рдВрддрд░ рдирд╡реНрд╣рддреЗ. рдпрд╛рдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдореА рд╣реЗ рдХреЗрд▓реЗ:
- рдорд▓рд╛ рдЖрдврд│рд▓реЗ рдХреА рдбрд┐рд╕реНрдХрд╡рд░реАрд▓ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рд╕реНрдЯреЛрд░реЗрдЬ рдкреВрд░реНрдгрдкрдгреЗ рдХрд╛рдвреВрди рдЯрд╛рдХреВрди, рдереЗрдЯ рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ S3 рдбрд╛рдЙрдирд▓реЛрдб рд╕реНрдЯреЗрдЬрдЪреА рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдХрд░рдгреЗ рд╢рдХреНрдп рдЖрд╣реЗ. рдпрд╛рдЪрд╛ рдЕрд░реНрде рдореА рдбрд┐рд╕реНрдХрд╡рд░ рдХрдЪреНрдЪрд╛ рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рдгреЗ рдЯрд╛рд│реВ рд╢рдХрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рд╣реВрди рд▓рд╣рд╛рди, рдЖрдгрд┐ рдореНрд╣рдгреВрди рд╕реНрд╡рд╕реНрдд, AWS рд╡рд░ рд╕реНрдЯреЛрд░реЗрдЬ рд╡рд╛рдкрд░реВ рд╢рдХрддреЛ.
- рд╕рдВрдШ
aws configure set default.s3.max_concurrent_requests 50
AWS CLI рд╡рд╛рдкрд░рдд рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдереНрд░реЗрдбреНрд╕рдЪреА рд╕рдВрдЦреНрдпрд╛ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╡рд╛рдврд╡рд▓реА (рдбрд┐рдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ 10 рдЖрд╣реЗрдд). - рдореА рдирд╛рд╡рд╛рддреАрд▓ n рдЕрдХреНрд╖рд░рд╛рд╕рд╣ рдиреЗрдЯрд╡рд░реНрдХ рдЧрддреАрд╕рд╛рдареА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗрд▓реНрдпрд╛ EC2 рдЙрджрд╛рд╣рд░рдгрд╛рд╡рд░ рд╕реНрд╡рд┐рдЪ рдХреЗрд▓реЗ. рдорд▓рд╛ рдЖрдврд│рд▓реЗ рдЖрд╣реЗ рдХреА рдПрди-рдЗрдВрд╕реНрдЯрдиреНрд╕ рд╡рд╛рдкрд░рддрд╛рдирд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдкреЙрд╡рд░рдЪреА рд╣рд╛рдиреА рд▓реЛрдбрд┐рдВрдЧ рд╕реНрдкреАрдбрдЪреНрдпрд╛ рд╡рд╛рдвреАрдореБрд│реЗ рднрд░рдкрд╛рдИрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЖрд╣реЗ. рдмрд╣реБрддреЗрдХ рдХрд╛рдорд╛рдВрд╕рд╛рдареА рдореА c5n.4xl рд╡рд╛рдкрд░рд▓реЗ.
- рдмрджрд▓рд▓реЗ
gzip
рд╡рд░ , рд╣реЗ рдПрдХ gzip рд╕рд╛рдзрди рдЖрд╣реЗ рдЬреЗ рдлрд╛рдпрд▓реА рдбреАрдХрдВрдкреНрд░реЗрд╕ рдХрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реБрд░реБрд╡рд╛рддреАрд▓рд╛ рдиреЙрди-рд╕рдорд╛рдВрддрд░ рдХрд╛рд░реНрдп рд╕рдорд╛рдВрддрд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЫрд╛рди рдЧреЛрд╖реНрдЯреА рдХрд░реВ рд╢рдХрддреЗ (рдпрд╛рдореБрд│реЗ рдХрдореАрддрдХрдореА рдорджрдд рдЭрд╛рд▓реА).pigz
# Let S3 use as many threads as it wants
aws configure set default.s3.max_concurrent_requests 50
for chunk_file in $(aws s3 ls $DATA_LOC | awk '{print $4}' | grep 'chr'$DESIRED_CHR'.csv') ; do
aws s3 cp s3://$batch_loc$chunk_file - |
pigz -dc |
parallel --block 100M --pipe
"awk -F 't' '{print $1",..."$30">"chunked/{#}_chr"$15".csv"}'"
# Combine all the parallel process chunks to single files
ls chunked/ |
cut -d '_' -f 2 |
sort -u |
parallel 'cat chunked/*_{} | sort -k5 -n -S 80% -t, | aws s3 cp - '$s3_dest'/batch_'$batch_num'_{}'
# Clean up intermediate data
rm chunked/*
done
рд╕рд░реНрд╡ рдХрд╛рд╣реА рддреНрд╡рд░реАрдд рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рд╣реЗ рдЪрд░рдг рдПрдХрдореЗрдХрд╛рдВрд╢реА рдПрдХрддреНрд░ рдХреЗрд▓реЗ рдЬрд╛рддрд╛рдд. рдбрд╛рдЙрдирд▓реЛрдб рдЧрддреА рд╡рд╛рдврд╡реВрди рдЖрдгрд┐ рдбрд┐рд╕реНрдХ рд░рд╛рдпрдЯреНрд╕ рдХрд╛рдвреВрди рдЯрд╛рдХреВрди, рдореА рдЖрддрд╛ рдХрд╛рд╣реА рддрд╛рд╕рд╛рдВрдд 5 рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рдкреЕрдХреЗрдЬрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реВ рд╢рдХрддреЛ.
AWS рд╡рд░ рддреБрдореНрд╣реА рдкреИрд╕реЗ рджреЗрдд рдЕрд╕рд▓реЗрд▓реЗ рд╕рд░реНрд╡ рдХреЛрд░ рдкрд╛рд╣рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдХрд╛рд╣реАрд╣реА рдЧреЛрдб рдирд╛рд╣реА. рдЬреАрдПрдирдпреВ-рдкреЕрд░рд▓рд▓рдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж рдореА 19gig csv рдЕрдирдЭрд┐рдк рдЖрдгрд┐ рд╕реНрдкреНрд▓рд┐рдЯ рдХрд░реВ рд╢рдХрддреЛ рддрд┐рддрдХреНрдпрд╛рдЪ рд╡реЗрдЧрд╛рдиреЗ рдореА рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВ рд╢рдХрддреЛ. рдорд▓рд╛ рд╣реЗ рдЪрд╛рд▓рд╡рдгреНрдпрд╛рд╕рд╛рдареА рд╕реНрдкрд╛рд░реНрдХ рджреЗрдЦреАрд▓ рдорд┐рд│реВ рд╢рдХрд▓рд╛ рдирд╛рд╣реА.
# рдбреЗрдЯрд╛рд╕рд╛рдпрдиреНрд╕ #рд▓рд┐рдирдХреНрд╕ pic.twitter.com/Nqyba2zqEk тАФ рдирд┐рдХ рд╕реНрдЯреНрд░рд╛рдпрд░ (@ рдирд┐рдХреЛрд▓рд╕ рд╕реНрдЯреНрд░реЗрдпрд░)
17 рд╢рдХрддреЗ, 2019
рдпрд╛ рдЯреНрд╡рд┐рдЯрдордзреНрдпреЗ 'TSV' рдЕрд╕рд╛ рдЙрд▓реНрд▓реЗрдЦ рдЕрд╕рд╛рд╡рд╛. рдЕрд░реЗрд░реЗ.
рдирд╡реАрди рд╡рд┐рд╢реНрд▓реЗрд╖рд┐рдд рдбреЗрдЯрд╛ рд╡рд╛рдкрд░рдгреЗ
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рд╕реНрдкрд╛рд░реНрдХрд▓рд╛ рдЕрд╕рдВрдкреАрдбрд┐рдд рдбреЗрдЯрд╛ рдЖрд╡рдбрддреЛ рдЖрдгрд┐ рд╡рд┐рднрд╛рдЬрдиреЗ рдПрдХрддреНрд░ рдХрд░рдгреЗ рдЖрд╡рдбрдд рдирд╛рд╣реА.
рдЖрддрд╛ рдбреЗрдЯрд╛ S3 рдордзреНрдпреЗ рдЕрдирдкреЕрдХ рдХреЗрд▓реЗрд▓рд╛ (рд╡рд╛рдЪрд╛: рд╕рд╛рдорд╛рдпрд┐рдХ рдХреЗрд▓реЗрд▓рд╛) рдЖрдгрд┐ рдЕрд░реНрдз-рд╕рдВрдШрдЯрд┐рдд рд╕реНрд╡рд░реВрдкрд╛рдд рд╣реЛрддрд╛ рдЖрдгрд┐ рдореА рдкреБрдиреНрд╣рд╛ рд╕реНрдкрд╛рд░реНрдХрд╡рд░ рдкрд░рдд рдпреЗрдК рд╢рдХрд▓реЛ. рдорд▓рд╛ рдПрдХ рдЖрд╢реНрдЪрд░реНрдп рд╡рд╛рдЯрд▓реЗ: рдорд▓рд╛ рд╣рд╡реЗ рддреЗ рд╕рд╛рдзреНрдп рдХрд░рдгреНрдпрд╛рдд рдореА рдкреБрдиреНрд╣рд╛ рдЕрдпрд╢рд╕реНрд╡реА рдЭрд╛рд▓реЛ! рдбреЗрдЯрд╛рдЪреЗ рд╡рд┐рднрд╛рдЬрди рдиреЗрдордХреЗ рдХрд╕реЗ рдЭрд╛рд▓реЗ рд╣реЗ рд╕реНрдкрд╛рд░реНрдХрд▓рд╛ рд╕рд╛рдВрдЧрдгреЗ рдлрд╛рд░ рдХрдареАрдг рд╣реЛрддреЗ. рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рдореА рд╣реЗ рдХреЗрд▓реЗ рддреЗрд╡реНрд╣рд╛рд╣реА рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рдмрд░реЗрдЪ рд╡рд┐рднрд╛рдЬрдиреЗ рдЖрд╣реЗрдд (95 рд╣рдЬрд╛рд░), рдЖрдгрд┐ рдЬреЗрд╡реНрд╣рд╛ рдореА рд╡рд╛рдкрд░рд▓реЗ coalesce
рддреНрдпрд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдЬрд╡реА рдорд░реНрдпрд╛рджреЗрдкрд░реНрдпрдВрдд рдХрдореА рдХреЗрд▓реА, рдпрд╛рдореБрд│реЗ рдорд╛рдЭреЗ рд╡рд┐рднрд╛рдЬрди рдирд╖реНрдЯ рдЭрд╛рд▓реЗ. рдорд▓рд╛ рдЦрд╛рддреНрд░реА рдЖрд╣реЗ рдХреА рд╣реЗ рдирд┐рд╢реНрдЪрд┐рдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ, рдкрд░рдВрддреБ рдХрд╛рд╣реА рджрд┐рд╡рд╕ рд╢реЛрдз рдШреЗрддрд▓реНрдпрд╛рдирдВрддрд░ рдорд▓рд╛ рдЙрдкрд╛рдп рд╕рд╛рдкрдбрд▓рд╛ рдирд╛рд╣реА. рдореА рдЕрдЦреЗрд░реАрд╕ рд╕реНрдкрд╛рд░реНрдХ рдордзреАрд▓ рд╕рд░реНрд╡ рдХрд╛рд░реНрдпреЗ рдкреВрд░реНрдг рдХреЗрд▓реА, рдЬрд░реА рдпрд╛рд╕ рдереЛрдбрд╛ рд╡реЗрд│ рд▓рд╛рдЧрд▓рд╛ рдЖрдгрд┐ рдорд╛рдЭреНрдпрд╛ рд╕реНрдкреНрд▓рд┐рдЯ рдкрд░реНрдХреЗрдЯ рдлрд╛рдпрд▓реА рдлрд╛рд░ рд▓рд╣рд╛рди рдирд╡реНрд╣рддреНрдпрд╛ (~200 KB). рддрдерд╛рдкрд┐, рдбреЗрдЯрд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддрд╛ рддреЗрдереЗ рд╣реЛрддрд╛.
рдЦреВрдк рд▓рд╣рд╛рди рдЖрдгрд┐ рдЕрд╕рдорд╛рди, рдЕрджреНрднреБрдд!
рд╕реНрдерд╛рдирд┐рдХ рд╕реНрдкрд╛рд░реНрдХ рдкреНрд░рд╢реНрдирд╛рдВрдЪреА рдЪрд╛рдЪрдгреА рдХрд░рдд рдЖрд╣реЗ
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рд╕рд╛рдзреНрдпрд╛ рд╕рдорд╕реНрдпрд╛ рд╕реЛрдбрд╡рддрд╛рдирд╛ рд╕реНрдкрд╛рд░реНрдХрдордзреНрдпреЗ рдЦреВрдк рдУрд╡реНрд╣рд░рд╣реЗрдб рдЕрд╕рддреЗ.
рд╣реБрд╢рд╛рд░ рд╕реНрд╡рд░реВрдкрд╛рдд рдбреЗрдЯрд╛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реВрди, рдореА рд╡реЗрдЧ рддрдкрд╛рд╕рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рд╣реЛрддреЛ. рд╕реНрдерд╛рдирд┐рдХ рд╕реНрдкрд╛рд░реНрдХ рд╕рд░реНрд╡реНрд╣рд░ рдЪрд╛рд▓рд╡рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдЖрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗрдЯ рдХрд░рд╛ рдЖрдгрд┐ рдирдВрддрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ Parquet рдЧреНрд░реБрдк рд╕реНрдЯреЛрд░реЗрдЬ (рдмрд┐рди) рдордзреВрди рд╕реНрдкрд╛рд░реНрдХ рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рд▓реЛрдб рдХрд░рд╛. рдореА рд╕рд░реНрд╡ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдкрд░рдВрддреБ рд╡рд┐рднрд╛рдЬрди рдУрд│рдЦрдгреНрдпрд╛рд╕рд╛рдареА Sparklyr рдорд┐рд│рд╡реВ рд╢рдХрд▓реЛ рдирд╛рд╣реА.
sc <- Spark_connect(master = "local")
desired_snp <- 'rs34771739'
# Start a timer
start_time <- Sys.time()
# Load the desired bin into Spark
intensity_data <- sc %>%
Spark_read_Parquet(
name = 'intensity_data',
path = get_snp_location(desired_snp),
memory = FALSE )
# Subset bin to snp and then collect to local
test_subset <- intensity_data %>%
filter(SNP_Name == desired_snp) %>%
collect()
print(Sys.time() - start_time)
рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА 29,415 рд╕реЗрдХрдВрдж рд▓рд╛рдЧрд▓реЗ. рдмрд░реЗрдЪ рдЪрд╛рдВрдЧрд▓реЗ, рдкрд░рдВрддреБ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЧреЛрд╖реНрдЯреАрдЪреНрдпрд╛ рд╡рд╕реНрддреБрдорд╛рди рдЪрд╛рдЪрдгреАрд╕рд╛рдареА рдЦреВрдк рдЪрд╛рдВрдЧрд▓реЗ рдирд╛рд╣реА. рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдореА рдХреЕрд╢рд┐рдВрдЧрд╕рд╣ рдЧреЛрд╖реНрдЯреАрдВрдЪрд╛ рд╡реЗрдЧ рд╡рд╛рдврд╡реВ рд╢рдХрд▓реЛ рдирд╛рд╣реА рдХрд╛рд░рдг рдЬреЗрд╡реНрд╣рд╛ рдореА рдореЗрдорд░реАрдордзреНрдпреЗ рдбреЗрдЯрд╛ рдлреНрд░реЗрдо рдХреЕрд╢реЗ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рддреЗрд╡реНрд╣рд╛ рд╕реНрдкрд╛рд░реНрдХ рдиреЗрд╣рдореА рдХреНрд░реЕрд╢ рд╣реЛрддреЗ, рдЬрд░реА рдореА 50 рдкреЗрдХреНрд╖рд╛ рдХрдореА рд╡рдЬрдирд╛рдЪреНрдпрд╛ рдбреЗрдЯрд╛рд╕реЗрдЯрд▓рд╛ 15 GB рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдореЗрдорд░реА рд╡рд╛рдЯрдк рдХреЗрд▓реА рддрд░реАрд╣реА.
AWK рдХрдбреЗ рдкрд░рдд рдЬрд╛
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: AWK рдордзреАрд▓ рд╕рд╣рдпреЛрдЧреА рдЕреЕрд░реЗ рдЕрддрд┐рд╢рдп рдХрд╛рд░реНрдпрдХреНрд╖рдо рдЖрд╣реЗрдд.
рдорд▓рд╛ рдЬрд╛рдгрд╡рд▓реЗ рдХреА рдореА рдЬрд╛рд╕реНрдд рд╡реЗрдЧ рдорд┐рд│рд╡реВ рд╢рдХрддреЛ. рдорд▓рд╛ рддреЗ рдЖрд╢реНрдЪрд░реНрдпрдХрд╛рд░рдХрдкрдгреЗ рдЖрдард╡рд▓реЗ
рд╣реЗ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, AWK рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдореА рдмреНрд▓реЙрдХ рд╡рд╛рдкрд░рд▓рд╛ BEGIN
. рд╣рд╛ рдХреЛрдбрдЪрд╛ рдПрдХ рддреБрдХрдбрд╛ рдЖрд╣реЗ рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдЪреНрдпрд╛ рдореБрдЦреНрдп рднрд╛рдЧрд╛рдордзреНрдпреЗ рдбреЗрдЯрд╛рдЪреА рдкрд╣рд┐рд▓реА рдУрд│ рдкрд╛рд╕ рдХрд░рдгреНрдпрд╛рдкреВрд░реНрд╡реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ.
join_data.awk
BEGIN {
FS=",";
batch_num=substr(chunk,7,1);
chunk_id=substr(chunk,15,2);
while(getline < "snp_to_bin.csv") {bin[$1] = $2}
}
{
print $0 > "chunked/chr_"chr"_bin_"bin[$1]"_"batch_num"_"chunk_id".csv"
}
рд╕рдВрдШ while(getline...)
CSV рдЧрдЯ (рдмрд┐рди) рдордзреВрди рд╕рд░реНрд╡ рдкрдВрдХреНрддреА рд▓реЛрдб рдХреЗрд▓реНрдпрд╛, рдЕрд╕реЛрд╕рд┐рдПрдЯрд┐рд╡реНрд╣ рдЕреЕрд░реЗрд╕рд╛рдареА рдХреА рдореНрд╣рдгреВрди рдкрд╣рд┐рд▓рд╛ рд╕реНрддрдВрдн (SNP рдирд╛рд╡) рд╕реЗрдЯ рдХрд░рд╛ bin
рдЖрдгрд┐ рджреБрд╕рд░реЗ рдореВрд▓реНрдп (рд╕рдореВрд╣) рдореВрд▓реНрдп рдореНрд╣рдгреВрди. рдордЧ рдмреНрд▓реЙрдХ рдордзреНрдпреЗ {
}
, рдЬреА рдореБрдЦреНрдп рдлрд╛рдИрд▓рдЪреНрдпрд╛ рд╕рд░реНрд╡ рдУрд│реАрдВрд╡рд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдХреЗрд▓реА рдЬрд╛рддреЗ, рдкреНрд░рддреНрдпреЗрдХ рдУрд│ рдЖрдЙрдЯрдкреБрдЯ рдлрд╛рдЗрд▓рд╡рд░ рдкрд╛рдард╡рд┐рд▓реА рдЬрд╛рддреЗ, рдЬреНрдпрд╛рд▓рд╛ рддреНрдпрд╛рдЪреНрдпрд╛ рдЧрдЯрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдирд╛рд╡ рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ (рдмрд┐рди): ..._bin_"bin[$1]"_...
.
рдЪрд▓ batch_num
╨╕ chunk_id
рдкрд╛рдЗрдкрд▓рд╛рдЗрдирджреНрд╡рд╛рд░реЗ рдкреНрд░рджрд╛рди рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛рд╢реА рдЬреБрд│рд▓реЗ, рд╢рд░реНрдпрддреАрдЪреА рд╕реНрдерд┐рддреА рдЯрд╛рд│реВрди, рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреА рдереНрд░реЗрдб рдЪрд╛рд▓реВ рдЖрд╣реЗ parallel
, рддреНрдпрд╛рдЪреНрдпрд╛ рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдЕрдирдиреНрдп рдлрд╛рдЗрд▓рд╡рд░ рд▓рд┐рд╣рд┐рд▓реЗ.
рдорд╛рдЭреНрдпрд╛ AWK рд╕реЛрдмрддрдЪреНрдпрд╛ рдЖрдзреАрдЪреНрдпрд╛ рдкреНрд░рдпреЛрдЧрд╛рддреВрди рдЙрд░рд▓реЗрд▓рд╛ рд╕рд░реНрд╡ рдХрдЪреНрдЪрд╛ рдбреЗрдЯрд╛ рдореА рдЧреБрдгрд╕реВрддреНрд░рд╛рдВрд╡рд░ рдлреЛрд▓реНрдбрд░рдордзреНрдпреЗ рд╡рд┐рдЦреБрд░рд▓рд╛ рдЕрд╕рд▓реНрдпрд╛рдиреЗ, рдЖрддрд╛ рдореА рдПрдХрд╛рд╡реЗрд│реА рдПрдХрд╛ рдЧреБрдгрд╕реВрддреНрд░рд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рджреБрд╕рд░реА рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣реВ рд╢рдХреЗрди рдЖрдгрд┐ S3 рд╡рд░ рд╕рдЦреЛрд▓ рд╡рд┐рднрд╛рдЬрди рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рдкрд╛рдард╡реВ рд╢рдХреЗрди.
DESIRED_CHR='13'
# Download chromosome data from s3 and split into bins
aws s3 ls $DATA_LOC |
awk '{print $4}' |
grep 'chr'$DESIRED_CHR'.csv' |
parallel "echo 'reading {}'; aws s3 cp "$DATA_LOC"{} - | awk -v chr=""$DESIRED_CHR"" -v chunk="{}" -f split_on_chr_bin.awk"
# Combine all the parallel process chunks to single files and upload to rds using R
ls chunked/ |
cut -d '_' -f 4 |
sort -u |
parallel "echo 'zipping bin {}'; cat chunked/*_bin_{}_*.csv | ./upload_as_rds.R '$S3_DEST'/chr_'$DESIRED_CHR'_bin_{}.rds"
rm chunked/*
рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рджреЛрди рд╡рд┐рднрд╛рдЧ рдЖрд╣реЗрдд parallel
.
рдкрд╣рд┐рд▓реНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рдд, рдЗрдЪреНрдЫрд┐рдд рдЧреБрдгрд╕реВрддреНрд░рд╛рд╡рд░реАрд▓ рдорд╛рд╣рд┐рддреА рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рд╕рд░реНрд╡ рдлрд╛рдпрд▓реАрдВрдордзреВрди рдбреЗрдЯрд╛ рд╡рд╛рдЪрд▓рд╛ рдЬрд╛рддреЛ, рддреНрдпрд╛рдирдВрддрд░ рд╣рд╛ рдбреЗрдЯрд╛ рдереНрд░реЗрдбреНрд╕рдордзреНрдпреЗ рд╡рд┐рддрд░реАрдд рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЬреЛ рдлрд╛рдпрд▓реА рдпреЛрдЧреНрдп рдЧрдЯрд╛рдВрдордзреНрдпреЗ (рдмрд┐рди) рд╡рд┐рддрд░реАрдд рдХрд░рддреЛ. рдПрдХрд╛рдЪ рдлрд╛рдИрд▓рд╡рд░ рдПрдХрд╛рдзрд┐рдХ рдереНрд░реЗрдбреНрд╕ рд▓рд┐рд╣рд┐рддрд╛рдирд╛ рд╢рд░реНрдпрддреАрдЪреА рдкрд░рд┐рд╕реНрдерд┐рддреА рдЯрд╛рд│рдгреНрдпрд╛рд╕рд╛рдареА, AWK рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдард┐рдХрд╛рдгреА рдбреЗрдЯрд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рдлрд╛рдЗрд▓рдЪреА рдирд╛рд╡реЗ рдкрд╛рд╕ рдХрд░рддреЗ, рдЙрджрд╛. chr_10_bin_52_batch_2_aa.csv
. рдкрд░рд┐рдгрд╛рдореА, рдбрд┐рд╕реНрдХрд╡рд░ рдЕрдиреЗрдХ рд▓рд╣рд╛рди рдлрд╛рдпрд▓реА рддрдпрд╛рд░ рдХреЗрд▓реНрдпрд╛ рдЬрд╛рддрд╛рдд (рдпрд╛рд╕рд╛рдареА рдореА рдЯреЗрд░рд╛рдмрд╛рдЗрдЯ рдИрдмреАрдПрд╕ рд╡реНрд╣реЙрд▓реНрдпреВрдо рд╡рд╛рдкрд░рд▓реЗ).
рджреБрд╕рд▒реНрдпрд╛ рд╡рд┐рднрд╛рдЧрд╛рддреАрд▓ рдХрдиреНрд╡реНрд╣реЗрдпрд░ parallel
рдЧрдЯрд╛рдВрдордзреВрди (рдмрд┐рди) рдЬрд╛рддрд╛рдд рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╡реИрдпрдХреНрддрд┐рдХ рдлрд╛рдпрд▓реА рд╕рд╛рдорд╛рдиреНрдп CSV c рдордзреНрдпреЗ рдПрдХрддреНрд░ рдХрд░рддрд╛рдд cat
рдЖрдгрд┐ рдирдВрддрд░ рдирд┐рд░реНрдпрд╛рддреАрд╕рд╛рдареА рдкрд╛рдард╡рддреЗ.
рдЖрд░ рдордзреНрдпреЗ рдкреНрд░рд╕рд╛рд░рдг?
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рддреБрдореНрд╣реА рд╕рдВрдкрд░реНрдХ рдХрд░реВ рд╢рдХрддрд╛ stdin
╨╕ stdout
рдЖрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреВрди, рдЖрдгрд┐ рдореНрд╣рдгреВрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ рд╡рд╛рдкрд░рд╛.
рддреБрдордЪреНрдпрд╛ рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рд╣реА рдУрд│ рддреБрдордЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдЖрд▓реА рдЕрд╕реЗрд▓: ...cat chunked/*_bin_{}_*.csv | ./upload_as_rds.R...
. рд╣реЗ рд╕рд░реНрд╡ рдПрдХрддреНрд░рд┐рдд рдЧрдЯ рдлрд╛рдпрд▓реА (рдмрд┐рди) рдЦрд╛рд▓реАрд▓ R рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░рддреЗ. {}
рдПрдХ рд╡рд┐рд╢реЗрд╖ рддрдВрддреНрд░ рдЖрд╣реЗ parallel
, рдЬреЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рд╡рд╛рд╣рд╛рдд рдкрд╛рдард╡рдгрд╛рд░рд╛ рдХреЛрдгрддрд╛рд╣реА рдбреЗрдЯрд╛ рдереЗрдЯ рдХрдорд╛рдВрдбрдордзреНрдпреЗрдЪ рд╕рдорд╛рд╡рд┐рд╖реНрдЯ рдХрд░рддреЗ. рдкрд░реНрдпрд╛рдп {#}
рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдереНрд░реЗрдб рдЖрдпрдбреА рдкреНрд░рджрд╛рди рдХрд░рддреЗ, рдЖрдгрд┐ {%}
рдЬреЙрдм рд╕реНрд▓реЙрдЯ рдХреНрд░рдорд╛рдВрдХрд╛рдЪреЗ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддреЗ (рдкреБрдирд░рд╛рд╡реГрддреНрддреА, рдкрд░рдВрддреБ рдПрдХрд╛рдЪ рд╡реЗрд│реА рдХрдзреАрд╣реА). рд╕рд░реНрд╡ рдкрд░реНрдпрд╛рдпрд╛рдВрдЪреА рдпрд╛рджреА рдордзреНрдпреЗ рдЖрдврд│реВ рд╢рдХрддреЗ
#!/usr/bin/env Rscript
library(readr)
library(aws.s3)
# Read first command line argument
data_destination <- commandArgs(trailingOnly = TRUE)[1]
data_cols <- list(SNP_Name = 'c', ...)
s3saveRDS(
read_csv(
file("stdin"),
col_names = names(data_cols),
col_types = data_cols
),
object = data_destination
)
рдЬреЗрд╡реНрд╣рд╛ рд╡реНрд╣реЗрд░рд┐рдПрдмрд▓ file("stdin")
рдордзреНрдпреЗ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХреЗрд▓реЗ readr::read_csv
, рдЖрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреНрдпреЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХреЗрд▓реЗрд▓рд╛ рдбреЗрдЯрд╛ рдлреНрд░реЗрдордордзреНрдпреЗ рд▓реЛрдб рдХреЗрд▓рд╛ рдЬрд╛рддреЛ, рдЬреЛ рдирдВрддрд░ рдлреЙрд░реНрдордордзреНрдпреЗ рдЕрд╕рддреЛ .rds
- рдлрд╛рдЗрд▓ рд╡рд╛рдкрд░реВрди aws.s3
рдереЗрдЯ S3 рд╡рд░ рд▓рд┐рд╣рд┐рд▓реЗ.
RDS рд╣реЗ Parquet рдЪреНрдпрд╛ рдХрдирд┐рд╖реНрда рдЖрд╡реГрддреНрддреАрд╕рд╛рд░рдЦреЗ рдЖрд╣реЗ, рд╕реНрдкреАрдХрд░ рд╕реНрдЯреЛрд░реЗрдЬрдЪреНрдпрд╛ рдлреНрд░рд┐рд▓реНрд╕рд╢рд┐рд╡рд╛рдп.
рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреВрд░реНрдг рдХреЗрд▓реНрдпрд╛рдирдВрддрд░ рдорд▓рд╛ рдПрдХ рдмрдВрдбрд▓ рдорд┐рд│рд╛рд▓реЗ .rds
S3 рдордзреНрдпреЗ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдлрд╛рдЗрд▓реНрд╕, рдЬреНрдпрд╛рдиреЗ рдорд▓рд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдо рдХреЙрдореНрдкреНрд░реЗрд╢рди рдЖрдгрд┐ рдЕрдВрдЧрднреВрдд рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджрд┐рд▓реА.
рдмреНрд░реЗрдХ R рдЪрд╛ рд╡рд╛рдкрд░ рдЕрд╕реВрдирд╣реА, рд╕рд░реНрд╡рдХрд╛рд╣реА рдЦреВрдк рд▓рд╡рдХрд░ рдХрд╛рд░реНрдп рдХрд░рддреЗ. рдЖрд╢реНрдЪрд░реНрдпрд╛рдЪреА рдЧреЛрд╖реНрдЯ рдирд╛рд╣реА рдХреА, R рдЪреЗ рднрд╛рдЧ рдЬреЗ рдбреЗрдЯрд╛ рд╡рд╛рдЪрддрд╛рдд рдЖрдгрд┐ рд▓рд┐рд╣рд┐рддрд╛рдд рддреЗ рдЕрддреНрдпрдВрдд рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХреЗрд▓реЗрд▓реЗ рдЕрд╕рддрд╛рдд. рдПрдХрд╛ рдордзреНрдпрдо рдЖрдХрд╛рд░рд╛рдЪреНрдпрд╛ рдЧреБрдгрд╕реВрддреНрд░рд╛рд╡рд░ рдЪрд╛рдЪрдгреА рдХреЗрд▓реНрдпрд╛рдирдВрддрд░, C5n.4xl рдЙрджрд╛рд╣рд░рдгрд╛рд╡рд░ рдХрд╛рдо рд╕реБрдорд╛рд░реЗ рджреЛрди рддрд╛рд╕рд╛рдВрдд рдкреВрд░реНрдг рдЭрд╛рд▓реЗ.
S3 рдорд░реНрдпрд╛рджрд╛
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рд╕реНрдорд╛рд░реНрдЯ рдкрде рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрд╕рд╛рдареА рдзрдиреНрдпрд╡рд╛рдж, S3 рдЕрдиреЗрдХ рдлрд╛рдИрд▓реНрд╕ рд╣рд╛рддрд╛рд│реВ рд╢рдХрддреЗ.
S3 рдордзреНрдпреЗ рд╣рд╕реНрддрд╛рдВрддрд░рд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдЕрдиреЗрдХ рдлрд╛рдИрд▓реНрд╕ рд╣рд╛рддрд╛рд│рдгреНрдпрд╛рд╕ рд╕рдХреНрд╖рдо рдЕрд╕реЗрд▓ рдХреА рдирд╛рд╣реА рдпрд╛рдЪреА рдорд▓рд╛ рднрд┐рддреА рд╣реЛрддреА. рдореА рдлрд╛рдЗрд▓рдЪреА рдирд╛рд╡реЗ рдЕрд░реНрдердкреВрд░реНрдг рдмрдирд╡реВ рд╢рдХрддреЛ, рдкрд░рдВрддреБ S3 рддреНрдпрд╛рдВрдирд╛ рдХрд╕реЗ рд╢реЛрдзреЗрд▓?
S3 рдордзреАрд▓ рдлреЛрд▓реНрдбрд░реНрд╕ рдлрдХреНрдд рд╢реЛрд╕рд╛рдареА рдЖрд╣реЗрдд, рдЦрд░рдВ рддрд░ рд╕рд┐рд╕реНрдЯреАрдорд▓рд╛ рдЪрд┐рдиреНрд╣рд╛рдд рд░рд╕ рдирд╛рд╣реА /
.
рдЕрд╕реЗ рджрд┐рд╕рддреЗ рдХреА S3 рд╡рд┐рд╢рд┐рд╖реНрдЯ рдлрд╛рдИрд▓рдЪрд╛ рдорд╛рд░реНрдЧ рд╣реЕрд╢ рдЯреЗрдмрд▓ рдХрд┐рдВрд╡рд╛ рджрд╕реНрддрдРрд╡рдЬ-рдЖрдзрд╛рд░рд┐рдд рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдПрдХ рд╕рд╛рдзреА рдХреА рдореНрд╣рдгреВрди рджрд░реНрд╢рд╡рддреЗ. рдмрд╛рджрд▓реАрдЪрд╛ рдЯреЗрдмрд▓ рдореНрд╣рдгреВрди рд╡рд┐рдЪрд╛рд░ рдХреЗрд▓рд╛ рдЬрд╛рдК рд╢рдХрддреЛ рдЖрдгрд┐ рдлрд╛рдпрд▓реА рддреНрдпрд╛ рдЯреЗрдмрд▓рдордзреАрд▓ рд░реЗрдХреЙрд░реНрдб рдорд╛рдирд▓реНрдпрд╛ рдЬрд╛рдК рд╢рдХрддрд╛рдд.
Amazon рд╡рд░ рдирдлрд╛ рдХрдорд╛рд╡рдгреНтАНрдпрд╛рд╕рд╛рдареА рдЧрддреА рдЖрдгрд┐ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдорд╣рддреНтАНрддреНтАНрд╡рд╛рдЪреНтАНрдпрд╛ рдЕрд╕рд▓реНтАНрдпрд╛рдиреЗ, рд╣реА рдлрд╛рдИрд▓-рдкрде рд╕рд┐рд╕реНтАНрдЯрдо рдлреНрд░реЗрдХрд┐рдВрдЧ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдЭрд╛рд▓реА рдЖрд╣реЗ рдпрд╛рдд рдирд╡рд▓ рдирд╛рд╣реА. рдореА рд╢рд┐рд▓реНрд▓рдХ рд╢реЛрдзрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛: рдЬреЗрдгреЗрдХрд░реВрди рдорд▓рд╛ рдЦреВрдк рд╡рд┐рдирдВрддреНрдпрд╛ рдХрд░рд╛рд╡реНрдпрд╛ рд▓рд╛рдЧрд▓реНрдпрд╛ рдирд╛рд╣реАрдд, рдкрд░рдВрддреБ рд╡рд┐рдирдВрддреНрдпрд╛ рддреНрд╡рд░реАрдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдЭрд╛рд▓реНрдпрд╛. рдЕрд╕реЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдХреА рд╕реБрдорд╛рд░реЗ 20 рд╣рдЬрд╛рд░ рдмрд┐рди рдлрд╛рдпрд▓реА рдмрдирд╡рд┐рдгреЗ рдЪрд╛рдВрдЧрд▓реЗ рдЖрд╣реЗ. рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдЖрдореНрд╣реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреЗ рд╕реБрд░реВ рдареЗрд╡рд▓реНрдпрд╛рд╕, рдЖрдореНрд╣реА рд╡реЗрдЧ рд╡рд╛рдврд╡реВ рд╢рдХрддреЛ (рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдлрдХреНрдд рдбреЗрдЯрд╛рд╕рд╛рдареА рдПрдХ рд╡рд┐рд╢реЗрд╖ рдмрд╛рджрд▓реА рдмрдирд╡рдгреЗ, рдЕрд╢рд╛ рдкреНрд░рдХрд╛рд░реЗ рд▓реБрдХрдЕрдк рдЯреЗрдмрд▓рдЪрд╛ рдЖрдХрд╛рд░ рдХрдореА рдХрд░рдгреЗ). рдкрдг рдкреБрдврдЪреНрдпрд╛ рдкреНрд░рдпреЛрдЧрд╛рдВрд╕рд╛рдареА рд╡реЗрд│ рдХрд┐рдВрд╡рд╛ рдкреИрд╕рд╛ рдирд╡реНрд╣рддрд╛.
рдХреНрд░реЙрд╕ рд╕реБрд╕рдВрдЧрддрддрд╛ рдмрджреНрджрд▓ рдХрд╛рдп?
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рд╡рд╛рдпрд╛ рдЧреЗрд▓реЗрд▓реНрдпрд╛ рд╡реЗрд│реЗрдЪреЗ рдкрд╣рд┐рд▓реЗ рдХрд╛рд░рдг рдореНрд╣рдгрдЬреЗ рддреБрдордЪреА рд╕реНрдЯреЛрд░реЗрдЬ рдкрджреНрдзрдд рдЕрдХрд╛рд▓реА рдЕрдиреБрдХреВрд▓ рдХрд░рдгреЗ.
рдпрд╛ рдЯрдкреНрдкреНрдпрд╛рд╡рд░, рд╕реНрд╡рддрдГрд▓рд╛ рд╡рд┐рдЪрд╛рд░рдгреЗ рдЦреВрдк рдорд╣рддреНрд╡рд╛рдЪреЗ рдЖрд╣реЗ: "рдорд╛рд▓рдХреАрдЪреЗ рдлрд╛рдЗрд▓ рд╕реНрд╡рд░реВрдк рдХрд╛ рд╡рд╛рдкрд░рд╛рд╡реЗ?" рд▓реЛрдбрд┐рдВрдЧ рдЧрддреА (gzipped CSV рдлрд╛рдпрд▓реАрдВрдирд╛ рд▓реЛрдб рд╣реЛрдгреНрдпрд╛рд╕рд╛рдареА 7 рдкрдЯ рдЬрд╛рд╕реНрдд рд╡реЗрд│ рд▓рд╛рдЧрд▓рд╛) рдЖрдгрд┐ рдЖрдордЪреНрдпрд╛ рд╡рд░реНрдХрдлреНрд▓реЛрд╕рд╣ рд╕реБрд╕рдВрдЧрддрддрд╛ рд╣реЗ рдХрд╛рд░рдг рдЖрд╣реЗ. R рд▓рд╛ рд╕реНрдкрд╛рд░реНрдХ рд▓реЛрдб рд╢рд┐рд╡рд╛рдп Parquet (рдХрд┐рдВрд╡рд╛ рдмрд╛рдг) рдлрд╛рдЗрд▓реНрд╕ рд╕рд╣рдЬ рд▓реЛрдб рдХрд░рддрд╛ рдпреЗрддрд╛рдд рдХрд╛ рдпрд╛рдЪрд╛ рдореА рдкреБрдирд░реНрд╡рд┐рдЪрд╛рд░ рдХрд░реВ рд╢рдХрддреЛ. рдЖрдордЪреНрдпрд╛ рд▓реЕрдмрдордзреАрд▓ рдкреНрд░рддреНрдпреЗрдХрдЬрдг рдЖрд░ рд╡рд╛рдкрд░рддреЛ рдЖрдгрд┐ рдорд▓рд╛ рдбреЗрдЯрд╛ рджреБрд╕рд░реНтАНрдпрд╛ рдлреЙрд░рдореЕрдЯрдордзреНрдпреЗ рд░реВрдкрд╛рдВрддрд░рд┐рдд рдХрд░рд╛рдпрдЪрд╛ рдЕрд╕рд▓реНрдпрд╛рд╕, рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рдореВрд│ рдордЬрдХреВрд░ рдбреЗрдЯрд╛ рдЖрд╣реЗ, рддреНрдпрд╛рдореБрд│реЗ рдореА рдкреБрдиреНрд╣рд╛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЪрд╛рд▓рд╡реВ рд╢рдХрддреЛ.
рдХрд╛рдорд╛рдЪреА рд╡рд┐рднрд╛рдЧрдгреА
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рдЬреЙрдмреНрд╕ рдореЕрдиреНрдпреБрдЕрд▓реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ рдирдХрд╛, рд╕рдВрдЧрдгрдХрд╛рд▓рд╛ рдХрд░реВ рджреНрдпрд╛.
рдореА рдПрдХрд╛ рдХреНрд░реЛрдореЛрд╕реЛрдорд╡рд░ рд╡рд░реНрдХрдлреНрд▓реЛ рдбреАрдмрдЧ рдХреЗрд▓рд╛ рдЖрд╣реЗ, рдЖрддрд╛ рдорд▓рд╛ рдЗрддрд░ рд╕рд░реНрд╡ рдбреЗрдЯрд╛рд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рд╛рдпрдЪреА рдЖрд╣реЗ.
рдорд▓рд╛ рд░реВрдкрд╛рдВрддрд░рдгрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ EC2 рдЙрджрд╛рд╣рд░рдгреЗ рд╡рд╛рдврд╡рд╛рдпрдЪреА рд╣реЛрддреА, рдкрд░рдВрддреБ рддреНрдпрд╛рдЪ рд╡реЗрд│реА рдорд▓рд╛ рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдЬреЙрдмреНрд╕рд╡рд░ рдЦреВрдк рдЕрд╕рдВрддреБрд▓рд┐рдд рднрд╛рд░ рдорд┐рд│рдгреНрдпрд╛рдЪреА рднреАрддреА рд╣реЛрддреА (рдЬрд╕реЗ рд╕реНрдкрд╛рд░реНрдХрд▓рд╛ рдЕрд╕рдВрддреБрд▓рд┐рдд рд╡рд┐рднрд╛рдЬрдирд╛рдВрдЪрд╛ рддреНрд░рд╛рд╕ рдЭрд╛рд▓рд╛). рдпрд╛рд╡реНрдпрддрд┐рд░рд┐рдХреНрдд, рдорд▓рд╛ рдкреНрд░рддрд┐ рдЧреБрдгрд╕реВрддреНрд░ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╡рд╛рдврд╡рд┐рдгреНрдпрд╛рдд рд╕реНрд╡рд╛рд░рд╕реНрдп рдирд╡реНрд╣рддреЗ, рдХрд╛рд░рдг AWS рдЦрд╛рддреНрдпрд╛рдВрд╕рд╛рдареА 10 рдЙрджрд╛рд╣рд░рдгрд╛рдВрдЪреА рдбреАрдлреЙрд▓реНрдЯ рдорд░реНрдпрд╛рджрд╛ рдЖрд╣реЗ.
рдордЧ рдореА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬреЙрдм рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА R рдордзреНрдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ.
рдкреНрд░рдердо, рдореА S3 рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдЧреБрдгрд╕реВрддреНрд░рд╛рдиреЗ рдХрд┐рддреА рд╕реНрдЯреЛрд░реЗрдЬ рд╕реНрдкреЗрд╕ рд╡реНрдпрд╛рдкрд▓реА рдЖрд╣реЗ рдпрд╛рдЪреА рдЧрдгрдирд╛ рдХрд░рдгреНрдпрд╛рд╕ рд╕рд╛рдВрдЧрд┐рддрд▓реЗ.
library(aws.s3)
library(tidyverse)
chr_sizes <- get_bucket_df(
bucket = '...', prefix = '...', max = Inf
) %>%
mutate(Size = as.numeric(Size)) %>%
filter(Size != 0) %>%
mutate(
# Extract chromosome from the file name
chr = str_extract(Key, 'chr.{1,4}.csv') %>%
str_remove_all('chr|.csv')
) %>%
group_by(chr) %>%
summarise(total_size = sum(Size)/1e+9) # Divide to get value in GB
# A tibble: 27 x 2
chr total_size
<chr> <dbl>
1 0 163.
2 1 967.
3 10 541.
4 11 611.
5 12 542.
6 13 364.
7 14 375.
8 15 372.
9 16 434.
10 17 443.
# тАж with 17 more rows
рдордЧ рдореА рдПрдХ рдлрдВрдХреНрд╢рди рд▓рд┐рд╣рд┐рд▓реЗ рдЬреЗ рдПрдХреВрдг рдЖрдХрд╛рд░ рдШреЗрддреЗ, рдЧреБрдгрд╕реВрддреНрд░рд╛рдВрдЪрд╛ рдХреНрд░рдо рдмрджрд▓рддреЗ, рддреНрдпрд╛рдВрдирд╛ рдЧрдЯрд╛рдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ num_jobs
рдЖрдгрд┐ рд╕рд░реНрд╡ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдиреЛрдХрд▒реНрдпрд╛рдВрдЪреЗ рдЖрдХрд╛рд░ рдХрд┐рддреА рднрд┐рдиреНрди рдЖрд╣реЗрдд рд╣реЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕рд╛рдВрдЧрддреЛ.
num_jobs <- 7
# How big would each job be if perfectly split?
job_size <- sum(chr_sizes$total_size)/7
shuffle_job <- function(i){
chr_sizes %>%
sample_frac() %>%
mutate(
cum_size = cumsum(total_size),
job_num = ceiling(cum_size/job_size)
) %>%
group_by(job_num) %>%
summarise(
job_chrs = paste(chr, collapse = ','),
total_job_size = sum(total_size)
) %>%
mutate(sd = sd(total_job_size)) %>%
nest(-sd)
}
shuffle_job(1)
# A tibble: 1 x 2
sd data
<dbl> <list>
1 153. <tibble [7 ├Ч 3]>
рдордЧ рдореА purrr рд╡рд╛рдкрд░реВрди рд╣рдЬрд╛рд░реЛ рдлреЗрд▒реНрдпрд╛ рдорд╛рд░рд▓реНрдпрд╛ рдЖрдгрд┐ рд╕рд░реНрд╡реЛрддреНрддрдо рдирд┐рд╡рдбрд▓реЗ.
1:1000 %>%
map_df(shuffle_job) %>%
filter(sd == min(sd)) %>%
pull(data) %>%
pluck(1)
рдореНрд╣рдгреВрди рдореА рдХрд╛рд░реНрдпрд╛рдВрдЪрд╛ рдПрдХ рд╕рдВрдЪ рдкреВрд░реНрдг рдХреЗрд▓рд╛ рдЬреЗ рдЖрдХрд╛рд░рд╛рдд рдЦреВрдк рд╕рд╛рд░рдЦреЗ рд╣реЛрддреЗ. рдордЧ рдорд╛рдЭреНрдпрд╛ рдорд╛рдЧреАрд▓ рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯрд▓рд╛ рдПрдХрд╛ рдореЛрдареНрдпрд╛ рд▓реВрдкрдордзреНрдпреЗ рдЧреБрдВрдбрд╛рд│рдгреЗ рдмрд╛рдХреА рд╣реЛрддреЗ for
. рд╣реЗ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рди рд▓рд┐рд╣рд┐рдгреНрдпрд╛рд╕рд╛рдареА рд╕реБрдорд╛рд░реЗ 10 рдорд┐рдирд┐рдЯреЗ рд▓рд╛рдЧрд▓реА. рдЖрдгрд┐ рд╣реЗ рдЕрд╕рдВрддреБрд▓рд┐рдд рдЕрд╕рд▓реНтАНрдпрд╛рд╕ рдореА рдореЕрдиреНрдпреБрдЕрд▓реА рддрдпрд╛рд░ рдХрд░рдгреНтАНрдпрд╛рд╡рд░ рдЦрд░реНрдЪ рдХрд░реЗрди рддреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рд╣реЗ рдЦреВрдкрдЪ рдХрдореА рдЖрд╣реЗ. рдореНрд╣рдгреВрди, рдорд▓рд╛ рд╡рд╛рдЯрддреЗ рдХреА рдореА рдпрд╛ рдкреНрд░рд╛рдердорд┐рдХ рдСрдкреНрдЯрд┐рдорд╛рдпрдЭреЗрд╢рдирд╕рд╣ рдпреЛрдЧреНрдп рд╣реЛрддреЛ.
for DESIRED_CHR in "16" "9" "7" "21" "MT"
do
# Code for processing a single chromosome
fi
рд╢реЗрд╡рдЯреА рдореА рд╢рдЯрдбрд╛рдЙрди рдХрдорд╛рдВрдб рдЬреЛрдбрддреЛ:
sudo shutdown -h now
... рдЖрдгрд┐ рд╕рд░реНрд╡рдХрд╛рд╣реА рдХрд╛рд░реНрдп рдХреЗрд▓реЗ! AWS CLI рд╡рд╛рдкрд░реВрди, рдореА рдкрд░реНрдпрд╛рдп рд╡рд╛рдкрд░реВрди рдЙрджрд╛рд╣рд░рдгреЗ рдорд╛рдВрдбрд▓реА user_data
рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреНрдпрд╛рдВрдирд╛ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рдВрдЪреНрдпрд╛ рдмреЕрд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рджрд┐рд▓реНрдпрд╛. рддреЗ рдзрд╛рд╡рд▓реЗ рдЖрдгрд┐ рдЖрдкреЛрдЖрдк рдмрдВрдж рдЭрд╛рд▓реЗ, рдореНрд╣рдгреВрди рдореА рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢рдХреНрддреАрд╕рд╛рдареА рдкреИрд╕реЗ рджреЗрдд рдирд╡реНрд╣рддреЛ.
aws ec2 run-instances ...
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=<<job_name>>}]"
--user-data file://<<job_script_loc>>
рдЪрд▓рд╛ рдкреЕрдХ рдХрд░реВрдпрд╛!
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рдПрдкреАрдЖрдп рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреНрдпрд╛ рд╕реБрд▓рднрддреЗрд╕рд╛рдареА рдЖрдгрд┐ рд▓рд╡рдЪрд┐рдХрддреЗрд╕рд╛рдареА рд╕реЛрдкреЗ рдЕрд╕рд╛рд╡реЗ.
рд╢реЗрд╡рдЯреА рдорд▓рд╛ рдпреЛрдЧреНрдп рдард┐рдХрд╛рдгреА рдЖрдгрд┐ рдлреЙрд░реНрдордордзреНрдпреЗ рдбреЗрдЯрд╛ рдорд┐рд│рд╛рд▓рд╛. рдорд╛рдЭреНрдпрд╛ рд╕рд╣рдХрд╛рд░реНтАНрдпрд╛рдВрд╕рд╛рдареА рд╢рдХреНрдп рддрд┐рддрдХреНрдпрд╛ рдбреЗрдЯрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд▓рдн рдХрд░рдгреЗ рдмрд╛рдХреА рдЖрд╣реЗ. рдорд▓рд╛ рд╡рд┐рдирдВрддреНрдпрд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╕рд╛рдзрд╛ API рдмрдирд╡рд╛рдпрдЪрд╛ рд╣реЛрддрд╛. рдЬрд░ рднрд╡рд┐рд╖реНрдпрд╛рдд рдореА рдпреЗрдереВрди рд╕реНрд╡рд┐рдЪ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛ .rds
Parquet рдлрд╛рдпрд▓реАрдВрд╕рд╛рдареА, рддрд░ рд╣реА рдорд╛рдЭреНрдпрд╛рд╕рд╛рдареА рд╕рдорд╕реНрдпрд╛ рдЕрд╕рд╛рд╡реА, рдорд╛рдЭреНрдпрд╛ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдВрд╕рд╛рдареА рдирд╛рд╣реА. рдпрд╛рд╕рд╛рдареА рдореА рдЕрдВрддрд░реНрдЧрдд рдЖрд░ рдкреЕрдХреЗрдЬ рдмрдирд╡рдгреНрдпрд╛рдЪрд╛ рдирд┐рд░реНрдгрдп рдШреЗрддрд▓рд╛.
рдлрдВрдХреНрд╢рдирдЪреНрдпрд╛ рдЖрд╕рдкрд╛рд╕ рдЖрдпреЛрдЬрд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлрдХреНрдд рдХрд╛рд╣реА рдбреЗрдЯрд╛ рдНрдХреНрд╕реЗрд╕ рдлрдВрдХреНрд╢рдиреНрд╕ рдЕрд╕рд▓реЗрд▓реЗ рдПрдХ рдЕрддрд┐рд╢рдп рд╕реЛрдкреЗ рдкреЕрдХреЗрдЬ рддрдпрд╛рд░ рдЖрдгрд┐ рджрд╕реНрддрдРрд╡рдЬреАрдХрд░рдг рдХрд░рд╛ get_snp
. рдореА рдорд╛рдЭреНрдпрд╛ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдВрд╕рд╛рдареА рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯрд╣реА рдмрдирд╡рд▓реА рдЖрд╣реЗ
рд╕реНрдорд╛рд░реНрдЯ рдХреЕрд╢рд┐рдВрдЧ
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ: рддреБрдордЪрд╛ рдбреЗрдЯрд╛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рддрдпрд╛рд░ рдЕрд╕рд▓реНрдпрд╛рд╕, рдХреЕрд╢рд┐рдВрдЧ рд╕реЛрдкреЗ рд╣реЛрдИрд▓!
рдореБрдЦреНрдп рдХрд╛рд░реНрдпрдкреНрд░рд╡рд╛рд╣рд╛рдВрдкреИрдХреА рдПрдХрд╛рдиреЗ SNP рдкреЕрдХреЗрдЬрд╡рд░ рд╕рдорд╛рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдореЙрдбреЗрд▓ рд▓рд╛рдЧреВ рдХреЗрд▓реНрдпрд╛рдореБрд│реЗ, рдореА рдорд╛рдЭреНрдпрд╛ рдлрд╛рдпрджреНрдпрд╛рд╕рд╛рдареА рдмрд┐рдирд┐рдВрдЧ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреЗ рдард░рд╡рд▓реЗ. SNP рджреНрд╡рд╛рд░реЗ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛рдирд╛, рд╕рдореВрд╣рд╛рддреАрд▓ рд╕рд░реНрд╡ рдорд╛рд╣рд┐рддреА (рдмрд┐рди) рдкрд░рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдСрдмреНрдЬреЗрдХреНрдЯрд╢реА рд╕рдВрд▓рдЧреНрди рдХреЗрд▓реА рдЬрд╛рддреЗ. рдореНрд╣рдгрдЬреЗрдЪ, рдЬреБрдиреНрдпрд╛ рдкреНрд░рд╢реНрдирд╛рдВрдореБрд│реЗ (рд╕реИрджреНрдзрд╛рдВрддрд┐рдХрджреГрд╖реНрдЯреНрдпрд╛) рдирд╡реАрди рдкреНрд░рд╢реНрдирд╛рдВрдЪреНрдпрд╛ рдкреНрд░рдХреНрд░рд┐рдпреЗрд╕ рдЧрддреА рдорд┐рд│реВ рд╢рдХрддреЗ.
# Part of get_snp()
...
# Test if our current snp data has the desired snp.
already_have_snp <- desired_snp %in% prev_snp_results$snps_in_bin
if(!already_have_snp){
# Grab info on the bin of the desired snp
snp_results <- get_snp_bin(desired_snp)
# Download the snp's bin data
snp_results$bin_data <- aws.s3::s3readRDS(object = snp_results$data_loc)
} else {
# The previous snp data contained the right bin so just use it
snp_results <- prev_snp_results
}
...
рдкреЕрдХреЗрдЬ рддрдпрд╛рд░ рдХрд░рддрд╛рдирд╛, рдореА рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдкрджреНрдзрддреА рд╡рд╛рдкрд░рддрд╛рдирд╛ рд╡реЗрдЧрд╛рдЪреА рддреБрд▓рдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреЗрдХ рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдЪрд╛рд▓рд╡рд▓реЗ. рдореА рдпрд╛рдХрдбреЗ рджреБрд░реНрд▓рдХреНрд╖ рди рдХрд░рдгреНрдпрд╛рдЪреА рд╢рд┐рдлрд╛рд░рд╕ рдХрд░рддреЛ, рдХрд╛рд░рдг рдХрдзреАрдХрдзреА рдкрд░рд┐рдгрд╛рдо рдЕрдирдкреЗрдХреНрд╖рд┐рдд рдЕрд╕рддрд╛рдд. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, dplyr::filter
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛-рдЖрдзрд╛рд░рд┐рдд рдлрд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╡рд╛рдкрд░реВрди рдкрдВрдХреНрддреА рдХреЕрдкреНрдЪрд░ рдХрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЦреВрдк рдЬрд▓рдж рд╣реЛрддреЗ рдЖрдгрд┐ рдлрд┐рд▓реНрдЯрд░ рдХреЗрд▓реЗрд▓реНрдпрд╛ рдбреЗрдЯрд╛ рдлреНрд░реЗрдордордзреВрди рдПрдХрд▓ рд╕реНрддрдВрдн рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░рдгреЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╡рд╛рдХреНрдпрд░рдЪрдирд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдЦреВрдк рдЬрд▓рдж рд╣реЛрддреЗ.
рдХреГрдкрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдШреНрдпрд╛ рдХреА рдСрдмреНрдЬреЗрдХреНрдЯ prev_snp_results
рдХреА рд╕рдорд╛рд╡рд┐рд╖реНрдЯреАрдд рдЖрд╣реЗ snps_in_bin
. рд╣рд╛ рд╕рдореВрд╣ (рдмрд┐рди) рдордзреАрд▓ рд╕рд░реНрд╡ рдЕрдирдиреНрдп SNPs рдЪрд╛ рдПрдХ рдЕреЕрд░реЗ рдЖрд╣реЗ, рдЬреЛ рддреБрдореНрд╣рд╛рд▓рд╛ рдЖрдзреАрдкрд╛рд╕реВрди рдЖрдзреАрдЪреНрдпрд╛ рдХреНрд╡реЗрд░реАрдордзреАрд▓ рдбреЗрдЯрд╛ рдЖрд╣реЗ рдХрд╛ рддреЗ рддреНрд╡рд░рд┐рдд рддрдкрд╛рд╕рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЛ. рдпрд╛ рдХреЛрдбрд╕рд╣ рдЧрдЯрд╛рддреАрд▓ (рдмрд┐рди) рд╕рд░реНрд╡ SNP рдордзреВрди рд▓реВрдк рдХрд░рдгреЗ рджреЗрдЦреАрд▓ рд╕реЛрдкреЗ рдХрд░рддреЗ:
# Get bin-mates
snps_in_bin <- my_snp_results$snps_in_bin
for(current_snp in snps_in_bin){
my_snp_results <- get_snp(current_snp, my_snp_results)
# Do something with results
}
рдирд┐рдХрд╛рд▓
рдЖрддрд╛ рдЖрдореНрд╣реА рдореЙрдбреЗрд▓ рдЖрдгрд┐ рдкрд░рд┐рд╕реНрдерд┐рддреА рдЪрд╛рд▓рд╡реВ рд╢рдХрддреЛ (рдЖрдгрд┐ рдЧрд╛рдВрднреАрд░реНрдпрд╛рдиреЗ рд╕реБрд░реБрд╡рд╛рдд рдХреЗрд▓реА рдЖрд╣реЗ) рдЬреА рдЖрдордЪреНрдпрд╛рд╕рд╛рдареА рдкреВрд░реНрд╡реА рдЕрдЧрдореНрдп рд╣реЛрддреА. рд╕рд░реНрд╡рд╛рдд рдЪрд╛рдВрдЧрд▓реА рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдорд╛рдЭреНрдпрд╛ рдкреНрд░рдпреЛрдЧрд╢рд╛рд│реЗрддреАрд▓ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдВрдирд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЧреБрдВрддрд╛рдЧреБрдВрддреАрдмрджреНрджрд▓ рд╡рд┐рдЪрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА. рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдлрдХреНрдд рдПрдХ рдХрд╛рд░реНрдп рдЖрд╣реЗ рдЬреЗ рдХрд╛рд░реНрдп рдХрд░рддреЗ.
рдЖрдгрд┐ рдЬрд░реА рдкреЕрдХреЗрдЬрдиреЗ рддреНрдпрд╛рдВрдирд╛ рддрдкрд╢реАрд▓ рджрд┐рд▓реЗрд▓рд╛ рдЕрд╕рд▓рд╛ рддрд░реА, рдореА рдбреЗрдЯрд╛рдЪреЗ рд╕реНрд╡рд░реВрдк рдЗрддрдХреЗ рд╕реЛрдкреЗ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХреЗрд▓рд╛ рдХреА рдореА рдЙрджреНрдпрд╛ рдЕрдЪрд╛рдирдХ рдЧрд╛рдпрдм рдЭрд╛рд▓реЛ рддрд░ рддреЗ рд╕рдордЬреВ рд╢рдХрддреАрд▓...
рд╡реЗрдЧ рд▓рдХреНрд╖рдгреАрдп рд╡рд╛рдврд▓рд╛ рдЖрд╣реЗ. рдЖрдореНрд╣реА рд╕рд╣рд╕рд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХрджреГрд╖реНрдЯреНрдпрд╛ рдорд╣рддреНрддреНрд╡рдкреВрд░реНрдг рдЬреАрдиреЛрдордЪреЗ рддреБрдХрдбреЗ рд╕реНрдХреЕрди рдХрд░рддреЛ. рдкреВрд░реНрд╡реА, рдЖрдореНрд╣реА рд╣реЗ рдХрд░реВ рд╢рдХрдд рдирд╡реНрд╣рддреЛ (рддреЗ рдЦреВрдк рдорд╣рд╛рдЧ рд╣реЛрддреЗ), рдкрд░рдВрддреБ рдЖрддрд╛, рдЧрдЯ (рдмрд┐рди) рд░рдЪрдирд╛ рдЖрдгрд┐ рдХреЕрд╢рд┐рдВрдЧрдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, рдПрдХрд╛ рдПрд╕рдПрдирдкреАрд╕рд╛рдареА рд╡рд┐рдирдВрддреА рд╕рд░рд╛рд╕рд░реА 0,1 рд╕реЗрдХрдВрджрд╛рдВрдкреЗрдХреНрд╖рд╛ рдХрдореА рд╡реЗрд│ рдШреЗрддреЗ рдЖрдгрд┐ рдбреЗрдЯрд╛ рд╡рд╛рдкрд░ рдЗрддрдХрд╛ рдЖрд╣реЗ S3 рдЪреА рдХрд┐рдВрдордд рд╢реЗрдВрдЧрджрд╛рдгреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рдХрдореА рдЖрд╣реЗ.
рдЕрд▓реАрдХрдбреЗрдЪ рдореА рдорд╛рдЭреНрдпрд╛ рд▓реЕрдмрд╕рд╛рдареА 25+ рдЯреАрдмреА рдХрдЪреНрдЪреНрдпрд╛ рдЬреАрдиреЛрдЯрд╛рдЗрдкрд┐рдВрдЧ рдбреЗрдЯрд╛рдордзреНрдпреЗ рдмрджрд▓ рдХреЗрд▓рд╛ рдЖрд╣реЗ. рдореА рд╕реБрд░реВ рдХреЗрд▓реНрдпрд╛рд╡рд░, рд╕реНрдкрд╛рд░реНрдХ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА 8 рдорд┐рдирд┐рдЯреЗ рд▓рд╛рдЧрд▓реА рдЖрдгрд┐ SNP рдЪреА рдЪреМрдХрд╢реА рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА $20 рдЦрд░реНрдЪ рдЖрд▓рд╛. AWK+ рд╡рд╛рдкрд░рд▓реНрдпрд╛рдирдВрддрд░
#рдЖрдХрдбреЗрд╡рд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рдЖрддрд╛ рдПрдХрд╛ рд╕реЗрдХрдВрджрд╛рдЪреНрдпрд╛ 10рд╡реНрдпрд╛ рдкреЗрдХреНрд╖рд╛ рдХрдореА рд╡реЗрд│ рд▓рд╛рдЧрддреЛ рдЖрдгрд┐ рддреНрдпрд╛рдЪреА рдХрд┐рдВрдордд $0.00001 рдЖрд╣реЗ. рдорд╛рдЭреЗ рд╡реИрдпрдХреНрддрд┐рдХ#рдореЛрдареА рдорд╛рд╣рд┐рддреА рдЬрд┐рдВрдХрдгреЗ.pic.twitter.com/ANOXVGrmkk тАФ рдирд┐рдХ рд╕реНрдЯреНрд░рд╛рдпрд░ (@ рдирд┐рдХреЛрд▓рд╕ рд╕реНрдЯреНрд░реЗрдпрд░)
30 рд╢рдХрддреЗ, 2019
рдирд┐рд╖реНрдХрд░реНрд╖
рд╣рд╛ рд▓реЗрдЦ рдЕрдЬрд┐рдмрд╛рдд рдорд╛рд░реНрдЧрджрд░реНрд╢рдХ рдирд╛рд╣реА. рдЙрдкрд╛рдп рд╡реИрдпрдХреНрддрд┐рдХ рдЕрд╕рд▓реНрдпрд╛рдЪреЗ рджрд┐рд╕реВрди рдЖрд▓реЗ рдЖрдгрд┐ рдЬрд╡рд│рдЬрд╡рд│ рдирдХреНрдХреАрдЪ рдЗрд╖реНрдЯрддрдо рдирд╛рд╣реА. рдЙрд▓рдЯ рддреЗ рдПрдХ рдкреНрд░рд╡рд╛рд╕рд╡рд░реНрдгрди рдЖрд╣реЗ. рдорд▓рд╛ рдЗрддрд░рд╛рдВрдиреА рд╕рдордЬреВрди рдШреНрдпрд╛рдпрдЪреЗ рдЖрд╣реЗ рдХреА рдЕрд╕реЗ рдирд┐рд░реНрдгрдп рдкреВрд░реНрдгрдкрдгреЗ рдбреЛрдХреНрдпрд╛рдд рддрдпрд╛рд░ рдЭрд╛рд▓реЗрд▓реЗ рджрд┐рд╕рдд рдирд╛рд╣реАрдд, рддреЗ рдЪрд╛рдЪрдгреА рдЖрдгрд┐ рддреНрд░реБрдЯреАрдЪреЗ рдкрд░рд┐рдгрд╛рдо рдЖрд╣реЗрдд. рддрд╕реЗрдЪ, рдЬрд░ рддреБрдореНрд╣реА рдбреЗрдЯрд╛ рд╕рд╛рдпрдВрдЯрд┐рд╕реНрдЯ рд╢реЛрдзрдд рдЕрд╕рд╛рд▓, рддрд░ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛ рдХреА рд╣реА рд╕рд╛рдзрдиреЗ рдкреНрд░рднрд╛рд╡реАрдкрдгреЗ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЕрдиреБрднрд╡рд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕рддреЗ рдЖрдгрд┐ рдЕрдиреБрднрд╡рд╛рд╕рд╛рдареА рдкреИрд╕реЗ рд▓рд╛рдЧрддрд╛рдд. рдорд▓рд╛ рдЖрдирдВрдж рдЖрд╣реЗ рдХреА рдорд╛рдЭреНрдпрд╛рдХрдбреЗ рдкреИрд╕реЗ рднрд░рдгреНрдпрд╛рдЪреЗ рд╕рд╛рдзрди рд╣реЛрддреЗ, рдкрд░рдВрддреБ рдорд╛рдЭреНрдпрд╛рдкреЗрдХреНрд╖рд╛ рддреЗрдЪ рдХрд╛рдо рдЪрд╛рдВрдЧрд▓реЗ рдХрд░реВ рд╢рдХрдгрд╛рд░реНтАНрдпрд╛ рдЗрддрд░ рдЕрдиреЗрдХрд╛рдВрдирд╛ рдкреИрд╢рд╛рдВрдЪреНрдпрд╛ рдХрдорддрд░рддреЗрдореБрд│реЗ рдкреНрд░рдпрддреНрди рдХрд░рдгреНрдпрд╛рдЪреА рд╕рдВрдзреА рдХрдзреАрдЪ рдорд┐рд│рдгрд╛рд░ рдирд╛рд╣реА.
рдореЛрдареА рдбреЗрдЯрд╛ рд╕рд╛рдзрдиреЗ рдмрд╣реБрдореБрдЦреА рдЖрд╣реЗрдд. рддреБрдордЪреНрдпрд╛рдХрдбреЗ рд╡реЗрд│ рдЕрд╕рд▓реНрдпрд╛рд╕, рддреБрдореНрд╣реА рд╕реНрдорд╛рд░реНрдЯ рдбреЗрдЯрд╛ рдХреНрд▓реАрдирд┐рдВрдЧ, рд╕реНрдЯреЛрд░реЗрдЬ рдЖрдгрд┐ рдПрдХреНрд╕рдЯреНрд░реЕрдХреНрд╢рди рддрдВрддреНрд░рд╛рдВрдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдЬрд▓рдж рд╕рдорд╛рдзрд╛рди рдирдХреНрдХреАрдЪ рд▓рд┐рд╣реВ рд╢рдХрддрд╛. рд╢реЗрд╡рдЯреА рддреЗ рдЦрд░реНрдЪ-рд▓рд╛рдн рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рд╡рд░ рдпреЗрддреЗ.
рдореА рдХрд╛рдп рд╢рд┐рдХрд▓реЛ:
- рдПрдХрд╛ рд╡реЗрд│реА 25 рдЯреАрдмреА рдкрд╛рд░реНрд╕ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдХреЛрдгрддрд╛рд╣реА рд╕реНрд╡рд╕реНрдд рдорд╛рд░реНрдЧ рдирд╛рд╣реА;
- рдЖрдкрд▓реНрдпрд╛ Parquet рдлрд╛рдЗрд▓реНрд╕ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреНрдпрд╛ рд╕рдВрд╕реНрдереЗрдЪреНрдпрд╛ рдЖрдХрд╛рд░рд╛рдмрджреНрджрд▓ рд╕рд╛рд╡рдзрдЧрд┐рд░реА рдмрд╛рд│рдЧрд╛;
- рд╕реНрдкрд╛рд░реНрдХрдордзреАрд▓ рд╡рд┐рднрд╛рдЬрдиреЗ рд╕рдВрддреБрд▓рд┐рдд рдЕрд╕рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ;
- рд╕рд░реНрд╡рд╕рд╛рдзрд╛рд░рдгрдкрдгреЗ, 2,5 рджрд╢рд▓рдХреНрд╖ рд╡рд┐рднрд╛рдЬрдиреЗ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдХрдзреАрд╣реА рдкреНрд░рдпрддреНрди рдХрд░реВ рдирдХрд╛;
- рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдЕрдЬреВрдирд╣реА рдХрдареАрдг рдЖрд╣реЗ, рдЬрд╕реЗ рд╕реНрдкрд╛рд░реНрдХ рд╕реЗрдЯ рдХрд░рдгреЗ;
- рдХрдзреАрдХрдзреА рд╡рд┐рд╢реЗрд╖ рдбреЗрдЯрд╛рд╕рд╛рдареА рд╡рд┐рд╢реЗрд╖ рдЙрдкрд╛рдп рдЖрд╡рд╢реНрдпрдХ рдЕрд╕рддрд╛рдд;
- рд╕реНрдкрд╛рд░реНрдХ рдПрдХрддреНрд░реАрдХрд░рдг рдЬрд▓рдж рдЖрд╣реЗ, рдкрд░рдВрддреБ рд╡рд┐рднрд╛рдЬрди рдХрд░рдгреЗ рдЕрджреНрдпрд╛рдк рдорд╣рд╛рдЧ рдЖрд╣реЗ;
- рдЬреЗрд╡реНрд╣рд╛ рддреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рдореВрд▓рднреВрдд рдЧреЛрд╖реНрдЯреА рд╢рд┐рдХрд╡рддреАрд▓ рддреЗрд╡реНрд╣рд╛ рдЭреЛрдкреВ рдирдХрд╛, рдХрджрд╛рдЪрд┐рдд 1980 рдЪреНрдпрд╛ рджрд╢рдХрд╛рдд рдХреЛрдгреАрддрд░реА рддреБрдордЪреА рд╕рдорд╕реНрдпрд╛ рдЖрдзреАрдЪ рд╕реЛрдбрд╡рд▓реА рдЕрд╕реЗрд▓;
gnu parallel
- рд╣реА рдПрдХ рдЬрд╛рджреВрдЪреА рдЧреЛрд╖реНрдЯ рдЖрд╣реЗ, рдкреНрд░рддреНрдпреЗрдХрд╛рдиреЗ рддреА рд╡рд╛рдкрд░рд▓реА рдкрд╛рд╣рд┐рдЬреЗ;- рд╕реНрдкрд╛рд░реНрдХрд▓рд╛ рдЕрд╕рдВрдкреАрдбрд┐рдд рдбреЗрдЯрд╛ рдЖрд╡рдбрддреЛ рдЖрдгрд┐ рд╡рд┐рднрд╛рдЬрдиреЗ рдПрдХрддреНрд░ рдХрд░рдгреЗ рдЖрд╡рдбрдд рдирд╛рд╣реА;
- рд╕рд╛рдзреНрдпрд╛ рд╕рдорд╕реНрдпрд╛рдВрдЪреЗ рдирд┐рд░рд╛рдХрд░рдг рдХрд░рддрд╛рдирд╛ рд╕реНрдкрд╛рд░реНрдХрдордзреНрдпреЗ рдЦреВрдк рдУрд╡реНрд╣рд░рд╣реЗрдб рдЖрд╣реЗ;
- AWK рдЪреНрдпрд╛ рд╕рд╣рдпреЛрдЧреА рдЕреЕрд░реЗ рдЕрддрд┐рд╢рдп рдХрд╛рд░реНрдпрдХреНрд╖рдо рдЖрд╣реЗрдд;
- рддреБрдореНрд╣реА рд╕рдВрдкрд░реНрдХ рдХрд░реВ рд╢рдХрддрд╛
stdin
╨╕stdout
рдЖрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯрдордзреВрди, рдЖрдгрд┐ рдореНрд╣рдгреВрди рдкрд╛рдЗрдкрд▓рд╛рдЗрдирдордзреНрдпреЗ рд╡рд╛рдкрд░рд╛; - рд╕реНрдорд╛рд░реНрдЯ рдкрде рдЕрдВрдорд▓рдмрдЬрд╛рд╡рдгреАрдмрджреНрджрд▓ рдзрдиреНрдпрд╡рд╛рдж, S3 рдЕрдиреЗрдХ рдлрд╛рдпрд▓реАрдВрд╡рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реВ рд╢рдХрддреЗ;
- рд╡реЗрд│ рд╡рд╛рдпрд╛ рдШрд╛рд▓рд╡рдгреНрдпрд╛рдЪреЗ рдореБрдЦреНрдп рдХрд╛рд░рдг рдореНрд╣рдгрдЬреЗ рд╡реЗрд│реЗрдЖрдзреАрдЪ рддреБрдордЪреА рд╕реНрдЯреЛрд░реЗрдЬ рдкрджреНрдзрдд рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреЗ;
- рдХрд╛рд░реНрдпреЗ рд╡реНрдпрдХреНрддрд┐рдЪрд▓рд┐рддрдкрдгреЗ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░реВ рдирдХрд╛, рд╕рдВрдЧрдгрдХрд╛рд▓рд╛ рдХрд░реВ рджреНрдпрд╛;
- рд╡рд╛рдкрд░рд╛рдЪреНрдпрд╛ рд╕реБрд▓рднрддреЗрд╕рд╛рдареА рдЖрдгрд┐ рд▓рд╡рдЪрд┐рдХрддреЗрд╕рд╛рдареА API рд╕реЛрдкреЗ рдЕрд╕рд╛рд╡реЗ;
- рдЬрд░ рддреБрдордЪрд╛ рдбреЗрдЯрд╛ рдЪрд╛рдВрдЧрд▓рд╛ рддрдпрд╛рд░ рдЕрд╕реЗрд▓, рддрд░ рдХреЕрд╢рд┐рдВрдЧ рд╕реЛрдкреЗ рд╣реЛрдИрд▓!
рд╕реНрддреНрд░реЛрдд: www.habr.com