Linux trong cộng đồng khoa học
Sẽ không có gì ngạc nhiên rằng Linux là một sự hiện diện điển hình trong cộng đồng khoa học.
Có rất nhiều giải pháp từ các hệ thống điện toán hiệu năng cao đến các phần mềm hiển thị trực
quan. Thậm chí còn có một bản phân phối đầy đủ dựa trên Red Hat (bản Linux dành cho doanh
nghiệp) tập trung vào khả năng tính toán khoa học, được gọi là Scientific Linux.
Bản phân phối Sage và Python của Enthought
Bài này xem xét hai cách khác nhau về sử dụng một máy trạm Linux cho quá trình tính toán
khoa học. Cách đầu tiên là hệ thống toán học nguồn mở Sage và cách thứ hai là Bản phân phối
Python của Enthought (EPD). Cả hai cách đều sử dụng một số công cụ Python nguồn mở cốt lõi
để thực hiện những việc phức tạp. Nếu bạn muốn thử chúng, hãy cài đặt các đoạn mã riêng lẻ
bằng cách sử dụng hệ điều hành Ubuntu.
10 trang |
Chia sẻ: lylyngoc | Lượt xem: 1818 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Khám phá Linux - Một nền tảng máy tính khoa học, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Khám phá Linux - một nền tảng máy tính khoa học
Linux trong cộng đồng khoa học
Sẽ không có gì ngạc nhiên rằng Linux là một sự hiện diện điển hình trong cộng đồng khoa học.
Có rất nhiều giải pháp từ các hệ thống điện toán hiệu năng cao đến các phần mềm hiển thị trực
quan. Thậm chí còn có một bản phân phối đầy đủ dựa trên Red Hat (bản Linux dành cho doanh
nghiệp) tập trung vào khả năng tính toán khoa học, được gọi là Scientific Linux.
Bản phân phối Sage và Python của Enthought
Bài này xem xét hai cách khác nhau về sử dụng một máy trạm Linux cho quá trình tính toán
khoa học. Cách đầu tiên là hệ thống toán học nguồn mở Sage và cách thứ hai là Bản phân phối
Python của Enthought (EPD). Cả hai cách đều sử dụng một số công cụ Python nguồn mở cốt lõi
để thực hiện những việc phức tạp. Nếu bạn muốn thử chúng, hãy cài đặt các đoạn mã riêng lẻ
bằng cách sử dụng hệ điều hành Ubuntu.
Sage có ưu điểm hơn trong hai cách trên ở chỗ nó có nhiều hơn một lớp vỏ qua một số các công
cụ bên dưới khác nhau. Thậm chí từ dòng lệnh Sage bạn có thể tương tác với các sản phẩm
thương mại như MATLAB hoặc Mathematica. Tại dấu nhắc của Sage, về cơ bản bạn tương tác
với IPython bằng việc truy cập vào tất cả các tính năng của nó. Bạn cũng phải suy nghĩ về các
đối tượng và các phương pháp khi bạn bắt đầu tìm hiểu những khả năng của Sage. Sage bao gồm
một số các hệ thống đại số của máy tính khác nhau và cho phép người dùng tương tác với chúng
từ dòng lệnh.
Điều quan trọng cần lưu ý rằng Sage dựa trên Python nhưng có phân tích trước cú pháp từng câu
lệnh trước khi chuyển nó tới trình thông dịch Python. Điều này có thể gây ra một số nhầm lẫn
khi xem xét các lệnh Sage tương tác đơn giản. Lý do cơ bản đối với hành vi này là mong muốn
thực hiện gõ các lệnh vào Sage theo nghĩa toán học càng trực quan càng tốt. Một ví dụ hay là ký
hiệu lũy thừa. Trong Python thuần túy, bạn phải gõ 2**4 để làm cho lũy thừa hai thành bốn.
Trong Sage bạn sử dụng ký hiệu mũi tên lên (^), như là 2^4. Sage cũng xử lý một số hoạt động
ví dụ như chia số nguyên khác với Python cơ bản.
NumPy và SciPy
Hai đoạn mã trò chơi câu đố cơ bản nổi tiếng nhất với cả hai Sage và EDP là NumPy và SciPy.
Cả hai dự án đã được dùng từ giữa đến cuối những năm 1990 và ban đầu được khởi động bởi
Travis Oliphant, hiện nay là một nhân viên tại Enthought. NumPy cung cấp các phương thức số
cốt lõi để thao tác các mảng và các ma trận. SciPy phụ thuộc vào NumPy với cấu trúc dữ liệu
mảng cơ bản của nó và chứa một loạt các mô đun dùng cho tất cả mọi thứ từ đại số tuyến tính
đến xử lý tín hiệu. Enthought là nhà tài trợ của cả hai dự án và tiếp tục đóng góp rất nhiều vào
phiên bản mới.
Về đầu trang
Cài đặt Sage
Có sẵn một số tùy chọn để cài đặt Sage. Để xem xét qua về Sage mà không cần cài đặt, bạn có
thể sử dụng một phiên bản trực tiếp từ đĩa CD. Bạn cũng có thể chạy đĩa CD trực tiếp trong một
máy ảo như Oracle VM VirtualBox hay VMware Player. Bài này xem xét việc cài đặt Sage trên
cả hai máy tính vật lý và máy ảo đang chạy phiên bản Ubuntu (12.04) mới nhất.
Máy tính vật lý
Cài đặt Sage từ nguồn là phương pháp tin cậy nhất trên Unbuntu 12.04 bởi vì hệ điều hành này
chỉ mới được phát hành gần đây. Tải tệp tarball nguồn và giải nén nó vào một thư mục thuận
tiện. Bạn cũng cần cài đặt một số thư viện cần thiết trước khi tiến hành build, bạn có thể thực
hiện việc này bằng các lệnh sau đây:
sudo apt-get install build-essential gfortran
sudo apt-get install texlive xpdf evince
sudo apt-get install tk8.5-dev
Sau khi cài đặt các thư viện cần thiết, bạn đã sẵn sàng build Sage, bạn có thể chạy với lệnh sau
đây:
make
Lúc này, hãy đi xem phim hoặc chợp mắt một lát. Toàn bộ quá trình build có thể mất vài giờ trên
một máy tính để bàn thông thường. Bạn sẽ thấy một màn hình như trong Hình 1 nếu tất cả mọi
thứ đang được biuld một cách chính xác.
Hình 1. Màn hình xây dựng Sage
Máy ảo
Việc cài đặt trên một máy ảo là một tùy chọn tốt nếu bạn không thích mạo hiểm và chỉ muốn bắt
đầu sử dụng Sage. Một gói OVA (Open Virtualization Archive – Tệp lưu trữ ảo hóa mở) hiện có
sẵn để tải về trên trang web Sage cùng với các gói tệp nhị phân cho Fedora 16 và Ubuntu
10.04.3. OVA là một gói tệp duy nhất (về thực chất là một tệp tar) có chứa tất cả các tệp cần thiết
để khởi chạy máy ảo theo OVF (Open Virtualization Format – Định dạng ảo hóa mở).
Về đầu trang
Sử dụng Sage
Khi bạn đã cài đặt xong Sage, bạn đã sẵn sàng bắt đầu cuộc hành trình khám phá và khai thác
toán học. Sage vừa có một dòng lệnh và vừa có một giao diện dựa trên web.
Giao diện dòng lệnh
Để khởi chạy phiên bản dòng lệnh từ thư mục, nơi bạn đã build Sage, bạn chỉ cần gõ lệnh sau:
./sage
Hình 2 cho thấy một ví dụ về trình thông dịch Sage và một số cách diễn giải toán học đã đề cập ở
trên.
Hình 2. Các cách diễn giải toán học và giao diện dòng lệnh của Sage
Sự khác biệt trong phép chia số nguyên liên quan tới cách Python xử lý kiểu phép toán (số
nguyên, dấu phẩy động và v.v). Trong Python, biểu thức 2/3 gán một kết quả số nguyên làm tròn
xuống đến không. Sage xử lý toán tử chia như là một hàm dựng cho các số hữu tỷ, có nghĩa là
bạn có thể thực hiện các phép toán dựa vào các phân số theo nhiều cách tương tự như bạn làm
trên giấy. Ví dụ, nếu bạn gõ 2/3 + 2/3 tại dấu nhắc của Sage, bạn sẽ nhận được kết quả là 4/3.
Nếu bạn gõ cùng một điều tương tự trong Python, kết quả là 0. Bạn có thể ngầm định bắt dùng
kiểu chữ khi sử dụng float() hoặc int() như trong Hình 2.
Giao diện dựa trên web
Để sử dụng Sage Notebook (Sổ tay Sage), bạn có thể gõ hoặc notebook() sau khi khởi động
Sage hoặc sử dụng lệnh sau:
./sage --notebook
Lệnh này khởi chạy máy chủ Sage và trình duyệt web mặc định sẽ mở trang chủ Sage Notebook.
Bạn sẽ tìm thấy nhiều tính năng trong sổ tay để làm cho việc thao tác công việc của bạn dễ dàng,
chẳng hạn như lưu và nạp các tờ bảng tính vào một tệp, cộng với các chức năng sao chép, xóa và
đổi tên thông thường. Sage làm cho công việc cộng tác dễ dàng với các chức năng Chia sẻ và
Xuất bản trong Hình 3.
Hình 3. Các tính năng của Sage Notebook
Các gói đại số của máy tính
Bản phân phối Sage cơ sở bao gồm một số gói đại số máy tính bao gồm có GAP, Maxima, Pari
và Singular. Mỗi gói có những người ủng hộ riêng của mình trong cộng đồng toán học và cung
cấp chức năng hơi khác nhau một chút. Điều chủ yếu ở đây là ở chỗ Sage bao gồm mỗi gói này
trong một bản phân phối cơ sở, có nghĩa là bạn không phải tải về và cài đặt chúng một cách riêng
biệt.
Hình 4 cho thấy một ví dụ về sử dụng Maxima để thực hiện một số phép toán ma trận. Điều này
đã được thực hiện bằng cách sử dụng Sage Notebook và nó cho thấy mục nhập vào của người sử
dụng có màu đen cùng với kết quả màu xanh lam. Hai dòng đầu tiên tạo ra một ma trận với các
mục nhập bằng i/j , ở đây phạm vi i và j là từ 1 đến 4. Lưu ý rằng đây là những số hữu tỷ (các
phân số).
Hình 4. Các phép toán ma trận với Maxima
Xuất bản các bài báo khoa học
Việc xuất bản các bài báo khoa học là một yêu cầu đối với nhiều người trong cộng đồng giáo
dục. Sage đòi hỏi rằng mọi đối tượng đều có một đại diện LaTeX. Điều này được gắn trực tiếp
với nhu cầu sản xuất các đồ họa và văn bản có chất lượng-xuất bản bằng cách sử dụng ngôn ngữ
TeX. Hãy hiểu rõ rằng bạn cần một bản cài đặt TeX đầy đủ để tận dụng lợi thế của tất cả các tính
năng mà Sage cung cấp.
Về đầu trang
Cài đặt EPD
Tính toán khoa học với Python là những gì mà Enthought phải làm với tư cách là một công ty.
Các đề xuất và sự hỗ trợ sản phẩm thương mại của Enthought là những thứ phải trả theo các hóa
đơn, nhưng chúng vẫn đóng góp cho cộng đồng nguồn mở theo cách tốt đẹp. Những đóng góp
của chúng trực tiếp hoạt động tốt trên cơ sở mã NumPy và SciPy cũng như khi trình bày tại hội
nghị thường niên PyCon và khi lưu trữ hội nghị SciPy trên máy chủ.
Bạn có thể sử dụng trình quản lý phần mềm Ubuntu để cài đặt các đoạn mã khác nhau cần thiết
để bắt đầu chạy với IPython, NumPy và SciPy hoặc bạn có thể chỉ tải về và cài đặt phiên bản
miễn phí của EPD, được biết đến là EPD Free (EPD miễn phí). Enthought cung cấp cả hai phiên
bản 32 - và 64-bit của EPD Free, đã được thử nghiệm trên Red Hat, Ubuntu, openSUSE. Chúng
đã cảnh báo rằng một số hệ thống Linux 64-bit không bao gồm các thư viện của 32-bit, vì vậy
cần có một phiên bản 64-bit của gói đó.
Để cài đặt EPD Free, đầu tiên hãy tải về kịch bản lệnh của trình cài đặt và sau đó chạy nó với
lệnh sau đây:
bash epd_free-7-2-2-rh5-x86.sh
Để làm cho việc khởi chạy EPD trong tương lai dễ dàng hơn, bạn cần phải thêm một vài dòng
mã vào tệp khởi động shell của mình (hoặc .cshrc hoặc .bash_profile). Ubuntu sử dụng shell bash
là mặc định, vì vậy tôi hiển thị mã dựa vào đó. Với bài viết này tôi sử dụng các dòng sau:
export PATH=/home/paul/Downloads/epd_free-7.2-2-rh5-x86_64/bin:$PATH
Về đầu trang
Sử dụng EPD
IPython có điểm chung khác giữa EPD và Sage vì nó là công cụ giao diện người dùng chính.
EPD cài đặt cho cả một giao diện dòng lệnh lẫn chức năng sổ tay dựa trên web, giống như Sage.
Giao diện dòng lệnh
Giao diện điều khiển dựa trên Qt cung cấp một số chức năng nâng cao, bao gồm cả tô mầu toàn
bộ cú pháp bằng cách sử dụng thư viện Pygments. Nó cũng cung cấp khả năng để thực hiện các
bản vẽ đồ thị trực tuyến. Để có được khả năng này, bạn có thể khởi chạy IPython bằng lệnh sau
đây:
ipython --pylab
Hình 5 cho thấy giao diện điều khiển Qt với một bản vẽ đồ thị nhúng.
Hình 5. Tạo một dự án PyDev mới
Giao diện dựa trên web
Phiên bản mới nhất của IPython (0.12) bao gồm một khả năng sổ tay dựa trên web, tương tự như
Sage. Để có được chức năng sổ tay này, bạn cần phải cài đặt các phụ thuộc, bao gồm máy chủ
web ZeroMQ và Tornado. Để khởi chạy chức năng sổ tay từ dòng lệnh, hãy gõ lệnh như sau vào
một cửa sổ của thiết bị đầu cuối:
ipython notebook
Lệnh này khởi động công cụ web Tornado và khởi chạy trình duyệt web mặc định mở ra trang
bảng điều khiển. Sau đó, nếu bạn chọn chức năng sổ tay mặc định, bạn sẽ thấy một cửa sổ mới
như trong Hình 6.
Hình 6. Chức năng sổ tay của iPython
Một điều khác về chức năng sổ tay web là bạn cần sử dụng Control-Enter khi bạn muốn thực thi
mã. Điều này giúp thêm vào khả năng nhập nhiều dòng mã, như trong Hình 6 và có tất cả mọi
thứ trong hộp input được thực hiện tuần tự. Do đó, bạn có thể dễ dàng chia nhỏ các chức năng
thành các khối có thể quản lý được.
Bạn có thể chú thích các chức năng sổ tay của mình bằng cách sử dụng cú pháp Markdown. Nếu
bạn chưa quen với Markdown, về bản chất đó là một cách để tạo ra HTML (Hypertext Markup
Language – Ngôn ngữ đánh dấu siêu văn bản) đã định dạng bằng cách sử dụng văn bản thuần. Ví
dụ, một dấu thăng (#) theo sau là một khoảng trống được sử dụng để chỉ một H1 trong HTML,
trong khi hai dấu hiệu thăng được sử dụng cho H2 và v.v. Điều này cho phép bạn thêm chú thích
hoặc tài liệu hướng dẫn để bổ sung mã và đồ họa của mình.
Pandas
Thư viện phân tích dữ liệu Python hay còn gọi là Pandas, là một công cụ khác gắn với SciPy và
NumPy được tạo ra đặc biệt để giải quyết các nhiệm vụ phân tích dữ liệu. Pandas kết hợp một số
lượng lớn các thư viện cùng với một số mô hình dữ liệu tiêu chuẩn để cung cấp các công cụ cần
thiết để thao tác dữ liệu lớn một cách hiệu quả. Các tệp giá trị phân cách bằng dấu phẩy (CSV)
đại diện cho một trong những cách phổ biến nhất về phân phối dữ liệu giữa các bên liên quan.
Pandas cung cấp chức năng thư viện tối ưu hóa để đọc và ghi nhiều định dạng tệp, bao gồm định
dạng CSV và định dạng HDF5 hiệu quả.
Các mô đun read_csv biết cách phân tích các tệp CSV điển hình có thông tin đầu trang trong
hàng đầu tiên. Nó cũng biết cách xử lý các tệp có các ngày tháng hoặc thời gian bằng cách sử
dụng một trình phân tích cú pháp dựng sẵn. Pandas bao gồm một mô đun các công cụ ngày tháng
(datetools) có một danh sách dài các thường trình thao tác để thực hiện các loại phép toán ngày
tháng khác nhau. Liệt kê 1 cho thấy một đoạn mã của tài liệu hướng dẫn của Pandas cho thấy
cách tìm một ngày cách bốn tháng và năm ngày:
Liệt kê 1. Ví dụ mẫu về phép chiếu ngày tháng của Pandas
d = datetime(2012, 4, 20)
d + pandas.DateOffset(months=4, days=5)
datetime.datetime(2012, 8, 25, 0, 0)
Pandas thực sự tỏa sáng khi nói đến việc phân chia và chia nhỏ các bộ dữ liệu lớn. Sau khi bạn
đã nhập khẩu dữ liệu của mình vào một cấu trúc dữ liệu nguyên gốc, bạn có một loạt các công cụ
cho bạn tùy ý sử dụng để thực hiện đúng là bất kỳ kiểu thao tác nào. Bạn có thể phân chia dữ liệu
bằng cách sử dụng cú pháp phân loại Python tiêu chuẩn, thực hiện các phép toán trên tất cả hoặc
một phần của dữ liệu hoặc vẽ đồ thị nó bằng cách sử dụng matplotlib. Nếu bạn cần thực hiện bất
cứ nhiệm vụ thao tác dữ liệu nào, bạn chắc chắn muốn tăng tốc bằng Pandas.